From f6fc81f7eed6fd1ccf0fcb22c1ebd0ab87c18383 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Thu, 14 Jul 2022 12:15:05 +0100 Subject: [PATCH 01/13] Update l3kernel to 2022-07-14 --- texmf/tex/latex/l3kernel/expl3-code.tex | 20 ++++++++++++++------ texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index d303b6c46..ad794af1d 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -70,7 +70,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-04}% +\def\ExplFileDate{2022-07-14}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -32117,13 +32117,21 @@ } \cs_new:Npn \__text_expand_exclude:N #1 { - \exp_args:Ne \__text_expand_exclude:nN + \cs_if_eq:NNTF #1 \text_case_switch:nnnn + { \__text_expand_exclude_switch:Nnnnn #1 } { - \exp_not:V \l_text_math_arg_tl - \exp_not:V \l_text_expand_exclude_tl - \exp_not:N \text_case_switch:nnnn + \exp_args:Ne \__text_expand_exclude:nN + { + \exp_not:V \l_text_math_arg_tl + \exp_not:V \l_text_expand_exclude_tl + } + #1 } - #1 + } +\cs_new:Npn \__text_expand_exclude_switch:Nnnnn #1#2#3#4#5 + { + \__text_expand_store:n { #1 {#2} {#3} {#4} {#5} } + \__text_expand_loop:w } \cs_new:Npn \__text_expand_exclude:nN #1#2 { diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 0380df81a..687d7c58a 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-04}% +\def\ExplFileDate{2022-07-14}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index d89a879e0..b313818a3 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-04}% +\def\ExplFileDate{2022-07-14}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index d400c79e6..c238bd824 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-04}% +\def\ExplFileDate{2022-07-14}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 049d5d99b29017a5befcd384bf828bc54a93f3c8 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Fri, 15 Jul 2022 11:59:12 +0100 Subject: [PATCH 02/13] Update l3kernel to 2022-07-15 --- texmf/tex/latex/l3kernel/expl3-code.tex | 6 +++--- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index ad794af1d..a6117989a 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -70,7 +70,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-14}% +\def\ExplFileDate{2022-07-15}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -32587,12 +32587,12 @@ } \cs_new:Npn \__text_change_case_switch_lower:nnNnnnn #1#2#3#4#5#6#7 { - \__text_change_case_store:n {#5} + \__text_change_case_store:n {#6} \__text_change_case_loop:nnw {#1} {#2} } \cs_new:Npn \__text_change_case_switch_upper:nnNnnnn #1#2#3#4#5#6#7 { - \__text_change_case_store:n {#6} + \__text_change_case_store:n {#5} \__text_change_case_loop:nnw {#1} {#2} } \cs_new:Npn \__text_change_case_switch_title:nnNnnnn #1#2#3#4#5#6#7 diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 687d7c58a..b18186473 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-14}% +\def\ExplFileDate{2022-07-15}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index b313818a3..a443e4cef 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-14}% +\def\ExplFileDate{2022-07-15}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index c238bd824..d75eba2b1 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-14}% +\def\ExplFileDate{2022-07-15}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 1a0025621f759dfd49c1064386f8eeeb7006c43d Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Fri, 5 Aug 2022 18:17:59 +0100 Subject: [PATCH 03/13] Update l3kernel and l3backend to 2022-08-05 --- .../latex/l3backend/l3backend-dvipdfmx.def | 2 +- texmf/tex/latex/l3backend/l3backend-dvips.def | 2 +- .../tex/latex/l3backend/l3backend-dvisvgm.def | 12 +- .../tex/latex/l3backend/l3backend-luatex.def | 2 +- .../tex/latex/l3backend/l3backend-pdftex.def | 2 +- texmf/tex/latex/l3backend/l3backend-xetex.def | 2 +- texmf/tex/latex/l3kernel/expl3-code.tex | 514 ++++++++++++++++-- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 10 files changed, 498 insertions(+), 44 deletions(-) diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def index f9e2421b3..3f0a4e3c5 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2022-07-01}{} + {l3backend-dvipdfmx.def}{2022-08-05}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def index 0e1c5358c..4d561e6b4 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvips.def +++ b/texmf/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2022-07-01}{} + {l3backend-dvips.def}{2022-08-05}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def index 12c8c2e36..b9a97cca0 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2022-07-01}{} + {l3backend-dvisvgm.def}{2022-08-05}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -651,6 +651,16 @@ { \cs_new_eq:NN \__graphics_backend_get_pagecount:n \__graphics_get_pagecount:n } %% File: l3backend-pdf.dtx \box_new:N \l__pdf_internal_box +\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 { } +\cs_new:Npn \__pdf_backend_annotation_last: { } +\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2 { } +\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2 { } +\cs_new_protected:Npn \__pdf_backend_link_begin:nnnw #1#2#3 { } +\cs_new_protected:Npn \__pdf_backend_link_end: { } +\cs_new:Npx \__pdf_backend_link_last: { } +\cs_new_protected:Npn \__pdf_backend_link_margin:n #1 { } +\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2 { } +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 { } diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def index 1b0525eef..8b056a250 100644 --- a/texmf/tex/latex/l3backend/l3backend-luatex.def +++ b/texmf/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2022-07-01}{} + {l3backend-luatex.def}{2022-08-05}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def index 49fff4e72..2bcf56a29 100644 --- a/texmf/tex/latex/l3backend/l3backend-pdftex.def +++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2022-07-01}{} + {l3backend-pdftex.def}{2022-08-05}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def index dfa1bf060..2fa8d2ce0 100644 --- a/texmf/tex/latex/l3backend/l3backend-xetex.def +++ b/texmf/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2022-07-01}{} + {l3backend-xetex.def}{2022-08-05}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index a6117989a..3ef89d63d 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -70,7 +70,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-15}% +\def\ExplFileDate{2022-08-05}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -7625,6 +7625,11 @@ } } } +\cs_new_protected:Npn \sys_ensure_backend: + { + \str_if_exist:NF \c_sys_backend_str + { \sys_load_backend:n { } } + } \bool_new:N \g__sys_debug_bool \cs_new_protected:Npn \sys_load_debug: { @@ -10866,7 +10871,7 @@ \int_step_inline:nnn { 0 } { - \cs_if_exist:NTF \normalend + \cs_if_exist:NTF \contextversion { \tex_count:D 38 ~ } { \tex_count:D 16 ~ % @@ -10896,10 +10901,10 @@ \prg_generate_conditional_variant:Nnn \ior_open:Nn { c } { T , F , TF } \exp_args:NNf \cs_new_protected:Npn \__ior_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } } -\cs_if_exist:NT \normalend +\cs_if_exist:NT \contextversion { \cs_new_eq:NN \__ior_new_aux:N \__ior_new:N - \cs_set_protected:Npn \__ior_new:N #1 + \cs_gset_protected:Npn \__ior_new:N #1 { \cs_undefine:N #1 \__ior_new_aux:N #1 @@ -11096,7 +11101,7 @@ \int_step_inline:nnn { 0 } { - \cs_if_exist:NTF \normalend + \cs_if_exist:NTF \contextversion { \tex_count:D 39 ~ } { \tex_count:D 17 ~ @@ -11116,6 +11121,15 @@ \iow_new:N \g_tmpb_iow \exp_args:NNf \cs_new_protected:Npn \__iow_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newwrite } } +\cs_if_exist:NT \contextversion + { + \cs_new_eq:NN \__iow_new_aux:N \__iow_new:N + \cs_gset_protected:Npn \__iow_new:N #1 + { + \cs_undefine:N #1 + \__iow_new_aux:N #1 + } + } \tl_new:N \l__iow_file_name_tl \cs_new_protected:Npn \iow_open:Nn #1#2 { @@ -29021,14 +29035,21 @@ { \peek_remove_filler:n { + \group_align_safe_begin: \peek_catcode:NTF \c_alignment_token - { \__color_math_scan_end: } - { \__color_math_scan_auxi: } + { + \group_align_safe_end: + \__color_math_scan_end: + } + { + \group_align_safe_end: + \__color_math_scan_auxi: + } } } \cs_new_protected:Npn \__color_math_scan_auxi: { - \token_case_meaning:NnTF \l_peek_token + \token_case_catcode:NnTF \l_peek_token { \c_math_subscript_token { } \c_math_superscript_token { } @@ -31726,7 +31747,19 @@ \quark_new:N \q__text_recursion_stop \cs_new:Npn \__text_use_i_delimit_by_q_recursion_stop:nw #1 #2 \q__text_recursion_stop {#1} -\__kernel_quark_new_test:N \__text_if_recursion_tail_stop_do:Nn +\__kernel_quark_new_test:N \__text_if_q_recursion_tail_stop_do:Nn +\scan_new:N \s__text_recursion_tail +\scan_new:N \s__text_recursion_stop +\cs_new:Npn \__text_use_i_delimit_by_s_recursion_stop:nw + #1 #2 \s__text_recursion_stop {#1} +\cs_new:Npn \__text_if_s_recursion_tail_stop_do:Nn #1 + { + \bool_lazy_and:nnTF + { \cs_if_eq_p:NN \s__text_recursion_tail #1 } + { \str_if_eq_p:nn { \s__text_recursion_tail } {#1} } + { \__text_use_i_delimit_by_s_recursion_stop:nw } + { \use_none:n } + } \group_begin: \char_set_catcode_active:n { 0 } \cs_new:Npn \__text_token_to_explicit:N #1 @@ -31942,7 +31975,7 @@ { \group_align_safe_begin: \__text_expand_loop:w #1 - \q__text_recursion_tail \q__text_recursion_stop + \s__text_recursion_tail \s__text_recursion_stop \__text_expand_result:n { } } \cs_new:Npn \__text_expand_store:n #1 @@ -31956,7 +31989,7 @@ \exp_end: #2 } -\cs_new:Npn \__text_expand_loop:w #1 \q__text_recursion_stop +\cs_new:Npn \__text_expand_loop:w #1 \s__text_recursion_stop { \tl_if_head_is_N_type:nTF {#1} { \__text_expand_N_type:N } @@ -31965,7 +31998,7 @@ { \__text_expand_group:n } { \__text_expand_space:w } } - #1 \q__text_recursion_stop + #1 \s__text_recursion_stop } \cs_new:Npn \__text_expand_group:n #1 { @@ -31986,7 +32019,7 @@ } \cs_new:Npx \__text_expand_N_type:N #1 { - \exp_not:N \__text_if_recursion_tail_stop_do:Nn #1 + \exp_not:N \__text_if_s_recursion_tail_stop_do:Nn #1 { \exp_not:N \__text_expand_end:w } \exp_not:N \bool_lazy_any:nTF { @@ -32048,7 +32081,7 @@ } \cs_new:Npn \__text_expand_math_search:NNN #1#2#3 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_expand_explicit:N #1 } \token_if_eq_meaning:NNTF #1 #2 { @@ -32060,7 +32093,7 @@ } { \__text_expand_math_search:NNN #1 } } -\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \q__text_recursion_stop +\cs_new:Npn \__text_expand_math_loop:Nw #1#2 \s__text_recursion_stop { \tl_if_head_is_N_type:nTF {#2} { \__text_expand_math_N_type:NN } @@ -32069,11 +32102,11 @@ { \__text_expand_math_group:Nn } { \__text_expand_math_space:Nw } } - #1#2 \q__text_recursion_stop + #1#2 \s__text_recursion_stop } \cs_new:Npn \__text_expand_math_N_type:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_s_recursion_tail_stop_do:Nn #2 { \__text_expand_end:w } \__text_expand_store:n {#2} \token_if_eq_meaning:NNTF #2 #1 @@ -32140,7 +32173,7 @@ } \cs_new:Npn \__text_expand_exclude:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_expand_accent:N #1 } \str_if_eq:nnTF {#1} {#2} { @@ -32164,7 +32197,7 @@ } \cs_new:Npn \__text_expand_accent:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_expand_letterlike:N #1 } \cs_if_eq:NNTF #2 #1 { @@ -32184,7 +32217,7 @@ } \cs_new:Npn \__text_expand_letterlike:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_expand_cs:N #1 } \cs_if_eq:NNTF #2 #1 { @@ -32208,7 +32241,7 @@ { \exp_not:N \__text_expand_replace:N #1 } } } -\cs_new:Npn \__text_expand_protect:w #1 \q__text_recursion_stop +\cs_new:Npn \__text_expand_protect:w #1 \s__text_recursion_stop { \tl_if_head_is_N_type:nTF {#1} { \__text_expand_protect:N } @@ -32216,11 +32249,11 @@ \__text_expand_store:n { \protect } \__text_expand_loop:w } - #1 \q__text_recursion_stop + #1 \s__text_recursion_stop } \cs_new:Npn \__text_expand_protect:N #1 { - \__text_if_recursion_tail_stop_do:Nn #1 + \__text_if_s_recursion_tail_stop_do:Nn #1 { \__text_expand_store:n { \protect } \__text_expand_end:w @@ -32295,7 +32328,7 @@ \exp_after:wN \__text_expand_unexpanded_test:w \exp:w \exp_end_continue_f:w } -\cs_new:Npn \__text_expand_unexpanded_test:w #1 \q__text_recursion_stop +\cs_new:Npn \__text_expand_unexpanded_test:w #1 \s__text_recursion_stop { \tl_if_head_is_group:nTF {#1} { \__text_expand_unexpanded:n } @@ -32303,7 +32336,7 @@ \__text_expand_unexpanded:w \tl_if_head_is_N_type:nT {#1} { \__text_expand_unexpanded:N } } - #1 \q__text_recursion_stop + #1 \s__text_recursion_stop } \cs_new:Npn \__text_expand_unexpanded:N #1 { @@ -32456,7 +32489,7 @@ } \cs_new:Npn \__text_change_case_N_type:nnN #1#2#3 { - \__text_if_recursion_tail_stop_do:Nn #3 + \__text_if_q_recursion_tail_stop_do:Nn #3 { \__text_change_case_end:w } \__text_change_case_N_type_aux:nnN {#1} {#2} #3 } @@ -32473,7 +32506,7 @@ } \cs_new:Npn \__text_change_case_math_search:nnNNN #1#2#3#4#5 { - \__text_if_recursion_tail_stop_do:Nn #4 + \__text_if_q_recursion_tail_stop_do:Nn #4 { \__text_change_case_cs_check:nnN {#1} {#2} #3 } \token_if_eq_meaning:NNTF #3 #4 { @@ -32498,7 +32531,7 @@ } \cs_new:Npn \__text_change_case_math_N_type:nnNN #1#2#3#4 { - \__text_if_recursion_tail_stop_do:Nn #4 + \__text_if_q_recursion_tail_stop_do:Nn #4 { \__text_change_case_end:w } \__text_change_case_store:n {#4} \token_if_eq_meaning:NNTF #4 #3 @@ -32542,7 +32575,7 @@ } \cs_new:Npn \__text_change_case_exclude:nnNN #1#2#3#4 { - \__text_if_recursion_tail_stop_do:Nn #4 + \__text_if_q_recursion_tail_stop_do:Nn #4 { \__text_change_case_replace:nnN {#1} {#2} #3 } \str_if_eq:nnTF {#3} {#4} { @@ -32864,7 +32897,7 @@ } \cs_new_eq:cc { __text_change_case_upper_de-alt:nnnN } { __text_change_case_upper_de-x-eszett:nnnN } -\bool_lazy_or:nnT +\bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } { @@ -33040,6 +33073,37 @@ { \__text_change_case_upper_el_gobble:nnw {#1} {#2} } } } + { + \cs_new:Npn \__text_change_case_upper_el:nnnN #1#2#3#4 + { + \int_compare:nNnTF { `#4 } > { "80 } + { + \int_compare:nNnTF { `#4 } < { "E0 } + { \__text_change_case_upper_el:nnnNN } + { + \int_compare:nNnTF { `#4 } < { "F0 } + { \__text_change_case_upper_el:nnnNNN } + { \__text_change_case_char:nnnN } + } + } + { \__text_change_case_char:nnnN } + {#1} {#2} {#3} #4 + } + \cs_new:Npn \__text_change_case_upper_el:nnnNN #1#2#3#4#5 + { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4#5} } + \cs_new:Npn \__text_change_case_upper_el:nnnNNN #1#2#3#4#5#6 + { \__text_change_case_upper_el:nnnn {#1} {#2} {#3} {#4#5#6} } + \cs_new:Npn \__text_change_case_upper_el:nnnn #1#2#3#4 + { + \cs_if_exist:cTF { c__text_uppercase_el_ \tl_to_str:n {#4} _tl } + { + \__text_change_case_store:v + { c__text_uppercase_el_ \tl_to_str:n {#4} _tl } + \__text_change_case_loop:nnw {#1} {#3} + } + { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 } + } + } \prg_new_conditional:Npnn \__text_change_case_if_greek:n #1 { TF } { \if_int_compare:w #1 < "0370 \exp_stop_f: @@ -33831,6 +33895,24 @@ \__text_tmp:w { 03F1 } { 03A1 } { upper } \__text_tmp:w { 03F4 } { 03B8 } { lower } \__text_tmp:w { 03F5 } { 0395 } { upper } + \__text_tmp:w { 01C4 } { 01C5 } { title } + \__text_tmp:w { 01C4 } { 01C6 } { lower } + \__text_tmp:w { 01C5 } { 01C4 } { upper } + \__text_tmp:w { 01C5 } { 01C6 } { lower } + \__text_tmp:w { 01C6 } { 01C4 } { upper } + \__text_tmp:w { 01C6 } { 01C5 } { title } + \__text_tmp:w { 01C7 } { 01C8 } { title } + \__text_tmp:w { 01C7 } { 01C9 } { lower } + \__text_tmp:w { 01C8 } { 01C7 } { upper } + \__text_tmp:w { 01C8 } { 01C9 } { lower } + \__text_tmp:w { 01C9 } { 01C7 } { upper } + \__text_tmp:w { 01C9 } { 01C8 } { title } + \__text_tmp:w { 01CA } { 01CB } { title } + \__text_tmp:w { 01CA } { 01CC } { lower } + \__text_tmp:w { 01CB } { 01CA } { upper } + \__text_tmp:w { 01CB } { 01CC } { lower } + \__text_tmp:w { 01CC } { 01CA } { upper } + \__text_tmp:w { 01CC } { 01CB } { title } \cs_set_protected:Npn \__text_tmp:w #1#2#3 { \group_begin: @@ -34020,6 +34102,368 @@ \group_end: } \__text_tmp:w { 1FBE } { 0399 } { upper } + \cs_set_protected:Npn \__text_tmp:w #1#2#3#4#5#6#7#8 + { + \tl_const:cx + { + c__text_uppercase_el_ + \char_generate:nn {#1} { 12 } + \char_generate:nn {#2} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#5} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#6} { 13 } + } + } + \__text_loop:nn + { 0370 } { 0370 } + { 0371 } { 0370 } + { 0372 } { 0372 } + { 0373 } { 0372 } + { 0376 } { 0376 } + { 0377 } { 0376 } + { 03FD } { 03FD } + { 037B } { 03FD } + { 03FE } { 03FE } + { 037C } { 03FE } + { 03FF } { 03FF } + { 037D } { 03FF } + { 0386 } { 0391 } + { 0388 } { 0395 } + { 0389 } { 0397 } + { 038A } { 0399 } + { 038C } { 039F } + { 038E } { 03A5 } + { 038F } { 03A9 } + { 0390 } { 03AA } + { 0391 } { 0391 } + { 0392 } { 0392 } + { 0393 } { 0393 } + { 0394 } { 0394 } + { 0395 } { 0395 } + { 0396 } { 0396 } + { 0397 } { 0397 } + { 0398 } { 0398 } + { 0399 } { 0399 } + { 039A } { 039A } + { 039B } { 039B } + { 039C } { 039C } + { 039D } { 039D } + { 039E } { 039E } + { 039F } { 039F } + { 03A0 } { 03A0 } + { 03A1 } { 03A1 } + { 03A3 } { 03A3 } + { 03A4 } { 03A4 } + { 03A5 } { 03A5 } + { 03A6 } { 03A6 } + { 03A7 } { 03A7 } + { 03A8 } { 03A8 } + { 03A9 } { 03A9 } + { 03AA } { 03AA } + { 03AB } { 03AB } + { 03AC } { 0391 } + { 03AD } { 0395 } + { 03AE } { 0397 } + { 03AF } { 0399 } + { 03B0 } { 03AB } + { 03B1 } { 0391 } + { 03B2 } { 0392 } + { 03B3 } { 0393 } + { 03B4 } { 0394 } + { 03B5 } { 0395 } + { 03B6 } { 0396 } + { 03B7 } { 0397 } + { 03B8 } { 0398 } + { 03B9 } { 0399 } + { 03BA } { 039A } + { 03BB } { 039B } + { 03BC } { 039C } + { 03BD } { 039D } + { 03BE } { 039E } + { 03BF } { 039F } + { 03C0 } { 03A0 } + { 03C1 } { 03A1 } + { 03C2 } { 03A3 } + { 03C3 } { 03A3 } + { 03C4 } { 03A4 } + { 03C5 } { 03A5 } + { 03C6 } { 03A6 } + { 03C7 } { 03A7 } + { 03C8 } { 03A8 } + { 03C9 } { 03A9 } + { 03CA } { 03AA } + { 03CB } { 03AB } + { 03CC } { 039F } + { 03CD } { 03A5 } + { 03CE } { 03A9 } + { 03D0 } { 0392 } + { 03D1 } { 0398 } + { 03D2 } { 03A5 } + { 03D3 } { 03A5 } + { 03D4 } { 03AB } + { 03D5 } { 03A6 } + { 03D6 } { 03A0 } + { 03DA } { 03DA } + { 03DB } { 03DA } + { 03DC } { 03DC } + { 03DD } { 03DC } + { 03DE } { 03DE } + { 03DF } { 03DE } + { 03E0 } { 03E0 } + { 03E1 } { 03E0 } + { 03F0 } { 039A } + { 03F1 } { 03A1 } + { 03F2 } { 03F9 } + { 03F9 } { 03F9 } + \q_recursion_tail ? + \q_recursion_stop + \cs_set_protected:Npn \__text_tmp:w #1#2#3#4#5#6#7#8 + { + \tl_const:cx + { + c__text_uppercase_el_ + \char_generate:nn {#1} { 12 } + \char_generate:nn {#2} { 12 } + \char_generate:nn {#3} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#5} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#6} { 13 } + \tl_if_blank:nF {#7} + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#7} { 13 } + } + } + } + \__text_loop:nn + { 1F00 } { 0391 } + { 1F01 } { 0391 } + { 1F02 } { 0391 } + { 1F03 } { 0391 } + { 1F04 } { 0391 } + { 1F05 } { 0391 } + { 1F06 } { 0391 } + { 1F07 } { 0391 } + { 1F08 } { 0391 } + { 1F09 } { 0391 } + { 1F0A } { 0391 } + { 1F0B } { 0391 } + { 1F0C } { 0391 } + { 1F0D } { 0391 } + { 1F0E } { 0391 } + { 1F0F } { 0391 } + { 1F10 } { 0395 } + { 1F11 } { 0395 } + { 1F12 } { 0395 } + { 1F13 } { 0395 } + { 1F14 } { 0395 } + { 1F15 } { 0395 } + { 1F18 } { 0395 } + { 1F19 } { 0395 } + { 1F1A } { 0395 } + { 1F1B } { 0395 } + { 1F1C } { 0395 } + { 1F1D } { 0395 } + { 1F20 } { 0397 } + { 1F21 } { 0397 } + { 1F22 } { 0397 } + { 1F23 } { 0397 } + { 1F24 } { 0397 } + { 1F25 } { 0397 } + { 1F26 } { 0397 } + { 1F27 } { 0397 } + { 1F28 } { 0397 } + { 1F29 } { 0397 } + { 1F2A } { 0397 } + { 1F2B } { 0397 } + { 1F2C } { 0397 } + { 1F2D } { 0397 } + { 1F2E } { 0397 } + { 1F2F } { 0397 } + { 1F30 } { 0399 } + { 1F31 } { 0399 } + { 1F32 } { 0399 } + { 1F33 } { 0399 } + { 1F34 } { 0399 } + { 1F35 } { 0399 } + { 1F36 } { 0399 } + { 1F37 } { 0399 } + { 1F38 } { 0399 } + { 1F39 } { 0399 } + { 1F3A } { 0399 } + { 1F3B } { 0399 } + { 1F3C } { 0399 } + { 1F3D } { 0399 } + { 1F3E } { 0399 } + { 1F3F } { 0399 } + { 1F40 } { 039F } + { 1F41 } { 039F } + { 1F42 } { 039F } + { 1F43 } { 039F } + { 1F44 } { 039F } + { 1F45 } { 039F } + { 1F48 } { 039F } + { 1F49 } { 039F } + { 1F4A } { 039F } + { 1F4B } { 039F } + { 1F4C } { 039F } + { 1F4D } { 039F } + { 1F50 } { 03A5 } + { 1F51 } { 03A5 } + { 1F52 } { 03A5 } + { 1F53 } { 03A5 } + { 1F54 } { 03A5 } + { 1F55 } { 03A5 } + { 1F56 } { 03A5 } + { 1F57 } { 03A5 } + { 1F59 } { 03A5 } + { 1F5B } { 03A5 } + { 1F5D } { 03A5 } + { 1F5F } { 03A5 } + { 1F60 } { 03A9 } + { 1F61 } { 03A9 } + { 1F62 } { 03A9 } + { 1F63 } { 03A9 } + { 1F64 } { 03A9 } + { 1F65 } { 03A9 } + { 1F66 } { 03A9 } + { 1F67 } { 03A9 } + { 1F68 } { 03A9 } + { 1F69 } { 03A9 } + { 1F6A } { 03A9 } + { 1F6B } { 03A9 } + { 1F6C } { 03A9 } + { 1F6D } { 03A9 } + { 1F6E } { 03A9 } + { 1F6F } { 03A9 } + { 1F70 } { 0391 } + { 1F71 } { 0391 } + { 1F72 } { 0395 } + { 1F73 } { 0395 } + { 1F74 } { 0397 } + { 1F75 } { 0397 } + { 1F76 } { 0399 } + { 1F77 } { 0399 } + { 1F78 } { 039F } + { 1F79 } { 039F } + { 1F7A } { 03A5 } + { 1F7B } { 03A5 } + { 1F7C } { 03A9 } + { 1F7D } { 03A9 } + { 1F80 } { 1FBC } + { 1F81 } { 1FBC } + { 1F82 } { 1FBC } + { 1F83 } { 1FBC } + { 1F84 } { 1FBC } + { 1F85 } { 1FBC } + { 1F86 } { 1FBC } + { 1F87 } { 1FBC } + { 1F88 } { 1FBC } + { 1F89 } { 1FBC } + { 1F8A } { 1FBC } + { 1F8B } { 1FBC } + { 1F8C } { 1FBC } + { 1F8D } { 1FBC } + { 1F8E } { 1FBC } + { 1F8F } { 1FBC } + { 1F90 } { 1FCC } + { 1F91 } { 1FCC } + { 1F92 } { 1FCC } + { 1F93 } { 1FCC } + { 1F94 } { 1FCC } + { 1F95 } { 1FCC } + { 1F96 } { 1FCC } + { 1F97 } { 1FCC } + { 1F98 } { 1FCC } + { 1F99 } { 1FCC } + { 1F9A } { 1FCC } + { 1F9B } { 1FCC } + { 1F9C } { 1FCC } + { 1F9D } { 1FCC } + { 1F9E } { 1FCC } + { 1F9F } { 1FCC } + { 1FA0 } { 1FFC } + { 1FA1 } { 1FFC } + { 1FA2 } { 1FFC } + { 1FA3 } { 1FFC } + { 1FA4 } { 1FFC } + { 1FA5 } { 1FFC } + { 1FA6 } { 1FFC } + { 1FA7 } { 1FFC } + { 1FA8 } { 1FFC } + { 1FA9 } { 1FFC } + { 1FAA } { 1FFC } + { 1FAB } { 1FFC } + { 1FAC } { 1FFC } + { 1FAD } { 1FFC } + { 1FAE } { 1FFC } + { 1FAF } { 1FFC } + { 1FB0 } { 1FB8 } + { 1FB1 } { 1FB9 } + { 1FB2 } { 1FBC } + { 1FB3 } { 1FBC } + { 1FB4 } { 1FBC } + { 1FB6 } { 0391 } + { 1FB7 } { 1FBC } + { 1FB8 } { 1FB8 } + { 1FB9 } { 1FB9 } + { 1FBA } { 0391 } + { 1FBB } { 0391 } + { 1FBC } { 1FBC } + { 1FBD } { 1FBD } + { 1FC2 } { 1FCC } + { 1FC3 } { 1FCC } + { 1FC4 } { 1FCC } + { 1FC6 } { 0397 } + { 1FC7 } { 1FCC } + { 1FC8 } { 0395 } + { 1FC9 } { 0395 } + { 1FCA } { 0397 } + { 1FCB } { 0397 } + { 1FCC } { 1FCC } + { 1FD0 } { 1FD8 } + { 1FD1 } { 1FD9 } + { 1FD2 } { 03AA } + { 1FD3 } { 03AA } + { 1FD6 } { 0399 } + { 1FD7 } { 03AA } + { 1FD8 } { 1FD8 } + { 1FD9 } { 1FD9 } + { 1FDA } { 0399 } + { 1FDB } { 0399 } + { 1FE0 } { 1FE8 } + { 1FE1 } { 1FE9 } + { 1FE2 } { 03AB } + { 1FE3 } { 03AB } + { 1FE4 } { 03A1 } + { 1FE5 } { 03A1 } + { 1FE6 } { 03A5 } + { 1FE7 } { 03AB } + { 1FE8 } { 1FE8 } + { 1FE9 } { 1FE9 } + { 1FEA } { 03A5 } + { 1FEB } { 03A5 } + { 1FEC } { 1FEC } + { 1FF2 } { 1FFC } + { 1FF3 } { 1FFC } + { 1FF4 } { 1FFC } + { 1FF6 } { 03A9 } + { 1FF7 } { 1FFC } + { 1FF8 } { 039F } + { 1FF9 } { 039F } + { 1FFA } { 03A9 } + { 1FFB } { 03A9 } + { 1FFC } { 1FFC } + \q_recursion_tail ? + \q_recursion_stop } \group_end: \group_begin: @@ -34132,7 +34576,7 @@ } \cs_new:Npn \__text_purify_N_type:N #1 { - \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } + \__text_if_q_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } \__text_purify_N_type_aux:N #1 } \cs_new:Npn \__text_purify_N_type_aux:N #1 @@ -34144,7 +34588,7 @@ } \cs_new:Npn \__text_purify_math_search:NNN #1#2#3 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_purify_math_cmd:N #1 } \token_if_eq_meaning:NNTF #1 #2 { @@ -34185,7 +34629,7 @@ } \cs_new:Npn \__text_purify_math_N_type:NNN #1#2#3 { - \__text_if_recursion_tail_stop_do:Nn #3 + \__text_if_q_recursion_tail_stop_do:Nn #3 { \__text_purify_math_stop:Nw #1 } \token_if_eq_meaning:NNTF #3 #2 { \__text_purify_math_end:w } @@ -34213,7 +34657,7 @@ } \cs_new:Npn \__text_purify_math_cmd:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #2 + \__text_if_q_recursion_tail_stop_do:Nn #2 { \__text_purify_replace:N #1 } \cs_if_eq:NNTF #2 #1 { @@ -34256,7 +34700,7 @@ } \cs_new:Npn \__text_purify_protect:N #1 { - \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } + \__text_if_q_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } \__text_purify_loop:w } \cs_new:Npn \__text_purify_encoding:N #1 diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index b18186473..88cd00c7c 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-15}% +\def\ExplFileDate{2022-08-05}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index a443e4cef..98aeaab7b 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-15}% +\def\ExplFileDate{2022-08-05}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index d75eba2b1..bb4e17635 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-07-15}% +\def\ExplFileDate{2022-08-05}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 079696a7a761bc414e59d1b414214863bc178a52 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 23 Aug 2022 09:52:25 +0100 Subject: [PATCH 04/13] Update l3backend and l3kernel to 2022-08-23 --- base/testfiles-ltmarks/xmarks-001.tlg | 2 +- base/testfiles-ltmarks/xmarks-004.tlg | 4 +- base/testfiles/github-0710.tlg | 18 +- base/testfiles/github-0735.tlg | 2 +- base/testfiles/github-0892.tlg | 2 +- base/testfiles/m3expl009.tlg | 16 +- .../latex/l3backend/l3backend-dvipdfmx.def | 30 ++-- texmf/tex/latex/l3backend/l3backend-dvips.def | 30 ++-- .../tex/latex/l3backend/l3backend-dvisvgm.def | 30 ++-- .../tex/latex/l3backend/l3backend-luatex.def | 42 ++--- .../tex/latex/l3backend/l3backend-pdftex.def | 42 ++--- texmf/tex/latex/l3backend/l3backend-xetex.def | 30 ++-- texmf/tex/latex/l3kernel/expl3-code.tex | 161 ++++++++++++++---- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 16 files changed, 234 insertions(+), 181 deletions(-) diff --git a/base/testfiles-ltmarks/xmarks-001.tlg b/base/testfiles-ltmarks/xmarks-001.tlg index 409f232dc..fb97b20af 100644 --- a/base/testfiles-ltmarks/xmarks-001.tlg +++ b/base/testfiles-ltmarks/xmarks-001.tlg @@ -156,7 +156,7 @@ marks does not exist. !second foo! ! Use of \??? doesn't match its definition. \??? - ! LaTeX3 Error: Erroneous variable \g__mark_mistake_top_foo... + ! LaTeX Error: Erroneous variable \g__mark_mistake_top_foo_... l. ...\TopMark[mistake]{foo} If you say, e.g., `\def\a1{...}', then you must always put `1' after `\a', since control sequence names are diff --git a/base/testfiles-ltmarks/xmarks-004.tlg b/base/testfiles-ltmarks/xmarks-004.tlg index 03a7776fa..623e1f67e 100644 --- a/base/testfiles-ltmarks/xmarks-004.tlg +++ b/base/testfiles-ltmarks/xmarks-004.tlg @@ -146,7 +146,7 @@ Marks: baz in OR (twoside-even first column): column (second):|\__mark_error:n {last-column}|\__mark_error:n {last-column}|\__mark_error:n {last-column}| ! Use of \??? doesn't match its definition. \??? - ! LaTeX3 Error: Erroneous variable \g__mark_page_top_foobar... + ! LaTeX Error: Erroneous variable \g__mark_page_top_foobar_... l. ...\TopMark{foobar} % does not exist If you say, e.g., `\def\a1{...}', then you must always @@ -155,7 +155,7 @@ made up of letters only. The macro here has not been followed by the required stuff, so I'm ignoring it. ! Use of \??? doesn't match its definition. \??? - ! LaTeX3 Error: Erroneous variable \g__mark_page_first_foob... + ! LaTeX Error: Erroneous variable \g__mark_page_first_fooba... l. ...\FirstMark{foobar} % does not exist If you say, e.g., `\def\a1{...}', then you must always diff --git a/base/testfiles/github-0710.tlg b/base/testfiles/github-0710.tlg index 58c2c7622..bb18ef45b 100644 --- a/base/testfiles/github-0710.tlg +++ b/base/testfiles/github-0710.tlg @@ -7,15 +7,15 @@ Author: Joseph Wright \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x \endgroup l. ...\mypkgtest -LaTeX3 Warning: Package "mypkg" has already been loaded: ignoring load-time -(LaTeX3) option "load-option-A". +LaTeX Warning: Package "mypkg" has already been loaded: ignoring load-time +(LaTeX) option "load-option-A". > \x=macro: ->111:::. \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x \endgroup l. ...\mypkgtest -LaTeX3 Warning: Package "mypkg" has already been loaded: ignoring load-time -(LaTeX3) option "load-option-A". +LaTeX Warning: Package "mypkg" has already been loaded: ignoring load-time +(LaTeX) option "load-option-A". > \x=macro: ->111::333:. \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x @@ -26,15 +26,15 @@ l. ...\mypkgtest \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x \endgroup l. ...\mypkgtest -LaTeX3 Warning: Package "mypkg" has already been loaded: ignoring load-time -(LaTeX3) option "load-option-B". +LaTeX Warning: Package "mypkg" has already been loaded: ignoring load-time +(LaTeX) option "load-option-B". > \x=macro: ->111::333:. \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x \endgroup l. ...\mypkgtest -! LaTeX3 Error: Key "load-option-A" may only be used in the during loading of -(LaTeX3) package "mypkg". +! LaTeX Error: Key "load-option-A" may only be used in the during loading of +(LaTeX) package "mypkg". For immediate help type H . ... l. ...\SetKeys[mypkg]{load-option-A = 666} @@ -56,7 +56,7 @@ l. ...\mypkgtest \mypkgtest ...my@A :\my@B :\my@C :\my@D }\show \x \endgroup l. ...\mypkgtest -! LaTeX3 Error: Key "preamble-option-D" may only be used in the preamble. +! LaTeX Error: Key "preamble-option-D" may only be used in the preamble. For immediate help type H . ... l. ... preamble-option-D = 999} diff --git a/base/testfiles/github-0735.tlg b/base/testfiles/github-0735.tlg index 92136bd3b..d456a70cf 100644 --- a/base/testfiles/github-0735.tlg +++ b/base/testfiles/github-0735.tlg @@ -44,7 +44,7 @@ TEST 3: Unknown variant ============================================================ ! Use of \??? doesn't match its definition. \??? - ! LaTeX3 Error: Unknown arg expansion "XX" + ! LaTeX Error: Unknown arg expansion "XX" l. ... } If you say, e.g., `\def\a1{...}', then you must always put `1' after `\a', since control sequence names are diff --git a/base/testfiles/github-0892.tlg b/base/testfiles/github-0892.tlg index 13982b04a..892738dd8 100644 --- a/base/testfiles/github-0892.tlg +++ b/base/testfiles/github-0892.tlg @@ -28,7 +28,7 @@ Package: l3keys2e-package ....-..-.. v... test You gave `check' for option1 (again) You gave `more stuff' for option2 You gave `extra stuff' for option4 -! LaTeX3 Error: Unknown option 'option5' for package l3keys2e-package. +! LaTeX Error: Unknown option 'option5' for package l3keys2e-package. For immediate help type H . ... l. ...^^M diff --git a/base/testfiles/m3expl009.tlg b/base/testfiles/m3expl009.tlg index 7ee74eea0..f112c8047 100644 --- a/base/testfiles/m3expl009.tlg +++ b/base/testfiles/m3expl009.tlg @@ -3,12 +3,12 @@ Don't change this file in any respect. \cnta=\count... (../expl3.sty Package: expl3 ....-..-.. L3 programming layer (loader) -! LaTeX3 Error: Mismatched LaTeX support files detected. -(LaTeX3) Loading 'expl3.sty' aborted! -(LaTeX3) -(LaTeX3) The L3 programming layer in the LaTeX format -(LaTeX3) is dated ....-..-.., but in your TeX tree the files require -(LaTeX3) at least ....-..-... +! LaTeX Error: Mismatched LaTeX support files detected. +(LaTeX) Loading 'expl3.sty' aborted! +(LaTeX) +(LaTeX) The L3 programming layer in the LaTeX format +(LaTeX) is dated ....-..-.., but in your TeX tree the files require +(LaTeX) at least ....-..-... For immediate help type H . ... l. ... \ExplLoaderFileDate{expl3.sty}} @@ -24,8 +24,8 @@ later errors. Please ensure that your LaTeX format is correctly regenerated. Package: expl3 ....-..-.. L3 programming layer (loader) ) (../expl3.sty Package: expl3 ....-..-.. L3 programming layer (loader) -! LaTeX3 Error: Mismatched LaTeX support files detected. -(LaTeX3) Loading 'expl3.sty' aborted! +! LaTeX Error: Mismatched LaTeX support files detected. +(LaTeX) Loading 'expl3.sty' aborted! For immediate help type H . ... l. ... \ExplLoaderFileDate{expl3.sty}} diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def index 3f0a4e3c5..7146ee10c 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2022-08-05}{} + {l3backend-dvipdfmx.def}{2022-08-23}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -66,27 +66,21 @@ \cs_new_protected:Npn \__kernel_backend_scope_end: { \__kernel_backend_literal:n { x:grestore } } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { named } - { \exp_after:wN \use:n \current@color } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } +\cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { pdf : bc ~ [ #1 ] } } \cs_new_eq:NN \__color_backend_select_cmyk:n \__color_backend_select:n diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def index 4d561e6b4..b7efe7a69 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvips.def +++ b/texmf/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2022-08-05}{} + {l3backend-dvips.def}{2022-08-23}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -83,27 +83,21 @@ \cs_new_protected:Npn \__kernel_backend_scope_end: { \__kernel_backend_literal:n { ps:grestore } } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { named } - { \exp_after:wN \use:n \current@color } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } +\cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def index b9a97cca0..3f20aef6f 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2022-08-05}{} + {l3backend-dvisvgm.def}{2022-08-23}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -97,27 +97,21 @@ } \cs_generate_variant:Nn \__kernel_backend_scope:n { x } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { named } - { \exp_after:wN \use:n \current@color } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } +\cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def index 8b056a250..9be080803 100644 --- a/texmf/tex/latex/l3backend/l3backend-luatex.def +++ b/texmf/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2022-08-05}{} + {l3backend-luatex.def}{2022-08-23}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -82,34 +82,26 @@ } \cs_generate_variant:Nn \__kernel_backend_matrix:n { x } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 - } - \cs_new_protected:Npn \__color_backend_pickup:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 + } +\cs_new_protected:Npn \__color_backend_pickup:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + { + \str_if_eq:nnTF {#2} { g } + { \tl_set:Nn #7 { { gray } {#1} } } { - \str_if_eq:nnTF {#2} { g } - { \tl_set:Nn #7 { { gray } {#1} } } + \str_if_eq:nnTF {#4} { rg } + { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } { - \str_if_eq:nnTF {#4} { rg } - { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } + \str_if_eq:nnTF {#5} { k } + { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } { - \str_if_eq:nnTF {#5} { k } - { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } - { - \str_if_eq:nnTF {#2} { cs } - { - \tl_set:Nx #7 { { \use:n #1 } { #5 } } - } - { - \tl_set:Nn #7 { { gray } { 0 } } - } - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } } } } diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def index 2bcf56a29..4d5b03c06 100644 --- a/texmf/tex/latex/l3backend/l3backend-pdftex.def +++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2022-08-05}{} + {l3backend-pdftex.def}{2022-08-23}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -82,34 +82,26 @@ } \cs_generate_variant:Nn \__kernel_backend_matrix:n { x } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 - } - \cs_new_protected:Npn \__color_backend_pickup:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1 + } +\cs_new_protected:Npn \__color_backend_pickup:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7 + { + \str_if_eq:nnTF {#2} { g } + { \tl_set:Nn #7 { { gray } {#1} } } { - \str_if_eq:nnTF {#2} { g } - { \tl_set:Nn #7 { { gray } {#1} } } + \str_if_eq:nnTF {#4} { rg } + { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } { - \str_if_eq:nnTF {#4} { rg } - { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } } + \str_if_eq:nnTF {#5} { k } + { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } { - \str_if_eq:nnTF {#5} { k } - { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } } - { - \str_if_eq:nnTF {#2} { cs } - { - \tl_set:Nx #7 { { \use:n #1 } { #5 } } - } - { - \tl_set:Nn #7 { { gray } { 0 } } - } - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } } } } diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def index 2fa8d2ce0..29e2cc7c1 100644 --- a/texmf/tex/latex/l3backend/l3backend-xetex.def +++ b/texmf/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2022-08-05}{} + {l3backend-xetex.def}{2022-08-23}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -66,27 +66,21 @@ \cs_new_protected:Npn \__kernel_backend_scope_end: { \__kernel_backend_literal:n { x:grestore } } %% File: l3backend-color.dtx -\cs_new_protected:Npn \__color_backend_pickup:N #1 { } -\cs_if_exist:cT { ver@color.sty } +\cs_new_protected:Npn \__color_backend_pickup:N #1 { - \cs_set_protected:Npn \__color_backend_pickup:N #1 + \exp_args:NV \tl_if_head_is_space:nTF \current@color { - \exp_args:NV \tl_if_head_is_space:nTF \current@color - { - \tl_set:Nx #1 - { - { named } - { \exp_after:wN \use:n \current@color } - } - } - { - \exp_last_unbraced:Nx \__color_backend_pickup:w - { \current@color } \s__color_stop #1 - } + \tl_set:Nn #1 { { gray } { 0 } } + \msg_warning:nnx { color } { unhandled } + { \current@color } + } + { + \exp_last_unbraced:Nx \__color_backend_pickup:w + { \current@color } \s__color_stop #1 } - \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 - { \tl_set:Nn #3 { {#1} {#2} } } } +\cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 + { \tl_set:Nn #3 { {#1} {#2} } } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { pdf : bc ~ [ #1 ] } } \cs_new_eq:NN \__color_backend_select_cmyk:n \__color_backend_select:n diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index 3ef89d63d..e23ee371e 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -70,7 +70,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-05}% +\def\ExplFileDate{2022-08-23}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -10156,7 +10156,6 @@ { #1 ~ } } \prop_new:N \g_msg_module_name_prop -\prop_gput:Nnn \g_msg_module_name_prop { LaTeX } { LaTeX3 } \prop_new:N \g_msg_module_type_prop \prop_gput:Nnn \g_msg_module_type_prop { LaTeX } { } \cs_new:Npn \msg_module_type:n #1 @@ -10808,7 +10807,7 @@ { Backend~request~inconsistent~with~engine:~using~'#2'~backend. } { You~have~requested~backend~'#1',~but~this~is~not~suitable~for~use~with~the~ - active~engine.~LaTeX3~will~use~the~'#2'~backend~instead. + active~engine.~LaTeX~will~use~the~'#2'~backend~instead. } \cs_set_protected:Npn \__msg_tmp:w #1 { @@ -10847,7 +10846,7 @@ \cs_generate_variant:Nn \msg_expandable_error:nnnnn { nnfff } \cs_generate_variant:Nn \msg_expandable_error:nnnn { nnff } \cs_generate_variant:Nn \msg_expandable_error:nnn { nnf } -\prop_gput:Nnn \g_msg_module_name_prop { kernel } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { kernel } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { kernel } { } \clist_map_inline:nn { @@ -10855,12 +10854,12 @@ quark , prg , prop , scanmark , seq , sys } { - \prop_gput:Nnn \g_msg_module_name_prop {#1} { LaTeX3 } + \prop_gput:Nnn \g_msg_module_name_prop {#1} { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop {#1} { } } -\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / cmd } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / cmd } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { LaTeX / cmd } { } -\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / ltcmd } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / ltcmd } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { LaTeX / ltcmd } { } %% File: l3file.dtx \tl_new:N \l__ior_internal_tl @@ -13081,7 +13080,7 @@ { Misplaced~'='~in~key-value~input~\msg_line_context: } \msg_new:nnn { keyval } { blank-key-name } { Blank~key~name~in~key-value~input~\msg_line_context: } -\prop_gput:Nnn \g_msg_module_name_prop { keyval } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { keyval } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { keyval } { } \group_begin: \cs_set_protected:Npn \__keyval_tmp:w #1 @@ -14314,7 +14313,7 @@ { is~undefined. } { has~the~properties: #2 . } } -\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { keys } { } %% File: l3intarray.dtx \msg_new:nnn { kernel } { negative-array-size } @@ -15056,7 +15055,7 @@ '\token_to_str:N \fp_to_tl:N',~or~other~ conversion~functions. } -\prop_gput:Nnn \g_msg_module_name_prop { fp } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { fp } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { fp } { } %% File: l3fp-traps.dtx \flag_new:n { fp_invalid_operation } @@ -21394,7 +21393,7 @@ you~tried~to~interleave~them.~LaTeX~will~try~to~proceed,~ but~results~may~be~unexpected. } -\prop_gput:Nnn \g_msg_module_name_prop { cctab } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { cctab } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { cctab } { } %% File l3sort.dtx \seq_new:N \g__sort_internal_seq @@ -21814,7 +21813,7 @@ \iow_char:N\\sort_return_swapped: ~multiple~times.~ Exactly~one~of~these~should~be~called. } -\prop_gput:Nnn \g_msg_module_name_prop { sort } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { sort } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { sort } { } %% File: l3str-convert.dtx \cs_new_protected:Npn \__str_tmp:w { } @@ -22594,10 +22593,10 @@ } \prg_new_conditional:Npnn \__str_if_escape_string:N #1 { TF } { - \if_int_compare:w `#1 < "21 \exp_stop_f: + \if_int_compare:w `#1 < "27 \exp_stop_f: \prg_return_false: \else: - \if_int_compare:w `#1 > "7E \exp_stop_f: + \if_int_compare:w `#1 > "7A \exp_stop_f: \prg_return_false: \else: \prg_return_true: @@ -22698,7 +22697,7 @@ Unicode~limits~code~points~to~the~range~[0,1114111]. } } -\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { str } { } \cs_new_protected:cpn { __str_convert_decode_utf8: } { @@ -27767,7 +27766,7 @@ \tl_if_empty:nTF {#1} { variable~ #2 } { {#1} } : #3 } -\prop_gput:Nnn \g_msg_module_name_prop { regex } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { regex } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { regex } { } \cs_new:Npn \__regex_msg_repeated:nnN #1#2#3 { @@ -28491,10 +28490,7 @@ \cs_new_eq:NN \color_group_begin: \group_begin: \cs_new_eq:NN \color_group_end: \group_end: \cs_new_protected:Npn \color_ensure_current: - { - \__color_backend_pickup:N \l__color_current_tl - \__color_select:N \l__color_current_tl - } + { \__color_select:N \l__color_current_tl } \scan_new:N \s__color_stop \cs_new_protected:Npn \__color_select:N #1 { @@ -28511,7 +28507,7 @@ \int_new:N \l__color_internal_int \tl_new:N \l__color_internal_tl \scan_new:N \s__color_mark -\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF } +\prg_new_conditional:Npnn \color_if_exist:n #1 { p , T, F, TF } { \prop_if_exist:cTF { l__color_named_ #1 _prop } { @@ -28578,14 +28574,21 @@ { #1 } \cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 \s__color_stop { - \exp_args:Nf \__color_convert_rgb_cmyk:nnnn - { \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3} + \exp_args:Neee \__color_convert_rgb_cmyk:nnn + { \fp_eval:n { 1 - #1 } } + { \fp_eval:n { 1 - #2 } } + { \fp_eval:n { 1 - #3 } } + } +\cs_new:Npn \__color_convert_rgb_cmyk:nnn #1#2#3 + { + \exp_args:Ne \__color_convert_rgb_cmyk:nnnn + { \fp_eval:n { min( #1, #2 , #3 ) } } {#1} {#2} {#3} } \cs_new:Npn \__color_convert_rgb_cmyk:nnnn #1#2#3#4 { - \fp_eval:n { min ( 1 , max ( 0 , 1 - #2 - #1 ) ) } \c_space_tl - \fp_eval:n { min ( 1 , max ( 0 , 1 - #3 - #1 ) ) } \c_space_tl - \fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl + \fp_eval:n { min ( 1 , max ( 0 , #2 - #1 ) ) } \c_space_tl + \fp_eval:n { min ( 1 , max ( 0 , #3 - #1 ) ) } \c_space_tl + \fp_eval:n { min ( 1 , max ( 0 , #4 - #1 ) ) } \c_space_tl #1 } \cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop @@ -28604,7 +28607,6 @@ \tl_new:N \l__color_next_value_tl \cs_new_protected:Npx \__color_parse:nN #1#2 { - \exp_not:N \__color_backend_pickup:N \exp_not:N \l__color_current_tl \tl_set:Nx \exp_not:c { l__color_named_ . _tl } { \exp_not:N \__color_model:N \exp_not:N \l__color_current_tl } \prop_put:NVx \exp_not:c { l__color_named_ . _prop } @@ -28615,7 +28617,7 @@ } \cs_new_protected:Npn \__color_parse_aux:nN #1#2 { - \__color_if_defined:nTF {#1} + \color_if_exist:nTF {#1} { \__color_parse_set_eq:Nn #2 {#1} } { \__color_parse:Nw #2#1 ! \s__color_stop } \__color_check_model:N #2 @@ -28648,7 +28650,7 @@ } \cs_new_protected:Npn \__color_parse:Nw #1#2 ! #3 \s__color_stop { - \__color_if_defined:nTF {#2} + \color_if_exist:nTF {#2} { \tl_if_blank:nTF {#3} { \__color_parse_set_eq:Nn #1 {#2} } @@ -28696,7 +28698,7 @@ } \cs_new_protected:Npn \__color_parse_loop:nn #1#2 { - \__color_if_defined:nTF {#2} + \color_if_exist:nTF {#2} { \__color_extract:nNN {#2} \l__color_next_model_tl \l__color_next_value_tl \tl_if_eq:NNF \l__color_model_tl \l__color_next_model_tl @@ -28930,6 +28932,41 @@ } \cs_new:Npn \__color_parse_model_wave_rho:n #1 { \fp_eval:n { min(1, max(0,#1) ) } } +\cs_new:Npn \__color_parse_model_cmy:w #1 , #2 , #3 , #4 \s__color_stop + { + { cmyk } + { \__color_convert_rgb_cmyk:nnn {#1} {#2} {#3} } + } +\cs_new:Npn \__color_parse_model_tHsb:w #1 , #2 , #3 , #4 \s__color_stop + { + \exp_args:Ne \__color_parse_model_hsb:nnn + { \__color_parse_model_tHsb:n {#1} } {#2} {#3} + } +\cs_new:Npn \__color_parse_model_tHsb:n #1 + { + \__color_parse_model_tHsb:nw {#1} + 0 , 0 ; + 60 , 30 ; + 120 , 60 ; + 180 , 120 ; + 210 , 180 ; + 240 , 240 ; + 360 , 360 ; + \q_recursion_tail , ; + \q_recursion_stop + } +\cs_new:Npn \__color_parse_model_tHsb:nw #1 #2 , #3 ; #4 , #5 ; + { + \quark_if_recursion_tail_stop_do:nn {#4} { 0 } + \fp_compare:nNnTF {#1} > {#4} + { \__color_parse_model_tHsb:nw {#1} #4 , #5 ; } + { + \use_i_delimit_by_q_recursion_stop:nw + { \fp_eval:n { ((#1 - #2) / (#4 - #2) * (#5 - #3) + #3) / 360 } } + } + } +\cs_new:cpn { __color_parse_model_&spot:w } #1 , #2 \s__color_stop + { { gray } { #1 } } \tl_new:N \l_color_fixed_model_tl \cs_new_protected:Npn \__color_check_model:N #1 { @@ -29223,7 +29260,7 @@ } \cs_new_protected:Npn \color_set_eq:nn #1#2 { - \__color_if_defined:nTF {#2} + \color_if_exist:nTF {#2} { \tl_clear_new:c { l__color_named_ #1 _tl } \prop_clear_new:c { l__color_named_ #1 _prop } @@ -30012,7 +30049,7 @@ #1 { color } { show } {#2} { - \__color_if_defined:nT {#2} + \color_if_exist:nT {#2} { \exp_args:Nv \__color_show:n { l__color_named_ #2 _tl } \prop_map_function:cN @@ -30121,6 +30158,12 @@ \\ \\ key~was~given~with~the~correct~information. } +\msg_new:nnn { color } { unhandled-model } + { + Unhandled~color~model~in~LaTeX2e~value~"#1": + \\ \\ + falling~back~on~grayscale. + } \msg_new:nnnn { color } { unknown-color } { Unknown~color~'#1'. } { @@ -30160,7 +30203,7 @@ LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~ but~this~type~of~model~was~never~set~up. } -\prop_gput:Nnn \g_msg_module_name_prop { color } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { color } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { color } { } \msg_new:nnn { color } { show } { @@ -31597,7 +31640,7 @@ #2 } -\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { luatex } { } %% File: l3unicode.dtx \ior_new:N \g__char_data_ior @@ -33741,6 +33784,8 @@ { 0179 } { 017A } { 017B } { 017C } { 017D } { 017E } + { 01A0 } { 01A1 } + { 01AF } { 01B0 } { 01CD } { 01CE } { 01CF } { 01D0 } { 01D1 } { 01D2 } @@ -33974,6 +34019,54 @@ \__text_tmp:nnnnnn { upper } {#5} {#6} {#7} {#1} {#2} {#3} \__text_tmp:nnnnnn { title } {#5} {#6} {#7} {#1} {#2} {#3} } + \__text_loop:nn + { 1EA0 } { 1EA1 } + { 1EA2 } { 1EA3 } + { 1EA4 } { 1EA5 } + { 1EA6 } { 1EA7 } + { 1EA8 } { 1EA9 } + { 1EAA } { 1EAB } + { 1EAC } { 1EAD } + { 1EAE } { 1EAF } + { 1EB0 } { 1EB1 } + { 1EB2 } { 1EB3 } + { 1EB4 } { 1EB5 } + { 1EB6 } { 1EB7 } + { 1EB8 } { 1EB9 } + { 1EBA } { 1EBB } + { 1EBC } { 1EBD } + { 1EBE } { 1EBF } + { 1EC0 } { 1EC1 } + { 1EC2 } { 1EC3 } + { 1EC4 } { 1EC5 } + { 1EC6 } { 1EC7 } + { 1EC8 } { 1EC9 } + { 1ECA } { 1ECB } + { 1ECC } { 1ECD } + { 1ECE } { 1ECF } + { 1ED0 } { 1ED1 } + { 1ED2 } { 1ED3 } + { 1ED4 } { 1ED5 } + { 1ED6 } { 1ED7 } + { 1ED8 } { 1ED9 } + { 1EDA } { 1EDB } + { 1EDC } { 1EDD } + { 1EDE } { 1EDF } + { 1EE0 } { 1EE1 } + { 1EE2 } { 1EE3 } + { 1EE4 } { 1EE5 } + { 1EE6 } { 1EE7 } + { 1EE8 } { 1EE9 } + { 1EEA } { 1EEB } + { 1EEC } { 1EED } + { 1EEE } { 1EEF } + { 1EF0 } { 1EF1 } + { 1EF2 } { 1EF3 } + { 1EF4 } { 1EF5 } + { 1EF6 } { 1EF7 } + { 1EF8 } { 1EF9 } + \q_recursion_tail ? + \q_recursion_stop \__text_loop:nn { 1F08 } { 1F00 } { 1F09 } { 1F01 } diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 88cd00c7c..2bb475c14 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-05}% +\def\ExplFileDate{2022-08-23}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index 98aeaab7b..9e63d6fa6 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-05}% +\def\ExplFileDate{2022-08-23}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index bb4e17635..243725348 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-05}% +\def\ExplFileDate{2022-08-23}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 70ff8b96b578fa106707f244efe8fccfaffc12ca Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 20:00:04 +0200 Subject: [PATCH 05/13] Update unicode-data to v1.15 --- base/testfiles/github-0479-often.xetex.tlg | 8 +- ...-latexrelease-rollback-003-often.xetex.tlg | 16 +- ...latexrelease-rollback-2020-10-01.xetex.tlg | 8 +- ...latexrelease-rollback-2021-06-01.xetex.tlg | 8 +- ...latexrelease-rollback-2021-11-15.xetex.tlg | 8 +- .../tlb-rollback-004-often.xetex.tlg | 8 +- base/testfiles/tlb-rollback-005.xetex.tlg | 8 +- .../tex/generic/unicode-data/BidiBrackets.txt | 20 +- .../generic/unicode-data/BidiMirroring.txt | 26 +- .../tex/generic/unicode-data/CaseFolding.txt | 49 +- .../generic/unicode-data/EastAsianWidth.txt | 230 ++- .../unicode-data/GraphemeBreakProperty.txt | 1459 ++++++++++++++ texmf/tex/generic/unicode-data/LineBreak.txt | 271 ++- texmf/tex/generic/unicode-data/PropList.txt | 143 +- .../generic/unicode-data/ScriptExtensions.txt | 115 +- texmf/tex/generic/unicode-data/Scripts.txt | 329 ++- .../generic/unicode-data/SpecialCasing.txt | 6 +- .../tex/generic/unicode-data/UnicodeData.txt | 1795 ++++++++++++++++- .../unicode-data/WordBreakProperty.txt | 1441 +++++++++++++ texmf/tex/generic/unicode-data/emoji-data.txt | 1297 ++++++++++++ .../unicode-data/load-unicode-data.tex | 10 +- .../load-unicode-math-classes.tex | 2 +- .../load-unicode-xetex-classes.tex | 2 +- 23 files changed, 6908 insertions(+), 351 deletions(-) create mode 100644 texmf/tex/generic/unicode-data/GraphemeBreakProperty.txt create mode 100644 texmf/tex/generic/unicode-data/WordBreakProperty.txt create mode 100644 texmf/tex/generic/unicode-data/emoji-data.txt diff --git a/base/testfiles/github-0479-often.xetex.tlg b/base/testfiles/github-0479-often.xetex.tlg index 87fe83c6f..8c83a5a87 100644 --- a/base/testfiles/github-0479-often.xetex.tlg +++ b/base/testfiles/github-0479-often.xetex.tlg @@ -714,10 +714,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-latexrelease-rollback-003-often.xetex.tlg b/base/testfiles/tlb-latexrelease-rollback-003-often.xetex.tlg index 054b5df77..ec14754f4 100644 --- a/base/testfiles/tlb-latexrelease-rollback-003-often.xetex.tlg +++ b/base/testfiles/tlb-latexrelease-rollback-003-often.xetex.tlg @@ -604,10 +604,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Skipping: [....-..-..] Save language for hyphenation on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... @@ -1300,10 +1300,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-latexrelease-rollback-2020-10-01.xetex.tlg b/base/testfiles/tlb-latexrelease-rollback-2020-10-01.xetex.tlg index 30cacb556..76301fe9b 100644 --- a/base/testfiles/tlb-latexrelease-rollback-2020-10-01.xetex.tlg +++ b/base/testfiles/tlb-latexrelease-rollback-2020-10-01.xetex.tlg @@ -714,10 +714,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-latexrelease-rollback-2021-06-01.xetex.tlg b/base/testfiles/tlb-latexrelease-rollback-2021-06-01.xetex.tlg index 3177d815a..c1cf012a3 100644 --- a/base/testfiles/tlb-latexrelease-rollback-2021-06-01.xetex.tlg +++ b/base/testfiles/tlb-latexrelease-rollback-2021-06-01.xetex.tlg @@ -714,10 +714,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-latexrelease-rollback-2021-11-15.xetex.tlg b/base/testfiles/tlb-latexrelease-rollback-2021-11-15.xetex.tlg index 1b09ad95e..4b831cca4 100644 --- a/base/testfiles/tlb-latexrelease-rollback-2021-11-15.xetex.tlg +++ b/base/testfiles/tlb-latexrelease-rollback-2021-11-15.xetex.tlg @@ -714,10 +714,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-rollback-004-often.xetex.tlg b/base/testfiles/tlb-rollback-004-often.xetex.tlg index 901bd687c..f06f6c108 100644 --- a/base/testfiles/tlb-rollback-004-often.xetex.tlg +++ b/base/testfiles/tlb-rollback-004-often.xetex.tlg @@ -710,10 +710,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-rollback-005.xetex.tlg b/base/testfiles/tlb-rollback-005.xetex.tlg index fe0c2660c..1bf7d738d 100644 --- a/base/testfiles/tlb-rollback-005.xetex.tlg +++ b/base/testfiles/tlb-rollback-005.xetex.tlg @@ -718,10 +718,10 @@ Applying: [....-..-..] XeTeX character classes on input line .... (../load-unicode-xetex-classes.tex load-unicode-xetex-classes.tex v... (....-..-..) Reading Unicode east Asian character class data -# LineBreak-12.1.0.txt -# Date: ....-..-.., 22:04:15 GMT [KW, LI] -# EastAsianWidth-12.1.0.txt -# Date: ....-..-.., 22:01:58 GMT [KW, LI] +# LineBreak-14.0.0.txt +# Date: ....-..-.., 09:58:55 GMT [KW, LI] +# EastAsianWidth-14.0.0.txt +# Date: ....-..-.., 09:58:53 GMT [KW, LI] ) Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/texmf/tex/generic/unicode-data/BidiBrackets.txt b/texmf/tex/generic/unicode-data/BidiBrackets.txt index 782f9f253..89698f588 100644 --- a/texmf/tex/generic/unicode-data/BidiBrackets.txt +++ b/texmf/tex/generic/unicode-data/BidiBrackets.txt @@ -1,11 +1,11 @@ -# BidiBrackets-12.1.0.txt -# Date: 2019-03-08, 23:59:00 GMT [AG, LI, KW] -# © 2019 Unicode®, Inc. +# BidiBrackets-14.0.0.txt +# Date: 2021-06-30, 23:59:00 GMT [AG, LI, KW] +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type Properties # @@ -56,7 +56,7 @@ # of each line. # # For information on bidirectional paired brackets, see UAX #9: Unicode -# Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/ +# Bidirectional Algorithm, at https://www.unicode.org/reports/tr9/ # # This file was originally created by Andrew Glass and Laurentiu Iancu # for Unicode 6.3. @@ -147,6 +147,14 @@ 2E27; 2E26; c # RIGHT SIDEWAYS U BRACKET 2E28; 2E29; o # LEFT DOUBLE PARENTHESIS 2E29; 2E28; c # RIGHT DOUBLE PARENTHESIS +2E55; 2E56; o # LEFT SQUARE BRACKET WITH STROKE +2E56; 2E55; c # RIGHT SQUARE BRACKET WITH STROKE +2E57; 2E58; o # LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58; 2E57; c # RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59; 2E5A; o # TOP HALF LEFT PARENTHESIS +2E5A; 2E59; c # TOP HALF RIGHT PARENTHESIS +2E5B; 2E5C; o # BOTTOM HALF LEFT PARENTHESIS +2E5C; 2E5B; c # BOTTOM HALF RIGHT PARENTHESIS 3008; 3009; o # LEFT ANGLE BRACKET 3009; 3008; c # RIGHT ANGLE BRACKET 300A; 300B; o # LEFT DOUBLE ANGLE BRACKET diff --git a/texmf/tex/generic/unicode-data/BidiMirroring.txt b/texmf/tex/generic/unicode-data/BidiMirroring.txt index 7370fcc6a..bd8e2c5d0 100644 --- a/texmf/tex/generic/unicode-data/BidiMirroring.txt +++ b/texmf/tex/generic/unicode-data/BidiMirroring.txt @@ -1,10 +1,10 @@ -# BidiMirroring-12.1.0.txt -# Date: 2019-03-08, 23:59:00 GMT [KW, LI, RP] -# © 2019 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# BidiMirroring-14.0.0.txt +# Date: 2021-08-08, 22:55:00 GMT [KW, RP] +# © 2021 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Bidi_Mirroring_Glyph Property # @@ -15,7 +15,7 @@ # value, for which there is another Unicode character that typically has a glyph # that is the mirror image of the original character's glyph. # -# The repertoire covered by the file is Unicode 12.1.0. +# The repertoire covered by the file is Unicode 14.0.0. # # The file contains a list of lines with mappings from one code point # to another one for character-based mirroring. @@ -40,7 +40,7 @@ # for character-based mirroring. # # For information on bidi mirroring, see UAX #9: Unicode Bidirectional Algorithm, -# at http://www.unicode.org/unicode/reports/tr9/ +# at https://www.unicode.org/reports/tr9/ # # This file was originally created by Markus Scherer. # Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler, @@ -96,10 +96,10 @@ 208D; 208E # SUBSCRIPT LEFT PARENTHESIS 208E; 208D # SUBSCRIPT RIGHT PARENTHESIS 2208; 220B # ELEMENT OF -2209; 220C # NOT AN ELEMENT OF +2209; 220C # [BEST FIT] NOT AN ELEMENT OF 220A; 220D # SMALL ELEMENT OF 220B; 2208 # CONTAINS AS MEMBER -220C; 2209 # DOES NOT CONTAIN AS MEMBER +220C; 2209 # [BEST FIT] DOES NOT CONTAIN AS MEMBER 220D; 220A # SMALL CONTAINS AS MEMBER 2215; 29F5 # DIVISION SLASH 221F; 2BFE # RIGHT ANGLE @@ -453,6 +453,14 @@ 2E27; 2E26 # RIGHT SIDEWAYS U BRACKET 2E28; 2E29 # LEFT DOUBLE PARENTHESIS 2E29; 2E28 # RIGHT DOUBLE PARENTHESIS +2E55; 2E56 # LEFT SQUARE BRACKET WITH STROKE +2E56; 2E55 # RIGHT SQUARE BRACKET WITH STROKE +2E57; 2E58 # LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58; 2E57 # RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59; 2E5A # TOP HALF LEFT PARENTHESIS +2E5A; 2E59 # TOP HALF RIGHT PARENTHESIS +2E5B; 2E5C # BOTTOM HALF LEFT PARENTHESIS +2E5C; 2E5B # BOTTOM HALF RIGHT PARENTHESIS 3008; 3009 # LEFT ANGLE BRACKET 3009; 3008 # RIGHT ANGLE BRACKET 300A; 300B # LEFT DOUBLE ANGLE BRACKET diff --git a/texmf/tex/generic/unicode-data/CaseFolding.txt b/texmf/tex/generic/unicode-data/CaseFolding.txt index 7eeb915ab..932ace29e 100644 --- a/texmf/tex/generic/unicode-data/CaseFolding.txt +++ b/texmf/tex/generic/unicode-data/CaseFolding.txt @@ -1,6 +1,6 @@ -# CaseFolding-12.1.0.txt -# Date: 2019-03-10, 10:53:00 GMT -# © 2019 Unicode®, Inc. +# CaseFolding-14.0.0.txt +# Date: 2021-03-08, 19:35:41 GMT +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # @@ -1050,6 +1050,7 @@ 2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC 2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A 2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C2F; C; 2C5F; # GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE 2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE @@ -1230,10 +1231,17 @@ A7B8; C; A7B9; # LATIN CAPITAL LETTER U WITH STROKE A7BA; C; A7BB; # LATIN CAPITAL LETTER GLOTTAL A A7BC; C; A7BD; # LATIN CAPITAL LETTER GLOTTAL I A7BE; C; A7BF; # LATIN CAPITAL LETTER GLOTTAL U +A7C0; C; A7C1; # LATIN CAPITAL LETTER OLD POLISH O A7C2; C; A7C3; # LATIN CAPITAL LETTER ANGLICANA W A7C4; C; A794; # LATIN CAPITAL LETTER C WITH PALATAL HOOK A7C5; C; 0282; # LATIN CAPITAL LETTER S WITH HOOK A7C6; C; 1D8E; # LATIN CAPITAL LETTER Z WITH PALATAL HOOK +A7C7; C; A7C8; # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY +A7C9; C; A7CA; # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +A7D0; C; A7D1; # LATIN CAPITAL LETTER CLOSED INSULAR G +A7D6; C; A7D7; # LATIN CAPITAL LETTER MIDDLE SCOTS S +A7D8; C; A7D9; # LATIN CAPITAL LETTER SIGMOID S +A7F5; C; A7F6; # LATIN CAPITAL LETTER REVERSED HALF H AB70; C; 13A0; # CHEROKEE SMALL LETTER A AB71; C; 13A1; # CHEROKEE SMALL LETTER E AB72; C; 13A2; # CHEROKEE SMALL LETTER I @@ -1428,6 +1436,41 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z 104D1; C; 104F9; # OSAGE CAPITAL LETTER GHA 104D2; C; 104FA; # OSAGE CAPITAL LETTER ZA 104D3; C; 104FB; # OSAGE CAPITAL LETTER ZHA +10570; C; 10597; # VITHKUQI CAPITAL LETTER A +10571; C; 10598; # VITHKUQI CAPITAL LETTER BBE +10572; C; 10599; # VITHKUQI CAPITAL LETTER BE +10573; C; 1059A; # VITHKUQI CAPITAL LETTER CE +10574; C; 1059B; # VITHKUQI CAPITAL LETTER CHE +10575; C; 1059C; # VITHKUQI CAPITAL LETTER DE +10576; C; 1059D; # VITHKUQI CAPITAL LETTER DHE +10577; C; 1059E; # VITHKUQI CAPITAL LETTER EI +10578; C; 1059F; # VITHKUQI CAPITAL LETTER E +10579; C; 105A0; # VITHKUQI CAPITAL LETTER FE +1057A; C; 105A1; # VITHKUQI CAPITAL LETTER GA +1057C; C; 105A3; # VITHKUQI CAPITAL LETTER HA +1057D; C; 105A4; # VITHKUQI CAPITAL LETTER HHA +1057E; C; 105A5; # VITHKUQI CAPITAL LETTER I +1057F; C; 105A6; # VITHKUQI CAPITAL LETTER IJE +10580; C; 105A7; # VITHKUQI CAPITAL LETTER JE +10581; C; 105A8; # VITHKUQI CAPITAL LETTER KA +10582; C; 105A9; # VITHKUQI CAPITAL LETTER LA +10583; C; 105AA; # VITHKUQI CAPITAL LETTER LLA +10584; C; 105AB; # VITHKUQI CAPITAL LETTER ME +10585; C; 105AC; # VITHKUQI CAPITAL LETTER NE +10586; C; 105AD; # VITHKUQI CAPITAL LETTER NJE +10587; C; 105AE; # VITHKUQI CAPITAL LETTER O +10588; C; 105AF; # VITHKUQI CAPITAL LETTER PE +10589; C; 105B0; # VITHKUQI CAPITAL LETTER QA +1058A; C; 105B1; # VITHKUQI CAPITAL LETTER RE +1058C; C; 105B3; # VITHKUQI CAPITAL LETTER SE +1058D; C; 105B4; # VITHKUQI CAPITAL LETTER SHE +1058E; C; 105B5; # VITHKUQI CAPITAL LETTER TE +1058F; C; 105B6; # VITHKUQI CAPITAL LETTER THE +10590; C; 105B7; # VITHKUQI CAPITAL LETTER U +10591; C; 105B8; # VITHKUQI CAPITAL LETTER VE +10592; C; 105B9; # VITHKUQI CAPITAL LETTER XE +10594; C; 105BB; # VITHKUQI CAPITAL LETTER Y +10595; C; 105BC; # VITHKUQI CAPITAL LETTER ZE 10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A 10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA 10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB diff --git a/texmf/tex/generic/unicode-data/EastAsianWidth.txt b/texmf/tex/generic/unicode-data/EastAsianWidth.txt index 94d55d665..e04f70517 100644 --- a/texmf/tex/generic/unicode-data/EastAsianWidth.txt +++ b/texmf/tex/generic/unicode-data/EastAsianWidth.txt @@ -1,15 +1,15 @@ -# EastAsianWidth-12.1.0.txt -# Date: 2019-03-31, 22:01:58 GMT [KW, LI] -# © 2019 Unicode®, Inc. +# EastAsianWidth-14.0.0.txt +# Date: 2021-07-06, 09:58:53 GMT [KW, LI] +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # East_Asian_Width Property # -# This file is an informative contributory data file in the +# This file is a normative contributory data file in the # Unicode Character Database. # # The format is two fields separated by a semicolon. @@ -37,7 +37,7 @@ # with ranges of code points, the code point count in square brackets. # # For more information, see UAX #11: East Asian Width, -# at http://www.unicode.org/reports/tr11/ +# at https://www.unicode.org/reports/tr11/ # # @missing: 0000..10FFFF; N 0000..001F;N # Cc [32] .. @@ -273,7 +273,7 @@ 0610..061A;N # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 061B;N # Po ARABIC SEMICOLON 061C;N # Cf ARABIC LETTER MARK -061E..061F;N # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK +061D..061F;N # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK 0620..063F;N # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640;N # Lm ARABIC TATWEEL 0641..064A;N # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH @@ -331,9 +331,14 @@ 0859..085B;N # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 085E;N # Po MANDAIC PUNCTUATION 0860..086A;N # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4;N # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08BD;N # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -08D3..08E1;N # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0870..0887;N # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0888;N # Sk ARABIC RAISED ROUND DOT +0889..088E;N # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0890..0891;N # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +0898..089F;N # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08A0..08C8;N # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9;N # Lm ARABIC SMALL FARSI YEH +08CA..08E1;N # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E2;N # Cf ARABIC DISPUTED END OF AYAH 08E3..08FF;N # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA 0900..0902;N # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA @@ -450,7 +455,7 @@ 0B47..0B48;N # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C;N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B4D;N # Mn ORIYA SIGN VIRAMA -0B56;N # Mn ORIYA AI LENGTH MARK +0B55..0B56;N # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK 0B57;N # Mc ORIYA AU LENGTH MARK 0B5C..0B5D;N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61;N # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL @@ -490,6 +495,7 @@ 0C0E..0C10;N # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28;N # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39;N # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3C;N # Mn TELUGU SIGN NUKTA 0C3D;N # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40;N # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44;N # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR @@ -497,6 +503,7 @@ 0C4A..0C4D;N # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56;N # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A;N # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D;N # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61;N # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63;N # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F;N # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -522,14 +529,14 @@ 0CCA..0CCB;N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD;N # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6;N # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE;N # Lo KANNADA LETTER FA +0CDD..0CDE;N # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1;N # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3;N # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF;N # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2;N # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D00..0D01;N # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03;N # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C;N # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L +0D04..0D0C;N # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L 0D0E..0D10;N # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A;N # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3B..0D3C;N # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA @@ -550,6 +557,7 @@ 0D70..0D78;N # No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS 0D79;N # So MALAYALAM DATE MARK 0D7A..0D7F;N # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K +0D81;N # Mn SINHALA SIGN CANDRABINDU 0D82..0D83;N # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96;N # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1;N # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA @@ -708,11 +716,13 @@ 16EB..16ED;N # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION 16EE..16F0;N # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8;N # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C;N # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711;N # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711;N # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1714;N # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +1715;N # Mc TAGALOG SIGN PAMUDPOD +171F;N # Lo TAGALOG LETTER ARCHAIC RA 1720..1731;N # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734;N # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1732..1733;N # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734;N # Mc HANUNOO SIGN PAMUDPOD 1735..1736;N # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION 1740..1751;N # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753;N # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U @@ -740,6 +750,7 @@ 1807..180A;N # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU 180B..180D;N # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E;N # Cf MONGOLIAN VOWEL SEPARATOR +180F;N # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1810..1819;N # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842;N # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843;N # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN @@ -795,6 +806,7 @@ 1AA8..1AAD;N # Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG 1AB0..1ABD;N # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE;N # Me COMBINING PARENTHESES OVERLAY +1ABF..1ACE;N # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03;N # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04;N # Mc BALINESE SIGN BISAH 1B05..1B33;N # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA @@ -806,12 +818,13 @@ 1B3D..1B41;N # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42;N # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44;N # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B;N # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C;N # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B50..1B59;N # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B5A..1B60;N # Po [7] BALINESE PANTI..BALINESE PAMENENG 1B61..1B6A;N # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE 1B6B..1B73;N # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B74..1B7C;N # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING +1B7D..1B7E;N # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG 1B80..1B81;N # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82;N # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0;N # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA @@ -870,8 +883,7 @@ 1D79..1D7F;N # Ll [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE 1D80..1D9A;N # Ll [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF;N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DF9;N # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF;N # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF;N # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1EFF;N # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP 1F00..1F15;N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D;N # Lu [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA @@ -963,7 +975,7 @@ 20A9;H # Sc WON SIGN 20AA..20AB;N # Sc [2] NEW SHEQEL SIGN..DONG SIGN 20AC;A # Sc EURO SIGN -20AD..20BF;N # Sc [19] KIP SIGN..BITCOIN SIGN +20AD..20C0;N # Sc [20] KIP SIGN..SOM SIGN 20D0..20DC;N # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0;N # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E1;N # Mn COMBINING LEFT RIGHT ARROW ABOVE @@ -1335,9 +1347,8 @@ 2B56..2B59;A # So [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE 2B5A..2B73;N # So [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95;N # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW -2B98..2BFF;N # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL -2C00..2C2E;N # Lu [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E;N # Ll [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2B97..2BFF;N # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL +2C00..2C5F;N # L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C60..2C7B;N # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D;N # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2C7F;N # Lu [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL @@ -1404,6 +1415,17 @@ 2E41;N # Po REVERSED COMMA 2E42;N # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43..2E4F;N # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER +2E50..2E51;N # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR +2E52..2E54;N # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK +2E55;N # Ps LEFT SQUARE BRACKET WITH STROKE +2E56;N # Pe RIGHT SQUARE BRACKET WITH STROKE +2E57;N # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58;N # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59;N # Ps TOP HALF LEFT PARENTHESIS +2E5A;N # Pe TOP HALF RIGHT PARENTHESIS +2E5B;N # Ps BOTTOM HALF LEFT PARENTHESIS +2E5C;N # Pe BOTTOM HALF RIGHT PARENTHESIS +2E5D;N # Pd OBLIQUE HYPHEN 2E80..2E99;W # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9B..2EF3;W # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE 2F00..2FD5;W # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE @@ -1464,7 +1486,7 @@ 3190..3191;W # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK 3192..3195;W # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK 3196..319F;W # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK -31A0..31BA;W # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY +31A0..31BF;W # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31C0..31E3;W # So [36] CJK STROKE T..CJK STROKE Q 31F0..31FF;W # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3200..321E;W # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU @@ -1479,11 +1501,9 @@ 32B1..32BF;W # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY 32C0..32FF;W # So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA 3300..33FF;W # So [256] SQUARE APAATO..SQUARE GAL -3400..4DB5;W # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4DB6..4DBF;W # Cn [10] .. +3400..4DBF;W # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF 4DC0..4DFF;N # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -4E00..9FEF;W # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF -9FF0..9FFF;W # Cn [16] .. +4E00..9FFF;W # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF A000..A014;W # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015;W # Lm YI SYLLABLE WU A016..A48C;W # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR @@ -1522,8 +1542,12 @@ A788;N # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A;N # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A78B..A78E;N # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F;N # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF;N # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7C6;N # L& [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK +A790..A7CA;N # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7D0..A7D1;N # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3;N # Ll LATIN SMALL LETTER DOUBLE THORN +A7D5..A7D9;N # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S +A7F2..A7F4;N # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q +A7F5..A7F6;N # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7;N # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9;N # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA;N # Ll LATIN LETTER SMALL CAPITAL TURNED M @@ -1539,6 +1563,7 @@ A823..A824;N # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN A825..A826;N # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827;N # Mc SYLOTI NAGRI VOWEL SIGN OO A828..A82B;N # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 +A82C;N # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA A830..A835;N # No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS A836..A837;N # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK A838;N # Sc NORTH INDIC RUPEE MARK @@ -1639,7 +1664,9 @@ AB28..AB2E;N # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A;N # Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5B;N # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F;N # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB60..AB67;N # Ll [8] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK +AB60..AB68;N # Ll [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69;N # Lm MODIFIER LETTER SMALL TURNED W +AB6A..AB6B;N # Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK AB70..ABBF;N # Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2;N # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4;N # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP @@ -1675,15 +1702,17 @@ FB40..FB41;N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEK FB43..FB44;N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FB4F;N # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED FB50..FBB1;N # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBB2..FBC1;N # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW +FBB2..FBC2;N # Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE FBD3..FD3D;N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD3E;N # Pe ORNATE LEFT PARENTHESIS FD3F;N # Ps ORNATE RIGHT PARENTHESIS +FD40..FD4F;N # So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH FD50..FD8F;N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7;N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDCF;N # So ARABIC LIGATURE SALAAMUHU ALAYNAA FDF0..FDFB;N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FDFC;N # Sc RIAL SIGN -FDFD;N # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM +FDFD..FDFF;N # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL FE00..FE0F;A # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE10..FE16;W # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK FE17;W # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET @@ -1800,7 +1829,7 @@ FFFD;A # So REPLACEMENT CHARACTER 10179..10189;N # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN 1018A..1018B;N # No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN 1018C..1018E;N # So [3] GREEK SINUSOID SIGN..NOMISMA SIGN -10190..1019B;N # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN +10190..1019C;N # So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL 101A0;N # So GREEK SYMBOL TAU RHO 101D0..101FC;N # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND 101FD;N # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE @@ -1832,9 +1861,20 @@ FFFD;A # So REPLACEMENT CHARACTER 10500..10527;N # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563;N # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 1056F;N # Po CAUCASIAN ALBANIAN CITATION MARK +10570..1057A;N # Lu [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A;N # Lu [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592;N # Lu [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595;N # Lu [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1;N # Ll [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1;N # Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9;N # Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC;N # Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10600..10736;N # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755;N # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767;N # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785;N # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0;N # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA;N # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805;N # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808;N # Lo CYPRIOT SYLLABLE JO 1080A..10835;N # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -1902,6 +1942,10 @@ FFFD;A # So REPLACEMENT CHARACTER 10D24..10D27;N # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10D30..10D39;N # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE 10E60..10E7E;N # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS +10E80..10EA9;N # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET +10EAB..10EAC;N # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10EAD;N # Pd YEZIDI HYPHENATION MARK +10EB0..10EB1;N # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE 10F00..10F1C;N # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F1D..10F26;N # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF 10F27;N # Lo OLD SOGDIAN LIGATURE AYIN-DALETH @@ -1909,6 +1953,11 @@ FFFD;A # So REPLACEMENT CHARACTER 10F46..10F50;N # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW 10F51..10F54;N # No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED 10F55..10F59;N # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10F70..10F81;N # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10F82..10F85;N # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +10F86..10F89;N # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS +10FB0..10FC4;N # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW +10FC5..10FCB;N # No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED 10FE0..10FF6;N # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000;N # Mc BRAHMI SIGN CANDRABINDU 11001;N # Mn BRAHMI SIGN ANUSVARA @@ -1918,6 +1967,10 @@ FFFD;A # So REPLACEMENT CHARACTER 11047..1104D;N # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS 11052..11065;N # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND 11066..1106F;N # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +11070;N # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11071..11072;N # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074;N # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075;N # Lo BRAHMI LETTER OLD TAMIL LLA 1107F;N # Mn BRAHMI NUMBER JOINER 11080..11081;N # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11082;N # Mc KAITHI SIGN VISARGA @@ -1929,6 +1982,7 @@ FFFD;A # So REPLACEMENT CHARACTER 110BB..110BC;N # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BD;N # Cf KAITHI NUMBER SIGN 110BE..110C1;N # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA +110C2;N # Mn KAITHI VOWEL SIGN VOCALIC R 110CD;N # Cf KAITHI NUMBER SIGN ABOVE 110D0..110E8;N # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9;N # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE @@ -1941,6 +1995,7 @@ FFFD;A # So REPLACEMENT CHARACTER 11140..11143;N # Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK 11144;N # Lo CHAKMA LETTER LHAA 11145..11146;N # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI +11147;N # Lo CHAKMA LETTER VAA 11150..11172;N # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11173;N # Mn MAHAJANI SIGN NUKTA 11174..11175;N # Po [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK @@ -1955,6 +2010,8 @@ FFFD;A # So REPLACEMENT CHARACTER 111C5..111C8;N # Po [4] SHARADA DANDA..SHARADA SEPARATOR 111C9..111CC;N # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111CD;N # Po SHARADA SUTRA MARK +111CE;N # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +111CF;N # Mn SHARADA SIGN INVERTED CANDRABINDU 111D0..111D9;N # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA;N # Lo SHARADA EKAM 111DB;N # Po SHARADA SIGN SIDDHAM @@ -2013,10 +2070,10 @@ FFFD;A # So REPLACEMENT CHARACTER 11447..1144A;N # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1144B..1144F;N # Po [5] NEWA DANDA..NEWA ABBREVIATION SIGN 11450..11459;N # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE -1145B;N # Po NEWA PLACEHOLDER MARK +1145A..1145B;N # Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK 1145D;N # Po NEWA INSERTION SIGN 1145E;N # Mn NEWA SANDHI MARK -1145F;N # Lo NEWA LETTER VEDIC ANUSVARA +1145F..11461;N # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA 11480..114AF;N # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2;N # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8;N # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL @@ -2060,6 +2117,7 @@ FFFD;A # So REPLACEMENT CHARACTER 116B6;N # Mc TAKRI SIGN VIRAMA 116B7;N # Mn TAKRI SIGN NUKTA 116B8;N # Lo TAKRI LETTER ARCHAIC KHA +116B9;N # Po TAKRI ABBREVIATION SIGN 116C0..116C9;N # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11700..1171A;N # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA 1171D..1171F;N # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA @@ -2071,6 +2129,7 @@ FFFD;A # So REPLACEMENT CHARACTER 1173A..1173B;N # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 1173C..1173E;N # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1173F;N # So AHOM SYMBOL VI +11740..11746;N # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B;N # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 1182C..1182E;N # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837;N # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -2081,6 +2140,23 @@ FFFD;A # So REPLACEMENT CHARACTER 118E0..118E9;N # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118EA..118F2;N # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 118FF;N # Lo WARANG CITI OM +11900..11906;N # Lo [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E +11909;N # Lo DIVES AKURU LETTER O +1190C..11913;N # Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA +11915..11916;N # Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA +11918..1192F;N # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA +11930..11935;N # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E +11937..11938;N # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193B..1193C;N # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +1193D;N # Mc DIVES AKURU SIGN HALANTA +1193E;N # Mn DIVES AKURU VIRAMA +1193F;N # Lo DIVES AKURU PREFIXED NASAL SIGN +11940;N # Mc DIVES AKURU MEDIAL YA +11941;N # Lo DIVES AKURU INITIAL RA +11942;N # Mc DIVES AKURU MEDIAL RA +11943;N # Mn DIVES AKURU SIGN NUKTA +11944..11946;N # Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK +11950..11959;N # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE 119A0..119A7;N # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR 119AA..119D0;N # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA 119D1..119D3;N # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II @@ -2112,6 +2188,7 @@ FFFD;A # So REPLACEMENT CHARACTER 11A9A..11A9C;N # Po [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD 11A9D;N # Lo SOYOMBO MARK PLUTA 11A9E..11AA2;N # Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 +11AB0..11ABF;N # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA 11AC0..11AF8;N # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08;N # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E;N # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA @@ -2158,6 +2235,7 @@ FFFD;A # So REPLACEMENT CHARACTER 11EF3..11EF4;N # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6;N # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O 11EF7..11EF8;N # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11FB0;N # Lo LISU LETTER YHA 11FC0..11FD4;N # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH 11FD5..11FDC;N # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI 11FDD..11FE0;N # Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN @@ -2167,6 +2245,8 @@ FFFD;A # So REPLACEMENT CHARACTER 12400..1246E;N # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474;N # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12480..12543;N # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU +12F90..12FF0;N # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +12FF1..12FF2;N # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 13000..1342E;N # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 13430..13438;N # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT 14400..14646;N # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 @@ -2174,6 +2254,8 @@ FFFD;A # So REPLACEMENT CHARACTER 16A40..16A5E;N # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69;N # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16A6E..16A6F;N # Po [2] MRO DANDA..MRO DOUBLE DANDA +16A70..16ABE;N # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AC0..16AC9;N # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE 16AD0..16AED;N # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4;N # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16AF5;N # Po BASSA VAH FULL STOP @@ -2200,10 +2282,17 @@ FFFD;A # So REPLACEMENT CHARACTER 16FE0..16FE1;W # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK 16FE2;W # Po OLD CHINESE HOOK MARK 16FE3;W # Lm OLD CHINESE ITERATION MARK +16FE4;W # Mn KHITAN SMALL SCRIPT FILLER +16FF0..16FF1;W # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 17000..187F7;W # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 -18800..18AF2;W # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 +18800..18AFF;W # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 +18B00..18CD5;W # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 +18D00..18D08;W # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3;W # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB;W # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE;W # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B0FF;W # Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 -1B100..1B11E;W # Lo [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2 +1B100..1B122;W # Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU 1B150..1B152;W # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO 1B164..1B167;W # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB;W # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB @@ -2215,6 +2304,9 @@ FFFD;A # So REPLACEMENT CHARACTER 1BC9D..1BC9E;N # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1BC9F;N # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1BCA0..1BCA3;N # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1CF00..1CF2D;N # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46;N # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG +1CF50..1CFC3;N # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK 1D000..1D0F5;N # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126;N # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D129..1D164;N # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE @@ -2228,7 +2320,7 @@ FFFD;A # So REPLACEMENT CHARACTER 1D185..1D18B;N # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D18C..1D1A9;N # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D1AA..1D1AD;N # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE..1D1E8;N # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN +1D1AE..1D1EA;N # So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON 1D200..1D241;N # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244;N # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245;N # So GREEK MUSICAL LEIMMA @@ -2288,6 +2380,9 @@ FFFD;A # So REPLACEMENT CHARACTER 1DA87..1DA8B;N # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS 1DA9B..1DA9F;N # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF;N # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1DF00..1DF09;N # Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A;N # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E;N # Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL 1E000..1E006;N # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018;N # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021;N # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI @@ -2299,10 +2394,16 @@ FFFD;A # So REPLACEMENT CHARACTER 1E140..1E149;N # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E14E;N # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E14F;N # So NYIAKENG PUACHUE HMONG CIRCLED CA +1E290..1E2AD;N # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2AE;N # Mn TOTO SIGN RISING TONE 1E2C0..1E2EB;N # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF;N # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9;N # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E2FF;N # Sc WANCHO NGUN SIGN +1E7E0..1E7E6;N # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB;N # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE;N # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE;N # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4;N # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8CF;N # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1E8D0..1E8D6;N # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS @@ -2364,15 +2465,17 @@ FFFD;A # So REPLACEMENT CHARACTER 1F0D1..1F0F5;N # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 1F100..1F10A;A # No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA 1F10B..1F10C;N # No [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO +1F10D..1F10F;N # So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH 1F110..1F12D;A # So [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD 1F12E..1F12F;N # So [2] CIRCLED WZ..COPYLEFT SYMBOL 1F130..1F169;A # So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -1F16A..1F16C;N # So [3] RAISED MC SIGN..RAISED MR SIGN +1F16A..1F16F;N # So [6] RAISED MC SIGN..CIRCLED HUMAN FIGURE 1F170..1F18D;A # So [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA 1F18E;W # So NEGATIVE SQUARED AB 1F18F..1F190;A # So [2] NEGATIVE SQUARED WC..SQUARE DJ 1F191..1F19A;W # So [10] SQUARED CL..SQUARED VS 1F19B..1F1AC;A # So [18] SQUARED THREE D..SQUARED VOD +1F1AD;N # So MASK WORK SYMBOL 1F1E6..1F1FF;N # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z 1F200..1F202;W # So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA 1F210..1F23B;W # So [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D @@ -2424,36 +2527,46 @@ FFFD;A # So REPLACEMENT CHARACTER 1F6CD..1F6CF;N # So [3] SHOPPING BAGS..BED 1F6D0..1F6D2;W # So [3] PLACE OF WORSHIP..SHOPPING TROLLEY 1F6D3..1F6D4;N # So [2] STUPA..PAGODA -1F6D5;W # So HINDU TEMPLE +1F6D5..1F6D7;W # So [3] HINDU TEMPLE..ELEVATOR +1F6DD..1F6DF;W # So [3] PLAYGROUND SLIDE..RING BUOY 1F6E0..1F6EA;N # So [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE 1F6EB..1F6EC;W # So [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING 1F6F0..1F6F3;N # So [4] SATELLITE..PASSENGER SHIP -1F6F4..1F6FA;W # So [7] SCOOTER..AUTO RICKSHAW +1F6F4..1F6FC;W # So [9] SCOOTER..ROLLER SKATE 1F700..1F773;N # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F780..1F7D8;N # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE 1F7E0..1F7EB;W # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE +1F7F0;W # So HEAVY EQUALS SIGN 1F800..1F80B;N # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847;N # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859;N # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887;N # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD;N # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS +1F8B0..1F8B1;N # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST 1F900..1F90B;N # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT -1F90D..1F971;W # So [101] WHITE HEART..YAWNING FACE -1F973..1F976;W # So [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE -1F97A..1F9A2;W # So [41] FACE WITH PLEADING EYES..SWAN -1F9A5..1F9AA;W # So [6] SLOTH..OYSTER -1F9AE..1F9CA;W # So [29] GUIDE DOG..ICE CUBE -1F9CD..1F9FF;W # So [51] STANDING PERSON..NAZAR AMULET +1F90C..1F93A;W # So [47] PINCHED FINGERS..FENCER +1F93B;N # So MODERN PENTATHLON +1F93C..1F945;W # So [10] WRESTLERS..GOAL NET +1F946;N # So RIFLE +1F947..1F9FF;W # So [185] FIRST PLACE MEDAL..NAZAR AMULET 1FA00..1FA53;N # So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP 1FA60..1FA6D;N # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER -1FA70..1FA73;W # So [4] BALLET SHOES..SHORTS -1FA78..1FA7A;W # So [3] DROP OF BLOOD..STETHOSCOPE -1FA80..1FA82;W # So [3] YO-YO..PARACHUTE -1FA90..1FA95;W # So [6] RINGED PLANET..BANJO -20000..2A6D6;W # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A6D7..2A6FF;W # Cn [41] .. -2A700..2B734;W # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 -2B735..2B73F;W # Cn [11] .. +1FA70..1FA74;W # So [5] BALLET SHOES..THONG SANDAL +1FA78..1FA7C;W # So [5] DROP OF BLOOD..CRUTCH +1FA80..1FA86;W # So [7] YO-YO..NESTING DOLLS +1FA90..1FAAC;W # So [29] RINGED PLANET..HAMSA +1FAB0..1FABA;W # So [11] FLY..NEST WITH EGGS +1FAC0..1FAC5;W # So [6] ANATOMICAL HEART..PERSON WITH CROWN +1FAD0..1FAD9;W # So [10] BLUEBERRIES..JAR +1FAE0..1FAE7;W # So [8] MELTING FACE..BUBBLES +1FAF0..1FAF6;W # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS +1FB00..1FB92;N # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK +1FB94..1FBCA;N # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON +1FBF0..1FBF9;N # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE +20000..2A6DF;W # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A6E0..2A6FF;W # Cn [32] .. +2A700..2B738;W # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2B739..2B73F;W # Cn [7] .. 2B740..2B81D;W # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B81E..2B81F;W # Cn [2] .. 2B820..2CEA1;W # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 @@ -2463,7 +2576,8 @@ FFFD;A # So REPLACEMENT CHARACTER 2F800..2FA1D;W # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 2FA1E..2FA1F;W # Cn [2] .. 2FA20..2FFFD;W # Cn [1502] .. -30000..3FFFD;W # Cn [65534] .. +30000..3134A;W # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +3134B..3FFFD;W # Cn [60595] .. E0001;N # Cf LANGUAGE TAG E0020..E007F;N # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF;A # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 diff --git a/texmf/tex/generic/unicode-data/GraphemeBreakProperty.txt b/texmf/tex/generic/unicode-data/GraphemeBreakProperty.txt new file mode 100644 index 000000000..dd2569064 --- /dev/null +++ b/texmf/tex/generic/unicode-data/GraphemeBreakProperty.txt @@ -0,0 +1,1459 @@ +# GraphemeBreakProperty-14.0.0.txt +# Date: 2021-08-12, 23:13:02 GMT +# © 2021 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Unicode Character Database +# For documentation, see http://www.unicode.org/reports/tr44/ + +# ================================================ + +# Property: Grapheme_Cluster_Break + +# All code points not explicitly listed for Grapheme_Cluster_Break +# have the value Other (XX). + +# @missing: 0000..10FFFF; Other + +# ================================================ + +0600..0605 ; Prepend # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE +06DD ; Prepend # Cf ARABIC END OF AYAH +070F ; Prepend # Cf SYRIAC ABBREVIATION MARK +0890..0891 ; Prepend # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +08E2 ; Prepend # Cf ARABIC DISPUTED END OF AYAH +0D4E ; Prepend # Lo MALAYALAM LETTER DOT REPH +110BD ; Prepend # Cf KAITHI NUMBER SIGN +110CD ; Prepend # Cf KAITHI NUMBER SIGN ABOVE +111C2..111C3 ; Prepend # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA +1193F ; Prepend # Lo DIVES AKURU PREFIXED NASAL SIGN +11941 ; Prepend # Lo DIVES AKURU INITIAL RA +11A3A ; Prepend # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA +11A84..11A89 ; Prepend # Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA +11D46 ; Prepend # Lo MASARAM GONDI REPHA + +# Total code points: 26 + +# ================================================ + +000D ; CR # Cc + +# Total code points: 1 + +# ================================================ + +000A ; LF # Cc + +# Total code points: 1 + +# ================================================ + +0000..0009 ; Control # Cc [10] .. +000B..000C ; Control # Cc [2] .. +000E..001F ; Control # Cc [18] .. +007F..009F ; Control # Cc [33] .. +00AD ; Control # Cf SOFT HYPHEN +061C ; Control # Cf ARABIC LETTER MARK +180E ; Control # Cf MONGOLIAN VOWEL SEPARATOR +200B ; Control # Cf ZERO WIDTH SPACE +200E..200F ; Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK +2028 ; Control # Zl LINE SEPARATOR +2029 ; Control # Zp PARAGRAPH SEPARATOR +202A..202E ; Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE +2060..2064 ; Control # Cf [5] WORD JOINER..INVISIBLE PLUS +2065 ; Control # Cn +2066..206F ; Control # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES +FEFF ; Control # Cf ZERO WIDTH NO-BREAK SPACE +FFF0..FFF8 ; Control # Cn [9] .. +FFF9..FFFB ; Control # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR +13430..13438 ; Control # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +1BCA0..1BCA3 ; Control # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1D173..1D17A ; Control # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE +E0000 ; Control # Cn +E0001 ; Control # Cf LANGUAGE TAG +E0002..E001F ; Control # Cn [30] .. +E0080..E00FF ; Control # Cn [128] .. +E01F0..E0FFF ; Control # Cn [3600] .. + +# Total code points: 3886 + +# ================================================ + +0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X +0483..0487 ; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE +0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN +0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG +05BF ; Extend # Mn HEBREW POINT RAFE +05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT +05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT +05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN +0610..061A ; Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA +064B..065F ; Extend # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW +0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF +06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN +06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA +06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON +06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM +0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH +0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH +07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN +07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE +07FD ; Extend # Mn NKO DANTAYALAN +0816..0819 ; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH +081B..0823 ; Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A +0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U +0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA +0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK +0898..089F ; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA +08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA +093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE +093C ; Extend # Mn DEVANAGARI SIGN NUKTA +0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI +094D ; Extend # Mn DEVANAGARI SIGN VIRAMA +0951..0957 ; Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE +0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL +0981 ; Extend # Mn BENGALI SIGN CANDRABINDU +09BC ; Extend # Mn BENGALI SIGN NUKTA +09BE ; Extend # Mc BENGALI VOWEL SIGN AA +09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR +09CD ; Extend # Mn BENGALI SIGN VIRAMA +09D7 ; Extend # Mc BENGALI AU LENGTH MARK +09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL +09FE ; Extend # Mn BENGALI SANDHI MARK +0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI +0A3C ; Extend # Mn GURMUKHI SIGN NUKTA +0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU +0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI +0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA +0A51 ; Extend # Mn GURMUKHI SIGN UDAAT +0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK +0A75 ; Extend # Mn GURMUKHI SIGN YAKASH +0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA +0ABC ; Extend # Mn GUJARATI SIGN NUKTA +0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E +0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI +0ACD ; Extend # Mn GUJARATI SIGN VIRAMA +0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL +0AFA..0AFF ; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE +0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU +0B3C ; Extend # Mn ORIYA SIGN NUKTA +0B3E ; Extend # Mc ORIYA VOWEL SIGN AA +0B3F ; Extend # Mn ORIYA VOWEL SIGN I +0B41..0B44 ; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR +0B4D ; Extend # Mn ORIYA SIGN VIRAMA +0B55..0B56 ; Extend # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK +0B57 ; Extend # Mc ORIYA AU LENGTH MARK +0B62..0B63 ; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL +0B82 ; Extend # Mn TAMIL SIGN ANUSVARA +0BBE ; Extend # Mc TAMIL VOWEL SIGN AA +0BC0 ; Extend # Mn TAMIL VOWEL SIGN II +0BCD ; Extend # Mn TAMIL SIGN VIRAMA +0BD7 ; Extend # Mc TAMIL AU LENGTH MARK +0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE +0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE +0C3C ; Extend # Mn TELUGU SIGN NUKTA +0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II +0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI +0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA +0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK +0C62..0C63 ; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL +0C81 ; Extend # Mn KANNADA SIGN CANDRABINDU +0CBC ; Extend # Mn KANNADA SIGN NUKTA +0CBF ; Extend # Mn KANNADA VOWEL SIGN I +0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU +0CC6 ; Extend # Mn KANNADA VOWEL SIGN E +0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA +0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL +0D00..0D01 ; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU +0D3B..0D3C ; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA +0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA +0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR +0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA +0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK +0D62..0D63 ; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL +0D81 ; Extend # Mn SINHALA SIGN CANDRABINDU +0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA +0DCF ; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA +0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA +0DDF ; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA +0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT +0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU +0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN +0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN +0EB4..0EBC ; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO +0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA +0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU +0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO +0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA +0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS +0F8D..0F97 ; Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA +0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN +102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU +1032..1037 ; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW +1039..103A ; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT +103D..103E ; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA +1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL +105E..1060 ; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA +1071..1074 ; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE +1082 ; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA +1085..1086 ; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y +108D ; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE +109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI +135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK +1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +1732..1733 ; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U +1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U +17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA +17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA +17C6 ; Extend # Mn KHMER SIGN NIKAHIT +17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT +17DD ; Extend # Mn KHMER SIGN ATTHACAN +180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180F ; Extend # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR +1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA +18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA +1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U +1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O +1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA +1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I +1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U +1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE +1A56 ; Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA +1A58..1A5E ; Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA +1A60 ; Extend # Mn TAI THAM SIGN SAKOT +1A62 ; Extend # Mn TAI THAM VOWEL SIGN MAI SAT +1A65..1A6C ; Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW +1A73..1A7C ; Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN +1A7F ; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT +1AB0..1ABD ; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW +1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY +1ABF..1ACE ; Extend # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T +1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG +1B34 ; Extend # Mn BALINESE SIGN REREKAN +1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG +1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA +1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA +1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET +1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG +1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR +1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU +1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG +1BAB..1BAD ; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA +1BE6 ; Extend # Mn BATAK SIGN TOMPI +1BE8..1BE9 ; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE +1BED ; Extend # Mn BATAK VOWEL SIGN KARO O +1BEF..1BF1 ; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H +1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T +1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA +1CD0..1CD2 ; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA +1CD4..1CE0 ; Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA +1CE2..1CE8 ; Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL +1CED ; Extend # Mn VEDIC SIGN TIRYAK +1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE +1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE +1DC0..1DFF ; Extend # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +200C ; Extend # Cf ZERO WIDTH NON-JOINER +20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE +20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH +20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE +20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE +20E5..20F0 ; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE +2CEF..2CF1 ; Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS +2D7F ; Extend # Mn TIFINAGH CONSONANT JOINER +2DE0..2DFF ; Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS +302A..302D ; Extend # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK +302E..302F ; Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK +3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +A66F ; Extend # Mn COMBINING CYRILLIC VZMET +A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN +A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK +A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E +A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS +A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA +A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA +A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA +A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E +A82C ; Extend # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA +A8C4..A8C5 ; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU +A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA +A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY +A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU +A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R +A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR +A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU +A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT +A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET +A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW +AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE +AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE +AA35..AA36 ; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA +AA43 ; Extend # Mn CHAM CONSONANT SIGN FINAL NG +AA4C ; Extend # Mn CHAM CONSONANT SIGN FINAL M +AA7C ; Extend # Mn MYANMAR SIGN TAI LAING TONE-2 +AAB0 ; Extend # Mn TAI VIET MAI KANG +AAB2..AAB4 ; Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U +AAB7..AAB8 ; Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA +AABE..AABF ; Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK +AAC1 ; Extend # Mn TAI VIET TONE MAI THO +AAEC..AAED ; Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI +AAF6 ; Extend # Mn MEETEI MAYEK VIRAMA +ABE5 ; Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP +ABE8 ; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP +ABED ; Extend # Mn MEETEI MAYEK APUN IYEK +FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA +FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 +FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF +FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE +102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK +10376..1037A ; Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII +10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R +10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O +10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA +10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW +10A3F ; Extend # Mn KHAROSHTHI VIRAMA +10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW +10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +11001 ; Extend # Mn BRAHMI SIGN ANUSVARA +11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA +11070 ; Extend # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11073..11074 ; Extend # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA +110B3..110B6 ; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI +110B9..110BA ; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA +110C2 ; Extend # Mn KAITHI VOWEL SIGN VOCALIC R +11100..11102 ; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA +11127..1112B ; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU +1112D..11134 ; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA +11173 ; Extend # Mn MAHAJANI SIGN NUKTA +11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA +111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O +111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK +111CF ; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU +1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI +11234 ; Extend # Mn KHOJKI SIGN ANUSVARA +11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA +1123E ; Extend # Mn KHOJKI SIGN SUKUN +112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA +112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA +11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU +1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA +1133E ; Extend # Mc GRANTHA VOWEL SIGN AA +11340 ; Extend # Mn GRANTHA VOWEL SIGN II +11357 ; Extend # Mc GRANTHA AU LENGTH MARK +11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX +11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA +11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI +11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA +11446 ; Extend # Mn NEWA SIGN NUKTA +1145E ; Extend # Mn NEWA SANDHI MARK +114B0 ; Extend # Mc TIRHUTA VOWEL SIGN AA +114B3..114B8 ; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL +114BA ; Extend # Mn TIRHUTA VOWEL SIGN SHORT E +114BD ; Extend # Mc TIRHUTA VOWEL SIGN SHORT O +114BF..114C0 ; Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA +114C2..114C3 ; Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA +115AF ; Extend # Mc SIDDHAM VOWEL SIGN AA +115B2..115B5 ; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR +115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA +115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA +115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU +11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI +1163D ; Extend # Mn MODI SIGN ANUSVARA +1163F..11640 ; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA +116AB ; Extend # Mn TAKRI SIGN ANUSVARA +116AD ; Extend # Mn TAKRI VOWEL SIGN AA +116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU +116B7 ; Extend # Mn TAKRI SIGN NUKTA +1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA +11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA +11930 ; Extend # Mc DIVES AKURU VOWEL SIGN AA +1193B..1193C ; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +1193E ; Extend # Mn DIVES AKURU VIRAMA +11943 ; Extend # Mn DIVES AKURU SIGN NUKTA +119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR +119DA..119DB ; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI +119E0 ; Extend # Mn NANDINAGARI SIGN VIRAMA +11A01..11A0A ; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK +11A33..11A38 ; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA +11A3B..11A3E ; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA +11A47 ; Extend # Mn ZANABAZAR SQUARE SUBJOINER +11A51..11A56 ; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE +11A59..11A5B ; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK +11A8A..11A96 ; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA +11A98..11A99 ; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER +11C30..11C36 ; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L +11C38..11C3D ; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA +11C3F ; Extend # Mn BHAIKSUKI SIGN VIRAMA +11C92..11CA7 ; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA +11CAA..11CB0 ; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA +11CB2..11CB3 ; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E +11CB5..11CB6 ; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU +11D31..11D36 ; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R +11D3A ; Extend # Mn MASARAM GONDI VOWEL SIGN E +11D3C..11D3D ; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O +11D3F..11D45 ; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA +11D47 ; Extend # Mn MASARAM GONDI RA-KARA +11D90..11D91 ; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI +11D95 ; Extend # Mn GUNJALA GONDI SIGN ANUSVARA +11D97 ; Extend # Mn GUNJALA GONDI VIRAMA +11EF3..11EF4 ; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U +16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE +16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM +16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR +16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW +16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER +1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK +1CF00..1CF2D ; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG +1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM +1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 +1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 +1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE +1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE +1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO +1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME +1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK +1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1E000..1E006 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE +1E008..1E018 ; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU +1E01B..1E021 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI +1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS +1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D +1E2AE ; Extend # Mn TOTO SIGN RISING TONE +1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI +1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS +1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA +1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 +E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG +E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + +# Total code points: 2095 + +# ================================================ + +1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + +# Total code points: 26 + +# ================================================ + +0903 ; SpacingMark # Mc DEVANAGARI SIGN VISARGA +093B ; SpacingMark # Mc DEVANAGARI VOWEL SIGN OOE +093E..0940 ; SpacingMark # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II +0949..094C ; SpacingMark # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU +094E..094F ; SpacingMark # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW +0982..0983 ; SpacingMark # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA +09BF..09C0 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II +09C7..09C8 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI +09CB..09CC ; SpacingMark # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +0A03 ; SpacingMark # Mc GURMUKHI SIGN VISARGA +0A3E..0A40 ; SpacingMark # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II +0A83 ; SpacingMark # Mc GUJARATI SIGN VISARGA +0ABE..0AC0 ; SpacingMark # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II +0AC9 ; SpacingMark # Mc GUJARATI VOWEL SIGN CANDRA O +0ACB..0ACC ; SpacingMark # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU +0B02..0B03 ; SpacingMark # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA +0B40 ; SpacingMark # Mc ORIYA VOWEL SIGN II +0B47..0B48 ; SpacingMark # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI +0B4B..0B4C ; SpacingMark # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0BBF ; SpacingMark # Mc TAMIL VOWEL SIGN I +0BC1..0BC2 ; SpacingMark # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU +0BC6..0BC8 ; SpacingMark # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI +0BCA..0BCC ; SpacingMark # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0C01..0C03 ; SpacingMark # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C41..0C44 ; SpacingMark # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR +0C82..0C83 ; SpacingMark # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0CBE ; SpacingMark # Mc KANNADA VOWEL SIGN AA +0CC0..0CC1 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U +0CC3..0CC4 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR +0CC7..0CC8 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; SpacingMark # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0D02..0D03 ; SpacingMark # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA +0D3F..0D40 ; SpacingMark # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II +0D46..0D48 ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI +0D4A..0D4C ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0D82..0D83 ; SpacingMark # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA +0DD0..0DD1 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA +0DD8..0DDE ; SpacingMark # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0DF2..0DF3 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0E33 ; SpacingMark # Lo THAI CHARACTER SARA AM +0EB3 ; SpacingMark # Lo LAO VOWEL SIGN AM +0F3E..0F3F ; SpacingMark # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES +0F7F ; SpacingMark # Mc TIBETAN SIGN RNAM BCAD +1031 ; SpacingMark # Mc MYANMAR VOWEL SIGN E +103B..103C ; SpacingMark # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA +1056..1057 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR +1084 ; SpacingMark # Mc MYANMAR VOWEL SIGN SHAN E +1715 ; SpacingMark # Mc TAGALOG SIGN PAMUDPOD +1734 ; SpacingMark # Mc HANUNOO SIGN PAMUDPOD +17B6 ; SpacingMark # Mc KHMER VOWEL SIGN AA +17BE..17C5 ; SpacingMark # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU +17C7..17C8 ; SpacingMark # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU +1923..1926 ; SpacingMark # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU +1929..192B ; SpacingMark # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA +1930..1931 ; SpacingMark # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA +1933..1938 ; SpacingMark # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA +1A19..1A1A ; SpacingMark # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O +1A55 ; SpacingMark # Mc TAI THAM CONSONANT SIGN MEDIAL RA +1A57 ; SpacingMark # Mc TAI THAM CONSONANT SIGN LA TANG LAI +1A6D..1A72 ; SpacingMark # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI +1B04 ; SpacingMark # Mc BALINESE SIGN BISAH +1B3B ; SpacingMark # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3D..1B41 ; SpacingMark # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B43..1B44 ; SpacingMark # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG +1B82 ; SpacingMark # Mc SUNDANESE SIGN PANGWISAD +1BA1 ; SpacingMark # Mc SUNDANESE CONSONANT SIGN PAMINGKAL +1BA6..1BA7 ; SpacingMark # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG +1BAA ; SpacingMark # Mc SUNDANESE SIGN PAMAAEH +1BE7 ; SpacingMark # Mc BATAK VOWEL SIGN E +1BEA..1BEC ; SpacingMark # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O +1BEE ; SpacingMark # Mc BATAK VOWEL SIGN U +1BF2..1BF3 ; SpacingMark # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN +1C24..1C2B ; SpacingMark # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU +1C34..1C35 ; SpacingMark # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG +1CE1 ; SpacingMark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA +1CF7 ; SpacingMark # Mc VEDIC SIGN ATIKRAMA +A823..A824 ; SpacingMark # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I +A827 ; SpacingMark # Mc SYLOTI NAGRI VOWEL SIGN OO +A880..A881 ; SpacingMark # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA +A8B4..A8C3 ; SpacingMark # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU +A952..A953 ; SpacingMark # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA +A983 ; SpacingMark # Mc JAVANESE SIGN WIGNYAN +A9B4..A9B5 ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG +A9BA..A9BB ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE +A9BE..A9C0 ; SpacingMark # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON +AA2F..AA30 ; SpacingMark # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI +AA33..AA34 ; SpacingMark # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA +AA4D ; SpacingMark # Mc CHAM CONSONANT SIGN FINAL H +AAEB ; SpacingMark # Mc MEETEI MAYEK VOWEL SIGN II +AAEE..AAEF ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU +AAF5 ; SpacingMark # Mc MEETEI MAYEK VOWEL SIGN VISARGA +ABE3..ABE4 ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP +ABE6..ABE7 ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP +ABE9..ABEA ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG +ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK +11000 ; SpacingMark # Mc BRAHMI SIGN CANDRABINDU +11002 ; SpacingMark # Mc BRAHMI SIGN VISARGA +11082 ; SpacingMark # Mc KAITHI SIGN VISARGA +110B0..110B2 ; SpacingMark # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II +110B7..110B8 ; SpacingMark # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU +1112C ; SpacingMark # Mc CHAKMA VOWEL SIGN E +11145..11146 ; SpacingMark # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI +11182 ; SpacingMark # Mc SHARADA SIGN VISARGA +111B3..111B5 ; SpacingMark # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II +111BF..111C0 ; SpacingMark # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA +111CE ; SpacingMark # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +1122C..1122E ; SpacingMark # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II +11232..11233 ; SpacingMark # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU +11235 ; SpacingMark # Mc KHOJKI SIGN VIRAMA +112E0..112E2 ; SpacingMark # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II +11302..11303 ; SpacingMark # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA +1133F ; SpacingMark # Mc GRANTHA VOWEL SIGN I +11341..11344 ; SpacingMark # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR +11347..11348 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI +1134B..1134D ; SpacingMark # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11362..11363 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL +11435..11437 ; SpacingMark # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II +11440..11441 ; SpacingMark # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU +11445 ; SpacingMark # Mc NEWA SIGN VISARGA +114B1..114B2 ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II +114B9 ; SpacingMark # Mc TIRHUTA VOWEL SIGN E +114BB..114BC ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O +114BE ; SpacingMark # Mc TIRHUTA VOWEL SIGN AU +114C1 ; SpacingMark # Mc TIRHUTA SIGN VISARGA +115B0..115B1 ; SpacingMark # Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II +115B8..115BB ; SpacingMark # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU +115BE ; SpacingMark # Mc SIDDHAM SIGN VISARGA +11630..11632 ; SpacingMark # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II +1163B..1163C ; SpacingMark # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU +1163E ; SpacingMark # Mc MODI SIGN VISARGA +116AC ; SpacingMark # Mc TAKRI SIGN VISARGA +116AE..116AF ; SpacingMark # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II +116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA +11726 ; SpacingMark # Mc AHOM VOWEL SIGN E +1182C..1182E ; SpacingMark # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II +11838 ; SpacingMark # Mc DOGRA SIGN VISARGA +11931..11935 ; SpacingMark # Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E +11937..11938 ; SpacingMark # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193D ; SpacingMark # Mc DIVES AKURU SIGN HALANTA +11940 ; SpacingMark # Mc DIVES AKURU MEDIAL YA +11942 ; SpacingMark # Mc DIVES AKURU MEDIAL RA +119D1..119D3 ; SpacingMark # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II +119DC..119DF ; SpacingMark # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA +119E4 ; SpacingMark # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E +11A39 ; SpacingMark # Mc ZANABAZAR SQUARE SIGN VISARGA +11A57..11A58 ; SpacingMark # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU +11A97 ; SpacingMark # Mc SOYOMBO SIGN VISARGA +11C2F ; SpacingMark # Mc BHAIKSUKI VOWEL SIGN AA +11C3E ; SpacingMark # Mc BHAIKSUKI SIGN VISARGA +11CA9 ; SpacingMark # Mc MARCHEN SUBJOINED LETTER YA +11CB1 ; SpacingMark # Mc MARCHEN VOWEL SIGN I +11CB4 ; SpacingMark # Mc MARCHEN VOWEL SIGN O +11D8A..11D8E ; SpacingMark # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU +11D93..11D94 ; SpacingMark # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU +11D96 ; SpacingMark # Mc GUNJALA GONDI SIGN VISARGA +11EF5..11EF6 ; SpacingMark # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +16F51..16F87 ; SpacingMark # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI +16FF0..16FF1 ; SpacingMark # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY +1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM +1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT + +# Total code points: 388 + +# ================================================ + +1100..115F ; L # Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER +A960..A97C ; L # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + +# Total code points: 125 + +# ================================================ + +1160..11A7 ; V # Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE +D7B0..D7C6 ; V # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + +# Total code points: 95 + +# ================================================ + +11A8..11FF ; T # Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN +D7CB..D7FB ; T # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + +# Total code points: 137 + +# ================================================ + +AC00 ; LV # Lo HANGUL SYLLABLE GA +AC1C ; LV # Lo HANGUL SYLLABLE GAE +AC38 ; LV # Lo HANGUL SYLLABLE GYA +AC54 ; LV # Lo HANGUL SYLLABLE GYAE +AC70 ; LV # Lo HANGUL SYLLABLE GEO +AC8C ; LV # Lo HANGUL SYLLABLE GE +ACA8 ; LV # Lo HANGUL SYLLABLE GYEO +ACC4 ; LV # Lo HANGUL SYLLABLE GYE +ACE0 ; LV # Lo HANGUL SYLLABLE GO +ACFC ; LV # Lo HANGUL SYLLABLE GWA +AD18 ; LV # Lo HANGUL SYLLABLE GWAE +AD34 ; LV # Lo HANGUL SYLLABLE GOE +AD50 ; LV # Lo HANGUL SYLLABLE GYO +AD6C ; LV # Lo HANGUL SYLLABLE GU +AD88 ; LV # Lo HANGUL SYLLABLE GWEO +ADA4 ; LV # Lo HANGUL SYLLABLE GWE +ADC0 ; LV # Lo HANGUL SYLLABLE GWI +ADDC ; LV # Lo HANGUL SYLLABLE GYU +ADF8 ; LV # Lo HANGUL SYLLABLE GEU +AE14 ; LV # Lo HANGUL SYLLABLE GYI +AE30 ; LV # Lo HANGUL SYLLABLE GI +AE4C ; LV # Lo HANGUL SYLLABLE GGA +AE68 ; LV # Lo HANGUL SYLLABLE GGAE +AE84 ; LV # Lo HANGUL SYLLABLE GGYA +AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE +AEBC ; LV # Lo HANGUL SYLLABLE GGEO +AED8 ; LV # Lo HANGUL SYLLABLE GGE +AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO +AF10 ; LV # Lo HANGUL SYLLABLE GGYE +AF2C ; LV # Lo HANGUL SYLLABLE GGO +AF48 ; LV # Lo HANGUL SYLLABLE GGWA +AF64 ; LV # Lo HANGUL SYLLABLE GGWAE +AF80 ; LV # Lo HANGUL SYLLABLE GGOE +AF9C ; LV # Lo HANGUL SYLLABLE GGYO +AFB8 ; LV # Lo HANGUL SYLLABLE GGU +AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO +AFF0 ; LV # Lo HANGUL SYLLABLE GGWE +B00C ; LV # Lo HANGUL SYLLABLE GGWI +B028 ; LV # Lo HANGUL SYLLABLE GGYU +B044 ; LV # Lo HANGUL SYLLABLE GGEU +B060 ; LV # Lo HANGUL SYLLABLE GGYI +B07C ; LV # Lo HANGUL SYLLABLE GGI +B098 ; LV # Lo HANGUL SYLLABLE NA +B0B4 ; LV # Lo HANGUL SYLLABLE NAE +B0D0 ; LV # Lo HANGUL SYLLABLE NYA +B0EC ; LV # Lo HANGUL SYLLABLE NYAE +B108 ; LV # Lo HANGUL SYLLABLE NEO +B124 ; LV # Lo HANGUL SYLLABLE NE +B140 ; LV # Lo HANGUL SYLLABLE NYEO +B15C ; LV # Lo HANGUL SYLLABLE NYE +B178 ; LV # Lo HANGUL SYLLABLE NO +B194 ; LV # Lo HANGUL SYLLABLE NWA +B1B0 ; LV # Lo HANGUL SYLLABLE NWAE +B1CC ; LV # Lo HANGUL SYLLABLE NOE +B1E8 ; LV # Lo HANGUL SYLLABLE NYO +B204 ; LV # Lo HANGUL SYLLABLE NU +B220 ; LV # Lo HANGUL SYLLABLE NWEO +B23C ; LV # Lo HANGUL SYLLABLE NWE +B258 ; LV # Lo HANGUL SYLLABLE NWI +B274 ; LV # Lo HANGUL SYLLABLE NYU +B290 ; LV # Lo HANGUL SYLLABLE NEU +B2AC ; LV # Lo HANGUL SYLLABLE NYI +B2C8 ; LV # Lo HANGUL SYLLABLE NI +B2E4 ; LV # Lo HANGUL SYLLABLE DA +B300 ; LV # Lo HANGUL SYLLABLE DAE +B31C ; LV # Lo HANGUL SYLLABLE DYA +B338 ; LV # Lo HANGUL SYLLABLE DYAE +B354 ; LV # Lo HANGUL SYLLABLE DEO +B370 ; LV # Lo HANGUL SYLLABLE DE +B38C ; LV # Lo HANGUL SYLLABLE DYEO +B3A8 ; LV # Lo HANGUL SYLLABLE DYE +B3C4 ; LV # Lo HANGUL SYLLABLE DO +B3E0 ; LV # Lo HANGUL SYLLABLE DWA +B3FC ; LV # Lo HANGUL SYLLABLE DWAE +B418 ; LV # Lo HANGUL SYLLABLE DOE +B434 ; LV # Lo HANGUL SYLLABLE DYO +B450 ; LV # Lo HANGUL SYLLABLE DU +B46C ; LV # Lo HANGUL SYLLABLE DWEO +B488 ; LV # Lo HANGUL SYLLABLE DWE +B4A4 ; LV # Lo HANGUL SYLLABLE DWI +B4C0 ; LV # Lo HANGUL SYLLABLE DYU +B4DC ; LV # Lo HANGUL SYLLABLE DEU +B4F8 ; LV # Lo HANGUL SYLLABLE DYI +B514 ; LV # Lo HANGUL SYLLABLE DI +B530 ; LV # Lo HANGUL SYLLABLE DDA +B54C ; LV # Lo HANGUL SYLLABLE DDAE +B568 ; LV # Lo HANGUL SYLLABLE DDYA +B584 ; LV # Lo HANGUL SYLLABLE DDYAE +B5A0 ; LV # Lo HANGUL SYLLABLE DDEO +B5BC ; LV # Lo HANGUL SYLLABLE DDE +B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO +B5F4 ; LV # Lo HANGUL SYLLABLE DDYE +B610 ; LV # Lo HANGUL SYLLABLE DDO +B62C ; LV # Lo HANGUL SYLLABLE DDWA +B648 ; LV # Lo HANGUL SYLLABLE DDWAE +B664 ; LV # Lo HANGUL SYLLABLE DDOE +B680 ; LV # Lo HANGUL SYLLABLE DDYO +B69C ; LV # Lo HANGUL SYLLABLE DDU +B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO +B6D4 ; LV # Lo HANGUL SYLLABLE DDWE +B6F0 ; LV # Lo HANGUL SYLLABLE DDWI +B70C ; LV # Lo HANGUL SYLLABLE DDYU +B728 ; LV # Lo HANGUL SYLLABLE DDEU +B744 ; LV # Lo HANGUL SYLLABLE DDYI +B760 ; LV # Lo HANGUL SYLLABLE DDI +B77C ; LV # Lo HANGUL SYLLABLE RA +B798 ; LV # Lo HANGUL SYLLABLE RAE +B7B4 ; LV # Lo HANGUL SYLLABLE RYA +B7D0 ; LV # Lo HANGUL SYLLABLE RYAE +B7EC ; LV # Lo HANGUL SYLLABLE REO +B808 ; LV # Lo HANGUL SYLLABLE RE +B824 ; LV # Lo HANGUL SYLLABLE RYEO +B840 ; LV # Lo HANGUL SYLLABLE RYE +B85C ; LV # Lo HANGUL SYLLABLE RO +B878 ; LV # Lo HANGUL SYLLABLE RWA +B894 ; LV # Lo HANGUL SYLLABLE RWAE +B8B0 ; LV # Lo HANGUL SYLLABLE ROE +B8CC ; LV # Lo HANGUL SYLLABLE RYO +B8E8 ; LV # Lo HANGUL SYLLABLE RU +B904 ; LV # Lo HANGUL SYLLABLE RWEO +B920 ; LV # Lo HANGUL SYLLABLE RWE +B93C ; LV # Lo HANGUL SYLLABLE RWI +B958 ; LV # Lo HANGUL SYLLABLE RYU +B974 ; LV # Lo HANGUL SYLLABLE REU +B990 ; LV # Lo HANGUL SYLLABLE RYI +B9AC ; LV # Lo HANGUL SYLLABLE RI +B9C8 ; LV # Lo HANGUL SYLLABLE MA +B9E4 ; LV # Lo HANGUL SYLLABLE MAE +BA00 ; LV # Lo HANGUL SYLLABLE MYA +BA1C ; LV # Lo HANGUL SYLLABLE MYAE +BA38 ; LV # Lo HANGUL SYLLABLE MEO +BA54 ; LV # Lo HANGUL SYLLABLE ME +BA70 ; LV # Lo HANGUL SYLLABLE MYEO +BA8C ; LV # Lo HANGUL SYLLABLE MYE +BAA8 ; LV # Lo HANGUL SYLLABLE MO +BAC4 ; LV # Lo HANGUL SYLLABLE MWA +BAE0 ; LV # Lo HANGUL SYLLABLE MWAE +BAFC ; LV # Lo HANGUL SYLLABLE MOE +BB18 ; LV # Lo HANGUL SYLLABLE MYO +BB34 ; LV # Lo HANGUL SYLLABLE MU +BB50 ; LV # Lo HANGUL SYLLABLE MWEO +BB6C ; LV # Lo HANGUL SYLLABLE MWE +BB88 ; LV # Lo HANGUL SYLLABLE MWI +BBA4 ; LV # Lo HANGUL SYLLABLE MYU +BBC0 ; LV # Lo HANGUL SYLLABLE MEU +BBDC ; LV # Lo HANGUL SYLLABLE MYI +BBF8 ; LV # Lo HANGUL SYLLABLE MI +BC14 ; LV # Lo HANGUL SYLLABLE BA +BC30 ; LV # Lo HANGUL SYLLABLE BAE +BC4C ; LV # Lo HANGUL SYLLABLE BYA +BC68 ; LV # Lo HANGUL SYLLABLE BYAE +BC84 ; LV # Lo HANGUL SYLLABLE BEO +BCA0 ; LV # Lo HANGUL SYLLABLE BE +BCBC ; LV # Lo HANGUL SYLLABLE BYEO +BCD8 ; LV # Lo HANGUL SYLLABLE BYE +BCF4 ; LV # Lo HANGUL SYLLABLE BO +BD10 ; LV # Lo HANGUL SYLLABLE BWA +BD2C ; LV # Lo HANGUL SYLLABLE BWAE +BD48 ; LV # Lo HANGUL SYLLABLE BOE +BD64 ; LV # Lo HANGUL SYLLABLE BYO +BD80 ; LV # Lo HANGUL SYLLABLE BU +BD9C ; LV # Lo HANGUL SYLLABLE BWEO +BDB8 ; LV # Lo HANGUL SYLLABLE BWE +BDD4 ; LV # Lo HANGUL SYLLABLE BWI +BDF0 ; LV # Lo HANGUL SYLLABLE BYU +BE0C ; LV # Lo HANGUL SYLLABLE BEU +BE28 ; LV # Lo HANGUL SYLLABLE BYI +BE44 ; LV # Lo HANGUL SYLLABLE BI +BE60 ; LV # Lo HANGUL SYLLABLE BBA +BE7C ; LV # Lo HANGUL SYLLABLE BBAE +BE98 ; LV # Lo HANGUL SYLLABLE BBYA +BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE +BED0 ; LV # Lo HANGUL SYLLABLE BBEO +BEEC ; LV # Lo HANGUL SYLLABLE BBE +BF08 ; LV # Lo HANGUL SYLLABLE BBYEO +BF24 ; LV # Lo HANGUL SYLLABLE BBYE +BF40 ; LV # Lo HANGUL SYLLABLE BBO +BF5C ; LV # Lo HANGUL SYLLABLE BBWA +BF78 ; LV # Lo HANGUL SYLLABLE BBWAE +BF94 ; LV # Lo HANGUL SYLLABLE BBOE +BFB0 ; LV # Lo HANGUL SYLLABLE BBYO +BFCC ; LV # Lo HANGUL SYLLABLE BBU +BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO +C004 ; LV # Lo HANGUL SYLLABLE BBWE +C020 ; LV # Lo HANGUL SYLLABLE BBWI +C03C ; LV # Lo HANGUL SYLLABLE BBYU +C058 ; LV # Lo HANGUL SYLLABLE BBEU +C074 ; LV # Lo HANGUL SYLLABLE BBYI +C090 ; LV # Lo HANGUL SYLLABLE BBI +C0AC ; LV # Lo HANGUL SYLLABLE SA +C0C8 ; LV # Lo HANGUL SYLLABLE SAE +C0E4 ; LV # Lo HANGUL SYLLABLE SYA +C100 ; LV # Lo HANGUL SYLLABLE SYAE +C11C ; LV # Lo HANGUL SYLLABLE SEO +C138 ; LV # Lo HANGUL SYLLABLE SE +C154 ; LV # Lo HANGUL SYLLABLE SYEO +C170 ; LV # Lo HANGUL SYLLABLE SYE +C18C ; LV # Lo HANGUL SYLLABLE SO +C1A8 ; LV # Lo HANGUL SYLLABLE SWA +C1C4 ; LV # Lo HANGUL SYLLABLE SWAE +C1E0 ; LV # Lo HANGUL SYLLABLE SOE +C1FC ; LV # Lo HANGUL SYLLABLE SYO +C218 ; LV # Lo HANGUL SYLLABLE SU +C234 ; LV # Lo HANGUL SYLLABLE SWEO +C250 ; LV # Lo HANGUL SYLLABLE SWE +C26C ; LV # Lo HANGUL SYLLABLE SWI +C288 ; LV # Lo HANGUL SYLLABLE SYU +C2A4 ; LV # Lo HANGUL SYLLABLE SEU +C2C0 ; LV # Lo HANGUL SYLLABLE SYI +C2DC ; LV # Lo HANGUL SYLLABLE SI +C2F8 ; LV # Lo HANGUL SYLLABLE SSA +C314 ; LV # Lo HANGUL SYLLABLE SSAE +C330 ; LV # Lo HANGUL SYLLABLE SSYA +C34C ; LV # Lo HANGUL SYLLABLE SSYAE +C368 ; LV # Lo HANGUL SYLLABLE SSEO +C384 ; LV # Lo HANGUL SYLLABLE SSE +C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO +C3BC ; LV # Lo HANGUL SYLLABLE SSYE +C3D8 ; LV # Lo HANGUL SYLLABLE SSO +C3F4 ; LV # Lo HANGUL SYLLABLE SSWA +C410 ; LV # Lo HANGUL SYLLABLE SSWAE +C42C ; LV # Lo HANGUL SYLLABLE SSOE +C448 ; LV # Lo HANGUL SYLLABLE SSYO +C464 ; LV # Lo HANGUL SYLLABLE SSU +C480 ; LV # Lo HANGUL SYLLABLE SSWEO +C49C ; LV # Lo HANGUL SYLLABLE SSWE +C4B8 ; LV # Lo HANGUL SYLLABLE SSWI +C4D4 ; LV # Lo HANGUL SYLLABLE SSYU +C4F0 ; LV # Lo HANGUL SYLLABLE SSEU +C50C ; LV # Lo HANGUL SYLLABLE SSYI +C528 ; LV # Lo HANGUL SYLLABLE SSI +C544 ; LV # Lo HANGUL SYLLABLE A +C560 ; LV # Lo HANGUL SYLLABLE AE +C57C ; LV # Lo HANGUL SYLLABLE YA +C598 ; LV # Lo HANGUL SYLLABLE YAE +C5B4 ; LV # Lo HANGUL SYLLABLE EO +C5D0 ; LV # Lo HANGUL SYLLABLE E +C5EC ; LV # Lo HANGUL SYLLABLE YEO +C608 ; LV # Lo HANGUL SYLLABLE YE +C624 ; LV # Lo HANGUL SYLLABLE O +C640 ; LV # Lo HANGUL SYLLABLE WA +C65C ; LV # Lo HANGUL SYLLABLE WAE +C678 ; LV # Lo HANGUL SYLLABLE OE +C694 ; LV # Lo HANGUL SYLLABLE YO +C6B0 ; LV # Lo HANGUL SYLLABLE U +C6CC ; LV # Lo HANGUL SYLLABLE WEO +C6E8 ; LV # Lo HANGUL SYLLABLE WE +C704 ; LV # Lo HANGUL SYLLABLE WI +C720 ; LV # Lo HANGUL SYLLABLE YU +C73C ; LV # Lo HANGUL SYLLABLE EU +C758 ; LV # Lo HANGUL SYLLABLE YI +C774 ; LV # Lo HANGUL SYLLABLE I +C790 ; LV # Lo HANGUL SYLLABLE JA +C7AC ; LV # Lo HANGUL SYLLABLE JAE +C7C8 ; LV # Lo HANGUL SYLLABLE JYA +C7E4 ; LV # Lo HANGUL SYLLABLE JYAE +C800 ; LV # Lo HANGUL SYLLABLE JEO +C81C ; LV # Lo HANGUL SYLLABLE JE +C838 ; LV # Lo HANGUL SYLLABLE JYEO +C854 ; LV # Lo HANGUL SYLLABLE JYE +C870 ; LV # Lo HANGUL SYLLABLE JO +C88C ; LV # Lo HANGUL SYLLABLE JWA +C8A8 ; LV # Lo HANGUL SYLLABLE JWAE +C8C4 ; LV # Lo HANGUL SYLLABLE JOE +C8E0 ; LV # Lo HANGUL SYLLABLE JYO +C8FC ; LV # Lo HANGUL SYLLABLE JU +C918 ; LV # Lo HANGUL SYLLABLE JWEO +C934 ; LV # Lo HANGUL SYLLABLE JWE +C950 ; LV # Lo HANGUL SYLLABLE JWI +C96C ; LV # Lo HANGUL SYLLABLE JYU +C988 ; LV # Lo HANGUL SYLLABLE JEU +C9A4 ; LV # Lo HANGUL SYLLABLE JYI +C9C0 ; LV # Lo HANGUL SYLLABLE JI +C9DC ; LV # Lo HANGUL SYLLABLE JJA +C9F8 ; LV # Lo HANGUL SYLLABLE JJAE +CA14 ; LV # Lo HANGUL SYLLABLE JJYA +CA30 ; LV # Lo HANGUL SYLLABLE JJYAE +CA4C ; LV # Lo HANGUL SYLLABLE JJEO +CA68 ; LV # Lo HANGUL SYLLABLE JJE +CA84 ; LV # Lo HANGUL SYLLABLE JJYEO +CAA0 ; LV # Lo HANGUL SYLLABLE JJYE +CABC ; LV # Lo HANGUL SYLLABLE JJO +CAD8 ; LV # Lo HANGUL SYLLABLE JJWA +CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE +CB10 ; LV # Lo HANGUL SYLLABLE JJOE +CB2C ; LV # Lo HANGUL SYLLABLE JJYO +CB48 ; LV # Lo HANGUL SYLLABLE JJU +CB64 ; LV # Lo HANGUL SYLLABLE JJWEO +CB80 ; LV # Lo HANGUL SYLLABLE JJWE +CB9C ; LV # Lo HANGUL SYLLABLE JJWI +CBB8 ; LV # Lo HANGUL SYLLABLE JJYU +CBD4 ; LV # Lo HANGUL SYLLABLE JJEU +CBF0 ; LV # Lo HANGUL SYLLABLE JJYI +CC0C ; LV # Lo HANGUL SYLLABLE JJI +CC28 ; LV # Lo HANGUL SYLLABLE CA +CC44 ; LV # Lo HANGUL SYLLABLE CAE +CC60 ; LV # Lo HANGUL SYLLABLE CYA +CC7C ; LV # Lo HANGUL SYLLABLE CYAE +CC98 ; LV # Lo HANGUL SYLLABLE CEO +CCB4 ; LV # Lo HANGUL SYLLABLE CE +CCD0 ; LV # Lo HANGUL SYLLABLE CYEO +CCEC ; LV # Lo HANGUL SYLLABLE CYE +CD08 ; LV # Lo HANGUL SYLLABLE CO +CD24 ; LV # Lo HANGUL SYLLABLE CWA +CD40 ; LV # Lo HANGUL SYLLABLE CWAE +CD5C ; LV # Lo HANGUL SYLLABLE COE +CD78 ; LV # Lo HANGUL SYLLABLE CYO +CD94 ; LV # Lo HANGUL SYLLABLE CU +CDB0 ; LV # Lo HANGUL SYLLABLE CWEO +CDCC ; LV # Lo HANGUL SYLLABLE CWE +CDE8 ; LV # Lo HANGUL SYLLABLE CWI +CE04 ; LV # Lo HANGUL SYLLABLE CYU +CE20 ; LV # Lo HANGUL SYLLABLE CEU +CE3C ; LV # Lo HANGUL SYLLABLE CYI +CE58 ; LV # Lo HANGUL SYLLABLE CI +CE74 ; LV # Lo HANGUL SYLLABLE KA +CE90 ; LV # Lo HANGUL SYLLABLE KAE +CEAC ; LV # Lo HANGUL SYLLABLE KYA +CEC8 ; LV # Lo HANGUL SYLLABLE KYAE +CEE4 ; LV # Lo HANGUL SYLLABLE KEO +CF00 ; LV # Lo HANGUL SYLLABLE KE +CF1C ; LV # Lo HANGUL SYLLABLE KYEO +CF38 ; LV # Lo HANGUL SYLLABLE KYE +CF54 ; LV # Lo HANGUL SYLLABLE KO +CF70 ; LV # Lo HANGUL SYLLABLE KWA +CF8C ; LV # Lo HANGUL SYLLABLE KWAE +CFA8 ; LV # Lo HANGUL SYLLABLE KOE +CFC4 ; LV # Lo HANGUL SYLLABLE KYO +CFE0 ; LV # Lo HANGUL SYLLABLE KU +CFFC ; LV # Lo HANGUL SYLLABLE KWEO +D018 ; LV # Lo HANGUL SYLLABLE KWE +D034 ; LV # Lo HANGUL SYLLABLE KWI +D050 ; LV # Lo HANGUL SYLLABLE KYU +D06C ; LV # Lo HANGUL SYLLABLE KEU +D088 ; LV # Lo HANGUL SYLLABLE KYI +D0A4 ; LV # Lo HANGUL SYLLABLE KI +D0C0 ; LV # Lo HANGUL SYLLABLE TA +D0DC ; LV # Lo HANGUL SYLLABLE TAE +D0F8 ; LV # Lo HANGUL SYLLABLE TYA +D114 ; LV # Lo HANGUL SYLLABLE TYAE +D130 ; LV # Lo HANGUL SYLLABLE TEO +D14C ; LV # Lo HANGUL SYLLABLE TE +D168 ; LV # Lo HANGUL SYLLABLE TYEO +D184 ; LV # Lo HANGUL SYLLABLE TYE +D1A0 ; LV # Lo HANGUL SYLLABLE TO +D1BC ; LV # Lo HANGUL SYLLABLE TWA +D1D8 ; LV # Lo HANGUL SYLLABLE TWAE +D1F4 ; LV # Lo HANGUL SYLLABLE TOE +D210 ; LV # Lo HANGUL SYLLABLE TYO +D22C ; LV # Lo HANGUL SYLLABLE TU +D248 ; LV # Lo HANGUL SYLLABLE TWEO +D264 ; LV # Lo HANGUL SYLLABLE TWE +D280 ; LV # Lo HANGUL SYLLABLE TWI +D29C ; LV # Lo HANGUL SYLLABLE TYU +D2B8 ; LV # Lo HANGUL SYLLABLE TEU +D2D4 ; LV # Lo HANGUL SYLLABLE TYI +D2F0 ; LV # Lo HANGUL SYLLABLE TI +D30C ; LV # Lo HANGUL SYLLABLE PA +D328 ; LV # Lo HANGUL SYLLABLE PAE +D344 ; LV # Lo HANGUL SYLLABLE PYA +D360 ; LV # Lo HANGUL SYLLABLE PYAE +D37C ; LV # Lo HANGUL SYLLABLE PEO +D398 ; LV # Lo HANGUL SYLLABLE PE +D3B4 ; LV # Lo HANGUL SYLLABLE PYEO +D3D0 ; LV # Lo HANGUL SYLLABLE PYE +D3EC ; LV # Lo HANGUL SYLLABLE PO +D408 ; LV # Lo HANGUL SYLLABLE PWA +D424 ; LV # Lo HANGUL SYLLABLE PWAE +D440 ; LV # Lo HANGUL SYLLABLE POE +D45C ; LV # Lo HANGUL SYLLABLE PYO +D478 ; LV # Lo HANGUL SYLLABLE PU +D494 ; LV # Lo HANGUL SYLLABLE PWEO +D4B0 ; LV # Lo HANGUL SYLLABLE PWE +D4CC ; LV # Lo HANGUL SYLLABLE PWI +D4E8 ; LV # Lo HANGUL SYLLABLE PYU +D504 ; LV # Lo HANGUL SYLLABLE PEU +D520 ; LV # Lo HANGUL SYLLABLE PYI +D53C ; LV # Lo HANGUL SYLLABLE PI +D558 ; LV # Lo HANGUL SYLLABLE HA +D574 ; LV # Lo HANGUL SYLLABLE HAE +D590 ; LV # Lo HANGUL SYLLABLE HYA +D5AC ; LV # Lo HANGUL SYLLABLE HYAE +D5C8 ; LV # Lo HANGUL SYLLABLE HEO +D5E4 ; LV # Lo HANGUL SYLLABLE HE +D600 ; LV # Lo HANGUL SYLLABLE HYEO +D61C ; LV # Lo HANGUL SYLLABLE HYE +D638 ; LV # Lo HANGUL SYLLABLE HO +D654 ; LV # Lo HANGUL SYLLABLE HWA +D670 ; LV # Lo HANGUL SYLLABLE HWAE +D68C ; LV # Lo HANGUL SYLLABLE HOE +D6A8 ; LV # Lo HANGUL SYLLABLE HYO +D6C4 ; LV # Lo HANGUL SYLLABLE HU +D6E0 ; LV # Lo HANGUL SYLLABLE HWEO +D6FC ; LV # Lo HANGUL SYLLABLE HWE +D718 ; LV # Lo HANGUL SYLLABLE HWI +D734 ; LV # Lo HANGUL SYLLABLE HYU +D750 ; LV # Lo HANGUL SYLLABLE HEU +D76C ; LV # Lo HANGUL SYLLABLE HYI +D788 ; LV # Lo HANGUL SYLLABLE HI + +# Total code points: 399 + +# ================================================ + +AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH +AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH +AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH +AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH +AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH +AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH +ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH +ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH +ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH +ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH +AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH +AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH +AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH +AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH +AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH +ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH +ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH +ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH +ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH +AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH +AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH +AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH +AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH +AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH +AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH +AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH +AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH +AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH +AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH +AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH +AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH +AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH +AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH +AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH +AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH +AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH +AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH +B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH +B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH +B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH +B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH +B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH +B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH +B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH +B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH +B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH +B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH +B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH +B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH +B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH +B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH +B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH +B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH +B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH +B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH +B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH +B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH +B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH +B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH +B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH +B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH +B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH +B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH +B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH +B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH +B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH +B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH +B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH +B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH +B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH +B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH +B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH +B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH +B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH +B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH +B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH +B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH +B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH +B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH +B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH +B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH +B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH +B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH +B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH +B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH +B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH +B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH +B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH +B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH +B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH +B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH +B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH +B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH +B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH +B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH +B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH +B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH +B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH +B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH +B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH +B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH +B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH +B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH +B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH +B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH +B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH +B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH +B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH +B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH +B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH +B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH +B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH +B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH +B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH +B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH +B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH +B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH +B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH +B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH +B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH +B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH +B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH +B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH +B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH +B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH +B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH +B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH +B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH +BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH +BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH +BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH +BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH +BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH +BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH +BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH +BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH +BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH +BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH +BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH +BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH +BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH +BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH +BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH +BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH +BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH +BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH +BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH +BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH +BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH +BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH +BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH +BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH +BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH +BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH +BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH +BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH +BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH +BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH +BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH +BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH +BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH +BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH +BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH +BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH +BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH +BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH +BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH +BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH +BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH +BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH +BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH +BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH +BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH +BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH +BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH +BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH +BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH +BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH +BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH +BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH +BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH +BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH +BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH +C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH +C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH +C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH +C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH +C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH +C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH +C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH +C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH +C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH +C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH +C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH +C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH +C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH +C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH +C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH +C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH +C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH +C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH +C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH +C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH +C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH +C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH +C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH +C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH +C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH +C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH +C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH +C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH +C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH +C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH +C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH +C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH +C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH +C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH +C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH +C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH +C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH +C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH +C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH +C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH +C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH +C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH +C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH +C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH +C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH +C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH +C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH +C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH +C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH +C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH +C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH +C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH +C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH +C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH +C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH +C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH +C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH +C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH +C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH +C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH +C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH +C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH +C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH +C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH +C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH +C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH +C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH +C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH +C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH +C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH +C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH +C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH +C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH +C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH +C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH +C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH +C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH +C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH +C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH +C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH +C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH +C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH +C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH +C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH +C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH +C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH +C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH +C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH +C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH +C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH +C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH +C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH +CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH +CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH +CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH +CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH +CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH +CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH +CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH +CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH +CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH +CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH +CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH +CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH +CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH +CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH +CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH +CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH +CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH +CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH +CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH +CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH +CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH +CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH +CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH +CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH +CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH +CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH +CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH +CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH +CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH +CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH +CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH +CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH +CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH +CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH +CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH +CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH +CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH +CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH +CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH +CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH +CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH +CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH +CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH +CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH +CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH +CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH +CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH +CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH +CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH +CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH +CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH +CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH +CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH +CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH +CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH +D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH +D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH +D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH +D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH +D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH +D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH +D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH +D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH +D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH +D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH +D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH +D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH +D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH +D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH +D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH +D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH +D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH +D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH +D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH +D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH +D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH +D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH +D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH +D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH +D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH +D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH +D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH +D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH +D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH +D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH +D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH +D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH +D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH +D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH +D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH +D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH +D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH +D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH +D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH +D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH +D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH +D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH +D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH +D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH +D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH +D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH +D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH +D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH +D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH +D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH +D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH +D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH +D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH +D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH +D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH +D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH +D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH +D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH +D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH +D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH +D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH +D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH +D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH +D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH +D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH +D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH +D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH +D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH +D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH + +# Total code points: 10773 + +# ================================================ + +200D ; ZWJ # Cf ZERO WIDTH JOINER + +# Total code points: 1 + +# EOF diff --git a/texmf/tex/generic/unicode-data/LineBreak.txt b/texmf/tex/generic/unicode-data/LineBreak.txt index 9728582ab..aa5985b8f 100644 --- a/texmf/tex/generic/unicode-data/LineBreak.txt +++ b/texmf/tex/generic/unicode-data/LineBreak.txt @@ -1,11 +1,11 @@ -# LineBreak-12.1.0.txt -# Date: 2019-03-31, 22:04:15 GMT [KW, LI] -# © 2019 Unicode®, Inc. +# LineBreak-14.0.0.txt +# Date: 2021-07-06, 09:58:55 GMT [KW, LI] +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Line_Break Property # @@ -32,9 +32,10 @@ # outside of allocated blocks, default to "ID": # Plane 2: U+20000..U+2FFFD # Plane 3: U+30000..U+3FFFD -# - All unassigned code points in the following Plane 1 range, whether +# - All unassigned code points in the following Plane 1 ranges, whether # inside or outside of allocated blocks, also default to "ID": -# Plane 1 range: U+1F000..U+1FFFD +# Plane 1 range: U+1F000..U+1FAFF +# Plane 1 range: U+1FC00..U+1FFFD # - The unassigned code points in the following block default to "PR": # Currency Symbols: U+20A0..U+20CF # @@ -48,7 +49,7 @@ # with ranges of code points, the code point count in square brackets. # # For more information, see UAX #14: Unicode Line Breaking Algorithm, -# at http://www.unicode.org/reports/tr14/ +# at https://www.unicode.org/reports/tr14/ # # @missing: 0000..10FFFF; XX 0000..0008;CM # Cc [9] .. @@ -214,7 +215,7 @@ 0610..061A;CM # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 061B;EX # Po ARABIC SEMICOLON 061C;CM # Cf ARABIC LETTER MARK -061E..061F;EX # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK +061D..061F;EX # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK 0620..063F;AL # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640;AL # Lm ARABIC TATWEEL 0641..064A;AL # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH @@ -276,9 +277,14 @@ 0859..085B;CM # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 085E;AL # Po MANDAIC PUNCTUATION 0860..086A;AL # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4;AL # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08BD;AL # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -08D3..08E1;CM # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0870..0887;AL # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0888;AL # Sk ARABIC RAISED ROUND DOT +0889..088E;AL # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0890..0891;AL # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +0898..089F;CM # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08A0..08C8;AL # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9;AL # Lm ARABIC SMALL FARSI YEH +08CA..08E1;CM # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E2;AL # Cf ARABIC DISPUTED END OF AYAH 08E3..08FF;CM # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA 0900..0902;CM # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA @@ -396,7 +402,7 @@ 0B47..0B48;CM # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C;CM # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B4D;CM # Mn ORIYA SIGN VIRAMA -0B56;CM # Mn ORIYA AI LENGTH MARK +0B55..0B56;CM # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK 0B57;CM # Mc ORIYA AU LENGTH MARK 0B5C..0B5D;AL # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61;AL # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL @@ -436,6 +442,7 @@ 0C0E..0C10;AL # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28;AL # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39;AL # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3C;CM # Mn TELUGU SIGN NUKTA 0C3D;AL # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40;CM # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44;CM # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR @@ -443,6 +450,7 @@ 0C4A..0C4D;CM # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56;CM # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A;AL # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D;AL # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61;AL # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63;CM # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F;NU # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -468,14 +476,14 @@ 0CCA..0CCB;CM # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD;CM # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6;CM # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE;AL # Lo KANNADA LETTER FA +0CDD..0CDE;AL # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1;AL # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3;CM # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF;NU # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2;AL # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D00..0D01;CM # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03;CM # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C;AL # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L +0D04..0D0C;AL # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L 0D0E..0D10;AL # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A;AL # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3B..0D3C;CM # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA @@ -496,6 +504,7 @@ 0D70..0D78;AL # No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS 0D79;PO # So MALAYALAM DATE MARK 0D7A..0D7F;AL # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K +0D81;CM # Mn SINHALA SIGN CANDRABINDU 0D82..0D83;CM # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96;AL # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1;AL # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA @@ -670,11 +679,13 @@ 16EB..16ED;BA # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION 16EE..16F0;AL # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8;AL # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C;AL # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711;AL # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711;AL # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1714;CM # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +1715;CM # Mc TAGALOG SIGN PAMUDPOD +171F;AL # Lo TAGALOG LETTER ARCHAIC RA 1720..1731;AL # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734;CM # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1732..1733;CM # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734;CM # Mc HANUNOO SIGN PAMUDPOD 1735..1736;BA # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION 1740..1751;AL # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753;CM # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U @@ -709,6 +720,7 @@ 180A;AL # Po MONGOLIAN NIRUGU 180B..180D;CM # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E;GL # Cf MONGOLIAN VOWEL SEPARATOR +180F;CM # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1810..1819;NU # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842;AL # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843;AL # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN @@ -764,6 +776,7 @@ 1AA8..1AAD;SA # Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG 1AB0..1ABD;CM # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE;CM # Me COMBINING PARENTHESES OVERLAY +1ABF..1ACE;CM # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03;CM # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04;CM # Mc BALINESE SIGN BISAH 1B05..1B33;AL # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA @@ -775,7 +788,7 @@ 1B3D..1B41;CM # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42;CM # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44;CM # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B;AL # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C;AL # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B50..1B59;NU # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B5A..1B5B;BA # Po [2] BALINESE PANTI..BALINESE PAMADA 1B5C;AL # Po BALINESE WINDU @@ -783,6 +796,7 @@ 1B61..1B6A;AL # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE 1B6B..1B73;CM # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B74..1B7C;AL # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING +1B7D..1B7E;BA # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG 1B80..1B81;CM # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82;CM # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0;AL # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA @@ -841,8 +855,7 @@ 1D79..1D7F;AL # Ll [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE 1D80..1D9A;AL # Ll [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF;AL # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DF9;CM # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF;CM # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF;CM # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1EFF;AL # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP 1F00..1F15;AL # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D;AL # Lu [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA @@ -950,7 +963,8 @@ 20BC..20BD;PR # Sc [2] MANAT SIGN..RUBLE SIGN 20BE;PO # Sc LARI SIGN 20BF;PR # Sc BITCOIN SIGN -20C0..20CF;PR # Cn [16] .. +20C0;PO # Sc SOM SIGN +20C1..20CF;PR # Cn [15] .. 20D0..20DC;CM # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0;CM # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E1;CM # Mn COMBINING LEFT RIGHT ARROW ABOVE @@ -1303,9 +1317,8 @@ 2B55..2B59;AI # So [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE 2B5A..2B73;AL # So [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95;AL # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW -2B98..2BFF;AL # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL -2C00..2C2E;AL # Lu [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E;AL # Ll [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2B97..2BFF;AL # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL +2C00..2C5F;AL # L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C60..2C7B;AL # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D;AL # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2C7F;AL # Lu [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL @@ -1385,6 +1398,18 @@ 2E4C;BA # Po MEDIEVAL COMMA 2E4D;AL # Po PARAGRAPHUS MARK 2E4E..2E4F;BA # Po [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER +2E50..2E51;AL # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR +2E52;AL # Po TIRONIAN SIGN CAPITAL ET +2E53..2E54;EX # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK +2E55;OP # Ps LEFT SQUARE BRACKET WITH STROKE +2E56;CL # Pe RIGHT SQUARE BRACKET WITH STROKE +2E57;OP # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58;CL # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59;OP # Ps TOP HALF LEFT PARENTHESIS +2E5A;CL # Pe TOP HALF RIGHT PARENTHESIS +2E5B;OP # Ps BOTTOM HALF LEFT PARENTHESIS +2E5C;CL # Pe BOTTOM HALF RIGHT PARENTHESIS +2E5D;BA # Pd OBLIQUE HYPHEN 2E80..2E99;ID # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9B..2EF3;ID # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE 2F00..2FD5;ID # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE @@ -1488,7 +1513,7 @@ 3190..3191;ID # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK 3192..3195;ID # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK 3196..319F;ID # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK -31A0..31BA;ID # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY +31A0..31BF;ID # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31C0..31E3;ID # So [36] CJK STROKE T..CJK STROKE Q 31F0..31FF;CJ # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3200..321E;ID # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU @@ -1503,11 +1528,9 @@ 32B1..32BF;ID # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY 32C0..32FF;ID # So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA 3300..33FF;ID # So [256] SQUARE APAATO..SQUARE GAL -3400..4DB5;ID # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4DB6..4DBF;ID # Cn [10] .. +3400..4DBF;ID # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF 4DC0..4DFF;AL # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -4E00..9FEF;ID # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF -9FF0..9FFF;ID # Cn [16] .. +4E00..9FFF;ID # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF A000..A014;ID # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015;NS # Lm YI SYLLABLE WU A016..A48C;ID # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR @@ -1549,8 +1572,12 @@ A788;AL # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A;AL # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A78B..A78E;AL # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F;AL # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF;AL # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7C6;AL # L& [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK +A790..A7CA;AL # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7D0..A7D1;AL # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3;AL # Ll LATIN SMALL LETTER DOUBLE THORN +A7D5..A7D9;AL # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S +A7F2..A7F4;AL # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q +A7F5..A7F6;AL # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7;AL # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9;AL # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA;AL # Ll LATIN LETTER SMALL CAPITAL TURNED M @@ -1566,6 +1593,7 @@ A823..A824;CM # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIG A825..A826;CM # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827;CM # Mc SYLOTI NAGRI VOWEL SIGN OO A828..A82B;AL # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 +A82C;CM # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA A830..A835;AL # No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS A836..A837;AL # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK A838;PO # Sc NORTH INDIC RUPEE MARK @@ -1670,7 +1698,9 @@ AB28..AB2E;AL # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A;AL # Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5B;AL # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F;AL # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB60..AB67;AL # Ll [8] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK +AB60..AB68;AL # Ll [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69;AL # Lm MODIFIER LETTER SMALL TURNED W +AB6A..AB6B;AL # Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK AB70..ABBF;AL # Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2;AL # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4;CM # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP @@ -2503,15 +2533,17 @@ FB40..FB41;HL # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAME FB43..FB44;HL # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FB4F;HL # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED FB50..FBB1;AL # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBB2..FBC1;AL # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW +FBB2..FBC2;AL # Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE FBD3..FD3D;AL # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD3E;CL # Pe ORNATE LEFT PARENTHESIS FD3F;OP # Ps ORNATE RIGHT PARENTHESIS +FD40..FD4F;AL # So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH FD50..FD8F;AL # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7;AL # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDCF;AL # So ARABIC LIGATURE SALAAMUHU ALAYNAA FDF0..FDFB;AL # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FDFC;PO # Sc RIAL SIGN -FDFD;AL # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM +FDFD..FDFF;AL # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL FE00..FE0F;CM # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE10;IS # Po PRESENTATION FORM FOR VERTICAL COMMA FE11..FE12;CL # Po [2] PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP @@ -2642,7 +2674,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 10179..10189;AL # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN 1018A..1018B;AL # No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN 1018C..1018E;AL # So [3] GREEK SINUSOID SIGN..NOMISMA SIGN -10190..1019B;AL # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN +10190..1019C;AL # So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL 101A0;AL # So GREEK SYMBOL TAU RHO 101D0..101FC;AL # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND 101FD;CM # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE @@ -2674,9 +2706,20 @@ FFFD;AI # So REPLACEMENT CHARACTER 10500..10527;AL # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563;AL # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 1056F;AL # Po CAUCASIAN ALBANIAN CITATION MARK +10570..1057A;AL # Lu [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A;AL # Lu [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592;AL # Lu [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595;AL # Lu [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1;AL # Ll [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1;AL # Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9;AL # Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC;AL # Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10600..10736;AL # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755;AL # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767;AL # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785;AL # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0;AL # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA;AL # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805;AL # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808;AL # Lo CYPRIOT SYLLABLE JO 1080A..10835;AL # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -2746,6 +2789,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 10D24..10D27;CM # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10D30..10D39;NU # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE 10E60..10E7E;AL # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS +10E80..10EA9;AL # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET +10EAB..10EAC;CM # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10EAD;BA # Pd YEZIDI HYPHENATION MARK +10EB0..10EB1;AL # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE 10F00..10F1C;AL # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F1D..10F26;AL # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF 10F27;AL # Lo OLD SOGDIAN LIGATURE AYIN-DALETH @@ -2753,6 +2800,11 @@ FFFD;AI # So REPLACEMENT CHARACTER 10F46..10F50;CM # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW 10F51..10F54;AL # No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED 10F55..10F59;AL # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10F70..10F81;AL # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10F82..10F85;CM # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +10F86..10F89;AL # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS +10FB0..10FC4;AL # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW +10FC5..10FCB;AL # No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED 10FE0..10FF6;AL # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000;CM # Mc BRAHMI SIGN CANDRABINDU 11001;CM # Mn BRAHMI SIGN ANUSVARA @@ -2763,6 +2815,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 11049..1104D;AL # Po [5] BRAHMI PUNCTUATION DOT..BRAHMI PUNCTUATION LOTUS 11052..11065;AL # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND 11066..1106F;NU # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +11070;CM # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11071..11072;AL # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074;CM # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075;AL # Lo BRAHMI LETTER OLD TAMIL LLA 1107F;CM # Mn BRAHMI NUMBER JOINER 11080..11081;CM # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11082;CM # Mc KAITHI SIGN VISARGA @@ -2774,6 +2830,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 110BB..110BC;AL # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BD;AL # Cf KAITHI NUMBER SIGN 110BE..110C1;BA # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA +110C2;CM # Mn KAITHI VOWEL SIGN VOCALIC R 110CD;AL # Cf KAITHI NUMBER SIGN ABOVE 110D0..110E8;AL # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9;NU # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE @@ -2786,6 +2843,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 11140..11143;BA # Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK 11144;AL # Lo CHAKMA LETTER LHAA 11145..11146;CM # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI +11147;AL # Lo CHAKMA LETTER VAA 11150..11172;AL # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11173;CM # Mn MAHAJANI SIGN NUKTA 11174;AL # Po MAHAJANI ABBREVIATION SIGN @@ -2803,6 +2861,8 @@ FFFD;AI # So REPLACEMENT CHARACTER 111C8;BA # Po SHARADA SEPARATOR 111C9..111CC;CM # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111CD;AL # Po SHARADA SUTRA MARK +111CE;CM # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +111CF;CM # Mn SHARADA SIGN INVERTED CANDRABINDU 111D0..111D9;NU # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA;AL # Lo SHARADA EKAM 111DB;BB # Po SHARADA SIGN SIDDHAM @@ -2865,10 +2925,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 1144B..1144E;BA # Po [4] NEWA DANDA..NEWA GAP FILLER 1144F;AL # Po NEWA ABBREVIATION SIGN 11450..11459;NU # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE -1145B;BA # Po NEWA PLACEHOLDER MARK +1145A..1145B;BA # Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK 1145D;AL # Po NEWA INSERTION SIGN 1145E;CM # Mn NEWA SANDHI MARK -1145F;AL # Lo NEWA LETTER VEDIC ANUSVARA +1145F..11461;AL # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA 11480..114AF;AL # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2;CM # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8;CM # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL @@ -2917,6 +2977,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 116B6;CM # Mc TAKRI SIGN VIRAMA 116B7;CM # Mn TAKRI SIGN NUKTA 116B8;AL # Lo TAKRI LETTER ARCHAIC KHA +116B9;AL # Po TAKRI ABBREVIATION SIGN 116C0..116C9;NU # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11700..1171A;SA # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA 1171D..1171F;SA # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA @@ -2928,6 +2989,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 1173A..1173B;SA # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 1173C..1173E;BA # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1173F;SA # So AHOM SYMBOL VI +11740..11746;SA # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B;AL # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 1182C..1182E;CM # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837;CM # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -2938,6 +3000,23 @@ FFFD;AI # So REPLACEMENT CHARACTER 118E0..118E9;NU # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118EA..118F2;AL # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 118FF;AL # Lo WARANG CITI OM +11900..11906;AL # Lo [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E +11909;AL # Lo DIVES AKURU LETTER O +1190C..11913;AL # Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA +11915..11916;AL # Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA +11918..1192F;AL # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA +11930..11935;CM # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E +11937..11938;CM # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193B..1193C;CM # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +1193D;CM # Mc DIVES AKURU SIGN HALANTA +1193E;CM # Mn DIVES AKURU VIRAMA +1193F;AL # Lo DIVES AKURU PREFIXED NASAL SIGN +11940;CM # Mc DIVES AKURU MEDIAL YA +11941;AL # Lo DIVES AKURU INITIAL RA +11942;CM # Mc DIVES AKURU MEDIAL RA +11943;CM # Mn DIVES AKURU SIGN NUKTA +11944..11946;BA # Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK +11950..11959;NU # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE 119A0..119A7;AL # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR 119AA..119D0;AL # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA 119D1..119D3;CM # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II @@ -2974,6 +3053,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 11A9D;AL # Lo SOYOMBO MARK PLUTA 11A9E..11AA0;BB # Po [3] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO HEAD MARK WITH MOON AND SUN 11AA1..11AA2;BA # Po [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 +11AB0..11ABF;AL # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA 11AC0..11AF8;AL # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08;AL # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E;AL # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA @@ -3021,6 +3101,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 11EF3..11EF4;CM # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6;CM # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O 11EF7..11EF8;AL # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11FB0;AL # Lo LISU LETTER YHA 11FC0..11FD4;AL # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH 11FD5..11FDC;AL # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI 11FDD..11FE0;PO # Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN @@ -3030,6 +3111,8 @@ FFFD;AI # So REPLACEMENT CHARACTER 12400..1246E;AL # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474;BA # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12480..12543;AL # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU +12F90..12FF0;AL # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +12FF1..12FF2;AL # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 13000..13257;AL # Lo [600] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH O006 13258..1325A;OP # Lo [3] EGYPTIAN HIEROGLYPH O006A..EGYPTIAN HIEROGLYPH O006C 1325B..1325D;CL # Lo [3] EGYPTIAN HIEROGLYPH O006D..EGYPTIAN HIEROGLYPH O006F @@ -3055,6 +3138,8 @@ FFFD;AI # So REPLACEMENT CHARACTER 16A40..16A5E;AL # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69;NU # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16A6E..16A6F;BA # Po [2] MRO DANDA..MRO DOUBLE DANDA +16A70..16ABE;AL # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AC0..16AC9;NU # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE 16AD0..16AED;AL # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4;CM # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16AF5;BA # Po BASSA VAH FULL STOP @@ -3083,10 +3168,17 @@ FFFD;AI # So REPLACEMENT CHARACTER 16FE0..16FE1;NS # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK 16FE2;NS # Po OLD CHINESE HOOK MARK 16FE3;NS # Lm OLD CHINESE ITERATION MARK +16FE4;GL # Mn KHITAN SMALL SCRIPT FILLER +16FF0..16FF1;CM # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 17000..187F7;ID # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 -18800..18AF2;ID # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 +18800..18AFF;ID # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 +18B00..18CD5;AL # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 +18D00..18D08;ID # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3;AL # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB;AL # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE;AL # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B0FF;ID # Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 -1B100..1B11E;ID # Lo [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2 +1B100..1B122;ID # Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU 1B150..1B152;CJ # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO 1B164..1B167;CJ # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB;ID # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB @@ -3098,6 +3190,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 1BC9D..1BC9E;CM # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1BC9F;BA # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1BCA0..1BCA3;CM # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1CF00..1CF2D;CM # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46;CM # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG +1CF50..1CFC3;AL # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK 1D000..1D0F5;AL # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126;AL # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D129..1D164;AL # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE @@ -3111,7 +3206,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 1D185..1D18B;CM # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D18C..1D1A9;AL # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D1AA..1D1AD;CM # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE..1D1E8;AL # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN +1D1AE..1D1EA;AL # So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON 1D200..1D241;AL # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244;CM # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245;AL # So GREEK MUSICAL LEIMMA @@ -3172,6 +3267,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 1DA8B;AL # Po SIGNWRITING PARENTHESIS 1DA9B..1DA9F;CM # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF;CM # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1DF00..1DF09;AL # Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A;AL # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E;AL # Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL 1E000..1E006;CM # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018;CM # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021;CM # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI @@ -3183,10 +3281,16 @@ FFFD;AI # So REPLACEMENT CHARACTER 1E140..1E149;NU # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E14E;AL # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E14F;AL # So NYIAKENG PUACHUE HMONG CIRCLED CA +1E290..1E2AD;AL # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2AE;CM # Mn TOTO SIGN RISING TONE 1E2C0..1E2EB;AL # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF;CM # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9;NU # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E2FF;PR # Sc WANCHO NGUN SIGN +1E7E0..1E7E6;AL # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB;AL # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE;AL # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE;AL # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4;AL # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8CF;AL # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1E8D0..1E8D6;CM # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS @@ -3250,14 +3354,15 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F0D1..1F0F5;ID # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 1F0F6..1F0FF;ID # Cn [10] .. 1F100..1F10C;AI # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO -1F10D..1F10F;ID # Cn [3] .. +1F10D..1F10F;ID # So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH 1F110..1F12D;AI # So [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD 1F12E..1F12F;AL # So [2] CIRCLED WZ..COPYLEFT SYMBOL 1F130..1F169;AI # So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F16A..1F16C;AL # So [3] RAISED MC SIGN..RAISED MR SIGN -1F16D..1F16F;ID # Cn [3] .. +1F16D..1F16F;ID # So [3] CIRCLED CC..CIRCLED HUMAN FIGURE 1F170..1F1AC;AI # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD -1F1AD..1F1E5;ID # Cn [57] .. +1F1AD;ID # So MASK WORK SYMBOL +1F1AE..1F1E5;ID # Cn [56] .. 1F1E6..1F1FF;RI # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z 1F200..1F202;ID # So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA 1F203..1F20F;ID # Cn [13] .. @@ -3348,19 +3453,21 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F6C0;EB # So BATH 1F6C1..1F6CB;ID # So [11] BATHTUB..COUCH AND LAMP 1F6CC;EB # So SLEEPING ACCOMMODATION -1F6CD..1F6D5;ID # So [9] SHOPPING BAGS..HINDU TEMPLE -1F6D6..1F6DF;ID # Cn [10] .. -1F6E0..1F6EC;ID # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING +1F6CD..1F6D7;ID # So [11] SHOPPING BAGS..ELEVATOR +1F6D8..1F6DC;ID # Cn [5] .. +1F6DD..1F6EC;ID # So [16] PLAYGROUND SLIDE..AIRPLANE ARRIVING 1F6ED..1F6EF;ID # Cn [3] .. -1F6F0..1F6FA;ID # So [11] SATELLITE..AUTO RICKSHAW -1F6FB..1F6FF;ID # Cn [5] .. +1F6F0..1F6FC;ID # So [13] SATELLITE..ROLLER SKATE +1F6FD..1F6FF;ID # Cn [3] .. 1F700..1F773;AL # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F774..1F77F;ID # Cn [12] .. 1F780..1F7D4;AL # So [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR 1F7D5..1F7D8;ID # So [4] CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE 1F7D9..1F7DF;ID # Cn [7] .. 1F7E0..1F7EB;ID # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE -1F7EC..1F7FF;ID # Cn [20] .. +1F7EC..1F7EF;ID # Cn [4] .. +1F7F0;ID # So HEAVY EQUALS SIGN +1F7F1..1F7FF;ID # Cn [15] .. 1F800..1F80B;AL # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F80C..1F80F;ID # Cn [4] .. 1F810..1F847;AL # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW @@ -3370,9 +3477,11 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F860..1F887;AL # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F888..1F88F;ID # Cn [8] .. 1F890..1F8AD;AL # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS -1F8AE..1F8FF;ID # Cn [82] .. +1F8AE..1F8AF;ID # Cn [2] .. +1F8B0..1F8B1;ID # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST +1F8B2..1F8FF;ID # Cn [78] .. 1F900..1F90B;AL # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT -1F90C;ID # Cn +1F90C;EB # So PINCHED FINGERS 1F90D..1F90E;ID # So [2] WHITE HEART..BROWN HEART 1F90F;EB # So PINCHING HAND 1F910..1F917;ID # So [8] ZIPPER-MOUTH FACE..HUGGING FACE @@ -3383,22 +3492,15 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F930..1F939;EB # So [10] PREGNANT WOMAN..JUGGLING 1F93A..1F93B;ID # So [2] FENCER..MODERN PENTATHLON 1F93C..1F93E;EB # So [3] WRESTLERS..HANDBALL -1F93F..1F971;ID # So [51] DIVING MASK..YAWNING FACE -1F972;ID # Cn -1F973..1F976;ID # So [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE -1F977..1F979;ID # Cn [3] .. -1F97A..1F9A2;ID # So [41] FACE WITH PLEADING EYES..SWAN -1F9A3..1F9A4;ID # Cn [2] .. -1F9A5..1F9AA;ID # So [6] SLOTH..OYSTER -1F9AB..1F9AD;ID # Cn [3] .. -1F9AE..1F9B4;ID # So [7] GUIDE DOG..BONE +1F93F..1F976;ID # So [56] DIVING MASK..FREEZING FACE +1F977;EB # So NINJA +1F978..1F9B4;ID # So [61] DISGUISED FACE..BONE 1F9B5..1F9B6;EB # So [2] LEG..FOOT 1F9B7;ID # So TOOTH 1F9B8..1F9B9;EB # So [2] SUPERHERO..SUPERVILLAIN 1F9BA;ID # So SAFETY VEST 1F9BB;EB # So EAR WITH HEARING AID -1F9BC..1F9CA;ID # So [15] MOTORIZED WHEELCHAIR..ICE CUBE -1F9CB..1F9CC;ID # Cn [2] .. +1F9BC..1F9CC;ID # So [17] MOTORIZED WHEELCHAIR..TROLL 1F9CD..1F9CF;EB # So [3] STANDING PERSON..DEAF PERSON 1F9D0;ID # So FACE WITH MONOCLE 1F9D1..1F9DD;EB # So [13] ADULT..ELF @@ -3407,19 +3509,33 @@ FFFD;AI # So REPLACEMENT CHARACTER 1FA54..1FA5F;ID # Cn [12] .. 1FA60..1FA6D;ID # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER 1FA6E..1FA6F;ID # Cn [2] .. -1FA70..1FA73;ID # So [4] BALLET SHOES..SHORTS -1FA74..1FA77;ID # Cn [4] .. -1FA78..1FA7A;ID # So [3] DROP OF BLOOD..STETHOSCOPE -1FA7B..1FA7F;ID # Cn [5] .. -1FA80..1FA82;ID # So [3] YO-YO..PARACHUTE -1FA83..1FA8F;ID # Cn [13] .. -1FA90..1FA95;ID # So [6] RINGED PLANET..BANJO -1FA96..1FAFF;ID # Cn [106] .. -1FB00..1FFFD;ID # Cn [1278] .. -20000..2A6D6;ID # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A6D7..2A6FF;ID # Cn [41] .. -2A700..2B734;ID # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 -2B735..2B73F;ID # Cn [11] .. +1FA70..1FA74;ID # So [5] BALLET SHOES..THONG SANDAL +1FA75..1FA77;ID # Cn [3] .. +1FA78..1FA7C;ID # So [5] DROP OF BLOOD..CRUTCH +1FA7D..1FA7F;ID # Cn [3] .. +1FA80..1FA86;ID # So [7] YO-YO..NESTING DOLLS +1FA87..1FA8F;ID # Cn [9] .. +1FA90..1FAAC;ID # So [29] RINGED PLANET..HAMSA +1FAAD..1FAAF;ID # Cn [3] .. +1FAB0..1FABA;ID # So [11] FLY..NEST WITH EGGS +1FABB..1FABF;ID # Cn [5] .. +1FAC0..1FAC2;ID # So [3] ANATOMICAL HEART..PEOPLE HUGGING +1FAC3..1FAC5;EB # So [3] PREGNANT MAN..PERSON WITH CROWN +1FAC6..1FACF;ID # Cn [10] .. +1FAD0..1FAD9;ID # So [10] BLUEBERRIES..JAR +1FADA..1FADF;ID # Cn [6] .. +1FAE0..1FAE7;ID # So [8] MELTING FACE..BUBBLES +1FAE8..1FAEF;ID # Cn [8] .. +1FAF0..1FAF6;EB # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS +1FAF7..1FAFF;ID # Cn [9] .. +1FB00..1FB92;AL # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK +1FB94..1FBCA;AL # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON +1FBF0..1FBF9;NU # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE +1FC00..1FFFD;ID # Cn [1022] .. +20000..2A6DF;ID # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A6E0..2A6FF;ID # Cn [32] .. +2A700..2B738;ID # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2B739..2B73F;ID # Cn [7] .. 2B740..2B81D;ID # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B81E..2B81F;ID # Cn [2] .. 2B820..2CEA1;ID # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 @@ -3429,7 +3545,8 @@ FFFD;AI # So REPLACEMENT CHARACTER 2F800..2FA1D;ID # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 2FA1E..2FA1F;ID # Cn [2] .. 2FA20..2FFFD;ID # Cn [1502] .. -30000..3FFFD;ID # Cn [65534] .. +30000..3134A;ID # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +3134B..3FFFD;ID # Cn [60595] .. E0001;CM # Cf LANGUAGE TAG E0020..E007F;CM # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF;CM # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 diff --git a/texmf/tex/generic/unicode-data/PropList.txt b/texmf/tex/generic/unicode-data/PropList.txt index 4394602fe..0a5a93468 100644 --- a/texmf/tex/generic/unicode-data/PropList.txt +++ b/texmf/tex/generic/unicode-data/PropList.txt @@ -1,6 +1,6 @@ -# PropList-12.1.0.txt -# Date: 2019-03-10, 10:53:16 GMT -# © 2019 Unicode®, Inc. +# PropList-14.0.0.txt +# Date: 2021-08-12, 23:13:05 GMT +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # @@ -54,6 +54,7 @@ 2E1A ; Dash # Pd HYPHEN WITH DIAERESIS 2E3A..2E3B ; Dash # Pd [2] TWO-EM DASH..THREE-EM DASH 2E40 ; Dash # Pd DOUBLE HYPHEN +2E5D ; Dash # Pd OBLIQUE HYPHEN 301C ; Dash # Pd WAVE DASH 3030 ; Dash # Pd WAVY DASH 30A0 ; Dash # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN @@ -61,8 +62,9 @@ FE31..FE32 ; Dash # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTA FE58 ; Dash # Pd SMALL EM DASH FE63 ; Dash # Pd SMALL HYPHEN-MINUS FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS +10EAD ; Dash # Pd YEZIDI HYPHENATION MARK -# Total code points: 28 +# Total code points: 30 # ================================================ @@ -125,7 +127,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET 05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ 060C ; Terminal_Punctuation # Po ARABIC COMMA 061B ; Terminal_Punctuation # Po ARABIC SEMICOLON -061E..061F ; Terminal_Punctuation # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK +061D..061F ; Terminal_Punctuation # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK 06D4 ; Terminal_Punctuation # Po ARABIC FULL STOP 0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION 070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS @@ -149,6 +151,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET 1AA8..1AAB ; Terminal_Punctuation # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU 1B5A..1B5B ; Terminal_Punctuation # Po [2] BALINESE PANTI..BALINESE PAMADA 1B5D..1B5F ; Terminal_Punctuation # Po [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN +1B7D..1B7E ; Terminal_Punctuation # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG 1C3B..1C3F ; Terminal_Punctuation # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK 1C7E..1C7F ; Terminal_Punctuation # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD 203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG @@ -158,6 +161,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET 2E41 ; Terminal_Punctuation # Po REVERSED COMMA 2E4C ; Terminal_Punctuation # Po MEDIEVAL COMMA 2E4E..2E4F ; Terminal_Punctuation # Po [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER +2E53..2E54 ; Terminal_Punctuation # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK 3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP A4FE..A4FF ; Terminal_Punctuation # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP A60D..A60F ; Terminal_Punctuation # Po [3] VAI COMMA..VAI QUESTION MARK @@ -188,6 +192,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 10B3A..10B3F ; Terminal_Punctuation # Po [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION 10B99..10B9C ; Terminal_Punctuation # Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT 10F55..10F59 ; Terminal_Punctuation # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10F86..10F89 ; Terminal_Punctuation # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS 11047..1104D ; Terminal_Punctuation # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS 110BE..110C1 ; Terminal_Punctuation # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA 11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK @@ -197,11 +202,13 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK 112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK 1144B..1144D ; Terminal_Punctuation # Po [3] NEWA DANDA..NEWA COMMA -1145B ; Terminal_Punctuation # Po NEWA PLACEHOLDER MARK +1145A..1145B ; Terminal_Punctuation # Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK 115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR 115C9..115D7 ; Terminal_Punctuation # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA 1173C..1173E ; Terminal_Punctuation # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +11944 ; Terminal_Punctuation # Po DIVES AKURU DOUBLE DANDA +11946 ; Terminal_Punctuation # Po DIVES AKURU END OF TEXT MARK 11A42..11A43 ; Terminal_Punctuation # Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD 11A9B..11A9C ; Terminal_Punctuation # Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD 11AA1..11AA2 ; Terminal_Punctuation # Po [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 @@ -217,7 +224,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON -# Total code points: 264 +# Total code points: 276 # ================================================ @@ -525,6 +532,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 0D4A..0D4C ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D57 ; Other_Alphabetic # Mc MALAYALAM AU LENGTH MARK 0D62..0D63 ; Other_Alphabetic # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL +0D81 ; Other_Alphabetic # Mn SINHALA SIGN CANDRABINDU 0D82..0D83 ; Other_Alphabetic # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0DCF..0DD1 ; Other_Alphabetic # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD2..0DD4 ; Other_Alphabetic # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA @@ -595,6 +603,8 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 1A65..1A6C ; Other_Alphabetic # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A6D..1A72 ; Other_Alphabetic # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A73..1A74 ; Other_Alphabetic # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG +1ABF..1AC0 ; Other_Alphabetic # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW +1ACC..1ACE ; Other_Alphabetic # Mn [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03 ; Other_Alphabetic # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; Other_Alphabetic # Mc BALINESE SIGN BISAH 1B35 ; Other_Alphabetic # Mc BALINESE VOWEL SIGN TEDUNG @@ -676,14 +686,17 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 10A05..10A06 ; Other_Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Other_Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10D24..10D27 ; Other_Alphabetic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10EAB..10EAC ; Other_Alphabetic # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 11000 ; Other_Alphabetic # Mc BRAHMI SIGN CANDRABINDU 11001 ; Other_Alphabetic # Mn BRAHMI SIGN ANUSVARA 11002 ; Other_Alphabetic # Mc BRAHMI SIGN VISARGA 11038..11045 ; Other_Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU +11073..11074 ; Other_Alphabetic # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O 11082 ; Other_Alphabetic # Mc KAITHI SIGN VISARGA 110B0..110B2 ; Other_Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; Other_Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; Other_Alphabetic # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU +110C2 ; Other_Alphabetic # Mn KAITHI VOWEL SIGN VOCALIC R 11100..11102 ; Other_Alphabetic # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..1112B ; Other_Alphabetic # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112C ; Other_Alphabetic # Mc CHAKMA VOWEL SIGN E @@ -694,6 +707,8 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 111B3..111B5 ; Other_Alphabetic # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; Other_Alphabetic # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF ; Other_Alphabetic # Mc SHARADA VOWEL SIGN AU +111CE ; Other_Alphabetic # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +111CF ; Other_Alphabetic # Mn SHARADA SIGN INVERTED CANDRABINDU 1122C..1122E ; Other_Alphabetic # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Other_Alphabetic # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Other_Alphabetic # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU @@ -749,6 +764,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 1182C..1182E ; Other_Alphabetic # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837 ; Other_Alphabetic # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA 11838 ; Other_Alphabetic # Mc DOGRA SIGN VISARGA +11930..11935 ; Other_Alphabetic # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E +11937..11938 ; Other_Alphabetic # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193B..1193C ; Other_Alphabetic # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +11940 ; Other_Alphabetic # Mc DIVES AKURU MEDIAL YA +11942 ; Other_Alphabetic # Mc DIVES AKURU MEDIAL RA 119D1..119D3 ; Other_Alphabetic # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II 119D4..119D7 ; Other_Alphabetic # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR 119DA..119DB ; Other_Alphabetic # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI @@ -790,6 +810,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 16F4F ; Other_Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F51..16F87 ; Other_Alphabetic # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16F8F..16F92 ; Other_Alphabetic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW +16FF0..16FF1 ; Other_Alphabetic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK 1E000..1E006 ; Other_Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Other_Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU @@ -801,7 +822,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 1377 +# Total code points: 1404 # ================================================ @@ -809,21 +830,24 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 3007 ; Ideographic # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FEF ; Ideographic # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF +3400..4DBF ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF +4E00..9FFF ; Ideographic # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +16FE4 ; Ideographic # Mn KHITAN SMALL SCRIPT FILLER 17000..187F7 ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 -18800..18AF2 ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 +18800..18CD5 ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 +18D00..18D08 ; Ideographic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB -20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B738 ; Ideographic # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D +30000..3134A ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A -# Total code points: 96190 +# Total code points: 101661 # ================================================ @@ -868,6 +892,9 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH +0898..089F ; Diacritic # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08C9 ; Diacritic # Lm ARABIC SMALL FARSI YEH +08CA..08D2 ; Diacritic # Mn [9] ARABIC SMALL HIGH FARSI YEH..ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW 08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT 093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA 094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA @@ -882,7 +909,9 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 0AFD..0AFF ; Diacritic # Mn [3] GUJARATI SIGN THREE-DOT NUKTA ABOVE..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE 0B3C ; Diacritic # Mn ORIYA SIGN NUKTA 0B4D ; Diacritic # Mn ORIYA SIGN VIRAMA +0B55 ; Diacritic # Mn ORIYA SIGN OVERLINE 0BCD ; Diacritic # Mn TAMIL SIGN VIRAMA +0C3C ; Diacritic # Mn TELUGU SIGN NUKTA 0C4D ; Diacritic # Mn TELUGU SIGN VIRAMA 0CBC ; Diacritic # Mn KANNADA SIGN NUKTA 0CCD ; Diacritic # Mn KANNADA SIGN VIRAMA @@ -910,12 +939,16 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 108F ; Diacritic # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 109A..109B ; Diacritic # Mc [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3 135D..135F ; Diacritic # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK +1714 ; Diacritic # Mn TAGALOG SIGN VIRAMA +1715 ; Diacritic # Mc TAGALOG SIGN PAMUDPOD 17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17DD ; Diacritic # Mn KHMER SIGN ATTHACAN 1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1A75..1A7C ; Diacritic # Mn [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; Diacritic # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1AB0..1ABD ; Diacritic # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW +1ABE ; Diacritic # Me COMBINING PARENTHESES OVERLAY +1AC1..1ACB ; Diacritic # Mn [11] COMBINING LEFT PARENTHESIS ABOVE LEFT..COMBINING TRIPLE ACUTE ACCENT 1B34 ; Diacritic # Mn BALINESE SIGN REREKAN 1B44 ; Diacritic # Mc BALINESE ADEG ADEG 1B6B..1B73 ; Diacritic # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG @@ -934,8 +967,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 1CF8..1CF9 ; Diacritic # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1D2C..1D6A ; Diacritic # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1DC4..1DCF ; Diacritic # Mn [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW -1DF5..1DF9 ; Diacritic # Mn [5] COMBINING UP TACK ABOVE..COMBINING WIDE INVERTED BRIDGE BELOW -1DFD..1DFF ; Diacritic # Mn [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DF5..1DFF ; Diacritic # Mn [11] COMBINING UP TACK ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1FBD ; Diacritic # Sk GREEK KORONIS 1FBF..1FC1 ; Diacritic # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI 1FCD..1FCF ; Diacritic # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI @@ -978,6 +1010,8 @@ AAC2 ; Diacritic # Lo TAI VIET TONE MAI SONG AAF6 ; Diacritic # Mn MEETEI MAYEK VIRAMA AB5B ; Diacritic # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F ; Diacritic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK +AB69 ; Diacritic # Lm MODIFIER LETTER SMALL TURNED W +AB6A..AB6B ; Diacritic # Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA @@ -988,10 +1022,16 @@ FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND FF9E..FF9F ; Diacritic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFE3 ; Diacritic # Sk FULLWIDTH MACRON 102E0 ; Diacritic # Mn COPTIC EPACT THOUSANDS MARK +10780..10785 ; Diacritic # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Diacritic # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Diacritic # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10AE5..10AE6 ; Diacritic # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10D22..10D23 ; Diacritic # Lo [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA 10D24..10D27 ; Diacritic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10F46..10F50 ; Diacritic # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F82..10F85 ; Diacritic # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +11046 ; Diacritic # Mn BRAHMI VIRAMA +11070 ; Diacritic # Mn BRAHMI SIGN OLD TAMIL VIRAMA 110B9..110BA ; Diacritic # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA 11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA @@ -1013,6 +1053,9 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 116B7 ; Diacritic # Mn TAKRI SIGN NUKTA 1172B ; Diacritic # Mn AHOM SIGN KILLER 11839..1183A ; Diacritic # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA +1193D ; Diacritic # Mc DIVES AKURU SIGN HALANTA +1193E ; Diacritic # Mn DIVES AKURU VIRAMA +11943 ; Diacritic # Mn DIVES AKURU SIGN NUKTA 119E0 ; Diacritic # Mn NANDINAGARI SIGN VIRAMA 11A34 ; Diacritic # Mn ZANABAZAR SQUARE SIGN VIRAMA 11A47 ; Diacritic # Mn ZANABAZAR SQUARE SUBJOINER @@ -1025,18 +1068,25 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 16B30..16B36 ; Diacritic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 +16FF0..16FF1 ; Diacritic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY +1AFF0..1AFF3 ; Diacritic # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; Diacritic # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; Diacritic # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1CF00..1CF2D ; Diacritic # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; Diacritic # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16D..1D172 ; Diacritic # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1E130..1E136 ; Diacritic # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D +1E2AE ; Diacritic # Mn TOTO SIGN RISING TONE 1E2EC..1E2EF ; Diacritic # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK 1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA -# Total code points: 873 +# Total code points: 1064 # ================================================ @@ -1044,6 +1094,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 02D0..02D1 ; Extender # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON 0640 ; Extender # Lm ARABIC TATWEEL 07FA ; Extender # Lm NKO LAJANYALAN +0B55 ; Extender # Mn ORIYA SIGN OVERLINE 0E46 ; Extender # Lm THAI CHARACTER MAIYAMOK 0EC6 ; Extender # Lm LAO KO LA 180A ; Extender # Po MONGOLIAN NIRUGU @@ -1063,6 +1114,7 @@ AA70 ; Extender # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AADD ; Extender # Lm TAI VIET SYMBOL SAM AAF3..AAF4 ; Extender # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +10781..10782 ; Extender # Lm [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON 1135D ; Extender # Lo GRANTHA SIGN PLUTA 115C6..115C8 ; Extender # Po [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3 11A98 ; Extender # Mn SOYOMBO GEMINATION MARK @@ -1072,7 +1124,7 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND 1E13C..1E13D ; Extender # Lm [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E944..1E946 ; Extender # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK -# Total code points: 47 +# Total code points: 50 # ================================================ @@ -1096,8 +1148,12 @@ A69C..A69D ; Other_Lowercase # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..M A770 ; Other_Lowercase # Lm MODIFIER LETTER US A7F8..A7F9 ; Other_Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE AB5C..AB5F ; Other_Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK +10780 ; Other_Lowercase # Lm MODIFIER LETTER SMALL CAPITAL AA +10783..10785 ; Other_Lowercase # Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Other_Lowercase # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL -# Total code points: 189 +# Total code points: 244 # ================================================ @@ -1155,11 +1211,12 @@ FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND 114B0 ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN AA 114BD ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN SHORT O 115AF ; Other_Grapheme_Extend # Mc SIDDHAM VOWEL SIGN AA +11930 ; Other_Grapheme_Extend # Mc DIVES AKURU VOWEL SIGN AA 1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM 1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 126 +# Total code points: 127 # ================================================ @@ -1184,8 +1241,8 @@ E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG # ================================================ -3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FEF ; Unified_Ideograph # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF +3400..4DBF ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF +4E00..9FFF ; Unified_Ideograph # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 @@ -1193,13 +1250,14 @@ FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21 FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24 FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29 -20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B738 ; Unified_Ideograph # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +30000..3134A ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A -# Total code points: 87887 +# Total code points: 92865 # ================================================ @@ -1264,8 +1322,9 @@ E0001 ; Deprecated # Cf LANGUAGE TAG 1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J 1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J 1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J +1DF1A ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK -# Total code points: 46 +# Total code points: 47 # ================================================ @@ -1303,7 +1362,7 @@ AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET 002E ; Sentence_Terminal # Po FULL STOP 003F ; Sentence_Terminal # Po QUESTION MARK 0589 ; Sentence_Terminal # Po ARMENIAN FULL STOP -061E..061F ; Sentence_Terminal # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK +061D..061F ; Sentence_Terminal # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK 06D4 ; Sentence_Terminal # Po ARABIC FULL STOP 0700..0702 ; Sentence_Terminal # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP 07F9 ; Sentence_Terminal # Po NKO EXCLAMATION MARK @@ -1322,12 +1381,14 @@ AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET 1AA8..1AAB ; Sentence_Terminal # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU 1B5A..1B5B ; Sentence_Terminal # Po [2] BALINESE PANTI..BALINESE PAMADA 1B5E..1B5F ; Sentence_Terminal # Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN +1B7D..1B7E ; Sentence_Terminal # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG 1C3B..1C3C ; Sentence_Terminal # Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL 1C7E..1C7F ; Sentence_Terminal # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD 203C..203D ; Sentence_Terminal # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG 2047..2049 ; Sentence_Terminal # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK 2E2E ; Sentence_Terminal # Po REVERSED QUESTION MARK 2E3C ; Sentence_Terminal # Po STENOGRAPHIC FULL STOP +2E53..2E54 ; Sentence_Terminal # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK 3002 ; Sentence_Terminal # Po IDEOGRAPHIC FULL STOP A4FF ; Sentence_Terminal # Po LISU PUNCTUATION FULL STOP A60E..A60F ; Sentence_Terminal # Po [2] VAI FULL STOP..VAI QUESTION MARK @@ -1348,6 +1409,7 @@ FF1F ; Sentence_Terminal # Po FULLWIDTH QUESTION MARK FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP 10A56..10A57 ; Sentence_Terminal # Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA 10F55..10F59 ; Sentence_Terminal # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10F86..10F89 ; Sentence_Terminal # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS 11047..11048 ; Sentence_Terminal # Po [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA 110BE..110C1 ; Sentence_Terminal # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA 11141..11143 ; Sentence_Terminal # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK @@ -1362,6 +1424,8 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP 115C9..115D7 ; Sentence_Terminal # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; Sentence_Terminal # Po [2] MODI DANDA..MODI DOUBLE DANDA 1173C..1173E ; Sentence_Terminal # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +11944 ; Sentence_Terminal # Po DIVES AKURU DOUBLE DANDA +11946 ; Sentence_Terminal # Po DIVES AKURU END OF TEXT MARK 11A42..11A43 ; Sentence_Terminal # Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD 11A9B..11A9C ; Sentence_Terminal # Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD 11C41..11C42 ; Sentence_Terminal # Po [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA @@ -1374,15 +1438,16 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP 1BC9F ; Sentence_Terminal # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1DA88 ; Sentence_Terminal # Po SIGNWRITING FULL STOP -# Total code points: 141 +# Total code points: 152 # ================================================ 180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180F ; Variation_Selector # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 259 +# Total code points: 260 # ================================================ @@ -1574,8 +1639,8 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S 2B4D..2B73 ; Pattern_Syntax # So [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B74..2B75 ; Pattern_Syntax # Cn [2] .. 2B76..2B95 ; Pattern_Syntax # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW -2B96..2B97 ; Pattern_Syntax # Cn [2] .. -2B98..2BFF ; Pattern_Syntax # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL +2B96 ; Pattern_Syntax # Cn +2B97..2BFF ; Pattern_Syntax # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL 2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET @@ -1614,7 +1679,18 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S 2E41 ; Pattern_Syntax # Po REVERSED COMMA 2E42 ; Pattern_Syntax # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43..2E4F ; Pattern_Syntax # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER -2E50..2E7F ; Pattern_Syntax # Cn [48] .. +2E50..2E51 ; Pattern_Syntax # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR +2E52..2E54 ; Pattern_Syntax # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK +2E55 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH STROKE +2E56 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH STROKE +2E57 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59 ; Pattern_Syntax # Ps TOP HALF LEFT PARENTHESIS +2E5A ; Pattern_Syntax # Pe TOP HALF RIGHT PARENTHESIS +2E5B ; Pattern_Syntax # Ps BOTTOM HALF LEFT PARENTHESIS +2E5C ; Pattern_Syntax # Pe BOTTOM HALF RIGHT PARENTHESIS +2E5D ; Pattern_Syntax # Pd OBLIQUE HYPHEN +2E5E..2E7F ; Pattern_Syntax # Cn [34] .. 3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK 3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET 3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET @@ -1651,11 +1727,12 @@ FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT 0600..0605 ; Prepended_Concatenation_Mark # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE 06DD ; Prepended_Concatenation_Mark # Cf ARABIC END OF AYAH 070F ; Prepended_Concatenation_Mark # Cf SYRIAC ABBREVIATION MARK +0890..0891 ; Prepended_Concatenation_Mark # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE 08E2 ; Prepended_Concatenation_Mark # Cf ARABIC DISPUTED END OF AYAH 110BD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN 110CD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN ABOVE -# Total code points: 11 +# Total code points: 13 # ================================================ diff --git a/texmf/tex/generic/unicode-data/ScriptExtensions.txt b/texmf/tex/generic/unicode-data/ScriptExtensions.txt index ce98cba76..3f5cd1c0d 100644 --- a/texmf/tex/generic/unicode-data/ScriptExtensions.txt +++ b/texmf/tex/generic/unicode-data/ScriptExtensions.txt @@ -1,6 +1,6 @@ -# ScriptExtensions-12.1.0.txt -# Date: 2019-04-01, 09:10:42 GMT -# © 2019 Unicode®, Inc. +# ScriptExtensions-14.0.0.txt +# Date: 2021-06-04, 02:19:38 GMT +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # @@ -11,10 +11,10 @@ # with more than one script, but with a limited number of scripts. # For each code point, there is one or more property values. Each such value is a Script property value. # For more information, see: -# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/ +# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/ # Especially the sections: -# http://www.unicode.org/reports/tr24/#Assignment_Script_Values -# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values +# https://www.unicode.org/reports/tr24/#Assignment_Script_Values +# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values # # Each Script_Extensions value in this file consists of a set # of one or more abbreviated Script property values. The ordering of the @@ -119,6 +119,14 @@ # ================================================ +# Script_Extensions=Syrc + +1DFA ; Syrc # Mn COMBINING DOT BELOW LEFT + +# Total code points: 1 + +# ================================================ + # Script_Extensions=Arab Copt 102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK @@ -136,6 +144,15 @@ # ================================================ +# Script_Extensions=Arab Nkoo + +FD3E ; Arab Nkoo # Pe ORNATE LEFT PARENTHESIS +FD3F ; Arab Nkoo # Ps ORNATE RIGHT PARENTHESIS + +# Total code points: 2 + +# ================================================ + # Script_Extensions=Arab Syrc 064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW @@ -147,19 +164,10 @@ # Script_Extensions=Arab Thaa -0660..0669 ; Arab Thaa # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE FDF2 ; Arab Thaa # Lo ARABIC LIGATURE ALLAH ISOLATED FORM FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -# Total code points: 12 - -# ================================================ - -# Script_Extensions=Armn Geor - -0589 ; Armn Geor # Po ARMENIAN FULL STOP - -# Total code points: 1 +# Total code points: 2 # ================================================ @@ -195,10 +203,10 @@ A9CF ; Bugi Java # Lm JAVANESE PANGRANGKEP # Script_Extensions=Cprt Linb -10100..10102 ; Cprt Linb # Po [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK +10102 ; Cprt Linb # Po AEGEAN CHECK MARK 10137..1013F ; Cprt Linb # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT -# Total code points: 12 +# Total code points: 10 # ================================================ @@ -229,6 +237,14 @@ A66F ; Cyrl Glag # Mn COMBINING CYRILLIC VZMET # ================================================ +# Script_Extensions=Cyrl Syrc + +1DF8 ; Cyrl Syrc # Mn COMBINING DOT ABOVE LEFT + +# Total code points: 1 + +# ================================================ + # Script_Extensions=Deva Gran 1CD3 ; Deva Gran # Po VEDIC SIGN NIHSHVASA @@ -305,6 +321,14 @@ A8F3 ; Deva Taml # Lo DEVANAGARI SIGN CANDRABINDU VIRAMA # ================================================ +# Script_Extensions=Hani Latn + +A700..A707 ; Hani Latn # Sk [8] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER CHINESE TONE YANG RU + +# Total code points: 8 + +# ================================================ + # Script_Extensions=Hira Kana 3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF @@ -335,6 +359,14 @@ FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW # ================================================ +# Script_Extensions=Mani Ougr + +10AF2 ; Mani Ougr # Po MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT + +# Total code points: 1 + +# ================================================ + # Script_Extensions=Mong Phag 1802..1803 ; Mong Phag # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP @@ -352,6 +384,14 @@ FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW # ================================================ +# Script_Extensions=Arab Thaa Yezi + +0660..0669 ; Arab Thaa Yezi # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE + +# Total code points: 10 + +# ================================================ + # Script_Extensions=Beng Cakm Sylo 09E6..09EF ; Beng Cakm Sylo # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE @@ -368,6 +408,14 @@ FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW # ================================================ +# Script_Extensions=Cpmn Cprt Linb + +10100..10101 ; Cpmn Cprt Linb # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT + +# Total code points: 2 + +# ================================================ + # Script_Extensions=Cprt Lina Linb 10107..10133 ; Cprt Lina Linb # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND @@ -409,16 +457,6 @@ A92E ; Kali Latn Mymr # Po KAYAH LI SIGN CWI # ================================================ -# Script_Extensions=Arab Rohg Syrc Thaa - -060C ; Arab Rohg Syrc Thaa # Po ARABIC COMMA -061B ; Arab Rohg Syrc Thaa # Po ARABIC SEMICOLON -061F ; Arab Rohg Syrc Thaa # Po ARABIC QUESTION MARK - -# Total code points: 3 - -# ================================================ - # Script_Extensions=Beng Deva Gran Knda 1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA @@ -459,6 +497,15 @@ FE45..FE46 ; Bopo Hang Hani Hira Kana # Po [2] SESAME DOT..WHITE SESAME DOT # ================================================ +# Script_Extensions=Arab Nkoo Rohg Syrc Thaa Yezi + +060C ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC COMMA +061B ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC SEMICOLON + +# Total code points: 2 + +# ================================================ + # Script_Extensions=Bopo Hang Hani Hira Kana Yiii 3001..3002 ; Bopo Hang Hani Hira Kana Yiii # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP @@ -498,9 +545,9 @@ FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC C # ================================================ -# Script_Extensions=Adlm Arab Mand Mani Phlp Rohg Sogd Syrc +# Script_Extensions=Adlm Arab Nkoo Rohg Syrc Thaa Yezi -0640 ; Adlm Arab Mand Mani Phlp Rohg Sogd Syrc # Lm ARABIC TATWEEL +061F ; Adlm Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC QUESTION MARK # Total code points: 1 @@ -514,6 +561,14 @@ FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC C # ================================================ +# Script_Extensions=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc + +0640 ; Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc # Lm ARABIC TATWEEL + +# Total code points: 1 + +# ================================================ + # Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh A836..A837 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK diff --git a/texmf/tex/generic/unicode-data/Scripts.txt b/texmf/tex/generic/unicode-data/Scripts.txt index a9070ebeb..a13837301 100644 --- a/texmf/tex/generic/unicode-data/Scripts.txt +++ b/texmf/tex/generic/unicode-data/Scripts.txt @@ -1,16 +1,16 @@ -# Scripts-12.1.0.txt -# Date: 2019-04-01, 09:10:42 GMT -# © 2019 Unicode®, Inc. +# Scripts-14.0.0.txt +# Date: 2021-07-10, 00:35:31 GMT +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # For more information, see: -# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/ +# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/ # Especially the sections: -# http://www.unicode.org/reports/tr24/#Assignment_Script_Values -# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values +# https://www.unicode.org/reports/tr24/#Assignment_Script_Values +# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values # # ================================================ @@ -89,7 +89,6 @@ 037E ; Common # Po GREEK QUESTION MARK 0385 ; Common # Sk GREEK DIALYTIKA TONOS 0387 ; Common # Po GREEK ANO TELEIA -0589 ; Common # Po ARMENIAN FULL STOP 0605 ; Common # Cf ARABIC NUMBER MARK ABOVE 060C ; Common # Po ARABIC COMMA 061B ; Common # Po ARABIC SEMICOLON @@ -155,7 +154,7 @@ 208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20BF ; Common # Sc [32] EURO-CURRENCY SIGN..BITCOIN SIGN +20A0..20C0 ; Common # Sc [33] EURO-CURRENCY SIGN..SOM SIGN 2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2102 ; Common # L& DOUBLE-STRUCK CAPITAL C 2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA @@ -308,7 +307,7 @@ 2B47..2B4C ; Common # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR 2B4D..2B73 ; Common # So [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95 ; Common # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW -2B98..2BFF ; Common # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL +2B97..2BFF ; Common # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL 2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET @@ -347,6 +346,17 @@ 2E41 ; Common # Po REVERSED COMMA 2E42 ; Common # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43..2E4F ; Common # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER +2E50..2E51 ; Common # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR +2E52..2E54 ; Common # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK +2E55 ; Common # Ps LEFT SQUARE BRACKET WITH STROKE +2E56 ; Common # Pe RIGHT SQUARE BRACKET WITH STROKE +2E57 ; Common # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58 ; Common # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59 ; Common # Ps TOP HALF LEFT PARENTHESIS +2E5A ; Common # Pe TOP HALF RIGHT PARENTHESIS +2E5B ; Common # Ps BOTTOM HALF LEFT PARENTHESIS +2E5C ; Common # Pe BOTTOM HALF RIGHT PARENTHESIS +2E5D ; Common # Pd OBLIQUE HYPHEN 2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID 3000 ; Common # Zs IDEOGRAPHIC SPACE 3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK @@ -414,6 +424,7 @@ A839 ; Common # So NORTH INDIC QUANTITY MARK A92E ; Common # Po KAYAH LI SIGN CWI A9CF ; Common # Lm JAVANESE PANGRANGKEP AB5B ; Common # Sk MODIFIER BREVE WITH INVERTED BREVE +AB6A..AB6B ; Common # Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK FD3E ; Common # Pe ORNATE LEFT PARENTHESIS FD3F ; Common # Ps ORNATE RIGHT PARENTHESIS FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK @@ -506,12 +517,11 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 10100..10102 ; Common # Po [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK 10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND 10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT -10190..1019B ; Common # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN +10190..1019C ; Common # So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL 101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND 102E1..102FB ; Common # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED -16FE2 ; Common # Po OLD CHINESE HOOK MARK -16FE3 ; Common # Lm OLD CHINESE ITERATION MARK 1BCA0..1BCA3 ; Common # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1CF50..1CFC3 ; Common # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK 1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D129..1D164 ; Common # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE @@ -521,7 +531,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN +1D1AE..1D1EA ; Common # So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON 1D2E0..1D2F3 ; Common # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN 1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D378 ; Common # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE @@ -581,8 +591,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F0C1..1F0CF ; Common # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER 1F0D1..1F0F5 ; Common # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 1F100..1F10C ; Common # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO -1F110..1F16C ; Common # So [93] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MR SIGN -1F170..1F1AC ; Common # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD +1F10D..1F1AD ; Common # So [161] CIRCLED ZERO WITH SLASH..MASK WORK SYMBOL 1F1E6..1F1FF ; Common # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z 1F201..1F202 ; Common # So [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA 1F210..1F23B ; Common # So [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D @@ -591,33 +600,37 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F260..1F265 ; Common # So [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI 1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA 1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 -1F400..1F6D5 ; Common # So [726] RAT..HINDU TEMPLE -1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING -1F6F0..1F6FA ; Common # So [11] SATELLITE..AUTO RICKSHAW +1F400..1F6D7 ; Common # So [728] RAT..ELEVATOR +1F6DD..1F6EC ; Common # So [16] PLAYGROUND SLIDE..AIRPLANE ARRIVING +1F6F0..1F6FC ; Common # So [13] SATELLITE..ROLLER SKATE 1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F780..1F7D8 ; Common # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE 1F7E0..1F7EB ; Common # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE +1F7F0 ; Common # So HEAVY EQUALS SIGN 1F800..1F80B ; Common # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847 ; Common # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS -1F900..1F90B ; Common # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT -1F90D..1F971 ; Common # So [101] WHITE HEART..YAWNING FACE -1F973..1F976 ; Common # So [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE -1F97A..1F9A2 ; Common # So [41] FACE WITH PLEADING EYES..SWAN -1F9A5..1F9AA ; Common # So [6] SLOTH..OYSTER -1F9AE..1F9CA ; Common # So [29] GUIDE DOG..ICE CUBE -1F9CD..1FA53 ; Common # So [135] STANDING PERSON..BLACK CHESS KNIGHT-BISHOP +1F8B0..1F8B1 ; Common # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST +1F900..1FA53 ; Common # So [340] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS KNIGHT-BISHOP 1FA60..1FA6D ; Common # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER -1FA70..1FA73 ; Common # So [4] BALLET SHOES..SHORTS -1FA78..1FA7A ; Common # So [3] DROP OF BLOOD..STETHOSCOPE -1FA80..1FA82 ; Common # So [3] YO-YO..PARACHUTE -1FA90..1FA95 ; Common # So [6] RINGED PLANET..BANJO +1FA70..1FA74 ; Common # So [5] BALLET SHOES..THONG SANDAL +1FA78..1FA7C ; Common # So [5] DROP OF BLOOD..CRUTCH +1FA80..1FA86 ; Common # So [7] YO-YO..NESTING DOLLS +1FA90..1FAAC ; Common # So [29] RINGED PLANET..HAMSA +1FAB0..1FABA ; Common # So [11] FLY..NEST WITH EGGS +1FAC0..1FAC5 ; Common # So [6] ANATOMICAL HEART..PERSON WITH CROWN +1FAD0..1FAD9 ; Common # So [10] BLUEBERRIES..JAR +1FAE0..1FAE7 ; Common # So [8] MELTING FACE..BUBBLES +1FAF0..1FAF6 ; Common # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS +1FB00..1FB92 ; Common # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK +1FB94..1FBCA ; Common # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON +1FBF0..1FBF9 ; Common # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE E0001 ; Common # Cf LANGUAGE TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 7805 +# Total code points: 8252 # ================================================ @@ -660,8 +673,12 @@ A770 ; Latin # Lm MODIFIER LETTER US A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; Latin # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7C6 ; Latin # L& [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK +A790..A7CA ; Latin # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7D0..A7D1 ; Latin # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; Latin # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7D9 ; Latin # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S +A7F2..A7F4 ; Latin # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q +A7F5..A7F6 ; Latin # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M @@ -669,12 +686,19 @@ A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGR AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA -AB66..AB67 ; Latin # L& [2] LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK +AB66..AB68 ; Latin # L& [3] LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; Latin # Lm MODIFIER LETTER SMALL TURNED W FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +10780..10785 ; Latin # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Latin # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Latin # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL +1DF00..1DF09 ; Latin # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; Latin # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; Latin # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL -# Total code points: 1366 +# Total code points: 1475 # ================================================ @@ -769,12 +793,13 @@ FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBININ 0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK 0560..0588 ; Armenian # L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE +0589 ; Armenian # Po ARMENIAN FULL STOP 058A ; Armenian # Pd ARMENIAN HYPHEN 058D..058E ; Armenian # So [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN 058F ; Armenian # Sc ARMENIAN DRAM SIGN FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH -# Total code points: 95 +# Total code points: 96 # ================================================ @@ -813,7 +838,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA 0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 061C ; Arabic # Cf ARABIC LETTER MARK -061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK +061D..061E ; Arabic # Po [2] ARABIC END OF TEXT MARK..ARABIC TRIPLE DOT PUNCTUATION MARK 0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW @@ -836,18 +861,25 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V 0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE -08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08BD ; Arabic # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -08D3..08E1 ; Arabic # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0870..0887 ; Arabic # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0888 ; Arabic # Sk ARABIC RAISED ROUND DOT +0889..088E ; Arabic # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0890..0891 ; Arabic # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +0898..089F ; Arabic # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08A0..08C8 ; Arabic # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; Arabic # Lm ARABIC SMALL FARSI YEH +08CA..08E1 ; Arabic # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW +FBB2..FBC2 ; Arabic # Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD40..FD4F ; Arabic # So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDCF ; Arabic # So ARABIC LIGATURE SALAAMUHU ALAYNAA FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FDFC ; Arabic # Sc RIAL SIGN -FDFD ; Arabic # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM +FDFD..FDFF ; Arabic # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM 10E60..10E7E ; Arabic # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS @@ -886,7 +918,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA 1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -# Total code points: 1281 +# Total code points: 1365 # ================================================ @@ -1051,7 +1083,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B4D ; Oriya # Mn ORIYA SIGN VIRAMA -0B56 ; Oriya # Mn ORIYA AI LENGTH MARK +0B55..0B56 ; Oriya # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK 0B57 ; Oriya # Mc ORIYA AU LENGTH MARK 0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL @@ -1061,7 +1093,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0B71 ; Oriya # Lo ORIYA LETTER WA 0B72..0B77 ; Oriya # No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS -# Total code points: 90 +# Total code points: 91 # ================================================ @@ -1106,6 +1138,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; Telugu # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3C ; Telugu # Mn TELUGU SIGN NUKTA 0C3D ; Telugu # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR @@ -1113,6 +1146,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; Telugu # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -1120,7 +1154,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; Telugu # So TELUGU SIGN TUUMU -# Total code points: 98 +# Total code points: 100 # ================================================ @@ -1143,19 +1177,19 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; Kannada # Lo KANNADA LETTER FA +0CDD..0CDE ; Kannada # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; Kannada # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA -# Total code points: 89 +# Total code points: 90 # ================================================ 0D00..0D01 ; Malayalam # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L +0D04..0D0C ; Malayalam # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; Malayalam # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3B..0D3C ; Malayalam # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA @@ -1177,10 +1211,11 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0D79 ; Malayalam # So MALAYALAM DATE MARK 0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K -# Total code points: 117 +# Total code points: 118 # ================================================ +0D81 ; Sinhala # Mn SINHALA SIGN CANDRABINDU 0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA @@ -1197,7 +1232,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY 0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA 111E1..111F4 ; Sinhala # No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND -# Total code points: 110 +# Total code points: 111 # ================================================ @@ -1403,8 +1438,12 @@ AB09..AB0E ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DD AB11..AB16 ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO +1E7E0..1E7E6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; Ethiopic # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE -# Total code points: 495 +# Total code points: 523 # ================================================ @@ -1422,8 +1461,9 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT 166E ; Canadian_Aboriginal # Po CANADIAN SYLLABICS FULL STOP 166F..167F ; Canadian_Aboriginal # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 18B0..18F5 ; Canadian_Aboriginal # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S +11AB0..11ABF ; Canadian_Aboriginal # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA -# Total code points: 710 +# Total code points: 726 # ================================================ @@ -1472,6 +1512,7 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT 1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU 180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; Mongolian # Cf MONGOLIAN VOWEL SEPARATOR +180F ; Mongolian # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN @@ -1483,18 +1524,18 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT 18AA ; Mongolian # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 11660..1166C ; Mongolian # Po [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT -# Total code points: 167 +# Total code points: 168 # ================================================ 3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI -1B001..1B11E ; Hiragana # Lo [286] HIRAGANA LETTER ARCHAIC YE..HENTAIGANA LETTER N-MU-MO-2 +1B001..1B11F ; Hiragana # Lo [287] HIRAGANA LETTER ARCHAIC YE..HIRAGANA LETTER ARCHAIC WU 1B150..1B152 ; Hiragana # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO 1F200 ; Hiragana # So SQUARE HIRAGANA HOKA -# Total code points: 379 +# Total code points: 380 # ================================================ @@ -1506,18 +1547,22 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT 3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N +1AFF0..1AFF3 ; Katakana # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; Katakana # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; Katakana # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E +1B120..1B122 ; Katakana # Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU 1B164..1B167 ; Katakana # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N -# Total code points: 304 +# Total code points: 320 # ================================================ 02EA..02EB ; Bopomofo # Sk [2] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK 3105..312F ; Bopomofo # Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN -31A0..31BA ; Bopomofo # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY +31A0..31BF ; Bopomofo # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH -# Total code points: 72 +# Total code points: 77 # ================================================ @@ -1529,18 +1574,22 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK -3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FEF ; Han # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF +3400..4DBF ; Han # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF +4E00..9FFF ; Han # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +16FE2 ; Han # Po OLD CHINESE HOOK MARK +16FE3 ; Han # Lm OLD CHINESE ITERATION MARK +16FF0..16FF1 ; Han # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY +20000..2A6DF ; Han # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B738 ; Han # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Han # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D +30000..3134A ; Han # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A -# Total code points: 89233 +# Total code points: 94215 # ================================================ @@ -1583,14 +1632,14 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE 0951..0954 ; Inherited # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT 1AB0..1ABD ; Inherited # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE ; Inherited # Me COMBINING PARENTHESES OVERLAY +1ABF..1ACE ; Inherited # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Inherited # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE2..1CE8 ; Inherited # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CED ; Inherited # Mn VEDIC SIGN TIRYAK 1CF4 ; Inherited # Mn VEDIC TONE CANDRA ABOVE 1CF8..1CF9 ; Inherited # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE -1DC0..1DF9 ; Inherited # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF ; Inherited # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF ; Inherited # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER 20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH @@ -1604,26 +1653,30 @@ FE20..FE2D ; Inherited # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CON 101FD ; Inherited # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Inherited # Mn COPTIC EPACT THOUSANDS MARK 1133B ; Inherited # Mn COMBINING BINDU BELOW +1CF00..1CF2D ; Inherited # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; Inherited # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 571 +# Total code points: 657 # ================================================ -1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711 ; Tagalog # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +1715 ; Tagalog # Mc TAGALOG SIGN PAMUDPOD +171F ; Tagalog # Lo TAGALOG LETTER ARCHAIC RA -# Total code points: 20 +# Total code points: 23 # ================================================ 1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1732..1733 ; Hanunoo # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734 ; Hanunoo # Mc HANUNOO SIGN PAMUDPOD # Total code points: 21 @@ -1751,15 +1804,14 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2 # ================================================ -2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2C00..2C5F ; Glagolitic # L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 1E000..1E006 ; Glagolitic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Glagolitic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Glagolitic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Glagolitic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Glagolitic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA -# Total code points: 132 +# Total code points: 134 # ================================================ @@ -1783,8 +1835,9 @@ A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 +A82C ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA -# Total code points: 44 +# Total code points: 45 # ================================================ @@ -1824,14 +1877,15 @@ A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI 1B3D..1B41 ; Balinese # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B ; Balinese # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; Balinese # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG 1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE 1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING +1B7D..1B7E ; Balinese # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG -# Total code points: 121 +# Total code points: 124 # ================================================ @@ -2063,8 +2117,9 @@ AADE..AADF ; Tai_Viet # Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI A4D0..A4F7 ; Lisu # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; Lisu # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A4FE..A4FF ; Lisu # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP +11FB0 ; Lisu # Lo LISU LETTER YHA -# Total code points: 48 +# Total code points: 49 # ================================================ @@ -2165,9 +2220,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 110BB..110BC ; Kaithi # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BD ; Kaithi # Cf KAITHI NUMBER SIGN 110BE..110C1 ; Kaithi # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA +110C2 ; Kaithi # Mn KAITHI VOWEL SIGN VOCALIC R 110CD ; Kaithi # Cf KAITHI NUMBER SIGN ABOVE -# Total code points: 67 +# Total code points: 68 # ================================================ @@ -2194,9 +2250,13 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11047..1104D ; Brahmi # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS 11052..11065 ; Brahmi # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND 11066..1106F ; Brahmi # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +11070 ; Brahmi # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11071..11072 ; Brahmi # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074 ; Brahmi # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075 ; Brahmi # Lo BRAHMI LETTER OLD TAMIL LLA 1107F ; Brahmi # Mn BRAHMI NUMBER JOINER -# Total code points: 109 +# Total code points: 115 # ================================================ @@ -2217,8 +2277,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11140..11143 ; Chakma # Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK 11144 ; Chakma # Lo CHAKMA LETTER LHAA 11145..11146 ; Chakma # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI +11147 ; Chakma # Lo CHAKMA LETTER VAA -# Total code points: 70 +# Total code points: 71 # ================================================ @@ -2259,13 +2320,15 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 111C5..111C8 ; Sharada # Po [4] SHARADA DANDA..SHARADA SEPARATOR 111C9..111CC ; Sharada # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111CD ; Sharada # Po SHARADA SUTRA MARK +111CE ; Sharada # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +111CF ; Sharada # Mn SHARADA SIGN INVERTED CANDRABINDU 111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; Sharada # Lo SHARADA EKAM 111DB ; Sharada # Po SHARADA SIGN SIDDHAM 111DC ; Sharada # Lo SHARADA HEADSTROKE 111DD..111DF ; Sharada # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 -# Total code points: 94 +# Total code points: 96 # ================================================ @@ -2285,9 +2348,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 116B6 ; Takri # Mc TAKRI SIGN VIRAMA 116B7 ; Takri # Mn TAKRI SIGN NUKTA 116B8 ; Takri # Lo TAKRI LETTER ARCHAIC KHA +116B9 ; Takri # Po TAKRI ABBREVIATION SIGN 116C0..116C9 ; Takri # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE -# Total code points: 67 +# Total code points: 68 # ================================================ @@ -2545,8 +2609,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1173F ; Ahom # So AHOM SYMBOL VI +11740..11746 ; Ahom # Lo [7] AHOM LETTER CA..AHOM LETTER LLA -# Total code points: 58 +# Total code points: 65 # ================================================ @@ -2650,12 +2715,12 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11447..1144A ; Newa # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1144B..1144F ; Newa # Po [5] NEWA DANDA..NEWA ABBREVIATION SIGN 11450..11459 ; Newa # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE -1145B ; Newa # Po NEWA PLACEHOLDER MARK +1145A..1145B ; Newa # Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK 1145D ; Newa # Po NEWA INSERTION SIGN 1145E ; Newa # Mn NEWA SANDHI MARK -1145F ; Newa # Lo NEWA LETTER VEDIC ANUSVARA +1145F..11461 ; Newa # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA -# Total code points: 94 +# Total code points: 97 # ================================================ @@ -2668,9 +2733,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 16FE0 ; Tangut # Lm TANGUT ITERATION MARK 17000..187F7 ; Tangut # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 -18800..18AF2 ; Tangut # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 +18800..18AFF ; Tangut # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 +18D00..18D08 ; Tangut # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -# Total code points: 6892 +# Total code points: 6914 # ================================================ @@ -2835,4 +2901,91 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # Total code points: 59 +# ================================================ + +10FB0..10FC4 ; Chorasmian # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW +10FC5..10FCB ; Chorasmian # No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED + +# Total code points: 28 + +# ================================================ + +11900..11906 ; Dives_Akuru # Lo [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E +11909 ; Dives_Akuru # Lo DIVES AKURU LETTER O +1190C..11913 ; Dives_Akuru # Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA +11915..11916 ; Dives_Akuru # Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA +11918..1192F ; Dives_Akuru # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA +11930..11935 ; Dives_Akuru # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E +11937..11938 ; Dives_Akuru # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193B..1193C ; Dives_Akuru # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +1193D ; Dives_Akuru # Mc DIVES AKURU SIGN HALANTA +1193E ; Dives_Akuru # Mn DIVES AKURU VIRAMA +1193F ; Dives_Akuru # Lo DIVES AKURU PREFIXED NASAL SIGN +11940 ; Dives_Akuru # Mc DIVES AKURU MEDIAL YA +11941 ; Dives_Akuru # Lo DIVES AKURU INITIAL RA +11942 ; Dives_Akuru # Mc DIVES AKURU MEDIAL RA +11943 ; Dives_Akuru # Mn DIVES AKURU SIGN NUKTA +11944..11946 ; Dives_Akuru # Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK +11950..11959 ; Dives_Akuru # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE + +# Total code points: 72 + +# ================================================ + +16FE4 ; Khitan_Small_Script # Mn KHITAN SMALL SCRIPT FILLER +18B00..18CD5 ; Khitan_Small_Script # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 + +# Total code points: 471 + +# ================================================ + +10E80..10EA9 ; Yezidi # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET +10EAB..10EAC ; Yezidi # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10EAD ; Yezidi # Pd YEZIDI HYPHENATION MARK +10EB0..10EB1 ; Yezidi # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE + +# Total code points: 47 + +# ================================================ + +12F90..12FF0 ; Cypro_Minoan # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +12FF1..12FF2 ; Cypro_Minoan # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 + +# Total code points: 99 + +# ================================================ + +10F70..10F81 ; Old_Uyghur # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10F82..10F85 ; Old_Uyghur # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +10F86..10F89 ; Old_Uyghur # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS + +# Total code points: 26 + +# ================================================ + +16A70..16ABE ; Tangsa # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AC0..16AC9 ; Tangsa # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE + +# Total code points: 89 + +# ================================================ + +1E290..1E2AD ; Toto # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2AE ; Toto # Mn TOTO SIGN RISING TONE + +# Total code points: 31 + +# ================================================ + +10570..1057A ; Vithkuqi # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Vithkuqi # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Vithkuqi # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Vithkuqi # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; Vithkuqi # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Vithkuqi # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Vithkuqi # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Vithkuqi # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE + +# Total code points: 70 + # EOF diff --git a/texmf/tex/generic/unicode-data/SpecialCasing.txt b/texmf/tex/generic/unicode-data/SpecialCasing.txt index 1c04aacf9..1c2e968a8 100644 --- a/texmf/tex/generic/unicode-data/SpecialCasing.txt +++ b/texmf/tex/generic/unicode-data/SpecialCasing.txt @@ -1,6 +1,6 @@ -# SpecialCasing-12.1.0.txt -# Date: 2019-03-10, 10:53:28 GMT -# © 2019 Unicode®, Inc. +# SpecialCasing-14.0.0.txt +# Date: 2021-03-08, 19:35:55 GMT +# © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # diff --git a/texmf/tex/generic/unicode-data/UnicodeData.txt b/texmf/tex/generic/unicode-data/UnicodeData.txt index e65aec52f..b5abef7ed 100644 --- a/texmf/tex/generic/unicode-data/UnicodeData.txt +++ b/texmf/tex/generic/unicode-data/UnicodeData.txt @@ -1525,6 +1525,7 @@ 061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; 061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; 061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;; +061D;ARABIC END OF TEXT MARK;Po;0;AL;;;;;N;;;;; 061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; 061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; 0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;; @@ -2089,6 +2090,47 @@ 0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;; 0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;; 086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;; +0870;ARABIC LETTER ALEF WITH ATTACHED FATHA;Lo;0;AL;;;;;N;;;;; +0871;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA;Lo;0;AL;;;;;N;;;;; +0872;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0873;ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0874;ARABIC LETTER ALEF WITH ATTACHED KASRA;Lo;0;AL;;;;;N;;;;; +0875;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA;Lo;0;AL;;;;;N;;;;; +0876;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0877;ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0878;ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0879;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW;Lo;0;AL;;;;;N;;;;; +087A;ARABIC LETTER ALEF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087B;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087C;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087D;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087E;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +087F;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0880;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0881;ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA;Lo;0;AL;;;;;N;;;;; +0882;ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA;Lo;0;AL;;;;;N;;;;; +0883;ARABIC TATWEEL WITH OVERSTRUCK HAMZA;Lo;0;AL;;;;;N;;;;; +0884;ARABIC TATWEEL WITH OVERSTRUCK WAW;Lo;0;AL;;;;;N;;;;; +0885;ARABIC TATWEEL WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0886;ARABIC LETTER THIN YEH;Lo;0;AL;;;;;N;;;;; +0887;ARABIC BASELINE ROUND DOT;Lo;0;AL;;;;;N;;;;; +0888;ARABIC RAISED ROUND DOT;Sk;0;AL;;;;;N;;;;; +0889;ARABIC LETTER NOON WITH INVERTED SMALL V;Lo;0;AL;;;;;N;;;;; +088A;ARABIC LETTER HAH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +088B;ARABIC LETTER TAH WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +088C;ARABIC LETTER TAH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +088D;ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;; +0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;; +0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;; +089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;; +089B;ARABIC SMALL LOW WORD TASHEEL;Mn;220;NSM;;;;;N;;;;; +089C;ARABIC MADDA WAAJIB;Mn;230;NSM;;;;;N;;;;; +089D;ARABIC SUPERSCRIPT ALEF MOKHASSAS;Mn;230;NSM;;;;;N;;;;; +089E;ARABIC DOUBLED MADDA;Mn;230;NSM;;;;;N;;;;; +089F;ARABIC HALF MADDA OVER MADDA;Mn;230;NSM;;;;;N;;;;; 08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;; 08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; 08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2110,6 +2152,7 @@ 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; 08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +08B5;ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2118,6 +2161,27 @@ 08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;; 08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;; 08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;; +08BE;ARABIC LETTER PEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +08BF;ARABIC LETTER TEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +08C0;ARABIC LETTER TTEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +08C1;ARABIC LETTER TCHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +08C2;ARABIC LETTER KEHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +08C3;ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +08C4;ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; +08C8;ARABIC LETTER GRAF;Lo;0;AL;;;;;N;;;;; +08C9;ARABIC SMALL FARSI YEH;Lm;0;AL;;;;;N;;;;; +08CA;ARABIC SMALL HIGH FARSI YEH;Mn;230;NSM;;;;;N;;;;; +08CB;ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW;Mn;230;NSM;;;;;N;;;;; +08CC;ARABIC SMALL HIGH WORD SAH;Mn;230;NSM;;;;;N;;;;; +08CD;ARABIC SMALL HIGH ZAH;Mn;230;NSM;;;;;N;;;;; +08CE;ARABIC LARGE ROUND DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +08CF;ARABIC LARGE ROUND DOT BELOW;Mn;220;NSM;;;;;N;;;;; +08D0;ARABIC SUKUN BELOW;Mn;220;NSM;;;;;N;;;;; +08D1;ARABIC LARGE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; +08D2;ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; 08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;; 08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;; 08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;; @@ -2621,6 +2685,7 @@ 0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; 0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; 0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0B55;ORIYA SIGN OVERLINE;Mn;0;NSM;;;;;N;;;;; 0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; 0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; @@ -2775,6 +2840,7 @@ 0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; 0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; 0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3C;TELUGU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; 0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; @@ -2795,6 +2861,7 @@ 0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; 0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; 0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;; +0C5D;TELUGU LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;; 0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -2890,6 +2957,7 @@ 0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; 0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDD;KANNADA LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;; 0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; 0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; @@ -2911,6 +2979,7 @@ 0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0D04;MALAYALAM LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;; 0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; 0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; 0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; @@ -3024,6 +3093,7 @@ 0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; 0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; 0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; +0D81;SINHALA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; 0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; 0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; @@ -5245,6 +5315,7 @@ 170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; 170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; 170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170D;TAGALOG LETTER RA;Lo;0;L;;;;;N;;;;; 170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; 170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; 1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; @@ -5252,6 +5323,8 @@ 1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1715;TAGALOG SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;; +171F;TAGALOG LETTER ARCHAIC RA;Lo;0;L;;;;;N;;;;; 1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; 1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; 1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; @@ -5272,7 +5345,7 @@ 1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; 1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;; 1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; @@ -5442,6 +5515,7 @@ 180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; 180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; 180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; +180F;MONGOLIAN FREE VARIATION SELECTOR FOUR;Mn;0;NSM;;;;;N;;;;; 1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -6044,6 +6118,22 @@ 1ABC;COMBINING DOUBLE PARENTHESES ABOVE;Mn;230;NSM;;;;;N;;;;; 1ABD;COMBINING PARENTHESES BELOW;Mn;220;NSM;;;;;N;;;;; 1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;; +1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;; +1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;; +1AC1;COMBINING LEFT PARENTHESIS ABOVE LEFT;Mn;230;NSM;;;;;N;;;;; +1AC2;COMBINING RIGHT PARENTHESIS ABOVE RIGHT;Mn;230;NSM;;;;;N;;;;; +1AC3;COMBINING LEFT PARENTHESIS BELOW LEFT;Mn;220;NSM;;;;;N;;;;; +1AC4;COMBINING RIGHT PARENTHESIS BELOW RIGHT;Mn;220;NSM;;;;;N;;;;; +1AC5;COMBINING SQUARE BRACKETS ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC6;COMBINING NUMBER SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC7;COMBINING INVERTED DOUBLE ARCH ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC8;COMBINING PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC9;COMBINING DOUBLE PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1ACA;COMBINING DOUBLE PLUS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +1ACB;COMBINING TRIPLE ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1ACC;COMBINING LATIN SMALL LETTER INSULAR G;Mn;230;NSM;;;;;N;;;;; +1ACD;COMBINING LATIN SMALL LETTER INSULAR R;Mn;230;NSM;;;;;N;;;;; +1ACE;COMBINING LATIN SMALL LETTER INSULAR T;Mn;230;NSM;;;;;N;;;;; 1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; 1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; 1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; @@ -6120,6 +6210,7 @@ 1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; 1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; 1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; +1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;; 1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -6165,6 +6256,8 @@ 1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; 1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; 1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; +1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;; +1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;; 1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; 1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; 1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; @@ -6763,6 +6856,7 @@ 1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;; +1DFA;COMBINING DOT BELOW LEFT;Mn;218;NSM;;;;;N;;;;; 1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;; 1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;; 1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; @@ -7442,6 +7536,7 @@ 20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;; 20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;; 20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;; +20C0;SOM SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; @@ -10133,6 +10228,7 @@ 2B93;NEWLINE RIGHT;So;0;ON;;;;;N;;;;; 2B94;FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE;So;0;ON;;;;;N;;;;; 2B95;RIGHTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B97;SYMBOL FOR TYPE A ELECTRONICS;So;0;ON;;;;;N;;;;; 2B98;THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;; 2B99;THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;; 2B9A;THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;; @@ -10284,6 +10380,7 @@ 2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; 2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; 2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; +2C2F;GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;Lu;0;L;;;;;N;;;;2C5F; 2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 @@ -10331,6 +10428,7 @@ 2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C 2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D 2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E +2C5F;GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;Ll;0;L;;;;;N;;;2C2F;;2C2F 2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; 2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; @@ -10776,6 +10874,20 @@ 2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;; 2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;; 2E4F;CORNISH VERSE DIVIDER;Po;0;ON;;;;;N;;;;; +2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;; +2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;; +2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;; +2E53;MEDIEVAL EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +2E54;MEDIEVAL QUESTION MARK;Po;0;ON;;;;;N;;;;; +2E55;LEFT SQUARE BRACKET WITH STROKE;Ps;0;ON;;;;;Y;;;;; +2E56;RIGHT SQUARE BRACKET WITH STROKE;Pe;0;ON;;;;;Y;;;;; +2E57;LEFT SQUARE BRACKET WITH DOUBLE STROKE;Ps;0;ON;;;;;Y;;;;; +2E58;RIGHT SQUARE BRACKET WITH DOUBLE STROKE;Pe;0;ON;;;;;Y;;;;; +2E59;TOP HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5A;TOP HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5B;BOTTOM HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5C;BOTTOM HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5D;OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; @@ -11550,6 +11662,11 @@ 31B8;BOPOMOFO LETTER GH;Lo;0;L;;;;;N;;;;; 31B9;BOPOMOFO LETTER LH;Lo;0;L;;;;;N;;;;; 31BA;BOPOMOFO LETTER ZY;Lo;0;L;;;;;N;;;;; +31BB;BOPOMOFO FINAL LETTER G;Lo;0;L;;;;;N;;;;; +31BC;BOPOMOFO LETTER GW;Lo;0;L;;;;;N;;;;; +31BD;BOPOMOFO LETTER KW;Lo;0;L;;;;;N;;;;; +31BE;BOPOMOFO LETTER OE;Lo;0;L;;;;;N;;;;; +31BF;BOPOMOFO LETTER AH;Lo;0;L;;;;;N;;;;; 31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; 31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; 31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; @@ -12114,7 +12231,7 @@ 33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; 33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; 3400;;Lo;0;L;;;;;N;;;;; -4DB5;;Lo;0;L;;;;;N;;;;; +4DBF;;Lo;0;L;;;;;N;;;;; 4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; 4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; 4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; @@ -12180,7 +12297,7 @@ 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; -9FEF;;Lo;0;L;;;;;N;;;;; +9FFF;;Lo;0;L;;;;;N;;;;; A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; @@ -14125,11 +14242,30 @@ A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD; A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF; A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE +A7C0;LATIN CAPITAL LETTER OLD POLISH O;Lu;0;L;;;;;N;;;;A7C1; +A7C1;LATIN SMALL LETTER OLD POLISH O;Ll;0;L;;;;;N;;;A7C0;;A7C0 A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3; A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2 A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794; A7C5;LATIN CAPITAL LETTER S WITH HOOK;Lu;0;L;;;;;N;;;;0282; A7C6;LATIN CAPITAL LETTER Z WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;1D8E; +A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8; +A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7 +A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA; +A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9 +A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1; +A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0 +A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;; +A7D5;LATIN SMALL LETTER DOUBLE WYNN;Ll;0;L;;;;;N;;;;; +A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7; +A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6 +A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9; +A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8 +A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L; 0043;;;;N;;;;; +A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L; 0046;;;;N;;;;; +A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L; 0051;;;;N;;;;; +A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6; +A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;; A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L; 0126;;;;N;;;;; A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L; 0153;;;;N;;;;; @@ -14183,6 +14319,7 @@ A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; +A82C;SYLOTI NAGRI SIGN ALTERNATE HASANTA;Mn;9;NSM;;;;;N;;;;; A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; @@ -14897,6 +15034,10 @@ AB64;LATIN SMALL LETTER INVERTED ALPHA;Ll;0;L;;;;;N;;;;; AB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;; AB66;LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; AB67;LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +AB68;LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +AB69;MODIFIER LETTER SMALL TURNED W;Lm;0;L; 028D;;;;N;;;;; +AB6A;MODIFIER LETTER LEFT TACK;Sk;0;ON;;;;;N;;;;; +AB6B;MODIFIER LETTER RIGHT TACK;Sk;0;ON;;;;;N;;;;; AB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0 AB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1 AB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2 @@ -15759,6 +15900,7 @@ FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;; FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;; FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;; FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;; +FBC2;ARABIC SYMBOL WASLA ABOVE;Sk;0;AL;;;;;N;;;;; FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; @@ -16124,6 +16266,22 @@ FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;; FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; FD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;; FD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD40;ARABIC LIGATURE RAHIMAHU ALLAAH;So;0;ON;;;;;N;;;;; +FD41;ARABIC LIGATURE RADI ALLAAHU ANH;So;0;ON;;;;;N;;;;; +FD42;ARABIC LIGATURE RADI ALLAAHU ANHAA;So;0;ON;;;;;N;;;;; +FD43;ARABIC LIGATURE RADI ALLAAHU ANHUM;So;0;ON;;;;;N;;;;; +FD44;ARABIC LIGATURE RADI ALLAAHU ANHUMAA;So;0;ON;;;;;N;;;;; +FD45;ARABIC LIGATURE RADI ALLAAHU ANHUNNA;So;0;ON;;;;;N;;;;; +FD46;ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;So;0;ON;;;;;N;;;;; +FD47;ARABIC LIGATURE ALAYHI AS-SALAAM;So;0;ON;;;;;N;;;;; +FD48;ARABIC LIGATURE ALAYHIM AS-SALAAM;So;0;ON;;;;;N;;;;; +FD49;ARABIC LIGATURE ALAYHIMAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4A;ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;So;0;ON;;;;;N;;;;; +FD4B;ARABIC LIGATURE QUDDISA SIRRAH;So;0;ON;;;;;N;;;;; +FD4C;ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;So;0;ON;;;;;N;;;;; +FD4D;ARABIC LIGATURE ALAYHAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4E;ARABIC LIGATURE TABAARAKA WA-TAAALAA;So;0;ON;;;;;N;;;;; +FD4F;ARABIC LIGATURE RAHIMAHUM ALLAAH;So;0;ON;;;;;N;;;;; FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; @@ -16242,6 +16400,7 @@ FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; +FDCF;ARABIC LIGATURE SALAAMUHU ALAYNAA;So;0;ON;;;;;N;;;;; FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; @@ -16256,6 +16415,8 @@ FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 06 FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; +FDFE;ARABIC LIGATURE SUBHAANAHU WA TAAALAA;So;0;ON;;;;;N;;;;; +FDFF;ARABIC LIGATURE AZZA WA JALL;So;0;ON;;;;;N;;;;; FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; @@ -17086,6 +17247,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; 1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; 1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; +1019C;ASCIA SYMBOL;So;0;ON;;;;;N;;;;; 101A0;GREEK SYMBOL TAU RHO;So;0;ON;;;;;N;;;;; 101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; 101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; @@ -17762,6 +17924,76 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;; 10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;; 1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;; +10570;VITHKUQI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;10597; +10571;VITHKUQI CAPITAL LETTER BBE;Lu;0;L;;;;;N;;;;10598; +10572;VITHKUQI CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;10599; +10573;VITHKUQI CAPITAL LETTER CE;Lu;0;L;;;;;N;;;;1059A; +10574;VITHKUQI CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;1059B; +10575;VITHKUQI CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;1059C; +10576;VITHKUQI CAPITAL LETTER DHE;Lu;0;L;;;;;N;;;;1059D; +10577;VITHKUQI CAPITAL LETTER EI;Lu;0;L;;;;;N;;;;1059E; +10578;VITHKUQI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;1059F; +10579;VITHKUQI CAPITAL LETTER FE;Lu;0;L;;;;;N;;;;105A0; +1057A;VITHKUQI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;105A1; +1057C;VITHKUQI CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;105A3; +1057D;VITHKUQI CAPITAL LETTER HHA;Lu;0;L;;;;;N;;;;105A4; +1057E;VITHKUQI CAPITAL LETTER I;Lu;0;L;;;;;N;;;;105A5; +1057F;VITHKUQI CAPITAL LETTER IJE;Lu;0;L;;;;;N;;;;105A6; +10580;VITHKUQI CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;105A7; +10581;VITHKUQI CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;105A8; +10582;VITHKUQI CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;105A9; +10583;VITHKUQI CAPITAL LETTER LLA;Lu;0;L;;;;;N;;;;105AA; +10584;VITHKUQI CAPITAL LETTER ME;Lu;0;L;;;;;N;;;;105AB; +10585;VITHKUQI CAPITAL LETTER NE;Lu;0;L;;;;;N;;;;105AC; +10586;VITHKUQI CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;105AD; +10587;VITHKUQI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;105AE; +10588;VITHKUQI CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;105AF; +10589;VITHKUQI CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;105B0; +1058A;VITHKUQI CAPITAL LETTER RE;Lu;0;L;;;;;N;;;;105B1; +1058C;VITHKUQI CAPITAL LETTER SE;Lu;0;L;;;;;N;;;;105B3; +1058D;VITHKUQI CAPITAL LETTER SHE;Lu;0;L;;;;;N;;;;105B4; +1058E;VITHKUQI CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;105B5; +1058F;VITHKUQI CAPITAL LETTER THE;Lu;0;L;;;;;N;;;;105B6; +10590;VITHKUQI CAPITAL LETTER U;Lu;0;L;;;;;N;;;;105B7; +10591;VITHKUQI CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;105B8; +10592;VITHKUQI CAPITAL LETTER XE;Lu;0;L;;;;;N;;;;105B9; +10594;VITHKUQI CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;105BB; +10595;VITHKUQI CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;105BC; +10597;VITHKUQI SMALL LETTER A;Ll;0;L;;;;;N;;;10570;;10570 +10598;VITHKUQI SMALL LETTER BBE;Ll;0;L;;;;;N;;;10571;;10571 +10599;VITHKUQI SMALL LETTER BE;Ll;0;L;;;;;N;;;10572;;10572 +1059A;VITHKUQI SMALL LETTER CE;Ll;0;L;;;;;N;;;10573;;10573 +1059B;VITHKUQI SMALL LETTER CHE;Ll;0;L;;;;;N;;;10574;;10574 +1059C;VITHKUQI SMALL LETTER DE;Ll;0;L;;;;;N;;;10575;;10575 +1059D;VITHKUQI SMALL LETTER DHE;Ll;0;L;;;;;N;;;10576;;10576 +1059E;VITHKUQI SMALL LETTER EI;Ll;0;L;;;;;N;;;10577;;10577 +1059F;VITHKUQI SMALL LETTER E;Ll;0;L;;;;;N;;;10578;;10578 +105A0;VITHKUQI SMALL LETTER FE;Ll;0;L;;;;;N;;;10579;;10579 +105A1;VITHKUQI SMALL LETTER GA;Ll;0;L;;;;;N;;;1057A;;1057A +105A3;VITHKUQI SMALL LETTER HA;Ll;0;L;;;;;N;;;1057C;;1057C +105A4;VITHKUQI SMALL LETTER HHA;Ll;0;L;;;;;N;;;1057D;;1057D +105A5;VITHKUQI SMALL LETTER I;Ll;0;L;;;;;N;;;1057E;;1057E +105A6;VITHKUQI SMALL LETTER IJE;Ll;0;L;;;;;N;;;1057F;;1057F +105A7;VITHKUQI SMALL LETTER JE;Ll;0;L;;;;;N;;;10580;;10580 +105A8;VITHKUQI SMALL LETTER KA;Ll;0;L;;;;;N;;;10581;;10581 +105A9;VITHKUQI SMALL LETTER LA;Ll;0;L;;;;;N;;;10582;;10582 +105AA;VITHKUQI SMALL LETTER LLA;Ll;0;L;;;;;N;;;10583;;10583 +105AB;VITHKUQI SMALL LETTER ME;Ll;0;L;;;;;N;;;10584;;10584 +105AC;VITHKUQI SMALL LETTER NE;Ll;0;L;;;;;N;;;10585;;10585 +105AD;VITHKUQI SMALL LETTER NJE;Ll;0;L;;;;;N;;;10586;;10586 +105AE;VITHKUQI SMALL LETTER O;Ll;0;L;;;;;N;;;10587;;10587 +105AF;VITHKUQI SMALL LETTER PE;Ll;0;L;;;;;N;;;10588;;10588 +105B0;VITHKUQI SMALL LETTER QA;Ll;0;L;;;;;N;;;10589;;10589 +105B1;VITHKUQI SMALL LETTER RE;Ll;0;L;;;;;N;;;1058A;;1058A +105B3;VITHKUQI SMALL LETTER SE;Ll;0;L;;;;;N;;;1058C;;1058C +105B4;VITHKUQI SMALL LETTER SHE;Ll;0;L;;;;;N;;;1058D;;1058D +105B5;VITHKUQI SMALL LETTER TE;Ll;0;L;;;;;N;;;1058E;;1058E +105B6;VITHKUQI SMALL LETTER THE;Ll;0;L;;;;;N;;;1058F;;1058F +105B7;VITHKUQI SMALL LETTER U;Ll;0;L;;;;;N;;;10590;;10590 +105B8;VITHKUQI SMALL LETTER VE;Ll;0;L;;;;;N;;;10591;;10591 +105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592 +105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594 +105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595 10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;; 10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;; 10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;; @@ -18103,6 +18335,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;; 10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;; 10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;; +10780;MODIFIER LETTER SMALL CAPITAL AA;Lm;0;L;;;;;N;;;;; +10781;MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;Lm;0;L; 02D0;;;;N;;;;; +10782;MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;Lm;0;L; 02D1;;;;N;;;;; +10783;MODIFIER LETTER SMALL AE;Lm;0;L; 00E6;;;;N;;;;; +10784;MODIFIER LETTER SMALL CAPITAL B;Lm;0;L; 0299;;;;N;;;;; +10785;MODIFIER LETTER SMALL B WITH HOOK;Lm;0;L; 0253;;;;N;;;;; +10787;MODIFIER LETTER SMALL DZ DIGRAPH;Lm;0;L; 02A3;;;;N;;;;; +10788;MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB66;;;;N;;;;; +10789;MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;Lm;0;L; 02A5;;;;N;;;;; +1078A;MODIFIER LETTER SMALL DEZH DIGRAPH;Lm;0;L; 02A4;;;;N;;;;; +1078B;MODIFIER LETTER SMALL D WITH TAIL;Lm;0;L; 0256;;;;N;;;;; +1078C;MODIFIER LETTER SMALL D WITH HOOK;Lm;0;L; 0257;;;;N;;;;; +1078D;MODIFIER LETTER SMALL D WITH HOOK AND TAIL;Lm;0;L; 1D91;;;;N;;;;; +1078E;MODIFIER LETTER SMALL REVERSED E;Lm;0;L; 0258;;;;N;;;;; +1078F;MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;Lm;0;L; 025E;;;;N;;;;; +10790;MODIFIER LETTER SMALL FENG DIGRAPH;Lm;0;L; 02A9;;;;N;;;;; +10791;MODIFIER LETTER SMALL RAMS HORN;Lm;0;L; 0264;;;;N;;;;; +10792;MODIFIER LETTER SMALL CAPITAL G;Lm;0;L; 0262;;;;N;;;;; +10793;MODIFIER LETTER SMALL G WITH HOOK;Lm;0;L; 0260;;;;N;;;;; +10794;MODIFIER LETTER SMALL CAPITAL G WITH HOOK;Lm;0;L; 029B;;;;N;;;;; +10795;MODIFIER LETTER SMALL H WITH STROKE;Lm;0;L; 0127;;;;N;;;;; +10796;MODIFIER LETTER SMALL CAPITAL H;Lm;0;L; 029C;;;;N;;;;; +10797;MODIFIER LETTER SMALL HENG WITH HOOK;Lm;0;L; 0267;;;;N;;;;; +10798;MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;Lm;0;L; 0284;;;;N;;;;; +10799;MODIFIER LETTER SMALL LS DIGRAPH;Lm;0;L; 02AA;;;;N;;;;; +1079A;MODIFIER LETTER SMALL LZ DIGRAPH;Lm;0;L; 02AB;;;;N;;;;; +1079B;MODIFIER LETTER SMALL L WITH BELT;Lm;0;L; 026C;;;;N;;;;; +1079C;MODIFIER LETTER SMALL CAPITAL L WITH BELT;Lm;0;L; 1DF04;;;;N;;;;; +1079D;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;Lm;0;L; A78E;;;;N;;;;; +1079E;MODIFIER LETTER SMALL LEZH;Lm;0;L; 026E;;;;N;;;;; +1079F;MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;Lm;0;L; 1DF05;;;;N;;;;; +107A0;MODIFIER LETTER SMALL TURNED Y;Lm;0;L; 028E;;;;N;;;;; +107A1;MODIFIER LETTER SMALL TURNED Y WITH BELT;Lm;0;L; 1DF06;;;;N;;;;; +107A2;MODIFIER LETTER SMALL O WITH STROKE;Lm;0;L; 00F8;;;;N;;;;; +107A3;MODIFIER LETTER SMALL CAPITAL OE;Lm;0;L; 0276;;;;N;;;;; +107A4;MODIFIER LETTER SMALL CLOSED OMEGA;Lm;0;L; 0277;;;;N;;;;; +107A5;MODIFIER LETTER SMALL Q;Lm;0;L; 0071;;;;N;;;;; +107A6;MODIFIER LETTER SMALL TURNED R WITH LONG LEG;Lm;0;L; 027A;;;;N;;;;; +107A7;MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;Lm;0;L; 1DF08;;;;N;;;;; +107A8;MODIFIER LETTER SMALL R WITH TAIL;Lm;0;L; 027D;;;;N;;;;; +107A9;MODIFIER LETTER SMALL R WITH FISHHOOK;Lm;0;L; 027E;;;;N;;;;; +107AA;MODIFIER LETTER SMALL CAPITAL R;Lm;0;L; 0280;;;;N;;;;; +107AB;MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;Lm;0;L; 02A8;;;;N;;;;; +107AC;MODIFIER LETTER SMALL TS DIGRAPH;Lm;0;L; 02A6;;;;N;;;;; +107AD;MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB67;;;;N;;;;; +107AE;MODIFIER LETTER SMALL TESH DIGRAPH;Lm;0;L; 02A7;;;;N;;;;; +107AF;MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;Lm;0;L; 0288;;;;N;;;;; +107B0;MODIFIER LETTER SMALL V WITH RIGHT HOOK;Lm;0;L; 2C71;;;;N;;;;; +107B2;MODIFIER LETTER SMALL CAPITAL Y;Lm;0;L; 028F;;;;N;;;;; +107B3;MODIFIER LETTER GLOTTAL STOP WITH STROKE;Lm;0;L; 02A1;;;;N;;;;; +107B4;MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;Lm;0;L; 02A2;;;;N;;;;; +107B5;MODIFIER LETTER BILABIAL CLICK;Lm;0;L; 0298;;;;N;;;;; +107B6;MODIFIER LETTER DENTAL CLICK;Lm;0;L; 01C0;;;;N;;;;; +107B7;MODIFIER LETTER LATERAL CLICK;Lm;0;L; 01C1;;;;N;;;;; +107B8;MODIFIER LETTER ALVEOLAR CLICK;Lm;0;L; 01C2;;;;N;;;;; +107B9;MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lm;0;L; 1DF0A;;;;N;;;;; +107BA;MODIFIER LETTER SMALL S WITH CURL;Lm;0;L; 1DF1E;;;;N;;;;; 10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; 10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; 10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; @@ -19057,6 +19346,53 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;; 10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;; 10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;; +10E80;YEZIDI LETTER ELIF;Lo;0;R;;;;;N;;;;; +10E81;YEZIDI LETTER BE;Lo;0;R;;;;;N;;;;; +10E82;YEZIDI LETTER PE;Lo;0;R;;;;;N;;;;; +10E83;YEZIDI LETTER PHE;Lo;0;R;;;;;N;;;;; +10E84;YEZIDI LETTER THE;Lo;0;R;;;;;N;;;;; +10E85;YEZIDI LETTER SE;Lo;0;R;;;;;N;;;;; +10E86;YEZIDI LETTER CIM;Lo;0;R;;;;;N;;;;; +10E87;YEZIDI LETTER CHIM;Lo;0;R;;;;;N;;;;; +10E88;YEZIDI LETTER CHHIM;Lo;0;R;;;;;N;;;;; +10E89;YEZIDI LETTER HHA;Lo;0;R;;;;;N;;;;; +10E8A;YEZIDI LETTER XA;Lo;0;R;;;;;N;;;;; +10E8B;YEZIDI LETTER DAL;Lo;0;R;;;;;N;;;;; +10E8C;YEZIDI LETTER ZAL;Lo;0;R;;;;;N;;;;; +10E8D;YEZIDI LETTER RA;Lo;0;R;;;;;N;;;;; +10E8E;YEZIDI LETTER RHA;Lo;0;R;;;;;N;;;;; +10E8F;YEZIDI LETTER ZA;Lo;0;R;;;;;N;;;;; +10E90;YEZIDI LETTER JA;Lo;0;R;;;;;N;;;;; +10E91;YEZIDI LETTER SIN;Lo;0;R;;;;;N;;;;; +10E92;YEZIDI LETTER SHIN;Lo;0;R;;;;;N;;;;; +10E93;YEZIDI LETTER SAD;Lo;0;R;;;;;N;;;;; +10E94;YEZIDI LETTER DAD;Lo;0;R;;;;;N;;;;; +10E95;YEZIDI LETTER TA;Lo;0;R;;;;;N;;;;; +10E96;YEZIDI LETTER ZE;Lo;0;R;;;;;N;;;;; +10E97;YEZIDI LETTER EYN;Lo;0;R;;;;;N;;;;; +10E98;YEZIDI LETTER XHEYN;Lo;0;R;;;;;N;;;;; +10E99;YEZIDI LETTER FA;Lo;0;R;;;;;N;;;;; +10E9A;YEZIDI LETTER VA;Lo;0;R;;;;;N;;;;; +10E9B;YEZIDI LETTER VA ALTERNATE FORM;Lo;0;R;;;;;N;;;;; +10E9C;YEZIDI LETTER QAF;Lo;0;R;;;;;N;;;;; +10E9D;YEZIDI LETTER KAF;Lo;0;R;;;;;N;;;;; +10E9E;YEZIDI LETTER KHAF;Lo;0;R;;;;;N;;;;; +10E9F;YEZIDI LETTER GAF;Lo;0;R;;;;;N;;;;; +10EA0;YEZIDI LETTER LAM;Lo;0;R;;;;;N;;;;; +10EA1;YEZIDI LETTER MIM;Lo;0;R;;;;;N;;;;; +10EA2;YEZIDI LETTER NUN;Lo;0;R;;;;;N;;;;; +10EA3;YEZIDI LETTER UM;Lo;0;R;;;;;N;;;;; +10EA4;YEZIDI LETTER WAW;Lo;0;R;;;;;N;;;;; +10EA5;YEZIDI LETTER OW;Lo;0;R;;;;;N;;;;; +10EA6;YEZIDI LETTER EW;Lo;0;R;;;;;N;;;;; +10EA7;YEZIDI LETTER HAY;Lo;0;R;;;;;N;;;;; +10EA8;YEZIDI LETTER YOT;Lo;0;R;;;;;N;;;;; +10EA9;YEZIDI LETTER ET;Lo;0;R;;;;;N;;;;; +10EAB;YEZIDI COMBINING HAMZA MARK;Mn;230;NSM;;;;;N;;;;; +10EAC;YEZIDI COMBINING MADDA MARK;Mn;230;NSM;;;;;N;;;;; +10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;; +10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;; +10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;; 10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;; 10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;; @@ -19139,6 +19475,60 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; 10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;; 10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; +10F70;OLD UYGHUR LETTER ALEPH;Lo;0;R;;;;;N;;;;; +10F71;OLD UYGHUR LETTER BETH;Lo;0;R;;;;;N;;;;; +10F72;OLD UYGHUR LETTER GIMEL-HETH;Lo;0;R;;;;;N;;;;; +10F73;OLD UYGHUR LETTER WAW;Lo;0;R;;;;;N;;;;; +10F74;OLD UYGHUR LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +10F75;OLD UYGHUR LETTER FINAL HETH;Lo;0;R;;;;;N;;;;; +10F76;OLD UYGHUR LETTER YODH;Lo;0;R;;;;;N;;;;; +10F77;OLD UYGHUR LETTER KAPH;Lo;0;R;;;;;N;;;;; +10F78;OLD UYGHUR LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +10F79;OLD UYGHUR LETTER MEM;Lo;0;R;;;;;N;;;;; +10F7A;OLD UYGHUR LETTER NUN;Lo;0;R;;;;;N;;;;; +10F7B;OLD UYGHUR LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +10F7C;OLD UYGHUR LETTER PE;Lo;0;R;;;;;N;;;;; +10F7D;OLD UYGHUR LETTER SADHE;Lo;0;R;;;;;N;;;;; +10F7E;OLD UYGHUR LETTER RESH;Lo;0;R;;;;;N;;;;; +10F7F;OLD UYGHUR LETTER SHIN;Lo;0;R;;;;;N;;;;; +10F80;OLD UYGHUR LETTER TAW;Lo;0;R;;;;;N;;;;; +10F81;OLD UYGHUR LETTER LESH;Lo;0;R;;;;;N;;;;; +10F82;OLD UYGHUR COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +10F83;OLD UYGHUR COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10F84;OLD UYGHUR COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +10F85;OLD UYGHUR COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +10F86;OLD UYGHUR PUNCTUATION BAR;Po;0;R;;;;;N;;;;; +10F87;OLD UYGHUR PUNCTUATION TWO BARS;Po;0;R;;;;;N;;;;; +10F88;OLD UYGHUR PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;; +10F89;OLD UYGHUR PUNCTUATION FOUR DOTS;Po;0;R;;;;;N;;;;; +10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; +10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;; +10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;; +10FB3;CHORASMIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; +10FB4;CHORASMIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; +10FB5;CHORASMIAN LETTER HE;Lo;0;R;;;;;N;;;;; +10FB6;CHORASMIAN LETTER WAW;Lo;0;R;;;;;N;;;;; +10FB7;CHORASMIAN LETTER CURLED WAW;Lo;0;R;;;;;N;;;;; +10FB8;CHORASMIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +10FB9;CHORASMIAN LETTER HETH;Lo;0;R;;;;;N;;;;; +10FBA;CHORASMIAN LETTER YODH;Lo;0;R;;;;;N;;;;; +10FBB;CHORASMIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; +10FBC;CHORASMIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +10FBD;CHORASMIAN LETTER MEM;Lo;0;R;;;;;N;;;;; +10FBE;CHORASMIAN LETTER NUN;Lo;0;R;;;;;N;;;;; +10FBF;CHORASMIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +10FC0;CHORASMIAN LETTER AYIN;Lo;0;R;;;;;N;;;;; +10FC1;CHORASMIAN LETTER PE;Lo;0;R;;;;;N;;;;; +10FC2;CHORASMIAN LETTER RESH;Lo;0;R;;;;;N;;;;; +10FC3;CHORASMIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; +10FC4;CHORASMIAN LETTER TAW;Lo;0;R;;;;;N;;;;; +10FC5;CHORASMIAN NUMBER ONE;No;0;R;;;;1;N;;;;; +10FC6;CHORASMIAN NUMBER TWO;No;0;R;;;;2;N;;;;; +10FC7;CHORASMIAN NUMBER THREE;No;0;R;;;;3;N;;;;; +10FC8;CHORASMIAN NUMBER FOUR;No;0;R;;;;4;N;;;;; +10FC9;CHORASMIAN NUMBER TEN;No;0;R;;;;10;N;;;;; +10FCA;CHORASMIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10FCB;CHORASMIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; 10FE0;ELYMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10FE1;ELYMAIC LETTER BETH;Lo;0;R;;;;;N;;;;; 10FE2;ELYMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;; @@ -19270,6 +19660,12 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11070;BRAHMI SIGN OLD TAMIL VIRAMA;Mn;9;NSM;;;;;N;;;;; +11071;BRAHMI LETTER OLD TAMIL SHORT E;Lo;0;L;;;;;N;;;;; +11072;BRAHMI LETTER OLD TAMIL SHORT O;Lo;0;L;;;;;N;;;;; +11073;BRAHMI VOWEL SIGN OLD TAMIL SHORT E;Mn;0;NSM;;;;;N;;;;; +11074;BRAHMI VOWEL SIGN OLD TAMIL SHORT O;Mn;0;NSM;;;;;N;;;;; +11075;BRAHMI LETTER OLD TAMIL LLA;Lo;0;L;;;;;N;;;;; 1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;; 11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; @@ -19337,6 +19733,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; 110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +110C2;KAITHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;; 110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;; 110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;; @@ -19443,6 +19840,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11144;CHAKMA LETTER LHAA;Lo;0;L;;;;;N;;;;; 11145;CHAKMA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 11146;CHAKMA VOWEL SIGN EI;Mc;0;L;;;;;N;;;;; +11147;CHAKMA LETTER VAA;Lo;0;L;;;;;N;;;;; 11150;MAHAJANI LETTER A;Lo;0;L;;;;;N;;;;; 11151;MAHAJANI LETTER I;Lo;0;L;;;;;N;;;;; 11152;MAHAJANI LETTER U;Lo;0;L;;;;;N;;;;; @@ -19560,6 +19958,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;; 111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;; 111CD;SHARADA SUTRA MARK;Po;0;L;;;;;N;;;;; +111CE;SHARADA VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;; +111CF;SHARADA SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 111D2;SHARADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -19941,10 +20341,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11457;NEWA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 11458;NEWA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1145A;NEWA DOUBLE COMMA;Po;0;L;;;;;N;;;;; 1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;; 1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;; 1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;; 1145F;NEWA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;; +11460;NEWA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; +11461;NEWA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; 11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;; 11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;; 11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;; @@ -20268,6 +20671,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;; 116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;; +116B9;TAKRI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -20336,6 +20740,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;; 1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;; 1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;; +11740;AHOM LETTER CA;Lo;0;L;;;;;N;;;;; +11741;AHOM LETTER TTA;Lo;0;L;;;;;N;;;;; +11742;AHOM LETTER TTHA;Lo;0;L;;;;;N;;;;; +11743;AHOM LETTER DDA;Lo;0;L;;;;;N;;;;; +11744;AHOM LETTER DDHA;Lo;0;L;;;;;N;;;;; +11745;AHOM LETTER NNA;Lo;0;L;;;;;N;;;;; +11746;AHOM LETTER LLA;Lo;0;L;;;;;N;;;;; 11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;; 11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;; 11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;; @@ -20480,6 +20891,78 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 118F1;WARANG CITI NUMBER EIGHTY;No;0;L;;;;80;N;;;;; 118F2;WARANG CITI NUMBER NINETY;No;0;L;;;;90;N;;;;; 118FF;WARANG CITI OM;Lo;0;L;;;;;N;;;;; +11900;DIVES AKURU LETTER A;Lo;0;L;;;;;N;;;;; +11901;DIVES AKURU LETTER AA;Lo;0;L;;;;;N;;;;; +11902;DIVES AKURU LETTER I;Lo;0;L;;;;;N;;;;; +11903;DIVES AKURU LETTER II;Lo;0;L;;;;;N;;;;; +11904;DIVES AKURU LETTER U;Lo;0;L;;;;;N;;;;; +11905;DIVES AKURU LETTER UU;Lo;0;L;;;;;N;;;;; +11906;DIVES AKURU LETTER E;Lo;0;L;;;;;N;;;;; +11909;DIVES AKURU LETTER O;Lo;0;L;;;;;N;;;;; +1190C;DIVES AKURU LETTER KA;Lo;0;L;;;;;N;;;;; +1190D;DIVES AKURU LETTER KHA;Lo;0;L;;;;;N;;;;; +1190E;DIVES AKURU LETTER GA;Lo;0;L;;;;;N;;;;; +1190F;DIVES AKURU LETTER GHA;Lo;0;L;;;;;N;;;;; +11910;DIVES AKURU LETTER NGA;Lo;0;L;;;;;N;;;;; +11911;DIVES AKURU LETTER CA;Lo;0;L;;;;;N;;;;; +11912;DIVES AKURU LETTER CHA;Lo;0;L;;;;;N;;;;; +11913;DIVES AKURU LETTER JA;Lo;0;L;;;;;N;;;;; +11915;DIVES AKURU LETTER NYA;Lo;0;L;;;;;N;;;;; +11916;DIVES AKURU LETTER TTA;Lo;0;L;;;;;N;;;;; +11918;DIVES AKURU LETTER DDA;Lo;0;L;;;;;N;;;;; +11919;DIVES AKURU LETTER DDHA;Lo;0;L;;;;;N;;;;; +1191A;DIVES AKURU LETTER NNA;Lo;0;L;;;;;N;;;;; +1191B;DIVES AKURU LETTER TA;Lo;0;L;;;;;N;;;;; +1191C;DIVES AKURU LETTER THA;Lo;0;L;;;;;N;;;;; +1191D;DIVES AKURU LETTER DA;Lo;0;L;;;;;N;;;;; +1191E;DIVES AKURU LETTER DHA;Lo;0;L;;;;;N;;;;; +1191F;DIVES AKURU LETTER NA;Lo;0;L;;;;;N;;;;; +11920;DIVES AKURU LETTER PA;Lo;0;L;;;;;N;;;;; +11921;DIVES AKURU LETTER PHA;Lo;0;L;;;;;N;;;;; +11922;DIVES AKURU LETTER BA;Lo;0;L;;;;;N;;;;; +11923;DIVES AKURU LETTER BHA;Lo;0;L;;;;;N;;;;; +11924;DIVES AKURU LETTER MA;Lo;0;L;;;;;N;;;;; +11925;DIVES AKURU LETTER YA;Lo;0;L;;;;;N;;;;; +11926;DIVES AKURU LETTER YYA;Lo;0;L;;;;;N;;;;; +11927;DIVES AKURU LETTER RA;Lo;0;L;;;;;N;;;;; +11928;DIVES AKURU LETTER LA;Lo;0;L;;;;;N;;;;; +11929;DIVES AKURU LETTER VA;Lo;0;L;;;;;N;;;;; +1192A;DIVES AKURU LETTER SHA;Lo;0;L;;;;;N;;;;; +1192B;DIVES AKURU LETTER SSA;Lo;0;L;;;;;N;;;;; +1192C;DIVES AKURU LETTER SA;Lo;0;L;;;;;N;;;;; +1192D;DIVES AKURU LETTER HA;Lo;0;L;;;;;N;;;;; +1192E;DIVES AKURU LETTER LLA;Lo;0;L;;;;;N;;;;; +1192F;DIVES AKURU LETTER ZA;Lo;0;L;;;;;N;;;;; +11930;DIVES AKURU VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +11931;DIVES AKURU VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +11932;DIVES AKURU VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +11933;DIVES AKURU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +11934;DIVES AKURU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +11935;DIVES AKURU VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +11937;DIVES AKURU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +11938;DIVES AKURU VOWEL SIGN O;Mc;0;L;11935 11930;;;;N;;;;; +1193B;DIVES AKURU SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1193C;DIVES AKURU SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +1193D;DIVES AKURU SIGN HALANTA;Mc;9;L;;;;;N;;;;; +1193E;DIVES AKURU VIRAMA;Mn;9;NSM;;;;;N;;;;; +1193F;DIVES AKURU PREFIXED NASAL SIGN;Lo;0;L;;;;;N;;;;; +11940;DIVES AKURU MEDIAL YA;Mc;0;L;;;;;N;;;;; +11941;DIVES AKURU INITIAL RA;Lo;0;L;;;;;N;;;;; +11942;DIVES AKURU MEDIAL RA;Mc;0;L;;;;;N;;;;; +11943;DIVES AKURU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +11944;DIVES AKURU DOUBLE DANDA;Po;0;L;;;;;N;;;;; +11945;DIVES AKURU GAP FILLER;Po;0;L;;;;;N;;;;; +11946;DIVES AKURU END OF TEXT MARK;Po;0;L;;;;;N;;;;; +11950;DIVES AKURU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11951;DIVES AKURU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11952;DIVES AKURU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11953;DIVES AKURU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11954;DIVES AKURU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11955;DIVES AKURU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11956;DIVES AKURU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11957;DIVES AKURU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11958;DIVES AKURU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11959;DIVES AKURU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 119A0;NANDINAGARI LETTER A;Lo;0;L;;;;;N;;;;; 119A1;NANDINAGARI LETTER AA;Lo;0;L;;;;;N;;;;; 119A2;NANDINAGARI LETTER I;Lo;0;L;;;;;N;;;;; @@ -20700,6 +21183,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;; 11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;; 11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;; +11AB0;CANADIAN SYLLABICS NATTILIK HI;Lo;0;L;;;;;N;;;;; +11AB1;CANADIAN SYLLABICS NATTILIK HII;Lo;0;L;;;;;N;;;;; +11AB2;CANADIAN SYLLABICS NATTILIK HO;Lo;0;L;;;;;N;;;;; +11AB3;CANADIAN SYLLABICS NATTILIK HOO;Lo;0;L;;;;;N;;;;; +11AB4;CANADIAN SYLLABICS NATTILIK HA;Lo;0;L;;;;;N;;;;; +11AB5;CANADIAN SYLLABICS NATTILIK HAA;Lo;0;L;;;;;N;;;;; +11AB6;CANADIAN SYLLABICS NATTILIK SHRI;Lo;0;L;;;;;N;;;;; +11AB7;CANADIAN SYLLABICS NATTILIK SHRII;Lo;0;L;;;;;N;;;;; +11AB8;CANADIAN SYLLABICS NATTILIK SHRO;Lo;0;L;;;;;N;;;;; +11AB9;CANADIAN SYLLABICS NATTILIK SHROO;Lo;0;L;;;;;N;;;;; +11ABA;CANADIAN SYLLABICS NATTILIK SHRA;Lo;0;L;;;;;N;;;;; +11ABB;CANADIAN SYLLABICS NATTILIK SHRAA;Lo;0;L;;;;;N;;;;; +11ABC;CANADIAN SYLLABICS SPE;Lo;0;L;;;;;N;;;;; +11ABD;CANADIAN SYLLABICS SPI;Lo;0;L;;;;;N;;;;; +11ABE;CANADIAN SYLLABICS SPO;Lo;0;L;;;;;N;;;;; +11ABF;CANADIAN SYLLABICS SPA;Lo;0;L;;;;;N;;;;; 11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;; 11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;; 11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;; @@ -21085,6 +21584,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;; 11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;; +11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;; 11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;; 11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;; 11FC2;TAMIL FRACTION ONE EIGHTIETH;No;0;L;;;;1/80;N;;;;; @@ -22370,6 +22870,105 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;; 12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;; 12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;; +12F90;CYPRO-MINOAN SIGN CM001;Lo;0;L;;;;;N;;;;; +12F91;CYPRO-MINOAN SIGN CM002;Lo;0;L;;;;;N;;;;; +12F92;CYPRO-MINOAN SIGN CM004;Lo;0;L;;;;;N;;;;; +12F93;CYPRO-MINOAN SIGN CM005;Lo;0;L;;;;;N;;;;; +12F94;CYPRO-MINOAN SIGN CM006;Lo;0;L;;;;;N;;;;; +12F95;CYPRO-MINOAN SIGN CM007;Lo;0;L;;;;;N;;;;; +12F96;CYPRO-MINOAN SIGN CM008;Lo;0;L;;;;;N;;;;; +12F97;CYPRO-MINOAN SIGN CM009;Lo;0;L;;;;;N;;;;; +12F98;CYPRO-MINOAN SIGN CM010;Lo;0;L;;;;;N;;;;; +12F99;CYPRO-MINOAN SIGN CM011;Lo;0;L;;;;;N;;;;; +12F9A;CYPRO-MINOAN SIGN CM012;Lo;0;L;;;;;N;;;;; +12F9B;CYPRO-MINOAN SIGN CM012B;Lo;0;L;;;;;N;;;;; +12F9C;CYPRO-MINOAN SIGN CM013;Lo;0;L;;;;;N;;;;; +12F9D;CYPRO-MINOAN SIGN CM015;Lo;0;L;;;;;N;;;;; +12F9E;CYPRO-MINOAN SIGN CM017;Lo;0;L;;;;;N;;;;; +12F9F;CYPRO-MINOAN SIGN CM019;Lo;0;L;;;;;N;;;;; +12FA0;CYPRO-MINOAN SIGN CM021;Lo;0;L;;;;;N;;;;; +12FA1;CYPRO-MINOAN SIGN CM023;Lo;0;L;;;;;N;;;;; +12FA2;CYPRO-MINOAN SIGN CM024;Lo;0;L;;;;;N;;;;; +12FA3;CYPRO-MINOAN SIGN CM025;Lo;0;L;;;;;N;;;;; +12FA4;CYPRO-MINOAN SIGN CM026;Lo;0;L;;;;;N;;;;; +12FA5;CYPRO-MINOAN SIGN CM027;Lo;0;L;;;;;N;;;;; +12FA6;CYPRO-MINOAN SIGN CM028;Lo;0;L;;;;;N;;;;; +12FA7;CYPRO-MINOAN SIGN CM029;Lo;0;L;;;;;N;;;;; +12FA8;CYPRO-MINOAN SIGN CM030;Lo;0;L;;;;;N;;;;; +12FA9;CYPRO-MINOAN SIGN CM033;Lo;0;L;;;;;N;;;;; +12FAA;CYPRO-MINOAN SIGN CM034;Lo;0;L;;;;;N;;;;; +12FAB;CYPRO-MINOAN SIGN CM035;Lo;0;L;;;;;N;;;;; +12FAC;CYPRO-MINOAN SIGN CM036;Lo;0;L;;;;;N;;;;; +12FAD;CYPRO-MINOAN SIGN CM037;Lo;0;L;;;;;N;;;;; +12FAE;CYPRO-MINOAN SIGN CM038;Lo;0;L;;;;;N;;;;; +12FAF;CYPRO-MINOAN SIGN CM039;Lo;0;L;;;;;N;;;;; +12FB0;CYPRO-MINOAN SIGN CM040;Lo;0;L;;;;;N;;;;; +12FB1;CYPRO-MINOAN SIGN CM041;Lo;0;L;;;;;N;;;;; +12FB2;CYPRO-MINOAN SIGN CM044;Lo;0;L;;;;;N;;;;; +12FB3;CYPRO-MINOAN SIGN CM046;Lo;0;L;;;;;N;;;;; +12FB4;CYPRO-MINOAN SIGN CM047;Lo;0;L;;;;;N;;;;; +12FB5;CYPRO-MINOAN SIGN CM049;Lo;0;L;;;;;N;;;;; +12FB6;CYPRO-MINOAN SIGN CM050;Lo;0;L;;;;;N;;;;; +12FB7;CYPRO-MINOAN SIGN CM051;Lo;0;L;;;;;N;;;;; +12FB8;CYPRO-MINOAN SIGN CM052;Lo;0;L;;;;;N;;;;; +12FB9;CYPRO-MINOAN SIGN CM053;Lo;0;L;;;;;N;;;;; +12FBA;CYPRO-MINOAN SIGN CM054;Lo;0;L;;;;;N;;;;; +12FBB;CYPRO-MINOAN SIGN CM055;Lo;0;L;;;;;N;;;;; +12FBC;CYPRO-MINOAN SIGN CM056;Lo;0;L;;;;;N;;;;; +12FBD;CYPRO-MINOAN SIGN CM058;Lo;0;L;;;;;N;;;;; +12FBE;CYPRO-MINOAN SIGN CM059;Lo;0;L;;;;;N;;;;; +12FBF;CYPRO-MINOAN SIGN CM060;Lo;0;L;;;;;N;;;;; +12FC0;CYPRO-MINOAN SIGN CM061;Lo;0;L;;;;;N;;;;; +12FC1;CYPRO-MINOAN SIGN CM062;Lo;0;L;;;;;N;;;;; +12FC2;CYPRO-MINOAN SIGN CM063;Lo;0;L;;;;;N;;;;; +12FC3;CYPRO-MINOAN SIGN CM064;Lo;0;L;;;;;N;;;;; +12FC4;CYPRO-MINOAN SIGN CM066;Lo;0;L;;;;;N;;;;; +12FC5;CYPRO-MINOAN SIGN CM067;Lo;0;L;;;;;N;;;;; +12FC6;CYPRO-MINOAN SIGN CM068;Lo;0;L;;;;;N;;;;; +12FC7;CYPRO-MINOAN SIGN CM069;Lo;0;L;;;;;N;;;;; +12FC8;CYPRO-MINOAN SIGN CM070;Lo;0;L;;;;;N;;;;; +12FC9;CYPRO-MINOAN SIGN CM071;Lo;0;L;;;;;N;;;;; +12FCA;CYPRO-MINOAN SIGN CM072;Lo;0;L;;;;;N;;;;; +12FCB;CYPRO-MINOAN SIGN CM073;Lo;0;L;;;;;N;;;;; +12FCC;CYPRO-MINOAN SIGN CM074;Lo;0;L;;;;;N;;;;; +12FCD;CYPRO-MINOAN SIGN CM075;Lo;0;L;;;;;N;;;;; +12FCE;CYPRO-MINOAN SIGN CM075B;Lo;0;L;;;;;N;;;;; +12FCF;CYPRO-MINOAN SIGN CM076;Lo;0;L;;;;;N;;;;; +12FD0;CYPRO-MINOAN SIGN CM078;Lo;0;L;;;;;N;;;;; +12FD1;CYPRO-MINOAN SIGN CM079;Lo;0;L;;;;;N;;;;; +12FD2;CYPRO-MINOAN SIGN CM080;Lo;0;L;;;;;N;;;;; +12FD3;CYPRO-MINOAN SIGN CM081;Lo;0;L;;;;;N;;;;; +12FD4;CYPRO-MINOAN SIGN CM082;Lo;0;L;;;;;N;;;;; +12FD5;CYPRO-MINOAN SIGN CM083;Lo;0;L;;;;;N;;;;; +12FD6;CYPRO-MINOAN SIGN CM084;Lo;0;L;;;;;N;;;;; +12FD7;CYPRO-MINOAN SIGN CM085;Lo;0;L;;;;;N;;;;; +12FD8;CYPRO-MINOAN SIGN CM086;Lo;0;L;;;;;N;;;;; +12FD9;CYPRO-MINOAN SIGN CM087;Lo;0;L;;;;;N;;;;; +12FDA;CYPRO-MINOAN SIGN CM088;Lo;0;L;;;;;N;;;;; +12FDB;CYPRO-MINOAN SIGN CM089;Lo;0;L;;;;;N;;;;; +12FDC;CYPRO-MINOAN SIGN CM090;Lo;0;L;;;;;N;;;;; +12FDD;CYPRO-MINOAN SIGN CM091;Lo;0;L;;;;;N;;;;; +12FDE;CYPRO-MINOAN SIGN CM092;Lo;0;L;;;;;N;;;;; +12FDF;CYPRO-MINOAN SIGN CM094;Lo;0;L;;;;;N;;;;; +12FE0;CYPRO-MINOAN SIGN CM095;Lo;0;L;;;;;N;;;;; +12FE1;CYPRO-MINOAN SIGN CM096;Lo;0;L;;;;;N;;;;; +12FE2;CYPRO-MINOAN SIGN CM097;Lo;0;L;;;;;N;;;;; +12FE3;CYPRO-MINOAN SIGN CM098;Lo;0;L;;;;;N;;;;; +12FE4;CYPRO-MINOAN SIGN CM099;Lo;0;L;;;;;N;;;;; +12FE5;CYPRO-MINOAN SIGN CM100;Lo;0;L;;;;;N;;;;; +12FE6;CYPRO-MINOAN SIGN CM101;Lo;0;L;;;;;N;;;;; +12FE7;CYPRO-MINOAN SIGN CM102;Lo;0;L;;;;;N;;;;; +12FE8;CYPRO-MINOAN SIGN CM103;Lo;0;L;;;;;N;;;;; +12FE9;CYPRO-MINOAN SIGN CM104;Lo;0;L;;;;;N;;;;; +12FEA;CYPRO-MINOAN SIGN CM105;Lo;0;L;;;;;N;;;;; +12FEB;CYPRO-MINOAN SIGN CM107;Lo;0;L;;;;;N;;;;; +12FEC;CYPRO-MINOAN SIGN CM108;Lo;0;L;;;;;N;;;;; +12FED;CYPRO-MINOAN SIGN CM109;Lo;0;L;;;;;N;;;;; +12FEE;CYPRO-MINOAN SIGN CM110;Lo;0;L;;;;;N;;;;; +12FEF;CYPRO-MINOAN SIGN CM112;Lo;0;L;;;;;N;;;;; +12FF0;CYPRO-MINOAN SIGN CM114;Lo;0;L;;;;;N;;;;; +12FF1;CYPRO-MINOAN SIGN CM301;Po;0;L;;;;;N;;;;; +12FF2;CYPRO-MINOAN SIGN CM302;Po;0;L;;;;;N;;;;; 13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -24645,6 +25244,95 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16A6E;MRO DANDA;Po;0;L;;;;;N;;;;; 16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;; +16A70;TANGSA LETTER OZ;Lo;0;L;;;;;N;;;;; +16A71;TANGSA LETTER OC;Lo;0;L;;;;;N;;;;; +16A72;TANGSA LETTER OQ;Lo;0;L;;;;;N;;;;; +16A73;TANGSA LETTER OX;Lo;0;L;;;;;N;;;;; +16A74;TANGSA LETTER AZ;Lo;0;L;;;;;N;;;;; +16A75;TANGSA LETTER AC;Lo;0;L;;;;;N;;;;; +16A76;TANGSA LETTER AQ;Lo;0;L;;;;;N;;;;; +16A77;TANGSA LETTER AX;Lo;0;L;;;;;N;;;;; +16A78;TANGSA LETTER VZ;Lo;0;L;;;;;N;;;;; +16A79;TANGSA LETTER VC;Lo;0;L;;;;;N;;;;; +16A7A;TANGSA LETTER VQ;Lo;0;L;;;;;N;;;;; +16A7B;TANGSA LETTER VX;Lo;0;L;;;;;N;;;;; +16A7C;TANGSA LETTER EZ;Lo;0;L;;;;;N;;;;; +16A7D;TANGSA LETTER EC;Lo;0;L;;;;;N;;;;; +16A7E;TANGSA LETTER EQ;Lo;0;L;;;;;N;;;;; +16A7F;TANGSA LETTER EX;Lo;0;L;;;;;N;;;;; +16A80;TANGSA LETTER IZ;Lo;0;L;;;;;N;;;;; +16A81;TANGSA LETTER IC;Lo;0;L;;;;;N;;;;; +16A82;TANGSA LETTER IQ;Lo;0;L;;;;;N;;;;; +16A83;TANGSA LETTER IX;Lo;0;L;;;;;N;;;;; +16A84;TANGSA LETTER UZ;Lo;0;L;;;;;N;;;;; +16A85;TANGSA LETTER UC;Lo;0;L;;;;;N;;;;; +16A86;TANGSA LETTER UQ;Lo;0;L;;;;;N;;;;; +16A87;TANGSA LETTER UX;Lo;0;L;;;;;N;;;;; +16A88;TANGSA LETTER AWZ;Lo;0;L;;;;;N;;;;; +16A89;TANGSA LETTER AWC;Lo;0;L;;;;;N;;;;; +16A8A;TANGSA LETTER AWQ;Lo;0;L;;;;;N;;;;; +16A8B;TANGSA LETTER AWX;Lo;0;L;;;;;N;;;;; +16A8C;TANGSA LETTER UIZ;Lo;0;L;;;;;N;;;;; +16A8D;TANGSA LETTER UIC;Lo;0;L;;;;;N;;;;; +16A8E;TANGSA LETTER UIQ;Lo;0;L;;;;;N;;;;; +16A8F;TANGSA LETTER UIX;Lo;0;L;;;;;N;;;;; +16A90;TANGSA LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +16A91;TANGSA LETTER LONG UEX;Lo;0;L;;;;;N;;;;; +16A92;TANGSA LETTER SHORT UEZ;Lo;0;L;;;;;N;;;;; +16A93;TANGSA LETTER SHORT AWX;Lo;0;L;;;;;N;;;;; +16A94;TANGSA LETTER UEC;Lo;0;L;;;;;N;;;;; +16A95;TANGSA LETTER UEZ;Lo;0;L;;;;;N;;;;; +16A96;TANGSA LETTER UEQ;Lo;0;L;;;;;N;;;;; +16A97;TANGSA LETTER UEX;Lo;0;L;;;;;N;;;;; +16A98;TANGSA LETTER UIUZ;Lo;0;L;;;;;N;;;;; +16A99;TANGSA LETTER UIUC;Lo;0;L;;;;;N;;;;; +16A9A;TANGSA LETTER UIUQ;Lo;0;L;;;;;N;;;;; +16A9B;TANGSA LETTER UIUX;Lo;0;L;;;;;N;;;;; +16A9C;TANGSA LETTER MZ;Lo;0;L;;;;;N;;;;; +16A9D;TANGSA LETTER MC;Lo;0;L;;;;;N;;;;; +16A9E;TANGSA LETTER MQ;Lo;0;L;;;;;N;;;;; +16A9F;TANGSA LETTER MX;Lo;0;L;;;;;N;;;;; +16AA0;TANGSA LETTER KA;Lo;0;L;;;;;N;;;;; +16AA1;TANGSA LETTER KHA;Lo;0;L;;;;;N;;;;; +16AA2;TANGSA LETTER GA;Lo;0;L;;;;;N;;;;; +16AA3;TANGSA LETTER NGA;Lo;0;L;;;;;N;;;;; +16AA4;TANGSA LETTER SA;Lo;0;L;;;;;N;;;;; +16AA5;TANGSA LETTER YA;Lo;0;L;;;;;N;;;;; +16AA6;TANGSA LETTER WA;Lo;0;L;;;;;N;;;;; +16AA7;TANGSA LETTER PA;Lo;0;L;;;;;N;;;;; +16AA8;TANGSA LETTER NYA;Lo;0;L;;;;;N;;;;; +16AA9;TANGSA LETTER PHA;Lo;0;L;;;;;N;;;;; +16AAA;TANGSA LETTER BA;Lo;0;L;;;;;N;;;;; +16AAB;TANGSA LETTER MA;Lo;0;L;;;;;N;;;;; +16AAC;TANGSA LETTER NA;Lo;0;L;;;;;N;;;;; +16AAD;TANGSA LETTER HA;Lo;0;L;;;;;N;;;;; +16AAE;TANGSA LETTER LA;Lo;0;L;;;;;N;;;;; +16AAF;TANGSA LETTER HTA;Lo;0;L;;;;;N;;;;; +16AB0;TANGSA LETTER TA;Lo;0;L;;;;;N;;;;; +16AB1;TANGSA LETTER DA;Lo;0;L;;;;;N;;;;; +16AB2;TANGSA LETTER RA;Lo;0;L;;;;;N;;;;; +16AB3;TANGSA LETTER NHA;Lo;0;L;;;;;N;;;;; +16AB4;TANGSA LETTER SHA;Lo;0;L;;;;;N;;;;; +16AB5;TANGSA LETTER CA;Lo;0;L;;;;;N;;;;; +16AB6;TANGSA LETTER TSA;Lo;0;L;;;;;N;;;;; +16AB7;TANGSA LETTER GHA;Lo;0;L;;;;;N;;;;; +16AB8;TANGSA LETTER HTTA;Lo;0;L;;;;;N;;;;; +16AB9;TANGSA LETTER THA;Lo;0;L;;;;;N;;;;; +16ABA;TANGSA LETTER XA;Lo;0;L;;;;;N;;;;; +16ABB;TANGSA LETTER FA;Lo;0;L;;;;;N;;;;; +16ABC;TANGSA LETTER DHA;Lo;0;L;;;;;N;;;;; +16ABD;TANGSA LETTER CHA;Lo;0;L;;;;;N;;;;; +16ABE;TANGSA LETTER ZA;Lo;0;L;;;;;N;;;;; +16AC0;TANGSA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +16AC1;TANGSA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +16AC2;TANGSA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +16AC3;TANGSA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +16AC4;TANGSA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +16AC5;TANGSA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +16AC6;TANGSA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +16AC7;TANGSA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +16AC8;TANGSA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +16AC9;TANGSA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;; 16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;; 16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;; @@ -25052,6 +25740,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;; 16FE2;OLD CHINESE HOOK MARK;Po;0;ON;;;;;N;;;;; 16FE3;OLD CHINESE ITERATION MARK;Lm;0;L;;;;;N;;;;; +16FE4;KHITAN SMALL SCRIPT FILLER;Mn;0;NSM;;;;;N;;;;; +16FF0;VIETNAMESE ALTERNATE READING MARK CA;Mc;6;L;;;;;N;;;;; +16FF1;VIETNAMESE ALTERNATE READING MARK NHAY;Mc;6;L;;;;;N;;;;; 17000;;Lo;0;L;;;;;N;;;;; 187F7;;Lo;0;L;;;;;N;;;;; 18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;; @@ -25809,6 +26500,504 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 18AF0;TANGUT COMPONENT-753;Lo;0;L;;;;;N;;;;; 18AF1;TANGUT COMPONENT-754;Lo;0;L;;;;;N;;;;; 18AF2;TANGUT COMPONENT-755;Lo;0;L;;;;;N;;;;; +18AF3;TANGUT COMPONENT-756;Lo;0;L;;;;;N;;;;; +18AF4;TANGUT COMPONENT-757;Lo;0;L;;;;;N;;;;; +18AF5;TANGUT COMPONENT-758;Lo;0;L;;;;;N;;;;; +18AF6;TANGUT COMPONENT-759;Lo;0;L;;;;;N;;;;; +18AF7;TANGUT COMPONENT-760;Lo;0;L;;;;;N;;;;; +18AF8;TANGUT COMPONENT-761;Lo;0;L;;;;;N;;;;; +18AF9;TANGUT COMPONENT-762;Lo;0;L;;;;;N;;;;; +18AFA;TANGUT COMPONENT-763;Lo;0;L;;;;;N;;;;; +18AFB;TANGUT COMPONENT-764;Lo;0;L;;;;;N;;;;; +18AFC;TANGUT COMPONENT-765;Lo;0;L;;;;;N;;;;; +18AFD;TANGUT COMPONENT-766;Lo;0;L;;;;;N;;;;; +18AFE;TANGUT COMPONENT-767;Lo;0;L;;;;;N;;;;; +18AFF;TANGUT COMPONENT-768;Lo;0;L;;;;;N;;;;; +18B00;KHITAN SMALL SCRIPT CHARACTER-18B00;Lo;0;L;;;;;N;;;;; +18B01;KHITAN SMALL SCRIPT CHARACTER-18B01;Lo;0;L;;;;;N;;;;; +18B02;KHITAN SMALL SCRIPT CHARACTER-18B02;Lo;0;L;;;;;N;;;;; +18B03;KHITAN SMALL SCRIPT CHARACTER-18B03;Lo;0;L;;;;;N;;;;; +18B04;KHITAN SMALL SCRIPT CHARACTER-18B04;Lo;0;L;;;;;N;;;;; +18B05;KHITAN SMALL SCRIPT CHARACTER-18B05;Lo;0;L;;;;;N;;;;; +18B06;KHITAN SMALL SCRIPT CHARACTER-18B06;Lo;0;L;;;;;N;;;;; +18B07;KHITAN SMALL SCRIPT CHARACTER-18B07;Lo;0;L;;;;;N;;;;; +18B08;KHITAN SMALL SCRIPT CHARACTER-18B08;Lo;0;L;;;;;N;;;;; +18B09;KHITAN SMALL SCRIPT CHARACTER-18B09;Lo;0;L;;;;;N;;;;; +18B0A;KHITAN SMALL SCRIPT CHARACTER-18B0A;Lo;0;L;;;;;N;;;;; +18B0B;KHITAN SMALL SCRIPT CHARACTER-18B0B;Lo;0;L;;;;;N;;;;; +18B0C;KHITAN SMALL SCRIPT CHARACTER-18B0C;Lo;0;L;;;;;N;;;;; +18B0D;KHITAN SMALL SCRIPT CHARACTER-18B0D;Lo;0;L;;;;;N;;;;; +18B0E;KHITAN SMALL SCRIPT CHARACTER-18B0E;Lo;0;L;;;;;N;;;;; +18B0F;KHITAN SMALL SCRIPT CHARACTER-18B0F;Lo;0;L;;;;;N;;;;; +18B10;KHITAN SMALL SCRIPT CHARACTER-18B10;Lo;0;L;;;;;N;;;;; +18B11;KHITAN SMALL SCRIPT CHARACTER-18B11;Lo;0;L;;;;;N;;;;; +18B12;KHITAN SMALL SCRIPT CHARACTER-18B12;Lo;0;L;;;;;N;;;;; +18B13;KHITAN SMALL SCRIPT CHARACTER-18B13;Lo;0;L;;;;;N;;;;; +18B14;KHITAN SMALL SCRIPT CHARACTER-18B14;Lo;0;L;;;;;N;;;;; +18B15;KHITAN SMALL SCRIPT CHARACTER-18B15;Lo;0;L;;;;;N;;;;; +18B16;KHITAN SMALL SCRIPT CHARACTER-18B16;Lo;0;L;;;;;N;;;;; +18B17;KHITAN SMALL SCRIPT CHARACTER-18B17;Lo;0;L;;;;;N;;;;; +18B18;KHITAN SMALL SCRIPT CHARACTER-18B18;Lo;0;L;;;;;N;;;;; +18B19;KHITAN SMALL SCRIPT CHARACTER-18B19;Lo;0;L;;;;;N;;;;; +18B1A;KHITAN SMALL SCRIPT CHARACTER-18B1A;Lo;0;L;;;;;N;;;;; +18B1B;KHITAN SMALL SCRIPT CHARACTER-18B1B;Lo;0;L;;;;;N;;;;; +18B1C;KHITAN SMALL SCRIPT CHARACTER-18B1C;Lo;0;L;;;;;N;;;;; +18B1D;KHITAN SMALL SCRIPT CHARACTER-18B1D;Lo;0;L;;;;;N;;;;; +18B1E;KHITAN SMALL SCRIPT CHARACTER-18B1E;Lo;0;L;;;;;N;;;;; +18B1F;KHITAN SMALL SCRIPT CHARACTER-18B1F;Lo;0;L;;;;;N;;;;; +18B20;KHITAN SMALL SCRIPT CHARACTER-18B20;Lo;0;L;;;;;N;;;;; +18B21;KHITAN SMALL SCRIPT CHARACTER-18B21;Lo;0;L;;;;;N;;;;; +18B22;KHITAN SMALL SCRIPT CHARACTER-18B22;Lo;0;L;;;;;N;;;;; +18B23;KHITAN SMALL SCRIPT CHARACTER-18B23;Lo;0;L;;;;;N;;;;; +18B24;KHITAN SMALL SCRIPT CHARACTER-18B24;Lo;0;L;;;;;N;;;;; +18B25;KHITAN SMALL SCRIPT CHARACTER-18B25;Lo;0;L;;;;;N;;;;; +18B26;KHITAN SMALL SCRIPT CHARACTER-18B26;Lo;0;L;;;;;N;;;;; +18B27;KHITAN SMALL SCRIPT CHARACTER-18B27;Lo;0;L;;;;;N;;;;; +18B28;KHITAN SMALL SCRIPT CHARACTER-18B28;Lo;0;L;;;;;N;;;;; +18B29;KHITAN SMALL SCRIPT CHARACTER-18B29;Lo;0;L;;;;;N;;;;; +18B2A;KHITAN SMALL SCRIPT CHARACTER-18B2A;Lo;0;L;;;;;N;;;;; +18B2B;KHITAN SMALL SCRIPT CHARACTER-18B2B;Lo;0;L;;;;;N;;;;; +18B2C;KHITAN SMALL SCRIPT CHARACTER-18B2C;Lo;0;L;;;;;N;;;;; +18B2D;KHITAN SMALL SCRIPT CHARACTER-18B2D;Lo;0;L;;;;;N;;;;; +18B2E;KHITAN SMALL SCRIPT CHARACTER-18B2E;Lo;0;L;;;;;N;;;;; +18B2F;KHITAN SMALL SCRIPT CHARACTER-18B2F;Lo;0;L;;;;;N;;;;; +18B30;KHITAN SMALL SCRIPT CHARACTER-18B30;Lo;0;L;;;;;N;;;;; +18B31;KHITAN SMALL SCRIPT CHARACTER-18B31;Lo;0;L;;;;;N;;;;; +18B32;KHITAN SMALL SCRIPT CHARACTER-18B32;Lo;0;L;;;;;N;;;;; +18B33;KHITAN SMALL SCRIPT CHARACTER-18B33;Lo;0;L;;;;;N;;;;; +18B34;KHITAN SMALL SCRIPT CHARACTER-18B34;Lo;0;L;;;;;N;;;;; +18B35;KHITAN SMALL SCRIPT CHARACTER-18B35;Lo;0;L;;;;;N;;;;; +18B36;KHITAN SMALL SCRIPT CHARACTER-18B36;Lo;0;L;;;;;N;;;;; +18B37;KHITAN SMALL SCRIPT CHARACTER-18B37;Lo;0;L;;;;;N;;;;; +18B38;KHITAN SMALL SCRIPT CHARACTER-18B38;Lo;0;L;;;;;N;;;;; +18B39;KHITAN SMALL SCRIPT CHARACTER-18B39;Lo;0;L;;;;;N;;;;; +18B3A;KHITAN SMALL SCRIPT CHARACTER-18B3A;Lo;0;L;;;;;N;;;;; +18B3B;KHITAN SMALL SCRIPT CHARACTER-18B3B;Lo;0;L;;;;;N;;;;; +18B3C;KHITAN SMALL SCRIPT CHARACTER-18B3C;Lo;0;L;;;;;N;;;;; +18B3D;KHITAN SMALL SCRIPT CHARACTER-18B3D;Lo;0;L;;;;;N;;;;; +18B3E;KHITAN SMALL SCRIPT CHARACTER-18B3E;Lo;0;L;;;;;N;;;;; +18B3F;KHITAN SMALL SCRIPT CHARACTER-18B3F;Lo;0;L;;;;;N;;;;; +18B40;KHITAN SMALL SCRIPT CHARACTER-18B40;Lo;0;L;;;;;N;;;;; +18B41;KHITAN SMALL SCRIPT CHARACTER-18B41;Lo;0;L;;;;;N;;;;; +18B42;KHITAN SMALL SCRIPT CHARACTER-18B42;Lo;0;L;;;;;N;;;;; +18B43;KHITAN SMALL SCRIPT CHARACTER-18B43;Lo;0;L;;;;;N;;;;; +18B44;KHITAN SMALL SCRIPT CHARACTER-18B44;Lo;0;L;;;;;N;;;;; +18B45;KHITAN SMALL SCRIPT CHARACTER-18B45;Lo;0;L;;;;;N;;;;; +18B46;KHITAN SMALL SCRIPT CHARACTER-18B46;Lo;0;L;;;;;N;;;;; +18B47;KHITAN SMALL SCRIPT CHARACTER-18B47;Lo;0;L;;;;;N;;;;; +18B48;KHITAN SMALL SCRIPT CHARACTER-18B48;Lo;0;L;;;;;N;;;;; +18B49;KHITAN SMALL SCRIPT CHARACTER-18B49;Lo;0;L;;;;;N;;;;; +18B4A;KHITAN SMALL SCRIPT CHARACTER-18B4A;Lo;0;L;;;;;N;;;;; +18B4B;KHITAN SMALL SCRIPT CHARACTER-18B4B;Lo;0;L;;;;;N;;;;; +18B4C;KHITAN SMALL SCRIPT CHARACTER-18B4C;Lo;0;L;;;;;N;;;;; +18B4D;KHITAN SMALL SCRIPT CHARACTER-18B4D;Lo;0;L;;;;;N;;;;; +18B4E;KHITAN SMALL SCRIPT CHARACTER-18B4E;Lo;0;L;;;;;N;;;;; +18B4F;KHITAN SMALL SCRIPT CHARACTER-18B4F;Lo;0;L;;;;;N;;;;; +18B50;KHITAN SMALL SCRIPT CHARACTER-18B50;Lo;0;L;;;;;N;;;;; +18B51;KHITAN SMALL SCRIPT CHARACTER-18B51;Lo;0;L;;;;;N;;;;; +18B52;KHITAN SMALL SCRIPT CHARACTER-18B52;Lo;0;L;;;;;N;;;;; +18B53;KHITAN SMALL SCRIPT CHARACTER-18B53;Lo;0;L;;;;;N;;;;; +18B54;KHITAN SMALL SCRIPT CHARACTER-18B54;Lo;0;L;;;;;N;;;;; +18B55;KHITAN SMALL SCRIPT CHARACTER-18B55;Lo;0;L;;;;;N;;;;; +18B56;KHITAN SMALL SCRIPT CHARACTER-18B56;Lo;0;L;;;;;N;;;;; +18B57;KHITAN SMALL SCRIPT CHARACTER-18B57;Lo;0;L;;;;;N;;;;; +18B58;KHITAN SMALL SCRIPT CHARACTER-18B58;Lo;0;L;;;;;N;;;;; +18B59;KHITAN SMALL SCRIPT CHARACTER-18B59;Lo;0;L;;;;;N;;;;; +18B5A;KHITAN SMALL SCRIPT CHARACTER-18B5A;Lo;0;L;;;;;N;;;;; +18B5B;KHITAN SMALL SCRIPT CHARACTER-18B5B;Lo;0;L;;;;;N;;;;; +18B5C;KHITAN SMALL SCRIPT CHARACTER-18B5C;Lo;0;L;;;;;N;;;;; +18B5D;KHITAN SMALL SCRIPT CHARACTER-18B5D;Lo;0;L;;;;;N;;;;; +18B5E;KHITAN SMALL SCRIPT CHARACTER-18B5E;Lo;0;L;;;;;N;;;;; +18B5F;KHITAN SMALL SCRIPT CHARACTER-18B5F;Lo;0;L;;;;;N;;;;; +18B60;KHITAN SMALL SCRIPT CHARACTER-18B60;Lo;0;L;;;;;N;;;;; +18B61;KHITAN SMALL SCRIPT CHARACTER-18B61;Lo;0;L;;;;;N;;;;; +18B62;KHITAN SMALL SCRIPT CHARACTER-18B62;Lo;0;L;;;;;N;;;;; +18B63;KHITAN SMALL SCRIPT CHARACTER-18B63;Lo;0;L;;;;;N;;;;; +18B64;KHITAN SMALL SCRIPT CHARACTER-18B64;Lo;0;L;;;;;N;;;;; +18B65;KHITAN SMALL SCRIPT CHARACTER-18B65;Lo;0;L;;;;;N;;;;; +18B66;KHITAN SMALL SCRIPT CHARACTER-18B66;Lo;0;L;;;;;N;;;;; +18B67;KHITAN SMALL SCRIPT CHARACTER-18B67;Lo;0;L;;;;;N;;;;; +18B68;KHITAN SMALL SCRIPT CHARACTER-18B68;Lo;0;L;;;;;N;;;;; +18B69;KHITAN SMALL SCRIPT CHARACTER-18B69;Lo;0;L;;;;;N;;;;; +18B6A;KHITAN SMALL SCRIPT CHARACTER-18B6A;Lo;0;L;;;;;N;;;;; +18B6B;KHITAN SMALL SCRIPT CHARACTER-18B6B;Lo;0;L;;;;;N;;;;; +18B6C;KHITAN SMALL SCRIPT CHARACTER-18B6C;Lo;0;L;;;;;N;;;;; +18B6D;KHITAN SMALL SCRIPT CHARACTER-18B6D;Lo;0;L;;;;;N;;;;; +18B6E;KHITAN SMALL SCRIPT CHARACTER-18B6E;Lo;0;L;;;;;N;;;;; +18B6F;KHITAN SMALL SCRIPT CHARACTER-18B6F;Lo;0;L;;;;;N;;;;; +18B70;KHITAN SMALL SCRIPT CHARACTER-18B70;Lo;0;L;;;;;N;;;;; +18B71;KHITAN SMALL SCRIPT CHARACTER-18B71;Lo;0;L;;;;;N;;;;; +18B72;KHITAN SMALL SCRIPT CHARACTER-18B72;Lo;0;L;;;;;N;;;;; +18B73;KHITAN SMALL SCRIPT CHARACTER-18B73;Lo;0;L;;;;;N;;;;; +18B74;KHITAN SMALL SCRIPT CHARACTER-18B74;Lo;0;L;;;;;N;;;;; +18B75;KHITAN SMALL SCRIPT CHARACTER-18B75;Lo;0;L;;;;;N;;;;; +18B76;KHITAN SMALL SCRIPT CHARACTER-18B76;Lo;0;L;;;;;N;;;;; +18B77;KHITAN SMALL SCRIPT CHARACTER-18B77;Lo;0;L;;;;;N;;;;; +18B78;KHITAN SMALL SCRIPT CHARACTER-18B78;Lo;0;L;;;;;N;;;;; +18B79;KHITAN SMALL SCRIPT CHARACTER-18B79;Lo;0;L;;;;;N;;;;; +18B7A;KHITAN SMALL SCRIPT CHARACTER-18B7A;Lo;0;L;;;;;N;;;;; +18B7B;KHITAN SMALL SCRIPT CHARACTER-18B7B;Lo;0;L;;;;;N;;;;; +18B7C;KHITAN SMALL SCRIPT CHARACTER-18B7C;Lo;0;L;;;;;N;;;;; +18B7D;KHITAN SMALL SCRIPT CHARACTER-18B7D;Lo;0;L;;;;;N;;;;; +18B7E;KHITAN SMALL SCRIPT CHARACTER-18B7E;Lo;0;L;;;;;N;;;;; +18B7F;KHITAN SMALL SCRIPT CHARACTER-18B7F;Lo;0;L;;;;;N;;;;; +18B80;KHITAN SMALL SCRIPT CHARACTER-18B80;Lo;0;L;;;;;N;;;;; +18B81;KHITAN SMALL SCRIPT CHARACTER-18B81;Lo;0;L;;;;;N;;;;; +18B82;KHITAN SMALL SCRIPT CHARACTER-18B82;Lo;0;L;;;;;N;;;;; +18B83;KHITAN SMALL SCRIPT CHARACTER-18B83;Lo;0;L;;;;;N;;;;; +18B84;KHITAN SMALL SCRIPT CHARACTER-18B84;Lo;0;L;;;;;N;;;;; +18B85;KHITAN SMALL SCRIPT CHARACTER-18B85;Lo;0;L;;;;;N;;;;; +18B86;KHITAN SMALL SCRIPT CHARACTER-18B86;Lo;0;L;;;;;N;;;;; +18B87;KHITAN SMALL SCRIPT CHARACTER-18B87;Lo;0;L;;;;;N;;;;; +18B88;KHITAN SMALL SCRIPT CHARACTER-18B88;Lo;0;L;;;;;N;;;;; +18B89;KHITAN SMALL SCRIPT CHARACTER-18B89;Lo;0;L;;;;;N;;;;; +18B8A;KHITAN SMALL SCRIPT CHARACTER-18B8A;Lo;0;L;;;;;N;;;;; +18B8B;KHITAN SMALL SCRIPT CHARACTER-18B8B;Lo;0;L;;;;;N;;;;; +18B8C;KHITAN SMALL SCRIPT CHARACTER-18B8C;Lo;0;L;;;;;N;;;;; +18B8D;KHITAN SMALL SCRIPT CHARACTER-18B8D;Lo;0;L;;;;;N;;;;; +18B8E;KHITAN SMALL SCRIPT CHARACTER-18B8E;Lo;0;L;;;;;N;;;;; +18B8F;KHITAN SMALL SCRIPT CHARACTER-18B8F;Lo;0;L;;;;;N;;;;; +18B90;KHITAN SMALL SCRIPT CHARACTER-18B90;Lo;0;L;;;;;N;;;;; +18B91;KHITAN SMALL SCRIPT CHARACTER-18B91;Lo;0;L;;;;;N;;;;; +18B92;KHITAN SMALL SCRIPT CHARACTER-18B92;Lo;0;L;;;;;N;;;;; +18B93;KHITAN SMALL SCRIPT CHARACTER-18B93;Lo;0;L;;;;;N;;;;; +18B94;KHITAN SMALL SCRIPT CHARACTER-18B94;Lo;0;L;;;;;N;;;;; +18B95;KHITAN SMALL SCRIPT CHARACTER-18B95;Lo;0;L;;;;;N;;;;; +18B96;KHITAN SMALL SCRIPT CHARACTER-18B96;Lo;0;L;;;;;N;;;;; +18B97;KHITAN SMALL SCRIPT CHARACTER-18B97;Lo;0;L;;;;;N;;;;; +18B98;KHITAN SMALL SCRIPT CHARACTER-18B98;Lo;0;L;;;;;N;;;;; +18B99;KHITAN SMALL SCRIPT CHARACTER-18B99;Lo;0;L;;;;;N;;;;; +18B9A;KHITAN SMALL SCRIPT CHARACTER-18B9A;Lo;0;L;;;;;N;;;;; +18B9B;KHITAN SMALL SCRIPT CHARACTER-18B9B;Lo;0;L;;;;;N;;;;; +18B9C;KHITAN SMALL SCRIPT CHARACTER-18B9C;Lo;0;L;;;;;N;;;;; +18B9D;KHITAN SMALL SCRIPT CHARACTER-18B9D;Lo;0;L;;;;;N;;;;; +18B9E;KHITAN SMALL SCRIPT CHARACTER-18B9E;Lo;0;L;;;;;N;;;;; +18B9F;KHITAN SMALL SCRIPT CHARACTER-18B9F;Lo;0;L;;;;;N;;;;; +18BA0;KHITAN SMALL SCRIPT CHARACTER-18BA0;Lo;0;L;;;;;N;;;;; +18BA1;KHITAN SMALL SCRIPT CHARACTER-18BA1;Lo;0;L;;;;;N;;;;; +18BA2;KHITAN SMALL SCRIPT CHARACTER-18BA2;Lo;0;L;;;;;N;;;;; +18BA3;KHITAN SMALL SCRIPT CHARACTER-18BA3;Lo;0;L;;;;;N;;;;; +18BA4;KHITAN SMALL SCRIPT CHARACTER-18BA4;Lo;0;L;;;;;N;;;;; +18BA5;KHITAN SMALL SCRIPT CHARACTER-18BA5;Lo;0;L;;;;;N;;;;; +18BA6;KHITAN SMALL SCRIPT CHARACTER-18BA6;Lo;0;L;;;;;N;;;;; +18BA7;KHITAN SMALL SCRIPT CHARACTER-18BA7;Lo;0;L;;;;;N;;;;; +18BA8;KHITAN SMALL SCRIPT CHARACTER-18BA8;Lo;0;L;;;;;N;;;;; +18BA9;KHITAN SMALL SCRIPT CHARACTER-18BA9;Lo;0;L;;;;;N;;;;; +18BAA;KHITAN SMALL SCRIPT CHARACTER-18BAA;Lo;0;L;;;;;N;;;;; +18BAB;KHITAN SMALL SCRIPT CHARACTER-18BAB;Lo;0;L;;;;;N;;;;; +18BAC;KHITAN SMALL SCRIPT CHARACTER-18BAC;Lo;0;L;;;;;N;;;;; +18BAD;KHITAN SMALL SCRIPT CHARACTER-18BAD;Lo;0;L;;;;;N;;;;; +18BAE;KHITAN SMALL SCRIPT CHARACTER-18BAE;Lo;0;L;;;;;N;;;;; +18BAF;KHITAN SMALL SCRIPT CHARACTER-18BAF;Lo;0;L;;;;;N;;;;; +18BB0;KHITAN SMALL SCRIPT CHARACTER-18BB0;Lo;0;L;;;;;N;;;;; +18BB1;KHITAN SMALL SCRIPT CHARACTER-18BB1;Lo;0;L;;;;;N;;;;; +18BB2;KHITAN SMALL SCRIPT CHARACTER-18BB2;Lo;0;L;;;;;N;;;;; +18BB3;KHITAN SMALL SCRIPT CHARACTER-18BB3;Lo;0;L;;;;;N;;;;; +18BB4;KHITAN SMALL SCRIPT CHARACTER-18BB4;Lo;0;L;;;;;N;;;;; +18BB5;KHITAN SMALL SCRIPT CHARACTER-18BB5;Lo;0;L;;;;;N;;;;; +18BB6;KHITAN SMALL SCRIPT CHARACTER-18BB6;Lo;0;L;;;;;N;;;;; +18BB7;KHITAN SMALL SCRIPT CHARACTER-18BB7;Lo;0;L;;;;;N;;;;; +18BB8;KHITAN SMALL SCRIPT CHARACTER-18BB8;Lo;0;L;;;;;N;;;;; +18BB9;KHITAN SMALL SCRIPT CHARACTER-18BB9;Lo;0;L;;;;;N;;;;; +18BBA;KHITAN SMALL SCRIPT CHARACTER-18BBA;Lo;0;L;;;;;N;;;;; +18BBB;KHITAN SMALL SCRIPT CHARACTER-18BBB;Lo;0;L;;;;;N;;;;; +18BBC;KHITAN SMALL SCRIPT CHARACTER-18BBC;Lo;0;L;;;;;N;;;;; +18BBD;KHITAN SMALL SCRIPT CHARACTER-18BBD;Lo;0;L;;;;;N;;;;; +18BBE;KHITAN SMALL SCRIPT CHARACTER-18BBE;Lo;0;L;;;;;N;;;;; +18BBF;KHITAN SMALL SCRIPT CHARACTER-18BBF;Lo;0;L;;;;;N;;;;; +18BC0;KHITAN SMALL SCRIPT CHARACTER-18BC0;Lo;0;L;;;;;N;;;;; +18BC1;KHITAN SMALL SCRIPT CHARACTER-18BC1;Lo;0;L;;;;;N;;;;; +18BC2;KHITAN SMALL SCRIPT CHARACTER-18BC2;Lo;0;L;;;;;N;;;;; +18BC3;KHITAN SMALL SCRIPT CHARACTER-18BC3;Lo;0;L;;;;;N;;;;; +18BC4;KHITAN SMALL SCRIPT CHARACTER-18BC4;Lo;0;L;;;;;N;;;;; +18BC5;KHITAN SMALL SCRIPT CHARACTER-18BC5;Lo;0;L;;;;;N;;;;; +18BC6;KHITAN SMALL SCRIPT CHARACTER-18BC6;Lo;0;L;;;;;N;;;;; +18BC7;KHITAN SMALL SCRIPT CHARACTER-18BC7;Lo;0;L;;;;;N;;;;; +18BC8;KHITAN SMALL SCRIPT CHARACTER-18BC8;Lo;0;L;;;;;N;;;;; +18BC9;KHITAN SMALL SCRIPT CHARACTER-18BC9;Lo;0;L;;;;;N;;;;; +18BCA;KHITAN SMALL SCRIPT CHARACTER-18BCA;Lo;0;L;;;;;N;;;;; +18BCB;KHITAN SMALL SCRIPT CHARACTER-18BCB;Lo;0;L;;;;;N;;;;; +18BCC;KHITAN SMALL SCRIPT CHARACTER-18BCC;Lo;0;L;;;;;N;;;;; +18BCD;KHITAN SMALL SCRIPT CHARACTER-18BCD;Lo;0;L;;;;;N;;;;; +18BCE;KHITAN SMALL SCRIPT CHARACTER-18BCE;Lo;0;L;;;;;N;;;;; +18BCF;KHITAN SMALL SCRIPT CHARACTER-18BCF;Lo;0;L;;;;;N;;;;; +18BD0;KHITAN SMALL SCRIPT CHARACTER-18BD0;Lo;0;L;;;;;N;;;;; +18BD1;KHITAN SMALL SCRIPT CHARACTER-18BD1;Lo;0;L;;;;;N;;;;; +18BD2;KHITAN SMALL SCRIPT CHARACTER-18BD2;Lo;0;L;;;;;N;;;;; +18BD3;KHITAN SMALL SCRIPT CHARACTER-18BD3;Lo;0;L;;;;;N;;;;; +18BD4;KHITAN SMALL SCRIPT CHARACTER-18BD4;Lo;0;L;;;;;N;;;;; +18BD5;KHITAN SMALL SCRIPT CHARACTER-18BD5;Lo;0;L;;;;;N;;;;; +18BD6;KHITAN SMALL SCRIPT CHARACTER-18BD6;Lo;0;L;;;;;N;;;;; +18BD7;KHITAN SMALL SCRIPT CHARACTER-18BD7;Lo;0;L;;;;;N;;;;; +18BD8;KHITAN SMALL SCRIPT CHARACTER-18BD8;Lo;0;L;;;;;N;;;;; +18BD9;KHITAN SMALL SCRIPT CHARACTER-18BD9;Lo;0;L;;;;;N;;;;; +18BDA;KHITAN SMALL SCRIPT CHARACTER-18BDA;Lo;0;L;;;;;N;;;;; +18BDB;KHITAN SMALL SCRIPT CHARACTER-18BDB;Lo;0;L;;;;;N;;;;; +18BDC;KHITAN SMALL SCRIPT CHARACTER-18BDC;Lo;0;L;;;;;N;;;;; +18BDD;KHITAN SMALL SCRIPT CHARACTER-18BDD;Lo;0;L;;;;;N;;;;; +18BDE;KHITAN SMALL SCRIPT CHARACTER-18BDE;Lo;0;L;;;;;N;;;;; +18BDF;KHITAN SMALL SCRIPT CHARACTER-18BDF;Lo;0;L;;;;;N;;;;; +18BE0;KHITAN SMALL SCRIPT CHARACTER-18BE0;Lo;0;L;;;;;N;;;;; +18BE1;KHITAN SMALL SCRIPT CHARACTER-18BE1;Lo;0;L;;;;;N;;;;; +18BE2;KHITAN SMALL SCRIPT CHARACTER-18BE2;Lo;0;L;;;;;N;;;;; +18BE3;KHITAN SMALL SCRIPT CHARACTER-18BE3;Lo;0;L;;;;;N;;;;; +18BE4;KHITAN SMALL SCRIPT CHARACTER-18BE4;Lo;0;L;;;;;N;;;;; +18BE5;KHITAN SMALL SCRIPT CHARACTER-18BE5;Lo;0;L;;;;;N;;;;; +18BE6;KHITAN SMALL SCRIPT CHARACTER-18BE6;Lo;0;L;;;;;N;;;;; +18BE7;KHITAN SMALL SCRIPT CHARACTER-18BE7;Lo;0;L;;;;;N;;;;; +18BE8;KHITAN SMALL SCRIPT CHARACTER-18BE8;Lo;0;L;;;;;N;;;;; +18BE9;KHITAN SMALL SCRIPT CHARACTER-18BE9;Lo;0;L;;;;;N;;;;; +18BEA;KHITAN SMALL SCRIPT CHARACTER-18BEA;Lo;0;L;;;;;N;;;;; +18BEB;KHITAN SMALL SCRIPT CHARACTER-18BEB;Lo;0;L;;;;;N;;;;; +18BEC;KHITAN SMALL SCRIPT CHARACTER-18BEC;Lo;0;L;;;;;N;;;;; +18BED;KHITAN SMALL SCRIPT CHARACTER-18BED;Lo;0;L;;;;;N;;;;; +18BEE;KHITAN SMALL SCRIPT CHARACTER-18BEE;Lo;0;L;;;;;N;;;;; +18BEF;KHITAN SMALL SCRIPT CHARACTER-18BEF;Lo;0;L;;;;;N;;;;; +18BF0;KHITAN SMALL SCRIPT CHARACTER-18BF0;Lo;0;L;;;;;N;;;;; +18BF1;KHITAN SMALL SCRIPT CHARACTER-18BF1;Lo;0;L;;;;;N;;;;; +18BF2;KHITAN SMALL SCRIPT CHARACTER-18BF2;Lo;0;L;;;;;N;;;;; +18BF3;KHITAN SMALL SCRIPT CHARACTER-18BF3;Lo;0;L;;;;;N;;;;; +18BF4;KHITAN SMALL SCRIPT CHARACTER-18BF4;Lo;0;L;;;;;N;;;;; +18BF5;KHITAN SMALL SCRIPT CHARACTER-18BF5;Lo;0;L;;;;;N;;;;; +18BF6;KHITAN SMALL SCRIPT CHARACTER-18BF6;Lo;0;L;;;;;N;;;;; +18BF7;KHITAN SMALL SCRIPT CHARACTER-18BF7;Lo;0;L;;;;;N;;;;; +18BF8;KHITAN SMALL SCRIPT CHARACTER-18BF8;Lo;0;L;;;;;N;;;;; +18BF9;KHITAN SMALL SCRIPT CHARACTER-18BF9;Lo;0;L;;;;;N;;;;; +18BFA;KHITAN SMALL SCRIPT CHARACTER-18BFA;Lo;0;L;;;;;N;;;;; +18BFB;KHITAN SMALL SCRIPT CHARACTER-18BFB;Lo;0;L;;;;;N;;;;; +18BFC;KHITAN SMALL SCRIPT CHARACTER-18BFC;Lo;0;L;;;;;N;;;;; +18BFD;KHITAN SMALL SCRIPT CHARACTER-18BFD;Lo;0;L;;;;;N;;;;; +18BFE;KHITAN SMALL SCRIPT CHARACTER-18BFE;Lo;0;L;;;;;N;;;;; +18BFF;KHITAN SMALL SCRIPT CHARACTER-18BFF;Lo;0;L;;;;;N;;;;; +18C00;KHITAN SMALL SCRIPT CHARACTER-18C00;Lo;0;L;;;;;N;;;;; +18C01;KHITAN SMALL SCRIPT CHARACTER-18C01;Lo;0;L;;;;;N;;;;; +18C02;KHITAN SMALL SCRIPT CHARACTER-18C02;Lo;0;L;;;;;N;;;;; +18C03;KHITAN SMALL SCRIPT CHARACTER-18C03;Lo;0;L;;;;;N;;;;; +18C04;KHITAN SMALL SCRIPT CHARACTER-18C04;Lo;0;L;;;;;N;;;;; +18C05;KHITAN SMALL SCRIPT CHARACTER-18C05;Lo;0;L;;;;;N;;;;; +18C06;KHITAN SMALL SCRIPT CHARACTER-18C06;Lo;0;L;;;;;N;;;;; +18C07;KHITAN SMALL SCRIPT CHARACTER-18C07;Lo;0;L;;;;;N;;;;; +18C08;KHITAN SMALL SCRIPT CHARACTER-18C08;Lo;0;L;;;;;N;;;;; +18C09;KHITAN SMALL SCRIPT CHARACTER-18C09;Lo;0;L;;;;;N;;;;; +18C0A;KHITAN SMALL SCRIPT CHARACTER-18C0A;Lo;0;L;;;;;N;;;;; +18C0B;KHITAN SMALL SCRIPT CHARACTER-18C0B;Lo;0;L;;;;;N;;;;; +18C0C;KHITAN SMALL SCRIPT CHARACTER-18C0C;Lo;0;L;;;;;N;;;;; +18C0D;KHITAN SMALL SCRIPT CHARACTER-18C0D;Lo;0;L;;;;;N;;;;; +18C0E;KHITAN SMALL SCRIPT CHARACTER-18C0E;Lo;0;L;;;;;N;;;;; +18C0F;KHITAN SMALL SCRIPT CHARACTER-18C0F;Lo;0;L;;;;;N;;;;; +18C10;KHITAN SMALL SCRIPT CHARACTER-18C10;Lo;0;L;;;;;N;;;;; +18C11;KHITAN SMALL SCRIPT CHARACTER-18C11;Lo;0;L;;;;;N;;;;; +18C12;KHITAN SMALL SCRIPT CHARACTER-18C12;Lo;0;L;;;;;N;;;;; +18C13;KHITAN SMALL SCRIPT CHARACTER-18C13;Lo;0;L;;;;;N;;;;; +18C14;KHITAN SMALL SCRIPT CHARACTER-18C14;Lo;0;L;;;;;N;;;;; +18C15;KHITAN SMALL SCRIPT CHARACTER-18C15;Lo;0;L;;;;;N;;;;; +18C16;KHITAN SMALL SCRIPT CHARACTER-18C16;Lo;0;L;;;;;N;;;;; +18C17;KHITAN SMALL SCRIPT CHARACTER-18C17;Lo;0;L;;;;;N;;;;; +18C18;KHITAN SMALL SCRIPT CHARACTER-18C18;Lo;0;L;;;;;N;;;;; +18C19;KHITAN SMALL SCRIPT CHARACTER-18C19;Lo;0;L;;;;;N;;;;; +18C1A;KHITAN SMALL SCRIPT CHARACTER-18C1A;Lo;0;L;;;;;N;;;;; +18C1B;KHITAN SMALL SCRIPT CHARACTER-18C1B;Lo;0;L;;;;;N;;;;; +18C1C;KHITAN SMALL SCRIPT CHARACTER-18C1C;Lo;0;L;;;;;N;;;;; +18C1D;KHITAN SMALL SCRIPT CHARACTER-18C1D;Lo;0;L;;;;;N;;;;; +18C1E;KHITAN SMALL SCRIPT CHARACTER-18C1E;Lo;0;L;;;;;N;;;;; +18C1F;KHITAN SMALL SCRIPT CHARACTER-18C1F;Lo;0;L;;;;;N;;;;; +18C20;KHITAN SMALL SCRIPT CHARACTER-18C20;Lo;0;L;;;;;N;;;;; +18C21;KHITAN SMALL SCRIPT CHARACTER-18C21;Lo;0;L;;;;;N;;;;; +18C22;KHITAN SMALL SCRIPT CHARACTER-18C22;Lo;0;L;;;;;N;;;;; +18C23;KHITAN SMALL SCRIPT CHARACTER-18C23;Lo;0;L;;;;;N;;;;; +18C24;KHITAN SMALL SCRIPT CHARACTER-18C24;Lo;0;L;;;;;N;;;;; +18C25;KHITAN SMALL SCRIPT CHARACTER-18C25;Lo;0;L;;;;;N;;;;; +18C26;KHITAN SMALL SCRIPT CHARACTER-18C26;Lo;0;L;;;;;N;;;;; +18C27;KHITAN SMALL SCRIPT CHARACTER-18C27;Lo;0;L;;;;;N;;;;; +18C28;KHITAN SMALL SCRIPT CHARACTER-18C28;Lo;0;L;;;;;N;;;;; +18C29;KHITAN SMALL SCRIPT CHARACTER-18C29;Lo;0;L;;;;;N;;;;; +18C2A;KHITAN SMALL SCRIPT CHARACTER-18C2A;Lo;0;L;;;;;N;;;;; +18C2B;KHITAN SMALL SCRIPT CHARACTER-18C2B;Lo;0;L;;;;;N;;;;; +18C2C;KHITAN SMALL SCRIPT CHARACTER-18C2C;Lo;0;L;;;;;N;;;;; +18C2D;KHITAN SMALL SCRIPT CHARACTER-18C2D;Lo;0;L;;;;;N;;;;; +18C2E;KHITAN SMALL SCRIPT CHARACTER-18C2E;Lo;0;L;;;;;N;;;;; +18C2F;KHITAN SMALL SCRIPT CHARACTER-18C2F;Lo;0;L;;;;;N;;;;; +18C30;KHITAN SMALL SCRIPT CHARACTER-18C30;Lo;0;L;;;;;N;;;;; +18C31;KHITAN SMALL SCRIPT CHARACTER-18C31;Lo;0;L;;;;;N;;;;; +18C32;KHITAN SMALL SCRIPT CHARACTER-18C32;Lo;0;L;;;;;N;;;;; +18C33;KHITAN SMALL SCRIPT CHARACTER-18C33;Lo;0;L;;;;;N;;;;; +18C34;KHITAN SMALL SCRIPT CHARACTER-18C34;Lo;0;L;;;;;N;;;;; +18C35;KHITAN SMALL SCRIPT CHARACTER-18C35;Lo;0;L;;;;;N;;;;; +18C36;KHITAN SMALL SCRIPT CHARACTER-18C36;Lo;0;L;;;;;N;;;;; +18C37;KHITAN SMALL SCRIPT CHARACTER-18C37;Lo;0;L;;;;;N;;;;; +18C38;KHITAN SMALL SCRIPT CHARACTER-18C38;Lo;0;L;;;;;N;;;;; +18C39;KHITAN SMALL SCRIPT CHARACTER-18C39;Lo;0;L;;;;;N;;;;; +18C3A;KHITAN SMALL SCRIPT CHARACTER-18C3A;Lo;0;L;;;;;N;;;;; +18C3B;KHITAN SMALL SCRIPT CHARACTER-18C3B;Lo;0;L;;;;;N;;;;; +18C3C;KHITAN SMALL SCRIPT CHARACTER-18C3C;Lo;0;L;;;;;N;;;;; +18C3D;KHITAN SMALL SCRIPT CHARACTER-18C3D;Lo;0;L;;;;;N;;;;; +18C3E;KHITAN SMALL SCRIPT CHARACTER-18C3E;Lo;0;L;;;;;N;;;;; +18C3F;KHITAN SMALL SCRIPT CHARACTER-18C3F;Lo;0;L;;;;;N;;;;; +18C40;KHITAN SMALL SCRIPT CHARACTER-18C40;Lo;0;L;;;;;N;;;;; +18C41;KHITAN SMALL SCRIPT CHARACTER-18C41;Lo;0;L;;;;;N;;;;; +18C42;KHITAN SMALL SCRIPT CHARACTER-18C42;Lo;0;L;;;;;N;;;;; +18C43;KHITAN SMALL SCRIPT CHARACTER-18C43;Lo;0;L;;;;;N;;;;; +18C44;KHITAN SMALL SCRIPT CHARACTER-18C44;Lo;0;L;;;;;N;;;;; +18C45;KHITAN SMALL SCRIPT CHARACTER-18C45;Lo;0;L;;;;;N;;;;; +18C46;KHITAN SMALL SCRIPT CHARACTER-18C46;Lo;0;L;;;;;N;;;;; +18C47;KHITAN SMALL SCRIPT CHARACTER-18C47;Lo;0;L;;;;;N;;;;; +18C48;KHITAN SMALL SCRIPT CHARACTER-18C48;Lo;0;L;;;;;N;;;;; +18C49;KHITAN SMALL SCRIPT CHARACTER-18C49;Lo;0;L;;;;;N;;;;; +18C4A;KHITAN SMALL SCRIPT CHARACTER-18C4A;Lo;0;L;;;;;N;;;;; +18C4B;KHITAN SMALL SCRIPT CHARACTER-18C4B;Lo;0;L;;;;;N;;;;; +18C4C;KHITAN SMALL SCRIPT CHARACTER-18C4C;Lo;0;L;;;;;N;;;;; +18C4D;KHITAN SMALL SCRIPT CHARACTER-18C4D;Lo;0;L;;;;;N;;;;; +18C4E;KHITAN SMALL SCRIPT CHARACTER-18C4E;Lo;0;L;;;;;N;;;;; +18C4F;KHITAN SMALL SCRIPT CHARACTER-18C4F;Lo;0;L;;;;;N;;;;; +18C50;KHITAN SMALL SCRIPT CHARACTER-18C50;Lo;0;L;;;;;N;;;;; +18C51;KHITAN SMALL SCRIPT CHARACTER-18C51;Lo;0;L;;;;;N;;;;; +18C52;KHITAN SMALL SCRIPT CHARACTER-18C52;Lo;0;L;;;;;N;;;;; +18C53;KHITAN SMALL SCRIPT CHARACTER-18C53;Lo;0;L;;;;;N;;;;; +18C54;KHITAN SMALL SCRIPT CHARACTER-18C54;Lo;0;L;;;;;N;;;;; +18C55;KHITAN SMALL SCRIPT CHARACTER-18C55;Lo;0;L;;;;;N;;;;; +18C56;KHITAN SMALL SCRIPT CHARACTER-18C56;Lo;0;L;;;;;N;;;;; +18C57;KHITAN SMALL SCRIPT CHARACTER-18C57;Lo;0;L;;;;;N;;;;; +18C58;KHITAN SMALL SCRIPT CHARACTER-18C58;Lo;0;L;;;;;N;;;;; +18C59;KHITAN SMALL SCRIPT CHARACTER-18C59;Lo;0;L;;;;;N;;;;; +18C5A;KHITAN SMALL SCRIPT CHARACTER-18C5A;Lo;0;L;;;;;N;;;;; +18C5B;KHITAN SMALL SCRIPT CHARACTER-18C5B;Lo;0;L;;;;;N;;;;; +18C5C;KHITAN SMALL SCRIPT CHARACTER-18C5C;Lo;0;L;;;;;N;;;;; +18C5D;KHITAN SMALL SCRIPT CHARACTER-18C5D;Lo;0;L;;;;;N;;;;; +18C5E;KHITAN SMALL SCRIPT CHARACTER-18C5E;Lo;0;L;;;;;N;;;;; +18C5F;KHITAN SMALL SCRIPT CHARACTER-18C5F;Lo;0;L;;;;;N;;;;; +18C60;KHITAN SMALL SCRIPT CHARACTER-18C60;Lo;0;L;;;;;N;;;;; +18C61;KHITAN SMALL SCRIPT CHARACTER-18C61;Lo;0;L;;;;;N;;;;; +18C62;KHITAN SMALL SCRIPT CHARACTER-18C62;Lo;0;L;;;;;N;;;;; +18C63;KHITAN SMALL SCRIPT CHARACTER-18C63;Lo;0;L;;;;;N;;;;; +18C64;KHITAN SMALL SCRIPT CHARACTER-18C64;Lo;0;L;;;;;N;;;;; +18C65;KHITAN SMALL SCRIPT CHARACTER-18C65;Lo;0;L;;;;;N;;;;; +18C66;KHITAN SMALL SCRIPT CHARACTER-18C66;Lo;0;L;;;;;N;;;;; +18C67;KHITAN SMALL SCRIPT CHARACTER-18C67;Lo;0;L;;;;;N;;;;; +18C68;KHITAN SMALL SCRIPT CHARACTER-18C68;Lo;0;L;;;;;N;;;;; +18C69;KHITAN SMALL SCRIPT CHARACTER-18C69;Lo;0;L;;;;;N;;;;; +18C6A;KHITAN SMALL SCRIPT CHARACTER-18C6A;Lo;0;L;;;;;N;;;;; +18C6B;KHITAN SMALL SCRIPT CHARACTER-18C6B;Lo;0;L;;;;;N;;;;; +18C6C;KHITAN SMALL SCRIPT CHARACTER-18C6C;Lo;0;L;;;;;N;;;;; +18C6D;KHITAN SMALL SCRIPT CHARACTER-18C6D;Lo;0;L;;;;;N;;;;; +18C6E;KHITAN SMALL SCRIPT CHARACTER-18C6E;Lo;0;L;;;;;N;;;;; +18C6F;KHITAN SMALL SCRIPT CHARACTER-18C6F;Lo;0;L;;;;;N;;;;; +18C70;KHITAN SMALL SCRIPT CHARACTER-18C70;Lo;0;L;;;;;N;;;;; +18C71;KHITAN SMALL SCRIPT CHARACTER-18C71;Lo;0;L;;;;;N;;;;; +18C72;KHITAN SMALL SCRIPT CHARACTER-18C72;Lo;0;L;;;;;N;;;;; +18C73;KHITAN SMALL SCRIPT CHARACTER-18C73;Lo;0;L;;;;;N;;;;; +18C74;KHITAN SMALL SCRIPT CHARACTER-18C74;Lo;0;L;;;;;N;;;;; +18C75;KHITAN SMALL SCRIPT CHARACTER-18C75;Lo;0;L;;;;;N;;;;; +18C76;KHITAN SMALL SCRIPT CHARACTER-18C76;Lo;0;L;;;;;N;;;;; +18C77;KHITAN SMALL SCRIPT CHARACTER-18C77;Lo;0;L;;;;;N;;;;; +18C78;KHITAN SMALL SCRIPT CHARACTER-18C78;Lo;0;L;;;;;N;;;;; +18C79;KHITAN SMALL SCRIPT CHARACTER-18C79;Lo;0;L;;;;;N;;;;; +18C7A;KHITAN SMALL SCRIPT CHARACTER-18C7A;Lo;0;L;;;;;N;;;;; +18C7B;KHITAN SMALL SCRIPT CHARACTER-18C7B;Lo;0;L;;;;;N;;;;; +18C7C;KHITAN SMALL SCRIPT CHARACTER-18C7C;Lo;0;L;;;;;N;;;;; +18C7D;KHITAN SMALL SCRIPT CHARACTER-18C7D;Lo;0;L;;;;;N;;;;; +18C7E;KHITAN SMALL SCRIPT CHARACTER-18C7E;Lo;0;L;;;;;N;;;;; +18C7F;KHITAN SMALL SCRIPT CHARACTER-18C7F;Lo;0;L;;;;;N;;;;; +18C80;KHITAN SMALL SCRIPT CHARACTER-18C80;Lo;0;L;;;;;N;;;;; +18C81;KHITAN SMALL SCRIPT CHARACTER-18C81;Lo;0;L;;;;;N;;;;; +18C82;KHITAN SMALL SCRIPT CHARACTER-18C82;Lo;0;L;;;;;N;;;;; +18C83;KHITAN SMALL SCRIPT CHARACTER-18C83;Lo;0;L;;;;;N;;;;; +18C84;KHITAN SMALL SCRIPT CHARACTER-18C84;Lo;0;L;;;;;N;;;;; +18C85;KHITAN SMALL SCRIPT CHARACTER-18C85;Lo;0;L;;;;;N;;;;; +18C86;KHITAN SMALL SCRIPT CHARACTER-18C86;Lo;0;L;;;;;N;;;;; +18C87;KHITAN SMALL SCRIPT CHARACTER-18C87;Lo;0;L;;;;;N;;;;; +18C88;KHITAN SMALL SCRIPT CHARACTER-18C88;Lo;0;L;;;;;N;;;;; +18C89;KHITAN SMALL SCRIPT CHARACTER-18C89;Lo;0;L;;;;;N;;;;; +18C8A;KHITAN SMALL SCRIPT CHARACTER-18C8A;Lo;0;L;;;;;N;;;;; +18C8B;KHITAN SMALL SCRIPT CHARACTER-18C8B;Lo;0;L;;;;;N;;;;; +18C8C;KHITAN SMALL SCRIPT CHARACTER-18C8C;Lo;0;L;;;;;N;;;;; +18C8D;KHITAN SMALL SCRIPT CHARACTER-18C8D;Lo;0;L;;;;;N;;;;; +18C8E;KHITAN SMALL SCRIPT CHARACTER-18C8E;Lo;0;L;;;;;N;;;;; +18C8F;KHITAN SMALL SCRIPT CHARACTER-18C8F;Lo;0;L;;;;;N;;;;; +18C90;KHITAN SMALL SCRIPT CHARACTER-18C90;Lo;0;L;;;;;N;;;;; +18C91;KHITAN SMALL SCRIPT CHARACTER-18C91;Lo;0;L;;;;;N;;;;; +18C92;KHITAN SMALL SCRIPT CHARACTER-18C92;Lo;0;L;;;;;N;;;;; +18C93;KHITAN SMALL SCRIPT CHARACTER-18C93;Lo;0;L;;;;;N;;;;; +18C94;KHITAN SMALL SCRIPT CHARACTER-18C94;Lo;0;L;;;;;N;;;;; +18C95;KHITAN SMALL SCRIPT CHARACTER-18C95;Lo;0;L;;;;;N;;;;; +18C96;KHITAN SMALL SCRIPT CHARACTER-18C96;Lo;0;L;;;;;N;;;;; +18C97;KHITAN SMALL SCRIPT CHARACTER-18C97;Lo;0;L;;;;;N;;;;; +18C98;KHITAN SMALL SCRIPT CHARACTER-18C98;Lo;0;L;;;;;N;;;;; +18C99;KHITAN SMALL SCRIPT CHARACTER-18C99;Lo;0;L;;;;;N;;;;; +18C9A;KHITAN SMALL SCRIPT CHARACTER-18C9A;Lo;0;L;;;;;N;;;;; +18C9B;KHITAN SMALL SCRIPT CHARACTER-18C9B;Lo;0;L;;;;;N;;;;; +18C9C;KHITAN SMALL SCRIPT CHARACTER-18C9C;Lo;0;L;;;;;N;;;;; +18C9D;KHITAN SMALL SCRIPT CHARACTER-18C9D;Lo;0;L;;;;;N;;;;; +18C9E;KHITAN SMALL SCRIPT CHARACTER-18C9E;Lo;0;L;;;;;N;;;;; +18C9F;KHITAN SMALL SCRIPT CHARACTER-18C9F;Lo;0;L;;;;;N;;;;; +18CA0;KHITAN SMALL SCRIPT CHARACTER-18CA0;Lo;0;L;;;;;N;;;;; +18CA1;KHITAN SMALL SCRIPT CHARACTER-18CA1;Lo;0;L;;;;;N;;;;; +18CA2;KHITAN SMALL SCRIPT CHARACTER-18CA2;Lo;0;L;;;;;N;;;;; +18CA3;KHITAN SMALL SCRIPT CHARACTER-18CA3;Lo;0;L;;;;;N;;;;; +18CA4;KHITAN SMALL SCRIPT CHARACTER-18CA4;Lo;0;L;;;;;N;;;;; +18CA5;KHITAN SMALL SCRIPT CHARACTER-18CA5;Lo;0;L;;;;;N;;;;; +18CA6;KHITAN SMALL SCRIPT CHARACTER-18CA6;Lo;0;L;;;;;N;;;;; +18CA7;KHITAN SMALL SCRIPT CHARACTER-18CA7;Lo;0;L;;;;;N;;;;; +18CA8;KHITAN SMALL SCRIPT CHARACTER-18CA8;Lo;0;L;;;;;N;;;;; +18CA9;KHITAN SMALL SCRIPT CHARACTER-18CA9;Lo;0;L;;;;;N;;;;; +18CAA;KHITAN SMALL SCRIPT CHARACTER-18CAA;Lo;0;L;;;;;N;;;;; +18CAB;KHITAN SMALL SCRIPT CHARACTER-18CAB;Lo;0;L;;;;;N;;;;; +18CAC;KHITAN SMALL SCRIPT CHARACTER-18CAC;Lo;0;L;;;;;N;;;;; +18CAD;KHITAN SMALL SCRIPT CHARACTER-18CAD;Lo;0;L;;;;;N;;;;; +18CAE;KHITAN SMALL SCRIPT CHARACTER-18CAE;Lo;0;L;;;;;N;;;;; +18CAF;KHITAN SMALL SCRIPT CHARACTER-18CAF;Lo;0;L;;;;;N;;;;; +18CB0;KHITAN SMALL SCRIPT CHARACTER-18CB0;Lo;0;L;;;;;N;;;;; +18CB1;KHITAN SMALL SCRIPT CHARACTER-18CB1;Lo;0;L;;;;;N;;;;; +18CB2;KHITAN SMALL SCRIPT CHARACTER-18CB2;Lo;0;L;;;;;N;;;;; +18CB3;KHITAN SMALL SCRIPT CHARACTER-18CB3;Lo;0;L;;;;;N;;;;; +18CB4;KHITAN SMALL SCRIPT CHARACTER-18CB4;Lo;0;L;;;;;N;;;;; +18CB5;KHITAN SMALL SCRIPT CHARACTER-18CB5;Lo;0;L;;;;;N;;;;; +18CB6;KHITAN SMALL SCRIPT CHARACTER-18CB6;Lo;0;L;;;;;N;;;;; +18CB7;KHITAN SMALL SCRIPT CHARACTER-18CB7;Lo;0;L;;;;;N;;;;; +18CB8;KHITAN SMALL SCRIPT CHARACTER-18CB8;Lo;0;L;;;;;N;;;;; +18CB9;KHITAN SMALL SCRIPT CHARACTER-18CB9;Lo;0;L;;;;;N;;;;; +18CBA;KHITAN SMALL SCRIPT CHARACTER-18CBA;Lo;0;L;;;;;N;;;;; +18CBB;KHITAN SMALL SCRIPT CHARACTER-18CBB;Lo;0;L;;;;;N;;;;; +18CBC;KHITAN SMALL SCRIPT CHARACTER-18CBC;Lo;0;L;;;;;N;;;;; +18CBD;KHITAN SMALL SCRIPT CHARACTER-18CBD;Lo;0;L;;;;;N;;;;; +18CBE;KHITAN SMALL SCRIPT CHARACTER-18CBE;Lo;0;L;;;;;N;;;;; +18CBF;KHITAN SMALL SCRIPT CHARACTER-18CBF;Lo;0;L;;;;;N;;;;; +18CC0;KHITAN SMALL SCRIPT CHARACTER-18CC0;Lo;0;L;;;;;N;;;;; +18CC1;KHITAN SMALL SCRIPT CHARACTER-18CC1;Lo;0;L;;;;;N;;;;; +18CC2;KHITAN SMALL SCRIPT CHARACTER-18CC2;Lo;0;L;;;;;N;;;;; +18CC3;KHITAN SMALL SCRIPT CHARACTER-18CC3;Lo;0;L;;;;;N;;;;; +18CC4;KHITAN SMALL SCRIPT CHARACTER-18CC4;Lo;0;L;;;;;N;;;;; +18CC5;KHITAN SMALL SCRIPT CHARACTER-18CC5;Lo;0;L;;;;;N;;;;; +18CC6;KHITAN SMALL SCRIPT CHARACTER-18CC6;Lo;0;L;;;;;N;;;;; +18CC7;KHITAN SMALL SCRIPT CHARACTER-18CC7;Lo;0;L;;;;;N;;;;; +18CC8;KHITAN SMALL SCRIPT CHARACTER-18CC8;Lo;0;L;;;;;N;;;;; +18CC9;KHITAN SMALL SCRIPT CHARACTER-18CC9;Lo;0;L;;;;;N;;;;; +18CCA;KHITAN SMALL SCRIPT CHARACTER-18CCA;Lo;0;L;;;;;N;;;;; +18CCB;KHITAN SMALL SCRIPT CHARACTER-18CCB;Lo;0;L;;;;;N;;;;; +18CCC;KHITAN SMALL SCRIPT CHARACTER-18CCC;Lo;0;L;;;;;N;;;;; +18CCD;KHITAN SMALL SCRIPT CHARACTER-18CCD;Lo;0;L;;;;;N;;;;; +18CCE;KHITAN SMALL SCRIPT CHARACTER-18CCE;Lo;0;L;;;;;N;;;;; +18CCF;KHITAN SMALL SCRIPT CHARACTER-18CCF;Lo;0;L;;;;;N;;;;; +18CD0;KHITAN SMALL SCRIPT CHARACTER-18CD0;Lo;0;L;;;;;N;;;;; +18CD1;KHITAN SMALL SCRIPT CHARACTER-18CD1;Lo;0;L;;;;;N;;;;; +18CD2;KHITAN SMALL SCRIPT CHARACTER-18CD2;Lo;0;L;;;;;N;;;;; +18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;; +18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;; +18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;; +18D00;;Lo;0;L;;;;;N;;;;; +18D08;;Lo;0;L;;;;;N;;;;; +1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;; +1AFF1;KATAKANA LETTER MINNAN TONE-3;Lm;0;L;;;;;N;;;;; +1AFF2;KATAKANA LETTER MINNAN TONE-4;Lm;0;L;;;;;N;;;;; +1AFF3;KATAKANA LETTER MINNAN TONE-5;Lm;0;L;;;;;N;;;;; +1AFF5;KATAKANA LETTER MINNAN TONE-7;Lm;0;L;;;;;N;;;;; +1AFF6;KATAKANA LETTER MINNAN TONE-8;Lm;0;L;;;;;N;;;;; +1AFF7;KATAKANA LETTER MINNAN NASALIZED TONE-1;Lm;0;L;;;;;N;;;;; +1AFF8;KATAKANA LETTER MINNAN NASALIZED TONE-2;Lm;0;L;;;;;N;;;;; +1AFF9;KATAKANA LETTER MINNAN NASALIZED TONE-3;Lm;0;L;;;;;N;;;;; +1AFFA;KATAKANA LETTER MINNAN NASALIZED TONE-4;Lm;0;L;;;;;N;;;;; +1AFFB;KATAKANA LETTER MINNAN NASALIZED TONE-5;Lm;0;L;;;;;N;;;;; +1AFFD;KATAKANA LETTER MINNAN NASALIZED TONE-7;Lm;0;L;;;;;N;;;;; +1AFFE;KATAKANA LETTER MINNAN NASALIZED TONE-8;Lm;0;L;;;;;N;;;;; 1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;; 1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; 1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;; @@ -26096,6 +27285,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;; 1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;; 1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;; +1B11F;HIRAGANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; +1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;; +1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; +1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; 1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;; 1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;; 1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;; @@ -26646,6 +27839,191 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;; 1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;; 1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;; +1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF03;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF04;ZNAMENNY COMBINING MARK NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF05;ZNAMENNY COMBINING MARK SREDNE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF06;ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF07;ZNAMENNY COMBINING MARK POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF08;ZNAMENNY COMBINING MARK VYSOKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF09;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0A;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0B;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0C;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0D;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0E;ZNAMENNY COMBINING MARK TSATA ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0F;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF10;ZNAMENNY COMBINING MARK NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF11;ZNAMENNY COMBINING MARK SREDNE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF12;ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF13;ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF14;ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF15;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF16;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF17;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF18;ZNAMENNY COMBINING MARK TSATA S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF19;ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1A;ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;Mn;0;NSM;;;;;N;;;;; +1CF1B;ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1C;ZNAMENNY COMBINING MARK POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1D;ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1E;ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1F;ZNAMENNY COMBINING MARK GORAZDO VYSOKO;Mn;0;NSM;;;;;N;;;;; +1CF20;ZNAMENNY COMBINING MARK ZELO;Mn;0;NSM;;;;;N;;;;; +1CF21;ZNAMENNY COMBINING MARK ON;Mn;0;NSM;;;;;N;;;;; +1CF22;ZNAMENNY COMBINING MARK RAVNO;Mn;0;NSM;;;;;N;;;;; +1CF23;ZNAMENNY COMBINING MARK TIKHAYA;Mn;0;NSM;;;;;N;;;;; +1CF24;ZNAMENNY COMBINING MARK BORZAYA;Mn;0;NSM;;;;;N;;;;; +1CF25;ZNAMENNY COMBINING MARK UDARKA;Mn;0;NSM;;;;;N;;;;; +1CF26;ZNAMENNY COMBINING MARK PODVERTKA;Mn;0;NSM;;;;;N;;;;; +1CF27;ZNAMENNY COMBINING MARK LOMKA;Mn;0;NSM;;;;;N;;;;; +1CF28;ZNAMENNY COMBINING MARK KUPNAYA;Mn;0;NSM;;;;;N;;;;; +1CF29;ZNAMENNY COMBINING MARK KACHKA;Mn;0;NSM;;;;;N;;;;; +1CF2A;ZNAMENNY COMBINING MARK ZEVOK;Mn;0;NSM;;;;;N;;;;; +1CF2B;ZNAMENNY COMBINING MARK SKOBA;Mn;0;NSM;;;;;N;;;;; +1CF2C;ZNAMENNY COMBINING MARK RAZSEKA;Mn;0;NSM;;;;;N;;;;; +1CF2D;ZNAMENNY COMBINING MARK KRYZH ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF30;ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;Mn;0;NSM;;;;;N;;;;; +1CF31;ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;Mn;0;NSM;;;;;N;;;;; +1CF32;ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;Mn;0;NSM;;;;;N;;;;; +1CF33;ZNAMENNY COMBINING MARK ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF34;ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF35;ZNAMENNY COMBINING MARK OTSECHKA;Mn;0;NSM;;;;;N;;;;; +1CF36;ZNAMENNY COMBINING MARK PODCHASHIE;Mn;0;NSM;;;;;N;;;;; +1CF37;ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;Mn;0;NSM;;;;;N;;;;; +1CF38;ZNAMENNY COMBINING MARK CHASHKA;Mn;0;NSM;;;;;N;;;;; +1CF39;ZNAMENNY COMBINING MARK CHASHKA POLNAYA;Mn;0;NSM;;;;;N;;;;; +1CF3A;ZNAMENNY COMBINING MARK OBLACHKO;Mn;0;NSM;;;;;N;;;;; +1CF3B;ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;Mn;0;NSM;;;;;N;;;;; +1CF3C;ZNAMENNY COMBINING MARK TOCHKA;Mn;0;NSM;;;;;N;;;;; +1CF3D;ZNAMENNY COMBINING MARK DVOETOCHIE;Mn;0;NSM;;;;;N;;;;; +1CF3E;ZNAMENNY COMBINING ATTACHING VERTICAL OMET;Mn;0;NSM;;;;;N;;;;; +1CF3F;ZNAMENNY COMBINING MARK CURVED OMET;Mn;0;NSM;;;;;N;;;;; +1CF40;ZNAMENNY COMBINING MARK KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF41;ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;Mn;0;NSM;;;;;N;;;;; +1CF42;ZNAMENNY PRIZNAK MODIFIER LEVEL-2;Mn;0;NSM;;;;;N;;;;; +1CF43;ZNAMENNY PRIZNAK MODIFIER LEVEL-3;Mn;0;NSM;;;;;N;;;;; +1CF44;ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;Mn;0;NSM;;;;;N;;;;; +1CF45;ZNAMENNY PRIZNAK MODIFIER KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF46;ZNAMENNY PRIZNAK MODIFIER ROG;Mn;0;NSM;;;;;N;;;;; +1CF50;ZNAMENNY NEUME KRYUK;So;0;L;;;;;N;;;;; +1CF51;ZNAMENNY NEUME KRYUK TIKHY;So;0;L;;;;;N;;;;; +1CF52;ZNAMENNY NEUME PARAKLIT;So;0;L;;;;;N;;;;; +1CF53;ZNAMENNY NEUME DVA V CHELNU;So;0;L;;;;;N;;;;; +1CF54;ZNAMENNY NEUME KLYUCH;So;0;L;;;;;N;;;;; +1CF55;ZNAMENNY NEUME ZANOZHEK;So;0;L;;;;;N;;;;; +1CF56;ZNAMENNY NEUME STOPITSA;So;0;L;;;;;N;;;;; +1CF57;ZNAMENNY NEUME STOPITSA S OCHKOM;So;0;L;;;;;N;;;;; +1CF58;ZNAMENNY NEUME PEREVODKA;So;0;L;;;;;N;;;;; +1CF59;ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF5A;ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA;So;0;L;;;;;N;;;;; +1CF5B;ZNAMENNY NEUME CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF5C;ZNAMENNY NEUME PALKA;So;0;L;;;;;N;;;;; +1CF5D;ZNAMENNY NEUME ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF5E;ZNAMENNY NEUME GOLUBCHIK BORZY;So;0;L;;;;;N;;;;; +1CF5F;ZNAMENNY NEUME GOLUBCHIK TIKHY;So;0;L;;;;;N;;;;; +1CF60;ZNAMENNY NEUME GOLUBCHIK MRACHNY;So;0;L;;;;;N;;;;; +1CF61;ZNAMENNY NEUME GOLUBCHIK SVETLY;So;0;L;;;;;N;;;;; +1CF62;ZNAMENNY NEUME GOLUBCHIK TRESVETLY;So;0;L;;;;;N;;;;; +1CF63;ZNAMENNY NEUME VRAKHIYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF64;ZNAMENNY NEUME VRAKHIYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF65;ZNAMENNY NEUME VRAKHIYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF66;ZNAMENNY NEUME VRAKHIYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF67;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF68;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF69;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF6A;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF6B;ZNAMENNY NEUME DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF6C;ZNAMENNY NEUME REVERSED CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF6D;ZNAMENNY NEUME DERBITSA;So;0;L;;;;;N;;;;; +1CF6E;ZNAMENNY NEUME KHAMILO;So;0;L;;;;;N;;;;; +1CF6F;ZNAMENNY NEUME CHASHKA;So;0;L;;;;;N;;;;; +1CF70;ZNAMENNY NEUME PODCHASHIE;So;0;L;;;;;N;;;;; +1CF71;ZNAMENNY NEUME SKAMEYTSA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF72;ZNAMENNY NEUME SKAMEYTSA SVETLAYA;So;0;L;;;;;N;;;;; +1CF73;ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF74;ZNAMENNY NEUME SKAMEYTSA TIKHAYA;So;0;L;;;;;N;;;;; +1CF75;ZNAMENNY NEUME DEMESTVENNY KLYUCH;So;0;L;;;;;N;;;;; +1CF76;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF77;ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF78;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA;So;0;L;;;;;N;;;;; +1CF79;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF7A;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF7B;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF7C;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF7D;ZNAMENNY NEUME SLOZHITIE;So;0;L;;;;;N;;;;; +1CF7E;ZNAMENNY NEUME SLOZHITIE S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF7F;ZNAMENNY NEUME SLOZHITIE ZAKRYTOE;So;0;L;;;;;N;;;;; +1CF80;ZNAMENNY NEUME SLOZHITIE S KRYZHEM;So;0;L;;;;;N;;;;; +1CF81;ZNAMENNY NEUME KRYZH;So;0;L;;;;;N;;;;; +1CF82;ZNAMENNY NEUME ROG;So;0;L;;;;;N;;;;; +1CF83;ZNAMENNY NEUME FITA;So;0;L;;;;;N;;;;; +1CF84;ZNAMENNY NEUME KOBYLA;So;0;L;;;;;N;;;;; +1CF85;ZNAMENNY NEUME ZMEYTSA;So;0;L;;;;;N;;;;; +1CF86;ZNAMENNY NEUME STATYA;So;0;L;;;;;N;;;;; +1CF87;ZNAMENNY NEUME STATYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF88;ZNAMENNY NEUME STATYA S KRYZHEM;So;0;L;;;;;N;;;;; +1CF89;ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM;So;0;L;;;;;N;;;;; +1CF8A;ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8B;ZNAMENNY NEUME STATYA ZAKRYTAYA;So;0;L;;;;;N;;;;; +1CF8C;ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8D;ZNAMENNY NEUME STATYA S ROGOM;So;0;L;;;;;N;;;;; +1CF8E;ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI;So;0;L;;;;;N;;;;; +1CF8F;ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM;So;0;L;;;;;N;;;;; +1CF90;ZNAMENNY NEUME POLKULIZMY;So;0;L;;;;;N;;;;; +1CF91;ZNAMENNY NEUME STATYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF92;ZNAMENNY NEUME STRELA PROSTAYA;So;0;L;;;;;N;;;;; +1CF93;ZNAMENNY NEUME STRELA MRACHNOTIKHAYA;So;0;L;;;;;N;;;;; +1CF94;ZNAMENNY NEUME STRELA KRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF95;ZNAMENNY NEUME STRELA POLUPOVODNAYA;So;0;L;;;;;N;;;;; +1CF96;ZNAMENNY NEUME STRELA POVODNAYA;So;0;L;;;;;N;;;;; +1CF97;ZNAMENNY NEUME STRELA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF98;ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA;So;0;L;;;;;N;;;;; +1CF99;ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF9A;ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA;So;0;L;;;;;N;;;;; +1CF9B;ZNAMENNY NEUME STRELA DVOECHELNAYA;So;0;L;;;;;N;;;;; +1CF9C;ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF9D;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA;So;0;L;;;;;N;;;;; +1CF9E;ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF9F;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CFA0;ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA1;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA2;ZNAMENNY NEUME STRELA GROMNAYA;So;0;L;;;;;N;;;;; +1CFA3;ZNAMENNY NEUME STRELA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFA4;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA5;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFA6;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFA7;ZNAMENNY NEUME MECHIK;So;0;L;;;;;N;;;;; +1CFA8;ZNAMENNY NEUME MECHIK POVODNY;So;0;L;;;;;N;;;;; +1CFA9;ZNAMENNY NEUME MECHIK KLYUCHEVOY;So;0;L;;;;;N;;;;; +1CFAA;ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY;So;0;L;;;;;N;;;;; +1CFAB;ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY;So;0;L;;;;;N;;;;; +1CFAC;ZNAMENNY NEUME STRELA TRYASOGLASNAYA;So;0;L;;;;;N;;;;; +1CFAD;ZNAMENNY NEUME STRELA TRYASOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFAE;ZNAMENNY NEUME STRELA TRYASOSTRELNAYA;So;0;L;;;;;N;;;;; +1CFAF;ZNAMENNY NEUME OSOKA;So;0;L;;;;;N;;;;; +1CFB0;ZNAMENNY NEUME OSOKA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB1;ZNAMENNY NEUME OSOKA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CFB2;ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB3;ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB4;ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CFB5;ZNAMENNY NEUME STRELA KRYUKOVAYA;So;0;L;;;;;N;;;;; +1CFB6;ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFB7;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB8;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB9;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA;So;0;L;;;;;N;;;;; +1CFBA;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFBB;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFBC;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFBD;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFBE;ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA;So;0;L;;;;;N;;;;; +1CFBF;ZNAMENNY NEUME KUFISMA;So;0;L;;;;;N;;;;; +1CFC0;ZNAMENNY NEUME OBLAKO;So;0;L;;;;;N;;;;; +1CFC1;ZNAMENNY NEUME DUDA;So;0;L;;;;;N;;;;; +1CFC2;ZNAMENNY NEUME NEMKA;So;0;L;;;;;N;;;;; +1CFC3;ZNAMENNY NEUME PAUK;So;0;L;;;;;N;;;;; 1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; 1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; 1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; @@ -27123,6 +28501,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;; 1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;; 1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;; +1D1E9;MUSICAL SYMBOL SORI;So;0;ON;;;;;N;;;;; +1D1EA;MUSICAL SYMBOL KORON;So;0;ON;;;;;N;;;;; 1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; @@ -28993,6 +30373,37 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; 1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; 1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; +1DF00;LATIN SMALL LETTER FENG DIGRAPH WITH TRILL;Ll;0;L;;;;;N;;;;; +1DF01;LATIN SMALL LETTER REVERSED SCRIPT G;Ll;0;L;;;;;N;;;;; +1DF02;LATIN LETTER SMALL CAPITAL TURNED G;Ll;0;L;;;;;N;;;;; +1DF03;LATIN SMALL LETTER REVERSED K;Ll;0;L;;;;;N;;;;; +1DF04;LATIN LETTER SMALL CAPITAL L WITH BELT;Ll;0;L;;;;;N;;;;; +1DF05;LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF06;LATIN SMALL LETTER TURNED Y WITH BELT;Ll;0;L;;;;;N;;;;; +1DF07;LATIN SMALL LETTER REVERSED ENG;Ll;0;L;;;;;N;;;;; +1DF08;LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF09;LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF0A;LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lo;0;L;;;;;N;;;;; +1DF0B;LATIN SMALL LETTER ESH WITH DOUBLE BAR;Ll;0;L;;;;;N;;;;; +1DF0C;LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL;Ll;0;L;;;;;N;;;;; +1DF0D;LATIN SMALL LETTER TURNED T WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0E;LATIN LETTER INVERTED GLOTTAL STOP WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0F;LATIN LETTER STRETCHED C WITH CURL;Ll;0;L;;;;;N;;;;; +1DF10;LATIN LETTER SMALL CAPITAL TURNED K;Ll;0;L;;;;;N;;;;; +1DF11;LATIN SMALL LETTER L WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +1DF12;LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF13;LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF14;LATIN SMALL LETTER ENG WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF15;LATIN SMALL LETTER TURNED R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF16;LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF17;LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF18;LATIN SMALL LETTER EZH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF19;LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1A;LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1B;LATIN SMALL LETTER O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;; 1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;; 1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;; 1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;; @@ -29102,6 +30513,37 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;; 1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;; +1E290;TOTO LETTER PA;Lo;0;L;;;;;N;;;;; +1E291;TOTO LETTER BA;Lo;0;L;;;;;N;;;;; +1E292;TOTO LETTER TA;Lo;0;L;;;;;N;;;;; +1E293;TOTO LETTER DA;Lo;0;L;;;;;N;;;;; +1E294;TOTO LETTER KA;Lo;0;L;;;;;N;;;;; +1E295;TOTO LETTER GA;Lo;0;L;;;;;N;;;;; +1E296;TOTO LETTER MA;Lo;0;L;;;;;N;;;;; +1E297;TOTO LETTER NA;Lo;0;L;;;;;N;;;;; +1E298;TOTO LETTER NGA;Lo;0;L;;;;;N;;;;; +1E299;TOTO LETTER SA;Lo;0;L;;;;;N;;;;; +1E29A;TOTO LETTER CHA;Lo;0;L;;;;;N;;;;; +1E29B;TOTO LETTER YA;Lo;0;L;;;;;N;;;;; +1E29C;TOTO LETTER WA;Lo;0;L;;;;;N;;;;; +1E29D;TOTO LETTER JA;Lo;0;L;;;;;N;;;;; +1E29E;TOTO LETTER HA;Lo;0;L;;;;;N;;;;; +1E29F;TOTO LETTER RA;Lo;0;L;;;;;N;;;;; +1E2A0;TOTO LETTER LA;Lo;0;L;;;;;N;;;;; +1E2A1;TOTO LETTER I;Lo;0;L;;;;;N;;;;; +1E2A2;TOTO LETTER BREATHY I;Lo;0;L;;;;;N;;;;; +1E2A3;TOTO LETTER IU;Lo;0;L;;;;;N;;;;; +1E2A4;TOTO LETTER BREATHY IU;Lo;0;L;;;;;N;;;;; +1E2A5;TOTO LETTER U;Lo;0;L;;;;;N;;;;; +1E2A6;TOTO LETTER E;Lo;0;L;;;;;N;;;;; +1E2A7;TOTO LETTER BREATHY E;Lo;0;L;;;;;N;;;;; +1E2A8;TOTO LETTER EO;Lo;0;L;;;;;N;;;;; +1E2A9;TOTO LETTER BREATHY EO;Lo;0;L;;;;;N;;;;; +1E2AA;TOTO LETTER O;Lo;0;L;;;;;N;;;;; +1E2AB;TOTO LETTER AE;Lo;0;L;;;;;N;;;;; +1E2AC;TOTO LETTER BREATHY AE;Lo;0;L;;;;;N;;;;; +1E2AD;TOTO LETTER A;Lo;0;L;;;;;N;;;;; +1E2AE;TOTO SIGN RISING TONE;Mn;230;NSM;;;;;N;;;;; 1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;; 1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;; 1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;; @@ -29161,6 +30603,34 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;; +1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;; +1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;; +1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;; +1E7E3;ETHIOPIC SYLLABLE HHYAA;Lo;0;L;;;;;N;;;;; +1E7E4;ETHIOPIC SYLLABLE HHYEE;Lo;0;L;;;;;N;;;;; +1E7E5;ETHIOPIC SYLLABLE HHYE;Lo;0;L;;;;;N;;;;; +1E7E6;ETHIOPIC SYLLABLE HHYO;Lo;0;L;;;;;N;;;;; +1E7E8;ETHIOPIC SYLLABLE GURAGE HHWA;Lo;0;L;;;;;N;;;;; +1E7E9;ETHIOPIC SYLLABLE HHWI;Lo;0;L;;;;;N;;;;; +1E7EA;ETHIOPIC SYLLABLE HHWEE;Lo;0;L;;;;;N;;;;; +1E7EB;ETHIOPIC SYLLABLE HHWE;Lo;0;L;;;;;N;;;;; +1E7ED;ETHIOPIC SYLLABLE GURAGE MWI;Lo;0;L;;;;;N;;;;; +1E7EE;ETHIOPIC SYLLABLE GURAGE MWEE;Lo;0;L;;;;;N;;;;; +1E7F0;ETHIOPIC SYLLABLE GURAGE QWI;Lo;0;L;;;;;N;;;;; +1E7F1;ETHIOPIC SYLLABLE GURAGE QWEE;Lo;0;L;;;;;N;;;;; +1E7F2;ETHIOPIC SYLLABLE GURAGE QWE;Lo;0;L;;;;;N;;;;; +1E7F3;ETHIOPIC SYLLABLE GURAGE BWI;Lo;0;L;;;;;N;;;;; +1E7F4;ETHIOPIC SYLLABLE GURAGE BWEE;Lo;0;L;;;;;N;;;;; +1E7F5;ETHIOPIC SYLLABLE GURAGE KWI;Lo;0;L;;;;;N;;;;; +1E7F6;ETHIOPIC SYLLABLE GURAGE KWEE;Lo;0;L;;;;;N;;;;; +1E7F7;ETHIOPIC SYLLABLE GURAGE KWE;Lo;0;L;;;;;N;;;;; +1E7F8;ETHIOPIC SYLLABLE GURAGE GWI;Lo;0;L;;;;;N;;;;; +1E7F9;ETHIOPIC SYLLABLE GURAGE GWEE;Lo;0;L;;;;;N;;;;; +1E7FA;ETHIOPIC SYLLABLE GURAGE GWE;Lo;0;L;;;;;N;;;;; +1E7FB;ETHIOPIC SYLLABLE GURAGE FWI;Lo;0;L;;;;;N;;;;; +1E7FC;ETHIOPIC SYLLABLE GURAGE FWEE;Lo;0;L;;;;;N;;;;; +1E7FD;ETHIOPIC SYLLABLE GURAGE PWI;Lo;0;L;;;;;N;;;;; +1E7FE;ETHIOPIC SYLLABLE GURAGE PWEE;Lo;0;L;;;;;N;;;;; 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; @@ -29973,6 +31443,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F10A;DIGIT NINE COMMA;No;0;EN; 0039 002C;;9;9;N;;;;; 1F10B;DINGBAT CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;; 1F10C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;; +1F10D;CIRCLED ZERO WITH SLASH;So;0;ON;;;;;N;;;;; +1F10E;CIRCLED ANTICLOCKWISE ARROW;So;0;ON;;;;;N;;;;; +1F10F;CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;; 1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L; 0028 0041 0029;;;;N;;;;; 1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L; 0028 0042 0029;;;;N;;;;; 1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L; 0028 0043 0029;;;;N;;;;; @@ -30066,6 +31539,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F16A;RAISED MC SIGN;So;0;ON; 004D 0043;;;;N;;;;; 1F16B;RAISED MD SIGN;So;0;ON; 004D 0044;;;;N;;;;; 1F16C;RAISED MR SIGN;So;0;ON; 004D 0052;;;;N;;;;; +1F16D;CIRCLED CC;So;0;ON;;;;;N;;;;; +1F16E;CIRCLED C WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;; +1F16F;CIRCLED HUMAN FIGURE;So;0;ON;;;;;N;;;;; 1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;; 1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;; 1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;; @@ -30127,6 +31603,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F1AA;SQUARED SHV;So;0;L;;;;;N;;;;; 1F1AB;SQUARED UHD;So;0;L;;;;;N;;;;; 1F1AC;SQUARED VOD;So;0;L;;;;;N;;;;; +1F1AD;MASK WORK SYMBOL;So;0;ON;;;;;N;;;;; 1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;; 1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;; 1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;; @@ -31199,6 +32676,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6D3;STUPA;So;0;ON;;;;;N;;;;; 1F6D4;PAGODA;So;0;ON;;;;;N;;;;; 1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;; +1F6D6;HUT;So;0;ON;;;;;N;;;;; +1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;; +1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;; +1F6DE;WHEEL;So;0;ON;;;;;N;;;;; +1F6DF;RING BUOY;So;0;ON;;;;;N;;;;; 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; @@ -31223,6 +32705,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;; 1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;; 1F6FA;AUTO RICKSHAW;So;0;ON;;;;;N;;;;; +1F6FB;PICKUP TRUCK;So;0;ON;;;;;N;;;;; +1F6FC;ROLLER SKATE;So;0;ON;;;;;N;;;;; 1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;; 1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;; 1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;; @@ -31440,6 +32924,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;; 1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;; 1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;; +1F7F0;HEAVY EQUALS SIGN;So;0;ON;;;;;N;;;;; 1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; @@ -31588,6 +33073,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F8AB;RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;; 1F8AC;WHITE ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;; 1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;; +1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;; +1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;; 1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;; 1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;; 1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;; @@ -31600,6 +33087,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F909;DOWNWARD FACING NOTCHED HOOK;So;0;ON;;;;;N;;;;; 1F90A;DOWNWARD FACING HOOK WITH DOT;So;0;ON;;;;;N;;;;; 1F90B;DOWNWARD FACING NOTCHED HOOK WITH DOT;So;0;ON;;;;;N;;;;; +1F90C;PINCHED FINGERS;So;0;ON;;;;;N;;;;; 1F90D;WHITE HEART;So;0;ON;;;;;N;;;;; 1F90E;BROWN HEART;So;0;ON;;;;;N;;;;; 1F90F;PINCHING HAND;So;0;ON;;;;;N;;;;; @@ -31701,10 +33189,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F96F;BAGEL;So;0;ON;;;;;N;;;;; 1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;; 1F971;YAWNING FACE;So;0;ON;;;;;N;;;;; +1F972;SMILING FACE WITH TEAR;So;0;ON;;;;;N;;;;; 1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;; 1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;; 1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;; 1F976;FREEZING FACE;So;0;ON;;;;;N;;;;; +1F977;NINJA;So;0;ON;;;;;N;;;;; +1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;; +1F979;FACE HOLDING BACK TEARS;So;0;ON;;;;;N;;;;; 1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;; 1F97B;SARI;So;0;ON;;;;;N;;;;; 1F97C;LAB COAT;So;0;ON;;;;;N;;;;; @@ -31746,12 +33238,17 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F9A0;MICROBE;So;0;ON;;;;;N;;;;; 1F9A1;BADGER;So;0;ON;;;;;N;;;;; 1F9A2;SWAN;So;0;ON;;;;;N;;;;; +1F9A3;MAMMOTH;So;0;ON;;;;;N;;;;; +1F9A4;DODO;So;0;ON;;;;;N;;;;; 1F9A5;SLOTH;So;0;ON;;;;;N;;;;; 1F9A6;OTTER;So;0;ON;;;;;N;;;;; 1F9A7;ORANGUTAN;So;0;ON;;;;;N;;;;; 1F9A8;SKUNK;So;0;ON;;;;;N;;;;; 1F9A9;FLAMINGO;So;0;ON;;;;;N;;;;; 1F9AA;OYSTER;So;0;ON;;;;;N;;;;; +1F9AB;BEAVER;So;0;ON;;;;;N;;;;; +1F9AC;BISON;So;0;ON;;;;;N;;;;; +1F9AD;SEAL;So;0;ON;;;;;N;;;;; 1F9AE;GUIDE DOG;So;0;ON;;;;;N;;;;; 1F9AF;PROBING CANE;So;0;ON;;;;;N;;;;; 1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;; @@ -31781,6 +33278,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F9C8;BUTTER;So;0;ON;;;;;N;;;;; 1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;; 1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;; +1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;; +1F9CC;TROLL;So;0;ON;;;;;N;;;;; 1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;; 1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;; 1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;; @@ -31934,22 +33433,306 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FA71;ONE-PIECE SWIMSUIT;So;0;ON;;;;;N;;;;; 1FA72;BRIEFS;So;0;ON;;;;;N;;;;; 1FA73;SHORTS;So;0;ON;;;;;N;;;;; +1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;; 1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;; 1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;; 1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;; +1FA7B;X-RAY;So;0;ON;;;;;N;;;;; +1FA7C;CRUTCH;So;0;ON;;;;;N;;;;; 1FA80;YO-YO;So;0;ON;;;;;N;;;;; 1FA81;KITE;So;0;ON;;;;;N;;;;; 1FA82;PARACHUTE;So;0;ON;;;;;N;;;;; +1FA83;BOOMERANG;So;0;ON;;;;;N;;;;; +1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;; +1FA85;PINATA;So;0;ON;;;;;N;;;;; +1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;; 1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;; 1FA91;CHAIR;So;0;ON;;;;;N;;;;; 1FA92;RAZOR;So;0;ON;;;;;N;;;;; 1FA93;AXE;So;0;ON;;;;;N;;;;; 1FA94;DIYA LAMP;So;0;ON;;;;;N;;;;; 1FA95;BANJO;So;0;ON;;;;;N;;;;; +1FA96;MILITARY HELMET;So;0;ON;;;;;N;;;;; +1FA97;ACCORDION;So;0;ON;;;;;N;;;;; +1FA98;LONG DRUM;So;0;ON;;;;;N;;;;; +1FA99;COIN;So;0;ON;;;;;N;;;;; +1FA9A;CARPENTRY SAW;So;0;ON;;;;;N;;;;; +1FA9B;SCREWDRIVER;So;0;ON;;;;;N;;;;; +1FA9C;LADDER;So;0;ON;;;;;N;;;;; +1FA9D;HOOK;So;0;ON;;;;;N;;;;; +1FA9E;MIRROR;So;0;ON;;;;;N;;;;; +1FA9F;WINDOW;So;0;ON;;;;;N;;;;; +1FAA0;PLUNGER;So;0;ON;;;;;N;;;;; +1FAA1;SEWING NEEDLE;So;0;ON;;;;;N;;;;; +1FAA2;KNOT;So;0;ON;;;;;N;;;;; +1FAA3;BUCKET;So;0;ON;;;;;N;;;;; +1FAA4;MOUSE TRAP;So;0;ON;;;;;N;;;;; +1FAA5;TOOTHBRUSH;So;0;ON;;;;;N;;;;; +1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;; +1FAA7;PLACARD;So;0;ON;;;;;N;;;;; +1FAA8;ROCK;So;0;ON;;;;;N;;;;; +1FAA9;MIRROR BALL;So;0;ON;;;;;N;;;;; +1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;; +1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;; +1FAAC;HAMSA;So;0;ON;;;;;N;;;;; +1FAB0;FLY;So;0;ON;;;;;N;;;;; +1FAB1;WORM;So;0;ON;;;;;N;;;;; +1FAB2;BEETLE;So;0;ON;;;;;N;;;;; +1FAB3;COCKROACH;So;0;ON;;;;;N;;;;; +1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;; +1FAB5;WOOD;So;0;ON;;;;;N;;;;; +1FAB6;FEATHER;So;0;ON;;;;;N;;;;; +1FAB7;LOTUS;So;0;ON;;;;;N;;;;; +1FAB8;CORAL;So;0;ON;;;;;N;;;;; +1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;; +1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;; +1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;; +1FAC1;LUNGS;So;0;ON;;;;;N;;;;; +1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;; +1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;; +1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;; +1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;; +1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;; +1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;; +1FAD2;OLIVE;So;0;ON;;;;;N;;;;; +1FAD3;FLATBREAD;So;0;ON;;;;;N;;;;; +1FAD4;TAMALE;So;0;ON;;;;;N;;;;; +1FAD5;FONDUE;So;0;ON;;;;;N;;;;; +1FAD6;TEAPOT;So;0;ON;;;;;N;;;;; +1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;; +1FAD8;BEANS;So;0;ON;;;;;N;;;;; +1FAD9;JAR;So;0;ON;;;;;N;;;;; +1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;; +1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;; +1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;; +1FAE3;FACE WITH PEEKING EYE;So;0;ON;;;;;N;;;;; +1FAE4;FACE WITH DIAGONAL MOUTH;So;0;ON;;;;;N;;;;; +1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;; +1FAE6;BITING LIP;So;0;ON;;;;;N;;;;; +1FAE7;BUBBLES;So;0;ON;;;;;N;;;;; +1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;; +1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF3;PALM DOWN HAND;So;0;ON;;;;;N;;;;; +1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;; +1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;; +1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;; +1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;; +1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;; +1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;; +1FB03;BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;; +1FB04;BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;; +1FB05;BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;; +1FB06;BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;; +1FB07;BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;; +1FB08;BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;; +1FB09;BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;; +1FB0A;BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;; +1FB0B;BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;; +1FB0C;BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;; +1FB0D;BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;; +1FB0E;BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;; +1FB0F;BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;; +1FB10;BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;; +1FB11;BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;; +1FB12;BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;; +1FB13;BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;; +1FB14;BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;; +1FB15;BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;; +1FB16;BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;; +1FB17;BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;; +1FB18;BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;; +1FB19;BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;; +1FB1A;BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;; +1FB1B;BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;; +1FB1C;BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;; +1FB1D;BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;; +1FB1E;BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;; +1FB1F;BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;; +1FB20;BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;; +1FB21;BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;; +1FB22;BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;; +1FB23;BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;; +1FB24;BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;; +1FB25;BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;; +1FB26;BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;; +1FB27;BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;; +1FB28;BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;; +1FB29;BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;; +1FB2A;BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;; +1FB2B;BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;; +1FB2C;BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;; +1FB2D;BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;; +1FB2E;BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;; +1FB2F;BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;; +1FB30;BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;; +1FB31;BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;; +1FB32;BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;; +1FB33;BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;; +1FB34;BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;; +1FB35;BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;; +1FB36;BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;; +1FB37;BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;; +1FB38;BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;; +1FB39;BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;; +1FB3A;BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;; +1FB3B;BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;; +1FB3C;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB3D;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB3E;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB3F;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB40;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB41;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB42;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB43;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB44;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB45;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB46;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB47;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB48;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB49;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB4A;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB4B;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB4C;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB4D;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB4E;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB4F;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB50;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB51;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB52;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB53;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB54;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB55;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB56;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FB57;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB58;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB59;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB5A;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB5B;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;; +1FB5C;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB5D;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB5E;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB5F;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB60;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB61;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FB62;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB63;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB64;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB65;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB66;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FB67;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FB68;UPPER AND RIGHT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB69;LEFT AND LOWER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB6A;UPPER AND LEFT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB6B;LEFT AND UPPER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB6C;LEFT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB6D;UPPER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB6E;RIGHT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB6F;LOWER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB70;VERTICAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;; +1FB71;VERTICAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;; +1FB72;VERTICAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;; +1FB73;VERTICAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;; +1FB74;VERTICAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;; +1FB75;VERTICAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;; +1FB76;HORIZONTAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;; +1FB77;HORIZONTAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;; +1FB78;HORIZONTAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;; +1FB79;HORIZONTAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;; +1FB7A;HORIZONTAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;; +1FB7B;HORIZONTAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;; +1FB7C;LEFT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FB7D;LEFT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FB7E;RIGHT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FB7F;RIGHT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FB80;UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FB81;HORIZONTAL ONE EIGHTH BLOCK-1358;So;0;ON;;;;;N;;;;; +1FB82;UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB83;UPPER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB84;UPPER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB85;UPPER THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB86;UPPER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB87;RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FB88;RIGHT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB89;RIGHT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB8A;RIGHT THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;; +1FB8B;RIGHT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +1FB8C;LEFT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB8D;RIGHT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB8E;UPPER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB8F;LOWER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB90;INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB91;UPPER HALF BLOCK AND LOWER HALF INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB92;UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; +1FB94;LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; +1FB95;CHECKER BOARD FILL;So;0;ON;;;;;N;;;;; +1FB96;INVERSE CHECKER BOARD FILL;So;0;ON;;;;;N;;;;; +1FB97;HEAVY HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +1FB98;UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; +1FB99;UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; +1FB9A;UPPER AND LOWER TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;; +1FB9B;LEFT AND RIGHT TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;; +1FB9C;UPPER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB9D;UPPER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB9E;LOWER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FB9F;LOWER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;; +1FBA0;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;; +1FBA1;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FBA2;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBA3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBA4;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBA5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBA6;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FBA7;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FBA8;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT AND MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBA9;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBAA;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;; +1FBAB;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FBAC;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBAD;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBAE;BOX DRAWINGS LIGHT DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;; +1FBAF;BOX DRAWINGS LIGHT HORIZONTAL WITH VERTICAL STROKE;So;0;ON;;;;;N;;;;; +1FBB0;ARROWHEAD-SHAPED POINTER;So;0;ON;;;;;N;;;;; +1FBB1;INVERSE CHECK MARK;So;0;ON;;;;;N;;;;; +1FBB2;LEFT HALF RUNNING MAN;So;0;ON;;;;;N;;;;; +1FBB3;RIGHT HALF RUNNING MAN;So;0;ON;;;;;N;;;;; +1FBB4;INVERSE DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;;;;; +1FBB5;LEFTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FBB6;RIGHTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FBB7;DOWNWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FBB8;UPWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +1FBB9;LEFT HALF FOLDER;So;0;ON;;;;;N;;;;; +1FBBA;RIGHT HALF FOLDER;So;0;ON;;;;;N;;;;; +1FBBB;VOIDED GREEK CROSS;So;0;ON;;;;;N;;;;; +1FBBC;RIGHT OPEN SQUARED DOT;So;0;ON;;;;;N;;;;; +1FBBD;NEGATIVE DIAGONAL CROSS;So;0;ON;;;;;N;;;;; +1FBBE;NEGATIVE DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBBF;NEGATIVE DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;; +1FBC0;WHITE HEAVY SALTIRE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; +1FBC1;LEFT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +1FBC2;MIDDLE THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +1FBC3;RIGHT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +1FBC4;NEGATIVE SQUARED QUESTION MARK;So;0;ON;;;;;N;;;;; +1FBC5;STICK FIGURE;So;0;ON;;;;;N;;;;; +1FBC6;STICK FIGURE WITH ARMS RAISED;So;0;ON;;;;;N;;;;; +1FBC7;STICK FIGURE LEANING LEFT;So;0;ON;;;;;N;;;;; +1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;; +1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;; +1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;; +1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1FBF3;SEGMENTED DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1FBF4;SEGMENTED DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1FBF5;SEGMENTED DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1FBF6;SEGMENTED DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1FBF7;SEGMENTED DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; -2A6D6;;Lo;0;L;;;;;N;;;;; +2A6DF;;Lo;0;L;;;;;N;;;;; 2A700;;Lo;0;L;;;;;N;;;;; -2B734;;Lo;0;L;;;;;N;;;;; +2B738;;Lo;0;L;;;;;N;;;;; 2B740;;Lo;0;L;;;;;N;;;;; 2B81D;;Lo;0;L;;;;;N;;;;; 2B820;;Lo;0;L;;;;;N;;;;; @@ -32498,6 +34281,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; 2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; 2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; +30000;;Lo;0;L;;;;;N;;;;; +3134A;;Lo;0;L;;;;;N;;;;; E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; diff --git a/texmf/tex/generic/unicode-data/WordBreakProperty.txt b/texmf/tex/generic/unicode-data/WordBreakProperty.txt new file mode 100644 index 000000000..73cd069dc --- /dev/null +++ b/texmf/tex/generic/unicode-data/WordBreakProperty.txt @@ -0,0 +1,1441 @@ +# WordBreakProperty-14.0.0.txt +# Date: 2021-07-10, 00:35:32 GMT +# © 2021 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Unicode Character Database +# For documentation, see http://www.unicode.org/reports/tr44/ + +# ================================================ + +# Property: Word_Break + +# All code points not explicitly listed for Word_Break +# have the value Other (XX). + +# @missing: 0000..10FFFF; Other + +# ================================================ + +0022 ; Double_Quote # Po QUOTATION MARK + +# Total code points: 1 + +# ================================================ + +0027 ; Single_Quote # Po APOSTROPHE + +# Total code points: 1 + +# ================================================ + +05D0..05EA ; Hebrew_Letter # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV +05EF..05F2 ; Hebrew_Letter # Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD +FB1D ; Hebrew_Letter # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F..FB28 ; Hebrew_Letter # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV +FB2A..FB36 ; Hebrew_Letter # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Hebrew_Letter # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Hebrew_Letter # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Hebrew_Letter # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Hebrew_Letter # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED + +# Total code points: 75 + +# ================================================ + +000D ; CR # Cc + +# Total code points: 1 + +# ================================================ + +000A ; LF # Cc + +# Total code points: 1 + +# ================================================ + +000B..000C ; Newline # Cc [2] .. +0085 ; Newline # Cc +2028 ; Newline # Zl LINE SEPARATOR +2029 ; Newline # Zp PARAGRAPH SEPARATOR + +# Total code points: 5 + +# ================================================ + +0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X +0483..0487 ; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE +0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN +0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG +05BF ; Extend # Mn HEBREW POINT RAFE +05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT +05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT +05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN +0610..061A ; Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA +064B..065F ; Extend # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW +0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF +06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN +06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA +06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON +06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM +0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH +0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH +07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN +07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE +07FD ; Extend # Mn NKO DANTAYALAN +0816..0819 ; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH +081B..0823 ; Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A +0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U +0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA +0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK +0898..089F ; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA +08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA +08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA +0903 ; Extend # Mc DEVANAGARI SIGN VISARGA +093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE +093B ; Extend # Mc DEVANAGARI VOWEL SIGN OOE +093C ; Extend # Mn DEVANAGARI SIGN NUKTA +093E..0940 ; Extend # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II +0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI +0949..094C ; Extend # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU +094D ; Extend # Mn DEVANAGARI SIGN VIRAMA +094E..094F ; Extend # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW +0951..0957 ; Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE +0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL +0981 ; Extend # Mn BENGALI SIGN CANDRABINDU +0982..0983 ; Extend # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA +09BC ; Extend # Mn BENGALI SIGN NUKTA +09BE..09C0 ; Extend # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II +09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR +09C7..09C8 ; Extend # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI +09CB..09CC ; Extend # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09CD ; Extend # Mn BENGALI SIGN VIRAMA +09D7 ; Extend # Mc BENGALI AU LENGTH MARK +09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL +09FE ; Extend # Mn BENGALI SANDHI MARK +0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI +0A03 ; Extend # Mc GURMUKHI SIGN VISARGA +0A3C ; Extend # Mn GURMUKHI SIGN NUKTA +0A3E..0A40 ; Extend # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II +0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU +0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI +0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA +0A51 ; Extend # Mn GURMUKHI SIGN UDAAT +0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK +0A75 ; Extend # Mn GURMUKHI SIGN YAKASH +0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA +0A83 ; Extend # Mc GUJARATI SIGN VISARGA +0ABC ; Extend # Mn GUJARATI SIGN NUKTA +0ABE..0AC0 ; Extend # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II +0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E +0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI +0AC9 ; Extend # Mc GUJARATI VOWEL SIGN CANDRA O +0ACB..0ACC ; Extend # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU +0ACD ; Extend # Mn GUJARATI SIGN VIRAMA +0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL +0AFA..0AFF ; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE +0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU +0B02..0B03 ; Extend # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA +0B3C ; Extend # Mn ORIYA SIGN NUKTA +0B3E ; Extend # Mc ORIYA VOWEL SIGN AA +0B3F ; Extend # Mn ORIYA VOWEL SIGN I +0B40 ; Extend # Mc ORIYA VOWEL SIGN II +0B41..0B44 ; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR +0B47..0B48 ; Extend # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI +0B4B..0B4C ; Extend # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B4D ; Extend # Mn ORIYA SIGN VIRAMA +0B55..0B56 ; Extend # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK +0B57 ; Extend # Mc ORIYA AU LENGTH MARK +0B62..0B63 ; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL +0B82 ; Extend # Mn TAMIL SIGN ANUSVARA +0BBE..0BBF ; Extend # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I +0BC0 ; Extend # Mn TAMIL VOWEL SIGN II +0BC1..0BC2 ; Extend # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU +0BC6..0BC8 ; Extend # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI +0BCA..0BCC ; Extend # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0BCD ; Extend # Mn TAMIL SIGN VIRAMA +0BD7 ; Extend # Mc TAMIL AU LENGTH MARK +0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE +0C01..0C03 ; Extend # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE +0C3C ; Extend # Mn TELUGU SIGN NUKTA +0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II +0C41..0C44 ; Extend # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR +0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI +0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA +0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK +0C62..0C63 ; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL +0C81 ; Extend # Mn KANNADA SIGN CANDRABINDU +0C82..0C83 ; Extend # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0CBC ; Extend # Mn KANNADA SIGN NUKTA +0CBE ; Extend # Mc KANNADA VOWEL SIGN AA +0CBF ; Extend # Mn KANNADA VOWEL SIGN I +0CC0..0CC4 ; Extend # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR +0CC6 ; Extend # Mn KANNADA VOWEL SIGN E +0CC7..0CC8 ; Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA +0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL +0D00..0D01 ; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU +0D02..0D03 ; Extend # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA +0D3B..0D3C ; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA +0D3E..0D40 ; Extend # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II +0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR +0D46..0D48 ; Extend # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI +0D4A..0D4C ; Extend # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA +0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK +0D62..0D63 ; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL +0D81 ; Extend # Mn SINHALA SIGN CANDRABINDU +0D82..0D83 ; Extend # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA +0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA +0DCF..0DD1 ; Extend # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA +0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8..0DDF ; Extend # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA +0DF2..0DF3 ; Extend # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT +0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU +0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN +0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN +0EB4..0EBC ; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO +0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA +0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU +0F3E..0F3F ; Extend # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES +0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO +0F7F ; Extend # Mc TIBETAN SIGN RNAM BCAD +0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA +0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS +0F8D..0F97 ; Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA +0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN +102B..102C ; Extend # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA +102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU +1031 ; Extend # Mc MYANMAR VOWEL SIGN E +1032..1037 ; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW +1038 ; Extend # Mc MYANMAR SIGN VISARGA +1039..103A ; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT +103B..103C ; Extend # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA +103D..103E ; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA +1056..1057 ; Extend # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR +1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL +105E..1060 ; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA +1062..1064 ; Extend # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO +1067..106D ; Extend # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 +1071..1074 ; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE +1082 ; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA +1083..1084 ; Extend # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E +1085..1086 ; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y +1087..108C ; Extend # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 +108D ; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE +108F ; Extend # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 +109A..109C ; Extend # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A +109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI +135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK +1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +1715 ; Extend # Mc TAGALOG SIGN PAMUDPOD +1732..1733 ; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734 ; Extend # Mc HANUNOO SIGN PAMUDPOD +1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U +1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U +17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA +17B6 ; Extend # Mc KHMER VOWEL SIGN AA +17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA +17BE..17C5 ; Extend # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU +17C6 ; Extend # Mn KHMER SIGN NIKAHIT +17C7..17C8 ; Extend # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU +17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT +17DD ; Extend # Mn KHMER SIGN ATTHACAN +180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180F ; Extend # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR +1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA +18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA +1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U +1923..1926 ; Extend # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU +1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O +1929..192B ; Extend # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA +1930..1931 ; Extend # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA +1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA +1933..1938 ; Extend # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA +1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I +1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U +1A19..1A1A ; Extend # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O +1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE +1A55 ; Extend # Mc TAI THAM CONSONANT SIGN MEDIAL RA +1A56 ; Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA +1A57 ; Extend # Mc TAI THAM CONSONANT SIGN LA TANG LAI +1A58..1A5E ; Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA +1A60 ; Extend # Mn TAI THAM SIGN SAKOT +1A61 ; Extend # Mc TAI THAM VOWEL SIGN A +1A62 ; Extend # Mn TAI THAM VOWEL SIGN MAI SAT +1A63..1A64 ; Extend # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA +1A65..1A6C ; Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW +1A6D..1A72 ; Extend # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI +1A73..1A7C ; Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN +1A7F ; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT +1AB0..1ABD ; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW +1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY +1ABF..1ACE ; Extend # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T +1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG +1B04 ; Extend # Mc BALINESE SIGN BISAH +1B34 ; Extend # Mn BALINESE SIGN REREKAN +1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG +1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA +1B3B ; Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA +1B3D..1B41 ; Extend # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET +1B43..1B44 ; Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG +1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG +1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR +1B82 ; Extend # Mc SUNDANESE SIGN PANGWISAD +1BA1 ; Extend # Mc SUNDANESE CONSONANT SIGN PAMINGKAL +1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU +1BA6..1BA7 ; Extend # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG +1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG +1BAA ; Extend # Mc SUNDANESE SIGN PAMAAEH +1BAB..1BAD ; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA +1BE6 ; Extend # Mn BATAK SIGN TOMPI +1BE7 ; Extend # Mc BATAK VOWEL SIGN E +1BE8..1BE9 ; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE +1BEA..1BEC ; Extend # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O +1BED ; Extend # Mn BATAK VOWEL SIGN KARO O +1BEE ; Extend # Mc BATAK VOWEL SIGN U +1BEF..1BF1 ; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H +1BF2..1BF3 ; Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN +1C24..1C2B ; Extend # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU +1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T +1C34..1C35 ; Extend # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG +1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA +1CD0..1CD2 ; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA +1CD4..1CE0 ; Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA +1CE1 ; Extend # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA +1CE2..1CE8 ; Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL +1CED ; Extend # Mn VEDIC SIGN TIRYAK +1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE +1CF7 ; Extend # Mc VEDIC SIGN ATIKRAMA +1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE +1DC0..1DFF ; Extend # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +200C ; Extend # Cf ZERO WIDTH NON-JOINER +20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE +20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH +20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE +20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE +20E5..20F0 ; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE +2CEF..2CF1 ; Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS +2D7F ; Extend # Mn TIFINAGH CONSONANT JOINER +2DE0..2DFF ; Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS +302A..302D ; Extend # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK +302E..302F ; Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK +3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +A66F ; Extend # Mn COMBINING CYRILLIC VZMET +A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN +A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK +A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E +A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS +A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA +A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA +A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA +A823..A824 ; Extend # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I +A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E +A827 ; Extend # Mc SYLOTI NAGRI VOWEL SIGN OO +A82C ; Extend # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA +A880..A881 ; Extend # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA +A8B4..A8C3 ; Extend # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU +A8C4..A8C5 ; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU +A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA +A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY +A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU +A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R +A952..A953 ; Extend # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA +A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR +A983 ; Extend # Mc JAVANESE SIGN WIGNYAN +A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU +A9B4..A9B5 ; Extend # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG +A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT +A9BA..A9BB ; Extend # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE +A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET +A9BE..A9C0 ; Extend # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON +A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW +AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE +AA2F..AA30 ; Extend # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI +AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE +AA33..AA34 ; Extend # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA +AA35..AA36 ; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA +AA43 ; Extend # Mn CHAM CONSONANT SIGN FINAL NG +AA4C ; Extend # Mn CHAM CONSONANT SIGN FINAL M +AA4D ; Extend # Mc CHAM CONSONANT SIGN FINAL H +AA7B ; Extend # Mc MYANMAR SIGN PAO KAREN TONE +AA7C ; Extend # Mn MYANMAR SIGN TAI LAING TONE-2 +AA7D ; Extend # Mc MYANMAR SIGN TAI LAING TONE-5 +AAB0 ; Extend # Mn TAI VIET MAI KANG +AAB2..AAB4 ; Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U +AAB7..AAB8 ; Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA +AABE..AABF ; Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK +AAC1 ; Extend # Mn TAI VIET TONE MAI THO +AAEB ; Extend # Mc MEETEI MAYEK VOWEL SIGN II +AAEC..AAED ; Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI +AAEE..AAEF ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU +AAF5 ; Extend # Mc MEETEI MAYEK VOWEL SIGN VISARGA +AAF6 ; Extend # Mn MEETEI MAYEK VIRAMA +ABE3..ABE4 ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP +ABE5 ; Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP +ABE6..ABE7 ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP +ABE8 ; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP +ABE9..ABEA ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG +ABEC ; Extend # Mc MEETEI MAYEK LUM IYEK +ABED ; Extend # Mn MEETEI MAYEK APUN IYEK +FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA +FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 +FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF +FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE +102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK +10376..1037A ; Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII +10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R +10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O +10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA +10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW +10A3F ; Extend # Mn KHAROSHTHI VIRAMA +10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW +10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW +11000 ; Extend # Mc BRAHMI SIGN CANDRABINDU +11001 ; Extend # Mn BRAHMI SIGN ANUSVARA +11002 ; Extend # Mc BRAHMI SIGN VISARGA +11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA +11070 ; Extend # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11073..11074 ; Extend # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA +11082 ; Extend # Mc KAITHI SIGN VISARGA +110B0..110B2 ; Extend # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II +110B3..110B6 ; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI +110B7..110B8 ; Extend # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU +110B9..110BA ; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA +110C2 ; Extend # Mn KAITHI VOWEL SIGN VOCALIC R +11100..11102 ; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA +11127..1112B ; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU +1112C ; Extend # Mc CHAKMA VOWEL SIGN E +1112D..11134 ; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA +11145..11146 ; Extend # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI +11173 ; Extend # Mn MAHAJANI SIGN NUKTA +11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA +11182 ; Extend # Mc SHARADA SIGN VISARGA +111B3..111B5 ; Extend # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II +111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O +111BF..111C0 ; Extend # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA +111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK +111CE ; Extend # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E +111CF ; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU +1122C..1122E ; Extend # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II +1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI +11232..11233 ; Extend # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU +11234 ; Extend # Mn KHOJKI SIGN ANUSVARA +11235 ; Extend # Mc KHOJKI SIGN VIRAMA +11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA +1123E ; Extend # Mn KHOJKI SIGN SUKUN +112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA +112E0..112E2 ; Extend # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II +112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA +11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU +11302..11303 ; Extend # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA +1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA +1133E..1133F ; Extend # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I +11340 ; Extend # Mn GRANTHA VOWEL SIGN II +11341..11344 ; Extend # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR +11347..11348 ; Extend # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI +1134B..1134D ; Extend # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11357 ; Extend # Mc GRANTHA AU LENGTH MARK +11362..11363 ; Extend # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL +11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX +11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA +11435..11437 ; Extend # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II +11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI +11440..11441 ; Extend # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU +11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA +11445 ; Extend # Mc NEWA SIGN VISARGA +11446 ; Extend # Mn NEWA SIGN NUKTA +1145E ; Extend # Mn NEWA SANDHI MARK +114B0..114B2 ; Extend # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II +114B3..114B8 ; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL +114B9 ; Extend # Mc TIRHUTA VOWEL SIGN E +114BA ; Extend # Mn TIRHUTA VOWEL SIGN SHORT E +114BB..114BE ; Extend # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU +114BF..114C0 ; Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA +114C1 ; Extend # Mc TIRHUTA SIGN VISARGA +114C2..114C3 ; Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA +115AF..115B1 ; Extend # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II +115B2..115B5 ; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR +115B8..115BB ; Extend # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU +115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA +115BE ; Extend # Mc SIDDHAM SIGN VISARGA +115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA +115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU +11630..11632 ; Extend # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II +11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI +1163B..1163C ; Extend # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU +1163D ; Extend # Mn MODI SIGN ANUSVARA +1163E ; Extend # Mc MODI SIGN VISARGA +1163F..11640 ; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA +116AB ; Extend # Mn TAKRI SIGN ANUSVARA +116AC ; Extend # Mc TAKRI SIGN VISARGA +116AD ; Extend # Mn TAKRI VOWEL SIGN AA +116AE..116AF ; Extend # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II +116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU +116B6 ; Extend # Mc TAKRI SIGN VIRAMA +116B7 ; Extend # Mn TAKRI SIGN NUKTA +1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Extend # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Extend # Mc AHOM VOWEL SIGN E +11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +1182C..1182E ; Extend # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II +1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA +11838 ; Extend # Mc DOGRA SIGN VISARGA +11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA +11930..11935 ; Extend # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E +11937..11938 ; Extend # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O +1193B..1193C ; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU +1193D ; Extend # Mc DIVES AKURU SIGN HALANTA +1193E ; Extend # Mn DIVES AKURU VIRAMA +11940 ; Extend # Mc DIVES AKURU MEDIAL YA +11942 ; Extend # Mc DIVES AKURU MEDIAL RA +11943 ; Extend # Mn DIVES AKURU SIGN NUKTA +119D1..119D3 ; Extend # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II +119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR +119DA..119DB ; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI +119DC..119DF ; Extend # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA +119E0 ; Extend # Mn NANDINAGARI SIGN VIRAMA +119E4 ; Extend # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E +11A01..11A0A ; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK +11A33..11A38 ; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA +11A39 ; Extend # Mc ZANABAZAR SQUARE SIGN VISARGA +11A3B..11A3E ; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA +11A47 ; Extend # Mn ZANABAZAR SQUARE SUBJOINER +11A51..11A56 ; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE +11A57..11A58 ; Extend # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU +11A59..11A5B ; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK +11A8A..11A96 ; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA +11A97 ; Extend # Mc SOYOMBO SIGN VISARGA +11A98..11A99 ; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER +11C2F ; Extend # Mc BHAIKSUKI VOWEL SIGN AA +11C30..11C36 ; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L +11C38..11C3D ; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA +11C3E ; Extend # Mc BHAIKSUKI SIGN VISARGA +11C3F ; Extend # Mn BHAIKSUKI SIGN VIRAMA +11C92..11CA7 ; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA +11CA9 ; Extend # Mc MARCHEN SUBJOINED LETTER YA +11CAA..11CB0 ; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA +11CB1 ; Extend # Mc MARCHEN VOWEL SIGN I +11CB2..11CB3 ; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E +11CB4 ; Extend # Mc MARCHEN VOWEL SIGN O +11CB5..11CB6 ; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU +11D31..11D36 ; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R +11D3A ; Extend # Mn MASARAM GONDI VOWEL SIGN E +11D3C..11D3D ; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O +11D3F..11D45 ; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA +11D47 ; Extend # Mn MASARAM GONDI RA-KARA +11D8A..11D8E ; Extend # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU +11D90..11D91 ; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI +11D93..11D94 ; Extend # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU +11D95 ; Extend # Mn GUNJALA GONDI SIGN ANUSVARA +11D96 ; Extend # Mc GUNJALA GONDI SIGN VISARGA +11D97 ; Extend # Mn GUNJALA GONDI VIRAMA +11EF3..11EF4 ; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U +11EF5..11EF6 ; Extend # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE +16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM +16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR +16F51..16F87 ; Extend # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI +16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW +16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER +16FF0..16FF1 ; Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY +1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK +1CF00..1CF2D ; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG +1D165..1D166 ; Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM +1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 +1D16D..1D172 ; Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 +1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE +1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE +1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO +1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME +1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK +1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1E000..1E006 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE +1E008..1E018 ; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU +1E01B..1E021 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI +1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS +1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D +1E2AE ; Extend # Mn TOTO SIGN RISING TONE +1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI +1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS +1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA +1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 +E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG +E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + +# Total code points: 2512 + +# ================================================ + +1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + +# Total code points: 26 + +# ================================================ + +00AD ; Format # Cf SOFT HYPHEN +0600..0605 ; Format # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE +061C ; Format # Cf ARABIC LETTER MARK +06DD ; Format # Cf ARABIC END OF AYAH +070F ; Format # Cf SYRIAC ABBREVIATION MARK +0890..0891 ; Format # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +08E2 ; Format # Cf ARABIC DISPUTED END OF AYAH +180E ; Format # Cf MONGOLIAN VOWEL SEPARATOR +200E..200F ; Format # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK +202A..202E ; Format # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE +2060..2064 ; Format # Cf [5] WORD JOINER..INVISIBLE PLUS +2066..206F ; Format # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES +FEFF ; Format # Cf ZERO WIDTH NO-BREAK SPACE +FFF9..FFFB ; Format # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR +110BD ; Format # Cf KAITHI NUMBER SIGN +110CD ; Format # Cf KAITHI NUMBER SIGN ABOVE +13430..13438 ; Format # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +1BCA0..1BCA3 ; Format # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1D173..1D17A ; Format # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE +E0001 ; Format # Cf LANGUAGE TAG + +# Total code points: 64 + +# ================================================ + +3031..3035 ; Katakana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF +309B..309C ; Katakana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +30A0 ; Katakana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN +30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO +30FC..30FE ; Katakana # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK +30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO +31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO +32D0..32FE ; Katakana # So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO +3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO +FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU +FF70 ; Katakana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N +1AFF0..1AFF3 ; Katakana # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; Katakana # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; Katakana # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E +1B120..1B122 ; Katakana # Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU +1B164..1B167 ; Katakana # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N + +# Total code points: 330 + +# ================================================ + +0041..005A ; ALetter # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z +0061..007A ; ALetter # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z +00AA ; ALetter # Lo FEMININE ORDINAL INDICATOR +00B5 ; ALetter # L& MICRO SIGN +00BA ; ALetter # Lo MASCULINE ORDINAL INDICATOR +00C0..00D6 ; ALetter # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D8..00F6 ; ALetter # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS +00F8..01BA ; ALetter # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL +01BB ; ALetter # Lo LATIN LETTER TWO WITH STROKE +01BC..01BF ; ALetter # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN +01C0..01C3 ; ALetter # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK +01C4..0293 ; ALetter # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL +0294 ; ALetter # Lo LATIN LETTER GLOTTAL STOP +0295..02AF ; ALetter # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL +02B0..02C1 ; ALetter # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP +02C2..02C5 ; ALetter # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD +02C6..02D1 ; ALetter # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON +02D2..02D7 ; ALetter # Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN +02DE..02DF ; ALetter # Sk [2] MODIFIER LETTER RHOTIC HOOK..MODIFIER LETTER CROSS ACCENT +02E0..02E4 ; ALetter # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +02E5..02EB ; ALetter # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK +02EC ; ALetter # Lm MODIFIER LETTER VOICING +02ED ; ALetter # Sk MODIFIER LETTER UNASPIRATED +02EE ; ALetter # Lm MODIFIER LETTER DOUBLE APOSTROPHE +02EF..02FF ; ALetter # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW +0370..0373 ; ALetter # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI +0374 ; ALetter # Lm GREEK NUMERAL SIGN +0376..0377 ; ALetter # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA +037A ; ALetter # Lm GREEK YPOGEGRAMMENI +037B..037D ; ALetter # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL +037F ; ALetter # L& GREEK CAPITAL LETTER YOT +0386 ; ALetter # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0388..038A ; ALetter # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; ALetter # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..03A1 ; ALetter # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO +03A3..03F5 ; ALetter # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL +03F7..0481 ; ALetter # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA +048A..052F ; ALetter # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER +0531..0556 ; ALetter # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH +0559 ; ALetter # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING +055A..055C ; ALetter # Po [3] ARMENIAN APOSTROPHE..ARMENIAN EXCLAMATION MARK +055E ; ALetter # Po ARMENIAN QUESTION MARK +0560..0588 ; ALetter # L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE +058A ; ALetter # Pd ARMENIAN HYPHEN +05F3 ; ALetter # Po HEBREW PUNCTUATION GERESH +0620..063F ; ALetter # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE +0640 ; ALetter # Lm ARABIC TATWEEL +0641..064A ; ALetter # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH +066E..066F ; ALetter # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF +0671..06D3 ; ALetter # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +06D5 ; ALetter # Lo ARABIC LETTER AE +06E5..06E6 ; ALetter # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH +06EE..06EF ; ALetter # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V +06FA..06FC ; ALetter # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW +06FF ; ALetter # Lo ARABIC LETTER HEH WITH INVERTED V +0710 ; ALetter # Lo SYRIAC LETTER ALAPH +0712..072F ; ALetter # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH +074D..07A5 ; ALetter # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU +07B1 ; ALetter # Lo THAANA LETTER NAA +07CA..07EA ; ALetter # Lo [33] NKO LETTER A..NKO LETTER JONA RA +07F4..07F5 ; ALetter # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE +07FA ; ALetter # Lm NKO LAJANYALAN +0800..0815 ; ALetter # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF +081A ; ALetter # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT +0824 ; ALetter # Lm SAMARITAN MODIFIER LETTER SHORT A +0828 ; ALetter # Lm SAMARITAN MODIFIER LETTER I +0840..0858 ; ALetter # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN +0860..086A ; ALetter # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA +0870..0887 ; ALetter # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; ALetter # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +08A0..08C8 ; ALetter # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; ALetter # Lm ARABIC SMALL FARSI YEH +0904..0939 ; ALetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA +093D ; ALetter # Lo DEVANAGARI SIGN AVAGRAHA +0950 ; ALetter # Lo DEVANAGARI OM +0958..0961 ; ALetter # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL +0971 ; ALetter # Lm DEVANAGARI SIGN HIGH SPACING DOT +0972..0980 ; ALetter # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI +0985..098C ; ALetter # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L +098F..0990 ; ALetter # Lo [2] BENGALI LETTER E..BENGALI LETTER AI +0993..09A8 ; ALetter # Lo [22] BENGALI LETTER O..BENGALI LETTER NA +09AA..09B0 ; ALetter # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA +09B2 ; ALetter # Lo BENGALI LETTER LA +09B6..09B9 ; ALetter # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA +09BD ; ALetter # Lo BENGALI SIGN AVAGRAHA +09CE ; ALetter # Lo BENGALI LETTER KHANDA TA +09DC..09DD ; ALetter # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF..09E1 ; ALetter # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL +09F0..09F1 ; ALetter # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL +09FC ; ALetter # Lo BENGALI LETTER VEDIC ANUSVARA +0A05..0A0A ; ALetter # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU +0A0F..0A10 ; ALetter # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI +0A13..0A28 ; ALetter # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA +0A2A..0A30 ; ALetter # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA +0A32..0A33 ; ALetter # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA +0A35..0A36 ; ALetter # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA +0A38..0A39 ; ALetter # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA +0A59..0A5C ; ALetter # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA +0A5E ; ALetter # Lo GURMUKHI LETTER FA +0A72..0A74 ; ALetter # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR +0A85..0A8D ; ALetter # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E +0A8F..0A91 ; ALetter # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O +0A93..0AA8 ; ALetter # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA +0AAA..0AB0 ; ALetter # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA +0AB2..0AB3 ; ALetter # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA +0AB5..0AB9 ; ALetter # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA +0ABD ; ALetter # Lo GUJARATI SIGN AVAGRAHA +0AD0 ; ALetter # Lo GUJARATI OM +0AE0..0AE1 ; ALetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL +0AF9 ; ALetter # Lo GUJARATI LETTER ZHA +0B05..0B0C ; ALetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L +0B0F..0B10 ; ALetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI +0B13..0B28 ; ALetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA +0B2A..0B30 ; ALetter # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA +0B32..0B33 ; ALetter # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA +0B35..0B39 ; ALetter # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA +0B3D ; ALetter # Lo ORIYA SIGN AVAGRAHA +0B5C..0B5D ; ALetter # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B5F..0B61 ; ALetter # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL +0B71 ; ALetter # Lo ORIYA LETTER WA +0B83 ; ALetter # Lo TAMIL SIGN VISARGA +0B85..0B8A ; ALetter # Lo [6] TAMIL LETTER A..TAMIL LETTER UU +0B8E..0B90 ; ALetter # Lo [3] TAMIL LETTER E..TAMIL LETTER AI +0B92..0B95 ; ALetter # Lo [4] TAMIL LETTER O..TAMIL LETTER KA +0B99..0B9A ; ALetter # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA +0B9C ; ALetter # Lo TAMIL LETTER JA +0B9E..0B9F ; ALetter # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA +0BA3..0BA4 ; ALetter # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA +0BA8..0BAA ; ALetter # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA +0BAE..0BB9 ; ALetter # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA +0BD0 ; ALetter # Lo TAMIL OM +0C05..0C0C ; ALetter # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L +0C0E..0C10 ; ALetter # Lo [3] TELUGU LETTER E..TELUGU LETTER AI +0C12..0C28 ; ALetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA +0C2A..0C39 ; ALetter # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3D ; ALetter # Lo TELUGU SIGN AVAGRAHA +0C58..0C5A ; ALetter # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; ALetter # Lo TELUGU LETTER NAKAARA POLLU +0C60..0C61 ; ALetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL +0C80 ; ALetter # Lo KANNADA SIGN SPACING CANDRABINDU +0C85..0C8C ; ALetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L +0C8E..0C90 ; ALetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI +0C92..0CA8 ; ALetter # Lo [23] KANNADA LETTER O..KANNADA LETTER NA +0CAA..0CB3 ; ALetter # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA +0CB5..0CB9 ; ALetter # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA +0CBD ; ALetter # Lo KANNADA SIGN AVAGRAHA +0CDD..0CDE ; ALetter # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA +0CE0..0CE1 ; ALetter # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL +0CF1..0CF2 ; ALetter # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0D04..0D0C ; ALetter # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L +0D0E..0D10 ; ALetter # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI +0D12..0D3A ; ALetter # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA +0D3D ; ALetter # Lo MALAYALAM SIGN AVAGRAHA +0D4E ; ALetter # Lo MALAYALAM LETTER DOT REPH +0D54..0D56 ; ALetter # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL +0D5F..0D61 ; ALetter # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL +0D7A..0D7F ; ALetter # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K +0D85..0D96 ; ALetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA +0D9A..0DB1 ; ALetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA +0DB3..0DBB ; ALetter # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA +0DBD ; ALetter # Lo SINHALA LETTER DANTAJA LAYANNA +0DC0..0DC6 ; ALetter # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA +0F00 ; ALetter # Lo TIBETAN SYLLABLE OM +0F40..0F47 ; ALetter # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA +0F49..0F6C ; ALetter # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA +0F88..0F8C ; ALetter # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN +10A0..10C5 ; ALetter # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE +10C7 ; ALetter # L& GEORGIAN CAPITAL LETTER YN +10CD ; ALetter # L& GEORGIAN CAPITAL LETTER AEN +10D0..10FA ; ALetter # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10FC ; ALetter # Lm MODIFIER LETTER GEORGIAN NAR +10FD..10FF ; ALetter # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN +1100..1248 ; ALetter # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA +124A..124D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE +1250..1256 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO +1258 ; ALetter # Lo ETHIOPIC SYLLABLE QHWA +125A..125D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE +1260..1288 ; ALetter # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA +128A..128D ; ALetter # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE +1290..12B0 ; ALetter # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA +12B2..12B5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE +12B8..12BE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO +12C0 ; ALetter # Lo ETHIOPIC SYLLABLE KXWA +12C2..12C5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE +12C8..12D6 ; ALetter # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O +12D8..1310 ; ALetter # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA +1312..1315 ; ALetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE +1318..135A ; ALetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA +1380..138F ; ALetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE +13A0..13F5 ; ALetter # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD ; ALetter # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV +1401..166C ; ALetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA +166F..167F ; ALetter # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W +1681..169A ; ALetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH +16A0..16EA ; ALetter # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X +16EE..16F0 ; ALetter # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL +16F1..16F8 ; ALetter # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC +1700..1711 ; ALetter # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA +171F..1731 ; ALetter # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA +1740..1751 ; ALetter # Lo [18] BUHID LETTER A..BUHID LETTER HA +1760..176C ; ALetter # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA +176E..1770 ; ALetter # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA +1820..1842 ; ALetter # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI +1843 ; ALetter # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN +1844..1878 ; ALetter # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS +1880..1884 ; ALetter # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA +1887..18A8 ; ALetter # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA +18AA ; ALetter # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA +18B0..18F5 ; ALetter # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S +1900..191E ; ALetter # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA +1A00..1A16 ; ALetter # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA +1B05..1B33 ; ALetter # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA +1B45..1B4C ; ALetter # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA +1B83..1BA0 ; ALetter # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA +1BAE..1BAF ; ALetter # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA +1BBA..1BE5 ; ALetter # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U +1C00..1C23 ; ALetter # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A +1C4D..1C4F ; ALetter # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA +1C5A..1C77 ; ALetter # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH +1C78..1C7D ; ALetter # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD +1C80..1C88 ; ALetter # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C90..1CBA ; ALetter # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN +1CBD..1CBF ; ALetter # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN +1CE9..1CEC ; ALetter # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL +1CEE..1CF3 ; ALetter # Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA +1CF5..1CF6 ; ALetter # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA +1CFA ; ALetter # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA +1D00..1D2B ; ALetter # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL +1D2C..1D6A ; ALetter # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI +1D6B..1D77 ; ALetter # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G +1D78 ; ALetter # Lm MODIFIER LETTER CYRILLIC EN +1D79..1D9A ; ALetter # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK +1D9B..1DBF ; ALetter # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA +1E00..1F15 ; ALetter # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; ALetter # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; ALetter # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; ALetter # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; ALetter # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; ALetter # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; ALetter # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; ALetter # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBE ; ALetter # L& GREEK PROSGEGRAMMENI +1FC2..1FC4 ; ALetter # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; ALetter # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FD0..1FD3 ; ALetter # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; ALetter # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FE0..1FEC ; ALetter # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FF2..1FF4 ; ALetter # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; ALetter # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +2071 ; ALetter # Lm SUPERSCRIPT LATIN SMALL LETTER I +207F ; ALetter # Lm SUPERSCRIPT LATIN SMALL LETTER N +2090..209C ; ALetter # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T +2102 ; ALetter # L& DOUBLE-STRUCK CAPITAL C +2107 ; ALetter # L& EULER CONSTANT +210A..2113 ; ALetter # L& [10] SCRIPT SMALL G..SCRIPT SMALL L +2115 ; ALetter # L& DOUBLE-STRUCK CAPITAL N +2119..211D ; ALetter # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R +2124 ; ALetter # L& DOUBLE-STRUCK CAPITAL Z +2126 ; ALetter # L& OHM SIGN +2128 ; ALetter # L& BLACK-LETTER CAPITAL Z +212A..212D ; ALetter # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C +212F..2134 ; ALetter # L& [6] SCRIPT SMALL E..SCRIPT SMALL O +2135..2138 ; ALetter # Lo [4] ALEF SYMBOL..DALET SYMBOL +2139 ; ALetter # L& INFORMATION SOURCE +213C..213F ; ALetter # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI +2145..2149 ; ALetter # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J +214E ; ALetter # L& TURNED SMALL F +2160..2182 ; ALetter # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND +2183..2184 ; ALetter # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C +2185..2188 ; ALetter # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND +24B6..24E9 ; ALetter # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z +2C00..2C7B ; ALetter # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E +2C7C..2C7D ; ALetter # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V +2C7E..2CE4 ; ALetter # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI +2CEB..2CEE ; ALetter # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA +2CF2..2CF3 ; ALetter # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI +2D00..2D25 ; ALetter # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE +2D27 ; ALetter # L& GEORGIAN SMALL LETTER YN +2D2D ; ALetter # L& GEORGIAN SMALL LETTER AEN +2D30..2D67 ; ALetter # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO +2D6F ; ALetter # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK +2D80..2D96 ; ALetter # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE +2DA0..2DA6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO +2DA8..2DAE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO +2DB0..2DB6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO +2DB8..2DBE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO +2DC0..2DC6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO +2DC8..2DCE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO +2DD0..2DD6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO +2DD8..2DDE ; ALetter # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO +2E2F ; ALetter # Lm VERTICAL TILDE +3005 ; ALetter # Lm IDEOGRAPHIC ITERATION MARK +303B ; ALetter # Lm VERTICAL IDEOGRAPHIC ITERATION MARK +303C ; ALetter # Lo MASU MARK +3105..312F ; ALetter # Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN +3131..318E ; ALetter # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE +31A0..31BF ; ALetter # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH +A000..A014 ; ALetter # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +A015 ; ALetter # Lm YI SYLLABLE WU +A016..A48C ; ALetter # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR +A4D0..A4F7 ; ALetter # Lo [40] LISU LETTER BA..LISU LETTER OE +A4F8..A4FD ; ALetter # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU +A500..A60B ; ALetter # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG +A60C ; ALetter # Lm VAI SYLLABLE LENGTHENER +A610..A61F ; ALetter # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG +A62A..A62B ; ALetter # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO +A640..A66D ; ALetter # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O +A66E ; ALetter # Lo CYRILLIC LETTER MULTIOCULAR O +A67F ; ALetter # Lm CYRILLIC PAYEROK +A680..A69B ; ALetter # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O +A69C..A69D ; ALetter # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN +A6A0..A6E5 ; ALetter # Lo [70] BAMUM LETTER A..BAMUM LETTER KI +A6E6..A6EF ; ALetter # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM +A708..A716 ; ALetter # Sk [15] MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR +A717..A71F ; ALetter # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK +A720..A721 ; ALetter # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE +A722..A76F ; ALetter # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON +A770 ; ALetter # Lm MODIFIER LETTER US +A771..A787 ; ALetter # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T +A788 ; ALetter # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT +A789..A78A ; ALetter # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN +A78B..A78E ; ALetter # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F ; ALetter # Lo LATIN LETTER SINOLOGICAL DOT +A790..A7CA ; ALetter # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7D0..A7D1 ; ALetter # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; ALetter # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7D9 ; ALetter # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S +A7F2..A7F4 ; ALetter # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q +A7F5..A7F6 ; ALetter # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H +A7F7 ; ALetter # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I +A7F8..A7F9 ; ALetter # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE +A7FA ; ALetter # L& LATIN LETTER SMALL CAPITAL TURNED M +A7FB..A801 ; ALetter # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I +A803..A805 ; ALetter # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O +A807..A80A ; ALetter # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO +A80C..A822 ; ALetter # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO +A840..A873 ; ALetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU +A882..A8B3 ; ALetter # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA +A8F2..A8F7 ; ALetter # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA +A8FB ; ALetter # Lo DEVANAGARI HEADSTROKE +A8FD..A8FE ; ALetter # Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY +A90A..A925 ; ALetter # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO +A930..A946 ; ALetter # Lo [23] REJANG LETTER KA..REJANG LETTER A +A960..A97C ; ALetter # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH +A984..A9B2 ; ALetter # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA +A9CF ; ALetter # Lm JAVANESE PANGRANGKEP +AA00..AA28 ; ALetter # Lo [41] CHAM LETTER A..CHAM LETTER HA +AA40..AA42 ; ALetter # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG +AA44..AA4B ; ALetter # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS +AAE0..AAEA ; ALetter # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA +AAF2 ; ALetter # Lo MEETEI MAYEK ANJI +AAF3..AAF4 ; ALetter # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK +AB01..AB06 ; ALetter # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO +AB09..AB0E ; ALetter # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO +AB11..AB16 ; ALetter # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO +AB20..AB26 ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO +AB28..AB2E ; ALetter # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO +AB30..AB5A ; ALetter # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG +AB5B ; ALetter # Sk MODIFIER BREVE WITH INVERTED BREVE +AB5C..AB5F ; ALetter # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK +AB60..AB68 ; ALetter # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; ALetter # Lm MODIFIER LETTER SMALL TURNED W +AB70..ABBF ; ALetter # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA +ABC0..ABE2 ; ALetter # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM +AC00..D7A3 ; ALetter # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +D7B0..D7C6 ; ALetter # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E +D7CB..D7FB ; ALetter # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH +FB00..FB06 ; ALetter # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FB13..FB17 ; ALetter # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +FB50..FBB1 ; ALetter # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBD3..FD3D ; ALetter # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; ALetter # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; ALetter # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; ALetter # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FE70..FE74 ; ALetter # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM +FE76..FEFC ; ALetter # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FF21..FF3A ; ALetter # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z +FF41..FF5A ; ALetter # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +FFA0..FFBE ; ALetter # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH +FFC2..FFC7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E +FFCA..FFCF ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE +FFD2..FFD7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU +FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I +10000..1000B ; ALetter # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE +1000D..10026 ; ALetter # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO +10028..1003A ; ALetter # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO +1003C..1003D ; ALetter # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE +1003F..1004D ; ALetter # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO +10050..1005D ; ALetter # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 +10080..100FA ; ALetter # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 +10140..10174 ; ALetter # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS +10280..1029C ; ALetter # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X +102A0..102D0 ; ALetter # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 +10300..1031F ; ALetter # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS +1032D..10340 ; ALetter # Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA +10341 ; ALetter # Nl GOTHIC LETTER NINETY +10342..10349 ; ALetter # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL +1034A ; ALetter # Nl GOTHIC LETTER NINE HUNDRED +10350..10375 ; ALetter # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA +10380..1039D ; ALetter # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU +103A0..103C3 ; ALetter # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA +103C8..103CF ; ALetter # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH +103D1..103D5 ; ALetter # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED +10400..1044F ; ALetter # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW +10450..1049D ; ALetter # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO +104B0..104D3 ; ALetter # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA +104D8..104FB ; ALetter # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10500..10527 ; ALetter # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE +10530..10563 ; ALetter # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; ALetter # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; ALetter # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; ALetter # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; ALetter # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; ALetter # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; ALetter # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; ALetter # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; ALetter # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +10600..10736 ; ALetter # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 +10740..10755 ; ALetter # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE +10760..10767 ; ALetter # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; ALetter # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; ALetter # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; ALetter # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL +10800..10805 ; ALetter # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA +10808 ; ALetter # Lo CYPRIOT SYLLABLE JO +1080A..10835 ; ALetter # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO +10837..10838 ; ALetter # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE +1083C ; ALetter # Lo CYPRIOT SYLLABLE ZA +1083F..10855 ; ALetter # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW +10860..10876 ; ALetter # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW +10880..1089E ; ALetter # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW +108E0..108F2 ; ALetter # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; ALetter # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +10900..10915 ; ALetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU +10920..10939 ; ALetter # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C +10980..109B7 ; ALetter # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA +109BE..109BF ; ALetter # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN +10A00 ; ALetter # Lo KHAROSHTHI LETTER A +10A10..10A13 ; ALetter # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA +10A15..10A17 ; ALetter # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA +10A19..10A35 ; ALetter # Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA +10A60..10A7C ; ALetter # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH +10A80..10A9C ; ALetter # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH +10AC0..10AC7 ; ALetter # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW +10AC9..10AE4 ; ALetter # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW +10B00..10B35 ; ALetter # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE +10B40..10B55 ; ALetter # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW +10B60..10B72 ; ALetter # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW +10B80..10B91 ; ALetter # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW +10C00..10C48 ; ALetter # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH +10C80..10CB2 ; ALetter # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; ALetter # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D00..10D23 ; ALetter # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA +10E80..10EA9 ; ALetter # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET +10EB0..10EB1 ; ALetter # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10F00..10F1C ; ALetter # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL +10F27 ; ALetter # Lo OLD SOGDIAN LIGATURE AYIN-DALETH +10F30..10F45 ; ALetter # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN +10F70..10F81 ; ALetter # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10FB0..10FC4 ; ALetter # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW +10FE0..10FF6 ; ALetter # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH +11003..11037 ; ALetter # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA +11071..11072 ; ALetter # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11075 ; ALetter # Lo BRAHMI LETTER OLD TAMIL LLA +11083..110AF ; ALetter # Lo [45] KAITHI LETTER A..KAITHI LETTER HA +110D0..110E8 ; ALetter # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE +11103..11126 ; ALetter # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA +11144 ; ALetter # Lo CHAKMA LETTER LHAA +11147 ; ALetter # Lo CHAKMA LETTER VAA +11150..11172 ; ALetter # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA +11176 ; ALetter # Lo MAHAJANI LIGATURE SHRI +11183..111B2 ; ALetter # Lo [48] SHARADA LETTER A..SHARADA LETTER HA +111C1..111C4 ; ALetter # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM +111DA ; ALetter # Lo SHARADA EKAM +111DC ; ALetter # Lo SHARADA HEADSTROKE +11200..11211 ; ALetter # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA +11213..1122B ; ALetter # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +11280..11286 ; ALetter # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; ALetter # Lo MULTANI LETTER GHA +1128A..1128D ; ALetter # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; ALetter # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; ALetter # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA +112B0..112DE ; ALetter # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA +11305..1130C ; ALetter # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L +1130F..11310 ; ALetter # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI +11313..11328 ; ALetter # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA +1132A..11330 ; ALetter # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA +11332..11333 ; ALetter # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA +11335..11339 ; ALetter # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA +1133D ; ALetter # Lo GRANTHA SIGN AVAGRAHA +11350 ; ALetter # Lo GRANTHA OM +1135D..11361 ; ALetter # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL +11400..11434 ; ALetter # Lo [53] NEWA LETTER A..NEWA LETTER HA +11447..1144A ; ALetter # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI +1145F..11461 ; ALetter # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA +11480..114AF ; ALetter # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA +114C4..114C5 ; ALetter # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG +114C7 ; ALetter # Lo TIRHUTA OM +11580..115AE ; ALetter # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA +115D8..115DB ; ALetter # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U +11600..1162F ; ALetter # Lo [48] MODI LETTER A..MODI LETTER LLA +11644 ; ALetter # Lo MODI SIGN HUVA +11680..116AA ; ALetter # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA +116B8 ; ALetter # Lo TAKRI LETTER ARCHAIC KHA +11800..1182B ; ALetter # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA +118A0..118DF ; ALetter # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO +118FF..11906 ; ALetter # Lo [8] WARANG CITI OM..DIVES AKURU LETTER E +11909 ; ALetter # Lo DIVES AKURU LETTER O +1190C..11913 ; ALetter # Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA +11915..11916 ; ALetter # Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA +11918..1192F ; ALetter # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA +1193F ; ALetter # Lo DIVES AKURU PREFIXED NASAL SIGN +11941 ; ALetter # Lo DIVES AKURU INITIAL RA +119A0..119A7 ; ALetter # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR +119AA..119D0 ; ALetter # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA +119E1 ; ALetter # Lo NANDINAGARI SIGN AVAGRAHA +119E3 ; ALetter # Lo NANDINAGARI HEADSTROKE +11A00 ; ALetter # Lo ZANABAZAR SQUARE LETTER A +11A0B..11A32 ; ALetter # Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA +11A3A ; ALetter # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA +11A50 ; ALetter # Lo SOYOMBO LETTER A +11A5C..11A89 ; ALetter # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA +11A9D ; ALetter # Lo SOYOMBO MARK PLUTA +11AB0..11AF8 ; ALetter # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11C00..11C08 ; ALetter # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L +11C0A..11C2E ; ALetter # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA +11C40 ; ALetter # Lo BHAIKSUKI SIGN AVAGRAHA +11C72..11C8F ; ALetter # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A +11D00..11D06 ; ALetter # Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E +11D08..11D09 ; ALetter # Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O +11D0B..11D30 ; ALetter # Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA +11D46 ; ALetter # Lo MASARAM GONDI REPHA +11D60..11D65 ; ALetter # Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU +11D67..11D68 ; ALetter # Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI +11D6A..11D89 ; ALetter # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA +11D98 ; ALetter # Lo GUNJALA GONDI OM +11EE0..11EF2 ; ALetter # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11FB0 ; ALetter # Lo LISU LETTER YHA +12000..12399 ; ALetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U +12400..1246E ; ALetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM +12480..12543 ; ALetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU +12F90..12FF0 ; ALetter # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342E ; ALetter # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +14400..14646 ; ALetter # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16800..16A38 ; ALetter # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ +16A40..16A5E ; ALetter # Lo [31] MRO LETTER TA..MRO LETTER TEK +16A70..16ABE ; ALetter # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AD0..16AED ; ALetter # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I +16B00..16B2F ; ALetter # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU +16B40..16B43 ; ALetter # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM +16B63..16B77 ; ALetter # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS +16B7D..16B8F ; ALetter # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16E40..16E7F ; ALetter # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y +16F00..16F4A ; ALetter # Lo [75] MIAO LETTER PA..MIAO LETTER RTE +16F50 ; ALetter # Lo MIAO LETTER NASALIZATION +16F93..16F9F ; ALetter # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 +16FE0..16FE1 ; ALetter # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK +16FE3 ; ALetter # Lm OLD CHINESE ITERATION MARK +1BC00..1BC6A ; ALetter # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M +1BC70..1BC7C ; ALetter # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK +1BC80..1BC88 ; ALetter # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL +1BC90..1BC99 ; ALetter # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW +1D400..1D454 ; ALetter # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G +1D456..1D49C ; ALetter # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A +1D49E..1D49F ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D +1D4A2 ; ALetter # L& MATHEMATICAL SCRIPT CAPITAL G +1D4A5..1D4A6 ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K +1D4A9..1D4AC ; ALetter # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q +1D4AE..1D4B9 ; ALetter # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D +1D4BB ; ALetter # L& MATHEMATICAL SCRIPT SMALL F +1D4BD..1D4C3 ; ALetter # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N +1D4C5..1D505 ; ALetter # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B +1D507..1D50A ; ALetter # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G +1D50D..1D514 ; ALetter # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q +1D516..1D51C ; ALetter # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y +1D51E..1D539 ; ALetter # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B..1D53E ; ALetter # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540..1D544 ; ALetter # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546 ; ALetter # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A..1D550 ; ALetter # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D552..1D6A5 ; ALetter # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J +1D6A8..1D6C0 ; ALetter # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA +1D6C2..1D6DA ; ALetter # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA +1D6DC..1D6FA ; ALetter # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA +1D6FC..1D714 ; ALetter # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA +1D716..1D734 ; ALetter # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D736..1D74E ; ALetter # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D750..1D76E ; ALetter # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D770..1D788 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D78A..1D7A8 ; ALetter # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7AA..1D7C2 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +1D7C4..1D7CB ; ALetter # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; ALetter # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; ALetter # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; ALetter # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1E100..1E12C ; ALetter # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W +1E137..1E13D ; ALetter # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER +1E14E ; ALetter # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; ALetter # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2C0..1E2EB ; ALetter # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E7E0..1E7E6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; ALetter # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; ALetter # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; ALetter # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE +1E800..1E8C4 ; ALetter # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON +1E900..1E943 ; ALetter # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA +1E94B ; ALetter # Lm ADLAM NASALIZATION MARK +1EE00..1EE03 ; ALetter # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL +1EE05..1EE1F ; ALetter # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF +1EE21..1EE22 ; ALetter # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM +1EE24 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL HEH +1EE27 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL HAH +1EE29..1EE32 ; ALetter # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF +1EE34..1EE37 ; ALetter # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH +1EE39 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL DAD +1EE3B ; ALetter # Lo ARABIC MATHEMATICAL INITIAL GHAIN +1EE42 ; ALetter # Lo ARABIC MATHEMATICAL TAILED JEEM +1EE47 ; ALetter # Lo ARABIC MATHEMATICAL TAILED HAH +1EE49 ; ALetter # Lo ARABIC MATHEMATICAL TAILED YEH +1EE4B ; ALetter # Lo ARABIC MATHEMATICAL TAILED LAM +1EE4D..1EE4F ; ALetter # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN +1EE51..1EE52 ; ALetter # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF +1EE54 ; ALetter # Lo ARABIC MATHEMATICAL TAILED SHEEN +1EE57 ; ALetter # Lo ARABIC MATHEMATICAL TAILED KHAH +1EE59 ; ALetter # Lo ARABIC MATHEMATICAL TAILED DAD +1EE5B ; ALetter # Lo ARABIC MATHEMATICAL TAILED GHAIN +1EE5D ; ALetter # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON +1EE5F ; ALetter # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF +1EE61..1EE62 ; ALetter # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM +1EE64 ; ALetter # Lo ARABIC MATHEMATICAL STRETCHED HEH +1EE67..1EE6A ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF +1EE6C..1EE72 ; ALetter # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF +1EE74..1EE77 ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH +1EE79..1EE7C ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH +1EE7E ; ALetter # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH +1EE80..1EE89 ; ALetter # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH +1EE8B..1EE9B ; ALetter # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN +1EEA1..1EEA3 ; ALetter # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL +1EEA5..1EEA9 ; ALetter # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH +1EEAB..1EEBB ; ALetter # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN +1F130..1F149 ; ALetter # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z +1F150..1F169 ; ALetter # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z +1F170..1F189 ; ALetter # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z + +# Total code points: 29336 + +# ================================================ + +003A ; MidLetter # Po COLON +00B7 ; MidLetter # Po MIDDLE DOT +0387 ; MidLetter # Po GREEK ANO TELEIA +055F ; MidLetter # Po ARMENIAN ABBREVIATION MARK +05F4 ; MidLetter # Po HEBREW PUNCTUATION GERSHAYIM +2027 ; MidLetter # Po HYPHENATION POINT +FE13 ; MidLetter # Po PRESENTATION FORM FOR VERTICAL COLON +FE55 ; MidLetter # Po SMALL COLON +FF1A ; MidLetter # Po FULLWIDTH COLON + +# Total code points: 9 + +# ================================================ + +002C ; MidNum # Po COMMA +003B ; MidNum # Po SEMICOLON +037E ; MidNum # Po GREEK QUESTION MARK +0589 ; MidNum # Po ARMENIAN FULL STOP +060C..060D ; MidNum # Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR +066C ; MidNum # Po ARABIC THOUSANDS SEPARATOR +07F8 ; MidNum # Po NKO COMMA +2044 ; MidNum # Sm FRACTION SLASH +FE10 ; MidNum # Po PRESENTATION FORM FOR VERTICAL COMMA +FE14 ; MidNum # Po PRESENTATION FORM FOR VERTICAL SEMICOLON +FE50 ; MidNum # Po SMALL COMMA +FE54 ; MidNum # Po SMALL SEMICOLON +FF0C ; MidNum # Po FULLWIDTH COMMA +FF1B ; MidNum # Po FULLWIDTH SEMICOLON + +# Total code points: 15 + +# ================================================ + +002E ; MidNumLet # Po FULL STOP +2018 ; MidNumLet # Pi LEFT SINGLE QUOTATION MARK +2019 ; MidNumLet # Pf RIGHT SINGLE QUOTATION MARK +2024 ; MidNumLet # Po ONE DOT LEADER +FE52 ; MidNumLet # Po SMALL FULL STOP +FF07 ; MidNumLet # Po FULLWIDTH APOSTROPHE +FF0E ; MidNumLet # Po FULLWIDTH FULL STOP + +# Total code points: 7 + +# ================================================ + +0030..0039 ; Numeric # Nd [10] DIGIT ZERO..DIGIT NINE +0660..0669 ; Numeric # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE +066B ; Numeric # Po ARABIC DECIMAL SEPARATOR +06F0..06F9 ; Numeric # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE +07C0..07C9 ; Numeric # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE +0966..096F ; Numeric # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE +09E6..09EF ; Numeric # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE +0A66..0A6F ; Numeric # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE +0AE6..0AEF ; Numeric # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE +0B66..0B6F ; Numeric # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE +0BE6..0BEF ; Numeric # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE +0C66..0C6F ; Numeric # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE +0CE6..0CEF ; Numeric # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE +0D66..0D6F ; Numeric # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE +0DE6..0DEF ; Numeric # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE +0E50..0E59 ; Numeric # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE +0ED0..0ED9 ; Numeric # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE +0F20..0F29 ; Numeric # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE +1040..1049 ; Numeric # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE +1090..1099 ; Numeric # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE +17E0..17E9 ; Numeric # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE +1810..1819 ; Numeric # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE +1946..194F ; Numeric # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE +19D0..19D9 ; Numeric # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE +1A80..1A89 ; Numeric # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE +1A90..1A99 ; Numeric # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE +1B50..1B59 ; Numeric # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE +1BB0..1BB9 ; Numeric # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE +1C40..1C49 ; Numeric # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE +1C50..1C59 ; Numeric # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE +A620..A629 ; Numeric # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE +A8D0..A8D9 ; Numeric # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE +A900..A909 ; Numeric # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE +A9D0..A9D9 ; Numeric # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE +A9F0..A9F9 ; Numeric # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE +AA50..AA59 ; Numeric # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE +ABF0..ABF9 ; Numeric # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE +FF10..FF19 ; Numeric # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE +104A0..104A9 ; Numeric # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE +10D30..10D39 ; Numeric # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE +11066..1106F ; Numeric # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +110F0..110F9 ; Numeric # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE +11136..1113F ; Numeric # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE +111D0..111D9 ; Numeric # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE +112F0..112F9 ; Numeric # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE +11450..11459 ; Numeric # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE +114D0..114D9 ; Numeric # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE +11650..11659 ; Numeric # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE +116C0..116C9 ; Numeric # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +11730..11739 ; Numeric # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +118E0..118E9 ; Numeric # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE +11950..11959 ; Numeric # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE +11C50..11C59 ; Numeric # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE +11D50..11D59 ; Numeric # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE +11DA0..11DA9 ; Numeric # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE +16A60..16A69 ; Numeric # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE +16AC0..16AC9 ; Numeric # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE +16B50..16B59 ; Numeric # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE +1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE +1E140..1E149 ; Numeric # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE +1E2F0..1E2F9 ; Numeric # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E950..1E959 ; Numeric # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE +1FBF0..1FBF9 ; Numeric # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE + +# Total code points: 661 + +# ================================================ + +005F ; ExtendNumLet # Pc LOW LINE +202F ; ExtendNumLet # Zs NARROW NO-BREAK SPACE +203F..2040 ; ExtendNumLet # Pc [2] UNDERTIE..CHARACTER TIE +2054 ; ExtendNumLet # Pc INVERTED UNDERTIE +FE33..FE34 ; ExtendNumLet # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +FE4D..FE4F ; ExtendNumLet # Pc [3] DASHED LOW LINE..WAVY LOW LINE +FF3F ; ExtendNumLet # Pc FULLWIDTH LOW LINE + +# Total code points: 11 + +# ================================================ + +200D ; ZWJ # Cf ZERO WIDTH JOINER + +# Total code points: 1 + +# ================================================ + +0020 ; WSegSpace # Zs SPACE +1680 ; WSegSpace # Zs OGHAM SPACE MARK +2000..2006 ; WSegSpace # Zs [7] EN QUAD..SIX-PER-EM SPACE +2008..200A ; WSegSpace # Zs [3] PUNCTUATION SPACE..HAIR SPACE +205F ; WSegSpace # Zs MEDIUM MATHEMATICAL SPACE +3000 ; WSegSpace # Zs IDEOGRAPHIC SPACE + +# Total code points: 14 + +# EOF diff --git a/texmf/tex/generic/unicode-data/emoji-data.txt b/texmf/tex/generic/unicode-data/emoji-data.txt new file mode 100644 index 000000000..7806c7ab5 --- /dev/null +++ b/texmf/tex/generic/unicode-data/emoji-data.txt @@ -0,0 +1,1297 @@ +# emoji-data-14.0.0.txt +# Date: 2021-08-26, 17:22:22 GMT +# © 2021 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Emoji Data for UTS #51 +# Used with Emoji Version 14.0 and subsequent minor revisions (if any) +# +# For documentation and usage, see http://www.unicode.org/reports/tr51 +# +# Format: +# ; # +# Note: there is no guarantee as to the structure of whitespace or comments +# +# Characters and sequences are listed in code point order. Users should be shown a more natural order. +# See the CLDR collation order for Emoji. + + +# ================================================ + +# All omitted code points have Emoji=No +# @missing: 0000..10FFFF ; Emoji ; No + +0023 ; Emoji # E0.0 [1] (#️) hash sign +002A ; Emoji # E0.0 [1] (*️) asterisk +0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine +00A9 ; Emoji # E0.6 [1] (©️) copyright +00AE ; Emoji # E0.6 [1] (®️) registered +203C ; Emoji # E0.6 [1] (‼️) double exclamation mark +2049 ; Emoji # E0.6 [1] (⁉️) exclamation question mark +2122 ; Emoji # E0.6 [1] (™️) trade mark +2139 ; Emoji # E0.6 [1] (ℹ️) information +2194..2199 ; Emoji # E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Emoji # E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Emoji # E0.6 [2] (⌚..⌛) watch..hourglass done +2328 ; Emoji # E1.0 [1] (⌨️) keyboard +23CF ; Emoji # E1.0 [1] (⏏️) eject button +23E9..23EC ; Emoji # E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23ED..23EE ; Emoji # E0.7 [2] (⏭️..⏮️) next track button..last track button +23EF ; Emoji # E1.0 [1] (⏯️) play or pause button +23F0 ; Emoji # E0.6 [1] (⏰) alarm clock +23F1..23F2 ; Emoji # E1.0 [2] (⏱️..⏲️) stopwatch..timer clock +23F3 ; Emoji # E0.6 [1] (⏳) hourglass not done +23F8..23FA ; Emoji # E0.7 [3] (⏸️..⏺️) pause button..record button +24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M +25AA..25AB ; Emoji # E0.6 [2] (▪️..▫️) black small square..white small square +25B6 ; Emoji # E0.6 [1] (▶️) play button +25C0 ; Emoji # E0.6 [1] (◀️) reverse button +25FB..25FE ; Emoji # E0.6 [4] (◻️..◾) white medium square..black medium-small square +2600..2601 ; Emoji # E0.6 [2] (☀️..☁️) sun..cloud +2602..2603 ; Emoji # E0.7 [2] (☂️..☃️) umbrella..snowman +2604 ; Emoji # E1.0 [1] (☄️) comet +260E ; Emoji # E0.6 [1] (☎️) telephone +2611 ; Emoji # E0.6 [1] (☑️) check box with check +2614..2615 ; Emoji # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2618 ; Emoji # E1.0 [1] (☘️) shamrock +261D ; Emoji # E0.6 [1] (☝️) index pointing up +2620 ; Emoji # E1.0 [1] (☠️) skull and crossbones +2622..2623 ; Emoji # E1.0 [2] (☢️..☣️) radioactive..biohazard +2626 ; Emoji # E1.0 [1] (☦️) orthodox cross +262A ; Emoji # E0.7 [1] (☪️) star and crescent +262E ; Emoji # E1.0 [1] (☮️) peace symbol +262F ; Emoji # E0.7 [1] (☯️) yin yang +2638..2639 ; Emoji # E0.7 [2] (☸️..☹️) wheel of dharma..frowning face +263A ; Emoji # E0.6 [1] (☺️) smiling face +2640 ; Emoji # E4.0 [1] (♀️) female sign +2642 ; Emoji # E4.0 [1] (♂️) male sign +2648..2653 ; Emoji # E0.6 [12] (♈..♓) Aries..Pisces +265F ; Emoji # E11.0 [1] (♟️) chess pawn +2660 ; Emoji # E0.6 [1] (♠️) spade suit +2663 ; Emoji # E0.6 [1] (♣️) club suit +2665..2666 ; Emoji # E0.6 [2] (♥️..♦️) heart suit..diamond suit +2668 ; Emoji # E0.6 [1] (♨️) hot springs +267B ; Emoji # E0.6 [1] (♻️) recycling symbol +267E ; Emoji # E11.0 [1] (♾️) infinity +267F ; Emoji # E0.6 [1] (♿) wheelchair symbol +2692 ; Emoji # E1.0 [1] (⚒️) hammer and pick +2693 ; Emoji # E0.6 [1] (⚓) anchor +2694 ; Emoji # E1.0 [1] (⚔️) crossed swords +2695 ; Emoji # E4.0 [1] (⚕️) medical symbol +2696..2697 ; Emoji # E1.0 [2] (⚖️..⚗️) balance scale..alembic +2699 ; Emoji # E1.0 [1] (⚙️) gear +269B..269C ; Emoji # E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis +26A0..26A1 ; Emoji # E0.6 [2] (⚠️..⚡) warning..high voltage +26A7 ; Emoji # E13.0 [1] (⚧️) transgender symbol +26AA..26AB ; Emoji # E0.6 [2] (⚪..⚫) white circle..black circle +26B0..26B1 ; Emoji # E1.0 [2] (⚰️..⚱️) coffin..funeral urn +26BD..26BE ; Emoji # E0.6 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26C8 ; Emoji # E0.7 [1] (⛈️) cloud with lightning and rain +26CE ; Emoji # E0.6 [1] (⛎) Ophiuchus +26CF ; Emoji # E0.7 [1] (⛏️) pick +26D1 ; Emoji # E0.7 [1] (⛑️) rescue worker’s helmet +26D3 ; Emoji # E0.7 [1] (⛓️) chains +26D4 ; Emoji # E0.6 [1] (⛔) no entry +26E9 ; Emoji # E0.7 [1] (⛩️) shinto shrine +26EA ; Emoji # E0.6 [1] (⛪) church +26F0..26F1 ; Emoji # E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground +26F2..26F3 ; Emoji # E0.6 [2] (⛲..⛳) fountain..flag in hole +26F4 ; Emoji # E0.7 [1] (⛴️) ferry +26F5 ; Emoji # E0.6 [1] (⛵) sailboat +26F7..26F9 ; Emoji # E0.7 [3] (⛷️..⛹️) skier..person bouncing ball +26FA ; Emoji # E0.6 [1] (⛺) tent +26FD ; Emoji # E0.6 [1] (⛽) fuel pump +2702 ; Emoji # E0.6 [1] (✂️) scissors +2705 ; Emoji # E0.6 [1] (✅) check mark button +2708..270C ; Emoji # E0.6 [5] (✈️..✌️) airplane..victory hand +270D ; Emoji # E0.7 [1] (✍️) writing hand +270F ; Emoji # E0.6 [1] (✏️) pencil +2712 ; Emoji # E0.6 [1] (✒️) black nib +2714 ; Emoji # E0.6 [1] (✔️) check mark +2716 ; Emoji # E0.6 [1] (✖️) multiply +271D ; Emoji # E0.7 [1] (✝️) latin cross +2721 ; Emoji # E0.7 [1] (✡️) star of David +2728 ; Emoji # E0.6 [1] (✨) sparkles +2733..2734 ; Emoji # E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Emoji # E0.6 [1] (❄️) snowflake +2747 ; Emoji # E0.6 [1] (❇️) sparkle +274C ; Emoji # E0.6 [1] (❌) cross mark +274E ; Emoji # E0.6 [1] (❎) cross mark button +2753..2755 ; Emoji # E0.6 [3] (❓..❕) red question mark..white exclamation mark +2757 ; Emoji # E0.6 [1] (❗) red exclamation mark +2763 ; Emoji # E1.0 [1] (❣️) heart exclamation +2764 ; Emoji # E0.6 [1] (❤️) red heart +2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide +27A1 ; Emoji # E0.6 [1] (➡️) right arrow +27B0 ; Emoji # E0.6 [1] (➰) curly loop +27BF ; Emoji # E1.0 [1] (➿) double curly loop +2934..2935 ; Emoji # E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Emoji # E0.6 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Emoji # E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji # E0.6 [1] (⭐) star +2B55 ; Emoji # E0.6 [1] (⭕) hollow red circle +3030 ; Emoji # E0.6 [1] (〰️) wavy dash +303D ; Emoji # E0.6 [1] (〽️) part alternation mark +3297 ; Emoji # E0.6 [1] (㊗️) Japanese “congratulations” button +3299 ; Emoji # E0.6 [1] (㊙️) Japanese “secret” button +1F004 ; Emoji # E0.6 [1] (🀄) mahjong red dragon +1F0CF ; Emoji # E0.6 [1] (🃏) joker +1F170..1F171 ; Emoji # E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E..1F17F ; Emoji # E0.6 [2] (🅾️..🅿️) O button (blood type)..P button +1F18E ; Emoji # E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji # E0.6 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201..1F202 ; Emoji # E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F21A ; Emoji # E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji # E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Emoji # E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F250..1F251 ; Emoji # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F30C ; Emoji # E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Emoji # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Emoji # E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Emoji # E1.0 [1] (🌐) globe with meridians +1F311 ; Emoji # E0.6 [1] (🌑) new moon +1F312 ; Emoji # E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Emoji # E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Emoji # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Emoji # E0.6 [1] (🌙) crescent moon +1F31A ; Emoji # E1.0 [1] (🌚) new moon face +1F31B ; Emoji # E0.6 [1] (🌛) first quarter moon face +1F31C ; Emoji # E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Emoji # E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Emoji # E0.6 [2] (🌟..🌠) glowing star..shooting star +1F321 ; Emoji # E0.7 [1] (🌡️) thermometer +1F324..1F32C ; Emoji # E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face +1F32D..1F32F ; Emoji # E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Emoji # E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Emoji # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Emoji # E0.6 [2] (🌴..🌵) palm tree..cactus +1F336 ; Emoji # E0.7 [1] (🌶️) hot pepper +1F337..1F34A ; Emoji # E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Emoji # E1.0 [1] (🍋) lemon +1F34C..1F34F ; Emoji # E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Emoji # E1.0 [1] (🍐) pear +1F351..1F37B ; Emoji # E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Emoji # E1.0 [1] (🍼) baby bottle +1F37D ; Emoji # E0.7 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Emoji # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji # E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F396..1F397 ; Emoji # E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon +1F399..1F39B ; Emoji # E0.7 [3] (🎙️..🎛️) studio microphone..control knobs +1F39E..1F39F ; Emoji # E0.7 [2] (🎞️..🎟️) film frames..admission tickets +1F3A0..1F3C4 ; Emoji # E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji # E1.0 [1] (🏅) sports medal +1F3C6 ; Emoji # E0.6 [1] (🏆) trophy +1F3C7 ; Emoji # E1.0 [1] (🏇) horse racing +1F3C8 ; Emoji # E0.6 [1] (🏈) american football +1F3C9 ; Emoji # E1.0 [1] (🏉) rugby football +1F3CA ; Emoji # E0.6 [1] (🏊) person swimming +1F3CB..1F3CE ; Emoji # E0.7 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Emoji # E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Emoji # E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3E3 ; Emoji # E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Emoji # E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Emoji # E0.6 [12] (🏥..🏰) hospital..castle +1F3F3 ; Emoji # E0.7 [1] (🏳️) white flag +1F3F4 ; Emoji # E1.0 [1] (🏴) black flag +1F3F5 ; Emoji # E0.7 [1] (🏵️) rosette +1F3F7 ; Emoji # E0.7 [1] (🏷️) label +1F3F8..1F407 ; Emoji # E1.0 [16] (🏸..🐇) badminton..rabbit +1F408 ; Emoji # E0.7 [1] (🐈) cat +1F409..1F40B ; Emoji # E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Emoji # E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Emoji # E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Emoji # E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Emoji # E1.0 [1] (🐓) rooster +1F414 ; Emoji # E0.6 [1] (🐔) chicken +1F415 ; Emoji # E0.7 [1] (🐕) dog +1F416 ; Emoji # E1.0 [1] (🐖) pig +1F417..1F429 ; Emoji # E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Emoji # E1.0 [1] (🐪) camel +1F42B..1F43E ; Emoji # E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F43F ; Emoji # E0.7 [1] (🐿️) chipmunk +1F440 ; Emoji # E0.6 [1] (👀) eyes +1F441 ; Emoji # E0.7 [1] (👁️) eye +1F442..1F464 ; Emoji # E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Emoji # E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Emoji # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Emoji # E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Emoji # E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Emoji # E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Emoji # E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Emoji # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Emoji # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Emoji # E0.6 [1] (📮) postbox +1F4EF ; Emoji # E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Emoji # E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Emoji # E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Emoji # E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Emoji # E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji # E0.6 [4] (📹..📼) video camera..videocassette +1F4FD ; Emoji # E0.7 [1] (📽️) film projector +1F4FF..1F502 ; Emoji # E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Emoji # E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Emoji # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Emoji # E0.7 [1] (🔈) speaker low volume +1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Emoji # E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..water pistol +1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove +1F54B..1F54E ; Emoji # E1.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F55B ; Emoji # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Emoji # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F56F..1F570 ; Emoji # E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock +1F573..1F579 ; Emoji # E0.7 [7] (🕳️..🕹️) hole..joystick +1F57A ; Emoji # E3.0 [1] (🕺) man dancing +1F587 ; Emoji # E0.7 [1] (🖇️) linked paperclips +1F58A..1F58D ; Emoji # E0.7 [4] (🖊️..🖍️) pen..crayon +1F590 ; Emoji # E0.7 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji # E3.0 [1] (🖤) black heart +1F5A5 ; Emoji # E0.7 [1] (🖥️) desktop computer +1F5A8 ; Emoji # E0.7 [1] (🖨️) printer +1F5B1..1F5B2 ; Emoji # E0.7 [2] (🖱️..🖲️) computer mouse..trackball +1F5BC ; Emoji # E0.7 [1] (🖼️) framed picture +1F5C2..1F5C4 ; Emoji # E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet +1F5D1..1F5D3 ; Emoji # E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar +1F5DC..1F5DE ; Emoji # E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper +1F5E1 ; Emoji # E0.7 [1] (🗡️) dagger +1F5E3 ; Emoji # E0.7 [1] (🗣️) speaking head +1F5E8 ; Emoji # E2.0 [1] (🗨️) left speech bubble +1F5EF ; Emoji # E0.7 [1] (🗯️) right anger bubble +1F5F3 ; Emoji # E0.7 [1] (🗳️) ballot box with ballot +1F5FA ; Emoji # E0.7 [1] (🗺️) world map +1F5FB..1F5FF ; Emoji # E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji # E1.0 [1] (😀) grinning face +1F601..1F606 ; Emoji # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Emoji # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Emoji # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Emoji # E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Emoji # E0.6 [1] (😏) smirking face +1F610 ; Emoji # E0.7 [1] (😐) neutral face +1F611 ; Emoji # E1.0 [1] (😑) expressionless face +1F612..1F614 ; Emoji # E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji # E1.0 [1] (😕) confused face +1F616 ; Emoji # E0.6 [1] (😖) confounded face +1F617 ; Emoji # E1.0 [1] (😗) kissing face +1F618 ; Emoji # E0.6 [1] (😘) face blowing a kiss +1F619 ; Emoji # E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji # E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Emoji # E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Emoji # E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji # E1.0 [1] (😟) worried face +1F620..1F625 ; Emoji # E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji # E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji # E1.0 [1] (😬) grimacing face +1F62D ; Emoji # E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji # E1.0 [1] (😴) sleeping face +1F635 ; Emoji # E0.6 [1] (😵) face with crossed-out eyes +1F636 ; Emoji # E1.0 [1] (😶) face without mouth +1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Emoji # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Emoji # E0.6 [1] (🚀) rocket +1F681..1F682 ; Emoji # E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Emoji # E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Emoji # E1.0 [1] (🚆) train +1F687 ; Emoji # E0.6 [1] (🚇) metro +1F688 ; Emoji # E1.0 [1] (🚈) light rail +1F689 ; Emoji # E0.6 [1] (🚉) station +1F68A..1F68B ; Emoji # E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Emoji # E0.6 [1] (🚌) bus +1F68D ; Emoji # E0.7 [1] (🚍) oncoming bus +1F68E ; Emoji # E1.0 [1] (🚎) trolleybus +1F68F ; Emoji # E0.6 [1] (🚏) bus stop +1F690 ; Emoji # E1.0 [1] (🚐) minibus +1F691..1F693 ; Emoji # E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Emoji # E0.7 [1] (🚔) oncoming police car +1F695 ; Emoji # E0.6 [1] (🚕) taxi +1F696 ; Emoji # E1.0 [1] (🚖) oncoming taxi +1F697 ; Emoji # E0.6 [1] (🚗) automobile +1F698 ; Emoji # E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Emoji # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Emoji # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Emoji # E0.6 [1] (🚢) ship +1F6A3 ; Emoji # E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Emoji # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Emoji # E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Emoji # E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Emoji # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Emoji # E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Emoji # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Emoji # E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Emoji # E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Emoji # E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Emoji # E1.0 [1] (🚿) shower +1F6C0 ; Emoji # E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Emoji # E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6CB ; Emoji # E0.7 [1] (🛋️) couch and lamp +1F6CC ; Emoji # E1.0 [1] (🛌) person in bed +1F6CD..1F6CF ; Emoji # E0.7 [3] (🛍️..🛏️) shopping bags..bed +1F6D0 ; Emoji # E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator +1F6DD..1F6DF ; Emoji # E14.0 [3] (🛝..🛟) playground slide..ring buoy +1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat +1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane +1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F0 ; Emoji # E0.7 [1] (🛰️) satellite +1F6F3 ; Emoji # E0.7 [1] (🛳️) passenger ship +1F6F4..1F6F6 ; Emoji # E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji # E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji # E11.0 [1] (🛹) skateboard +1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square +1F7F0 ; Emoji # E14.0 [1] (🟰) heavy equals sign +1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji # E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji # E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji # E12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji # E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji # E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji # E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji # E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji # E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji # E12.0 [1] (🥱) yawning face +1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face +1F979 ; Emoji # E14.0 [1] (🥹) face holding back tears +1F97A ; Emoji # E11.0 [1] (🥺) pleading face +1F97B ; Emoji # E12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji # E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji # E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji # E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji # E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Emoji # E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Emoji # E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Emoji # E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Emoji # E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Emoji # E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji # E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji # E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea +1F9CC ; Emoji # E14.0 [1] (🧌) troll +1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal +1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA7B..1FA7C ; Emoji # E14.0 [2] (🩻..🩼) x-ray..crutch +1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock +1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa +1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather +1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs +1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown +1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot +1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar +1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles +1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + +# Total elements: 1404 + +# ================================================ + +# All omitted code points have Emoji_Presentation=No +# @missing: 0000..10FFFF ; Emoji_Presentation ; No + +231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done +23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23F0 ; Emoji_Presentation # E0.6 [1] (⏰) alarm clock +23F3 ; Emoji_Presentation # E0.6 [1] (⏳) hourglass not done +25FD..25FE ; Emoji_Presentation # E0.6 [2] (◽..◾) white medium-small square..black medium-small square +2614..2615 ; Emoji_Presentation # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2648..2653 ; Emoji_Presentation # E0.6 [12] (♈..♓) Aries..Pisces +267F ; Emoji_Presentation # E0.6 [1] (♿) wheelchair symbol +2693 ; Emoji_Presentation # E0.6 [1] (⚓) anchor +26A1 ; Emoji_Presentation # E0.6 [1] (⚡) high voltage +26AA..26AB ; Emoji_Presentation # E0.6 [2] (⚪..⚫) white circle..black circle +26BD..26BE ; Emoji_Presentation # E0.6 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji_Presentation # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26CE ; Emoji_Presentation # E0.6 [1] (⛎) Ophiuchus +26D4 ; Emoji_Presentation # E0.6 [1] (⛔) no entry +26EA ; Emoji_Presentation # E0.6 [1] (⛪) church +26F2..26F3 ; Emoji_Presentation # E0.6 [2] (⛲..⛳) fountain..flag in hole +26F5 ; Emoji_Presentation # E0.6 [1] (⛵) sailboat +26FA ; Emoji_Presentation # E0.6 [1] (⛺) tent +26FD ; Emoji_Presentation # E0.6 [1] (⛽) fuel pump +2705 ; Emoji_Presentation # E0.6 [1] (✅) check mark button +270A..270B ; Emoji_Presentation # E0.6 [2] (✊..✋) raised fist..raised hand +2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles +274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark +274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button +2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) red question mark..white exclamation mark +2757 ; Emoji_Presentation # E0.6 [1] (❗) red exclamation mark +2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide +27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop +27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop +2B1B..2B1C ; Emoji_Presentation # E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji_Presentation # E0.6 [1] (⭐) star +2B55 ; Emoji_Presentation # E0.6 [1] (⭕) hollow red circle +1F004 ; Emoji_Presentation # E0.6 [1] (🀄) mahjong red dragon +1F0CF ; Emoji_Presentation # E0.6 [1] (🃏) joker +1F18E ; Emoji_Presentation # E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji_Presentation # E0.6 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji_Presentation # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201 ; Emoji_Presentation # E0.6 [1] (🈁) Japanese “here” button +1F21A ; Emoji_Presentation # E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji_Presentation # E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F236 ; Emoji_Presentation # E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button +1F238..1F23A ; Emoji_Presentation # E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button +1F250..1F251 ; Emoji_Presentation # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F30C ; Emoji_Presentation # E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Emoji_Presentation # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Emoji_Presentation # E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Emoji_Presentation # E1.0 [1] (🌐) globe with meridians +1F311 ; Emoji_Presentation # E0.6 [1] (🌑) new moon +1F312 ; Emoji_Presentation # E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Emoji_Presentation # E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Emoji_Presentation # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Emoji_Presentation # E0.6 [1] (🌙) crescent moon +1F31A ; Emoji_Presentation # E1.0 [1] (🌚) new moon face +1F31B ; Emoji_Presentation # E0.6 [1] (🌛) first quarter moon face +1F31C ; Emoji_Presentation # E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Emoji_Presentation # E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Emoji_Presentation # E0.6 [2] (🌟..🌠) glowing star..shooting star +1F32D..1F32F ; Emoji_Presentation # E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Emoji_Presentation # E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Emoji_Presentation # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Emoji_Presentation # E0.6 [2] (🌴..🌵) palm tree..cactus +1F337..1F34A ; Emoji_Presentation # E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Emoji_Presentation # E1.0 [1] (🍋) lemon +1F34C..1F34F ; Emoji_Presentation # E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Emoji_Presentation # E1.0 [1] (🍐) pear +1F351..1F37B ; Emoji_Presentation # E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Emoji_Presentation # E1.0 [1] (🍼) baby bottle +1F37E..1F37F ; Emoji_Presentation # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji_Presentation # E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F3A0..1F3C4 ; Emoji_Presentation # E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji_Presentation # E1.0 [1] (🏅) sports medal +1F3C6 ; Emoji_Presentation # E0.6 [1] (🏆) trophy +1F3C7 ; Emoji_Presentation # E1.0 [1] (🏇) horse racing +1F3C8 ; Emoji_Presentation # E0.6 [1] (🏈) american football +1F3C9 ; Emoji_Presentation # E1.0 [1] (🏉) rugby football +1F3CA ; Emoji_Presentation # E0.6 [1] (🏊) person swimming +1F3CF..1F3D3 ; Emoji_Presentation # E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3E0..1F3E3 ; Emoji_Presentation # E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Emoji_Presentation # E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Emoji_Presentation # E0.6 [12] (🏥..🏰) hospital..castle +1F3F4 ; Emoji_Presentation # E1.0 [1] (🏴) black flag +1F3F8..1F407 ; Emoji_Presentation # E1.0 [16] (🏸..🐇) badminton..rabbit +1F408 ; Emoji_Presentation # E0.7 [1] (🐈) cat +1F409..1F40B ; Emoji_Presentation # E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Emoji_Presentation # E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Emoji_Presentation # E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Emoji_Presentation # E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Emoji_Presentation # E1.0 [1] (🐓) rooster +1F414 ; Emoji_Presentation # E0.6 [1] (🐔) chicken +1F415 ; Emoji_Presentation # E0.7 [1] (🐕) dog +1F416 ; Emoji_Presentation # E1.0 [1] (🐖) pig +1F417..1F429 ; Emoji_Presentation # E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Emoji_Presentation # E1.0 [1] (🐪) camel +1F42B..1F43E ; Emoji_Presentation # E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F440 ; Emoji_Presentation # E0.6 [1] (👀) eyes +1F442..1F464 ; Emoji_Presentation # E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Emoji_Presentation # E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Emoji_Presentation # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji_Presentation # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Emoji_Presentation # E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Emoji_Presentation # E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Emoji_Presentation # E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Emoji_Presentation # E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Emoji_Presentation # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Emoji_Presentation # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Emoji_Presentation # E0.6 [1] (📮) postbox +1F4EF ; Emoji_Presentation # E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Emoji_Presentation # E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Emoji_Presentation # E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Emoji_Presentation # E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Emoji_Presentation # E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji_Presentation # E0.6 [4] (📹..📼) video camera..videocassette +1F4FF..1F502 ; Emoji_Presentation # E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Emoji_Presentation # E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Emoji_Presentation # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Emoji_Presentation # E0.7 [1] (🔈) speaker low volume +1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..water pistol +1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F55B ; Emoji_Presentation # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Emoji_Presentation # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F57A ; Emoji_Presentation # E3.0 [1] (🕺) man dancing +1F595..1F596 ; Emoji_Presentation # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji_Presentation # E3.0 [1] (🖤) black heart +1F5FB..1F5FF ; Emoji_Presentation # E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face +1F601..1F606 ; Emoji_Presentation # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Emoji_Presentation # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Emoji_Presentation # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Emoji_Presentation # E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Emoji_Presentation # E0.6 [1] (😏) smirking face +1F610 ; Emoji_Presentation # E0.7 [1] (😐) neutral face +1F611 ; Emoji_Presentation # E1.0 [1] (😑) expressionless face +1F612..1F614 ; Emoji_Presentation # E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji_Presentation # E1.0 [1] (😕) confused face +1F616 ; Emoji_Presentation # E0.6 [1] (😖) confounded face +1F617 ; Emoji_Presentation # E1.0 [1] (😗) kissing face +1F618 ; Emoji_Presentation # E0.6 [1] (😘) face blowing a kiss +1F619 ; Emoji_Presentation # E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji_Presentation # E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Emoji_Presentation # E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Emoji_Presentation # E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji_Presentation # E1.0 [1] (😟) worried face +1F620..1F625 ; Emoji_Presentation # E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji_Presentation # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji_Presentation # E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji_Presentation # E1.0 [1] (😬) grimacing face +1F62D ; Emoji_Presentation # E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face +1F635 ; Emoji_Presentation # E0.6 [1] (😵) face with crossed-out eyes +1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth +1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Emoji_Presentation # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Emoji_Presentation # E0.6 [1] (🚀) rocket +1F681..1F682 ; Emoji_Presentation # E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Emoji_Presentation # E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Emoji_Presentation # E1.0 [1] (🚆) train +1F687 ; Emoji_Presentation # E0.6 [1] (🚇) metro +1F688 ; Emoji_Presentation # E1.0 [1] (🚈) light rail +1F689 ; Emoji_Presentation # E0.6 [1] (🚉) station +1F68A..1F68B ; Emoji_Presentation # E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Emoji_Presentation # E0.6 [1] (🚌) bus +1F68D ; Emoji_Presentation # E0.7 [1] (🚍) oncoming bus +1F68E ; Emoji_Presentation # E1.0 [1] (🚎) trolleybus +1F68F ; Emoji_Presentation # E0.6 [1] (🚏) bus stop +1F690 ; Emoji_Presentation # E1.0 [1] (🚐) minibus +1F691..1F693 ; Emoji_Presentation # E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Emoji_Presentation # E0.7 [1] (🚔) oncoming police car +1F695 ; Emoji_Presentation # E0.6 [1] (🚕) taxi +1F696 ; Emoji_Presentation # E1.0 [1] (🚖) oncoming taxi +1F697 ; Emoji_Presentation # E0.6 [1] (🚗) automobile +1F698 ; Emoji_Presentation # E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Emoji_Presentation # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Emoji_Presentation # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Emoji_Presentation # E0.6 [1] (🚢) ship +1F6A3 ; Emoji_Presentation # E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Emoji_Presentation # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Emoji_Presentation # E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Emoji_Presentation # E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Emoji_Presentation # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Emoji_Presentation # E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Emoji_Presentation # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Emoji_Presentation # E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Emoji_Presentation # E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Emoji_Presentation # E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Emoji_Presentation # E1.0 [1] (🚿) shower +1F6C0 ; Emoji_Presentation # E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Emoji_Presentation # E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6CC ; Emoji_Presentation # E1.0 [1] (🛌) person in bed +1F6D0 ; Emoji_Presentation # E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator +1F6DD..1F6DF ; Emoji_Presentation # E14.0 [3] (🛝..🛟) playground slide..ring buoy +1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji_Presentation # E11.0 [1] (🛹) skateboard +1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square +1F7F0 ; Emoji_Presentation # E14.0 [1] (🟰) heavy equals sign +1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji_Presentation # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Presentation # E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji_Presentation # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji_Presentation # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji_Presentation # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Presentation # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji_Presentation # E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji_Presentation # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji_Presentation # E12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji_Presentation # E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji_Presentation # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji_Presentation # E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji_Presentation # E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji_Presentation # E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji_Presentation # E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji_Presentation # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji_Presentation # E12.0 [1] (🥱) yawning face +1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face +1F979 ; Emoji_Presentation # E14.0 [1] (🥹) face holding back tears +1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face +1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji_Presentation # E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji_Presentation # E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji_Presentation # E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji_Presentation # E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Emoji_Presentation # E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Emoji_Presentation # E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Emoji_Presentation # E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Emoji_Presentation # E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Emoji_Presentation # E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji_Presentation # E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji_Presentation # E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea +1F9CC ; Emoji_Presentation # E14.0 [1] (🧌) troll +1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal +1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA7B..1FA7C ; Emoji_Presentation # E14.0 [2] (🩻..🩼) x-ray..crutch +1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock +1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa +1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather +1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs +1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown +1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot +1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar +1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles +1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + +# Total elements: 1185 + +# ================================================ + +# All omitted code points have Emoji_Modifier=No +# @missing: 0000..10FFFF ; Emoji_Modifier ; No + +1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone + +# Total elements: 5 + +# ================================================ + +# All omitted code points have Emoji_Modifier_Base=No +# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No + +261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up +26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball +270A..270C ; Emoji_Modifier_Base # E0.6 [3] (✊..✌️) raised fist..victory hand +270D ; Emoji_Modifier_Base # E0.7 [1] (✍️) writing hand +1F385 ; Emoji_Modifier_Base # E0.6 [1] (🎅) Santa Claus +1F3C2..1F3C4 ; Emoji_Modifier_Base # E0.6 [3] (🏂..🏄) snowboarder..person surfing +1F3C7 ; Emoji_Modifier_Base # E1.0 [1] (🏇) horse racing +1F3CA ; Emoji_Modifier_Base # E0.6 [1] (🏊) person swimming +1F3CB..1F3CC ; Emoji_Modifier_Base # E0.7 [2] (🏋️..🏌️) person lifting weights..person golfing +1F442..1F443 ; Emoji_Modifier_Base # E0.6 [2] (👂..👃) ear..nose +1F446..1F450 ; Emoji_Modifier_Base # E0.6 [11] (👆..👐) backhand index pointing up..open hands +1F466..1F46B ; Emoji_Modifier_Base # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji_Modifier_Base # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F478 ; Emoji_Modifier_Base # E0.6 [11] (👮..👸) police officer..princess +1F47C ; Emoji_Modifier_Base # E0.6 [1] (👼) baby angel +1F481..1F483 ; Emoji_Modifier_Base # E0.6 [3] (💁..💃) person tipping hand..woman dancing +1F485..1F487 ; Emoji_Modifier_Base # E0.6 [3] (💅..💇) nail polish..person getting haircut +1F48F ; Emoji_Modifier_Base # E0.6 [1] (💏) kiss +1F491 ; Emoji_Modifier_Base # E0.6 [1] (💑) couple with heart +1F4AA ; Emoji_Modifier_Base # E0.6 [1] (💪) flexed biceps +1F574..1F575 ; Emoji_Modifier_Base # E0.7 [2] (🕴️..🕵️) person in suit levitating..detective +1F57A ; Emoji_Modifier_Base # E3.0 [1] (🕺) man dancing +1F590 ; Emoji_Modifier_Base # E0.7 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji_Modifier_Base # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F645..1F647 ; Emoji_Modifier_Base # E0.6 [3] (🙅..🙇) person gesturing NO..person bowing +1F64B..1F64F ; Emoji_Modifier_Base # E0.6 [5] (🙋..🙏) person raising hand..folded hands +1F6A3 ; Emoji_Modifier_Base # E1.0 [1] (🚣) person rowing boat +1F6B4..1F6B5 ; Emoji_Modifier_Base # E1.0 [2] (🚴..🚵) person biking..person mountain biking +1F6B6 ; Emoji_Modifier_Base # E0.6 [1] (🚶) person walking +1F6C0 ; Emoji_Modifier_Base # E0.6 [1] (🛀) person taking bath +1F6CC ; Emoji_Modifier_Base # E1.0 [1] (🛌) person in bed +1F90C ; Emoji_Modifier_Base # E13.0 [1] (🤌) pinched fingers +1F90F ; Emoji_Modifier_Base # E12.0 [1] (🤏) pinching hand +1F918 ; Emoji_Modifier_Base # E1.0 [1] (🤘) sign of the horns +1F919..1F91E ; Emoji_Modifier_Base # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Modifier_Base # E5.0 [1] (🤟) love-you gesture +1F926 ; Emoji_Modifier_Base # E3.0 [1] (🤦) person facepalming +1F930 ; Emoji_Modifier_Base # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Modifier_Base # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F939 ; Emoji_Modifier_Base # E3.0 [7] (🤳..🤹) selfie..person juggling +1F93C..1F93E ; Emoji_Modifier_Base # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F977 ; Emoji_Modifier_Base # E13.0 [1] (🥷) ninja +1F9B5..1F9B6 ; Emoji_Modifier_Base # E11.0 [2] (🦵..🦶) leg..foot +1F9B8..1F9B9 ; Emoji_Modifier_Base # E11.0 [2] (🦸..🦹) superhero..supervillain +1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid +1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf +1FAC3..1FAC5 ; Emoji_Modifier_Base # E14.0 [3] (🫃..🫅) pregnant man..person with crown +1FAF0..1FAF6 ; Emoji_Modifier_Base # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + +# Total elements: 132 + +# ================================================ + +# All omitted code points have Emoji_Component=No +# @missing: 0000..10FFFF ; Emoji_Component ; No + +0023 ; Emoji_Component # E0.0 [1] (#️) hash sign +002A ; Emoji_Component # E0.0 [1] (*️) asterisk +0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine +200D ; Emoji_Component # E0.0 [1] (‍) zero width joiner +20E3 ; Emoji_Component # E0.0 [1] (⃣) combining enclosing keycap +FE0F ; Emoji_Component # E0.0 [1] () VARIATION SELECTOR-16 +1F1E6..1F1FF ; Emoji_Component # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F3FB..1F3FF ; Emoji_Component # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone +1F9B0..1F9B3 ; Emoji_Component # E11.0 [4] (🦰..🦳) red hair..white hair +E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..cancel tag + +# Total elements: 146 + +# ================================================ + +# All omitted code points have Extended_Pictographic=No +# @missing: 0000..10FFFF ; Extended_Pictographic ; No + +00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright +00AE ; Extended_Pictographic# E0.6 [1] (®️) registered +203C ; Extended_Pictographic# E0.6 [1] (‼️) double exclamation mark +2049 ; Extended_Pictographic# E0.6 [1] (⁉️) exclamation question mark +2122 ; Extended_Pictographic# E0.6 [1] (™️) trade mark +2139 ; Extended_Pictographic# E0.6 [1] (ℹ️) information +2194..2199 ; Extended_Pictographic# E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Extended_Pictographic# E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Extended_Pictographic# E0.6 [2] (⌚..⌛) watch..hourglass done +2328 ; Extended_Pictographic# E1.0 [1] (⌨️) keyboard +2388 ; Extended_Pictographic# E0.0 [1] (⎈) HELM SYMBOL +23CF ; Extended_Pictographic# E1.0 [1] (⏏️) eject button +23E9..23EC ; Extended_Pictographic# E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23ED..23EE ; Extended_Pictographic# E0.7 [2] (⏭️..⏮️) next track button..last track button +23EF ; Extended_Pictographic# E1.0 [1] (⏯️) play or pause button +23F0 ; Extended_Pictographic# E0.6 [1] (⏰) alarm clock +23F1..23F2 ; Extended_Pictographic# E1.0 [2] (⏱️..⏲️) stopwatch..timer clock +23F3 ; Extended_Pictographic# E0.6 [1] (⏳) hourglass not done +23F8..23FA ; Extended_Pictographic# E0.7 [3] (⏸️..⏺️) pause button..record button +24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M +25AA..25AB ; Extended_Pictographic# E0.6 [2] (▪️..▫️) black small square..white small square +25B6 ; Extended_Pictographic# E0.6 [1] (▶️) play button +25C0 ; Extended_Pictographic# E0.6 [1] (◀️) reverse button +25FB..25FE ; Extended_Pictographic# E0.6 [4] (◻️..◾) white medium square..black medium-small square +2600..2601 ; Extended_Pictographic# E0.6 [2] (☀️..☁️) sun..cloud +2602..2603 ; Extended_Pictographic# E0.7 [2] (☂️..☃️) umbrella..snowman +2604 ; Extended_Pictographic# E1.0 [1] (☄️) comet +2605 ; Extended_Pictographic# E0.0 [1] (★) BLACK STAR +2607..260D ; Extended_Pictographic# E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION +260E ; Extended_Pictographic# E0.6 [1] (☎️) telephone +260F..2610 ; Extended_Pictographic# E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX +2611 ; Extended_Pictographic# E0.6 [1] (☑️) check box with check +2612 ; Extended_Pictographic# E0.0 [1] (☒) BALLOT BOX WITH X +2614..2615 ; Extended_Pictographic# E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2616..2617 ; Extended_Pictographic# E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE +2618 ; Extended_Pictographic# E1.0 [1] (☘️) shamrock +2619..261C ; Extended_Pictographic# E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX +261D ; Extended_Pictographic# E0.6 [1] (☝️) index pointing up +261E..261F ; Extended_Pictographic# E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX +2620 ; Extended_Pictographic# E1.0 [1] (☠️) skull and crossbones +2621 ; Extended_Pictographic# E0.0 [1] (☡) CAUTION SIGN +2622..2623 ; Extended_Pictographic# E1.0 [2] (☢️..☣️) radioactive..biohazard +2624..2625 ; Extended_Pictographic# E0.0 [2] (☤..☥) CADUCEUS..ANKH +2626 ; Extended_Pictographic# E1.0 [1] (☦️) orthodox cross +2627..2629 ; Extended_Pictographic# E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM +262A ; Extended_Pictographic# E0.7 [1] (☪️) star and crescent +262B..262D ; Extended_Pictographic# E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE +262E ; Extended_Pictographic# E1.0 [1] (☮️) peace symbol +262F ; Extended_Pictographic# E0.7 [1] (☯️) yin yang +2630..2637 ; Extended_Pictographic# E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH +2638..2639 ; Extended_Pictographic# E0.7 [2] (☸️..☹️) wheel of dharma..frowning face +263A ; Extended_Pictographic# E0.6 [1] (☺️) smiling face +263B..263F ; Extended_Pictographic# E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY +2640 ; Extended_Pictographic# E4.0 [1] (♀️) female sign +2641 ; Extended_Pictographic# E0.0 [1] (♁) EARTH +2642 ; Extended_Pictographic# E4.0 [1] (♂️) male sign +2643..2647 ; Extended_Pictographic# E0.0 [5] (♃..♇) JUPITER..PLUTO +2648..2653 ; Extended_Pictographic# E0.6 [12] (♈..♓) Aries..Pisces +2654..265E ; Extended_Pictographic# E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT +265F ; Extended_Pictographic# E11.0 [1] (♟️) chess pawn +2660 ; Extended_Pictographic# E0.6 [1] (♠️) spade suit +2661..2662 ; Extended_Pictographic# E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT +2663 ; Extended_Pictographic# E0.6 [1] (♣️) club suit +2664 ; Extended_Pictographic# E0.0 [1] (♤) WHITE SPADE SUIT +2665..2666 ; Extended_Pictographic# E0.6 [2] (♥️..♦️) heart suit..diamond suit +2667 ; Extended_Pictographic# E0.0 [1] (♧) WHITE CLUB SUIT +2668 ; Extended_Pictographic# E0.6 [1] (♨️) hot springs +2669..267A ; Extended_Pictographic# E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS +267B ; Extended_Pictographic# E0.6 [1] (♻️) recycling symbol +267C..267D ; Extended_Pictographic# E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL +267E ; Extended_Pictographic# E11.0 [1] (♾️) infinity +267F ; Extended_Pictographic# E0.6 [1] (♿) wheelchair symbol +2680..2685 ; Extended_Pictographic# E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 +2690..2691 ; Extended_Pictographic# E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG +2692 ; Extended_Pictographic# E1.0 [1] (⚒️) hammer and pick +2693 ; Extended_Pictographic# E0.6 [1] (⚓) anchor +2694 ; Extended_Pictographic# E1.0 [1] (⚔️) crossed swords +2695 ; Extended_Pictographic# E4.0 [1] (⚕️) medical symbol +2696..2697 ; Extended_Pictographic# E1.0 [2] (⚖️..⚗️) balance scale..alembic +2698 ; Extended_Pictographic# E0.0 [1] (⚘) FLOWER +2699 ; Extended_Pictographic# E1.0 [1] (⚙️) gear +269A ; Extended_Pictographic# E0.0 [1] (⚚) STAFF OF HERMES +269B..269C ; Extended_Pictographic# E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis +269D..269F ; Extended_Pictographic# E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT +26A0..26A1 ; Extended_Pictographic# E0.6 [2] (⚠️..⚡) warning..high voltage +26A2..26A6 ; Extended_Pictographic# E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN +26A7 ; Extended_Pictographic# E13.0 [1] (⚧️) transgender symbol +26A8..26A9 ; Extended_Pictographic# E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN +26AA..26AB ; Extended_Pictographic# E0.6 [2] (⚪..⚫) white circle..black circle +26AC..26AF ; Extended_Pictographic# E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL +26B0..26B1 ; Extended_Pictographic# E1.0 [2] (⚰️..⚱️) coffin..funeral urn +26B2..26BC ; Extended_Pictographic# E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE +26BD..26BE ; Extended_Pictographic# E0.6 [2] (⚽..⚾) soccer ball..baseball +26BF..26C3 ; Extended_Pictographic# E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING +26C4..26C5 ; Extended_Pictographic# E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26C6..26C7 ; Extended_Pictographic# E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN +26C8 ; Extended_Pictographic# E0.7 [1] (⛈️) cloud with lightning and rain +26C9..26CD ; Extended_Pictographic# E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR +26CE ; Extended_Pictographic# E0.6 [1] (⛎) Ophiuchus +26CF ; Extended_Pictographic# E0.7 [1] (⛏️) pick +26D0 ; Extended_Pictographic# E0.0 [1] (⛐) CAR SLIDING +26D1 ; Extended_Pictographic# E0.7 [1] (⛑️) rescue worker’s helmet +26D2 ; Extended_Pictographic# E0.0 [1] (⛒) CIRCLED CROSSING LANES +26D3 ; Extended_Pictographic# E0.7 [1] (⛓️) chains +26D4 ; Extended_Pictographic# E0.6 [1] (⛔) no entry +26D5..26E8 ; Extended_Pictographic# E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD +26E9 ; Extended_Pictographic# E0.7 [1] (⛩️) shinto shrine +26EA ; Extended_Pictographic# E0.6 [1] (⛪) church +26EB..26EF ; Extended_Pictographic# E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE +26F0..26F1 ; Extended_Pictographic# E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground +26F2..26F3 ; Extended_Pictographic# E0.6 [2] (⛲..⛳) fountain..flag in hole +26F4 ; Extended_Pictographic# E0.7 [1] (⛴️) ferry +26F5 ; Extended_Pictographic# E0.6 [1] (⛵) sailboat +26F6 ; Extended_Pictographic# E0.0 [1] (⛶) SQUARE FOUR CORNERS +26F7..26F9 ; Extended_Pictographic# E0.7 [3] (⛷️..⛹️) skier..person bouncing ball +26FA ; Extended_Pictographic# E0.6 [1] (⛺) tent +26FB..26FC ; Extended_Pictographic# E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL +26FD ; Extended_Pictographic# E0.6 [1] (⛽) fuel pump +26FE..2701 ; Extended_Pictographic# E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS +2702 ; Extended_Pictographic# E0.6 [1] (✂️) scissors +2703..2704 ; Extended_Pictographic# E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS +2705 ; Extended_Pictographic# E0.6 [1] (✅) check mark button +2708..270C ; Extended_Pictographic# E0.6 [5] (✈️..✌️) airplane..victory hand +270D ; Extended_Pictographic# E0.7 [1] (✍️) writing hand +270E ; Extended_Pictographic# E0.0 [1] (✎) LOWER RIGHT PENCIL +270F ; Extended_Pictographic# E0.6 [1] (✏️) pencil +2710..2711 ; Extended_Pictographic# E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB +2712 ; Extended_Pictographic# E0.6 [1] (✒️) black nib +2714 ; Extended_Pictographic# E0.6 [1] (✔️) check mark +2716 ; Extended_Pictographic# E0.6 [1] (✖️) multiply +271D ; Extended_Pictographic# E0.7 [1] (✝️) latin cross +2721 ; Extended_Pictographic# E0.7 [1] (✡️) star of David +2728 ; Extended_Pictographic# E0.6 [1] (✨) sparkles +2733..2734 ; Extended_Pictographic# E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Extended_Pictographic# E0.6 [1] (❄️) snowflake +2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle +274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark +274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button +2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) red question mark..white exclamation mark +2757 ; Extended_Pictographic# E0.6 [1] (❗) red exclamation mark +2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation +2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart +2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET +2795..2797 ; Extended_Pictographic# E0.6 [3] (➕..➗) plus..divide +27A1 ; Extended_Pictographic# E0.6 [1] (➡️) right arrow +27B0 ; Extended_Pictographic# E0.6 [1] (➰) curly loop +27BF ; Extended_Pictographic# E1.0 [1] (➿) double curly loop +2934..2935 ; Extended_Pictographic# E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Extended_Pictographic# E0.6 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Extended_Pictographic# E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Extended_Pictographic# E0.6 [1] (⭐) star +2B55 ; Extended_Pictographic# E0.6 [1] (⭕) hollow red circle +3030 ; Extended_Pictographic# E0.6 [1] (〰️) wavy dash +303D ; Extended_Pictographic# E0.6 [1] (〽️) part alternation mark +3297 ; Extended_Pictographic# E0.6 [1] (㊗️) Japanese “congratulations” button +3299 ; Extended_Pictographic# E0.6 [1] (㊙️) Japanese “secret” button +1F000..1F003 ; Extended_Pictographic# E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND +1F004 ; Extended_Pictographic# E0.6 [1] (🀄) mahjong red dragon +1F005..1F0CE ; Extended_Pictographic# E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS +1F0CF ; Extended_Pictographic# E0.6 [1] (🃏) joker +1F0D0..1F0FF ; Extended_Pictographic# E0.0 [48] (🃐..🃿) .. +1F10D..1F10F ; Extended_Pictographic# E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH +1F12F ; Extended_Pictographic# E0.0 [1] (🄯) COPYLEFT SYMBOL +1F16C..1F16F ; Extended_Pictographic# E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE +1F170..1F171 ; Extended_Pictographic# E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E..1F17F ; Extended_Pictographic# E0.6 [2] (🅾️..🅿️) O button (blood type)..P button +1F18E ; Extended_Pictographic# E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Extended_Pictographic# E0.6 [10] (🆑..🆚) CL button..VS button +1F1AD..1F1E5 ; Extended_Pictographic# E0.0 [57] (🆭..🇥) MASK WORK SYMBOL.. +1F201..1F202 ; Extended_Pictographic# E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F203..1F20F ; Extended_Pictographic# E0.0 [13] (🈃..🈏) .. +1F21A ; Extended_Pictographic# E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Extended_Pictographic# E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Extended_Pictographic# E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F23C..1F23F ; Extended_Pictographic# E0.0 [4] (🈼..🈿) .. +1F249..1F24F ; Extended_Pictographic# E0.0 [7] (🉉..🉏) .. +1F250..1F251 ; Extended_Pictographic# E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F252..1F2FF ; Extended_Pictographic# E0.0 [174] (🉒..🋿) .. +1F300..1F30C ; Extended_Pictographic# E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Extended_Pictographic# E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Extended_Pictographic# E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Extended_Pictographic# E1.0 [1] (🌐) globe with meridians +1F311 ; Extended_Pictographic# E0.6 [1] (🌑) new moon +1F312 ; Extended_Pictographic# E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Extended_Pictographic# E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Extended_Pictographic# E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Extended_Pictographic# E0.6 [1] (🌙) crescent moon +1F31A ; Extended_Pictographic# E1.0 [1] (🌚) new moon face +1F31B ; Extended_Pictographic# E0.6 [1] (🌛) first quarter moon face +1F31C ; Extended_Pictographic# E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Extended_Pictographic# E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Extended_Pictographic# E0.6 [2] (🌟..🌠) glowing star..shooting star +1F321 ; Extended_Pictographic# E0.7 [1] (🌡️) thermometer +1F322..1F323 ; Extended_Pictographic# E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN +1F324..1F32C ; Extended_Pictographic# E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face +1F32D..1F32F ; Extended_Pictographic# E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Extended_Pictographic# E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Extended_Pictographic# E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Extended_Pictographic# E0.6 [2] (🌴..🌵) palm tree..cactus +1F336 ; Extended_Pictographic# E0.7 [1] (🌶️) hot pepper +1F337..1F34A ; Extended_Pictographic# E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Extended_Pictographic# E1.0 [1] (🍋) lemon +1F34C..1F34F ; Extended_Pictographic# E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Extended_Pictographic# E1.0 [1] (🍐) pear +1F351..1F37B ; Extended_Pictographic# E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Extended_Pictographic# E1.0 [1] (🍼) baby bottle +1F37D ; Extended_Pictographic# E0.7 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Extended_Pictographic# E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Extended_Pictographic# E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F394..1F395 ; Extended_Pictographic# E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS +1F396..1F397 ; Extended_Pictographic# E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon +1F398 ; Extended_Pictographic# E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS +1F399..1F39B ; Extended_Pictographic# E0.7 [3] (🎙️..🎛️) studio microphone..control knobs +1F39C..1F39D ; Extended_Pictographic# E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES +1F39E..1F39F ; Extended_Pictographic# E0.7 [2] (🎞️..🎟️) film frames..admission tickets +1F3A0..1F3C4 ; Extended_Pictographic# E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Extended_Pictographic# E1.0 [1] (🏅) sports medal +1F3C6 ; Extended_Pictographic# E0.6 [1] (🏆) trophy +1F3C7 ; Extended_Pictographic# E1.0 [1] (🏇) horse racing +1F3C8 ; Extended_Pictographic# E0.6 [1] (🏈) american football +1F3C9 ; Extended_Pictographic# E1.0 [1] (🏉) rugby football +1F3CA ; Extended_Pictographic# E0.6 [1] (🏊) person swimming +1F3CB..1F3CE ; Extended_Pictographic# E0.7 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Extended_Pictographic# E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Extended_Pictographic# E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3E3 ; Extended_Pictographic# E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Extended_Pictographic# E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Extended_Pictographic# E0.6 [12] (🏥..🏰) hospital..castle +1F3F1..1F3F2 ; Extended_Pictographic# E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT +1F3F3 ; Extended_Pictographic# E0.7 [1] (🏳️) white flag +1F3F4 ; Extended_Pictographic# E1.0 [1] (🏴) black flag +1F3F5 ; Extended_Pictographic# E0.7 [1] (🏵️) rosette +1F3F6 ; Extended_Pictographic# E0.0 [1] (🏶) BLACK ROSETTE +1F3F7 ; Extended_Pictographic# E0.7 [1] (🏷️) label +1F3F8..1F3FA ; Extended_Pictographic# E1.0 [3] (🏸..🏺) badminton..amphora +1F400..1F407 ; Extended_Pictographic# E1.0 [8] (🐀..🐇) rat..rabbit +1F408 ; Extended_Pictographic# E0.7 [1] (🐈) cat +1F409..1F40B ; Extended_Pictographic# E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Extended_Pictographic# E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Extended_Pictographic# E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Extended_Pictographic# E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Extended_Pictographic# E1.0 [1] (🐓) rooster +1F414 ; Extended_Pictographic# E0.6 [1] (🐔) chicken +1F415 ; Extended_Pictographic# E0.7 [1] (🐕) dog +1F416 ; Extended_Pictographic# E1.0 [1] (🐖) pig +1F417..1F429 ; Extended_Pictographic# E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Extended_Pictographic# E1.0 [1] (🐪) camel +1F42B..1F43E ; Extended_Pictographic# E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F43F ; Extended_Pictographic# E0.7 [1] (🐿️) chipmunk +1F440 ; Extended_Pictographic# E0.6 [1] (👀) eyes +1F441 ; Extended_Pictographic# E0.7 [1] (👁️) eye +1F442..1F464 ; Extended_Pictographic# E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Extended_Pictographic# E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Extended_Pictographic# E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Extended_Pictographic# E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Extended_Pictographic# E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Extended_Pictographic# E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Extended_Pictographic# E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Extended_Pictographic# E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Extended_Pictographic# E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Extended_Pictographic# E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Extended_Pictographic# E0.6 [1] (📮) postbox +1F4EF ; Extended_Pictographic# E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Extended_Pictographic# E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Extended_Pictographic# E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Extended_Pictographic# E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Extended_Pictographic# E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Extended_Pictographic# E0.6 [4] (📹..📼) video camera..videocassette +1F4FD ; Extended_Pictographic# E0.7 [1] (📽️) film projector +1F4FE ; Extended_Pictographic# E0.0 [1] (📾) PORTABLE STEREO +1F4FF..1F502 ; Extended_Pictographic# E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Extended_Pictographic# E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Extended_Pictographic# E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Extended_Pictographic# E0.7 [1] (🔈) speaker low volume +1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..water pistol +1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS +1F549..1F54A ; Extended_Pictographic# E0.7 [2] (🕉️..🕊️) om..dove +1F54B..1F54E ; Extended_Pictographic# E1.0 [4] (🕋..🕎) kaaba..menorah +1F54F ; Extended_Pictographic# E0.0 [1] (🕏) BOWL OF HYGIEIA +1F550..1F55B ; Extended_Pictographic# E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Extended_Pictographic# E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F568..1F56E ; Extended_Pictographic# E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK +1F56F..1F570 ; Extended_Pictographic# E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock +1F571..1F572 ; Extended_Pictographic# E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY +1F573..1F579 ; Extended_Pictographic# E0.7 [7] (🕳️..🕹️) hole..joystick +1F57A ; Extended_Pictographic# E3.0 [1] (🕺) man dancing +1F57B..1F586 ; Extended_Pictographic# E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE +1F587 ; Extended_Pictographic# E0.7 [1] (🖇️) linked paperclips +1F588..1F589 ; Extended_Pictographic# E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL +1F58A..1F58D ; Extended_Pictographic# E0.7 [4] (🖊️..🖍️) pen..crayon +1F58E..1F58F ; Extended_Pictographic# E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN +1F590 ; Extended_Pictographic# E0.7 [1] (🖐️) hand with fingers splayed +1F591..1F594 ; Extended_Pictographic# E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND +1F595..1F596 ; Extended_Pictographic# E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F597..1F5A3 ; Extended_Pictographic# E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX +1F5A4 ; Extended_Pictographic# E3.0 [1] (🖤) black heart +1F5A5 ; Extended_Pictographic# E0.7 [1] (🖥️) desktop computer +1F5A6..1F5A7 ; Extended_Pictographic# E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS +1F5A8 ; Extended_Pictographic# E0.7 [1] (🖨️) printer +1F5A9..1F5B0 ; Extended_Pictographic# E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE +1F5B1..1F5B2 ; Extended_Pictographic# E0.7 [2] (🖱️..🖲️) computer mouse..trackball +1F5B3..1F5BB ; Extended_Pictographic# E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE +1F5BC ; Extended_Pictographic# E0.7 [1] (🖼️) framed picture +1F5BD..1F5C1 ; Extended_Pictographic# E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER +1F5C2..1F5C4 ; Extended_Pictographic# E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet +1F5C5..1F5D0 ; Extended_Pictographic# E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES +1F5D1..1F5D3 ; Extended_Pictographic# E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar +1F5D4..1F5DB ; Extended_Pictographic# E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL +1F5DC..1F5DE ; Extended_Pictographic# E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper +1F5DF..1F5E0 ; Extended_Pictographic# E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART +1F5E1 ; Extended_Pictographic# E0.7 [1] (🗡️) dagger +1F5E2 ; Extended_Pictographic# E0.0 [1] (🗢) LIPS +1F5E3 ; Extended_Pictographic# E0.7 [1] (🗣️) speaking head +1F5E4..1F5E7 ; Extended_Pictographic# E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT +1F5E8 ; Extended_Pictographic# E2.0 [1] (🗨️) left speech bubble +1F5E9..1F5EE ; Extended_Pictographic# E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE +1F5EF ; Extended_Pictographic# E0.7 [1] (🗯️) right anger bubble +1F5F0..1F5F2 ; Extended_Pictographic# E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD +1F5F3 ; Extended_Pictographic# E0.7 [1] (🗳️) ballot box with ballot +1F5F4..1F5F9 ; Extended_Pictographic# E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK +1F5FA ; Extended_Pictographic# E0.7 [1] (🗺️) world map +1F5FB..1F5FF ; Extended_Pictographic# E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face +1F601..1F606 ; Extended_Pictographic# E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Extended_Pictographic# E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Extended_Pictographic# E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Extended_Pictographic# E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Extended_Pictographic# E0.6 [1] (😏) smirking face +1F610 ; Extended_Pictographic# E0.7 [1] (😐) neutral face +1F611 ; Extended_Pictographic# E1.0 [1] (😑) expressionless face +1F612..1F614 ; Extended_Pictographic# E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Extended_Pictographic# E1.0 [1] (😕) confused face +1F616 ; Extended_Pictographic# E0.6 [1] (😖) confounded face +1F617 ; Extended_Pictographic# E1.0 [1] (😗) kissing face +1F618 ; Extended_Pictographic# E0.6 [1] (😘) face blowing a kiss +1F619 ; Extended_Pictographic# E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Extended_Pictographic# E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Extended_Pictographic# E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Extended_Pictographic# E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Extended_Pictographic# E1.0 [1] (😟) worried face +1F620..1F625 ; Extended_Pictographic# E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Extended_Pictographic# E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Extended_Pictographic# E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Extended_Pictographic# E1.0 [1] (😬) grimacing face +1F62D ; Extended_Pictographic# E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face +1F635 ; Extended_Pictographic# E0.6 [1] (😵) face with crossed-out eyes +1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth +1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Extended_Pictographic# E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Extended_Pictographic# E0.6 [1] (🚀) rocket +1F681..1F682 ; Extended_Pictographic# E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Extended_Pictographic# E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Extended_Pictographic# E1.0 [1] (🚆) train +1F687 ; Extended_Pictographic# E0.6 [1] (🚇) metro +1F688 ; Extended_Pictographic# E1.0 [1] (🚈) light rail +1F689 ; Extended_Pictographic# E0.6 [1] (🚉) station +1F68A..1F68B ; Extended_Pictographic# E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Extended_Pictographic# E0.6 [1] (🚌) bus +1F68D ; Extended_Pictographic# E0.7 [1] (🚍) oncoming bus +1F68E ; Extended_Pictographic# E1.0 [1] (🚎) trolleybus +1F68F ; Extended_Pictographic# E0.6 [1] (🚏) bus stop +1F690 ; Extended_Pictographic# E1.0 [1] (🚐) minibus +1F691..1F693 ; Extended_Pictographic# E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Extended_Pictographic# E0.7 [1] (🚔) oncoming police car +1F695 ; Extended_Pictographic# E0.6 [1] (🚕) taxi +1F696 ; Extended_Pictographic# E1.0 [1] (🚖) oncoming taxi +1F697 ; Extended_Pictographic# E0.6 [1] (🚗) automobile +1F698 ; Extended_Pictographic# E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Extended_Pictographic# E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Extended_Pictographic# E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Extended_Pictographic# E0.6 [1] (🚢) ship +1F6A3 ; Extended_Pictographic# E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Extended_Pictographic# E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Extended_Pictographic# E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Extended_Pictographic# E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Extended_Pictographic# E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Extended_Pictographic# E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Extended_Pictographic# E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Extended_Pictographic# E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Extended_Pictographic# E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Extended_Pictographic# E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Extended_Pictographic# E1.0 [1] (🚿) shower +1F6C0 ; Extended_Pictographic# E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Extended_Pictographic# E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6C6..1F6CA ; Extended_Pictographic# E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL +1F6CB ; Extended_Pictographic# E0.7 [1] (🛋️) couch and lamp +1F6CC ; Extended_Pictographic# E1.0 [1] (🛌) person in bed +1F6CD..1F6CF ; Extended_Pictographic# E0.7 [3] (🛍️..🛏️) shopping bags..bed +1F6D0 ; Extended_Pictographic# E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Extended_Pictographic# E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA +1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator +1F6D8..1F6DC ; Extended_Pictographic# E0.0 [5] (🛘..🛜) .. +1F6DD..1F6DF ; Extended_Pictographic# E14.0 [3] (🛝..🛟) playground slide..ring buoy +1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat +1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE +1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane +1F6EA ; Extended_Pictographic# E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE +1F6EB..1F6EC ; Extended_Pictographic# E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6ED..1F6EF ; Extended_Pictographic# E0.0 [3] (🛭..🛯) .. +1F6F0 ; Extended_Pictographic# E0.7 [1] (🛰️) satellite +1F6F1..1F6F2 ; Extended_Pictographic# E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE +1F6F3 ; Extended_Pictographic# E0.7 [1] (🛳️) passenger ship +1F6F4..1F6F6 ; Extended_Pictographic# E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Extended_Pictographic# E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Extended_Pictographic# E11.0 [1] (🛹) skateboard +1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (🛽..🛿) .. +1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) .. +1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE.. +1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square +1F7EC..1F7EF ; Extended_Pictographic# E0.0 [4] (🟬..🟯) .. +1F7F0 ; Extended_Pictographic# E14.0 [1] (🟰) heavy equals sign +1F7F1..1F7FF ; Extended_Pictographic# E0.0 [15] (🟱..🟿) .. +1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (🠌..🠏) .. +1F848..1F84F ; Extended_Pictographic# E0.0 [8] (🡈..🡏) .. +1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (🡚..🡟) .. +1F888..1F88F ; Extended_Pictographic# E0.0 [8] (🢈..🢏) .. +1F8AE..1F8FF ; Extended_Pictographic# E0.0 [82] (🢮..🣿) .. +1F90C ; Extended_Pictographic# E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Extended_Pictographic# E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Extended_Pictographic# E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Extended_Pictographic# E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Extended_Pictographic# E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Extended_Pictographic# E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Extended_Pictographic# E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Extended_Pictographic# E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Extended_Pictographic# E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Extended_Pictographic# E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Extended_Pictographic# E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Extended_Pictographic# E12.0 [1] (🤿) diving mask +1F940..1F945 ; Extended_Pictographic# E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Extended_Pictographic# E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Extended_Pictographic# E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Extended_Pictographic# E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Extended_Pictographic# E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Extended_Pictographic# E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Extended_Pictographic# E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Extended_Pictographic# E12.0 [1] (🥱) yawning face +1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face +1F979 ; Extended_Pictographic# E14.0 [1] (🥹) face holding back tears +1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face +1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari +1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Extended_Pictographic# E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Extended_Pictographic# E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Extended_Pictographic# E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Extended_Pictographic# E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Extended_Pictographic# E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Extended_Pictographic# E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Extended_Pictographic# E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Extended_Pictographic# E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Extended_Pictographic# E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Extended_Pictographic# E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Extended_Pictographic# E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea +1F9CC ; Extended_Pictographic# E14.0 [1] (🧌) troll +1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING.. +1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal +1FA75..1FA77 ; Extended_Pictographic# E0.0 [3] (🩵..🩷) .. +1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA7B..1FA7C ; Extended_Pictographic# E14.0 [2] (🩻..🩼) x-ray..crutch +1FA7D..1FA7F ; Extended_Pictographic# E0.0 [3] (🩽..🩿) .. +1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA87..1FA8F ; Extended_Pictographic# E0.0 [9] (🪇..🪏) .. +1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock +1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa +1FAAD..1FAAF ; Extended_Pictographic# E0.0 [3] (🪭..🪯) .. +1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather +1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs +1FABB..1FABF ; Extended_Pictographic# E0.0 [5] (🪻..🪿) .. +1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown +1FAC6..1FACF ; Extended_Pictographic# E0.0 [10] (🫆..🫏) .. +1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot +1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar +1FADA..1FADF ; Extended_Pictographic# E0.0 [6] (🫚..🫟) .. +1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles +1FAE8..1FAEF ; Extended_Pictographic# E0.0 [8] (🫨..🫯) .. +1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands +1FAF7..1FAFF ; Extended_Pictographic# E0.0 [9] (🫷..🫿) .. +1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (🰀..🿽) .. + +# Total elements: 3537 + +#EOF diff --git a/texmf/tex/generic/unicode-data/load-unicode-data.tex b/texmf/tex/generic/unicode-data/load-unicode-data.tex index 87a3a4538..f35a9a99c 100644 --- a/texmf/tex/generic/unicode-data/load-unicode-data.tex +++ b/texmf/tex/generic/unicode-data/load-unicode-data.tex @@ -1,6 +1,6 @@ % File load-unicode-data.tex % -% Copyright 2015-2019 The LaTeX3 Project +% Copyright 2015-2020 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of % the LaTeX Project Public License (LPPL), either version 1.3c of @@ -57,7 +57,7 @@ \catcode`\^=7 % \newlinechar=`\^^J % \message{^^J}% - \message{load-unicode-data.tex v1.11 (2019-11-28)^^J}% + \message{load-unicode-data.tex v1.15 (2021-09-15)^^J}% \message{Reading Unicode data^^J}% % The first stage of parsing is dealing with the fact that there are lots of % data items separated by |;|. Of those, only a few are needed so they are @@ -177,15 +177,15 @@ % There is no version data in |UnicodeData.txt|: log that it is being used with % a hard-coded date (the modification date from ftp.unicode.org). This obviously % needs to be updated when a new download takes place! - \message{\string# UnicodeData-12.1.0.txt^^J}% - \message{\string# Modified 2019-04-01 05:08:00 GMT [MFK]^^J}% + \message{\string# UnicodeData-14.0.0.txt^^J}% + \message{\string# Modified 2021-09-15 11:00:00 GMT [JAW]^^J}% % Actually loading the file requires an input stream, done directly. % There is a blank line at the end of the data source so there is a check % here for a |\par|. \def\storedpar{\par}% \openin0=UnicodeData.txt % \loop\unless\ifeof0 % - \read0 to \unicodedataline + \read0 to \unicodedataline \unless\ifx\unicodedataline\storedpar \expandafter\parseunicodedataI\unicodedataline\relax \fi diff --git a/texmf/tex/generic/unicode-data/load-unicode-math-classes.tex b/texmf/tex/generic/unicode-data/load-unicode-math-classes.tex index 0e42b4df8..067b6a4c3 100644 --- a/texmf/tex/generic/unicode-data/load-unicode-math-classes.tex +++ b/texmf/tex/generic/unicode-data/load-unicode-math-classes.tex @@ -48,7 +48,7 @@ \catcode`\^=7 % \newlinechar=`\^^J % \message{^^J}% - \message{load-unicode-math-classes.tex v1.11 (2019-11-28)^^J}% + \message{load-unicode-math-classes.tex v1.15 (2021-09-15)^^J}% \message{Reading math class data^^J}% % The parser for data lines starts by skipping any comments (which start with % a |#| and which will be category code~$12$). diff --git a/texmf/tex/generic/unicode-data/load-unicode-xetex-classes.tex b/texmf/tex/generic/unicode-data/load-unicode-xetex-classes.tex index ea99e3a0d..38d72a7fb 100644 --- a/texmf/tex/generic/unicode-data/load-unicode-xetex-classes.tex +++ b/texmf/tex/generic/unicode-data/load-unicode-xetex-classes.tex @@ -64,7 +64,7 @@ \catcode`\^=7 % \newlinechar=`\^^J % \message{^^J}% - \message{load-unicode-xetex-classes.tex v1.11 (2019-11-28)^^J}% + \message{load-unicode-xetex-classes.tex v1.15 (2021-09-15)^^J}% \message{Reading Unicode east Asian character class data^^J}% % A string version of |#| will be needed to look for comment lines in the % source. Once that is done proper parsing can begin. From 1a8dc2a085b65e139b8c3a682daed76633eaf81d Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 17:13:32 +0200 Subject: [PATCH 06/13] Update l3backend and l3kernel to 2022-08-30 --- .../latex/l3backend/l3backend-dvipdfmx.def | 40 +- texmf/tex/latex/l3backend/l3backend-dvips.def | 48 +- .../tex/latex/l3backend/l3backend-dvisvgm.def | 8 +- .../tex/latex/l3backend/l3backend-luatex.def | 59 +- .../tex/latex/l3backend/l3backend-pdftex.def | 59 +- texmf/tex/latex/l3backend/l3backend-xetex.def | 40 +- texmf/tex/latex/l3kernel/expl3-code.tex | 881 +++++++++++++++--- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 10 files changed, 855 insertions(+), 286 deletions(-) diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def index 7146ee10c..67f92072d 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2022-08-23}{} + {l3backend-dvipdfmx.def}{2022-08-30}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -147,8 +147,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -158,8 +158,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -202,8 +202,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -224,8 +224,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -242,8 +242,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -625,27 +625,21 @@ { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } } \int_new:N \g__pdf_backend_object_int \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 - { - \exp_args:Nx \__pdf_backend_object_write:nnn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2} - } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } + { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { - \use:c { __pdf_backend_object_write_ #1 :nn } - { \__pdf_backend_object_ref:n {#2} } {#3} + \use:c { __pdf_backend_object_write_ #2 :nn } + { \__pdf_backend_object_ref:n {#1} } {#3} } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend:x diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def index b7efe7a69..c20decfc8 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvips.def +++ b/texmf/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2022-08-23}{} + {l3backend-dvips.def}{2022-08-30}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -636,25 +636,29 @@ \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { \__pdf_backend_pdfmark:n { /#1 ~ #2 /DOCINFO } } \int_new:N \g__pdf_backend_object_int -\prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { { pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 + { + \__pdf_backend_object_write_aux:nnn + { \__pdf_backend_object_ref:n {#1} } + {#2} {#3} + } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } +\cs_new_protected:Npn \__pdf_backend_object_write_aux:nnn #1#2#3 { \__pdf_backend_pdfmark:x { - /_objdef ~ \__pdf_backend_object_ref:n {#1} + /_objdef ~ #1 /type - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + \str_case:nn {#2} { { array } { /array } { dict } { /dict } @@ -663,11 +667,8 @@ } /OBJ } - \use:c - { __pdf_backend_object_write_ \prop_item:Nn \g__pdf_backend_object_prop {#1} :nn } - { \__pdf_backend_object_ref:n {#1} } {#2} + \use:c { __pdf_backend_object_write_ #2 :nn } {#1} {#3} } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend_pdfmark:x @@ -709,22 +710,9 @@ \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \int_gincr:N \g__pdf_backend_object_int - \__pdf_backend_pdfmark:x - { - /_objdef ~ { pdf.obj \int_use:N \g__pdf_backend_object_int } - /type - \str_case:nn - {#1} - { - { array } { /array } - { dict } { /dict } - { fstream } { /stream } - { stream } { /stream } - } - /OBJ - } - \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn } - { { pdf.obj \int_use:N \g__pdf_backend_object_int } } {#2} + \__pdf_backend_object_write_aux:nnn + { { pdf.obj \int_use:N \g__pdf_backend_object_int } } + {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npn \__pdf_backend_object_last: diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def index 3f20aef6f..a471691ce 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2022-08-23}{} + {l3backend-dvisvgm.def}{2022-08-30}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -657,10 +657,10 @@ \cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { } -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 { } +\cs_new_protected:Npn \__pdf_backend_object_new:nn #1 { } \cs_new:Npn \__pdf_backend_object_ref:n #1 { } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { } -\cs_new_protected:Npn \__pdf_backend_object_write:nx #1#2 { } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { } +\cs_new_protected:Npn \__pdf_backend_object_write:nnx #1#2#3 { } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_object_now:nx #1#2 { } \cs_new:Npn \__pdf_backend_object_last: { } diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def index 9be080803..82de7e197 100644 --- a/texmf/tex/latex/l3backend/l3backend-luatex.def +++ b/texmf/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2022-08-23}{} + {l3backend-luatex.def}{2022-08-30}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -205,8 +205,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -216,8 +216,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -260,8 +260,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -282,8 +282,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -300,8 +300,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -736,25 +736,27 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \tex_pdfextension:D obj ~ reserveobjnum ~ \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \tex_pdffeedback:D lastobj } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \tex_immediate:D \tex_pdfextension:D obj ~ useobjnum ~ \int_use:c - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + { c__pdf_object_ \tl_to_str:n {#1} _int } + \__pdf_backend_object_write:nn {#2} {#3} + } +\cs_new:Npn \__pdf_backend_object_write:nn #1#2 + { + \str_case:nn {#1} { { array } { { [ ~ \exp_not:n {#2} ~ ] } } { dict } { { << ~ \exp_not:n {#2} ~ >> } } @@ -770,28 +772,13 @@ } } } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \tex_immediate:D \tex_pdfextension:D obj ~ - \str_case:nn - {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - file ~ { \__pdf_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - { \__pdf_exp_not_ii:nn #2 } - } - } + \__pdf_backend_object_write:nn {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npx \__pdf_backend_object_last: diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def index 4d5b03c06..ef45c2677 100644 --- a/texmf/tex/latex/l3backend/l3backend-pdftex.def +++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2022-08-23}{} + {l3backend-pdftex.def}{2022-08-30}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -205,8 +205,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -216,8 +216,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -260,8 +260,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -282,8 +282,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -300,8 +300,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -736,25 +736,27 @@ { / #1 ~ #2 } } \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \tex_pdfobj:D reserveobjnum ~ \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \tex_pdflastobj:D } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 + { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { \tex_immediate:D \tex_pdfobj:D useobjnum ~ \int_use:c - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } - \str_case_e:nn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } + { c__pdf_object_ \tl_to_str:n {#1} _int } + \__pdf_backend_object_write:nn {#2} {#3} + } +\cs_new:Npn \__pdf_backend_object_write:nn #1#2 + { + \str_case:nn {#1} { { array } { { [ ~ \exp_not:n {#2} ~ ] } } { dict } { { << ~ \exp_not:n {#2} ~ >> } } @@ -770,28 +772,13 @@ } } } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} } \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \tex_immediate:D \tex_pdfobj:D - \str_case:nn - {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - file ~ { \__pdf_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~ - { \__pdf_exp_not_ii:nn #2 } - } - } + \__pdf_backend_object_write:nn {#1} {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npx \__pdf_backend_object_last: diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def index 29e2cc7c1..d171fc435 100644 --- a/texmf/tex/latex/l3backend/l3backend-xetex.def +++ b/texmf/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2022-08-23}{} + {l3backend-xetex.def}{2022-08-30}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -147,8 +147,8 @@ { \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: } } \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 } @@ -158,8 +158,8 @@ { \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 } { - \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array } - \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 } + \pdf_object_new:n { __color_illuminant_CIELAB_ #1 } + \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array } { /Lab ~ << @@ -202,8 +202,8 @@ } \use:x { - \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array } - \pdf_object_write:nn { color \int_use:N \g__color_model_int } + \pdf_object_new:n { color \int_use:N \g__color_model_int } + \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array } { /DeviceN ~ [ ~ #1 ~ ] ~ @@ -224,8 +224,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nx { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnx { __color_icc_ #1 } { fstream } { { /N ~ \exp_not:n { #2 } ~ @@ -242,8 +242,8 @@ { \pdf_object_if_exist:nF { __color_icc_ #1 } { - \pdf_object_new:nn { __color_icc_ #1 } { fstream } - \pdf_object_write:nn { __color_icc_ #1 } + \pdf_object_new:n { __color_icc_ #1 } + \pdf_object_write:nnn { __color_icc_ #1 } { fstream } { { /N ~ #3 } {#1} @@ -679,27 +679,21 @@ { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } } \int_new:N \g__pdf_backend_object_int \prop_new:N \g__pdf_backend_object_prop -\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_object_new:n #1 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn - { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } - \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } -\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 - { - \exp_args:Nx \__pdf_backend_object_write:nnn - { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2} - } -\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } + { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { - \use:c { __pdf_backend_object_write_ #1 :nn } - { \__pdf_backend_object_ref:n {#2} } {#3} + \use:c { __pdf_backend_object_write_ #2 :nn } + { \__pdf_backend_object_ref:n {#1} } {#3} } +\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend:x diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index e23ee371e..b5ee93def 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -52,6 +52,7 @@ %% l3unicode.dtx (with options: `package') %% l3text.dtx (with options: `package') %% l3text-case.dtx (with options: `package') +%% l3text-map.dtx (with options: `package') %% l3text-purify.dtx (with options: `package') %% l3candidates.dtx (with options: `package') %% l3legacy.dtx (with options: `package') @@ -70,7 +71,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-23}% +\def\ExplFileDate{2022-08-30}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -8892,27 +8893,92 @@ } \cs_generate_variant:Nn \__char_to_utfviii_bytes_output:nnn { f } \cs_new:Npn \__char_to_utfviii_bytes_end: { } -\cs_new:Npn \char_to_nfd:N #1 +\bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } { - \cs_if_exist:cTF { c__char_nfd_ \token_to_str:N #1 _ tl } + \cs_new:Npn \char_to_nfd:N #1 { - \exp_after:wN \exp_after:wN \exp_after:wN \__char_to_nfd:Nw - \exp_after:wN \exp_after:wN \exp_after:wN #1 - \cs:w c__char_nfd_ \token_to_str:N #1 _ tl \cs_end: - \s__char_stop + \cs_if_exist:cTF { c__char_nfd_ \token_to_str:N #1 _ tl } + { + \exp_after:wN \exp_after:wN \exp_after:wN \__char_to_nfd:Nw + \exp_after:wN \exp_after:wN \exp_after:wN #1 + \cs:w c__char_nfd_ \token_to_str:N #1 _tl \cs_end: + \s__char_stop + } + { \exp_not:n {#1} } + } + \cs_new_eq:NN \__char_to_nfd:n \char_to_nfd:N + \cs_generate_variant:Nn \__char_to_nfd:n { e } + \cs_new:Npn \__char_to_nfd:Nw #1#2#3 \s__char_stop + { + \__char_to_nfd:e + { \char_generate:nn { `#2 } { \__char_change_case_catcode:N #1 } } + \tl_if_blank:nF {#3} + { + \__char_to_nfd:e + { \char_generate:nn { `#3 } { \char_value_catcode:n { `#3 } } } + } + } + \cs_new:Npn \char_to_nfd:n #1 + { + \__char_to_nfd:e { \char_generate:nn {#1} { \char_value_catcode:n {#1} } } } - { \exp_not:n {#1} } } -\cs_set_eq:NN \__char_to_nfd:n \char_to_nfd:N -\cs_new:Npn \__char_to_nfd:Nw #1#2#3 \s__char_stop { - \exp_args:Ne \__char_to_nfd:n - { \char_generate:nn { `#2 } { \__char_change_case_catcode:N #1 } } - \tl_if_blank:nF {#3} + \cs_new:Npn \char_to_nfd:N #1 { \exp_not:n {#1} } + \cs_new:Npn \char_to_nfd:n #1 + { + \int_compare:nNnTF {#1} > { "80 } + { \exp_args:Ne \__char_to_nfd:n { \__char_nfd_generate:n {#1} } } + { \__char_nfd_generate:n {#1} } + } + \cs_new:Npn \__char_to_nfd:n #1 + { + \cs_if_exist:cTF { c__char_nfd_ \tl_to_str:n {#1} _ tl } + { + \exp_after:wN \exp_after:wN \exp_after:wN \__char_to_nfd:w + \cs:w c__char_nfd_ \tl_to_str:n {#1} _tl \cs_end: + \s__char_stop + } + { \exp_not:n {#1} } + } + \cs_new:Npn \__char_to_nfd:w #1#2 \s__char_stop { - \exp_args:Ne \__char_to_nfd:n - { \char_generate:nn { `#3 } { \char_value_catcode:n { `#3 } } } + \__char_to_nfd:n {#1} + \tl_if_blank:nF {#2} + { \__char_to_nfd:n {#2} } } + \cs_new:Npn \__char_nfd_generate:n #1 + { + \use:e + { + \exp_not:N \__char_nfd_generate:nnnn + \char_to_utfviii_bytes:n {#1} + } + } + \cs_new:Npn \__char_nfd_generate:nnnn #1#2#3#4 + { + \tl_if_blank:nTF {#2} + { \char_generate:nn {#1} { \char_value_catcode:n {#1} } } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#1} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#2} { 13 } + \tl_if_blank:nF {#3} + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#3} { 13 } + \tl_if_blank:nF {#4} + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#4} { 13 } + } + } + } + + } } \cs_new:Npn \char_lowercase:N #1 { \__char_change_case:nNN { lower } \char_value_lccode:n #1 } @@ -30233,20 +30299,19 @@ \__pdf_backend_compress_objects:n { \c_false_bool } } } -\cs_new_protected:Npn \pdf_object_new:nn #1#2 - { \__pdf_backend_object_new:nn {#1} {#2} } -\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF } +\cs_new_protected:Npn \pdf_object_new:n #1 { - \int_if_exist:cTF { c__pdf_backend_object_ \tl_to_str:n {#1} _int } - { \prg_return_true: } - { \prg_return_false:} + \__pdf_backend_object_new:n {#1} + \cs_new_eq:cc + { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { c__pdf_object_ \tl_to_str:n {#1} _int } } -\cs_new_protected:Npn \pdf_object_write:nn #1#2 +\cs_new_protected:Npn \pdf_object_write:nnn #1#2#3 { - \__pdf_backend_object_write:nn {#1} {#2} + \__pdf_backend_object_write:nnn {#1} {#2} {#3} \bool_gset_true:N \g__pdf_init_bool } -\cs_generate_variant:Nn \pdf_object_write:nn { nx } +\cs_generate_variant:Nn \pdf_object_write:nnn { nnx } \cs_new:Npn \pdf_object_ref:n #1 { \__pdf_backend_object_ref:n {#1} } \cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2 { @@ -30255,6 +30320,12 @@ } \cs_generate_variant:Nn \pdf_object_unnamed_write:nn { nx } \cs_new:Npn \pdf_object_ref_last: { \__pdf_backend_object_last: } +\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_object_ \tl_to_str:n {#1} _int } + \prg_return_true: + \prg_return_false: + } \cs_new:Npn \pdf_pageobject_ref:n #1 { \__pdf_backend_pageobject_ref:n {#1} } \prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF } @@ -30317,6 +30388,19 @@ \hbox_to_zero:n { \__pdf_backend_destination:nnnn {#1} {#2} {#3} {#4} } } +\prop_new:N \g__pdf_object_prop +\cs_new_protected:Npn \pdf_object_new:nn #1#2 + { + \prop_gput:Nnn \g__pdf_object_prop {#1} {#2} + \__pdf_backend_object_new:n {#1} + } +\cs_new_protected:Npn \pdf_object_write:nn #1#2 + { + \exp_args:Nnx \__pdf_backend_object_write:nnn + {#1} { \prop_item:Nn \g__pdf_object_prop {#1} } {#2} + \bool_gset_true:N \g__pdf_init_bool + } +\cs_generate_variant:Nn \pdf_object_write:nn { nx } %% File: l3coffins.dtx \box_new:N \l__coffin_internal_box \dim_new:N \l__coffin_internal_dim @@ -31644,143 +31728,219 @@ \prop_gput:Nnn \g_msg_module_type_prop { luatex } { } %% File: l3unicode.dtx \ior_new:N \g__char_data_ior -\bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } - { - \group_begin: - \cs_set:Npn \__char_generate_char:n #1 - { \tex_detokenize:D \tex_expandafter:D { \tex_Uchar:D " #1 } } - \cs_set:Npx \__char_generate:n #1 +\group_begin: + \bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_set:Npn \__char_generate_other:n #1 + { \tex_detokenize:D \tex_expandafter:D { \tex_Uchar:D #1 } } + \cs_set:Npn \__char_generate:n #1 { - \exp_not:N \tex_unexpanded:D \exp_not:N \exp_after:wN - { - \exp_not:N \tex_Ucharcat:D - #1 ~ - \tex_catcode:D #1 ~ - } + \tex_unexpanded:D \exp_after:wN + { \tex_Ucharcat:D #1 ~ \tex_catcode:D #1 ~ } + } + } + { + \cs_set:Npn \__char_generate_other:n #1 + { + \tex_detokenize:D \tex_expandafter:D + { \tex_expanded:D { \__char_generate:n {#1} } } } - \ior_open:Nn \g__char_data_ior { UnicodeData.txt } - \cs_set_protected:Npn \__char_data_auxi:w - #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ; + \cs_set:Npn \__char_generate:n #1 { - \tl_if_blank:nF {#6} + \use:e { - \tl_if_head_eq_charcode:nNF {#6} < % > - { \__char_data_auxii:w #1 ; #6 ~ \q_stop } + \exp_not:N \__char_generate:nnnn + \char_to_utfviii_bytes:n {#1} } - \__char_data_auxiii:w #1 ; } - \cs_set_protected:Npn \__char_data_auxii:w #1 ; #2 ~ #3 \q_stop + \cs_set:Npn \__char_generate:nnnn #1#2#3#4 { - \tl_const:cx - { c__char_nfd_ \__char_generate_char:n {#1} _tl } + \tex_unexpanded:D \exp_after:wN \exp_after:wN \exp_after:wN + { \char_generate:nn {#1} { 13 } } + \tl_if_blank:nF {#2} { - \__char_generate:n { "#2 } + \tex_unexpanded:D \exp_after:wN \exp_after:wN \exp_after:wN + { \char_generate:nn {#2} { 13 } } \tl_if_blank:nF {#3} - { \__char_generate:n { "#3 } } + { + \tex_unexpanded:D \exp_after:wN \exp_after:wN \exp_after:wN + { \char_generate:nn {#3} { 13 } } + \tl_if_blank:nF {#4} + { + \tex_unexpanded:D + \exp_after:wN \exp_after:wN \exp_after:wN + { \char_generate:nn {#4} { 13 } } + } + } } } - \cs_set_protected:Npn \__char_data_auxiii:w - #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ~ \q_stop + } + \cs_set_protected:Npn \__char_data_auxi:w + #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ; + { + \tl_if_blank:nF {#6} { - \cs_set_nopar:Npn \l__char_tmpa_tl {#7} - \reverse_if:N \if_meaning:w \l__char_tmpa_tl \c_empty_tl - \cs_set_nopar:Npn \l__char_tmpb_tl {#5} - \reverse_if:N \if_meaning:w \l__char_tmpa_tl \l__char_tmpb_tl - \tl_const:cx - { c__char_titlecase_ \__char_generate_char:n {#1} _tl } - { \__char_generate:n { "#7 } } - \fi: - \fi: + \tl_if_head_eq_charcode:nNF {#6} < % > + { \__char_data_auxii:w #1 ; #6 ~ \q_stop } } - \group_begin: - \char_set_catcode_space:n { `\ }% - \ior_map_variable:NNn \g__char_data_ior \l__char_tmpa_tl - {% - \if_meaning:w \l__char_tmpa_tl \c_space_tl - \exp_after:wN \ior_map_break: - \fi: - \exp_after:wN \__char_data_auxi:w \l__char_tmpa_tl \q_stop - }% - \group_end: - \ior_close:N \g__char_data_ior - \ior_open:Nn \g__char_data_ior { CaseFolding.txt } + \__char_data_auxiii:w #1 ; + } + \cs_set_protected:Npn \__char_data_auxii:w #1 ; #2 ~ #3 \q_stop + { + \tl_const:cx + { c__char_nfd_ \__char_generate_other:n { "#1 } _tl } + { + { \__char_generate:n { "#2 } } + { + \tl_if_blank:nF {#3} + { \__char_generate:n { "#3 } } + } + } + } + \cs_set_protected:Npn \__char_data_auxiii:w + #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ~ \q_stop + { + \cs_set_nopar:Npn \l__char_tmpa_tl {#7} + \reverse_if:N \if_meaning:w \l__char_tmpa_tl \c_empty_tl + \cs_set_nopar:Npn \l__char_tmpb_tl {#5} + \reverse_if:N \if_meaning:w \l__char_tmpa_tl \l__char_tmpb_tl + \tl_const:cx + { c__char_titlecase_ \__char_generate_other:n { "#1 } _tl } + { \__char_generate:n { "#7 } } + \fi: + \fi: + } + \ior_open:Nn \g__char_data_ior { UnicodeData.txt } + \group_begin: + \char_set_catcode_space:n { `\ }% + \ior_map_variable:NNn \g__char_data_ior \l__char_tmpa_tl + {% + \if_meaning:w \l__char_tmpa_tl \c_space_tl + \exp_after:wN \ior_map_break: + \fi: + \exp_after:wN \__char_data_auxi:w \l__char_tmpa_tl \q_stop + }% + \group_end: + \ior_open:Nn \g__char_data_ior { CaseFolding.txt } + \cs_set_protected:Npn \__char_data_auxi:w #1 ;~ #2 ;~ #3 ; #4 \q_stop + { + \if:w \tl_head:n { #2 ? } C + \reverse_if:N \if_int_compare:w + \char_value_lccode:n {"#1} = "#3 ~ + \tl_const:cx + { c__char_foldcase_ \__char_generate_other:n { "#1 } _tl } + { \__char_generate:n { "#3 } } + \fi: + \else: + \if:w \tl_head:n { #2 ? } F + \__char_data_auxii:w #1 ~ #3 ~ \q_stop + \fi: + \fi: + } + \bool_lazy_or:nnF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { \cs_set_protected:Npn \__char_data_auxi:w #1 ;~ #2 ;~ #3 ; #4 \q_stop { - \if:w \tl_head:n { #2 ? } C - \reverse_if:N \if_int_compare:w - \char_value_lccode:n {"#1} = "#3 ~ - \tl_const:cx - { c__char_foldcase_ \__char_generate_char:n {#1} _tl } - { \__char_generate:n { "#3 } } - \fi: - \else: - \if:w \tl_head:n { #2 ? } F - \__char_data_auxii:w #1 ~ #3 ~ \q_stop - \fi: + \if:w \tl_head:n { #2 ? } F + \__char_data_auxii:w #1 ~ #3 ~ \q_stop \fi: } - \cs_set_protected:Npn \__char_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop + } + \cs_set_protected:Npn \__char_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop + { + \tl_const:cx { c__char_foldcase_ \__char_generate_other:n { "#1 } _tl } + { + \__char_generate:n { "#2 } + \__char_generate:n { "#3 } + \tl_if_blank:nF {#4} + { \__char_generate:n { \int_value:w "#4 } } + } + } + \ior_str_map_inline:Nn \g__char_data_ior + { + \reverse_if:N \if:w \c_hash_str \tl_head:w #1 \c_hash_str \q_stop + \__char_data_auxi:w #1 \q_stop + \fi: + } + \ior_close:N \g__char_data_ior + \ior_open:Nn \g__char_data_ior { SpecialCasing.txt } + \cs_set_protected:Npn \__char_data_auxi:w + #1 ;~ #2 ;~ #3 ;~ #4 ; #5 \q_stop + { + \use:n { \__char_data_auxii:w #1 ~ lower ~ #2 ~ } ~ \q_stop + \use:n { \__char_data_auxii:w #1 ~ upper ~ #4 ~ } ~ \q_stop + \str_if_eq:nnF {#3} {#4} + { \use:n { \__char_data_auxii:w #1 ~ title ~ #3 ~ } ~ \q_stop } + } + \cs_set_protected:Npn \__char_data_auxii:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop + { + \tl_if_empty:nF {#4} { - \tl_const:cx { c__char_foldcase_ \__char_generate_char:n {#1} _tl } + \tl_const:cx { c__char_ #2 case_ \__char_generate_other:n { "#1 } _tl } { - \__char_generate:n { "#2 } \__char_generate:n { "#3 } - \tl_if_blank:nF {#4} - { \__char_generate:n { \int_value:w "#4 } } + \__char_generate:n { "#4 } + \tl_if_blank:nF {#5} + { \__char_generate:n { "#5 } } } } - \ior_str_map_inline:Nn \g__char_data_ior - { - \reverse_if:N \if:w \c_hash_str \tl_head:w #1 \c_hash_str \q_stop - \__char_data_auxi:w #1 \q_stop - \fi: - } - \ior_close:N \g__char_data_ior - \ior_open:Nn \g__char_data_ior { SpecialCasing.txt } - \cs_set_protected:Npn \__char_data_auxi:w - #1 ;~ #2 ;~ #3 ;~ #4 ; #5 \q_stop + } + \ior_str_map_inline:Nn \g__char_data_ior + { + \str_if_eq:eeTF { \tl_head:w #1 \c_hash_str \q_stop } { \c_hash_str } { - \use:n { \__char_data_auxii:w #1 ~ lower ~ #2 ~ } ~ \q_stop - \use:n { \__char_data_auxii:w #1 ~ upper ~ #4 ~ } ~ \q_stop - \str_if_eq:nnF {#3} {#4} - { \use:n { \__char_data_auxii:w #1 ~ title ~ #3 ~ } ~ \q_stop } + \str_if_eq:eeT + {#1} + { \c_hash_str \c_space_tl Conditional~Mappings } + { \ior_map_break: } } - \cs_set_protected:Npn \__char_data_auxii:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop + { \__char_data_auxi:w #1 \q_stop } + } + \ior_close:N \g__char_data_ior +\group_end: + +\ior_new:N \g__text_data_ior +\group_begin: + \ior_open:Nn \g__text_data_ior { GraphemeBreakProperty.txt } + \cs_set_nopar:Npn \l__text_tmpa_str { } + \cs_set_nopar:Npn \l__text_tmpb_str { } + \cs_set_protected:Npn \__text_data_auxi:w #1 ;~ #2 ~ #3 \q_stop + { + \str_if_eq:VnF \l__text_tmpb_str {#2} { - \tl_if_empty:nF {#4} + \str_if_empty:NF \l__text_tmpb_str { - \tl_const:cx { c__char_ #2 case_ \__char_generate_char:n {#1} _tl } - { - \__char_generate:n { "#3 } - \__char_generate:n { "#4 } - \tl_if_blank:nF {#5} - { \__char_generate:n { "#5 } } - } + \clist_const:cx { c__text_grapheme_ \l__text_tmpb_str _clist } + { \exp_after:wN \use_none:n \l__text_tmpa_str } + \cs_set_nopar:Npn \l__text_tmpa_str { } } + \cs_set_nopar:Npn \l__text_tmpb_str {#2} } - \ior_str_map_inline:Nn \g__char_data_ior + \__text_data_auxii:w #1 .. #1 .. #1 \q_stop + } + \cs_set_protected:Npn \__text_data_auxii:w #1 .. #2 .. #3 \q_stop + { + \cs_set_nopar:Npx \l__text_tmpa_str { - \str_if_eq:eeTF - { \tl_head:w #1 \c_hash_str \q_stop } - { \c_hash_str } - { - \str_if_eq:eeT - {#1} - { \c_hash_str \c_space_tl Conditional~Mappings } - { \ior_map_break: } - } - { \__char_data_auxi:w #1 \q_stop } + \l__text_tmpa_str , + \tl_trim_spaces:n {#1} .. \tl_trim_spaces:n {#2} } - \ior_close:N \g__char_data_ior - \group_end: - } - { - \group_begin: - \ior_open:Nn \g__char_data_ior { UnicodeData.txt } - \ior_close:N \g__char_data_ior - \group_end: - } + } + \ior_str_map_inline:Nn \g__text_data_ior + { + \str_if_eq:eeF { \tl_head:w #1 \c_hash_str \q_stop } { \c_hash_str } + { + \tl_if_blank:nF {#1} + { \__text_data_auxi:w #1 \q_stop } + } + } + \ior_close:N \g__text_data_ior +\group_end: %% File: l3text.dtx \cs_generate_variant:Nn \tl_if_head_eq_meaning_p:nN { o } \scan_new:N \s__text_stop @@ -31791,6 +31951,7 @@ \cs_new:Npn \__text_use_i_delimit_by_q_recursion_stop:nw #1 #2 \q__text_recursion_stop {#1} \__kernel_quark_new_test:N \__text_if_q_recursion_tail_stop_do:Nn +\__kernel_quark_new_test:N \__text_if_q_recursion_tail_stop_do:nn \scan_new:N \s__text_recursion_tail \scan_new:N \s__text_recursion_stop \cs_new:Npn \__text_use_i_delimit_by_s_recursion_stop:nw @@ -31935,6 +32096,89 @@ } { \prg_return_false: } } +\bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} } + } + { + \cs_new:Npn \__text_codepoint_process:nN #1#2 + { + \int_compare:nNnTF { `#2 } > { "80 } + { + \int_compare:nNnTF { `#2 } < { "E0 } + { \__text_codepoint_process:nNN } + { + \int_compare:nNnTF { `#2 } < { "F0 } + { \__text_codepoint_process:nNNN } + { \__text_codepoint_process:nNNNN } + } + } + { \use:n } + {#1} #2 + } + \cs_new:Npn \__text_codepoint_process:nNN #1#2#3 + { #1 {#2#3} } + \cs_new:Npn \__text_codepoint_process:nNNN #1#2#3#4 + { #1 {#2#3#4} } + \cs_new:Npn \__text_codepoint_process:nNNNN #1#2#3#4#5 + { #1 {#2#3#4#5} } + } +\bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \prg_new_conditional:Npnn + \__text_codepoint_compare:nNn #1#2#3 { TF , p } + { + \int_compare:nNnTF { `#1 } #2 {#3} + \prg_return_true: \prg_return_false: + } + } + { + \prg_new_conditional:Npnn + \__text_codepoint_compare:nNn #1#2#3 { TF , p } + { + \int_compare:nNnTF { \__text_codepoint_compare:N #1 } + #2 {#3} + \prg_return_true: \prg_return_false: + } + \cs_new:Npn \__text_codepoint_compare:N #1 + { + \if_int_compare:w `#1 > "80 \exp_stop_f: + \if_int_compare:w `#1 < "E0 \exp_stop_f: + \exp_after:wN \exp_after:wN \exp_after:wN + \__text_codepoint_compare:NN + \else: + \if_int_compare:w `#1 < "F0 \exp_stop_f: + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_after:wN \__text_codepoint_compare:NNN + \else: + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_after:wN \__text_codepoint_compare:NNNN + \fi: + \fi: + \else: + \exp_after:wN \__text_codepoint_compare_aux:N + \fi: + #1 + } + \cs_new:Npn \__text_codepoint_compare_aux:N #1 { `#1 } + \cs_new:Npn \__text_codepoint_compare:NN #1#2 + { (`#1 - "C0) * "40 + `#2 - "80 } + \cs_new:Npn \__text_codepoint_compare:NNN #1#2#3 + { (`#1 - "E0) * "1000 + (`#2 - "80) * "40 + `#3 - "80 } + \cs_new:Npn \__text_codepoint_compare:NNNN #1#2#3#4 + { + (`#1 - "F0) * "40000 + + (`#2 - "80) * "1000 + + (`#3 - "80) * "40 + + `#4 - "80 + } + } \tl_new:N \l_text_accents_tl \tl_set:Nn \l_text_accents_tl { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t } @@ -33352,6 +33596,32 @@ \cs_new_eq:cc { __text_change_case_title_hy-x-yiwn:nnnN } { __text_change_case_upper_hy-x-yiwn:nnnN } } +\cs_new:cpn { __text_change_case_lower_la-x-medieval:nnnN } #1#2#3#4 + { + \int_compare:nNnTF { `#4 } = { `V } + { + \__text_change_case_store:e + { + \char_generate:nn { `u } { \__text_char_catcode:N #4 } + } + \use:c { __text_change_case_char_next_ #2 :nn } + {#2} {#3} + } + { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 } + } +\cs_new:cpn { __text_change_case_upper_la-x-medieval:nnnN } #1#2#3#4 + { + \int_compare:nNnTF { `#4 } = { `u } + { + \__text_change_case_store:e + { + \char_generate:nn { `V } { \__text_char_catcode:N #4 } + } + \use:c { __text_change_case_char_next_ #2 :nn } + {#2} {#3} + } + { \__text_change_case_char:nnnN {#1} {#2} {#3} #4 } + } \bool_lazy_or:nnT { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } @@ -34622,6 +34892,355 @@ } } } +%% File: l3text-map.dtx +\cs_new:Npn \text_map_function:nN #1#2 + { \exp_args:Ne \__text_map_function:nN { \text_expand:n {#1} } #2 } +\cs_new:Npn \__text_map_function:nN #1#2 + { + \__text_map_loop:Nnw #2 { } #1 + \q__text_recursion_tail \q__text_recursion_stop + \prg_break_point:Nn \text_map_break: { } + } +\cs_new:Npn \__text_map_loop:Nnw #1#2#3 \q__text_recursion_stop + { + \tl_if_head_is_N_type:nTF {#3} + { \__text_map_N_type:NnN } + { + \tl_if_head_is_group:nTF {#3} + { \__text_map_group:Nnn } + { \__text_map_space:Nnw } + } + #1 {#2} #3 \q__text_recursion_stop + } +\cs_new:Npn \__text_map_group:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + { + \__text_map_loop:Nnw #1 { } #2 + \q__text_recursion_tail \q__text_recursion_stop + \prg_break_point:Nn \text_map_break: { } + } + \__text_map_loop:Nnw #1 { } + } +\use:x + { \cs_new:Npn \exp_not:N \__text_map_space:Nnw ##1##2 \c_space_tl } + { + \__text_map_output:Nn #1 {#2} + #1 { ~ } + \__text_map_loop:Nnw #1 { } + } +\cs_new:Npn \__text_map_N_type:NnN #1#2#3 + { + \__text_if_q_recursion_tail_stop_do:Nn #3 + { + \__text_map_output:Nn #1 {#2} + \text_map_break: + } + \token_if_cs:NTF #3 + { + \__text_map_output:Nn #1 {#2} + #1 {#3} + \__text_map_loop:Nnw #1 { } + } + { + \__text_codepoint_process:nN + { \__text_map_codepoint:Nnn #1 {#2} } #3 + } + } +\cs_new:Npn \__text_map_codepoint:Nnn #1#2#3 + { + \__text_codepoint_compare:nNnTF {#3} = { "0D } + { + \__text_map_output:Nn #1 {#2} + \__text_map_CR:Nnw #1 {#3} + } + { + \__text_codepoint_compare:nNnTF {#3} = { "200D } + { \__text_map_loop:Nnw #1 {#2#3} } + { \__text_map_class:Nnnn #1 {#2} {#3} { Control } } + } + } +\cs_new:Npn \__text_map_CR:Nnw #1#2#3 \q__text_recursion_stop + { + \tl_if_head_is_N_type:nTF {#3} + { \__text_map_CR:NnN #1 {#2} } + { + #1 {#2} + \__text_map_loop:Nnw #1 { } + } + #3 \q__text_recursion_stop + } +\cs_new:Npn \__text_map_CR:NnN #1#2#3 + { + \__text_if_q_recursion_tail_stop_do:Nn #3 + { + #1 {#2} + \text_map_break: + } + \bool_lazy_and:nnTF + { ! \token_if_cs_p:N #3 } + { \int_compare_p:nNn { `#3 } = { "0A } } + { + \__text_map_output:Nn #1 {#2#3} + \__text_map_loop:Nnw #1 { } + } + { \__text_map_loop:Nnw #1 { } #3 } + } +\cs_new:Npn \__text_map_class:Nnnn #1#2#3#4 + { + \exp_args:Nv \__text_map_class:nNnnn { c__text_grapheme_ #4 _clist } + #1 {#2} {#3} {#4} + } +\cs_new:Npn \__text_map_class:nNnnn #1#2#3#4#5 + { + \__text_map_class_loop:Nnnnw #2 {#3} {#4} {#5} + #1 , \q__text_recursion_tail .. , \q__text_recursion_stop + } +\cs_new:Npn \__text_map_class_loop:Nnnnw #1#2#3#4 #5 .. #6 , + { + \__text_if_q_recursion_tail_stop_do:nn {#5} + { \use:c { __text_map_not_ #4 :Nnn } #1 {#2} {#3} } + \__text_codepoint_compare:nNnTF {#3} < { "#5 } + { + \__text_map_class_end:nw + { \use:c { __text_map_not_ #4 :Nnn } #1 {#2} {#3} } + } + { + \__text_codepoint_compare:nNnTF {#3} > { "#6 } + { \__text_map_class_loop:Nnnnw #1 {#2} {#3} {#4} } + { + \__text_map_class_end:nw + { \use:c { __text_map_ #4 :Nnn } #1 {#2} {#3} } + } + } + } +\cs_new:Npn \__text_map_class_end:nw #1#2 \q__text_recursion_stop {#1} +\cs_new:Npn \__text_map_Control:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_output:Nn #1 {#3} + \__text_map_loop:Nnw #1 { } + } +\cs_new:Npn \__text_map_Extend:Nnn #1#2#3 + { \__text_map_loop:Nnw #1 {#2#3} } +\cs_new_eq:NN \__text_map_SpacingMark:Nnn \__text_map_Extend:Nnn +\cs_new:Npn \__text_map_Prepend:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_lookahead:NnNw #1 {#3} \__text_map_Prepend_aux:Nnn + } +\cs_new:Npn \__text_map_Prepend_aux:Nnn #1#2#3 + { + \bool_lazy_or:nnTF + { \__text_codepoint_compare_p:nNn {#3} = { "0A } } + { \__text_codepoint_compare_p:nNn {#3} = { "0D } } + { + #1 {#2} + \__text_map_loop:Nnw #1 {#3} + } + { + \exp_args:NV \__text_map_Prepend:nNnn + \c__text_grapheme_Control_clist + #1 {#2} {#3} + } + } +\cs_new:Npn \__text_map_Prepend:nNnn #1#2#3#4 + { + \__text_map_Prepend_loop:Nnnw #2 {#3} {#4} + #1 , \q__text_recursion_tail .. , \q__text_recursion_stop + } +\cs_new:Npn \__text_map_Prepend_loop:Nnnw #1#2#3 #4 .. #5 , + { + \__text_if_q_recursion_tail_stop_do:nn {#4} + { \__text_map_loop:Nnw #1 {#2#3} } + \__text_codepoint_compare:nNnTF {#3} < { "#4 } + { + \__text_map_class_end:nw + { \__text_map_loop:Nnw #1 {#2#3} } + } + { + \__text_codepoint_compare:nNnTF {#3} > { "#5 } + { \__text_map_Prepend_loop:Nnnw #1 {#2} {#3} } + { + \__text_map_class_end:nw + { \__text_map_loop:Nnw #1 {#2} #3 } + } + } + } +\cs_new:Npn \__text_map_not_Control:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { Extend } } +\cs_new:Npn \__text_map_not_Extend:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { SpacingMark } } +\cs_new:Npn \__text_map_not_SpacingMark:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { Prepend } } +\cs_new:Npn \__text_map_not_Prepend:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { L } } +\cs_new:Npn \__text_map_not_L:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { LV } } +\cs_new:Npn \__text_map_not_LV:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { V } } +\cs_new:Npn \__text_map_not_V:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { LVT } } +\cs_new:Npn \__text_map_not_LVT:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { T } } +\cs_new:Npn \__text_map_not_T:Nnn #1#2#3 + { \__text_map_class:Nnnn #1 {#2} {#3} { Regional_Indicator } } +\cs_new:Npn \__text_map_not_Regional_Indicator:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_loop:Nnw #1 {#3} + } +\cs_new:Npn \__text_map_L:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_hangul:Nnnw + #1 {#3} { L ; V ; LV ; LVT } + } +\cs_new:Npn \__text_map_LV:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_hangul:Nnnw + #1 {#3} { V ; T } + } +\cs_new_eq:NN \__text_map_V:Nnn \__text_map_LV:Nnn +\cs_new:Npn \__text_map_LVT:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_hangul:Nnnw + #1 {#3} { T } + } +\cs_new_eq:NN \__text_map_T:Nnn \__text_map_LVT:Nnn +\cs_new:Npn \__text_map_hangul:Nnnw #1#2#3#4 \q__text_recursion_stop + { + \tl_if_head_is_N_type:nTF {#4} + { \__text_map_hangul:NnnN #1 {#2} {#3} } + { + #1 {#2} + \__text_map_loop:Nnw #1 { } + } + #4 \q__text_recursion_stop + } +\cs_new:Npn \__text_map_hangul:NnnN #1#2#3#4 + { + \__text_if_q_recursion_tail_stop_do:Nn #4 + { + #1 {#2} + \text_map_break: + } + \token_if_cs:NTF #4 + { + #1 {#2} + \__text_map_loop:Nnw #1 { } + } + { + \__text_codepoint_process:nN + { \__text_map_hangul:Nnnn #1 {#2} {#3} } #4 + } + } +\cs_new:Npn \__text_map_hangul:Nnnn #1#2#3#4 + { + \__text_map_hangul_aux:Nnnw #1 {#2} {#4} + #3 ; \q_recursion_tail ; \q_recursion_stop + } +\cs_new:Npn \__text_map_hangul_aux:Nnnw #1#2#3#4 ; + { + \quark_if_recursion_tail_stop_do:nn {#4} + { \__text_map_loop:Nnw #1 {#2} #3 } + \exp_args:Nv \__text_map_hangul:nNnnnw { c__text_grapheme_ #4 _clist } + #1 {#2} {#3} {#4} + } +\cs_new:Npn \__text_map_hangul:nNnnnw #1#2#3#4#5#6 \q_recursion_stop + { + \__text_map_hangul_loop:Nnnnnw #2 {#3} {#4} {#5} {#6} + #1 , \q__text_recursion_tail .. , \q__text_recursion_stop + } +\cs_new:Npn \__text_map_hangul_loop:Nnnnnw #1#2#3#4#5 #6 .. #7 , + { + \__text_if_q_recursion_tail_stop_do:nn {#6} + { \__text_map_hangul_next:Nnnn #1 {#2} {#3} {#5} } + \__text_codepoint_compare:nNnTF {#3} < { "#6 } + { + \__text_map_hangul_end:nw + { \__text_map_hangul_next:Nnnn #1 {#2} {#3} {#5} } + } + { + \__text_codepoint_compare:nNnTF {#3} > { "#7 } + { \__text_map_hangul_loop:Nnnnnw #1 {#2} {#3} {#4} {#5} } + { + \__text_map_hangul_end:nw + { \use:c { __text_map_hangul_ #4 :Nnn } #1 {#2} {#3} } + } + } + } +\cs_new:Npn \__text_map_hangul_next:Nnnn #1#2#3#4 + { \__text_map_hangul_aux:Nnnw #1 {#2} {#3} #4 \q_recursion_stop } +\cs_new:Npn \__text_map_hangul_end:nw #1#2 \q__text_recursion_stop {#1} +\cs_new:Npn \__text_map_hangul_L:Nnn #1#2#3 + { + \__text_map_hangul:Nnnw + #1 {#2#3} { L V { LV } { LVT } } + } +\cs_new:Npn \__text_map_hangul_LV:Nnn #1#2#3 + { + \__text_map_hangul:Nnnw + #1 {#2#3} { VT } + } +\cs_new_eq:NN \__text_map_hangul_V:Nnn \__text_map_hangul_LV:Nnn +\cs_new:Npn \__text_map_hangul_LVT:Nnn #1#2#3 + { + \__text_map_hangul:Nnnw + #1 {#2#3} { T } + } +\cs_new_eq:NN \__text_map_hangul_T:Nnn \__text_map_hangul_LVT:Nnn +\cs_new:Npn \__text_map_Regional_Indicator:Nnn #1#2#3 + { + \__text_map_output:Nn #1 {#2} + \__text_map_lookahead:NnNw #1 {#3} \__text_map_Regional_Indicator_aux:Nnn + } +\cs_new:Npn \__text_map_Regional_Indicator_aux:Nnn #1#2#3 + { + \bool_lazy_or:nnTF + { \__text_codepoint_compare_p:nNn {#3} < { "1F1E6 } } + { \__text_codepoint_compare_p:nNn {#3} > { "1F1FF } } + { + \__text_map_loop:Nnw #1 {#2} #3 + } + { \__text_map_loop:Nnw #1 {#2#3} } + } +\cs_new:Npn \__text_map_lookahead:NnNw #1#2#3#4 \q__text_recursion_stop + { + \tl_if_head_is_N_type:nTF {#4} + { \__text_map_lookahead:NnNN #1 {#2} #3 } + { \__text_map_loop:Nnw #1 {#2} } + #4 \q__text_recursion_stop + } +\cs_new:Npn \__text_map_lookahead:NnNN #1#2#3#4 + { + \__text_if_q_recursion_tail_stop_do:Nn #4 { #1 {#2} } + \token_if_cs:NTF #4 + { + #1 {#2} + \__text_map_loop:Nnw #1 { } + } + { \__text_codepoint_process:nN { #3 #1 {#2} } } + #4 + } +\cs_new:Npn \__text_map_output:Nn #1#2 + { \tl_if_blank:nF {#2} { #1 {#2} } } +\cs_new:Npn \text_map_break: + { \prg_map_break:Nn \text_map_break: { } } +\cs_new:Npn \text_map_break:n + { \prg_map_break:Nn \text_map_break: } +\cs_new_protected:Npn \text_map_inline:nn #1#2 + { + \int_gincr:N \g__kernel_prg_map_int + \cs_gset_protected:cpn + { __text_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2} + \exp_args:Nnc \text_map_function:nN {#1} + { __text_map_ \int_use:N \g__kernel_prg_map_int :w } + \prg_break_point:Nn \text_map_break: + { \int_gdecr:N \g__kernel_prg_map_int } + } %% File: l3text-purify.dtx \__kernel_quark_new_test:N \__text_if_recursion_tail_stop:N \cs_new:Npn \text_purify:n #1 diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 2bb475c14..7e1fdd7a0 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-23}% +\def\ExplFileDate{2022-08-30}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index 9e63d6fa6..c01f3175b 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-23}% +\def\ExplFileDate{2022-08-30}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index 243725348..d5a770381 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-23}% +\def\ExplFileDate{2022-08-30}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 0e37e0114e54707d3707c5ed89b8cb5a5c6d3184 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 20:50:57 +0200 Subject: [PATCH 07/13] Track pdfmanagement --- .../latex-lab/testfiles-OR/footmisc-002.tlg | 18 ++++++++ .../latex-lab/testfiles-OR/footmisc-003.tlg | 3 ++ .../latex-lab/testfiles-OR/footmisc-004.tlg | 3 ++ .../latex-lab/testfiles-OR/footmisc-006.tlg | 8 ++++ .../testfiles-OR/footmisc-007-rollback.tlg | 8 ++++ .../testfiles-OR/footmisc-009-multiple.tlg | 42 +++++++++++++++++++ .../testfiles-OR/footmisc-010-setspace.tlg | 42 +++++++++++++++++++ .../testfiles-OR/footmisc-012-side.tlg | 32 ++++++++++++++ .../testfiles-OR/footmisc-013-scrartcl.tlg | 2 +- .../documentmetadata-support-000.tlg | 5 ++- .../documentmetadata-support-001.tlg | 5 ++- 11 files changed, 165 insertions(+), 3 deletions(-) diff --git a/required/latex-lab/testfiles-OR/footmisc-002.tlg b/required/latex-lab/testfiles-OR/footmisc-002.tlg index deb0e9840..97d9a2f15 100644 --- a/required/latex-lab/testfiles-OR/footmisc-002.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-002.tlg @@ -79,11 +79,13 @@ Completed box being shipped out [1] ....\write1{\pp@pagectr{footnote}{1}{\theabspage }{\thepage }} ....\penalty 10000 ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -100,11 +102,13 @@ Completed box being shipped out [1] ....\write1{\pp@pagectr{footnote}{2}{\theabspage }{\thepage }} ....\penalty 10000 ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -114,6 +118,7 @@ Completed box being shipped out [1] ...\rule(0.4+0.0)x137.9979 ...\kern 2.6 ...\hbox(6.68999+2.85002)x345.0, glue set 320.6332fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -121,15 +126,19 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 1 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 A ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.68999+2.85002)x345.0, glue set 320.9832fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -137,11 +146,14 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 2 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 B ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -187,11 +199,13 @@ Completed box being shipped out [2] ....\write1{\pp@pagectr{footnote}{3}{\theabspage }{\thepage }} ....\penalty 10000 ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -201,6 +215,7 @@ Completed box being shipped out [2] ...\rule(0.4+0.0)x137.9979 ...\kern 2.6 ...\hbox(6.68999+2.85002)x345.0, glue set 320.86098fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -208,11 +223,14 @@ Completed box being shipped out [2] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 1 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 C ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 diff --git a/required/latex-lab/testfiles-OR/footmisc-003.tlg b/required/latex-lab/testfiles-OR/footmisc-003.tlg index 0f1806df5..158cc5b71 100644 --- a/required/latex-lab/testfiles-OR/footmisc-003.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-003.tlg @@ -119,6 +119,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 1 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_2}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-4}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{4}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf4 BDC} @@ -189,6 +190,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 2 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_3}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-14}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{14}{tagmcid}{13}}} .....\pdfliteral page{/Lbl /l3pdf14 BDC} @@ -426,6 +428,7 @@ Completed box being shipped out [2] .......\OT1/cmr/m/n/7 3 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_4}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-26}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{26}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf24 BDC} diff --git a/required/latex-lab/testfiles-OR/footmisc-004.tlg b/required/latex-lab/testfiles-OR/footmisc-004.tlg index 92068389f..851f705a4 100644 --- a/required/latex-lab/testfiles-OR/footmisc-004.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-004.tlg @@ -121,6 +121,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 1 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_2}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-4}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{4}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf4 BDC} @@ -193,6 +194,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 2 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_3}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-14}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{14}{tagmcid}{13}}} .....\pdfliteral page{/Lbl /l3pdf14 BDC} @@ -432,6 +434,7 @@ Completed box being shipped out [2] .......\OT1/cmr/m/n/7 1 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_4}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-26}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{26}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf24 BDC} diff --git a/required/latex-lab/testfiles-OR/footmisc-006.tlg b/required/latex-lab/testfiles-OR/footmisc-006.tlg index cb1315dfd..9f999d903 100644 --- a/required/latex-lab/testfiles-OR/footmisc-006.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-006.tlg @@ -133,6 +133,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 1 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_2}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-4}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{4}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf4 BDC} @@ -205,6 +206,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 2 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_3}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-12}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{12}{tagmcid}{11}}} .....\pdfliteral page{/Lbl /l3pdf12 BDC} @@ -277,6 +279,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 3 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_4}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-20}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{20}{tagmcid}{19}}} .....\pdfliteral page{/Lbl /l3pdf20 BDC} @@ -308,6 +311,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 4 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_5}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-27}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{27}{tagmcid}{26}}} .....\pdfliteral page{/Lbl /l3pdf27 BDC} @@ -400,6 +404,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 5 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_6}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-35}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{35}{tagmcid}{34}}} .....\pdfliteral page{/Lbl /l3pdf35 BDC} @@ -472,6 +477,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 6 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_7}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-43}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{43}{tagmcid}{42}}} .....\pdfliteral page{/Lbl /l3pdf43 BDC} @@ -508,6 +514,7 @@ Completed box being shipped out [1] .......\OT1/cmr/m/n/7 7 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_8}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-50}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{50}{tagmcid}{49}}} .....\pdfliteral page{/Lbl /l3pdf50 BDC} @@ -993,6 +1000,7 @@ Completed box being shipped out [2] .......\OT1/cmr/m/n/7 1 ......\mathoff .....\pdfendlink +.....\write1{\newlabeldata{__tag_objr_page_9}{{tagabspage}{\__ref_attribute_tagabspage: }}} .....\pdfliteral page{EMC} .....\write1{\newlabeldata{mcid-60}{{tagabspage}{\__ref_attribute_tagabspage: }{tagmcabs}{60}{tagmcid}{3}}} .....\pdfliteral page{/Lbl /l3pdf58 BDC} diff --git a/required/latex-lab/testfiles-OR/footmisc-007-rollback.tlg b/required/latex-lab/testfiles-OR/footmisc-007-rollback.tlg index e698b269f..a6da074df 100644 --- a/required/latex-lab/testfiles-OR/footmisc-007-rollback.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-007-rollback.tlg @@ -127,22 +127,26 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\write1{\FN@pp@footnote@aux{1}{\thepage }} ....\glue 3.33333 plus 1.66666 minus 1.11111 ....\OT1/cmr/m/n/10 a ....\OT1/cmr/m/n/10 n ....\OT1/cmr/m/n/10 d ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 .....\mathoff +....\special{} ....\write1{\FN@pp@footnote@aux{2}{\thepage }} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil @@ -162,11 +166,13 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 1 ......\mathoff +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 A ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -178,11 +184,13 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 2 ......\mathoff +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 B ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 diff --git a/required/latex-lab/testfiles-OR/footmisc-009-multiple.tlg b/required/latex-lab/testfiles-OR/footmisc-009-multiple.tlg index dd71d965c..550c210ae 100644 --- a/required/latex-lab/testfiles-OR/footmisc-009-multiple.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-009-multiple.tlg @@ -95,31 +95,37 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\mathon ....\hbox(0.80556+1.3611)x2.7639, shifted -3.62892 .....\OT1/cmr/m/n/7 , ....\mathoff ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 .....\mathoff +....\special{} ....\mathon ....\hbox(0.80556+1.3611)x2.7639, shifted -3.62892 .....\OT1/cmr/m/n/7 , ....\mathoff ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 7 .....\mathoff +....\special{} ....\kern -0.00005 ....\kern 0.00005 ....\penalty 10000 @@ -136,11 +142,13 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^85 .....\mathoff +....\special{} ....\kern -0.00005 ....\kern 0.00005 ....\glue 3.33333 plus 1.66666 minus 1.11111 @@ -148,22 +156,26 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 n ....\OT1/cmr/m/n/10 d ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^a7 .....\mathoff +....\special{} ....\mathon ....\hbox(0.80556+1.3611)x2.7639, shifted -3.62892 .....\OT1/cmr/m/n/7 , ....\mathoff ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 ......\hbox(0.0+0.0)x0.0 .....\mathoff +....\special{} ....\kern -0.00005 ....\kern 0.00005 ....\penalty 10000 @@ -182,11 +194,13 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 g ....\OT1/cmr/m/n/10 : ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x5.34604 .....\mathon .....\hbox(4.85992+1.36078)x5.34604, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^b6 .....\mathoff +....\special{} ....\kern -0.00005 ....\kern 0.00005 ....\glue 4.44444 plus 3.33331 minus 0.55556 @@ -226,6 +240,7 @@ Completed box being shipped out [1] ...\rule(0.4+0.0)x137.9979 ...\kern 2.6 ...\hbox(6.68999+2.85002)x345.0, glue set 320.6332fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -233,15 +248,19 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 1 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 A ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.68999+2.85002)x345.0, glue set 320.9832fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -249,16 +268,20 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 2 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\write1{\newlabel{foo}{{2}{\thepage }}} ....\OT1/cmr/m/n/8 B ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.68999+2.85002)x345.0, glue set 320.86098fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -266,15 +289,19 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 C ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 320.51097fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -282,15 +309,19 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^85 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 D ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 321.21931fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -298,15 +329,19 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^a7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 E ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 321.45543fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -314,15 +349,19 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^a7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 F ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 320.3318fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 13.0567fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x4.94334 @@ -330,11 +369,14 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x4.94334, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^b6 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 G ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 diff --git a/required/latex-lab/testfiles-OR/footmisc-010-setspace.tlg b/required/latex-lab/testfiles-OR/footmisc-010-setspace.tlg index f0c336804..cc926f569 100644 --- a/required/latex-lab/testfiles-OR/footmisc-010-setspace.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-010-setspace.tlg @@ -492,23 +492,29 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 7 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -523,28 +529,34 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^85 .....\mathoff +....\special{} ....\glue 3.33333 plus 1.66666 minus 1.11111 ....\OT1/cmr/m/n/10 a ....\OT1/cmr/m/n/10 n ....\OT1/cmr/m/n/10 d ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^a7 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 ......\hbox(0.0+0.0)x0.0 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -561,11 +573,13 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 g ....\OT1/cmr/m/n/10 : ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x5.34604 .....\mathon .....\hbox(4.85992+1.36078)x5.34604, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^b6 .....\mathoff +....\special{} ....\glue 4.44444 plus 3.33331 minus 0.55556 ....\OT1/cmr/m/n/10 t ....\OT1/cmr/m/n/10 h @@ -603,6 +617,7 @@ Completed box being shipped out [1] ...\rule(0.4+0.0)x137.9979 ...\kern 2.6 ...\hbox(6.68999+1.55556)x345.0, glue set 0.23169 +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -610,6 +625,8 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 1 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 L @@ -1062,10 +1079,12 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/8 . ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.68999+2.85002)x345.0, glue set 320.9832fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -1073,16 +1092,20 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 2 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\write1{\newlabel{foo}{{2}{\thepage }}} ....\OT1/cmr/m/n/8 B ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.68999+2.85002)x345.0, glue set 320.86098fil +....\special{} ....\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.68999+0.0)x4.16661 @@ -1090,15 +1113,19 @@ Completed box being shipped out [1] ......\hbox(3.86665+0.0)x4.16661, shifted -2.82333 .......\OT1/cmr/m/n/6 7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 C ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 320.51097fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -1106,15 +1133,19 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^85 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 D ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 321.21931fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -1122,15 +1153,19 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^a7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 E ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 222.98874fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x3.77696 @@ -1138,6 +1173,8 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^a7 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 F @@ -1169,10 +1206,12 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/8 k ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 ...\hbox(6.98898+2.85002)x345.0, glue set 320.3318fil +....\special{} ....\hbox(6.98898+0.0)x18.00005, glue set 13.0567fil .....\glue 0.0 plus 1.0fil minus 1.0fil .....\hbox(6.98898+0.0)x4.94334 @@ -1180,11 +1219,14 @@ Completed box being shipped out [1] ......\hbox(4.16565+1.16638)x4.94334, shifted -2.82333 .......\TS1/cmr/m/n/6 ^^b6 ......\mathoff +....\special{} +....\special{} ....\hbox(6.65+0.0)x0.0 .....\rule(6.65+0.0)x0.0 ....\OT1/cmr/m/n/8 G ....\penalty 10000 ....\rule(0.0+2.85002)x0.0 +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 diff --git a/required/latex-lab/testfiles-OR/footmisc-012-side.tlg b/required/latex-lab/testfiles-OR/footmisc-012-side.tlg index 722e85c85..b8e75aab6 100644 --- a/required/latex-lab/testfiles-OR/footmisc-012-side.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-012-side.tlg @@ -88,23 +88,29 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 1 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 7 .....\mathoff +....\special{} ....\glue 3.33333 plus 1.66666 minus 1.11111 ....\OT1/cmr/m/n/10 L ....\OT1/cmr/m/n/10 o @@ -182,6 +188,7 @@ Completed box being shipped out [1] .....\vbox(6.68999+0.0)x65.0 ......\vbox(6.68999+0.0)x65.0 .......\hbox(6.68999+0.0)x65.0, glue set 40.6332fil +........\special{} ........\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .........\glue 0.0 plus 1.0fil minus 1.0fil .........\hbox(6.68999+0.0)x4.16661 @@ -189,7 +196,10 @@ Completed box being shipped out [1] ..........\hbox(3.86665+0.0)x4.16661, shifted -2.82333 ...........\OT1/cmr/m/n/6 1 ..........\mathoff +........\special{} +........\special{} ........\OT1/cmr/m/n/8 A +........\special{} ........\penalty 10000 ........\glue(\parfillskip) 0.0 plus 1.0fil ........\glue(\rightskip) 0.0 @@ -207,6 +217,7 @@ Completed box being shipped out [1] .....\vbox(6.68999+0.0)x65.0 ......\vbox(6.68999+0.0)x65.0 .......\hbox(6.68999+0.0)x65.0, glue set 40.9832fil +........\special{} ........\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .........\glue 0.0 plus 1.0fil minus 1.0fil .........\hbox(6.68999+0.0)x4.16661 @@ -214,8 +225,11 @@ Completed box being shipped out [1] ..........\hbox(3.86665+0.0)x4.16661, shifted -2.82333 ...........\OT1/cmr/m/n/6 2 ..........\mathoff +........\special{} +........\special{} ........\write1{\newlabel{foo}{{2}{\thepage }}} ........\OT1/cmr/m/n/8 B +........\special{} ........\penalty 10000 ........\glue(\parfillskip) 0.0 plus 1.0fil ........\glue(\rightskip) 0.0 @@ -233,6 +247,7 @@ Completed box being shipped out [1] .....\vbox(6.68999+0.0)x65.0 ......\vbox(6.68999+0.0)x65.0 .......\hbox(6.68999+0.0)x65.0, glue set 40.86098fil +........\special{} ........\hbox(6.68999+0.0)x18.00005, glue set 13.83344fil .........\glue 0.0 plus 1.0fil minus 1.0fil .........\hbox(6.68999+0.0)x4.16661 @@ -240,7 +255,10 @@ Completed box being shipped out [1] ..........\hbox(3.86665+0.0)x4.16661, shifted -2.82333 ...........\OT1/cmr/m/n/6 7 ..........\mathoff +........\special{} +........\special{} ........\OT1/cmr/m/n/8 C +........\special{} ........\penalty 10000 ........\glue(\parfillskip) 0.0 plus 1.0fil ........\glue(\rightskip) 0.0 @@ -540,11 +558,13 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 t ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^85 .....\mathoff +....\special{} ....\glue 3.33333 plus 1.66666 minus 1.11111 ....\OT1/cmr/m/n/10 a ....\OT1/cmr/m/n/10 n @@ -559,6 +579,7 @@ Completed box being shipped out [1] .....\vbox(6.98898+0.0)x65.0 ......\vbox(6.98898+0.0)x65.0 .......\hbox(6.98898+0.0)x65.0, glue set 40.51097fil +........\special{} ........\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .........\glue 0.0 plus 1.0fil minus 1.0fil .........\hbox(6.98898+0.0)x3.77696 @@ -566,7 +587,10 @@ Completed box being shipped out [1] ..........\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 ...........\TS1/cmr/m/n/6 ^^85 ..........\mathoff +........\special{} +........\special{} ........\OT1/cmr/m/n/8 D +........\special{} ........\penalty 10000 ........\glue(\parfillskip) 0.0 plus 1.0fil ........\glue(\rightskip) 0.0 @@ -583,18 +607,22 @@ Completed box being shipped out [1] ....\OT1/cmr/m/n/10 s ....\OT1/cmr/m/n/10 o ....\penalty 10000 +....\special{} ....\hbox(8.48885+0.0)x4.05469 .....\mathon .....\hbox(4.85992+1.36078)x4.05469, shifted -3.62892 ......\TS1/cmr/m/n/7 ^^a7 .....\mathoff +....\special{} ....\penalty 10000 +....\special{} ....\hbox(8.14003+0.0)x4.48613 .....\mathon .....\hbox(4.51111+0.0)x4.48613, shifted -3.62892 ......\OT1/cmr/m/n/7 2 ......\hbox(0.0+0.0)x0.0 .....\mathoff +....\special{} ....\penalty 10000 ....\glue(\parfillskip) 0.0 plus 1.0fil ....\glue(\rightskip) 0.0 @@ -607,6 +635,7 @@ Completed box being shipped out [1] .....\vbox(6.98898+0.0)x65.0 ......\vbox(6.98898+0.0)x65.0 .......\hbox(6.98898+0.0)x65.0, glue set 41.21931fil +........\special{} ........\hbox(6.98898+0.0)x18.00005, glue set 14.22308fil .........\glue 0.0 plus 1.0fil minus 1.0fil .........\hbox(6.98898+0.0)x3.77696 @@ -614,7 +643,10 @@ Completed box being shipped out [1] ..........\hbox(4.16565+1.16638)x3.77696, shifted -2.82333 ...........\TS1/cmr/m/n/6 ^^a7 ..........\mathoff +........\special{} +........\special{} ........\OT1/cmr/m/n/8 E +........\special{} ........\penalty 10000 ........\glue(\parfillskip) 0.0 plus 1.0fil ........\glue(\rightskip) 0.0 diff --git a/required/latex-lab/testfiles-OR/footmisc-013-scrartcl.tlg b/required/latex-lab/testfiles-OR/footmisc-013-scrartcl.tlg index 6545232e7..7160e0efc 100644 --- a/required/latex-lab/testfiles-OR/footmisc-013-scrartcl.tlg +++ b/required/latex-lab/testfiles-OR/footmisc-013-scrartcl.tlg @@ -2,7 +2,7 @@ This is a generated file for the l3build validation system. Don't change this file in any respect. Patched\nobreakspace {} @makefntext > \@makefntext=\long macro: -#1->\raggedfootnote \leftskip 1.5em \l@addto@macro \@trivlist {\ifnum \@listdepth =\@ne \advance \leftmargin 1.5em\relax \fi }\parindent 1em\noindent \IfArgIsEmpty {1em}{}{\hskip \dimexpr 1em-1.5em\relax }\ftn@font \@makefntext@processX {\hbox to \z@ }{\hss \@@makefnmark }\@makefntext@cfgpointii {#1}. +#1->\ExecuteDoHook {footnote/text/begin}\raggedfootnote \leftskip 1.5em \l@addto@macro \@trivlist {\ifnum \@listdepth =\@ne \advance \leftmargin 1.5em\relax \fi }\parindent 1em\noindent \IfArgIsEmpty {1em}{}{\hskip \dimexpr 1em-1.5em\relax }\ftn@font \@makefntext@processX {\hbox to \z@ }{\hss \@@makefnmark }\@makefntext@cfgpointii {#1}\ExecuteDoHook {footnote/text/end}. l. ...\makeatletter\show\@makefntext \makeatother -> The hook 'fnmark/before': diff --git a/required/latex-lab/testfiles/documentmetadata-support-000.tlg b/required/latex-lab/testfiles/documentmetadata-support-000.tlg index e33d243e6..1de6516f0 100644 --- a/required/latex-lab/testfiles/documentmetadata-support-000.tlg +++ b/required/latex-lab/testfiles/documentmetadata-support-000.tlg @@ -3,7 +3,10 @@ Don't change this file in any respect. First call: (documentmetadata-support.ltx (../pdfmanagement-testphase.sty Package: pdfmanagement-testphase ....-..-.. v... LaTeX PDF management testphase bundle -(../pdfmanagement-testphase.ltx +(../tagpdf-base.sty +Package: tagpdf-base ....-..-.. v... part of tagpdf - provide base, no-op versions of the user commands +\c@g__tag_struct_abs_int=\count... +) (../pdfmanagement-testphase.ltx File: pdfmanagement-testphase.ltx ....-..-.. v... PDF management code (testphase) \g__pdfmanagement_EmbeddedFiles_int=\count... (../l3bitset.sty diff --git a/required/latex-lab/testfiles/documentmetadata-support-001.tlg b/required/latex-lab/testfiles/documentmetadata-support-001.tlg index 98124faf3..9e48a21c5 100644 --- a/required/latex-lab/testfiles/documentmetadata-support-001.tlg +++ b/required/latex-lab/testfiles/documentmetadata-support-001.tlg @@ -3,7 +3,10 @@ Don't change this file in any respect. First call: (documentmetadata-support.ltx (../pdfmanagement-testphase.sty Package: pdfmanagement-testphase ....-..-.. v... LaTeX PDF management testphase bundle -(../pdfmanagement-testphase.ltx +(../tagpdf-base.sty +Package: tagpdf-base ....-..-.. v... part of tagpdf - provide base, no-op versions of the user commands +\c@g__tag_struct_abs_int=\count... +) (../pdfmanagement-testphase.ltx File: pdfmanagement-testphase.ltx ....-..-.. v... PDF management code (testphase) \g__pdfmanagement_EmbeddedFiles_int=\count... (../l3bitset.sty From 62664a10dc6966f95d72ddc3fdcb203a296fcc62 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 21:51:25 +0200 Subject: [PATCH 08/13] Use a local copy of pdfmanagement As main is on TL'21 still. --- .../pdfmanagement-testphase/color-ltx.sty | 217 + .../colorspace-patches-tmp-ltx.sty | 85 + .../fontspec-luatex-tmp-ltx.sty | 3888 +++++++++++++++++ .../hgeneric-testphase.def | 3563 +++++++++++++++ .../hyperref-colorschemes.def | 145 + .../hyperxmp-patches-tmp-ltx.sty | 184 + .../l3backend-testphase-dvipdfmx.def | 478 ++ .../l3backend-testphase-dvips.def | 308 ++ .../l3backend-testphase-dvisvgm.def | 152 + .../l3backend-testphase-luatex.def | 460 ++ .../l3backend-testphase-pdftex.def | 467 ++ .../l3backend-testphase-xetex.def | 478 ++ .../l3backend-testphase.lua | 142 + .../l3pdffield-testphase.sty | 2151 +++++++++ .../pdfmanagement-testphase/l3ref-tmp.sty | 124 + .../luaotfload-l3color-tmp.lua | 78 + .../output-patches-tmp-ltx.sty | 73 + .../pdfmanagement-testphase/pdflscape-ltx.sty | 54 + .../pdfmanagement-firstaid.sty | 192 + .../pdfmanagement-testphase.ltx | 2285 ++++++++++ .../pdfmanagement-testphase.sty | 47 + .../transparent-ltx.sty | 26 + .../xcolor-patches-tmp-ltx.sty | 84 + 23 files changed, 15681 insertions(+) create mode 100644 texmf/tex/latex/pdfmanagement-testphase/color-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/hyperref-colorschemes.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/l3ref-tmp.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/luaotfload-l3color-tmp.lua create mode 100644 texmf/tex/latex/pdfmanagement-testphase/output-patches-tmp-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx create mode 100644 texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/transparent-ltx.sty create mode 100644 texmf/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty diff --git a/texmf/tex/latex/pdfmanagement-testphase/color-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/color-ltx.sty new file mode 100644 index 000000000..7400b4be9 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/color-ltx.sty @@ -0,0 +1,217 @@ +%% +%% This is file `color.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% color.dtx (with options: `package') +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at https://latex-project.org/bugs/ +%% (but please observe conditions on bug reports sent to that address!) +%% +%% +%% color.dtx Copyright (C) 1994--1999 David Carlisle +%% Copyright (C) 2005-2022 +%% The LaTeX Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file is part of the Standard LaTeX `Graphics Bundle'. +%% It may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.3c or, at your option, any later version. +%% +%% This file has the LPPL maintenance status "maintained". +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{color-ltx}[2022-08-24 v0.95r + Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)] +\edef\Gin@codes{% + \catcode`\noexpand\^^A\the\catcode`\^^A\relax + \catcode`\noexpand\"\the\catcode`\"\relax + \catcode`\noexpand\*\the\catcode`\*\relax + \catcode`\noexpand\!\the\catcode`\!\relax + \catcode`\noexpand\:\the\catcode`\:\relax} +\catcode`\^^A=\catcode`\% +\catcode`\"=12 +\catcode`\*=11 +\catcode`\!=12 +\catcode`\:=12 +\providecommand\Gin@driver{} +\def\c@lor@error#1{% + \@latex@error{Undefined color #1}\@ehd} +\DeclareOption{monochrome}{% + \def\c@lor@error#1{\PackageInfo{color}{Undefined color #1}}% + \AtEndOfPackage{% + \colors@false + \def\set@color{% + \c@lor@special\m@ne + {color push \current@color}\aftergroup\reset@color}% + \def\reset@color{\c@lor@special\m@ne{color pop}}% + \def\set@page@color{% + \c@lor@special\m@ne{background \current@color}}% + \def\define@color#1#2{% + \c@lor@special\m@ne{define #1 #2}}}} +\DeclareOption{debugshow}{\catcode`\^^A=9 \let\GDebug\typeout} +\newif\ifGin@setpagesize\Gin@setpagesizetrue +\DeclareOption{setpagesize}{\Gin@setpagesizetrue} +\DeclareOption{nosetpagesize}{\Gin@setpagesizefalse} +\DeclareOption{dvips}{\def\Gin@driver{dvips.def}% + \def\c@lor@namefile{dvipsnam.def}} +\DeclareOption{xdvi}{\ExecuteOptions{dvips,monochrome}} +\DeclareOption{dvipdf}{\def\Gin@driver{dvipdf.def}} +\DeclareOption{dvipdfm}{\def\Gin@driver{dvipdfmx.def}} +\DeclareOption{dvipdfmx}{\def\Gin@driver{dvipdfmx.def}} +\DeclareOption{pdftex}{\def\Gin@driver{pdftex.def}} +\DeclareOption{luatex}{\def\Gin@driver{luatex.def}} +\DeclareOption{dvisvgm}{\def\Gin@driver{dvisvgm.def}} +\DeclareOption{xetex}{\def\Gin@driver{xetex.def}} +\DeclareOption{dvipsone}{\def\Gin@driver{dvipsone.def}} +\DeclareOption{dviwindo}{\ExecuteOptions{dvipsone}} +\DeclareOption{emtex}{\def\Gin@driver{emtex.def}} +\DeclareOption{dviwin}{\def\Gin@driver{dviwin.def}} +\DeclareOption{oztex}{\ExecuteOptions{dvips}} +\DeclareOption{textures}{\def\Gin@driver{textures.def}} +\DeclareOption{pctexps}{\def\Gin@driver{pctexps.def}} +\DeclareOption{pctexwin}{\def\Gin@driver{pctexwin.def}} +\DeclareOption{pctexhp}{\def\Gin@driver{pctexhp.def}} +\DeclareOption{pctex32}{\def\Gin@driver{pctex32.def}} +\DeclareOption{truetex}{\def\Gin@driver{truetex.def}} +\DeclareOption{tcidvi}{\def\Gin@driver{tcidvi.def}} +\DeclareOption{vtex}{\def\Gin@driver{vtex.def}} +\DeclareOption{dvipsnames}{\def\c@lor@namefile{dvipsnam.def}} +\DeclareOption{nodvipsnames}{\let\c@lor@namefile\relax} +\let\c@lor@usename\@gobble +\DeclareOption{usenames}{% + \def\c@lor@usename#1{% + \expandafter\color@named\csname\@backslashchar color@#1\endcsname{#1}}} +\DeclareRobustCommand\color{% + \@ifnextchar[\@undeclaredcolor\@declaredcolor} +\def\@undeclaredcolor[#1]#2{% + \@ifundefined{color@#1}% + {\c@lor@error{model `#1'}}% + {\csname color@#1\endcsname\current@color{#2}% + \set@color}% + \ignorespaces} +\def\@declaredcolor#1{% + \@ifundefined{\@backslashchar color@#1}% + {\c@lor@error{`#1'}}% + {\expandafter\let\expandafter\current@color + \csname\@backslashchar color@#1\endcsname + \set@color}% + \ignorespaces} +\protected\def\textcolor#1#{\@textcolor{#1}} +\def\@textcolor#1#2#3{\protect\leavevmode{\color#1{#2}#3}} +\protected\def\pagecolor{% + \begingroup + \let\ignorespaces\endgroup + \let\set@color\set@page@color + \color} +\protected\def\nopagecolor{% + \@ifundefined{no@page@color}{% + \PackageInfo{color}{\@backslashchar nopagecolor\space is not supported}% + }{% + \no@page@color + }% +} +\protected\def\definecolor#1#2#3{% + \@ifundefined{color@#2}% + {\c@lor@error{model `#2'}}% + {\@ifundefined{\@backslashchar color@#1}{}% + {\PackageInfo{color}{Redefining color #1}}% + \csname color@#2\expandafter\endcsname + \csname\@backslashchar color@#1\endcsname{#3}}% + \@expl@color@set@@nnn{#1}{#2}{#3}% + } +\protected\def\DefineNamedColor#1#2#3#4{% + \@ifundefined{define@color@#1}% + {\c@lor@error{model `#1'}}% + {\@ifundefined{color@#3}% + {\c@lor@error{model `#3'}}% + {\@ifundefined{col@#2}{}% + {\PackageInfo{color}{Redefining color #2 in named color model}}% + \csname color@#3\endcsname\@tempa{#4}% + \@expl@color@set@@nnn{#2}{#3}{#4}% + \csname define@color@#1\endcsname{#2}\@tempa + \c@lor@usename{#2}}}} +\@onlypreamble\DefineNamedColor +\protected\def\@expl@color@set@@nnn#1#2#3{} +\ExplSyntaxOn +\cs_set_protected:Npn \@expl@color@set@@nnn #1 #2 #3 + { + \str_if_eq:nnTF {#2}{named} + { + \color_set:nn {#1}{#3} + } + { + \color_set:nnn {#1}{#2}{#3} + } + } +\ExplSyntaxOff +\newif\ifcolors@ +\colors@true +\def\c@lor@special#1#2{% + \edef\@tempa{\write#1{#2}}\@tempa} +\InputIfFileExists{color.cfg}{}{} +\ProcessOptions +\if!\Gin@driver! + \PackageError{color} + {No driver specified} + {You should make a default driver option in a file \MessageBreak + color.cfg\MessageBreak + eg: \protect\ExecuteOptions{dvips}% + } +\else + \PackageInfo{color}{Driver file: \Gin@driver} + \@ifundefined{ver@\Gin@driver}{\input{\Gin@driver}}{} +\fi +\@ifundefined{c@lor@namefile}{}{\input{\c@lor@namefile}} +\protected\def\normalcolor{\let\current@color\default@color\set@color} +\AtBeginDocument{\let\default@color\current@color} +\def\color@block#1#2#3{% + {\set@color\rlap{\ifcolors@\vrule\@width#1\@height#2\@depth#3\fi}}} +\protected\def\colorbox#1#{\color@box{#1}} +\def\color@box#1#2{\color@b@x\relax{\color#1{#2}}} +\protected\def\fcolorbox#1#{\color@fbox{#1}} +\def\color@fbox#1#2#3{% + \color@b@x{\fboxsep\z@\color#1{#2}\fbox}{\color#1{#3}}} + +\long\def\color@b@x#1#2#3{% + \leavevmode + \setbox\z@\hbox{\kern\fboxsep{\set@color#3}\kern\fboxsep}% + \dimen@\ht\z@\advance\dimen@\fboxsep\ht\z@\dimen@ + \dimen@\dp\z@\advance\dimen@\fboxsep\dp\z@\dimen@ + {#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}% + \box\z@}}} +\InputIfFileExists{mathcolor.ltx}{}{} +\def\color@setgroup{\begingroup\set@color} +\let\color@begingroup\begingroup +\def\color@endgroup{\endgraf\endgroup} +\def\color@hbox{\hbox\bgroup\color@begingroup} +\def\color@vbox{\vbox\bgroup\color@begingroup} +\def\color@endbox{\color@endgroup\egroup} +\ifx\color@gray\@undefined + \ifx\color@rgb\@undefined + \else + \definecolor{black}{rgb}{0,0,0} + \definecolor{white}{rgb}{1,1,1} + \fi +\else + \definecolor{black}{gray}{0} + \definecolor{white}{gray}{1} +\fi +\ifx\color@rgb\@undefined\else + \definecolor{red}{rgb}{1,0,0} + \definecolor{green}{rgb}{0,1,0} + \definecolor{blue}{rgb}{0,0,1} +\fi +\ifx\color@cmyk\@undefined\else + \definecolor{cyan}{cmyk}{1,0,0,0} + \definecolor{magenta}{cmyk}{0,1,0,0} + \definecolor{yellow}{cmyk}{0,0,1,0} +\fi +\Gin@codes +\let\Gin@codes\relax +\endinput +%% +%% End of file `color.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty new file mode 100644 index 000000000..666d4d028 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty @@ -0,0 +1,85 @@ +%% This is file `hyperxmp-patches-tmp-ltx.sty" +% Copyright (C) 2019-2021 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% This file is part of the "pdfmanagement bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/pdfresources +% +% for those people who are interested. +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2022-08-24}{0.95r} + {temporay patches to for the colorspace package to test pdfresource management ... UF} + +\hook_gput_code:nnn {begindocument} {pdf} + { + \tl_if_exist:NT \spc@op + { + \def\spc@Pageresources#1{} + } + + } + +\hook_gput_code:nnn {begindocument/end} {pdf} + { + \tl_if_exist:NT \spc@op + { + \pdf_object_new:nn {__spc_extgstate_op_false}{dict} + \pdf_object_write:nn + {__spc_extgstate_op_false} + {/Type /ExtGState~/op~false~/OP~false} + \pdfmanagement_add:nnn + {Page/Resources/ExtGState} + {SPCko} + {\pdf_object_ref:n {__spc_extgstate_op_false}} + \pdf_object_new:nn {__spc_extgstate_op_true0}{dict} + \pdf_object_write:nn + {__spc_extgstate_op_true0} + {/Type /ExtGState~/op~true~/OP~true~/OPM~0}% + \pdfmanagement_add:nnn + {Page/Resources/ExtGState} + {SPCmz} + {\pdf_object_ref:n {__spc_extgstate_op_true0}} + \pdf_object_new:nn {__spc_extgstate_op_true1}{dict} + \pdf_object_write:nn + {__spc_extgstate_op_true1} + {/Type /ExtGState~/op~true~/OP~true~/OPM~1}% + \pdfmanagement_add:nnn + {Page/Resources/ExtGState} + {SPCop} + {\pdf_object_ref:n {__spc_extgstate_op_true1}} + } + } + +\RemoveFromHook{begindocument}[colorspace] + +\hook_gput_code:nnn {enddocument} {pdf} + { + \def\spc@elt#1#2 + { + \str_set_eq:Nc\l_tmpa_str {spc@ir@#2} + \seq_set_split:NnV \l_tmpa_seq {~}\l_tmpa_str + \seq_get_left:NN\l_tmpa_seq\l_tmpa_str + %remove spaces + \exp_args:NNx + \str_replace_all:Nnn\l_tmpa_str {\c_hash_str20}{~} + %remove slash + \str_set:Nx\l_tmpa_str{\str_tail:N\l_tmpa_str} + \pdfmanagement_add:nex + {Page/Resources/ColorSpace}{\l_tmpa_str}{\seq_item:Nn\l_tmpa_seq{2}~0~R} + } + \spc@csall + } + +\endinput diff --git a/texmf/tex/latex/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty new file mode 100644 index 000000000..4f52820ad --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty @@ -0,0 +1,3888 @@ +%% +%% This is file `fontspec-luatex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fontspec.dtx (with options: `fontspec,LU') +%% fontspec-code-load.dtx (with options: `fontspec,LU') +%% fontspec-code-vars.dtx (with options: `fontspec,LU') +%% fontspec-code-msg.dtx (with options: `fontspec,LU') +%% fontspec-code-opening.dtx (with options: `fontspec,LU') +%% fontspec-code-fontload.dtx (with options: `fontspec,LU') +%% fontspec-code-interfaces.dtx (with options: `fontspec,LU') +%% fontspec-code-user.dtx (with options: `fontspec,LU') +%% fontspec-code-api.dtx (with options: `fontspec,LU') +%% fontspec-code-internal.dtx (with options: `fontspec,LU') +%% fontspec-code-opentype.dtx (with options: `fontspec,LU') +%% fontspec-code-graphite.dtx (with options: `fontspec,LU') +%% fontspec-code-keyval.dtx (with options: `fontspec,LU') +%% fontspec-code-feat-opentype.dtx (with options: `fontspec,LU') +%% fontspec-code-scripts.dtx (with options: `fontspec,LU') +%% fontspec-code-lang.dtx (with options: `fontspec,LU') +%% fontspec-code-feat-aat.dtx (with options: `fontspec,LU') +%% fontspec-code-enc.dtx (with options: `fontspec,LU') +%% fontspec-code-math.dtx (with options: `fontspec,LU') +%% fontspec-code-closing.dtx (with options: `fontspec,LU') +%% fontspec-code-xfss.dtx (with options: `fontspec,LU') +%% ------------------------------------------------ +%% The FONTSPEC package +%% ------------------------------------------------ +%% Copyright 2004-2017 Will Robertson, LPPL "maintainer" +%% Copyright 2009-2013 Khaled Hosny +%% ------------------------------------------------ +%% This package is free software and may be redistributed and/or modified under +%% the conditions of the LaTeX Project Public License, version 1.3c or higher +%% (your choice): . +%% ------------------------------------------------ +%%^^A%% fontspec.dtx -- part of FONTSPEC +%%^^A%% Metadata for the package, including files and versioning + +\RequirePackage{xparse} +\ProvidesExplPackage{fontspec-luatex-tmp-ltx}% + {2022/01/15}{2022-08-24}{0.95r} + +%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC +%%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC +\bool_new:N \l__fontspec_firsttime_bool +\bool_new:N \l__fontspec_nobf_bool +\bool_new:N \l__fontspec_noit_bool +\bool_new:N \l__fontspec_nosc_bool +\bool_new:N \l__fontspec_check_bool +\bool_new:N \l__fontspec_tfm_bool +\bool_new:N \l__fontspec_atsui_bool +\bool_new:N \l__fontspec_ot_bool +\bool_new:N \l__fontspec_mm_bool +\bool_new:N \l__fontspec_harfbuzz_bool +\bool_new:N \l__fontspec_graphite_bool +\bool_new:N \l__fontspec_fontcfg_bool +\bool_set_true:N \l__fontspec_fontcfg_bool +\bool_new:N \g__fontspec_math_euler_bool +\bool_new:N \g__fontspec_math_lucida_bool +\bool_new:N \g__fontspec_pkg_euler_loaded_bool +\bool_new:N \g__fontspec_cfg_bool +\bool_new:N \g__fontspec_math_bool +\bool_new:N \g__fontspec_euenc_bool +\bool_new:N \l__fontspec_tmpa_bool +\bool_new:N \l__fontspec_disable_defaults_bool +\bool_new:N \l__fontspec_alias_bool +\bool_new:N \l__fontspec_external_bool +\bool_new:N \l__fontspec_defining_encoding_bool +\bool_new:N \l__fontspec_scriptlang_exist_bool +\bool_new:N \g__fontspec_em_normalise_slant_bool +\bool_new:N \l__fontspec_proceed_bool +\bool_new:N \l__fontspec_never_check_bool +\int_new:N \l__fontspec_script_int +\int_new:N \l__fontspec_language_int +\int_new:N \l__fontspec_strnum_int +\int_new:N \l__fontspec_tmp_int +\int_new:N \l__fontspec_tmpa_int +\int_new:N \l__fontspec_tmpb_int +\int_new:N \l__fontspec_tmpc_int +\int_new:N \l__fontspec_em_int +\int_new:N \l__fontspec_emdef_int +\int_new:N \l__fontspec_strong_int +\int_new:N \l__fontspec_strongdef_int +\fp_new:N \l__fontspec_tmpa_fp +\fp_new:N \l__fontspec_tmpb_fp +\dim_new:N \l__fontspec_tmpa_dim +\dim_new:N \l__fontspec_tmpb_dim +\dim_new:N \l__fontspec_tmpc_dim +\seq_new:N \l__fontspec_bf_series_seq +\clist_new:N \g__fontspec_default_fontopts_clist +\clist_new:N \g__fontspec_all_keyval_modules_clist +\clist_new:N \l__fontspec_sizefeat_clist +\clist_set:Nn \l__fontspec_sizefeat_clist {Size={-}} +\clist_new:N \l__fontspec_extensions_clist +\clist_new:N \l__fontspec_fontopts_clist +\clist_new:N \l__fontspec_family_fontopts_clist +\clist_new:N \l__fontspec_all_features_clist +\clist_new:N \l__fontspec_leftover_clist +\clist_new:N \l__fontspec_keys_leftover_clist +\clist_new:N \l__fontspec_sizing_leftover_clist +\clist_new:N \l__fontspec_fontfeat_clist +\clist_new:N \l__fontspec_fontfeat_curr_clist +\clist_new:N \l__fontspec_arg_clist +\clist_new:N \l__fontspec_this_feat_clist +\clist_new:N \l__fontspec_fontfeat_up_clist +\clist_new:N \l__fontspec_fontfeat_bf_clist +\clist_new:N \l__fontspec_fontfeat_it_clist +\clist_new:N \l__fontspec_fontfeat_bfit_clist +\clist_new:N \l__fontspec_fontfeat_sl_clist +\clist_new:N \l__fontspec_fontfeat_bfsl_clist +\clist_new:N \l__fontspec_fontfeat_sw_clist +\clist_new:N \l__fontspec_fontfeat_bfsw_clist +\clist_new:N \l__fontspec_fontfeat_sc_clist +\prop_new:N \g__fontspec_fontopts_prop +\prop_new:N \l__fontspec_nfss_prop +\prop_new:N \l__fontspec_nfssfont_prop +\prop_new:N \g__fontspec_OT_features_prop +\prop_new:N \g__fontspec_all_opentype_feature_names_prop +\prop_new:N \g__fontspec_em_prop +\prop_new:N \g__fontspec_strong_prop +\prop_new:N \g__fontspec_fontid_family_prop +\prop_new:N \g__fontspec_family_int_prop +\tl_new:N \l_fontspec_family_tl +\tl_new:N \g_fontspec_encoding_tl +\tl_new:N \l_fontspec_fontname_tl +\tl_clear_new:N \UTFencname +\tl_clear_new:N \cyrillicencoding +\tl_clear_new:N \latinencoding +\tl_new:N \l__fontspec_renderer_tl +\tl_new:N \l__fontspec_mode_tl +\tl_new:N \l__fontspec_shaper_tl +\tl_new:N \g__fontspec_defined_shapes_tl +\tl_new:N \g__fontspec_single_feat_tl +\tl_new:N \l__fontspec_basename_tl +\tl_new:N \g__fontspec_curr_series_tl +\tl_new:N \l__fontspec_curr_fontname_tl +\tl_new:N \l__fontspec_curr_bfname_tl +\tl_new:N \l__fontspec_ext_filename_tl +\tl_new:N \l__fontspec_extension_tl +\tl_new:N \l__fontspec_font_path_tl +\tl_new:N \l__fontspec_fontid_tl +\tl_new:N \l__fontspec_fontname_tl +\tl_new:N \l__fontspec_options_tl +\tl_new:N \l__fontspec_saved_fontname_tl +\tl_new:N \l__fontspec_prev_unicode_name_tl +\tl_new:N \g__fontspec_nfss_enc_tl +\tl_new:N \g__fontspec_nfss_family_tl +\tl_new:N \l__fontspec_nfss_sc_tl +\tl_new:N \l__fontspec_nfss_tl +\tl_new:N \l__fontspec_nfss_fam_tl +\tl_new:N \l__fontspec_size_tl +\tl_new:N \l__fontspec_sizedfont_tl +\tl_new:N \l__fontspec_this_font_tl +\tl_new:N \l__fontspec_ttc_index_tl +\tl_new:N \l__fontspec_smcp_shape_tl +\tl_new:N \l__fontspec_emshape_query_tl +\tl_new:N \l__fontspec_em_switch_tl +\tl_new:N \l__fontspec_strong_switch_tl +\tl_new:N \l__fontspec_tmp_tl +\tl_new:N \l__fontspec_tmpa_tl +\tl_new:N \l__fontspec_tmpb_tl +\tl_new:N \l__fontspec_em_tmp_tl +\tl_new:N \l__fontspec_strong_tmp_tl +\tl_new:N \g__fontspec_mathrm_tl +\tl_new:N \g__fontspec_bfmathrm_tl +\tl_new:N \g__fontspec_mathsf_tl +\tl_new:N \g__fontspec_mathtt_tl +\tl_gset:Nn \g__fontspec_mathrm_tl {\rmdefault} +\tl_gset:Nn \g__fontspec_mathsf_tl {\sfdefault} +\tl_gset:Nn \g__fontspec_mathtt_tl {\ttdefault} +\tl_new:N \l__fontspec_family_label_tl +\tl_new:N \l__fontspec_fake_slant_tl +\tl_new:N \l__fontspec_fake_embolden_tl +\tl_new:N \l__fontspec_fontname_up_tl +\tl_new:N \l__fontspec_fontname_bf_tl +\tl_new:N \l__fontspec_fontname_it_tl +\tl_new:N \l__fontspec_fontname_bfit_tl +\tl_new:N \l__fontspec_fontname_sl_tl +\tl_new:N \l__fontspec_fontname_bfsl_tl +\tl_new:N \l__fontspec_fontname_sw_tl +\tl_new:N \l__fontspec_fontname_bfsw_tl +\tl_new:N \l__fontspec_fontname_sc_tl +\tl_new:N \l__fontspec_script_tl +\tl_new:N \l__fontspec_script_name_tl +\tl_set:Nn \l__fontspec_script_name_tl {CustomDefault} +\tl_new:N \l__fontspec_lang_tl +\tl_new:N \l__fontspec_lang_name_tl +\tl_set:Nn \l__fontspec_lang_name_tl {Default} +\tl_new:N \l__fontspec_scale_tl +\tl_new:N \l__fontspec_hyphenchar_tl +\tl_new:N \l__fontspec_hexcol_tl +\tl_new:N \l__fontspec_opacity_tl +\tl_new:N \l__fontspec_optical_size_tl +\tl_new:N \l__fontspec_mapping_tl +\tl_new:N \l__fontspec_punctspace_adjust_tl +\tl_new:N \l__fontspec_wordspace_adjust_tl +\tl_new:N \l__fontspec_postadjust_tl +\tl_const:Nn \c__fontspec_hexcol_tl {000000} + \tl_const:Nn \c__fontspec_opacity_tl {} +\tl_const:Nn \c__fontspec_postadjust_tl { \l__fontspec_wordspace_adjust_tl \l__fontspec_punctspace_adjust_tl } +\tl_new:N \g__fontspec_rawfeatures_sclist +\tl_new:N \l__fontspec_pre_feat_sclist +\tl_new:N \l__fontspec_rmfamily_family_tl +\tl_new:N \l__fontspec_sffamily_family_tl +\tl_new:N \l__fontspec_ttfamily_family_tl +\tl_new:N \l__fontspec_rmfamily_encoding_tl +\tl_new:N \l__fontspec_sffamily_encoding_tl +\tl_new:N \l__fontspec_ttfamily_encoding_tl + +%%^^A%% fontspec-code-msg.dtx -- part of FONTSPEC +\cs_new:Npn \__fontspec_error:n { \msg_error:nn {fontspec} } +\cs_new:Npn \__fontspec_error:nn { \msg_error:nnn {fontspec} } +\cs_new:Npn \__fontspec_error:nx { \msg_error:nnx {fontspec} } +\cs_new:Npn \__fontspec_error:nxx { \msg_error:nnxx {fontspec} } +\cs_new:Npn \__fontspec_warning:n { \msg_warning:nn {fontspec} } +\cs_new:Npn \__fontspec_warning:nx { \msg_warning:nnx {fontspec} } +\cs_new:Npn \__fontspec_warning:nxx { \msg_warning:nnxx {fontspec} } +\cs_new:Npn \__fontspec_info:n { \msg_info:nn {fontspec} } +\cs_new:Npn \__fontspec_info:nx { \msg_info:nnx {fontspec} } +\cs_new:Npn \__fontspec_info:nxx { \msg_info:nnxx {fontspec} } +\cs_new:Npn \__fontspec_trace:n { \msg_trace:nn {fontspec} } +\cs_generate_variant:Nn \msg_new:nnn {nnx} +\cs_generate_variant:Nn \msg_new:nnnn {nnxx} +\cs_new:Nn \__fontspec_msg_new:nn + { \msg_new:nnx {fontspec} {#1} { \tl_trim_spaces:n {#2} } } +\cs_new:Nn \__fontspec_msg_new:nnn + { \msg_new:nnxx {fontspec} {#1} { \tl_trim_spaces:n {#2} } { \tl_trim_spaces:n {#3} } } +\char_set_catcode_space:n {32} +\__fontspec_msg_new:nn {only-inside-encdef} + { + \exp_not:N #1 can only be used in the second argument + to \string\DeclareUnicodeEncoding. + } +\__fontspec_msg_new:nn {no-size-info} + { + Size information must be supplied.\\ + For example, SizeFeatures={Size={8-12},...}. + } +\__fontspec_msg_new:nnn {font-not-found} + { + The font "#1" cannot be found. + } + { + A font might not be found for many reasons.\\ + Check the spelling, where the font is installed etc. etc.\\\\ + When in doubt, ask someone for help! + } +\__fontspec_msg_new:nnn {rename-feature-not-exist} + { + The feature #1 doesn't appear to be defined. + } + { + It looks like you're trying to rename a feature that doesn't exist. + } +\__fontspec_msg_new:nn {no-glyph} + { + '#1' does not contain glyph #2. + } +\__fontspec_msg_new:nnn {euler-too-late} + { + The euler package must be loaded BEFORE fontspec. + } + { + fontspec only overwrites euler's attempt to + define the maths text fonts if fontspec is + loaded after euler. Type to proceed + with incorrect \string\mathit, \string\mathbf, etc. + } +\__fontspec_msg_new:nnn {no-xcolor} + { + Cannot load named colours without the xcolor package. + } + { + Sorry, I can't do anything to help. Instead of loading + the color package, use xcolor instead. + } +\__fontspec_msg_new:nnn {unknown-color-model} + { + Error loading colour `#1'; unknown colour model. + } + { + Sorry, I can't do anything to help. Please report this error + to my developer with a minimal example that causes the problem. + } +\__fontspec_msg_new:nnn {not-in-addfontfeatures} + { + The "#1" font feature cannot be used in \string\addfontfeatures. + } + { + This is due to how TeX loads fonts; such settings + are global so adding them mid-document within a group causes + confusion. You'll need to define multiple font families to achieve + what you want. + } +\__fontspec_msg_new:nn {tu-clash} + { + I have found the tuenc.def encoding definition file but the TU encoding is not + defined by the LaTeX2e kernel; attempting to correct but you really should update + to the latest version of LaTeX2e. + } +\__fontspec_msg_new:nn {tu-missing} + { + The TU encoding seems to be missing; please update to the latest version of LaTeX2e. + } +\__fontspec_msg_new:nn {addfontfeatures-ignored} + { + \string\addfontfeature (s) ignored \msg_line_context:; + it cannot be used with a font that wasn't selected by a fontspec command.\\ + \\ + The current font is "\use:c{font@name}".\\ + \int_compare:nTF { \clist_count:n {#1} = 1 } + { The requested feature is "#1". } + { The requested features are "#1". } + } +\__fontspec_msg_new:nn {feature-option-overwrite} + { + Option '#2' of font feature '#1' overwritten. + } +\__fontspec_msg_new:nn {ot-tag-too-long} + { + OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer. + } +\__fontspec_msg_new:nn {aat-feature-not-exist} + { + '\l_keys_key_tl=\l_keys_value_tl' feature not supported + for AAT font '\l_fontspec_fontname_tl'. + } +\__fontspec_msg_new:nn {aat-feature-not-exist-in-font} + { + AAT feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available + in font '\l_fontspec_fontname_tl'. + } +\__fontspec_msg_new:nn {icu-feature-not-exist} + { + '\l_keys_key_tl=\l_keys_value_tl' feature not supported + for OpenType font '\l_fontspec_fontname_tl' + } +\__fontspec_msg_new:nn {icu-feature-not-exist-in-font} + { + OpenType feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available + for font '\l_fontspec_fontname_tl' + with script '\l__fontspec_script_name_tl' and language '\l__fontspec_lang_name_tl'. + } +\__fontspec_msg_new:nn {no-opticals} + { + '#1' doesn't appear to have an Optical Size axis. + } +\__fontspec_msg_new:nn {language-not-exist} + { + Language '#1' not available + for font '\l_fontspec_fontname_tl' + with script '\l__fontspec_script_name_tl'. + } +\__fontspec_msg_new:nn {only-xetex-feature} + { + Ignored XeTeX-only feature: '#1'. + } +\__fontspec_msg_new:nn {only-luatex-feature} + { + Ignored LuaTeX-only feature: '#1'. + } +\__fontspec_msg_new:nn {unknown-renderer} + { + Renderer '#1' unknown. Assuming Harfbuzz with 'shaper=#1'. + Please raise a fontspec issue to add this shaper to the interface. + } +\__fontspec_msg_new:nn {no-mapping} + { + Input mapping not supported in LuaTeX. + } +\__fontspec_msg_new:nn {no-mapping-ligtex} + { + Input mapping not supported in LuaTeX.\\ + Use "Ligatures=TeX" instead of "Mapping=tex-text". + } +\__fontspec_msg_new:nn {cm-default-obsolete} + { + The "cm-default" package option is obsolete. + } +\__fontspec_msg_new:nn {font-index-needs-ttc} + { + The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\ + Feature ignored. + } +\__fontspec_msg_new:nn {feat-cannot-remove} + { + The "#1" feature cannot be deactivated. Request ignored. + } +\__fontspec_msg_new:nn {defining-font} + { + Font family '\g__fontspec_nfss_family_tl' created for font '#2' + with options [\l__fontspec_all_features_clist].\\ + \\ + This font family consists of the following NFSS series/shapes:\\ + \g__fontspec_defined_shapes_tl + } +\__fontspec_msg_new:nn {no-font-shape} + { + Could not resolve font "#1" (it probably doesn't exist). + } +\__fontspec_msg_new:nn {set-scale} + { + \l_fontspec_fontname_tl\space scale = \l__fontspec_scale_tl. + } +\__fontspec_msg_new:nn {setup-math} + { + Adjusting the maths setup (use [no-math] to avoid this). + } +\__fontspec_msg_new:nn {no-script} + { + Font "#1" does not contain requested Script "#2". + } +\__fontspec_msg_new:nn {opa-twice} + { + Opacity set twice, in both Colour and Opacity.\\ + Using specification "Opacity=#1". + } +\__fontspec_msg_new:nn {opa-twice-col} + { + Opacity set twice, in both Opacity and Colour.\\ + Using an opacity specification in hex of "#1/FF". + } +\__fontspec_msg_new:nn {bad-colour} + { + Bad colour declaration "#1". + Colour must be one of:\\ + * a named xcolor colour\\ + * a six-digit hex colour RRGGBB\\ + * an eight-digit hex colour RRGGBBTT with opacity + } +\char_set_catcode_ignore:n {32} + +%%^^A%% fontspec-code-opening.dtx -- part of FONTSPEC +\DeclareOption{cm-default} + { + \__fontspec_warning:n {cm-default-obsolete} + } +\DeclareOption {math} { \bool_gset_true:N \g__fontspec_math_bool } +\DeclareOption {no-math} { \bool_gset_false:N \g__fontspec_math_bool } +\DeclareOption {config} { \bool_gset_true:N \g__fontspec_cfg_bool } +\DeclareOption {no-config}{ \bool_gset_false:N \g__fontspec_cfg_bool } +\DeclareOption {euenc} { \bool_gset_true:N \g__fontspec_euenc_bool } +\DeclareOption {tuenc} { \bool_gset_false:N \g__fontspec_euenc_bool } +\DeclareOption {quiet} + { + \msg_redirect_module:nnn { fontspec } { warning } { info } + \msg_redirect_module:nnn { fontspec } { info } { none } + } +\DeclareOption{silent} + { + \msg_redirect_module:nnn { fontspec } { warning } { none } + \msg_redirect_module:nnn { fontspec } { info } { none } + } +\ExecuteOptions{config,math,tuenc} +\ProcessOptions* +\bool_if:NF \g__fontspec_euenc_bool + { + \file_if_exist:nTF {tuenc.def} + { + \cs_if_exist:cF {T@TU} + { + \__fontspec_warning:n {tu-clash} + \DeclareFontEncoding{TU}{}{} + \DeclareFontSubstitution{TU}{lmr}{m}{n} + } + } + { + \__fontspec_warning:n {tu-missing} + \bool_gset_true:N \g__fontspec_euenc_bool + } + } +\bool_if:NTF \g__fontspec_euenc_bool + { + \tl_gset:Nn \g_fontspec_encoding_tl {EU2} + } + { \tl_gset:Nn \g_fontspec_encoding_tl { TU } } +\tl_set:Nn \rmdefault {lmr} +\tl_set:Nn \sfdefault {lmss} +\tl_set:Nn \ttdefault {lmtt} +\RequirePackage[\g_fontspec_encoding_tl]{fontenc} +\tl_set_eq:NN \UTFencname \g_fontspec_encoding_tl % for xunicode if needed +\tl_if_in:NnT \@filelist {.cls} { \normalsize } +\tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl +\tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl +\AtBeginDocument + { + \tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl + \tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl + } +\bool_if:NT \g__fontspec_euenc_bool + { + \cs_set_eq:NN \fontspec_tmp: \XeTeXpicfile + \cs_set:Npn \XeTeXpicfile {} + \RequirePackage{xunicode} + \cs_set_eq:NN \XeTeXpicfile \fontspec_tmp: + } +\cs_new:Npn \FontspecSetCheckBoolTrue { \bool_set_true:N \l__fontspec_check_bool } +\cs_new:Npn \FontspecSetCheckBoolFalse { \bool_set_false:N \l__fontspec_check_bool } +\cs_new:Nn \__fontspec_keys_set_known:nnN + { + \keys_set_known:nnN {#1} {#2} #3 + } +\cs_generate_variant:Nn \__fontspec_keys_set_known:nnN {nx} +\cs_new:Nn \__fontspec_int_mult_truncate:Nn + { + \int_set:Nn #1 { \__dim_eval:w #2 #1 \__dim_eval_end: } + } +\cs_set:Npn \__fontspec_lua_function:ne #1#2 { \lua_now:e { fontspec.#1 ("#2") } } +\cs_set:Npn \__fontspec_lua_function:nee #1#2#3 { \lua_now:e { fontspec.#1 ("#2","#3") } } +\cs_set:Npn \__fontspec_lua_function:neee #1#2#3#4 { \lua_now:e { fontspec.#1 ("#2","#3","#4") } } +\cs_set:Npn \__fontspec_lua_function:neeee #1#2#3#4#5 { \lua_now:e { fontspec.#1 ("#2","#3","#4","#5") } } +\cs_generate_variant:Nn \int_set:Nn {Nv} +\cs_generate_variant:Nn \keys_set:nn {nx} +\cs_generate_variant:Nn \keys_set_known:nnN {nx} +\cs_generate_variant:Nn \prop_put:Nnn {Nxx} +\cs_generate_variant:Nn \prop_put:Nnn {NxV} +\cs_generate_variant:Nn \prop_gput_if_new:Nnn {NxV} +\cs_generate_variant:Nn \prop_gput:Nnn {Nxn} +\cs_generate_variant:Nn \prop_get:NnNT {NxN} +\cs_generate_variant:Nn \prop_get:NnNTF {NxN} +\cs_generate_variant:Nn \str_if_eq:nnTF {nv} +\cs_generate_variant:Nn \tl_if_empty_p:n {e} +\cs_generate_variant:Nn \tl_if_empty:nTF {x} +\cs_generate_variant:Nn \tl_if_empty:nF {x} +\cs_generate_variant:Nn \tl_if_empty:nF {f} +\cs_generate_variant:Nn \tl_if_eq:nnT {ox} +\cs_generate_variant:Nn \tl_replace_all:Nnn {Nnx} + +%%^^A%% fontspec-code-fontload.dtx -- part of FONTSPEC + +\cs_set:Npn \__fontspec_primitive_font_set:Nnn #1#2#3 + { + \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop: + } +\cs_set:Npn \__fontspec_primitive_font_gset:Nnn #1#2#3 + { + \global \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop: + } +\cs_set:Npn \__fontspec_font_suppress_not_found_error: + { + \int_set:Nn \suppressfontnotfounderror {1} + } +\prg_set_conditional:Nnn \__fontspec_primitive_font_if_null:N {p,TF,T,F} + { + \ifx #1 \nullfont + \prg_return_true: + \else + \prg_return_false: + \fi + } +\prg_set_conditional:Nnn \__fontspec_primitive_font_set:Nnn {TF,T,F} + { + \__fontspec_primitive_font_set:Nnn #1 {#2} {#3} + \__fontspec_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:} + } +\prg_set_conditional:Nnn \__fontspec_primitive_font_gset:Nnn {TF,T,F} + { + \__fontspec_primitive_font_gset:Nnn #1 {#2} {#3} + \__fontspec_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:} + } +\cs_set:Npn \__fontspec_primitive_font_set:Onn { \exp_last_unbraced:No \__fontspec_primitive_font_set:Nnn } +\cs_set:Npn \__fontspec_primitive_font_set:OnnF { \exp_last_unbraced:No \__fontspec_primitive_font_set:NnnF } +\cs_set:Npn \__fontspec_primitive_font_gset:Onn { \exp_last_unbraced:No \__fontspec_primitive_font_gset:Nnn } +\cs_set:Npn \__fontspec_primitive_font_gset:OnnF { \exp_last_unbraced:No \__fontspec_primitive_font_gset:NnnF } +\prg_set_conditional:Nnn \__fontspec_primitive_font_if_exist:n {TF,T,F} + { + \group_begin: + \__fontspec_font_suppress_not_found_error: + \__fontspec_primitive_font_set:Nnn \l__fontspec_primitive_font {#1} { \f@size pt - 1sp } + \__fontspec_primitive_font_if_null:NTF \l__fontspec_primitive_font + { \group_end: \prg_return_false: } + { \group_end: \prg_return_true: } + } +\prg_new_conditional:Nnn \__fontspec_primitive_font_glyph_if_exist:Nn {p,TF,T,F} + { + \tex_iffontchar:D #1 #2 \scan_stop: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new:Nn \__fontspec_primitive_font_set_hyphenchar:Nn + { + \tex_hyphenchar:D #1 = #2 \scan_stop: + } +\cs_new_eq:NN \__fontspec_primitive_font_get_name:N \fontname +\cs_new:Npn \__fontspec_primitive_font_current_name: + { + \__fontspec_primitive_font_get_name:N \tex_font:D + } + +%%^^A%% fontspec-code-interfaces.dtx -- part of FONTSPEC + +\NewDocumentCommand \fontspec { O{} m O{} } + { + \__fontspec_main_fontspec:nn {#1,#3} {#2} + \ignorespaces + } +\NewDocumentCommand \setmainfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + \ignorespaces + } +\NewDocumentCommand \setsansfont { O{} m O{} } + { + \__fontspec_main_setsansfont:nn {#1,#3} {#2} + \ignorespaces + } +\NewDocumentCommand \setmonofont { O{} m O{} } + { + \__fontspec_main_setmonofont:nn {#1,#3} {#2} + \ignorespaces + } +\NewDocumentCommand \setmathrm { O{} m O{} } + { + \__fontspec_main_setmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setboldmathrm { O{} m O{} } + { + \__fontspec_main_setboldmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathsf { O{} m O{} } + { + \__fontspec_main_setmathsf:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathtt { O{} m O{} } + { + \__fontspec_main_setmathtt:nn {#1,#3} {#2} + } +\NewDocumentCommand \setromanfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \newfontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \NewDocumentCommand + } +\NewDocumentCommand \renewfontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand + } +\NewDocumentCommand \setfontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand + } +\NewDocumentCommand \providefontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand + } +\NewDocumentCommand \newfontface { m O{} m O{} } + { + \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \NewDocumentCommand + } +\NewDocumentCommand \renewfontface { m O{} m O{} } + { + \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand + } +\NewDocumentCommand \setfontface { m O{} m O{} } + { + \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand + } +\NewDocumentCommand \providefontface { m O{} m O{} } + { + \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand + } +\NewDocumentCommand \defaultfontfeatures { t+ o m } + { + \IfNoValueTF {#2} + { \__fontspec_set_default_features:nn {#1} {#3} } + { \__fontspec_set_font_default_features:nnn {#1} {#2} {#3} } + \ignorespaces + } +\NewDocumentCommand \addfontfeatures {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \addfontfeature {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \newfontfeature {mm} + { + \__fontspec_main_newfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \newAATfeature {mmmm} + { + \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} + } +\NewDocumentCommand \newopentypefeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newICUfeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \aliasfontfeature {mm} + { + \__fontspec_main_aliasfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \aliasfontfeatureoption {mmm} + { + \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newfontscript {mm} + { + \fontspec_new_script:nn {#1} {#2} + } +\NewDocumentCommand \newfontlanguage {mm} + { + \fontspec_new_lang:nn {#1} {#2} + } +\NewDocumentCommand \DeclareFontExtensions {m} + { + \__fontspec_main_DeclareFontExtensions:n {#1} + } +\NewDocumentCommand \IfFontFeatureActiveTF {mmm} + { + \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} + } +\AtBeginDocument + { + \RenewDocumentCommand \oldstylenums {m} + { + \__fontspec_main_oldstylenums:n {#1} + } + } +\NewDocumentCommand \liningnums {m} + { + \__fontspec_main_liningnums:n {#1} + } + +%%^^A%% fontspec-code-user.dtx -- part of FONTSPEC + +\cs_new:Nn \__fontspec_main_fontspec:nn + { + \fontspec_set_family:Nnn \f@family {#1} {#2} + \fontencoding { \g__fontspec_nfss_enc_tl } + \selectfont + } +\cs_if_exist:NTF \@rmfamilyhook + { + \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l__fontspec_rmfamily_encoding_tl} + \tl_put_right:Nn \@sffamilyhook {\fontencoding \l__fontspec_sffamily_encoding_tl} + \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l__fontspec_ttfamily_encoding_tl} + } + { + \tl_replace_all:cnn { rmfamily~ } { \fontfamily } + { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily } + \tl_replace_all:cnn { sffamily~ } { \fontfamily } + { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily } + \tl_replace_all:cnn { ttfamily~ } { \fontfamily } + { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily } + } +\tl_set:Nn \l__fontspec_rmfamily_encoding_tl { \encodingdefault } +\tl_set:Nn \l__fontspec_sffamily_encoding_tl { \encodingdefault } +\tl_set:Nn \l__fontspec_ttfamily_encoding_tl { \encodingdefault } +\cs_new:Nn \__fontspec_main_setmainfont:nn + { + \ifdefined\DeclareFontSeriesDefault + \DeclareFontSeriesDefault[rm]{bf}{\bfdefault} + \fi + \fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2} + \tl_set_eq:NN \rmdefault \l__fontspec_rmfamily_family_tl + \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g__fontspec_nfss_enc_tl + \str_if_eq:eeT {\familydefault} {\rmdefault} + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } + \__fontspec_setmainfont_hook:nn {#1} {#2} % for unicode-math only + \normalfont + } +\cs_new:Nn \__fontspec_main_setsansfont:nn + { + \ifdefined\DeclareFontSeriesDefault + \DeclareFontSeriesDefault[sf]{bf}{\bfdefault} + \fi + \fontspec_set_family:Nnn \l__fontspec_sffamily_family_tl {#1} {#2} + \tl_set_eq:NN \sfdefault \l__fontspec_sffamily_family_tl + \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g__fontspec_nfss_enc_tl + \str_if_eq:eeT {\familydefault} {\sfdefault} + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } + \__fontspec_setsansfont_hook:nn {#1} {#2} % for unicode-math only + \normalfont + } +\cs_new:Nn \__fontspec_main_setmonofont:nn + { + \ifdefined\DeclareFontSeriesDefault + \DeclareFontSeriesDefault[tt]{bf}{\bfdefault} + \fi + \fontspec_set_family:Nnn \l__fontspec_ttfamily_family_tl {#1} {#2} + \tl_set_eq:NN \ttdefault \l__fontspec_ttfamily_family_tl + \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g__fontspec_nfss_enc_tl + \str_if_eq:eeT {\familydefault} {\ttdefault} + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } + \__fontspec_setmonofont_hook:nn {#1} {#2} % for unicode-math only + \normalfont + } +\cs_new:Nn \__fontspec_main_setmathrm:nn + { + \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathrm_hook:nn {#1} {#2} % for unicode-math only + } +\cs_new:Nn \__fontspec_main_setboldmathrm:nn + { + \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2} + \__fontspec_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only + } +\cs_new:Nn \__fontspec_main_setmathsf:nn + { + \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathsf_hook:nn {#1} {#2} % for unicode-math only + } +\cs_new:Nn \__fontspec_main_setmathtt:nn + { + \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathtt_hook:nn {#1} {#2} % for unicode-math only + } +\cs_set_eq:NN \__fontspec_setmainfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setsansfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmonofont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathrm_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathsf_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathtt_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setboldmathrm_hook:nn \use_none:nn +\@onlypreamble\setmathrm +\@onlypreamble\setboldmathrm +\@onlypreamble\setmathsf +\@onlypreamble\setmathtt +\tl_gset:Nn \g__fontspec_mathrm_tl {\rmdefault} +\tl_gset:Nn \g__fontspec_mathsf_tl {\sfdefault} +\tl_gset:Nn \g__fontspec_mathtt_tl {\ttdefault} +\cs_new:Nn \__fontspec_main_newfontfamily:NnnN + { + \fontspec_set_family:cnn { l__fontspec_ \cs_to_str:N #1 _family_tl } {#2} {#3} + \use:x + { + \exp_not:N #4 \exp_not:N #1 {} + { + \exp_not:N \fontfamily { \use:c { l__fontspec_ \cs_to_str:N #1 _family_tl } } + \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } + \exp_not:N \selectfont + } + } + } +\cs_new:Nn \__fontspec_main_newfontface:NnnN + { + \__fontspec_main_newfontfamily:NnnN #1 { BoldFont={},ItalicFont={},SmallCapsFont={},#2 } {#3} #4 + } +\cs_new:Nn \__fontspec_set_default_features:nn + { + \IfBooleanTF {#1} \clist_gput_right:Nn \clist_gset:Nn + \g__fontspec_default_fontopts_clist {#2} + } +\cs_new:Nn \__fontspec_set_font_default_features:nnn + { + \clist_map_inline:nn {#2} + { + \tl_if_single:nTF {##1} + { \tl_set:No \l__fontspec_tmp_tl { \cs:w l__fontspec_ \cs_to_str:N ##1 _family_tl\cs_end: } } + { \__fontspec_sanitise_fontname:Nn \l__fontspec_tmp_tl {##1} } + + \IfBooleanTF {#1} + { + \prop_get:NVNF \g__fontspec_fontopts_prop \l__fontspec_tmp_tl \l__fontspec_tmpb_tl + { \tl_clear:N \l__fontspec_tmpb_tl } + \tl_put_right:Nn \l__fontspec_tmpb_tl {#3,} + \prop_gput:NVV \g__fontspec_fontopts_prop \l__fontspec_tmp_tl \l__fontspec_tmpb_tl + } + { + \tl_if_empty:nTF {#3} + { \prop_gremove:NV \g__fontspec_fontopts_prop \l__fontspec_tmp_tl } + { \prop_gput:NVn \g__fontspec_fontopts_prop \l__fontspec_tmp_tl {#3,} } + } + } + } +\cs_new:Nn \__fontspec_main_addfontfeatures:n + { + \fontspec_if_fontspec_font:TF + { + \group_begin: + \keys_set_known:nnN {fontspec-addfeatures} {#1} \l__fontspec_tmp_tl + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {options} \l__fontspec_options_tl + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {fontname} \l__fontspec_fontname_tl + \bool_set_true:N \l__fontspec_disable_defaults_bool + \use:x + { + \__fontspec_select_font_family:nn + { \l__fontspec_options_tl , #1 } {\l__fontspec_fontname_tl} + } + \group_end: + \fontfamily \g__fontspec_nfss_family_tl \selectfont + } + { + \__fontspec_warning:nx {addfontfeatures-ignored} {#1} + } + \ignorespaces + } +\cs_new:Nn \__fontspec_main_newfontfeature:nn + { + \keys_define:nn { fontspec } + { + #1 .code:n = { \__fontspec_update_featstr:n {#2} } + } + } +\cs_new:Nn \__fontspec_main_newAATfeature:nnnn + { + \keys_if_exist:nnF { fontspec } {#1} + { \__fontspec_define_aat_feature_group:n {#1} } + + \keys_if_choice_exist:nnnT {fontspec} {#1} {#2} + { \__fontspec_warning:nxx {feature-option-overwrite} {#1} {#2} } + + \__fontspec_define_aat_feature:nnnn {#1}{#2}{#3}{#4} + } +\cs_new:Nn \__fontspec_main_newopentypefeature:nnn + { + \keys_if_exist:nnF { fontspec / options } {#1} + { \__fontspec_define_opentype_feature_group:n {#1} } + + \keys_if_choice_exist:nnnT {fontspec} {#1} {#2} + { \__fontspec_warning:nxx {feature-option-overwrite} {#1} {#2} } + + \exp_args:Nnnx \__fontspec_define_opentype_feature:nnnnn + {#1} {#2} { \__fontspec_strip_plus_minus:n {#3} } {#3} {} + } +\cs_new:Nn \__fontspec_strip_plus_minus:n { \__fontspec_strip_plus_minus_aux:Nq #1 \q_nil } +\cs_new:Npn \__fontspec_strip_plus_minus_aux:Nq #1#2 \q_nil + { + \str_case:nnF {#1} { {+} {#2} {-} {#2} } {#1#2} + } +\cs_new:Nn \__fontspec_main_aliasfontfeature:nn + { + \bool_set_false:N \l__fontspec_alias_bool + + \clist_map_inline:Nn \g__fontspec_all_keyval_modules_clist + { + \keys_if_exist:nnT {##1} {#1} + { + \bool_set_true:N \l__fontspec_alias_bool + \keys_define:nn {##1} + { #2 .code:n = { \keys_set:nn {##1} { #1 = {####1} } } } + } + } + + \bool_if:NF \l__fontspec_alias_bool + { \__fontspec_warning:nx {rename-feature-not-exist} {#1} } + } +\cs_new:Nn \__fontspec_main_aliasfontfeatureoption:nnn + { + \bool_set_false:N \l__fontspec_alias_bool + + \clist_map_inline:Nn \g__fontspec_all_keyval_modules_clist + { + \keys_if_exist:nnT { ##1 / #1 } {#2} + { + \bool_set_true:N \l__fontspec_alias_bool + \keys_define:nn { ##1 / #1 } + { #3 .code:n = { \keys_set:nn {##1} { #1 = {#2} } } } + } + + \keys_if_exist:nnT { ##1 / #1 } {#2Reset} + { + \keys_define:nn { ##1 / #1 } + { #3Reset .code:n = { \keys_set:nn {##1} { #1 = {#2Reset} } } } + } + + \keys_if_exist:nnT { ##1 / #1 } {#2Off} + { + \keys_define:nn { ##1 / #1 } + { #3Off .code:n = { \keys_set:nn {##1} { #1 = {#2Off} } } } + } + } + + \bool_if:NF \l__fontspec_alias_bool + { \__fontspec_warning:nx {rename-feature-not-exist} {#1/#2} } + } +\cs_new:Nn \__fontspec_main_DeclareFontExtensions:n + { + \clist_set:Nn \l__fontspec_extensions_clist { #1 } + } +\__fontspec_main_DeclareFontExtensions:n {.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} +\cs_new:Nn \__fontspec_main_IfFontFeatureActiveTF:nnn + { + \__fontspec_if_font_feature:nTF {#1} {#2} {#3} + } +\prg_new_conditional:Nnn \__fontspec_if_font_feature:n {TF} + { + \tl_gclear:N \g__fontspec_single_feat_tl + \group_begin: + \__fontspec_font_suppress_not_found_error: + \__fontspec_init: + \bool_set_true:N \l__fontspec_ot_bool + \bool_set_true:N \l__fontspec_never_check_bool + \bool_set_false:N \l__fontspec_firsttime_bool + \clist_clear:N \l__fontspec_fontfeat_clist + \__fontspec_get_features:n {#1} + \group_end: + + + \tl_if_empty:NTF \g__fontspec_single_feat_tl { \prg_return_false: } + { + \exp_args:NV \fontspec_if_current_feature:nTF \g__fontspec_single_feat_tl + { \prg_return_true: } { \prg_return_false: } + } + } +\cs_new_protected:Nn \__fontspec_main_oldstylenums:n + { + \group_begin: + \addfontfeature{Numbers=OldStyle} + #1 + \group_end: + } +\cs_new_protected:Nn \__fontspec_main_liningnums:n + { + \group_begin: + \addfontfeature{Numbers=Lining} + #1 + \group_end: + } + +%%^^A%% fontspec-code-api.dtx -- part of FONTSPEC + +\prg_new_conditional:Nnn \fontspec_if_fontspec_font: {TF,T,F} + { + \cs_if_exist:cTF {g__fontspec_fontinfo_ \f@family _prop} \prg_return_true: \prg_return_false: + } +\prg_new_conditional:Nnn \fontspec_if_aat_feature:nn {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_atsui_bool + { + \__fontspec_make_AAT_feature_string:NnnTF \font {#1} {#2} + \prg_return_true: \prg_return_false: + } + { + \prg_return_false: + } + } + { + \prg_return_false: + } + } +\prg_new_conditional:Nnn \fontspec_if_opentype: {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool \prg_return_true: \prg_return_false: + } + { + \prg_return_false: + } + } +\prg_new_conditional:Nnn \fontspec_if_feature:n {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-num} \l__fontspec_tmp_tl + \int_set:Nn \l__fontspec_script_int {\l__fontspec_tmp_tl} + + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-num} \l__fontspec_tmp_tl + \int_set:Nn \l__fontspec_language_int {\l__fontspec_tmp_tl} + + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_lang_tl + + \__fontspec_check_ot_feat:NnTF \font {#1} {\prg_return_true:} {\prg_return_false:} + } + { + \prg_return_false: + } + } + { + \prg_return_false: + } + } +\prg_new_conditional:Nnn \fontspec_if_feature:nnn {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \__fontspec_check_ot_feat:NnnnTF \font {#3} {#2} {#1} \prg_return_true: \prg_return_false: + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_script:n {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \__fontspec_check_script:NnTF \font {#1} \prg_return_true: \prg_return_false: + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_language:n {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-num} \l__fontspec_tmp_tl + \int_set:Nn \l__fontspec_script_int {\l__fontspec_tmp_tl} + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl + + \__fontspec_check_lang:NnTF \font {#1} \prg_return_true: \prg_return_false: + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_language:nn {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \__fontspec_check_lang:NnnTF \font {#2} {#1} \prg_return_true: \prg_return_false: + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_current_script:n {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_tmp_tl + \str_if_eq:nVTF {#1} \l__fontspec_tmp_tl + {\prg_return_true:} {\prg_return_false:} + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_current_language:n {TF,T,F} + { + \fontspec_if_fontspec_font:TF + { + \__fontspec_set_font_type:N \font + \bool_if:NTF \l__fontspec_ot_bool + { + \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_tmp_tl + \str_if_eq:nVTF {#1} \l__fontspec_tmp_tl + {\prg_return_true:} {\prg_return_false:} + } + { \prg_return_false: } + } + { \prg_return_false: } + } +\cs_new:Nn \__fontspec_tl_new_if_free:N { \tl_if_exist:NF #1 { \tl_new:N #1 } } +\cs_new:Nn \__fontspec_set_family:NnnN + { + \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset + \tl_set:Nn \l__fontspec_family_label_tl {#1} + \__fontspec_select_font_family:nn {#2} {#3} + \__fontspec_tl_new_if_free:N #1 + #4 #1 \l_fontspec_family_tl + \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset + } +\cs_new:Nn \fontspec_gset_family:Nnn { \__fontspec_set_family:NnnN #1 {#2} {#3} \tl_gset_eq:NN } +\cs_new:Nn \fontspec_set_family:Nnn { \__fontspec_set_family:NnnN #1 {#2} {#3} \tl_set_eq:NN } +\cs_generate_variant:Nn \fontspec_set_family:Nnn {c} +\tl_new:N \l__fontspec_fontface_cs_tl +\tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} +\cs_new:Nn \__fontspec_set_fontface:NNnnN + { + \tl_set:Nn \l__fontspec_fontface_cs_tl {#1} + \tl_set:Nn \l__fontspec_family_label_tl {#2} + \__fontspec_select_font_family:nn {#3} {#4} + #5 #2 \l_fontspec_family_tl + \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset + } +\cs_new:Nn \fontspec_gset_fontface:NNnn { \__fontspec_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_gset_eq:NN } +\cs_new:Nn \fontspec_set_fontface:NNnn { \__fontspec_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_set_eq:NN } +\prg_new_conditional:Nnn \fontspec_font_if_exist:n {TF,T,F} + { + \group_begin: + \__fontspec_init: + \__fontspec_if_detect_external:nT {#1} { \__fontspec_font_is_file: } + \__fontspec_primitive_font_if_exist:nTF { \__fontspec_construct_font_call:nn {#1} {} } + { \group_end: \prg_return_true: } + { \group_end: \prg_return_false: } + } +\cs_set_eq:NN \IfFontExistsTF \fontspec_font_if_exist:nTF + +\prg_new_conditional:Nnn \fontspec_if_current_feature:n {TF,T,F} + { + \exp_args:Nxx \tl_if_in:nnTF + { \__fontspec_primitive_font_current_name: } { \tl_to_str:n {#1} } + { \prg_return_true: } { \prg_return_false: } + } +\prg_new_conditional:Nnn \fontspec_if_small_caps: {TF,T,F} + { + \__fontspec_if_merge_shape:nTF {sc} + { + \tl_set_eq:Nc \l__fontspec_smcp_shape_tl { \__fontspec_shape_merge:nn {\f@shape} {sc} } + } + { + \tl_set:Nn \l__fontspec_smcp_shape_tl {sc} + } + + \cs_if_exist:cTF { \f@encoding/\f@family/\f@series/\l__fontspec_smcp_shape_tl } + { + \tl_if_eq:ccTF + { \f@encoding/\f@family/\f@series/\l__fontspec_smcp_shape_tl } + { \f@encoding/\f@family/\f@series/\shapedefault } + { \prg_return_false: } + { \prg_return_true: } + } + { \prg_return_false: } + } + +%%^^A%% fontspec-code-internal.dtx -- part of FONTSPEC + +\cs_new_protected:Nn \__fontspec_select_font_family:nn + { + \group_begin: + \__fontspec_font_suppress_not_found_error: + \__fontspec_init: + + \__fontspec_sanitise_fontname:Nn \l_fontspec_fontname_tl {#2} + \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_up_tl {#2} + \__fontspec_sanitise_fontname:Nn \l__fontspec_basename_tl {#2} + + \__fontspec_if_detect_external:nT {#2} + { \keys_set:nn {fontspec-preparse-external} {Path} } + + \keys_set_known:nn {fontspec-preparse-cfg} {#1} + + \__fontspec_init_ttc:n {#2} + \__fontspec_load_external_fontoptions:N \l_fontspec_fontname_tl + + \__fontspec_extract_all_features:n {#1} + \tl_set:Nx \l__fontspec_fontid_tl { \tl_to_str:N \l_fontspec_fontname_tl-:-\tl_to_str:N \l__fontspec_all_features_clist } + + + \__fontspec_preparse_features: + \__fontspec_load_font: + \__fontspec_set_scriptlang: + \__fontspec_get_features:n {} + \bool_set_false:N \l__fontspec_firsttime_bool + + \__fontspec_save_family_needed:nTF {#2} + { + \__fontspec_save_family:nn {#1} {#2} + } + { + } + \group_end: + + \tl_set_eq:NN \l_fontspec_family_tl \g__fontspec_nfss_family_tl + } +\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn %% deprecated, for compatibility only +\cs_new:Nn \__fontspec_sanitise_fontname:Nn + { + \tl_set:Nx #1 {#2} + \tl_remove_all:Nn #1 {~} + \clist_map_inline:Nn \l__fontspec_extensions_clist + { + \tl_if_in:NnT #1 {##1} + { + \tl_remove_once:Nn #1 {##1} + \tl_set:Nn \l__fontspec_extension_tl {##1} + \clist_map_break: + } + } + } +\prg_new_conditional:Nnn \__fontspec_if_detect_external:n {T} + { + \clist_map_inline:Nn \l__fontspec_extensions_clist + { + \bool_set_false:N \l__fontspec_tmpa_bool + \exp_args:Nx % <- this should be handled earlier + \tl_if_in:nnT {#1 <= end_of_string} {##1 <= end_of_string} + { \bool_set_true:N \l__fontspec_tmpa_bool \clist_map_break: } + } + \bool_if:NTF \l__fontspec_tmpa_bool \prg_return_true: \prg_return_false: + } +\cs_new:Nn \__fontspec_init_ttc:n + { + \str_if_eq:eeT { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc} + { + \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_it_tl {#1} + \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bf_tl {#1} + \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bfit_tl {#1} + } + } +\cs_new:Nn \__fontspec_load_external_fontoptions:N + { + \bool_if:NT \l__fontspec_fontcfg_bool + { + \tl_set:Nx \l__fontspec_ext_filename_tl {#1.fontspec} + \tl_remove_all:Nn \l__fontspec_ext_filename_tl {~} + \prop_if_in:NVF \g__fontspec_fontopts_prop #1 + { + \exp_args:No \file_if_exist:nT { \l__fontspec_ext_filename_tl } + { \file_input:n { \l__fontspec_ext_filename_tl } } + } + } + } +\cs_new:Nn \__fontspec_extract_all_features:n + { + \bool_if:NTF \l__fontspec_disable_defaults_bool + { + \clist_set:Nx \l__fontspec_all_features_clist {#1} + } + { + \prop_get:NVNF \g__fontspec_fontopts_prop \l_fontspec_fontname_tl \l__fontspec_fontopts_clist + { \clist_clear:N \l__fontspec_fontopts_clist } + + \prop_get:NVNF \g__fontspec_fontopts_prop \l__fontspec_family_label_tl \l__fontspec_family_fontopts_clist + { \clist_clear:N \l__fontspec_family_fontopts_clist } + \tl_clear:N \l__fontspec_family_label_tl + + \clist_set:Nx \l__fontspec_all_features_clist + { + \g__fontspec_default_fontopts_clist, + \l__fontspec_family_fontopts_clist, + \l__fontspec_fontopts_clist, + #1 + } + } + } +\cs_new:Nn \__fontspec_preparse_features: + { + + \__fontspec_keys_set_known:nxN {fontspec-preparse-external} + { \l__fontspec_all_features_clist } + \l__fontspec_keys_leftover_clist + + \tl_set_eq:NN \l_fontspec_fontname_tl \l__fontspec_fontname_up_tl + \__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_keys_leftover_clist} + \l__fontspec_keys_leftover_clist + \__fontspec_keys_set_known:nxN {fontspec-preparse} {\l__fontspec_keys_leftover_clist} + \l__fontspec_fontfeat_clist + } +\cs_new:Nn \__fontspec_load_font: + { + + \__fontspec_primitive_font_set:NnnF \l__fontspec_test_font + { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } } + { \f@size pt - 2sp } + { \__fontspec_error:nx {font-not-found} {\l__fontspec_fontname_up_tl} } + + \__fontspec_set_font_type:N \l__fontspec_test_font + \__fontspec_primitive_font_gset:Onn \l__fontspec_fontface_cs_tl + { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } } + { \f@size pt + 2sp } + + \l__fontspec_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly + + } +\cs_new:Nn \__fontspec_construct_font_call:nnnnnn + { + " \__fontspec_fontname_wrap:n { #1 #2 } #3 + #4 #5 + \str_if_eq:eeF {#6}{} {:#6} " + } +\cs_new:Nn \__fontspec_construct_font_call:nn + { + \__fontspec_construct_font_call:nnnnnn + {#1} + \l__fontspec_extension_tl + \l__fontspec_ttc_index_tl + \l__fontspec_renderer_tl + \l__fontspec_optical_size_tl + {#2} + } +\cs_new:Nn \__fontspec_font_is_name: + { + \cs_set_eq:NN \__fontspec_fontname_wrap:n \use:n + } +\cs_new:Nn \__fontspec_font_is_file: + { + \cs_set:Npn \__fontspec_fontname_wrap:n ##1 { [ \l__fontspec_font_path_tl ##1 ] } + } +\cs_new:Nn \__fontspec_set_scriptlang: + { + \bool_if:NT \l__fontspec_firsttime_bool + { + \tl_if_empty:NF \l__fontspec_script_name_tl + { + \keys_set:nx {fontspec-opentype} {Script=\l__fontspec_script_name_tl} + \keys_set:nx {fontspec-opentype} {Language=\l__fontspec_lang_name_tl} + } + } + } +\cs_new:Nn \__fontspec_get_features:n + { + \__fontspec_init_fontface: + \__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_fontfeat_clist,#1} + \l__fontspec_keys_leftover_clist + \__fontspec_keys_set_known:nxN {fontspec} {\l__fontspec_keys_leftover_clist} \l__fontspec_keys_leftover_clist + \keys_set:nV {fontspec-opentype} \l__fontspec_keys_leftover_clist + + \tl_if_empty:NF \l__fontspec_mapping_tl + { \__fontspec_update_featstr:n { mapping = \l__fontspec_mapping_tl } } + + \str_if_eq:eeF { \l__fontspec_hexcol_tl \l__fontspec_opacity_tl } + { \c__fontspec_hexcol_tl \c__fontspec_opacity_tl } + { \__fontspec_update_featstr:n { color = {\l__fontspec_hexcol_tl\l__fontspec_opacity_tl} } } + } +\prg_new_conditional:Nnn \__fontspec_save_family_needed:n { TF } + { + + + \tl_if_empty:NTF \l__fontspec_nfss_fam_tl + { + \prop_get:NVNTF \g__fontspec_fontid_family_prop \l__fontspec_fontid_tl \l__fontspec_tmp_tl + { + \tl_gset_eq:NN \g__fontspec_nfss_family_tl \l__fontspec_tmp_tl + \prg_return_false: + } + { + \tl_set:Nx \l__fontspec_tmp_tl {#1} + \tl_remove_all:Nn \l__fontspec_tmp_tl { ~ } + \__fontspec_save_fontid_family:VV \l__fontspec_fontid_tl \l__fontspec_tmp_tl + \prg_return_true: + } + } + { + \tl_gset_eq:NN \g__fontspec_nfss_family_tl \l__fontspec_nfss_fam_tl + \cs_undefine:c { g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop } + \prg_return_true: + } + } +\cs_new:Nn \__fontspec_save_fontid_family:nn + { + \prop_get:NnNTF \g__fontspec_family_int_prop {#2} \l__fontspec_tmp_tl + { + \tl_set:Nx \l__fontspec_tmp_tl + { \int_eval:n { \l__fontspec_tmp_tl + 1 } } + } + { \tl_set:Nn \l__fontspec_tmp_tl { 0 } } + \prop_gput:NnV \g__fontspec_family_int_prop {#2} \l__fontspec_tmp_tl + \tl_gset:Nx \g__fontspec_nfss_family_tl { #2 ( \l__fontspec_tmp_tl ) } + \prop_gput:NnV \g__fontspec_fontid_family_prop {#1} \g__fontspec_nfss_family_tl + } +\cs_generate_variant:Nn \__fontspec_save_fontid_family:nn { VV } +\cs_new:Nn \__fontspec_save_family:nn + { + \__fontspec_save_fontinfo:n {#2} + \__fontspec_find_autofonts: + \DeclareFontFamily{\g__fontspec_nfss_enc_tl}{\g__fontspec_nfss_family_tl}{} + \__fontspec_set_faces: + \__fontspec_info:nxx {defining-font} {#1} {#2} + } +\cs_new:Nn \__fontspec_save_fontinfo:n + { + \prop_new:c {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} + \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {fontname} { #1 } + \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {options} { \l__fontspec_all_features_clist } + \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {fontdef} + { + \__fontspec_construct_font_call:nn {\l_fontspec_fontname_tl} + { \l__fontspec_pre_feat_sclist \g__fontspec_rawfeatures_sclist } + } + \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {script-num} \l__fontspec_script_int + \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {lang-num} \l__fontspec_language_int + \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {script-tag} \l__fontspec_script_tl + \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {lang-tag} \l__fontspec_lang_tl + } +\cs_new:Nn \__fontspec_find_autofonts: + { + \bool_if:nF {\l__fontspec_noit_bool || \l__fontspec_nobf_bool} + { + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l__fontspec_fontname_it_tl} {/B} + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l__fontspec_fontname_bf_tl} {/I} + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l_fontspec_fontname_tl} {/BI} + } + + \bool_if:NF \l__fontspec_nobf_bool + { + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bf_tl {\l_fontspec_fontname_tl} {/B} + } + + \bool_if:NF \l__fontspec_noit_bool + { + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_it_tl {\l_fontspec_fontname_tl} {/I} + } + + \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfsl_tl {\l__fontspec_fontname_sl_tl} {/B} + } +\cs_new:Nn \__fontspec_set_faces: + { + \__fontspec_add_nfssfont:nnnn \mddefault \shapedefault \l_fontspec_fontname_tl \l__fontspec_fontfeat_up_clist + \__fontspec_add_nfssfont:nnnn \bfdefault \shapedefault \l__fontspec_fontname_bf_tl \l__fontspec_fontfeat_bf_clist + \__fontspec_add_nfssfont:nnnn \mddefault \itdefault \l__fontspec_fontname_it_tl \l__fontspec_fontfeat_it_clist + \__fontspec_add_nfssfont:nnnn \mddefault \sldefault \l__fontspec_fontname_sl_tl \l__fontspec_fontfeat_sl_clist + \__fontspec_add_nfssfont:nnnn \mddefault \swdefault \l__fontspec_fontname_sw_tl \l__fontspec_fontfeat_sw_clist + \__fontspec_add_nfssfont:nnnn \bfdefault \itdefault \l__fontspec_fontname_bfit_tl \l__fontspec_fontfeat_bfit_clist + \__fontspec_add_nfssfont:nnnn \bfdefault \sldefault \l__fontspec_fontname_bfsl_tl \l__fontspec_fontfeat_bfsl_clist + \__fontspec_add_nfssfont:nnnn \bfdefault \swdefault \l__fontspec_fontname_bfsw_tl \l__fontspec_fontfeat_bfsw_clist + \prop_map_inline:Nn \l__fontspec_nfssfont_prop { \__fontspec_set_faces_aux:nnnnn ##2 } + } +\cs_new:Nn \__fontspec_set_faces_aux:nnnnn + { + \fontspec_complete_fontname:Nn \l__fontspec_curr_fontname_tl {#3} + \__fontspec_make_font_shapes:Nnnnn \l__fontspec_curr_fontname_tl {#1} {#2} {#4} {#5} + } +\cs_new:Nn \fontspec_complete_fontname:Nn + { + \tl_set:Nx #1 {#2} + \tl_replace_all:Nnx #1 {*} {\l__fontspec_basename_tl} + \tl_remove_all:Nn #1 {~} + } +\cs_new:Nn \__fontspec_add_nfssfont:nnnn + { + \tl_set:Nx \l__fontspec_this_font_tl {#3} + + \tl_if_empty:xTF {#4} + { \clist_set:Nn \l__fontspec_sizefeat_clist {Size={-}} } + { \__fontspec_keys_set_known:nxN {fontspec-preparse-nested} {#4} \l__fontspec_tmp_tl } + + \tl_if_empty:NF \l__fontspec_this_font_tl + { + \prop_put:Nxx \l__fontspec_nfssfont_prop {#1/#2} + { {#1}{#2}{\l__fontspec_this_font_tl}{#4}{\l__fontspec_sizefeat_clist} } + } + } +\cs_new:Nn \__fontspec_set_font_type:N + { + \bool_set_true:N \l__fontspec_ot_bool + } +\cs_new:Nn \__fontspec_set_autofont:Nnn + { + \bool_if:NF \l__fontspec_external_bool + { + \tl_if_empty:xF {#2} + { + \tl_if_empty:NT #1 + { + \__fontspec_if_autofont:nnTF {#2} {#3} + { \tl_set:Nx #1 {#2#3} } + { \__fontspec_info:nx {no-font-shape} {#2#3} } + } + } + } + } +\prg_new_conditional:Nnn \__fontspec_if_autofont:nn {T,TF} + { + \group_begin: + \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 1sp } + \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 1sp } + \str_if_eq:eeTF { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpa_font } { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpb_font } + { \group_end: \prg_return_false: } + { \group_end: \prg_return_true: } + } +\cs_new:Nn \__fontspec_make_font_shapes:Nnnnn + { + \group_begin: + \__fontspec_keys_set_known:nxN {fontspec-preparse-external} { #4 } \l__fontspec_leftover_clist + \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {#1} + \__fontspec_declare_shape:nnxx {#2} {#3} { \l__fontspec_fontopts_clist, \l__fontspec_leftover_clist } {#5} + \group_end: + } +\cs_new:Nn \__fontspec_load_fontname:Nn + { + \__fontspec_sanitise_fontname:Nn #1 {#2} + \__fontspec_load_external_fontoptions:N #1 + \prop_get:NVNF \g__fontspec_fontopts_prop #1 \l__fontspec_fontopts_clist + { \clist_clear:N \l__fontspec_fontopts_clist } + \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l__fontspec_fontopts_clist + \__fontspec_primitive_font_set:OnnF \l__fontspec_fontface_cs_tl + { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 2sp } + { \__fontspec_error:nx {font-not-found} {#2} } + } +\keys_define:nn {fontspec/fontname} + { + Font .tl_set:N = \l_fontspec_fontname_tl , + Font .groups:n = {getfontname} , + } +\cs_new:Nn \__fontspec_declare_shape:nnnn + { + \tl_build_begin:N \l__fontspec_nfss_tl + \tl_build_begin:N \l__fontspec_nfss_sc_tl + \tl_set_eq:NN \l__fontspec_saved_fontname_tl \l_fontspec_fontname_tl + + \exp_args:Nx \clist_map_inline:nn {#4} { \__fontspec_setup_single_size:nn {#3} {##1} } + + \tl_build_end:N \l__fontspec_nfss_tl + \tl_build_end:N \l__fontspec_nfss_sc_tl + + \__fontspec_declare_shapes_normal:nn {#1} {#2} + \__fontspec_declare_shapes_smcaps:nn {#1} {#2} + \__fontspec_declare_shape_slanted:nn {#1} {#2} + \__fontspec_declare_shapes_bx:nn {#1} {#2} + \__fontspec_declare_shape_loginfo:nn {#1} {#2} + } +\cs_generate_variant:Nn \__fontspec_declare_shape:nnnn {nnxx} +\cs_new:Nn \__fontspec_setup_single_size:nn + { + \tl_clear:N \l__fontspec_size_tl + \tl_set_eq:NN \l__fontspec_sizedfont_tl \l__fontspec_saved_fontname_tl % in case not spec'ed + + \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n #2 } + \l__fontspec_sizing_leftover_clist + \tl_if_empty:NT \l__fontspec_size_tl { \__fontspec_error:n {no-size-info} } + + % "normal" + \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_sizedfont_tl} + \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_tl {#1} {\l__fontspec_sizing_leftover_clist} {} + + % small caps + \clist_set_eq:NN \l__fontspec_fontfeat_curr_clist \l__fontspec_fontfeat_sc_clist + + \bool_if:NF \l__fontspec_nosc_bool + { + \tl_if_empty:NTF \l__fontspec_fontname_sc_tl + { + \__fontspec_make_smallcaps:TF + { + \clist_put_left:Nn \l__fontspec_fontfeat_curr_clist {Letters=SmallCaps} + } + { + \bool_set_true:N \l__fontspec_nosc_bool + } + } + { \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_fontname_sc_tl} }% local for each size + } + + \bool_if:NF \l__fontspec_nosc_bool + { + \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_sc_tl + {#1} {\l__fontspec_sizing_leftover_clist} {\l__fontspec_fontfeat_curr_clist} + } + } +\cs_new:Nn \__fontspec_setup_nfss:Nnnn + { + + \__fontspec_get_features:n { #2 , #3 , #4 } + + \tl_if_empty:NF \l__fontspec_scale_tl + { + \tl_set:Nx \l__fontspec_scale_tl { s*[\l__fontspec_scale_tl] } + } + + \tl_build_put_right:Nx #1 + { + <\l__fontspec_size_tl> \l__fontspec_scale_tl + \__fontspec_construct_font_call:nn { \l_fontspec_fontname_tl } + { \l__fontspec_pre_feat_sclist \g__fontspec_rawfeatures_sclist } + } + } +\cs_new:Nn \__fontspec_declare_shapes_normal:nn + { + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} + {#1} {#2} {\l__fontspec_nfss_tl}{\l__fontspec_postadjust_tl} + } +\cs_new:Nn \__fontspec_declare_shapes_smcaps:nn + { + \tl_if_empty:NF \l__fontspec_nfss_sc_tl + { + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} {#1} + { \__fontspec_combo_sc_shape:n {#2} } {\l__fontspec_nfss_sc_tl} {\l__fontspec_postadjust_tl} + } + } +\cs_new:Nn \__fontspec_combo_sc_shape:n + { + \tl_if_exist:cTF { \__fontspec_shape_merge:nn {#1} {\scdefault} } + { \tl_use:c { \__fontspec_shape_merge:nn {#1} {\scdefault} } } + { \scdefault#1 } + } +\cs_new:Nn \__fontspec_DeclareFontShape:nnnnnn + { +\group_begin: +\normalsize +\cs_undefine:c {#1/#2/#3/#4/\f@size} +\group_end: +\DeclareFontShape{#1}{#2}{#3}{#4}{#5}{#6} + } +\cs_generate_variant:Nn \__fontspec_DeclareFontShape:nnnnnn {xxxxxx} +\cs_new:Nn \__fontspec_declare_shape_slanted:nn + { + \bool_if:nT + { + \str_if_eq_p:ee {#2} {\itdefault} && + !(\str_if_eq_p:ee {\itdefault} {\sldefault}) + } + { + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl}{\g__fontspec_nfss_family_tl}{#1}{\sldefault} + {<->ssub*\g__fontspec_nfss_family_tl/#1/\itdefault}{\l__fontspec_postadjust_tl} + } + } +\cs_new:Nn \__fontspec_declare_shapes_bx:nn + { + \bool_if:nT + { + \str_if_eq_p:ee {#1} {\bfdefault} && + !(\str_if_eq_p:ee {\bfdefault} {bx}) + } + { + % bx/? + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} + {bx} {#2} + { <->ssub*\g__fontspec_nfss_family_tl/\bfdefault/#2 } + { \l__fontspec_postadjust_tl } + + % bx/sc -> b/sc + \tl_if_empty:NF \l__fontspec_nfss_sc_tl + { + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} + {bx} { \__fontspec_combo_sc_shape:n {#2} } + { <->ssub*\g__fontspec_nfss_family_tl/\bfdefault/#2 } + { \l__fontspec_postadjust_tl } + } + + % bx/sl -> bx/it + \bool_if:nT + { + \str_if_eq_p:ee {#2} {\itdefault} && + !(\str_if_eq_p:ee {\itdefault} {\sldefault}) + } + { + \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} + {bx} {\sldefault} + { <->ssub*\g__fontspec_nfss_family_tl/bx/\itdefault } + { \l__fontspec_postadjust_tl } + } + + } + } +\cs_new:Nn \__fontspec_declare_shape_loginfo:nn + { + \tl_gput_right:Nx \g__fontspec_defined_shapes_tl + { + \exp_not:n { \\ } + -~ \exp_not:N \str_case:nn {#1/#2} + { + {\mddefault/\shapedefault} {'normal'~} + {\bfdefault/\shapedefault} {'bold'~} + {\mddefault/\itdefault} {'italic'~} + {\mddefault/\sldefault} {'slanted'~} + {\mddefault/\swdefault} {'swash'~} + {\bfdefault/\itdefault} {'bold~ italic'~} + {\bfdefault/\sldefault} {'bold~ slanted'~} + {\bfdefault/\swdefault} {'bold~ swash'~} + } (#1/#2)~ + with~ NFSS~ spec.:~ + \l__fontspec_nfss_tl + \exp_not:n { \\ } + -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} } + { + {\mddefault/\scdefault} {'small~ caps'~} + {\bfdefault/\scdefault} {'bold~ small~ caps'~} + {\mddefault/\scitdefault} {'italic~ small~ caps'~} + {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~} + {\mddefault/\scsldefault} {'slanted~ small~ caps'~} + {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~} + }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~ + with~ NFSS~ spec.:~ + \l__fontspec_nfss_sc_tl + \tl_if_empty:fF {\l__fontspec_postadjust_tl} + { + \exp_not:N \\ and~ font~ adjustment~ code: + \exp_not:N \\ \l__fontspec_postadjust_tl + } + } + } +\tl_set:Nn \l__fontspec_pre_feat_sclist + { + mode = \l__fontspec_mode_tl ; + \tl_if_empty:NF \l__fontspec_shaper_tl { shaper = \l__fontspec_shaper_tl ; } + \tl_if_empty:NF \l__fontspec_script_tl { script = \l__fontspec_script_tl ; } + \tl_if_empty:NF \l__fontspec_lang_tl { language = \l__fontspec_lang_tl ; } + } +\cs_new:Nn \__fontspec_make_smallcaps:TF + { + \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2} + } +\cs_new:Nn \__fontspec_update_featstr:n + { + \bool_if:NF \l__fontspec_firsttime_bool + { + \tl_gset:Nx \g__fontspec_single_feat_tl { #1 } + \tl_gput_right:Nx \g__fontspec_rawfeatures_sclist {#1;} + } + } +\cs_new:Nn \__fontspec_remove_clashing_featstr:n + { + \clist_map_inline:nn {#1} + { + \tl_gremove_all:Nn \g__fontspec_rawfeatures_sclist {##1;} + } + } +\cs_generate_variant:Nn \__fontspec_remove_clashing_featstr:n {x} +\cs_set:Npn \__fontspec_init: + { + \bool_set_false:N \l__fontspec_ot_bool + \bool_set_true:N \l__fontspec_firsttime_bool + \__fontspec_font_is_name: + \tl_clear:N \l__fontspec_font_path_tl + \tl_clear:N \l__fontspec_optical_size_tl + \tl_clear:N \l__fontspec_ttc_index_tl + \tl_clear:N \l__fontspec_renderer_tl + \tl_gclear:N \g__fontspec_defined_shapes_tl + \tl_gclear:N \g__fontspec_curr_series_tl + \tl_gset_eq:NN \g__fontspec_nfss_enc_tl \g_fontspec_encoding_tl + \tl_set:Nn \l__fontspec_mode_tl {node} + \int_set:Nn \prehyphenchar { `\- } % fixme + \int_zero:N \posthyphenchar % fixme + \int_zero:N \preexhyphenchar % fixme + \int_zero:N \postexhyphenchar % fixme + } +\cs_new:Nn \__fontspec_init_fontface: + { + \tl_gclear:N \g__fontspec_rawfeatures_sclist + \tl_clear:N \l__fontspec_scale_tl + \tl_set_eq:NN \l__fontspec_opacity_tl \c__fontspec_opacity_tl + \tl_set_eq:NN \l__fontspec_hexcol_tl \c__fontspec_hexcol_tl + \tl_set_eq:NN \l__fontspec_postadjust_tl \c__fontspec_postadjust_tl + \tl_clear:N \l__fontspec_wordspace_adjust_tl + \tl_clear:N \l__fontspec_punctspace_adjust_tl + } +\cs_new_protected:Nn \__fontspec_ot_validate_tag:n + { + \__fontspec_ot_validate_tag:w #1 \q_nil + } +\cs_generate_variant:Nn \__fontspec_ot_validate_tag:n {x} +\cs_set:Npn \__fontspec_ot_validate_tag:w #1 #2 \q_nil + { + \bool_if:nTF { \str_if_eq_p:nn {#1} {+} || \str_if_eq_p:nn {#1} {-} } + { \__fontspec_ot_validate_tag_aux:w #2 \c_empty_tl \c_empty_tl \q_nil } + { \__fontspec_ot_validate_tag_aux:w #1#2 \c_empty_tl \c_empty_tl \q_nil } + } +\cs_set:Npn \__fontspec_ot_validate_tag_aux:w #1#2#3#4#5 \q_nil + { + \int_compare:nT { \tl_count:n {#5} > 2 } + { \__fontspec_error:nx {ot-tag-too-long} {#1#2#3#4#5} } + } + +%%^^A%% fontspec-code-opentype.dtx -- part of FONTSPEC + +\cs_new:Nn \__fontspec_define_opentype_feature_group:n + { + \keys_define:nn {fontspec-opentype} { #1 .multichoice: , .groups:n = {opentype} } + } +\cs_new:Nn \__fontspec_feat_prop_add:nn + { + \tl_if_empty:nF {#1} + { + \prop_if_in:NnF \g__fontspec_OT_features_prop {#1} + { + \prop_gput:Nnn \g__fontspec_OT_features_prop {#1} {#2} + } + } + } +\cs_new:Nn \__fontspec_define_opentype_feature:nnnnn + { + \__fontspec_feat_prop_add:nn {#3} {#1\,=\,#2} + \tl_if_empty:nTF {#4} + { + \keys_define:nn {fontspec-opentype} + { + #1/#2 .code:n = + { \__fontspec_remove_clashing_featstr:n {#5} } , + #1/#2 .groups:n = {opentype} + } + } + { + \keys_define:nn {fontspec-opentype} + { + #1/#2 .code:n = + { + \__fontspec_make_OT_feature:nnn {#3} {#4} {#5} + } , + #1/#2 .groups:n = {opentype} + } + } + } +\cs_new:Nn \__fontspec_feat_off:n {#1Off} +\cs_new:Nn \__fontspec_feat_reset:n {#1Reset} +\cs_new:Nn \__fontspec_define_opentype_onoffreset:nnnnn + { + \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} {#2} {#3} {+#4} {#5} + \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_off:n {#2} } {#3} {-#4} {} + \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_reset:n {#2} } {} {} {+#4,-#4} + } +\cs_new:Nn \__fontspec_define_opentype_onreset:nnnnn + { + \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} {#2} {#3} {#4} {#5} + \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_reset:n {#2} } {} {} {#4} + } +\cs_new:Nn \__fontspec_make_OT_feature:nnn + { + + \bool_set_true:N \l__fontspec_proceed_bool + + \tl_if_empty:nF {#1} + { + \exp_args:No \__fontspec_check_ot_feat:NnF \l__fontspec_fontface_cs_tl {#1} + { + \__fontspec_warning:nx {icu-feature-not-exist-in-font} {#1} + \bool_set_false:N \l__fontspec_proceed_bool + } + } + + \__fontspec_remove_clashing_featstr:x { #2 , \__fontspec_swap_plus_minus:n {#2} , #3 } + + \bool_if:NT \l__fontspec_proceed_bool { \__fontspec_update_featstr:n {#2} } + } +\cs_generate_variant:Nn \__fontspec_make_OT_feature:nnn {xxx} +\cs_new:Nn \__fontspec_swap_plus_minus:n { \__fontspec_swap_plus_minus_aux:Nq #1 \q_nil } +\cs_new:Npn \__fontspec_swap_plus_minus_aux:Nq #1#2 \q_nil + { \str_case:nn {#1} { {+} {-#2} {-} {+#2} } } +\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF,T} + { + \bool_if:NTF \l__fontspec_never_check_bool + { \prg_return_true: } + { + \bool_if:nTF { \tl_if_empty_p:e {#2} } + { \prg_return_false: } + { + \__fontspec_ot_validate_tag:x {#2} + \cs_if_eq:NNTF #1 \font + { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} } + { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} } + \lua_now:e { fontspec.check_ot_script("\l__fontspec_tmp_tl", "#2") } + \bool_if:NTF \l__fontspec_check_bool + { + \prg_return_true: + } + { + \prg_return_false: + } + } + } + } +\prg_new_conditional:Nnn \__fontspec_check_lang:Nn {TF} + { + \__fontspec_check_lang:NnnTF #1 {#2} {\l__fontspec_script_tl} {\prg_return_true:} {\prg_return_false:} + } +\prg_new_conditional:Nnn \__fontspec_check_lang:Nnn {TF} + { + \bool_if:NTF \l__fontspec_never_check_bool + { \prg_return_true: } + { + \bool_if:nTF { \tl_if_empty_p:e {#3} } + { \prg_return_false: } + { + \__fontspec_ot_validate_tag:x {#2} + \__fontspec_ot_validate_tag:x {#3} + \cs_if_eq:NNTF #1 \font + { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} } + { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} } + \__fontspec_lua_function:neee {check_ot_lang} {\l__fontspec_tmp_tl} {#2} {#3} + \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false: + } + } + } +\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nn {TF,F} + { + \__fontspec_check_ot_feat:NnnnTF #1 {#2} {\l__fontspec_lang_tl} {\l__fontspec_script_tl} + {\prg_return_true:} {\prg_return_false:} + } +\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,F} + { + \bool_if:NTF \l__fontspec_never_check_bool + { \prg_return_true: } + { + \bool_if:nTF { \tl_if_empty_p:e {#3} || \tl_if_empty_p:e {#4} } + { \prg_return_false: } + { + \__fontspec_ot_validate_tag:x {#2} + \__fontspec_ot_validate_tag:x {#3} + \__fontspec_ot_validate_tag:x {#4} + \cs_if_eq:NNTF #1 \font + { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} } + { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} } + \__fontspec_lua_function:neeee {check_ot_feat} {\l__fontspec_tmp_tl} {#2} {#3} {#4} + \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false: + } + } + } +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {aalt}{Access~All~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvf}{Above-base~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvm}{Above-base~Mark~Positioning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvs}{Above-base~Substitutions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {afrc}{Alternative~Fractions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {akhn}{Akhands} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blwf}{Below-base~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blwm}{Below-base~Mark~Positioning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blws}{Below-base~Substitutions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {calt}{Contextual~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {case}{Case-Sensitive~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ccmp}{Glyph~Composition~/~Decomposition} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cfar}{Conjunct~Form~After~Ro} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cjct}{Conjunct~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {clig}{Contextual~Ligatures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cpct}{Centered~CJK~Punctuation} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cpsp}{Capital~Spacing} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cswh}{Contextual~Swash} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {curs}{Cursive~Positioning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cvNN}{Character~Variant~$N$} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {c2pc}{Petite~Capitals~From~Capitals} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {c2sc}{Small~Capitals~From~Capitals} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dist}{Distances} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dlig}{Discretionary~Ligatures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dnom}{Denominators} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dtls}{Dotless~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {expt}{Expert~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {falt}{Final~Glyph~on~Line~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fin2}{Terminal~Forms~\#2} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fin3}{Terminal~Forms~\#3} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fina}{Terminal~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {flac}{Flattened~accent~forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {frac}{Fractions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fwid}{Full~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {half}{Half~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {haln}{Halant~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {halt}{Alternate~Half~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hist}{Historical~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hkna}{Horizontal~Kana~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hlig}{Historical~Ligatures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hngl}{Hangul} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hojo}{Hojo~Kanji~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hwid}{Half~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {init}{Initial~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {isol}{Isolated~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ital}{Italics} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jalt}{Justification~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp78}{JIS78~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp83}{JIS83~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp90}{JIS90~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp04}{JIS2004~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {kern}{Kerning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {lfbd}{Left~Bounds} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {liga}{Standard~Ligatures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ljmo}{Leading~Jamo~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {lnum}{Lining~Figures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {locl}{Localized~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ltra}{Left-to-right~alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ltrm}{Left-to-right~mirrored~forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mark}{Mark~Positioning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {med2}{Medial~Forms~\#2} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {medi}{Medial~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mgrk}{Mathematical~Greek} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mkmk}{Mark~to~Mark~Positioning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mset}{Mark~Positioning~via~Substitution} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nalt}{Alternate~Annotation~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nlck}{NLC~Kanji~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nukt}{Nukta~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {numr}{Numerators} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {onum}{Oldstyle~Figures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {opbd}{Optical~Bounds} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ordn}{Ordinals} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ornm}{Ornaments} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {palt}{Proportional~Alternate~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pcap}{Petite~Capitals} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pkna}{Proportional~Kana} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pnum}{Proportional~Figures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pref}{Pre-Base~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pres}{Pre-base~Substitutions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pstf}{Post-base~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {psts}{Post-base~Substitutions} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pwid}{Proportional~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {qwid}{Quarter~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rand}{Randomize} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rclt}{Required~Contextual~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rkrf}{Rakar~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rlig}{Required~Ligatures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rphf}{Reph~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtbd}{Right~Bounds} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtla}{Right-to-left~alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtlm}{Right-to-left~mirrored~forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ruby}{Ruby~Notation~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rvrn}{Required~Variation~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {salt}{Stylistic~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {sinf}{Scientific~Inferiors} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {size}{Optical~size} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {smcp}{Small~Capitals} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {smpl}{Simplified~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ssNN}{Stylistic~Set~$N$} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ssty}{Math~script~style~alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {stch}{Stretching~Glyph~Decomposition} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {subs}{Subscript} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {sups}{Superscript} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {swsh}{Swash} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {titl}{Titling} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tjmo}{Trailing~Jamo~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tnam}{Traditional~Name~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tnum}{Tabular~Figures} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {trad}{Traditional~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {twid}{Third~Widths} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {unic}{Unicase} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {valt}{Alternate~Vertical~Metrics} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vatu}{Vattu~Variants} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vert}{Vertical~Writing} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vhal}{Alternate~Vertical~Half~Metrics} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vjmo}{Vowel~Jamo~Forms} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vkna}{Vertical~Kana~Alternates} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vkrn}{Vertical~Kerning} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vpal}{Proportional~Alternate~Vertical~Metrics} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vrt2}{Vertical~Alternates~and~Rotation} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vrtr}{Vertical~Alternates~for~Rotation} +\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {zero}{Slashed~Zero} + +%%^^A%% fontspec-code-graphite.dtx -- part of FONTSPEC + + +%%^^A%% fontspec-code-keyval.dtx -- part of FONTSPEC + +\clist_gset:Nn \g__fontspec_all_keyval_modules_clist + { + fontspec, fontspec-opentype, fontspec-aat, + fontspec-preparse, fontspec-preparse-cfg, fontspec-preparse-external, fontspec-preparse-nested, + fontspec-renderer + } +\cs_new:Nn \__fontspec_keys_define_code:nnn + { + \keys_define:nn {#1} { #2 .code:n = {#3} } + } +\cs_new:Nn \__fontspec_aff_error:n + { + \__fontspec_keys_define_code:nnn {fontspec-addfeatures} {#1} + { \__fontspec_error:nx {not-in-addfontfeatures} {#1} } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-cfg} {IgnoreFontspecFile} + { + \bool_set_false:N \l__fontspec_fontcfg_bool + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {IgnoreFontspecFile} + { + \bool_set_false:N \l__fontspec_fontcfg_bool + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {Path} + { + \bool_set_true:N \l__fontspec_nobf_bool + \bool_set_true:N \l__fontspec_noit_bool + \bool_set_true:N \l__fontspec_external_bool + \tl_set:Nn \l__fontspec_font_path_tl {#1} + \__fontspec_font_is_file: + } +\aliasfontfeature{Path}{ExternalLocation} +\__fontspec_keys_define_code:nnn {fontspec} {Path} {} +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {Extension} + { + \tl_set:Nn \l__fontspec_extension_tl {#1} + \bool_if:NF \l__fontspec_external_bool + { + \keys_set:nn {fontspec-preparse-external} {Path} + } + } +\tl_clear:N \l__fontspec_extension_tl +\__fontspec_keys_define_code:nnn {fontspec} {Extension} {} +\keys_define:nn {fontspec-renderer} + { + Renderer .choices:nn = + {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite} + { + \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l__fontspec_harfbuzz_bool } + + \tl_set:Nx \l__fontspec_mode_tl + { + \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}} + } + + \tl_set:Nx \l__fontspec_shaper_tl + { + \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} } + } + + + \tl_gset:Nx \g__fontspec_single_feat_tl + { + mode=\l__fontspec_mode_tl ; + \tl_if_empty:NF \l__fontspec_shaper_tl { shaper=\l__fontspec_shaper_tl} + } + } , + + Renderer unknown .code:n = + { + \bool_set_true:N \l__fontspec_harfbuzz_bool + \__fontspec_warning:nx {unknown-renderer} {#1} + \tl_set:Nn \l__fontspec_mode_tl {harf} + \tl_set:Nn \l__fontspec_shaper_tl {#1} + } , + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {Script} + { + \tl_set:Nn \l__fontspec_script_name_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {Language} + { + \tl_set:Nn \l__fontspec_lang_name_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {FontIndex} + { + \str_if_eq:eeF { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc} + { \__fontspec_warning:n {font-index-needs-ttc} } + \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)} + } +\__fontspec_keys_define_code:nnn {fontspec} {FontIndex} + { + \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {UprightFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_up_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {ItalicFont} + { + \tl_if_empty:nTF {#1} + { + \bool_set_true:N \l__fontspec_noit_bool + } + { + \bool_set_false:N \l__fontspec_noit_bool + \fontspec_complete_fontname:Nn \l__fontspec_fontname_it_tl {#1} + } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {SlantedFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_sl_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {SwashFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_sw_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldFont} + { + \tl_if_empty:nTF {#1} + { + \bool_set_true:N \l__fontspec_nobf_bool + } + { + \bool_set_false:N \l__fontspec_nobf_bool + \fontspec_complete_fontname:Nn \l__fontspec_curr_bfname_tl {#1} + + \seq_if_empty:NT \l__fontspec_bf_series_seq + { + \tl_gset:Nx \g__fontspec_curr_series_tl {\bfdefault} + \seq_put_right:Nx \l__fontspec_bf_series_seq {\bfdefault} + } + + \tl_if_eq:oxT \g__fontspec_curr_series_tl {\bfdefault} + { + \tl_set_eq:NN \l__fontspec_fontname_bf_tl \l__fontspec_curr_bfname_tl + } + + \prop_put:NxV \l__fontspec_nfss_prop {BoldFont-\g__fontspec_curr_series_tl} \l__fontspec_curr_bfname_tl + + + } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldItalicFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfit_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldSlantedFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfsl_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldSwashFont} + { + \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfsw_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFont} + { + \tl_if_empty:nTF {#1} + { + \bool_set_true:N \l__fontspec_nosc_bool + } + { + \bool_set_false:N \l__fontspec_nosc_bool + \fontspec_complete_fontname:Nn \l__fontspec_fontname_sc_tl {#1} + } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {UprightFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_up_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_bfit_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_sl_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_bfsl_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {SwashFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_sw_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSwashFeatures} + { + \clist_put_right:Nn \l__fontspec_fontfeat_bfsw_clist {#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFeatures} + { + \bool_if:NF \l__fontspec_firsttime_bool + { + \clist_put_right:Nn \l__fontspec_fontfeat_sc_clist {#1} + } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {SizeFeatures} + { + \clist_set:Nn \l__fontspec_sizefeat_clist {#1} + \clist_put_right:Nn \l__fontspec_fontfeat_up_clist { SizeFeatures = {#1} } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-nested} {SizeFeatures} + { + \clist_set:Nn \l__fontspec_sizefeat_clist {#1} + \tl_if_empty:NT \l__fontspec_this_font_tl + { \tl_set:Nn \l__fontspec_this_font_tl { -- } } % needs to be non-empty as a flag + } +\__fontspec_keys_define_code:nnn {fontspec-preparse-nested} {Font} + { + \tl_set:Nn \l__fontspec_this_font_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {SizeFeatures} + { + % dummy + } +\__fontspec_keys_define_code:nnn {fontspec} {Font} + { + % dummy + } +\__fontspec_keys_define_code:nnn {fontspec-sizing} {Size} + { + \tl_set:Nn \l__fontspec_size_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-sizing} {Font} + { + \fontspec_complete_fontname:Nn \l__fontspec_sizedfont_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-opentype} {UprightFont} {} +\__fontspec_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {} +\__fontspec_keys_define_code:nnn {fontspec-opentype} {SlantedFont} {} +\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldFont} {} +\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {} +\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldSlantedFont} {} +\__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSEncoding} + { + \tl_gset:Nx \g__fontspec_nfss_enc_tl { #1 } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSFamily} + { + \tl_set:Nx \l__fontspec_nfss_fam_tl { #1 } + } +\__fontspec_keys_define_code:nnn {fontspec-preparse} {FontFace} + { + \tl_clear:N \l__fontspec_this_font_tl + \clist_set:No \l__fontspec_arg_clist { \use_iii:nnn #1 } + \clist_set_eq:NN \l__fontspec_this_feat_clist \l__fontspec_arg_clist + \int_compare:nT { \clist_count:N \l__fontspec_arg_clist = 1 } + { + \tl_if_in:NnF \l__fontspec_arg_clist {=} + { + \tl_set_eq:NN \l__fontspec_this_font_tl \l__fontspec_arg_clist + \tl_clear:N \l__fontspec_this_feat_clist + } + } + + \__fontspec_add_nfssfont:nnnn + {\use_i:nnn #1} {\use_ii:nnn #1} {\l__fontspec_this_font_tl} {\l__fontspec_this_feat_clist} + } +\__fontspec_keys_define_code:nnn {fontspec} {Scale} + { + \str_case:nnF {#1} + { + {MatchLowercase} { \__fontspec_calc_scale:n {5} } + {MatchUppercase} { \__fontspec_calc_scale:n {8} } + } + { \tl_set:Nx \l__fontspec_scale_tl {#1} } + } +\__fontspec_keys_define_code:nnn {fontspec} {ScaleAgain} + { + \tl_if_empty:NT \l__fontspec_scale_tl { \tl_set:Nn \l__fontspec_scale_tl {1} } + \tl_set:Nx \l__fontspec_scale_tl { \fp_eval:n { #1 * \l__fontspec_scale_tl } } + \__fontspec_info:n {set-scale} + } +\cs_new:Nn \__fontspec_calc_scale:n + { + \group_begin: + + \fontencoding { \encodingdefault } + \fontfamily { \familydefault } + \selectfont + + \__fontspec_set_font_dimen:NnN \l__fontspec_tmpa_dim {#1} \font + \__fontspec_set_font_dimen:NnN \l__fontspec_tmpb_dim {#1} \l__fontspec_fontface_cs_tl + + \tl_set:Nx \l__fontspec_scale_tl + { + \fp_eval:n { \dim_to_fp:n {\l__fontspec_tmpa_dim} / + \dim_to_fp:n {\l__fontspec_tmpb_dim} } + } + + \__fontspec_info:n {set-scale} + \exp_args:NNNx + \group_end: + \tl_set:Nx \l__fontspec_scale_tl { \l__fontspec_scale_tl } + } +\cs_new:Nn \__fontspec_set_font_dimen:NnN + { + \dim_set:Nn #1 { \fontdimen #2 #3 } + \dim_compare:nNnT #1 = {0pt} + { + \settoheight #1 + { + \str_if_eq:nnTF {#3} {\font} \rmfamily #3 + \int_case:nnF #2 + { + {5} {x} % x-height + {8} {X} % cap-height + } {?} % "else" clause; never reached. + } + } + } +\__fontspec_keys_define_code:nnn {fontspec} {WordSpace} + { + \bool_if:NF \l__fontspec_firsttime_bool + { \_fontspec_parse_wordspace:w #1,,,\q_stop } + } +\__fontspec_aff_error:n {WordSpace} +\cs_set:Npn \_fontspec_parse_wordspace:w #1,#2,#3,#4 \q_stop + { + \tl_if_empty:nTF {#4} + { + \tl_set:Nn \l__fontspec_wordspace_adjust_tl + { + \fontdimen 2 \font = #1 \fontdimen 2 \font + \fontdimen 3 \font = #1 \fontdimen 3 \font + \fontdimen 4 \font = #1 \fontdimen 4 \font + } + } + { + \tl_set:Nn \l__fontspec_wordspace_adjust_tl + { + \fontdimen 2 \font = #1 \fontdimen 2 \font + \fontdimen 3 \font = #2 \fontdimen 3 \font + \fontdimen 4 \font = #3 \fontdimen 4 \font + } + } + } +\__fontspec_keys_define_code:nnn {fontspec} {PunctuationSpace} + { + \str_case_e:nnF {#1} + { + {WordSpace} + { + \tl_set:Nn \l__fontspec_punctspace_adjust_tl + { \fontdimen 7 \font = 0 \fontdimen 2 \font } + } + {TwiceWordSpace} + { + \tl_set:Nn \l__fontspec_punctspace_adjust_tl + { \fontdimen 7 \font = 1 \fontdimen 2 \font } + } + } + { + \tl_set:Nn \l__fontspec_punctspace_adjust_tl + { \fontdimen 7 \font = #1 \fontdimen 7 \font } + } + } +\__fontspec_aff_error:n {PunctuationSpace} +\__fontspec_keys_define_code:nnn {fontspec} {FontAdjustment} + { + \tl_put_right:Nx \l__fontspec_postadjust_tl {#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {LetterSpace} + { + \__fontspec_update_featstr:n {letterspace=#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {HyphenChar} + { + \str_if_eq:nnTF {#1} {None} + { + \tl_put_right:Nn \l__fontspec_postadjust_tl + { \__fontspec_primitive_font_set_hyphenchar:Nn \font {-1} } + } + { + \__fontspec_warning:nx {only-xetex-feature} {HyphenChar} + + \tl_if_single:nTF {#1} + { \tl_set:Nn \l__fontspec_hyphenchar_tl {`#1} } + { \tl_set:Nn \l__fontspec_hyphenchar_tl { #1} } + + \exp_args:No \__fontspec_primitive_font_glyph_if_exist:NnTF \l__fontspec_fontface_cs_tl {\l__fontspec_hyphenchar_tl} + { + \tl_put_right:Nn \l__fontspec_postadjust_tl + { \__fontspec_primitive_font_set_hyphenchar:Nn \font { \l__fontspec_hyphenchar_tl } } + } + { \__fontspec_error:nxx {no-glyph}{\l_fontspec_fontname_tl}{#1} } + + } + } +\__fontspec_aff_error:n {HyphenChar} +\__fontspec_keys_define_code:nnn {fontspec} {Color} + { + \tl_set:Nn \l__fontspec_hexcol_tl {#1} + } +\cs_set:Npn \fontspec_parse_colour:viii #1#2#3#4#5#6#7#8 + { + \tl_set:Nn \l__fontspec_hexcol_tl {#1#2#3#4#5#6} + \tl_if_eq:NNF \l__fontspec_opacity_tl \c__fontspec_opacity_tl + { + \bool_if:NF \l__fontspec_firsttime_bool + { \__fontspec_warning:nx {opa-twice-col} {#7#8} } + } + \tl_set:Nn \l__fontspec_opacity_tl {#7#8} + } +\aliasfontfeature{Color}{Colour} +\__fontspec_keys_define_code:nnn {fontspec} {Opacity} + { + \int_set:Nn \l__fontspec_tmp_int {255} + \__fontspec_int_mult_truncate:Nn \l__fontspec_tmp_int { #1 } + \tl_if_eq:NNF \l__fontspec_opacity_tl \c__fontspec_opacity_tl + { + \bool_if:NF \l__fontspec_firsttime_bool + { \__fontspec_warning:nx {opa-twice} {#1} } + } + \tl_set:Nx \l__fontspec_opacity_tl + { + , + \int_compare:nT { \l__fontspec_tmp_int <= "F } {0} % zero pad + \int_to_hex:n { \l__fontspec_tmp_int } + } + } +\__fontspec_keys_define_code:nnn {fontspec-opentype} {Mapping} + { + \str_if_eq:nnTF {#1} {tex-text} + { + \__fontspec_warning:n {no-mapping-ligtex} + \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none} + \keys_set:nn {fontspec-opentype} { Ligatures=TeX } + } + { \__fontspec_warning:n {no-mapping} } + } +\__fontspec_keys_define_code:nnn {fontspec} {Weight} + { + \__fontspec_update_featstr:n{weight=#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {Width} + { + \__fontspec_update_featstr:n{width=#1} + } +\__fontspec_keys_define_code:nnn {fontspec} {OpticalSize} + { + \tl_set:Nn \l__fontspec_optical_size_tl {/ S = #1} + } +\keys_define:nn {fontspec} + { + FakeSlant .code:n = + { + \__fontspec_update_featstr:n {slant=#1} + }, + FakeSlant .default:n = {0.2} + } +\keys_define:nn {fontspec} + { + FakeStretch .code:n = + { + \__fontspec_update_featstr:n {extend=#1} + }, + FakeStretch .default:n = {1.2} + } +\keys_define:nn {fontspec} + { + FakeBold .code:n = + { + \__fontspec_update_featstr:n {embolden=#1} + }, + FakeBold .default:n = {1.5} + } +\keys_define:nn {fontspec} + { + AutoFakeSlant .code:n = + { + \bool_if:NT \l__fontspec_firsttime_bool + { + \tl_set:Nn \l__fontspec_fake_slant_tl {#1} + \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {FakeSlant=#1} + \tl_set_eq:NN \l__fontspec_fontname_it_tl \l_fontspec_fontname_tl + \bool_set_false:N \l__fontspec_noit_bool + + \tl_if_empty:NF \l__fontspec_fake_embolden_tl + { + \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist + {FakeBold=\l__fontspec_fake_embolden_tl} + \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist {FakeSlant=#1} + \tl_set_eq:NN \l__fontspec_fontname_bfit_tl \l_fontspec_fontname_tl + } + } + }, + AutoFakeSlant .default:n = {0.2} + } +\keys_define:nn {fontspec} + { + AutoFakeBold .code:n = + { + \bool_if:NT \l__fontspec_firsttime_bool + { + \tl_set:Nn \l__fontspec_fake_embolden_tl {#1} + \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {FakeBold=#1} + \tl_set_eq:NN \l__fontspec_fontname_bf_tl \l_fontspec_fontname_tl + \bool_set_false:N \l__fontspec_nobf_bool + + \tl_if_empty:NF \l__fontspec_fake_slant_tl + { + \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist + {FakeSlant=\l__fontspec_fake_slant_tl} + \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist {FakeBold=#1} + \tl_set_eq:NN \l__fontspec_fontname_bfit_tl \l_fontspec_fontname_tl + } + } + }, + AutoFakeBold .default:n = {1.5} + } +\__fontspec_keys_define_code:nnn {fontspec-opentype} {RawFeature} + { + \__fontspec_update_featstr:n {#1} + } +\__fontspec_keys_define_code:nnn {fontspec-aat} {RawFeature} + { + \__fontspec_update_featstr:n {#1} + } + +%%^^A%% fontspec-code-feat-opentype.dtx -- part of FONTSPEC + +\__fontspec_feat_prop_add:nn {salt} { Alternate\,=\,$N$ } +\__fontspec_feat_prop_add:nn {nalt} { Annotation\,=\,$N$ } +\__fontspec_feat_prop_add:nn {ornm} { Ornament\,=\,$N$ } +\__fontspec_feat_prop_add:nn {cvNN} { CharacterVariant\,=\,$N$:$M$ } +\__fontspec_feat_prop_add:nn {ssNN} { StylisticSet\,=\,$N$ } +\__fontspec_define_opentype_feature_group:n {Ligatures} +\__fontspec_define_opentype_feature:nnnnn {Ligatures} {ResetAll} {} {} + { + +dlig,-dlig,+rlig,-rlig,+liga,-liga,+dlig,-dlig,+clig,-clig,+hlig,-hlig, + +tlig,-tlig + } +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Required} {rlig} {rlig} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Common} {liga} {liga} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Rare} {dlig} {dlig} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Discretionary} {dlig} {dlig} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Contextual} {clig} {clig} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Historic} {hlig} {hlig} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {TeX} {} {tlig} {} +\__fontspec_define_opentype_feature_group:n {Letters} +\__fontspec_define_opentype_feature:nnnnn {Letters} {ResetAll} {} {} + { + +case,+smcp,+pcap,+c2sc,+c2pc,+unic,+rand, + -case,-smcp,-pcap,-c2sc,-c2pc,-unic,-rand + } +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {} +\__fontspec_define_opentype_feature_group:n {Numbers} +\__fontspec_define_opentype_feature:nnnnn {Numbers} {ResetAll} {} {} + { + +tnum,-tnum, + +pnum,-pnum, + +onum,-onum, + +lnum,-lnum, + +zero,-zero, + +anum,-anum, + } +\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Monospaced} {tnum} {tnum} {+pnum,-pnum} +\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Proportional} {pnum} {pnum} {+tnum,-tnum} +\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Lowercase} {onum} {onum} {+lnum,-lnum} +\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Uppercase} {lnum} {lnum} {+onum,-onum} +\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {SlashedZero} {zero} {zero} {} +\aliasfontfeatureoption {Numbers} {Monospaced} {Tabular} +\aliasfontfeatureoption {Numbers} {Lowercase} {OldStyle} +\aliasfontfeatureoption {Numbers} {Uppercase} {Lining} + \__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Arabic} {anum} {anum} {} +\__fontspec_define_opentype_feature_group:n {VerticalPosition} +\__fontspec_define_opentype_feature:nnnnn {VerticalPosition} {ResetAll} {} {} + { + +sups,-sups, + +subs,-subs, + +ordn,-ordn, + +numr,-numr, + +dnom,-dnom, + +sinf,-sinf, + } +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Superior} {sups} {sups} {+subs,+ordn,+numr,+dnom,+sinf} +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Inferior} {subs} {subs} {+sups,+ordn,+numr,+dnom,+sinf} +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Ordinal} {ordn} {ordn} {+sups,+subs,+numr,+dnom,+sinf} +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Numerator} {numr} {numr} {+sups,+subs,+ordn,+dnom,+sinf} +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Denominator} {dnom} {dnom} {+sups,+subs,+ordn,+numr,+sinf} +\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {ScientificInferior} {sinf} {sinf} {+sups,+subs,+ordn,+numr,+dnom} +\__fontspec_define_opentype_feature_group:n {Contextuals} +\__fontspec_define_opentype_feature:nnnnn {Contextuals} {ResetAll} {} {} + { + +cswh,-cswh, + +calt,-calt, + +init,-init, + +fina,-fina, + +falt,-falt, + +medi,-medi, + } +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Swash} {cswh} {cswh} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Alternate} {calt} {calt} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {WordInitial} {init} {init} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {WordFinal} {fina} {fina} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {LineFinal} {falt} {falt} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Inner} {medi} {medi} {} +\__fontspec_define_opentype_feature_group:n {Diacritics} +\__fontspec_define_opentype_feature:nnnnn {Diacritics} {ResetAll} {} {} + { + +mark,-mark, + +mkmk,-mkmk, + +abvm,-abvm, + +blwm,-blwm, + } +\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToBase} {mark} {mark} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToMark} {mkmk} {mkmk} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {AboveBase} {abvm} {abvm} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {BelowBase} {blwm} {blwm} {} +\__fontspec_define_opentype_feature_group:n {Kerning} +\__fontspec_define_opentype_feature:nnnnn {Kerning} {ResetAll} {} {} + { + +cpsp,-cpsp, + +kern,-kern, + } +\__fontspec_define_opentype_onoffreset:nnnnn {Kerning} {Uppercase} {cpsp} {cpsp} {} +\__fontspec_define_opentype_feature:nnnnn {Kerning} {On} {kern} {+kern} {-kern} +\__fontspec_define_opentype_feature:nnnnn {Kerning} {Off} {kern} {-kern} {+kern} +\__fontspec_define_opentype_feature:nnnnn {Kerning} {Reset} {} {} {+kern,-kern} +\__fontspec_define_opentype_feature_group:n {Fractions} +\__fontspec_define_opentype_feature:nnnnn {Fractions} {ResetAll} {} {} + { + +frac,-frac, + +afrc,-afrc, + } +\__fontspec_define_opentype_feature:nnnnn {Fractions} {On} {frac} {+frac} {} +\__fontspec_define_opentype_feature:nnnnn {Fractions} {Off} {frac} {-frac} {} +\__fontspec_define_opentype_feature:nnnnn {Fractions} {Reset} {} {} {+frac,-frac} +\__fontspec_define_opentype_onoffreset:nnnnn {Fractions} {Alternate} {afrc} {afrc} {-frac} +\__fontspec_define_opentype_feature_group:n {LocalForms} +\__fontspec_define_opentype_feature:nnnnn {LocalForms} {On} {locl} {+locl} {} +\__fontspec_define_opentype_feature:nnnnn {LocalForms} {Off} {locl} {-locl} {} +\__fontspec_define_opentype_feature:nnnnn {LocalForms} {Reset} {} {} {+locl,-locl} + +\__fontspec_define_opentype_feature_group:n {Style} +\__fontspec_define_opentype_feature:nnnnn {Style} {ResetAll} {} {} + { + +salt,-salt, + +ital,-ital, + +ruby,-ruby, + +swsh,-swsh, + +hist,-hist, + +titl,-titl, + +hkna,-hkna, + +vkna,-vkna, + +ssty=0,-ssty=0, + +ssty=1,-ssty=1, + } +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Alternate} {salt} {salt} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Italic} {ital} {ital} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Ruby} {ruby} {ruby} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Swash} {swsh} {swsh} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Cursive} {swsh} {curs} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Historic} {hist} {hist} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Titling} {titl} {titl} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps} {titl} {titl} {} % backwards compat +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana} {hkna} {hkna} {+vkna,+pkna} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {VerticalKana} {vkna} {vkna} {+hkna,+pkna} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna} +\__fontspec_define_opentype_feature:nnnnn {Style} {MathScript} {ssty} {+ssty=0} {+ssty=1} +\__fontspec_define_opentype_feature:nnnnn {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0} +\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {} +\__fontspec_define_opentype_feature_group:n {CJKShape} +\__fontspec_define_opentype_feature:nnnnn {CJKShape} {ResetAll} {} {} + { + +trad,-trad, + +smpl,-smpl, + +jp78,-jp78, + +jp83,-jp83, + +jp90,-jp90, + +jp04,-jp04, + +expt,-expt, + +nlck,-nlck, + } +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Traditional} {trad} {trad} {+smpl,+jp78,+jp83,+jp90,+jp04,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Simplified} {smpl} {smpl} {+trad,+jp78,+jp83,+jp90,+jp04,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1978} {jp78} {jp78} {+trad,+smpl,+jp83,+jp90,+jp04,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1983} {jp83} {jp83} {+trad,+smpl,+jp78,+jp90,+jp04,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1990} {jp90} {jp90} {+trad,+smpl,+jp78,+jp83,+jp04,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS2004} {jp04} {jp04} {+trad,+smpl,+jp78,+jp83,+jp90,+expt,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Expert} {expt} {expt} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+nlck} +\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {NLC} {nlck} {nlck} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+expt} +\__fontspec_define_opentype_feature_group:n {CharacterWidth} +\__fontspec_define_opentype_feature:nnnnn {CharacterWidth} {ResetAll} {} {} + { + +pwid,-pwid, + +fwid,-fwid, + +hwid,-hwid, + +twid,-twid, + +qwid,-qwid, + +palt,-palt, + +halt,-halt, + } +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Proportional} {pwid} {pwid} {+fwid,+hwid,+twid,+qwid,+palt,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Full} {fwid} {fwid} {+pwid,+hwid,+twid,+qwid,+palt,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Half} {hwid} {hwid} {+pwid,+fwid,+twid,+qwid,+palt,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Third} {twid} {twid} {+pwid,+fwid,+hwid,+qwid,+palt,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Quarter} {qwid} {qwid} {+pwid,+fwid,+hwid,+twid,+palt,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateProportional} {palt} {palt} {+pwid,+fwid,+hwid,+twid,+qwid,+halt} +\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateHalf} {halt} {halt} {+pwid,+fwid,+hwid,+twid,+qwid,+palt} +\__fontspec_define_opentype_feature_group:n {Vertical} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {RotatedGlyphs} {vrt2} {vrt2} {+vrtr,+vert} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {AlternatesForRotation} {vrtr} {vrtr} {+vrt2} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {Alternates} {vert} {vert} {+vrt2} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {KanaAlternates} {vkna} {vkna} {+hkna} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {Kerning} {vkrn} {vkrn} {} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {AlternateMetrics} {valt} {valt} {+vhal,+vpal,+kern} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {HalfMetrics} {vhal} {vhal} {+valt,+vpal,+kern} +\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {ProportionalMetrics} {vpal} {vpal} {+valt,+vhal} +\__fontspec_define_opentype_feature_group:n {Alternate} +\keys_define:nn {fontspec-opentype} + { + Alternate .default:n = {0} , + Alternate .groups:n = {opentype}, + Alternate / unknown .code:n = + { + \clist_map_inline:nn {#1} + { \__fontspec_make_OT_feature:nnn {salt}{ +salt = ##1 }{} } + } + } +\keys_define:nn {fontspec-opentype} + { + Alternate / Random .code:n = + { \__fontspec_make_OT_feature:nnn {salt}{ +salt = random }{} } , + } +\aliasfontfeature{Alternate}{StylisticAlternates} +\__fontspec_define_opentype_feature_group:n {Variant} +\keys_define:nn {fontspec-opentype} + { + Variant .default:n = {0} , + Variant .groups:n = {opentype} , + Variant / unknown .code:n = + { + \clist_map_inline:nn {#1} + { + \__fontspec_make_OT_feature:xxx { ss \two@digits {##1} } { +ss \two@digits {##1} } {} + } + } + } +\aliasfontfeature{Variant}{StylisticSet} +\__fontspec_define_opentype_feature_group:n {CharacterVariant} +\use:x + { + \cs_new:Npn \exp_not:N \fontspec_parse_cv:w + ##1 \c_colon_str ##2 \c_colon_str ##3 \exp_not:N \q_nil + { + \__fontspec_make_OT_feature:xxx + { cv \exp_not:N \two@digits {##1} } + { +cv \exp_not:N \two@digits {##1} = ##2 } {} + } + \keys_define:nn {fontspec-opentype} + { + CharacterVariant / unknown .code:n = + { + \clist_map_inline:nn {##1} + { + \exp_not:N \fontspec_parse_cv:w + ####1 \c_colon_str 0 \c_colon_str \exp_not:N \q_nil + } + } + } + } +\__fontspec_define_opentype_feature_group:n {Annotation} +\keys_define:nn {fontspec-opentype} + { + Annotation .default:n = {0} , + Annotation .groups:n = {opentype}, + Annotation / unknown .code:n = + { + \__fontspec_make_OT_feature:nnn {nalt} {+nalt=#1} {} + } + } +\__fontspec_define_opentype_feature_group:n {Ornament} +\keys_define:nn {fontspec-opentype} + { + Ornament .default:n = {0} , + Ornament .groups:n = {opentype}, + Ornament / unknown .code:n = + { + \__fontspec_make_OT_feature:nnn {ornm} { +ornm=#1 } {} + } + } +\keys_define:nn {fontspec-opentype} + { + Script .choice: , + Script .groups:n = {opentype} , + } +\cs_new:Nn \fontspec_new_script:nn + { + \keys_define:nn {fontspec-opentype} { Script / #1 .code:n = + { + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {####1} + { + \tl_set:Nn \l__fontspec_script_name_tl {#1} + \tl_set:Nn \l__fontspec_script_tl {####1} + \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int} + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 } + \clist_map_break: + } + } + + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \bool_if:nF { \str_if_eq_p:ee {#1} {CustomDefault} } + { + \tl_clear:N \l__fontspec_script_name_tl + \__fontspec_warning:nxx {no-script} {\l_fontspec_fontname_tl} {#1} + } + + \bool_if:nF + { + \str_if_eq_p:ee {#1} {Default} || + \str_if_eq_p:ee {#1} {Latin} || + \str_if_eq_p:ee {#1} {CustomDefault} + } + { + \keys_set:nn {fontspec-opentype} { Script = CustomDefault } + } + } + } + } + } +\keys_define:nn {fontspec-opentype} + { + Language .choice: , + Language .groups:n = {opentype} , + } +\cs_new:Nn \fontspec_new_lang:nn + { + \keys_define:nn {fontspec-opentype} { Language / #1 .code:n = + { + \bool_set_false:N \l__fontspec_scriptlang_exist_bool + \clist_map_inline:nn {#2} + { + \exp_args:No \__fontspec_check_lang:NnTF \l__fontspec_fontface_cs_tl {####1} + { + \tl_set:Nn \l__fontspec_lang_tl {####1} + \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int} + \tl_gset:Nx \g__fontspec_single_feat_tl { language=####1 } + \bool_set_true:N \l__fontspec_scriptlang_exist_bool + \clist_map_break: + } + } + \bool_if:NF \l__fontspec_scriptlang_exist_bool + { + \__fontspec_warning:nx {language-not-exist} {#1} + \keys_set:nn {fontspec-opentype} { Language = Default } + } + } + } + } +\__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default } + { + \tl_set:Nn \l__fontspec_lang_tl {dflt} + \int_zero:N \l__fontspec_language_int + \tl_gset:Nn \g__fontspec_single_feat_tl { language=dflt } + } +\cs_new:Nn \__fontspec_ot_compat:nn + { + \aliasfontfeatureoption {#1} {#2Off} {No#2} + } +\__fontspec_ot_compat:nn {Ligatures} {Rare} +\__fontspec_ot_compat:nn {Ligatures} {Required} +\__fontspec_ot_compat:nn {Ligatures} {Common} +\__fontspec_ot_compat:nn {Ligatures} {Discretionary} +\__fontspec_ot_compat:nn {Ligatures} {Contextual} +\__fontspec_ot_compat:nn {Ligatures} {Historic} +\__fontspec_ot_compat:nn {Numbers} {SlashedZero} +\__fontspec_ot_compat:nn {Contextuals} {Swash} +\__fontspec_ot_compat:nn {Contextuals} {Alternate} +\__fontspec_ot_compat:nn {Contextuals} {WordInitial} +\__fontspec_ot_compat:nn {Contextuals} {WordFinal} +\__fontspec_ot_compat:nn {Contextuals} {LineFinal} +\__fontspec_ot_compat:nn {Contextuals} {Inner} +\__fontspec_ot_compat:nn {Diacritics} {MarkToBase} +\__fontspec_ot_compat:nn {Diacritics} {MarkToMark} +\__fontspec_ot_compat:nn {Diacritics} {AboveBase} +\__fontspec_ot_compat:nn {Diacritics} {BelowBase} + +%%^^A%% fontspec-code-scripts.dtx -- part of FONTSPEC + +\newfontscript{Adlam}{adlm} +\newfontscript{Ahom}{ahom} +\newfontscript{Anatolian~Hieroglyphs}{hluw} +\newfontscript{Arabic}{arab} +\newfontscript{Armenian}{armn} +\newfontscript{Avestan}{avst} +\newfontscript{Balinese}{bali} +\newfontscript{Bamum}{bamu} +\newfontscript{Bassa~Vah}{bass} +\newfontscript{Batak}{batk} +\newfontscript{Bengali}{bng2,beng} +\newfontscript{Bhaiksuki}{bhks} +\newfontscript{Bopomofo}{bopo} +\newfontscript{Brahmi}{brah} +\newfontscript{Braille}{brai} +\newfontscript{Buginese}{bugi} +\newfontscript{Buhid}{buhd} +\newfontscript{Byzantine~Music}{byzm} +\newfontscript{Canadian~Syllabics}{cans} +\newfontscript{Carian}{cari} +\newfontscript{Caucasian~Albanian}{aghb} +\newfontscript{Chakma}{cakm} +\newfontscript{Cham}{cham} +\newfontscript{Cherokee}{cher} +\newfontscript{Chorasmian}{chrs} +\newfontscript{CJK~Ideographic}{hani} +\newfontscript{Coptic}{copt} +\newfontscript{Cypriot~Syllabary}{cprt} +\newfontscript{Cypro~Minoan}{cpmn} +\newfontscript{Cyrillic}{cyrl} +\newfontscript{Default}{DFLT} +\newfontscript{CustomDefault}{latn,DFLT} +\newfontscript{Deseret}{dsrt} +\newfontscript{Devanagari}{dev2,deva} +\newfontscript{Dives~Akuru}{diak} +\newfontscript{Dogra}{dogr} +\newfontscript{Duployan}{dupl} +\newfontscript{Egyptian~Hieroglyphs}{egyp} +\newfontscript{Elbasan}{elba} +\newfontscript{Elymaic}{elym} +\newfontscript{Ethiopic}{ethi} +\newfontscript{Georgian}{geor} +\newfontscript{Glagolitic}{glag} +\newfontscript{Gothic}{goth} +\newfontscript{Grantha}{gran} +\newfontscript{Greek}{grek} +\newfontscript{Gujarati}{gjr2,gujr} +\newfontscript{Gunjala~Gondi}{gong} +\newfontscript{Gurmukhi}{gur2,guru} +\newfontscript{Hangul~Jamo}{jamo} +\newfontscript{Hangul}{hang} +\newfontscript{Hanifi~Rohingya}{rohg} +\newfontscript{Hanunoo}{hano} +\newfontscript{Hatran}{hatr} +\newfontscript{Hebrew}{hebr} +\newfontscript{Hiragana~and~Katakana}{kana} +\newfontscript{Imperial~Aramaic}{armi} +\newfontscript{Inscriptional~Pahlavi}{phli} +\newfontscript{Inscriptional~Parthian}{prti} +\newfontscript{Javanese}{java} +\newfontscript{Kaithi}{kthi} +\newfontscript{Kannada}{knd2,knda} +\newfontscript{Kayah~Li}{kali} +\newfontscript{Kharosthi}{khar} +\newfontscript{Khitan~Small~Script}{kits} +\newfontscript{Khmer}{khmr} +\newfontscript{Khojki}{khoj} +\newfontscript{Khudawadi}{sind} +\newfontscript{Lao}{lao~} +\newfontscript{Latin}{latn} +\newfontscript{Lepcha}{lepc} +\newfontscript{Limbu}{limb} +\newfontscript{Linear~A}{lina} +\newfontscript{Linear~B}{linb} +\newfontscript{Lisu}{lisu} +\newfontscript{Lycian}{lyci} +\newfontscript{Lydian}{lydi} +\newfontscript{Mahajani}{mahj} +\newfontscript{Makasar}{maka} +\newfontscript{Malayalam}{mlm2,mlym} +\newfontscript{Mandaic}{mand} +\newfontscript{Manichaean}{mani} +\newfontscript{Marchen}{marc} +\newfontscript{Masaram Gondi}{gonm} +\newfontscript{Math}{math} +\newfontscript{Medefaidrin}{medf} +\newfontscript{Meitei~Mayek}{mtei} +\newfontscript{Mende~Kikakui}{mend} +\newfontscript{Meroitic~Cursive}{merc} +\newfontscript{Meroitic~Hieroglyphs}{mero} +\newfontscript{Miao}{plrd} +\newfontscript{Modi}{modi} +\newfontscript{Mongolian}{mong} +\newfontscript{Mro}{mroo} +\newfontscript{Multani}{mult} +\newfontscript{Musical~Symbols}{musc} +\newfontscript{Myanmar}{mym2,mymr} +\newfontscript{N'Ko}{nko~} +\newfontscript{Nabataean}{nbat} +\newfontscript{Nandinagari}{nand} +\newfontscript{Newa}{newa} +\newfontscript{Nushu}{nshu} +\newfontscript{Nyiakeng~Puachue~Hmong}{hmnp} +\newfontscript{Odia}{ory2,orya} +\newfontscript{Ogham}{ogam} +\newfontscript{Ol~Chiki}{olck} +\newfontscript{Old~Italic}{ital} +\newfontscript{Old~Hungarian}{hung} +\newfontscript{Old~North~Arabian}{narb} +\newfontscript{Old~Permic}{perm} +\newfontscript{Old~Persian~Cuneiform}{xpeo} +\newfontscript{Old~Sogdian}{sogo} +\newfontscript{Old~South~Arabian}{sarb} +\newfontscript{Old~Turkic}{orkh} +\newfontscript{Old~Uyghur}{ougr} +\newfontscript{Osage}{osge} +\newfontscript{Osmanya}{osma} +\newfontscript{Pahawh~Hmong}{hmng} +\newfontscript{Palmyrene}{palm} +\newfontscript{Pau~Cin~Hau}{pauc} +\newfontscript{Phags-pa}{phag} +\newfontscript{Phoenician}{phnx} +\newfontscript{Psalter~Pahlavi}{phlp} +\newfontscript{Rejang}{rjng} +\newfontscript{Runic}{runr} +\newfontscript{Samaritan}{samr} +\newfontscript{Saurashtra}{saur} +\newfontscript{Sharada}{shrd} +\newfontscript{Shavian}{shaw} +\newfontscript{Siddham}{sidd} +\newfontscript{Sign~Writing}{sgnw} +\newfontscript{Sinhala}{sinh} +\newfontscript{Sogdian}{sogd} +\newfontscript{Sora~Sompeng}{sora} +\newfontscript{Sumero-Akkadian~Cuneiform}{xsux} +\newfontscript{Sundanese}{sund} +\newfontscript{Syloti~Nagri}{sylo} +\newfontscript{Syriac}{syrc} +\newfontscript{Tagalog}{tglg} +\newfontscript{Tagbanwa}{tagb} +\newfontscript{Tai~Le}{tale} +\newfontscript{Tai~Lu}{talu} +\newfontscript{Tai~Tham}{lana} +\newfontscript{Tai~Viet}{tavt} +\newfontscript{Takri}{takr} +\newfontscript{Tamil}{tml2,taml} +\newfontscript{Tangsa}{tnsa} +\newfontscript{Tangut}{tang} +\newfontscript{Telugu}{tel2,telu} +\newfontscript{Thaana}{thaa} +\newfontscript{Thai}{thai} +\newfontscript{Tibetan}{tibt} +\newfontscript{Tifinagh}{tfng} +\newfontscript{Tirhuta}{tirh} +\newfontscript{Toto}{toto} +\newfontscript{Ugaritic~Cuneiform}{ugar} +\newfontscript{Vai}{vai~} +\newfontscript{Vithkuqi}{vith} +\newfontscript{Wancho}{wcho} +\newfontscript{Warang~Citi}{wara} +\newfontscript{Yezidi}{yezi} +\newfontscript{Yi}{yi~~} +\newfontscript{Zanabazar~Square}{zanb} +\newfontscript{CJK}{hani} +\newfontscript{Kana}{kana} +\newfontscript{Maths}{math} +\newfontscript{N'ko}{nko~} +\newfontscript{Oriya}{ory2,orya} + +%%^^A%% fontspec-code-lang.dtx -- part of FONTSPEC + +\newfontlanguage{Abaza}{ABA} +\newfontlanguage{Abkhazian}{ABK} +\newfontlanguage{Adyghe}{ADY} +\newfontlanguage{Afrikaans}{AFK} +\newfontlanguage{Afar}{AFR} +\newfontlanguage{Agaw}{AGW} +\newfontlanguage{Altai}{ALT} +\newfontlanguage{Amharic}{AMH} +\newfontlanguage{Arabic}{ARA} +\newfontlanguage{Aari}{ARI} +\newfontlanguage{Arakanese}{ARK} +\newfontlanguage{Assamese}{ASM} +\newfontlanguage{Athapaskan}{ATH} +\newfontlanguage{Avar}{AVR} +\newfontlanguage{Awadhi}{AWA} +\newfontlanguage{Aymara}{AYM} +\newfontlanguage{Azeri}{AZE} +\newfontlanguage{Badaga}{BAD} +\newfontlanguage{Baghelkhandi}{BAG} +\newfontlanguage{Balkar}{BAL} +\newfontlanguage{Baule}{BAU} +\newfontlanguage{Berber}{BBR} +\newfontlanguage{Bench}{BCH} +\newfontlanguage{Bible~Cree}{BCR} +\newfontlanguage{Belarussian}{BEL} +\newfontlanguage{Bemba}{BEM} +\newfontlanguage{Bengali}{BEN} +\newfontlanguage{Bulgarian}{BGR} +\newfontlanguage{Bhili}{BHI} +\newfontlanguage{Bhojpuri}{BHO} +\newfontlanguage{Bikol}{BIK} +\newfontlanguage{Bilen}{BIL} +\newfontlanguage{Blackfoot}{BKF} +\newfontlanguage{Balochi}{BLI} +\newfontlanguage{Balante}{BLN} +\newfontlanguage{Balti}{BLT} +\newfontlanguage{Bambara}{BMB} +\newfontlanguage{Bamileke}{BML} +\newfontlanguage{Breton}{BRE} +\newfontlanguage{Brahui}{BRH} +\newfontlanguage{Braj~Bhasha}{BRI} +\newfontlanguage{Burmese}{BRM} +\newfontlanguage{Bashkir}{BSH} +\newfontlanguage{Beti}{BTI} +\newfontlanguage{Catalan}{CAT} +\newfontlanguage{Cebuano}{CEB} +\newfontlanguage{Chechen}{CHE} +\newfontlanguage{Chaha~Gurage}{CHG} +\newfontlanguage{Chattisgarhi}{CHH} +\newfontlanguage{Chichewa}{CHI} +\newfontlanguage{Chukchi}{CHK} +\newfontlanguage{Chipewyan}{CHP} +\newfontlanguage{Cherokee}{CHR} +\newfontlanguage{Chuvash}{CHU} +\newfontlanguage{Comorian}{CMR} +\newfontlanguage{Coptic}{COP} +\newfontlanguage{Cree}{CRE} +\newfontlanguage{Carrier}{CRR} +\newfontlanguage{Crimean~Tatar}{CRT} +\newfontlanguage{Church~Slavonic}{CSL} +\newfontlanguage{Czech}{CSY} +\newfontlanguage{Danish}{DAN} +\newfontlanguage{Dargwa}{DAR} +\newfontlanguage{Woods~Cree}{DCR} +\newfontlanguage{German}{DEU} +\newfontlanguage{Dogri}{DGR} +\newfontlanguage{Divehi}{DIV} +\newfontlanguage{Djerma}{DJR} +\newfontlanguage{Dangme}{DNG} +\newfontlanguage{Dinka}{DNK} +\newfontlanguage{Dungan}{DUN} +\newfontlanguage{Dzongkha}{DZN} +\newfontlanguage{Ebira}{EBI} +\newfontlanguage{Eastern~Cree}{ECR} +\newfontlanguage{Edo}{EDO} +\newfontlanguage{Efik}{EFI} +\newfontlanguage{Greek}{ELL} +\newfontlanguage{English}{ENG} +\newfontlanguage{Erzya}{ERZ} +\newfontlanguage{Spanish}{ESP} +\newfontlanguage{Estonian}{ETI} +\newfontlanguage{Basque}{EUQ} +\newfontlanguage{Evenki}{EVK} +\newfontlanguage{Even}{EVN} +\newfontlanguage{Ewe}{EWE} +\newfontlanguage{French~Antillean}{FAN} +\newfontlanguage{Farsi}{FAR} +\newfontlanguage{Parsi}{FAR} +\newfontlanguage{Persian}{FAR} +\newfontlanguage{Finnish}{FIN} +\newfontlanguage{Fijian}{FJI} +\newfontlanguage{Flemish}{FLE} +\newfontlanguage{Forest~Nenets}{FNE} +\newfontlanguage{Fon}{FON} +\newfontlanguage{Faroese}{FOS} +\newfontlanguage{French}{FRA} +\newfontlanguage{Frisian}{FRI} +\newfontlanguage{Friulian}{FRL} +\newfontlanguage{Futa}{FTA} +\newfontlanguage{Fulani}{FUL} +\newfontlanguage{Ga}{GAD} +\newfontlanguage{Gaelic}{GAE} +\newfontlanguage{Gagauz}{GAG} +\newfontlanguage{Galician}{GAL} +\newfontlanguage{Garshuni}{GAR} +\newfontlanguage{Garhwali}{GAW} +\newfontlanguage{Ge'ez}{GEZ} +\newfontlanguage{Gilyak}{GIL} +\newfontlanguage{Gumuz}{GMZ} +\newfontlanguage{Gondi}{GON} +\newfontlanguage{Greenlandic}{GRN} +\newfontlanguage{Garo}{GRO} +\newfontlanguage{Guarani}{GUA} +\newfontlanguage{Gujarati}{GUJ} +\newfontlanguage{Haitian}{HAI} +\newfontlanguage{Halam}{HAL} +\newfontlanguage{Harauti}{HAR} +\newfontlanguage{Hausa}{HAU} +\newfontlanguage{Hawaiin}{HAW} +\newfontlanguage{Hammer-Banna}{HBN} +\newfontlanguage{Hiligaynon}{HIL} +\newfontlanguage{Hindi}{HIN} +\newfontlanguage{High~Mari}{HMA} +\newfontlanguage{Hindko}{HND} +\newfontlanguage{Ho}{HO} +\newfontlanguage{Harari}{HRI} +\newfontlanguage{Croatian}{HRV} +\newfontlanguage{Hungarian}{HUN} +\newfontlanguage{Armenian}{HYE} +\newfontlanguage{Igbo}{IBO} +\newfontlanguage{Ijo}{IJO} +\newfontlanguage{Ilokano}{ILO} +\newfontlanguage{Indonesian}{IND} +\newfontlanguage{Ingush}{ING} +\newfontlanguage{Inuktitut}{INU} +\newfontlanguage{Irish}{IRI} +\newfontlanguage{Irish~Traditional}{IRT} +\newfontlanguage{Icelandic}{ISL} +\newfontlanguage{Inari~Sami}{ISM} +\newfontlanguage{Italian}{ITA} +\newfontlanguage{Hebrew}{IWR} +\newfontlanguage{Javanese}{JAV} +\newfontlanguage{Yiddish}{JII} +\newfontlanguage{Japanese}{JAN} +\newfontlanguage{Judezmo}{JUD} +\newfontlanguage{Jula}{JUL} +\newfontlanguage{Kabardian}{KAB} +\newfontlanguage{Kachchi}{KAC} +\newfontlanguage{Kalenjin}{KAL} +\newfontlanguage{Kannada}{KAN} +\newfontlanguage{Karachay}{KAR} +\newfontlanguage{Georgian}{KAT} +\newfontlanguage{Kazakh}{KAZ} +\newfontlanguage{Kebena}{KEB} +\newfontlanguage{Khutsuri~Georgian}{KGE} +\newfontlanguage{Khakass}{KHA} +\newfontlanguage{Khanty-Kazim}{KHK} +\newfontlanguage{Khmer}{KHM} +\newfontlanguage{Khanty-Shurishkar}{KHS} +\newfontlanguage{Khanty-Vakhi}{KHV} +\newfontlanguage{Khowar}{KHW} +\newfontlanguage{Kikuyu}{KIK} +\newfontlanguage{Kirghiz}{KIR} +\newfontlanguage{Kisii}{KIS} +\newfontlanguage{Kokni}{KKN} +\newfontlanguage{Kalmyk}{KLM} +\newfontlanguage{Kamba}{KMB} +\newfontlanguage{Kumaoni}{KMN} +\newfontlanguage{Komo}{KMO} +\newfontlanguage{Komso}{KMS} +\newfontlanguage{Kanuri}{KNR} +\newfontlanguage{Kodagu}{KOD} +\newfontlanguage{Korean~Old~Hangul}{KOH} +\newfontlanguage{Konkani}{KOK} +\newfontlanguage{Kikongo}{KON} +\newfontlanguage{Komi-Permyak}{KOP} +\newfontlanguage{Korean}{KOR} +\newfontlanguage{Komi-Zyrian}{KOZ} +\newfontlanguage{Kpelle}{KPL} +\newfontlanguage{Krio}{KRI} +\newfontlanguage{Karakalpak}{KRK} +\newfontlanguage{Karelian}{KRL} +\newfontlanguage{Karaim}{KRM} +\newfontlanguage{Karen}{KRN} +\newfontlanguage{Koorete}{KRT} +\newfontlanguage{Kashmiri}{KSH} +\newfontlanguage{Khasi}{KSI} +\newfontlanguage{Kildin~Sami}{KSM} +\newfontlanguage{Kui}{KUI} +\newfontlanguage{Kulvi}{KUL} +\newfontlanguage{Kumyk}{KUM} +\newfontlanguage{Kurdish}{KUR} +\newfontlanguage{Kurukh}{KUU} +\newfontlanguage{Kuy}{KUY} +\newfontlanguage{Koryak}{KYK} +\newfontlanguage{Ladin}{LAD} +\newfontlanguage{Lahuli}{LAH} +\newfontlanguage{Lak}{LAK} +\newfontlanguage{Lambani}{LAM} +\newfontlanguage{Lao}{LAO} +\newfontlanguage{Latin}{LAT} +\newfontlanguage{Laz}{LAZ} +\newfontlanguage{L-Cree}{LCR} +\newfontlanguage{Ladakhi}{LDK} +\newfontlanguage{Lezgi}{LEZ} +\newfontlanguage{Lingala}{LIN} +\newfontlanguage{Low~Mari}{LMA} +\newfontlanguage{Limbu}{LMB} +\newfontlanguage{Lomwe}{LMW} +\newfontlanguage{Lower~Sorbian}{LSB} +\newfontlanguage{Lule~Sami}{LSM} +\newfontlanguage{Lithuanian}{LTH} +\newfontlanguage{Luba}{LUB} +\newfontlanguage{Luganda}{LUG} +\newfontlanguage{Luhya}{LUH} +\newfontlanguage{Luo}{LUO} +\newfontlanguage{Latvian}{LVI} +\newfontlanguage{Majang}{MAJ} +\newfontlanguage{Makua}{MAK} +\newfontlanguage{Malayalam~Traditional}{MAL} +\newfontlanguage{Mansi}{MAN} +\newfontlanguage{Marathi}{MAR} +\newfontlanguage{Marwari}{MAW} +\newfontlanguage{Mbundu}{MBN} +\newfontlanguage{Manchu}{MCH} +\newfontlanguage{Moose~Cree}{MCR} +\newfontlanguage{Mende}{MDE} +\newfontlanguage{Me'en}{MEN} +\newfontlanguage{Mizo}{MIZ} +\newfontlanguage{Macedonian}{MKD} +\newfontlanguage{Male}{MLE} +\newfontlanguage{Malagasy}{MLG} +\newfontlanguage{Malinke}{MLN} +\newfontlanguage{Malayalam~Reformed}{MLR} +\newfontlanguage{Malay}{MLY} +\newfontlanguage{Mandinka}{MND} +\newfontlanguage{Mongolian}{MNG} +\newfontlanguage{Manipuri}{MNI} +\newfontlanguage{Maninka}{MNK} +\newfontlanguage{Manx~Gaelic}{MNX} +\newfontlanguage{Moksha}{MOK} +\newfontlanguage{Moldavian}{MOL} +\newfontlanguage{Mon}{MON} +\newfontlanguage{Moroccan}{MOR} +\newfontlanguage{Maori}{MRI} +\newfontlanguage{Maithili}{MTH} +\newfontlanguage{Maltese}{MTS} +\newfontlanguage{Mundari}{MUN} +\newfontlanguage{Naga-Assamese}{NAG} +\newfontlanguage{Nanai}{NAN} +\newfontlanguage{Naskapi}{NAS} +\newfontlanguage{N-Cree}{NCR} +\newfontlanguage{Ndebele}{NDB} +\newfontlanguage{Ndonga}{NDG} +\newfontlanguage{Nepali}{NEP} +\newfontlanguage{Newari}{NEW} +\newfontlanguage{Nagari}{NGR} +\newfontlanguage{Norway~House~Cree}{NHC} +\newfontlanguage{Nisi}{NIS} +\newfontlanguage{Niuean}{NIU} +\newfontlanguage{Nkole}{NKL} +\newfontlanguage{N'ko}{NKO} +\newfontlanguage{Dutch}{NLD} +\newfontlanguage{Nogai}{NOG} +\newfontlanguage{Norwegian}{NOR} +\newfontlanguage{Northern~Sami}{NSM} +\newfontlanguage{Northern~Tai}{NTA} +\newfontlanguage{Esperanto}{NTO} +\newfontlanguage{Nynorsk}{NYN} +\newfontlanguage{Oji-Cree}{OCR} +\newfontlanguage{Ojibway}{OJB} +\newfontlanguage{Oriya}{ORI} +\newfontlanguage{Oromo}{ORO} +\newfontlanguage{Ossetian}{OSS} +\newfontlanguage{Palestinian~Aramaic}{PAA} +\newfontlanguage{Pali}{PAL} +\newfontlanguage{Punjabi}{PAN} +\newfontlanguage{Palpa}{PAP} +\newfontlanguage{Pashto}{PAS} +\newfontlanguage{Polytonic~Greek}{PGR} +\newfontlanguage{Pilipino}{PIL} +\newfontlanguage{Palaung}{PLG} +\newfontlanguage{Polish}{PLK} +\newfontlanguage{Provencal}{PRO} +\newfontlanguage{Portuguese}{PTG} +\newfontlanguage{Chin}{QIN} +\newfontlanguage{Rajasthani}{RAJ} +\newfontlanguage{R-Cree}{RCR} +\newfontlanguage{Russian~Buriat}{RBU} +\newfontlanguage{Riang}{RIA} +\newfontlanguage{Rhaeto-Romanic}{RMS} +\newfontlanguage{Romanian}{ROM} +\newfontlanguage{Romany}{ROY} +\newfontlanguage{Rusyn}{RSY} +\newfontlanguage{Ruanda}{RUA} +\newfontlanguage{Russian}{RUS} +\newfontlanguage{Sadri}{SAD} +\newfontlanguage{Sanskrit}{SAN} +\newfontlanguage{Santali}{SAT} +\newfontlanguage{Sayisi}{SAY} +\newfontlanguage{Sekota}{SEK} +\newfontlanguage{Selkup}{SEL} +\newfontlanguage{Sango}{SGO} +\newfontlanguage{Shan}{SHN} +\newfontlanguage{Sibe}{SIB} +\newfontlanguage{Sidamo}{SID} +\newfontlanguage{Silte~Gurage}{SIG} +\newfontlanguage{Skolt~Sami}{SKS} +\newfontlanguage{Slovak}{SKY} +\newfontlanguage{Slavey}{SLA} +\newfontlanguage{Slovenian}{SLV} +\newfontlanguage{Somali}{SML} +\newfontlanguage{Samoan}{SMO} +\newfontlanguage{Sena}{SNA} +\newfontlanguage{Sindhi}{SND} +\newfontlanguage{Sinhalese}{SNH} +\newfontlanguage{Soninke}{SNK} +\newfontlanguage{Sodo~Gurage}{SOG} +\newfontlanguage{Sotho}{SOT} +\newfontlanguage{Albanian}{SQI} +\newfontlanguage{Serbian}{SRB} +\newfontlanguage{Saraiki}{SRK} +\newfontlanguage{Serer}{SRR} +\newfontlanguage{South~Slavey}{SSL} +\newfontlanguage{Southern~Sami}{SSM} +\newfontlanguage{Suri}{SUR} +\newfontlanguage{Svan}{SVA} +\newfontlanguage{Swedish}{SVE} +\newfontlanguage{Swadaya~Aramaic}{SWA} +\newfontlanguage{Swahili}{SWK} +\newfontlanguage{Swazi}{SWZ} +\newfontlanguage{Sutu}{SXT} +\newfontlanguage{Syriac}{SYR} +\newfontlanguage{Tabasaran}{TAB} +\newfontlanguage{Tajiki}{TAJ} +\newfontlanguage{Tamil}{TAM} +\newfontlanguage{Tatar}{TAT} +\newfontlanguage{TH-Cree}{TCR} +\newfontlanguage{Telugu}{TEL} +\newfontlanguage{Tongan}{TGN} +\newfontlanguage{Tigre}{TGR} +\newfontlanguage{Tigrinya}{TGY} +\newfontlanguage{Thai}{THA} +\newfontlanguage{Tahitian}{THT} +\newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkish}{TRK,TUR} +\newfontlanguage{Turkmen}{TKM} +\newfontlanguage{Temne}{TMN} +\newfontlanguage{Tswana}{TNA} +\newfontlanguage{Tundra~Nenets}{TNE} +\newfontlanguage{Tonga}{TNG} +\newfontlanguage{Todo}{TOD} +\newfontlanguage{Tsonga}{TSG} +\newfontlanguage{Turoyo~Aramaic}{TUA} +\newfontlanguage{Tulu}{TUL} +\newfontlanguage{Tuvin}{TUV} +\newfontlanguage{Twi}{TWI} +\newfontlanguage{Udmurt}{UDM} +\newfontlanguage{Ukrainian}{UKR} +\newfontlanguage{Urdu}{URD} +\newfontlanguage{Upper~Sorbian}{USB} +\newfontlanguage{Uyghur}{UYG} +\newfontlanguage{Uzbek}{UZB} +\newfontlanguage{Venda}{VEN} +\newfontlanguage{Vietnamese}{VIT} +\newfontlanguage{Wa}{WA} +\newfontlanguage{Wagdi}{WAG} +\newfontlanguage{West-Cree}{WCR} +\newfontlanguage{Welsh}{WEL} +\newfontlanguage{Wolof}{WLF} +\newfontlanguage{Tai~Lue}{XBD} +\newfontlanguage{Xhosa}{XHS} +\newfontlanguage{Yakut}{YAK} +\newfontlanguage{Yoruba}{YBA} +\newfontlanguage{Y-Cree}{YCR} +\newfontlanguage{Yi~Classic}{YIC} +\newfontlanguage{Yi~Modern}{YIM} +\newfontlanguage{Chinese~Hong~Kong}{ZHH} +\newfontlanguage{Chinese~Phonetic}{ZHP} +\newfontlanguage{Chinese~Simplified}{ZHS} +\newfontlanguage{Chinese~Traditional}{ZHT} +\newfontlanguage{Zande}{ZND} +\newfontlanguage{Zulu}{ZUL} + +%%^^A%% fontspec-code-feat-aat.dtx -- part of FONTSPEC + + +%%^^A%% fontspec-code-enc.dtx -- part of FONTSPEC + +\DeclareDocumentCommand \EncodingCommand { m O{} O{} m } + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \EncodingCommand } + \DeclareTextCommand{#1}{\UnicodeEncodingName}[#2][#3]{#4} + } +\DeclareDocumentCommand \EncodingAccent {mm} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \EncodingAccent } + \DeclareTextCommand{#1}{\UnicodeEncodingName}{\add@unicode@accent{#2}} + } +\DeclareDocumentCommand \EncodingSymbol {mm} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \EncodingSymbol } + \DeclareTextSymbol{#1}{\UnicodeEncodingName}{#2} + } +\DeclareDocumentCommand \EncodingComposite {mmm} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \EncodingComposite } + \DeclareTextComposite{#1}{\UnicodeEncodingName}{#2}{#3} + } +\DeclareDocumentCommand \EncodingCompositeCommand {mmm} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \EncodingCompositeCommand } + \DeclareTextCompositeCommand{#1}{\UnicodeEncodingName}{#2}{#3} + } +\DeclareDocumentCommand \DeclareUnicodeEncoding {mm} + { + \DeclareFontEncoding{#1}{}{} + \DeclareFontSubstitution{#1}{lmr}{m}{n} + \DeclareFontFamily{#1}{lmr}{} + + \DeclareFontShape{#1}{lmr}{m}{n} + {<->\UnicodeFontFile{lmroman10-regular}{\UnicodeFontTeXLigatures}}{} + \DeclareFontShape{#1}{lmr}{m}{it} + {<->\UnicodeFontFile{lmroman10-italic}{\UnicodeFontTeXLigatures}}{} + \DeclareFontShape{#1}{lmr}{m}{sc} + {<->\UnicodeFontFile{lmromancaps10-regular}{\UnicodeFontTeXLigatures}}{} + \DeclareFontShape{#1}{lmr}{bx}{n} + {<->\UnicodeFontFile{lmroman10-bold}{\UnicodeFontTeXLigatures}}{} + \DeclareFontShape{#1}{lmr}{bx}{it} + {<->\UnicodeFontFile{lmroman10-bolditalic}{\UnicodeFontTeXLigatures}}{} + + \tl_set_eq:NN \l__fontspec_prev_unicode_name_tl \UnicodeEncodingName + \tl_set:Nn \UnicodeEncodingName {#1} + \bool_set_true:N \l__fontspec_defining_encoding_bool + #2 + \bool_set_false:N \l__fontspec_defining_encoding_bool + \tl_set_eq:NN \UnicodeEncodingName \l__fontspec_prev_unicode_name_tl + } +\DeclareDocumentCommand \UndeclareSymbol {m} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \UndeclareSymbol } + \UndeclareTextCommand {#1} {\UnicodeEncodingName} + } +\DeclareDocumentCommand \UndeclareAccent {m} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \UndeclareAccent } + \UndeclareTextCommand {#1} {\UnicodeEncodingName} + } +\DeclareDocumentCommand \UndeclareCommand {m} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \UndeclareCommand } + \UndeclareTextCommand {#1} {\UnicodeEncodingName} + } +\DeclareDocumentCommand \UndeclareComposite {mm} + { + \bool_if:NF \l__fontspec_defining_encoding_bool + { \__fontspec_error:nn {only-inside-encdef} \UndeclareComposite } + \cs_undefine:c + { \c_backslash_str \UnicodeEncodingName \token_to_str:N #1 - \tl_to_str:n {#2} } + } + +%%^^A%% fontspec-code-math.dtx -- part of FONTSPEC +\@ifpackageloaded{euler} + { \bool_gset_true:N \g__fontspec_pkg_euler_loaded_bool } + { \bool_gset_false:N \g__fontspec_pkg_euler_loaded_bool } +\cs_new:Nn \fontspec_setup_maths: + { + \@ifpackageloaded{euler} + { + \bool_if:NTF \g__fontspec_pkg_euler_loaded_bool + { \bool_gset_true:N \g__fontspec_math_euler_bool } + { \__fontspec_error:n {euler-too-late} } + } + {} + \@ifpackageloaded{lucbmath}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{} + \@ifpackageloaded{lucidabr}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{} + \@ifpackageloaded{lucimatx}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{} + \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n} + \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n} + \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19} + \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18} + \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127} + \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126} + \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22} + \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21} + \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20} + \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler + \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95} + \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23} + \group_begin: + \mathchardef\@tempa="603A \relax + \ifx\colon\@tempa + \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58} + \fi + \group_end: + \bool_if:NF \g__fontspec_math_euler_bool + { + \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33} + \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58} + \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59} + \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63} + \bool_if:NF \g__fontspec_math_lucida_bool + { + \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0} + \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1} + \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2} + \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3} + \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4} + \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5} + \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6} + \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7} + \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8} + \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9} + \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0} + \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1} + \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2} + \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3} + \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4} + \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5} + \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6} + \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7} + \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8} + \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9} + \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10} + \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43} + \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61} + \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0} + \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1} + \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2} + \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3} + \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14} + \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36} + \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}% TODO: test with other fonts + } + } + \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault + \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault + \DeclareSymbolFontAlphabet\mathrm{operators} + \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault + \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\shapedefault + \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\shapedefault + \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault + \tl_if_empty:NTF \g__fontspec_bfmathrm_tl + { + \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\itdefault + } + { + \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\shapedefault + \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\shapedefault + \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault + } + \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\shapedefault + \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\shapedefault + } +\cs_new:Nn \fontspec_maybe_setup_maths: + { + \@ifpackageloaded{anttor} + { + \ifx\define@antt@mathversions a\bool_gset_false:N \g__fontspec_math_bool\fi + }{} + \@ifpackageloaded{arevmath} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{eulervm} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{mathdesign} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{concmath} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{cmbright} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{mathesf} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{gfsartemisia} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{gfsneohellenic} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{iwona} + { + \ifx\define@iwona@mathversions a\bool_set_false:N \g__fontspec_math_bool\fi + }{} + \@ifpackageloaded{kpfonts}{\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{kmath} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{kurier} + { + \ifx\define@kurier@mathversions a\bool_set_false:N \g__fontspec_math_bool\fi + }{} + \@ifpackageloaded{fouriernc} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{fourier} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{lmodern} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{mathpazo} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{mathptmx} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{MinionPro} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{unicode-math} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{breqn} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{pxfonts} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{txfonts} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{newpxmath} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{newtxmath} {\bool_gset_false:N \g__fontspec_math_bool}{} + \@ifpackageloaded{mtpro2} {\bool_gset_false:N \g__fontspec_math_bool}{} + \bool_if:NT \g__fontspec_math_bool + { + \__fontspec_info:n {setup-math} + \fontspec_setup_maths: + } + } +\AtBeginDocument{\fontspec_maybe_setup_maths:} + +%%^^A%% fontspec-code-closing.dtx -- part of FONTSPEC +\bool_if:NT \g__fontspec_cfg_bool + { + \InputIfFileExists{fontspec.cfg} + {} + { \typeout{No~ fontspec.cfg~ file~ found;~ no~ configuration~ loaded.} } + } + +%%^^A%% fontspec-code-xfss.dtx -- part of FONTSPEC + +\providecommand*\scitdefault{\scdefault\itdefault} +\providecommand*\scsldefault{\scdefault\sldefault} +\providecommand*\scswdefault{\scdefault\swdefault} +\cs_new:Nn \__fontspec_shape_merge:nn { c__fontspec_shape_#1_#2_tl } +\cs_new:Nn \__fontspec_merge_default_shapes: + { + \tl_const:cn { \__fontspec_shape_merge:nn \shapedefault\scdefault } {\scdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \itdefault \scdefault } {\scitdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \sldefault \scdefault } {\scsldefault} + \tl_const:cn { \__fontspec_shape_merge:nn \swdefault \scdefault } {\scswdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \itdefault } {\scitdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \sldefault } {\scsldefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \swdefault } {\scswdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \itdefault } {\scitdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \sldefault } {\scsldefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \shapedefault } {\scdefault} + \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \shapedefault } {\scdefault} + } +\__fontspec_merge_default_shapes: +\prg_new_conditional:Nnn \__fontspec_if_merge_shape:n {TF} + { + \bool_lazy_and:nnTF + { \tl_if_exist_p:c { \__fontspec_shape_merge:nn {\f@shape} {#1} } } + { + \cs_if_exist_p:c + { + \f@encoding/\f@family/\f@series/ + \tl_use:c { \__fontspec_shape_merge:nn {\f@shape} {#1} } + } + } + \prg_return_true: \prg_return_false: + } +\cs_set_eq:NN \emfontdeclare \DeclareEmphSequence +\cs_set_protected:Npn \strongfontdeclare #1 + { + \prop_gclear:N \g__fontspec_strong_prop + \int_zero:N \l__fontspec_strongdef_int + + \group_begin: + \normalfont + \clist_map_inline:nn {\strongreset,#1} + { + ##1 + \prop_gput_if_new:NxV \g__fontspec_strong_prop { \f@series } { \l__fontspec_strongdef_int } + \prop_gput:Nxn \g__fontspec_strong_prop { switch-\int_use:N \l__fontspec_strongdef_int } { ##1 } + \int_incr:N \l__fontspec_strongdef_int + } + \group_end: + } +\DeclareRobustCommand \strongenv + { + \@nomath\strongenv + + \prop_get:NxNT \g__fontspec_strong_prop { \f@series } \l__fontspec_strong_tmp_tl + { + \int_set:Nn \l__fontspec_strong_int { \l__fontspec_strong_tmp_tl } + } + + \int_incr:N \l__fontspec_strong_int + + \prop_get:NxNTF \g__fontspec_strong_prop { switch-\int_use:N \l__fontspec_strong_int } \l__fontspec_strong_switch_tl + { \l__fontspec_strong_switch_tl } + { + \int_zero:N \l__fontspec_strong_int + \strongreset + } + + } +\DeclareTextFontCommand{\strong}{\strongenv} +\cs_set:Npn \strongreset {} +\cs_set:Npn \reset@font + { + \normalfont + \int_zero:N \l__fontspec_strong_int + } +\cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} } +\strongfontdeclare{ \bfseries } diff --git a/texmf/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def b/texmf/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def new file mode 100644 index 000000000..900c31973 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def @@ -0,0 +1,3563 @@ +%% +%% This is file `hgeneric-testphase.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hyperref-generic.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: hyperref-generic.dtx + +\ProvidesFile{hgeneric-testphase.def}[2022-08-24 v0.95r % + generic Hyperref driver for the LaTeX PDF management testphase bundle] + +\RequirePackage{etoolbox} %why? +\ExplSyntaxOn +\file_input:n {hyperref-colorschemes.def} +\ExplSyntaxOff +\ExplSyntaxOn +\prop_gput:Nnn \g_msg_module_name_prop { hyp }{ hyperref } +\cs_if_exist:NTF \DocumentMetadata + { + \msg_new:nnnn + { hyp } + { missing-resource-management } + { The~PDF~resource~management~is~required~for~this~hyperref~driver! } + { + Activate~it~with \\ + \tl_to_str:n{\DocumentMetadata{}}\\ + before~\tl_to_str:n{\documentclass} + } + } + { + \msg_new:nnnn + { hyp } + { missing-resource-management } + { The~PDF~resource~management~is~required~for~this~hyperref~driver! } + { + Activate~it~with \\ + \tl_to_str:n{\RequirePackage{pdfmanagement-testphase}}\\ + \tl_to_str:n{\DocumentMetadata{}}\\ + before~\tl_to_str:n{\documentclass} + } + } +\msg_new:nnnn + { hyp } + { pdfversion-disabled } + { + This~hyperref~driver~ignores~the~pdfversion~key!\\ + Set~the~pdfversion~in~\token_to_str:N \DocumentMetadata + } + { + For example:\\ + \tl_to_str:n + { + \DocumentMetadata { pdfversion=1.7 } + } + } +\msg_new:nnn + { hyp } + { key-dropped } + { + This~hyperref~driver~ignores~the~key~#1!\\ + Please~check~the~documentation. + } +\msg_new:nnn + { hyp } + { pdfa-no-push-button } + { PDF/A:~Push~button~with~JavaScript~is~prohibited } + +\msg_new:nnn + { hyp } + { pdfa-no-reset-button } + { PDF/A:~Reset~action~is~prohibited } +\msg_new:nnn + { hyp } + { pdfa-no-named-action } + { PDF/A:~Named~action~#1~is~prohibited } +\msg_new:nnn + { hyp } + { empty-destination-name } + { + Empty~destination~name,\\ + using~'#1' + } +\msg_new:nnn + { hyp } + { invalid-destination-value } + { + Invalid~value~'#1'~of~'#2' \\ + is~replaced~by~'Fit'~\msg_line_context:. + } +\msg_new:nnn + { hyp } + { ignore-deprecated-or-unknown-option-in-pdf-version } + { + Option~'#1'~is~unknown~or~deprecated~in\\ + pdf~version~#2.~Ignored. + } +\msg_new:nnn + { hyp } + { ignore-deprecated-or-unknown-value-in-pdf-version } + { + Value~'#1'~is~unknown~or~deprecated~in\\ + pdf~version~#2.~Ignored. + } +\msg_new:nnn + { hyp } + { replace-deprecated-or-unknown-value-in-pdf-version } + { + Value~'#1'~is~unknown~or~deprecated~in\\ + pdf~version~#2. Value~'#3'~is used instead. + } +\msg_new:nnn + { hyp } + { unknown-key } + { + unknown~key~#2~of~module~'#1'~set~to~'#3'. + } +\msg_new:nnn + { hyp } + { unknown-key-to-Hyp } + { + ignored~in~family~Hyp~unknown~key~#1. + } +\cs_new:Npn \__hyp_clist_display:n #1 {*~#1\\} +\msg_new:nnn + { hyp } + { unknown-choice } + { + Value~'#3'~is~invalid~for~key~'#1'.\\ + The~key~accepts~only~the~choices\\ + \clist_map_function:nN { #2 }\__hyp_clist_display:n + } + +\msg_new:nnn + { hyp } + { unknown-choice+empty } + { + Value~'#3'~is~invalid~for~key~'#1'.\\ + The~key~accepts~only~the~choices\\ + \clist_map_function:nN { #2 }\__hyp_clist_display:n + An~empty~value~removes~the~setting. + } + +\msg_new:nnn + { hyp } + { no-bool } + { + Value~'#2'~is~invalid~for~key~'#1'.\\ + The~key~accepts~only~the~choices\\ + *~true\\ + *~false \\ + *~and~an~empty~value~which~removes~the~setting.\\ + No~value~is~equivalent~to~using~'true'. + } +\msg_new:nnn + { hyp } + { empty-info-value } + { + Empty~value~for~key~#1.\\ + This~isn't~honored~by~all~backends. + } +\cs_generate_variant:Nn\pdf_destination:nn {nf} +\cs_generate_variant:Nn\pdf_object_ref:n {e} +\chardef\Hy@VersionChecked=1 %don't check the version! +\cs_set_eq:NN \hypercalcbp \dim_to_decimal_in_bp:n +\providecommand\@pdfborder{} +\providecommand\@pdfborderstyle{} +\newcommand\OBJ@OCG@view {} % needed in hyperref +\def\Hy@numberline#1{#1\c_space_tl} %needed by bookmark +\cs_set_eq:NN \Hy@pdfminorversion \pdf_version_minor: +\cs_set_eq:NN \Hy@pdfmajorversion \pdf_version_major: +\legacy_if:nT { Hy@setpdfversion } + { + \msg_warning:nn { hyp }{ pdfversion-disabled } + } +\Hy@DisableOption{pdfversion} +\RenewDocumentCommand \Acrobatmenu { m m } + { + \hyper@linknamed {#1} {#2} + } +\cs_set_protected:Npn \hypersetup #1 + { + %\kvsetkeys{Hyp} {#1} + \keys_set:nn { hyp / setup }{ #1 } + } +\keys_define:nn { hyp / setup } + { + unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-key } + { hyp~/~setup }{ \l_keys_key_str } { #1 } + } + } +\keys_define:nn { hyp / setup } + { + next-anchor .code:n = + { + \AddToHookNext{__hyp/dest/make} + {\Hy@MakeCurrentHref{#1}} + } + } + +\bool_new:N \l__hyp_href_url_encode_bool +\bool_new:N \l__hyp_href_url_ismap_bool +\tl_new:N \l__hyp_href_url_protocol_tl +\tl_new:N \l__hyp_href_pdf_destination_tl +\tl_new:N \l__hyp_href_pdf_page_tl +\tl_new:N \l__hyp_href_run_parameter_tl +\cs_new_protected:Npn \__hyp_href_url_format: {\begingroup\Url} + +\keys_define:nn { hyp / href } + { + ,urlencode .bool_set:N = \l__hyp_href_url_encode_bool + ,format .code:n = { \cs_set:Nn \__hyp_href_url_format: {#1} }, + ,protocol .tl_set:N = \l__hyp_href_url_protocol_tl + ,destination .tl_set:N = \l__hyp_href_pdf_destination_tl + ,pdfremotestartview .code:n = + { + \keys_set:nn { hyp / setup } + { pdfremotestartview = #1 } + } + ,page .code:n = + { + \tl_set:Nn \l__hyp_href_pdf_page_tl {#1} + \tl_set:Nn \Hy@href@page {#1} + } + ,ismap .bool_set:N = \l__hyp_href_url_ismap_bool + ,run-parameter .tl_set:N = \l__hyp_href_run_parameter_tl + ,nextactionraw .code:n = + { %perhaps some safety match later, see hyperref code + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn{l_hyp/annot/A}{Next} + } + { + \pdfdict_put:nnn{l_hyp/annot/A}{Next}{#1} + \tl_set:Nn \Hy@href@nextactionraw {/Next~#1} + \keys_set:nn {hyp / setup }{ pdfnewwindow = true} + } + } + ,afrelationship .code:n = + { + \pdfdict_put:nnx + { l_pdffile/Filespec}{AFRelationship}{ \pdf_name_from_unicode_e:n {#1}} + } + + } + +\keys_define:nn { hyp / setup } + { + ,href / urlencode .bool_set:N = \l__hyp_href_url_encode_bool + ,href / urlencode .default:n = {true} + ,href / urlencode .initial:n = {false} + ,href / protocol .tl_set:N = \l__hyp_href_url_protocol_tl + ,href / destination .tl_set:N = \l__hyp_href_pdf_destination_tl + ,href / format .code:n = { \cs_set:Nn \__hyp_href_url_format:{#1} } + } + +\hook_new_pair:nn{cmd/href/before}{cmd/href/after} + +\DeclareRobustCommand*{\href}[1][]{% + \mode_leave_vertical: + \hook_use:n{cmd/href/before} + \group_begin: + \keys_set:nn { hyp / href } {#1} + \bool_if:NTF \l__hyp_href_url_encode_bool + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/URI} + } + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/string} + } + \@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}% +} + +\begingroup + \catcode`\$=6 % + \catcode`\#=12 % + \gdef\href@$1{\expandafter\href@split$1##\\}% + \gdef\href@split$1#$2#$3\\$4{% + \hyper@@link{$1}{$2}{$4}%<---__hyp-docstrip doubling! + \endgroup + \hook_use:n{cmd/href/after} + }% +\endgroup + +\hook_new_pair:nn{cmd/hrefurl/before}{cmd/hrefurl/after} + +\DeclareRobustCommand*{\hrefurl}[1][] + { + \mode_leave_vertical: + \hook_use:n{cmd/href/before} + \group_begin: + \keys_set:nn { hyp / href } {#1} + \bool_if:NTF \l__hyp_href_url_encode_bool + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/URI} + } + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/string} + } + \hyper@normalise\__hyp_href_url_aux:nn} + +\cs_new_protected:Npn \__hyp_href_url_aux:nn #1 #2 + { + \exp_args:Nno\hyper@linkurl{#2}{\l__hyp_href_url_protocol_tl#1} + \group_end: + \hook_use:n{cmd/href/after} + } + +\hook_new_pair:nn{cmd/hrefpdf/before}{cmd/hrefpdf/after} +\DeclareRobustCommand*{\hrefpdf}[1][] + { + \mode_leave_vertical: + \hook_use:n{cmd/hrefpdf/before} + \group_begin: + \keys_set:nn { hyp / href } {#1} + \hyper@normalise\__hyp_href_pdf_aux:nn + } + +\cs_new_protected:Npn \__hyp_href_pdf_aux:nn #1 #2 + { + \exp_args:Nnno\hyper@linkfile{#2}{#1}{\l__hyp_href_pdf_destination_tl} + \group_end: + \hook_use:n{cmd/hrefpdf/after} + } + +\hook_new_pair:nn{cmd/hrefrun/before}{cmd/hrefrun/after} +\DeclareRobustCommand*{\hrefrun}[1][] + { + \mode_leave_vertical: + \hook_use:n{cmd/hrefrun/before} + \group_begin: + \keys_set:nn { hyp / href } {#1} + \hyper@normalise\__hyp_href_run_aux:nn + } + +\cs_new_protected:Npn \__hyp_href_run_aux:nn #1 #2 + { + \exp_args:Nnno\hyper@linklaunch{#1}{#2}{\l__hyp_href_run_parameter_tl} + \group_end: + \hook_use:n{cmd/hrefrun/after} + } + +\hook_new_pair:nn{cmd/url/before}{cmd/url/after} + +\DeclareRobustCommand*{\url}[1][] + { + \mode_leave_vertical: + \hook_use:n{cmd/url/before} + \group_begin: + \keys_set:nn {hyp / href } {#1} + \bool_if:NTF \l__hyp_href_url_encode_bool + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/URI} + } + { + \tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/string} + } + \hyper@normalise\__hyp_href_url_aux:n + } + +\cs_new_protected:Npn \__hyp_href_url_aux:n #1 + { + \exp_args:Nno + \hyper@linkurl{\__hyp_href_url_format: {#1}} + {\l__hyp_href_url_protocol_tl#1} + \group_end: + \hook_use:n{cmd/url/after} + } + + +\def\urldef#1#2{\begingroup\def\url{\hyper@normalise\url@}\setbox\z@\hbox\bgroup + \def\Url@HyperHook##1\endgroup{\Url@def{#1}{#2}}% + % Because hyperref breaks \urldef and does not define its own (Grrrr!)... + \def\url@##1{\egroup\endgroup\DeclareRobustCommand#1{#2{##1}}}% + #2} + +\NewExpandableDocumentCommand\__hyp_secondoftwowithopt:wnn {omm}{#3} +\pdfstringdefDisableCommands{\let\hrefurl\__hyp_secondoftwowithopt:wnn} +\pdfstringdefDisableCommands{\let\hrefpdf\__hyp_secondoftwowithopt:wnn} +\pdfstringdefDisableCommands{\let\hrefrun\__hyp_secondoftwowithopt:wnn} +\cs_new_protected:Npn \__hyp_store_metadata:nn #1 #2 %#1 key, #2 value. + { + %\tl_set:cn {@#1}{#2} + \AddToDocumentProperties[hyperref]{#1}{#2} + } +\cs_generate_variant:Nn \__hyp_store_metadata:nn {xn,nx,xx} +\hook_new:n{hyp/link/cite} +\keys_define:nn { hyp / setup } + { + ,citecolor .code:n = {\__hyp_color_set:ne {hyp/color/cite}{#1}\__hyp_citecolor_hook_init:} + ,citebordercolor + .code:n = {\__hyp_color_set:ne {hyp/color/citeborder}{#1}\__hyp_citebordercolor_hook_init:} + } +\cs_new_protected:Npn \__hyp_citecolor_hook_init: + { + \hook_gput_code:nnn { hyp/link/cite }{hyp/cite} + { + \keys_set:nn { hyp / setup } + { + linkcolor = hyp/color/cite + } + } + \cs_gset_eq:NN \__hyp_citecolor_hook_init: \prg_do_nothing: + } +\cs_new_protected:Npn \__hyp_citebordercolor_hook_init: + { + \hook_gput_code:nnn { hyp/link/cite }{hyp/citeborder} + { + \keys_set:nn { hyp / setup } + { + linkbordercolor = hyp/color/citeborder + } + } + \cs_gset_eq:NN \__hyp_citebordercolor_hook_init: \prg_do_nothing: + } + +\bool_lazy_and:nnF + { \cs_if_exist_p:N \pdfmanagement_if_active_p: }{ \pdfmanagement_if_active_p: } + { \msg_error:nn { hyp}{ missing-resource-management } } +\AddToHook { package/bookmark/after} + { + \define@key{BKM}{color} + { + \__hyp_color_set:ne {__hyp/tmpa}{#1} + \color_export:nVN + {__hyp/tmpa} + \g__hyp_bordercolormodel_str + \BKM@color + } + } +\legacy_if:nT { Hy@bookmarks } + { + \AddToHook{begindocument/before}[hyperref/bookmark] + { + \RequirePackage{bookmark} + } + } +\legacy_if:nT {Hy@draft} + { + \PassOptionsToPackage{draft}{bookmark} + } +\cs_new_protected:Npn \__hyp_ref_label:nn #1 #2 %label/attributes + { + \@bsphack + \ref_label:nn{#1}{#2} + \@esphack + } +\cs_generate_variant:Nn \__hyp_ref_label:nn {en} +\prg_new_eq_conditional:NNn \__hyp_ref_if_exist:nn \ref_if_exist:nn { p , T , F, TF } +\prg_generate_conditional_variant:Nnn \__hyp_ref_if_exist:nn {en} { p , T , F, TF } +\cs_new_protected:Npn \__hyp_ref_check:nn #1 #2 %label/attribute + { + \__hyp_ref_if_exist:nnF {#1}{#2} + { + \protect\G@refundefinedtrue + \@latex@warning + { + Reference~'\tl_to_str:n {#1}'~with~attribute~'\tl_to_str:n {#2}'~ + on~page~\thepage~\space undefined + } + } + } +\cs_generate_variant:Nn \__hyp_ref_check:nn {en} +\cs_new:Npn \__hyp_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__hyp_ref_value:nn {en} +\box_new:N \l__hyp_tmpa_box +\tl_new:N \l__hyp_tmpa_tl +\seq_new:N \l__hyp_tmpa_seq +\int_new:N \l__hyp_tmpa_int +\str_new:N \l__hyp_tmpa_str +\tl_new:N \l__hyp_dest_name_tmpa_tl +\tl_new:N \l__hyp_uri_tmpa_tl +\tl_new:N \l__hyp_filename_tmpa_tl +\tl_new:N \l__hyp_para_tmpa_tl +\str_new:N \l__hyp_text_tmpa_str +\str_new:N \g__hyp_text_tmpa_str +\tl_const:Nn \c__hyp_dest_undefined_tl {UNDEFINED} +\seq_const_from_clist:Nn \c__hyp_annot_types_seq + {url,link,file,menu,run} +\prop_const_from_keyval:Nn \c__hyp_map_annot_hyp_prop + { + URI = url, + GoTo = link, + GoToR = file, + Named = menu, + Launch= run + } +\prop_const_from_keyval:Nn \c__hyp_map_hyp_annot_prop + { + url = URI, + link = GoTo, + file = GoToR, + menu = Named, + run = Launch + } + +\tl_new:N \g__hyp_dest_pdfstartpage_tl +\tl_new:N \g__hyp_dest_pdfstartview_tl +\tl_new:N \l__hyp_dest_pdfremotestartview_tl +\tl_new:N \l__hyp_text_enc_uri_print_tl +\tl_new:N \l__hyp_text_enc_info_print_tl +\tl_new:N \l__hyp_text_enc_dest_tl +\tl_new:N \l__hyp_text_enc_dest_print_tl +\tl_new:N \l__hyp_text_enc_file_print_tl +\tl_new:N \l__hyp_text_enc_para_print_tl + +\tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/URI} +\tl_set:Nn \l__hyp_text_enc_info_print_tl {utf16/hex} +\tl_set:Nn \l__hyp_text_enc_dest_tl {utf8/string-raw} +\tl_set:Nn \l__hyp_text_enc_dest_print_tl {utf8/string} +\tl_set:Nn \l__hyp_text_enc_file_print_tl {utf8/string} +\tl_set:Nn \l__hyp_text_enc_para_print_tl {utf8/string} +\tl_new:N \l__hyp_dest_pdfview_tl +\str_new:N \g__hyp_bordercolormodel_str +\seq_map_inline:Nn \c__hyp_annot_types_seq + { + \bool_new:c {l_hyp_annot_color#1_bool} + } +\seq_map_inline:Nn \c__hyp_annot_types_seq + { + \bool_new:c {l_hyp_annot_ocgcolor#1_bool} + } +\seq_map_inline:Nn \c_pdfannot_link_types_seq + { + \bool_new:c {l__hyp_annot_#1_bool} + \bool_set_true:c {l__hyp_annot_#1_bool} + } +\box_new:N \l__hyp_dest_box + +\regex_const:Nn \c__hyp_dest_startview_regex + { + \A\ * + (?: + (?:XYZ (?:\ +(?:(?:\d+|\d*\.\d+)|null)){3}\ ) + | + (?:Fit\b|FitB\b) + | + (?:(?:FitH|FitV|FitBH|FitBV)(?:\ +(?:\d+|\d*\.\d+)|\ +null){1}) + | + (?:FitR (?:\ +\d+|\ +\d*\.\d+){4}\ ) + ) + } +\pdfdict_new:n {l__hyp_page/Trans} +\pdfdict_put:nnn {l__hyp_page/Trans}{Type}{/Trans} + +\hook_new:n {hyp/text/pdfstring} +\cs_new_protected:Npn \__hyp_text_purify:nN #1 #2 %#1 input, #2 str command + { + \str_set:Nx #2 {\text_purify:n { #1 } } + } +\cs_new_protected:Npn \__hyp_text_cleanup:N #1 + { + + } +\cs_new_protected:Npn \__hyp_text_string_from_unicode:nN #1 #2 + { + \pdf_string_from_unicode:nVN { #1 } #2 #2 + } +\cs_new_protected:Npn \__hyp_text_pdfstring:nnN #1 #2 #3 + { + \group_begin: + \Hy@pdfstringtrue + \hook_use:n {hyp/text/pdfstring} + \__hyp_text_purify:nN { #1 } \l__hyp_text_tmpa_str + \__hyp_text_cleanup:N \l__hyp_text_tmpa_str + \__hyp_text_string_from_unicode:nN { #2 } \l__hyp_text_tmpa_str + \str_gset_eq:NN \g__hyp_text_tmpa_str\l__hyp_text_tmpa_str + \group_end: + \str_set_eq:NN #3 \g__hyp_text_tmpa_str + } +\cs_generate_variant:Nn \__hyp_text_pdfstring:nnN {xnN,onN,xoN,ooN,noN} +\cs_new_protected:Npn\Hy@pstringdef #1 #2 + { \__hyp_text_pdfstring:xnN {#2} {utf8/string-raw}#1 } +\cs_new_protected:Npn \__hyp_text_pdfstring_info:nN #1 #2 + { + \__hyp_text_pdfstring:noN { #1 }{ \l__hyp_text_enc_info_print_tl } #2 + } +\cs_new_protected:Npn\__hyp_PageLabels_gpush: + { + \pdfmanagement_add:nnx {Catalog} {PageLabels}{<>} + } + +\def\Hy@PutCatalog #1 {} + +\legacy_if:nT { Hy@pdfpagelabels } + { + \cs_set_protected:Npn \HyPL@StorePageLabel #1 + { + \tl_gput_right:Nx \HyPL@Labels { \the\Hy@abspage<<#1>> } + \__hyp_PageLabels_gpush: + } + } +\Hy@WrapperDef \__hyp_destination:nn #1 #2 + { + \mode_if_horizontal:T { \@savsf\spacefactor } + \Hy@SaveLastskip %defined in hyperref + \Hy@VerboseAnchor{#1} %defined in hyperref, for debugging + \__hyp_text_pdfstring:xoN + { \HyperDestNameFilter{#1} } + { \l__hyp_text_enc_dest_tl } + \l__hyp_tmpa_tl + \str_if_eq:nnTF {#2} {fitrbox} + { + \exp_args:NV + \pdf_destination:nnnn \l__hyp_tmpa_tl + { \box_wd:N \l__hyp_dest_box } + { \box_ht:N \l__hyp_dest_box } + { \box_dp:N \l__hyp_dest_box } + } + { + \exp_args:NV + \pdf_destination:nf + { \l__hyp_tmpa_tl } + { #2 } + } + \Hy@RestoreLastskip %defined in hyperref + \mode_if_horizontal:T { \spacefactor\@savsf } + } +\tl_new:N\l_hyp_current_dest_name_tl +\hook_new:n{hyp/anchor} +\cs_new_protected:Npn \hyper@anchor #1 + { + \exp_args:NnV + \__hyp_destination:nn {#1} \l__hyp_dest_pdfview_tl + \tl_set:Nn \l_hyp_current_dest_name_tl {#1} + \hook_use:n{hyp/anchor} + } + +\cs_new_protected:Npn \hyper@anchorstart #1 + { + \Hy@activeanchortrue + \exp_args:NnV + \__hyp_destination:nn {#1} \l__hyp_dest_pdfview_tl + \tl_set:Nn \l_hyp_current_dest_name_tl {#1} + \hook_use:n{hyp/anchor} + } + +\cs_new_protected:Npn \hyper@anchorend + { + \Hy@activeanchorfalse + } +\cs_new_protected:Npn \__hyp_link_goto_begin:nw #1 + { + \mode_leave_vertical: + \protected@edef \l__hyp_dest_name_tmpa_tl { #1 } + \tl_if_empty:NTF \l__hyp_dest_name_tmpa_tl + { + \msg_warning:nnx + { hyp } + { empty-destination-name } + { \c__hyp_dest_undefined_tl } + \tl_set_eq:NN \l__hyp_dest_name_tmpa_tl \c__hyp_dest_undefined_tl + } + { + \__hyp_text_pdfstring:xoN + { \exp_args:No \HyperDestNameFilter { \l__hyp_dest_name_tmpa_tl } } + { \l__hyp_text_enc_dest_tl } + \l__hyp_dest_name_tmpa_tl + } + \exp_args:No + \pdfannot_link_goto_begin:nw { \l__hyp_dest_name_tmpa_tl } + } + +\cs_new_protected:Npn \__hyp_link_goto_end: + { + \pdfannot_link_goto_end: + } + + +\cs_new_protected:Npn \hyper@link #1 #2 #3 %#1 context, #2=destination name, #3 content + { + \bool_if:NTF \l__hyp_annot_GoTo_bool + { + \Hy@VerboseLinkStart{#1}{#2} + \group_begin: + \tl_set:Nn \l_hyp_current_dest_name_tl {#2} + \hook_use:n {hyp/link/#1} + \__hyp_link_goto_begin:nw {#2}#3\Hy@xspace@end + \__hyp_link_goto_end: + \group_end: + \Hy@VerboseLinkStop + } + {{\let\protect\relax#3}} + } + +\cs_new_protected:Npn \hyper@linkstart #1 #2 %#1 context, #2=destination name + { + \bool_if:NT \l__hyp_annot_GoTo_bool + { + \Hy@VerboseLinkStart{#1}{#2}% only for debug + \group_begin: + \tl_set:Nn \l_hyp_current_dest_name_tl {#2} + \hook_use:n {hyp/link/#1} + \__hyp_link_goto_begin:nw {#2} + } + } + +\cs_new_protected:Npn \hyper@linkend + { + \bool_if:NT \l__hyp_annot_GoTo_bool + { + \__hyp_link_goto_end: + \group_end: + \Hy@VerboseLinkStop + } + } +\pdfdict_new:n {l_hyp/annot/A/URI} +\pdfdict_put:nnn {l_hyp/annot/A/URI}{Type}{/Action} +\pdfdict_put:nnn {l_hyp/annot/A/URI}{S}{/URI} + +\cs_new_protected:Npn \hyper@linkurl #1 #2 %#1:link text #2: URI, + { + \bool_if:NTF \l__hyp_annot_URI_bool + { + \group_begin: + \__hyp_text_pdfstring:xoN + { #2} + { \l__hyp_text_enc_uri_print_tl } + \l__hyp_uri_tmpa_tl + \pdfdict_put:nno{l_hyp/annot/A/URI}{URI}{\l__hyp_uri_tmpa_tl} + \bool_if:NT \l__hyp_href_url_ismap_bool + { + \pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true} + } + \cs_set_eq:NN \# \c_hash_str + \cs_set_eq:NN \% \c_percent_str + \Hy@safe@activestrue + \mode_leave_vertical: + \pdfannot_dict_put:nnx {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>} + \pdfannot_link:nxn { URI } + { + } + { + \let\protect\relax + #1 + \Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } + {{\let\protect\relax#1}} + } + +\pdfdict_new:n {l_hyp/annot/A/GoToR} +\pdfdict_put:nnn {l_hyp/annot/A/GoToR}{Type}{/Action} +\pdfdict_put:nnn {l_hyp/annot/A/GoToR}{S}{/GoToR} + +\cs_new_protected:Npn \hyper@linkfile #1 #2 #3 % link text, filename, destname + { + \bool_if:NTF \l__hyp_annot_GoToR_bool + { + \group_begin: + \tl_set:Nx \l__hyp_filename_tmpa_tl { \text_expand:n { #2 } } + \exp_args:Nx + \pdf_object_if_exist:nF { __hyp_file_\tl_to_str:N \l__hyp_filename_tmpa_tl } + { + \pdfdict_put:nnx { l_pdffile/Filespec}{Subtype}{\pdf_name_from_unicode_e:n {application/pdf}} + \exp_args:Nnox + \pdffile_embed_file:nnn + {} + {\l__hyp_filename_tmpa_tl } + {__hyp_file_\tl_to_str:N \l__hyp_filename_tmpa_tl } + } + \pdfdict_put:nnx + {l_hyp/annot/A/GoToR} + {F} + {\pdf_object_ref:e {__hyp_file_\tl_to_str:N \l__hyp_filename_tmpa_tl}} + \__hyp_text_pdfstring:nnN + { #3 } + { \l__hyp_text_enc_dest_print_tl } + \l__hyp_dest_name_tmpa_tl + \tl_if_blank:eTF {#3} + { + \pdfdict_put:nnx {l_hyp/annot/A/GoToR}{D} + { + [ + \int_eval:n + { \int_max:nn {0}{ 0\l__hyp_href_pdf_page_tl - 1 }} + /\l__hyp_dest_pdfremotestartview_tl + ] + } + } + { + \pdfdict_put:nno {l_hyp/annot/A/GoToR}{D}{\l__hyp_dest_name_tmpa_tl} + } + \mode_leave_vertical: + \pdf_object_unnamed_write:nx{dict}{\pdfdict_use:n {l_hyp/annot/A/GoToR}} + \pdfannot_dict_put:nnx {link/GoToR}{A}{\pdf_object_ref_last:} + \pdfannot_link:nxn %expansion?? + { GoToR } + { + } + { + \let\protect\relax + #1\Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } + {{\let\protect\relax#1}} + } +\pdfdict_new:n {l_hyp/annot/A/Launch} +\pdfdict_put:nnn {l_hyp/annot/A/Launch}{Type}{/Action} +\pdfdict_put:nnn {l_hyp/annot/A/Launch}{S}{/Launch} + +\cs_new_protected:Npn \hyper@linklaunch #1 #2 #3 % filename, link text, Parameters + { + \bool_if:NTF \l__hyp_annot_Launch_bool + { + \group_begin: + \__hyp_text_pdfstring:nnN + { #1 } + { \l__hyp_text_enc_file_print_tl } + \l__hyp_filename_tmpa_tl + \pdfdict_put:nno {l_hyp/annot/A/Launch}{F}{\l__hyp_filename_tmpa_tl} + \__hyp_text_pdfstring:noN + { #3 } + { \l__hyp_text_enc_para_print_tl } + \l__hyp_para_tmpa_tl + \bool_if:nTF + { + \str_if_eq_p:Vn \l__hyp_para_tmpa_tl {()} + || + \pdf_version_compare_p:Nn > {1.9} + } + { + \pdfdict_remove:nn {l_hyp/annot/A/Launch}{Win} + } + { + \pdfdict_put:nnx {l_hyp/annot/A/Launch}{Win} + {<

>} + } + \mode_leave_vertical: + \pdfannot_dict_put:nnx {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>} + \pdfannot_link:nxn + { Launch } + { + % /A + } + { + \let\protect\relax + #2\Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } + {{\let\protect\relax#2}} + } +\use:x + { % filename, anchor text, linkname + \cs_set_protected:Npn \exp_not:N \@hyper@launch run \c_colon_str ##1 \exp_not:N \\ ##2 ##3 + } + { + \hyper@linklaunch {#1}{#2}{#3} + } +\pdfdict_new:n {l_hyp/annot/A/Named} +\pdfdict_put:nnn {l_hyp/annot/A/Named}{Type}{/Action} +\pdfdict_put:nnn {l_hyp/annot/A/Named}{S}{/Named} + +\cs_new_protected:Npn \hyper@linknamed #1 #2 %#1 action, #2 link text + { + \bool_if:NTF \l__hyp_annot_Named_bool + { + \group_begin: + \pdfmeta_standard_verify:nnTF {named_actions}{#1} + { + \mode_leave_vertical: + \pdfdict_put:nnx {l_hyp/annot/A/Named}{N} + {\pdf_name_from_unicode_e:n{#1}} + \pdfannot_dict_put:nnx {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>} + \pdfannot_link:nxn { Named } + { + } + { + #2 + \Hy@xspace@end + \Hy@VerboseLinkStop + } + } + { + \msg_warning:nnn { hyp } { pdfa-no-named-action }{#1} + #2 + } + \group_end: + } + {{\let\protect\relax#2}} + } + +\cs_generate_variant:Nn \color_export:nnN {nVN} +\cs_new_protected:Npn \__hyp_color_select:n #1 + { + \tl_if_head_eq_charcode:nNTF {#1}[ %] + { + \__hyp_color_select_aux:wn #1 + } + { + \color_select:n {#1} + } + } + +\cs_new_protected:Npn \__hyp_color_select_aux:wn [#1] #2 + { + \color_select:nn {#1}{#2} + } + +\cs_generate_variant:Nn \__hyp_color_select:n {e} +\cs_new_protected:Npn \__hyp_color_set:nn #1 #2 + { + \tl_if_head_eq_charcode:nNTF {#2}[ %] + { + \__hyp_color_set_aux:nwn { #1 } #2 + } + { + \color_set:nn {#1} {#2} + } + } + +\cs_new_protected:Npn \__hyp_color_set_aux:nwn #1 [#2] #3 + { + \color_set:nnn {#1}{#2}{#3} + } + +\cs_generate_variant:Nn \__hyp_color_set:nn {ne} +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \hook_gput_code:nnn + {pdfannot/link/#2/begin} + {hyp/color} + { + \bool_if:cT { l_hyp_annot_color#1_bool } + { + \group_begin: + \color_select:n { hyp/color/#1} + } + } + \hook_gput_code:nnn + {pdfannot/link/#2/end} + {hyp/color} + { + \bool_if:cT { l_hyp_annot_color#1_bool } + { + \group_end: + } + } + } +\keys_define:nn { hyp / setup } + { + ,colorlinks .meta:n = + { + ,pdfborder={0~0~0} + ,pdfborderstyle= + ,colorurl =#1 + ,colorlink =#1 + ,colorrun =#1 + ,colormenu =#1 + ,colorfile =#1 + } + ,colorlinks .default:n = {true} + } +\seq_map_inline:Nn \c__hyp_annot_types_seq + { + \keys_define:nn { hyp / setup } + { + ,color#1 .bool_set:c = { l_hyp_annot_color#1_bool } + ,#1color .code:n = { \__hyp_color_set:ne {hyp/color/#1}{##1} } + } + } + +\keys_define:nn { hyp / setup } + { + ,allcolors .meta:n = + { + ,urlcolor=#1 + ,linkcolor=#1 + ,runcolor=#1 + ,filecolor=#1 + ,menucolor=#1 + } + ,allcolors .value_required:n = true + } +\keys_define:nn { hyp / setup } + { + ,bordercolormodel .choices:nn = + {rgb,cmyk} + { \str_gset:Nn \g__hyp_bordercolormodel_str {space-sep-#1}} + ,bordercolormodel .initial:n ={rgb} + } +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \keys_define:nn { hyp / setup } + { + #1bordercolor .code:n = + { + \tl_if_empty:nTF { ##1 } + { + \pdfannot_dict_remove:nn + {link/#2} + { C } + } + { + \__hyp_color_set:ne {hyp/color/#1border}{##1} + \color_export:nVN + {hyp/color/#1border} + \g__hyp_bordercolormodel_str + \l__hyp_tmpa_tl + \pdfannot_dict_put:nnx + {link/#2} + { C } + { [\l__hyp_tmpa_tl] } + } + } + } + } + +\keys_define:nn { hyp / setup } + { + ,allbordercolors .meta:n = + { + ,linkbordercolor=#1 + ,urlbordercolor =#1 + ,filebordercolor=#1 + ,menubordercolor=#1 + ,runbordercolor =#1 + } + ,allbordercolors .value_required:n = true + } + +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \keys_define:nn { hyp / setup } + { + #1border .code:n = + { + \tl_if_empty:nTF { ##1 } + { + \pdfannot_dict_remove:nn + {link/#2} + { Border } + } + { + \pdfannot_dict_put:nnn + {link/#2} + { Border } + { [##1] } + } + } + } + } +\keys_define:nn { hyp / setup } + { + ,pdfborder .code:n = + { + \tl_if_empty:nTF { #1 } + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_remove:nn + {link/##2} + { Border } + } + } + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_put:nnn + {link/##2} + { Border } + { [#1] } + } + } + } + ,pdfborder .initial:n = {0~0~1}, + } +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \keys_define:nn { hyp / setup } + { + #1borderstyle .code:n = + { + \tl_if_empty:nTF { ##1 } + { + \pdfannot_dict_remove:nn + {link/#2} + { BS } + } + { + \pdfannot_dict_put:nnn + {link/#2} + { BS } + { <<##1>> } + } + } + } + } +\keys_define:nn { hyp / setup } + { + ,pdfborderstyle .code:n = + { + \tl_if_empty:nTF { #1 } + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_remove:nn + {link/##2} + { BS } + } + } + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_put:nnn + {link/##2} + { BS } + { <<#1>> } + } + } + } + ,pdfborderstyle .initial:n = {}, + } +\cs_new_protected:Npn \__hyp_ocg_init: + { + \pdf_object_new:nn { __hyp/OCG/View } { dict } + \pdf_object_new:nn { __hyp/OCG/Print } { dict } + \pdf_object_new:nn { __hyp/OCG/config } { dict } + \pdf_object_new:nn { __hyp/OCG/refarray } { array } + \pdf_object_write:nx { __hyp/OCG/refarray } + { + \pdf_object_ref:n { __hyp/OCG/View } + \c_space_tl + \pdf_object_ref:n { __hyp/OCG/Print } + } + \pdf_object_write:nn { __hyp/OCG/View } + { + /Type/OCG + /Name(View) + /Usage + << + /Print <>~ + /View <>~ + >> + } + \pdf_object_write:nn { __hyp/OCG/Print } + { + /Type/OCG + /Name(Print) + /Usage + << + /Print <>~ + /View <>~ + >> + } + \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {__hyp/OCG/View} } + \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {__hyp/OCG/Print} } + \pdf_object_write:nx { __hyp/OCG/config } + { + /OFF[\pdf_object_ref:n { __hyp/OCG/Print }] + /AS[ + << + /Event/View + /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray } + /Category[/View] + >> + << + /Event/Print + /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray } + /Category[/Print] + >> + << + /Event/Export + /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray } + /Category[/Print] + >> + ] + } + \pdfmanagement_add:nnx { Catalog / OCProperties }{ D }{ \pdf_object_ref:n { __hyp/OCG/config} } + \cs_gset:Npn \__hyp_ocg_init: {} + } +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \hook_gput_code:nnn + {pdfannot/link/#2/begin} + {hyp/ocg} + { + \bool_if:cT { l_hyp_annot_ocgcolor#1_bool } + { + \__hyp_ocg_init: + \group_begin: + \hbox_set:Nw \l__hyp_tmpa_box + } + } + \hook_gput_code:nnn + {pdfannot/link/#2/end} + {hyp/ocg} + { + \bool_if:cT { l_hyp_annot_ocgcolor#1_bool } + { + \hbox_set_end: + \mbox + { + \pdf_bdcobject:nn {OC}{__hyp/OCG/Print} + \hbox_overlap_right:n { \box_use:N \l__hyp_tmpa_box } + \pdf_emc: + \pdf_bdcobject:nn {OC}{__hyp/OCG/View} + \group_begin: + \color_select:n { hyp/color/#1 } + \box_use_drop:N \l__hyp_tmpa_box + \group_end: + \pdf_emc: + } + \group_end: + } + } + } +\bool_lazy_or:nnTF + { \pdf_version_compare_p:Nn > {1.4} } + { \str_if_eq_p:ee{\pdf_version_major:}{-1} } + { + \keys_define:nn { hyp / setup } + { + ,_ocgcolorlinks .meta:n = + { + ocgcolorlink=#1, + ocgcolorurl=#1, + ocgcolorfile=#1, + ocgcolorrun=#1, + ocgcolormenu=#1 + } + ,_ocgcolorlinks .default:n = true + } + } + { + \keys_define:nn { hyp / setup } + { + ,_ocgcolorlinks .code:n = + { + \msg_warning:nnxx + { hyp } + { ignore-deprecated-or-unknown-option-in-pdf-version } + { ocgcolorlinks } { \pdf_version_major:.\pdf_version_minor: } + } + } + } + +\keys_define:nn { hyp / setup } + { + ,ocgcolorlinks .choice: + ,ocgcolorlinks / true .meta:n = + { + pdfborder ={0~0~0}, + pdfborderstyle ={}, + colorlinks = false, + _ocgcolorlinks = true + } + ,ocgcolorlinks / false .meta:n = + { + _ocgcolorlinks = false + } + ,ocgcolorlinks .default:n = {true} + } + +\seq_map_inline:Nn \c__hyp_annot_types_seq + { + \bool_lazy_or:nnTF + { \pdf_version_compare_p:Nn > {1.4} } + { \str_if_eq_p:ee{\pdf_version_major:}{-1} } + { + \keys_define:nn { hyp / setup } + { + ,ocgcolor#1 .bool_set:c = { l_hyp_annot_ocgcolor#1_bool } + } + } + { + \keys_define:nn { hyp / setup } + { + ,ocgcolor#1 .code:n= + { + \msg_warning:nnxx + { hyp } + { ignore-deprecated-or-unknown-option-in-pdf-version } + { ocgcolor#1 } + { \pdf_version_major:.\pdf_version_minor: } + } + } + } + } +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \keys_define:nn { hyp / setup } + { + ,#1highlight .choices:nn = + { /I, /N, /O, /P} + { + \pdfannot_dict_put:nnn + {link/#2} + { H } + { ##1 } + + } + ,#1highlight / .code:n = + { + \pdfannot_dict_remove:nn + {link/#2} + { H } + + } + ,#1highlight / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfhighlight } + { /I~(inverse), /N~(no effect), /O~(outline), /P~(inset) } + { \exp_not:n {##1} } + } + } + } + +\keys_define:nn { hyp / setup } + { + ,pdfhighlight .choices:nn = + { /I, /N, /O, /P} + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_put:nnn + {link/####2} + { H } + { #1 } + } + } + ,pdfhighlight / .code:n = + { + \prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \pdfannot_dict_remove:nn + {link/##2} + { H } + } + } + ,pdfhighlight .initial:n = {/I}, + ,pdfhighlight / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfhighlight } + { /I~(inverse), /N~(no effect), /O~(outline), /P~(inset) } + { \exp_not:n {#1} } + } + } +\keys_define:nn { hyp / setup } + { + hidelinks .meta:n = + { + ,colorlinks = false + ,ocgcolorlinks = false + ,pdfborder = { 0~0~0 } + ,pdfborderstyle= + } + } + +\seq_map_inline:Nn \c__hyp_annot_types_seq + { + \keys_define:nn { hyp / setup } + { + hide#1 .meta:n = + { + ,color#1 = false + ,ocgcolor#1 = false + ,#1border = { 0~0~0 } + ,#1borderstyle = + } + } + } +\keys_define:nn { hyp / setup } + { + colorscheme .code:n = + { + \prop_map_inline:cn { c__hyp_colorscheme_#1_prop } + { + \keys_set:nn { hyp /setup } + { + ##1 = ##2 + } + } + } + } +\keys_set:nn { hyp / setup } {colorscheme=phelype} +\keys_define:nn { hyp / setup } + { + ,unicode .code:n = {} + ,pdfencoding .code:n = {} + ,pdfversion .code:n = + { + \msg_warning:nn { hyp }{ pdfversion-disabled } + } + } +\keys_define:nn { hyp / setup } + { + ,verbose .legacy_if_set:n = {Hy@verbose} + ,debug .legacy_if_set:n = {Hy@verbose} + } +\keys_define:nn { hyp / setup } + { + ,draft .code:n = + { + \Hy@drafttrue + \PassOptionsToPackage{draft}{bookmark} + } + ,final .code:n = + { + \Hy@finaltrue + \PassOptionsToPackage{final}{bookmark} + } + } +\keys_define:nn { hyp / setup } + { + ,extension .tl_set:N = \XR@ext + ,extension .initial:n= pdf + ,hypertexnames .legacy_if_set:n = {Hy@hypertexnames} + ,linkfileprefix .tl_set:N = \Hy@linkfileprefix + ,localanchorname .legacy_if_set:n = {Hy@localanchorname} + ,naturalnames .legacy_if_set:n = {Hy@naturalnames} + ,pageanchor .legacy_if_set:n = {Hy@pageanchor} + ,plainpages .legacy_if_set:n = {Hy@plainpages} + } + +\keys_define:nn { hyp / setup } + { + ,linktoc .choices:nn = { none, section, all, page } + { + \cs_set_eq:Nc \Hy@linktoc { Hy@linktoc@#1 } + } + ,linktoc / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { linktoc } + { none, section, all, page } + { \exp_not:n {#1} } + } + ,linktocpage .choice: + ,linktocpage / true .meta:n = {linktoc=page} + ,linktocpage / false .meta:n = {linktoc=section} + ,linktocpage .default:n = true + } + +\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop + { + \keys_define:nn { hyp / setup } + { + ,#1 .bool_set:c = {l__hyp_annot_#2_bool} + } + } +\keys_define:nn { hyp / setup } + { + ,baseurl .code:n = + { + \__hyp_text_pdfstring:ooN { #1 } {\l__hyp_text_enc_uri_print_tl} \l__hyp_tmpa_tl + \tl_if_empty:NTF \l__hyp_tmpa_tl + { + \pdfmanagement_remove:nn {Catalog} { URI } + } + { + \pdfmanagement_add:nnx {Catalog} { URI }{ <> } + } + } + %only false does something ... + ,bookmarks .choice: + ,bookmarks / false .code:n = {\RemoveFromHook {begindocument/before}[hyperref/bookmark]} + ,bookmarks / true .code:n = {} + ,bookmarks .default:n = {true} + ,bookmarksnumbered .legacy_if_set:n = {Hy@bookmarksnumbered} + ,bookmarksopen .legacy_if_set:n = {Hy@bookmarksopen} + ,bookmarksopenlevel .tl_set:N = \@bookmarksopenlevel + ,bookmarkstype .tl_set:N = \Hy@bookmarkstype + ,pdfcenterwindow .choice: + ,pdfcenterwindow / false .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences }{ CenterWindow } + } + ,pdfcenterwindow / true .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { CenterWindow }{ true } + } + ,pdfcenterwindow / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences }{ CenterWindow } + } + ,pdfcenterwindow / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { pdfcenterwindow } + { \exp_not:n {#1} } + } + ,pdfcenterwindow .default:n = true + ,pdfdirection .choice: + ,pdfdirection / L2R .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { Direction }{ /L2R } + } + ,pdfdirection / R2L .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { Direction }{ /R2L } + } + ,pdfdirection / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { Direction } + } + ,pdfdirection / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfdirection } + { L2R , R2L } + { \exp_not:n {#1} } + } + ,pdfdisplaydoctitle .choice: + ,pdfdisplaydoctitle / false .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { DisplayDocTitle } + } + ,pdfdisplaydoctitle / true .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { DisplayDocTitle } { true } + } + ,pdfdisplaydoctitle .default:n = true + ,pdfduplex .choices:nn = + {Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge} + { + \pdf_version_compare:NnTF > {1.6} + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { PrintDuplex } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfduplex} + {\pdf_version:} + } + }% + ,pdfduplex / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { PrintDuplex } + } + ,pdfduplex / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfduplex } + { Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge } + { \exp_not:n {#1} } + } + ,pdffitwindow .choice: + ,pdffitwindow / false .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { FitWindow } + } + ,pdffitwindow / true .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } { FitWindow } { true } + } + ,pdffitwindow / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { FitWindow } + } + ,pdffitwindow .default:n = true + ,pdffitwindow / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { pdffitwindow } + { \exp_not:n {#1} } + } + ,pdflinkmargin .code:n = { \pdfannot_link_margin:n { #1 } } + ,pdflinkmargin .initial:n = {1pt} + ,pdfmenubar .choice: + ,pdfmenubar / true .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { HideMenubar } + } + ,pdfmenubar / false .code:n = + { + \pdfmanagement_add:nn {Catalog / ViewerPreferences } + { HideMenubar } { true } + } + ,pdfmenubar / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { HideMenubar } + } + ,pdfmenubar .default:n = true + ,pdfmenubar / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { pdfmenubar } + { \exp_not:n {#1} } + } + ,pdfnewwindow .choice: + ,pdfnewwindow / true .code:n = + { + \pdfdict_put:nnn {l_hyp/annot/A/GoToR}{/NewWindow}{true} + \pdfdict_put:nnn {l_hyp/annot/A/Launch}{/NewWindow}{true} + } + ,pdfnewwindow / false .code:n = + { + \pdfdict_put:nnn {l_hyp/annot/A/GoToR}{/NewWindow}{false} + \pdfdict_put:nnn {l_hyp/annot/A/Launch}{/NewWindow}{false} + } + ,pdfnewwindow / .code:n = + { + \pdfdict_remove:nn {l_hyp/annot/A/GoToR}{/NewWindow} + \pdfdict_remove:nn {l_hyp/annot/A/Launch}{/NewWindow} + } + ,pdfnonfullscreenpagemode .choices:nn = + { UseNone, UseOutlines, UseThumbs, FullScreen, UseOC } %pdf 1.5 + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + { NonFullScreenPageMode} {/#1} + } + ,pdfnonfullscreenpagemode / UseAttachments .code:n = + { + \pdf_version_compare:NnTF < {1.6} + { + %message + } + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + {NonFullScreenPageMode}{/UseAttachments} + } + } + ,pdfnonfullscreenpagemode / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { NonFullScreenPageMode } + } + ,pdfnonfullscreenpagemode / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfnonfullscreenpagemode } + { UseNone, UseOutlines, UseThumbs, FullScreen, UseOC, UseAttachments (PDF 1.6) } + { \exp_not:n {#1} } + } + ,pdfnumcopies .code:n = + { + \pdf_version_compare:NnTF > {1.6} + { + \tl_if_empty:nTF {#1} + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { NumCopies } + } + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + {NumCopies}{#1} + } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfnumcopies} + {\pdf_version:} + } + } + ,pdfpagelayout .choices:nn = + { SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight, TwoPageLeft, TwoPageRight} + { \pdfmanagement_add:nnx {Catalog} { PageLayout }{ /#1 } } + ,pdfpagelayout / .code:n = + { \pdfmanagement_remove:nn {Catalog} { PageLayout } } + ,pdfpagelayout / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfpagelayout } + { SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight, TwoPageLeft, TwoPageRight } + { \exp_not:n {#1} } + } + ,pdfpagemode .choices:nn = + { UseNone, UseOutlines, UseThumbs, FullScreen, UseOC } %pdf 1.5 + { \pdfmanagement_add:nnx {Catalog} { PageMode }{ /#1 } } + ,pdfpagemode / UseAttachments .code:n = + { + \pdf_version_compare:NnTF > {1.5} + { + \pdfmanagement_add:nnx {Catalog} { PageMode }{ /UseAttachments } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-value-in-pdf-version} + {UseAttachments} + {\pdf_version:} + } + } + ,pdfpagemode .initial:n = { UseOutlines } %for now ... + ,pdfpagemode / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfpagemode } + { UseNone, UseOutlines, UseThumbs, FullScreen, UseOC, UseAttachments (PDF 1.6) } + { \exp_not:n {#1} } + } + ,pdfpagescrop .code:n = + { + \tl_if_empty:nTF {#1} %or blank? + { + \pdfmanagement_remove:nn {Pages} { CropBox } + } + { + \pdfmanagement_add:nnx {Pages} { CropBox } { [#1] } + } + } + ,pdfpicktraybypdfsize .choice: + ,pdfpicktraybypdfsize / true .code:n = + { + \pdf_version_compare:NnTF > {1.6} + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { PickTrayByPDFSize } { true } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfpicktraybypdfsize} + {\pdf_version:} + } + } + ,pdfpicktraybypdfsize / false .code:n = + { + \pdf_version_compare:NnTF > {1.6} + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { PickTrayByPDFSize } { false } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfpicktraybypdfsize} + {\pdf_version:} + } + } + ,pdfpicktraybypdfsize / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { PickTrayByPDFSize } + } + ,pdfpicktraybypdfsize / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { picktraybypdfsize } + { \exp_not:n {#1} } + } + ,pdfprintarea .choices:nn = + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { + \pdf_version_compare:NnTF < {2.0} + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + { PrintArea } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfprintarea} + {\pdf_version:} + } + }% + ,pdfprintarea / .code:n = + { \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { PrintArea } } + ,pdfprintarea / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfprintarea } + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { \exp_not:n {#1} } + } + ,pdfprintclip .choices:nn = + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { + \pdf_version_compare:NnTF < {2.0} + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + { PrintClip } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfprintclip} + {\pdf_version:} + } + }% + ,pdfprintclip / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { PrintClip } + } + ,pdfprintclip / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfprintclip } + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { \exp_not:n {#1} } + } + ,pdfprintpagerange .code:n = + { + \pdf_version_compare:NnTF > {1.6} + { + \tl_if_empty:nTF { #1} + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } + { PrintPageRange } + } + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + {PrintPageRange}{[#1]} + } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfprintpagerange} + {\pdf_version:} + } + } + ,pdfprintscaling .choices:nn = + { None, AppDefault } + { + \pdf_version_compare:NnTF > {1.5} + { + \pdfmanagement_add:nnx {Catalog / ViewerPreferences } + { PrintScaling } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfprintscaling} + {\pdf_version:} + } + }% + ,pdfprintscaling / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } {PrintScaling } + } + ,pdfprintscaling / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfprintarea } + { None, AppDefault } + { \exp_not:n {#1} } + } + ,pdfremotestartview .code:n = + { + \tl_set:Nx \l__hyp_tmpa_tl {#1~null~null~null~} + \exp_args:NNV + \regex_extract_once:NnNTF \c__hyp_dest_startview_regex \l__hyp_tmpa_tl \l__hyp_tmpa_seq + { + \tl_set:Nx \l__hyp_dest_pdfremotestartview_tl {\seq_item:Nn \l__hyp_tmpa_seq {1}} + } + { + \msg_warning:nnnn {hyp}{invalid-destination-value}{#1}{pdfremotestartview} + \tl_set:Nn \l__hyp_dest_pdfremotestartview_tl {Fit} + } + } + ,pdfremotestartview .initial:n = {Fit} + % pdfstartpage is special as it shares code with pdfstartview + ,pdfstartpage .code:n = + { + \tl_gset:Nx \g__hyp_dest_pdfstartpage_tl { #1 } + \bool_if:nTF + { \tl_if_empty_p:N \g__hyp_dest_pdfstartpage_tl || \tl_if_empty_p:N \g__hyp_dest_pdfstartview_tl } + { + \pdfmanagement_remove:nn {Catalog} { OpenAction } + } + { + \pdfmanagement_add:nnx {Catalog} { OpenAction } + { + [\pdf_pageobject_ref:n {\g__hyp_dest_pdfstartpage_tl}~/\g__hyp_dest_pdfstartview_tl] + } + } + } + ,pdfstartpage .initial:n =1 + ,pdfstartview .code:n = + { + \tl_set:Nx \l__hyp_tmpa_tl {#1~null~null~null~} + \exp_args:NNV + \regex_extract_once:NnNTF \c__hyp_dest_startview_regex \l__hyp_tmpa_tl \l__hyp_tmpa_seq + { + \tl_gset:Nx \g__hyp_dest_pdfstartview_tl {\seq_item:Nn \l__hyp_tmpa_seq {1}} + } + { + \msg_warning:nnnn {hyp}{invalid-destination-value}{#1}{pdfstartview} + \tl_gset:Nn \g__hyp_dest_pdfstartview_tl {Fit} + } + \bool_if:nTF + { \tl_if_empty_p:N \g__hyp_dest_pdfstartpage_tl || \tl_if_empty_p:N \g__hyp_dest_pdfstartview_tl } + { + \pdfmanagement_remove:nn {Catalog} { OpenAction } + } + { + \pdfmanagement_add:nnx {Catalog} { OpenAction } + { + [\pdf_pageobject_ref:n {\g__hyp_dest_pdfstartpage_tl}~/\g__hyp_dest_pdfstartview_tl] + } + } + } + ,pdfstartview .initial:n = Fit + ,pdftoolbar .choice: + ,pdftoolbar / true .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { HideToolbar } + } + ,pdftoolbar / false .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { HideToolbar } { true } + } + ,pdftoolbar / true .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { HideToolbar } + } + ,pdftoolbar .default:n = true + ,pdftoolbar / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { pdftoolbar } + { \exp_not:n {#1} } + } + % pdfview see below. + ,pdfviewarea .choices:nn = + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { + \pdf_version_compare:NnTF < {2.0} + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { ViewArea } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfviewarea} + {\pdf_version:} + } + }% + ,pdfviewarea / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { ViewArea } + } + ,pdfviewarea / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfviewarea } + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { \exp_not:n {#1} } + } + ,pdfviewclip .choices:nn = + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { + \pdf_version_compare:NnTF < {2.0} + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { ViewClip } { /#1 } + } + { + \msg_warning:nnxx + {hyp} + {ignore-deprecated-or-unknown-option-in-pdf-version} + {pdfviewclip} + {\pdf_version:} + } + }% + ,pdfviewclip / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { ViewClip } + } + ,pdfviewclip / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice+empty } + { pdfviewclip } + { MediaBox, CropBox, BleedBox, TrimBox, ArtBox } + { \exp_not:n {#1} } + } + ,pdfwindowui .choice: + ,pdfwindowui / true .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { HideWindowUI } + } + ,pdfwindowui / false .code:n = + { + \pdfmanagement_add:nnn {Catalog / ViewerPreferences } + { HideWindowUI } { true } + } + ,pdfwindowui / .code:n = + { + \pdfmanagement_remove:nn {Catalog / ViewerPreferences } {HideWindowUI } + } + ,pdfwindowui / unknown .code:n = + { + \msg_warning:nnxx { hyp } { no-bool } + { pdfwindowui } + { \exp_not:n {#1} } + } + ,pdfwindowui .default:n = true + } +\keys_define:nn { hyp / setup } + { + ,pdfview .code:n = + { + \seq_set_split:Nnn \l__hyp_tmpa_seq {~}{#1} + \str_case_e:nnF { \str_lowercase:f{ \seq_item:Nn \l__hyp_tmpa_seq {1} } } + { + { xyz } + { + \int_compare:nNnTF {\seq_count:N \l__hyp_tmpa_seq } > { 1 } + { + \seq_get_right:NN \l__hyp_tmpa_seq \l__hyp_tmpa_tl + \tl_if_eq:NnTF \l__hyp_tmpa_tl {null} + { + \tl_set:Nn \l__hyp_dest_pdfview_tl {xyz} + } + { + \tl_set:Nx \l__hyp_dest_pdfview_tl + { + \fp_eval:n { \l__hyp_tmpa_tl * 100 } + } + } + } + { + \tl_set:Nn \l__hyp_dest_pdfview_tl {xyz} + } + } + { fit } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fit} } + { fitb } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fitb} } + { fitbh } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fitbh}} + { fitbv } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fitbv}} + { fith } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fith} } + { fitv } { \tl_set:Nn \l__hyp_dest_pdfview_tl {fitv} } + { fitr } + { + \int_compare:nNnTF {\seq_count:N \l__hyp_tmpa_seq } = {1} + { + \tl_set:Nn \l__hyp_dest_pdfview_tl {fitr} + } + { + %ensure 4 values ... + \tl_set:Nn \l__hyp_dest_pdfview_tl {fitrbox} + \seq_put_right:Nn \l__hyp_tmpa_seq {0} + \seq_put_right:Nn \l__hyp_tmpa_seq {0} + \seq_put_right:Nn \l__hyp_tmpa_seq {0} + \hbox_set_to_wd:Nnn \l__hyp_dest_box + { + \fp_eval:n + { + round + ( + abs + ( + \seq_item:Nn\l__hyp_tmpa_seq{4} + - + (\seq_item:Nn\l__hyp_tmpa_seq{2}) + ), + 3 + ) + }bp + }{} + \box_set_dp:Nn \l__hyp_dest_box + { + \fp_eval:n + { + round(0 - (\seq_item:Nn\l__hyp_tmpa_seq{3}),3) + }bp + } + \box_set_ht:Nn \l__hyp_dest_box + { + \seq_item:Nn\l__hyp_tmpa_seq{5}bp + } + } + } + } + { + \msg_warning:nnnn {hyp}{invalid-destination-value}{#1}{pdfview} + \tl_set:Nn \l__hyp_dest_pdfview_tl {fit} + } + } + ,pdfview .initial:n = {xyz} + } +\keys_define:nn { hyp / setup } + { + ,pdflang .code:n = + { + \tl_if_empty:nTF { #1 } + { + \pdfmanagement_remove:nn {Catalog} { Lang } + } + { + \pdfmanagement_add:nnx {Catalog} { Lang } { (#1) } + } + \__hyp_store_metadata:nn {pdflang}{#1} + } + } +\cs_new_protected:Npn \__hyp_setup_info_key:nn #1 #2 + { + \keys_define:nn { hyp / setup } + { + pdf#1 .code:n = + { + \tl_if_blank:nTF {##1} + { + \str_case:nnF { #1 } + { + {creator} + { + \msg_info:nnn { hyp }{ empty-info-value } { pdfcreator } + \pdfmanagement_add:nnx {Info}{Creator}{()} + } + {producer} + { + \msg_info:nnn { hyp }{ empty-info-value } { pdfproducer } + \pdfmanagement_add:nnx {Info}{Producer}{()} + } + } + { + \pdfmanagement_remove:nn {Info}{#2} + } + } + { + \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str + \str_if_eq:VnF\l__hyp_tmpa_str{} + { + \pdfmanagement_add:nnx {Info}{#2}{\l__hyp_tmpa_str} + } + } + \__hyp_store_metadata:nn {pdf#1}{##1} + } + } + \keys_define:nn { hyp / info } + { + #2 .code:n = + { + \tl_if_blank:nTF {##1} + { + \pdfmanagement_remove:nn {Info}{#2} + } + { + \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str + \str_if_eq:VnF\l__hyp_tmpa_str{} + { + \pdfmanagement_add:nnx {Info}{#2}{\l__hyp_tmpa_str} + } + } + \exp_args:Nx \__hyp_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1} + } + ,unknown .code:n = + { + \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str + \str_if_eq:VnF\l__hyp_tmpa_str{} + { + \exp_args:Nno + \pdfmanagement_add:nnx {Info} + { \l_keys_key_str } {\l__hyp_tmpa_str} + } + } + } + } +\__hyp_setup_info_key:nn {author} {Author} +\__hyp_setup_info_key:nn {title} {Title} +\__hyp_setup_info_key:nn {producer} {Producer} +\__hyp_setup_info_key:nn {creator} {Creator} +\__hyp_setup_info_key:nn {subject} {Subject} +\__hyp_setup_info_key:nn {keywords} {Keywords} +\cs_new_protected:Npn \__hyp_setup_info_date_key:nn #1 #2 + { + \keys_define:nn { hyp / setup } + { + pdf#1 .code:n = + { + \tl_if_blank:nTF {##1} + { + \pdfmanagement_remove:nn {Info}{#2} + } + { + \pdfmanagement_add:nnx {Info}{#2}{(##1)} + } + \__hyp_store_metadata:nn {pdf#1}{##1} + } + } + \keys_define:nn { hyp / info } + { + #2 .code:n = + { + \tl_if_blank:nTF {##1} + { + \pdfmanagement_remove:nn {Info}{#2} + } + { + \pdfmanagement_add:nnx {Info}{#2}{(##1)} + } + \exp_args:Nx \__hyp_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1} + } + } + } + +\__hyp_setup_info_date_key:nn {creationdate} {CreationDate} +\__hyp_setup_info_date_key:nn {moddate} {ModDate} +\keys_define:nn { hyp / setup } + { + ,pdftrapped .code:n = + { + \exp_args:Nne + \keys_set:nn { hyp / setup } { _pdftrapped = \str_uppercase:n { #1 } } + } + ,_pdftrapped .choices:nn = {TRUE,FALSE,UNKNOWN} + { + \pdfmanagement_add:nnx {Info}{Trapped} + {/ + \str_uppercase:f { \str_head:n { #1 } } + \str_lowercase:f { \str_tail:n { #1 } } + } + \__hyp_store_metadata:nx {pdftrapped} + { + \str_uppercase:f { \str_head:n { #1 } } + \str_lowercase:f { \str_tail:n { #1 } } + } + } + ,_pdftrapped / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { pdftrapped } + { true~(case~insensitive), false~(case~insensitive), unknown~(case~insensitive) } + { \exp_not:n {#1} } + } + } +\keys_define:nn { hyp / setup } + { + pdfinfo .code:n = + { + \keys_set:nn { hyp / info } { #1 } + } + } +\keys_set:nn { hyp / setup} {pdfcreator = LaTeX~with~hyperref} +\keys_set:nn { hyp / setup} {pdfauthor = } +\keys_set:nn { hyp / setup} {pdftitle = } +\keys_set:nn { hyp / setup} {pdfsubject = } +\clist_map_inline:nn + { + ,pdfcopyright + ,pdftype + ,pdflicenseurl + ,pdfauthortitle + ,pdfcaptionwriter + ,pdfmetalang + ,pdfapart + ,pdfaconformance + ,pdfuapart + ,pdfxstandard + ,pdfsource + ,pdfdocumentid + ,pdfinstanceid + ,pdfversionid + ,pdfrendition + ,pdfpublication + ,pdfpubtype + ,pdfbytes + ,pdfnumpages + ,pdfissn + ,pdfeissn + ,pdfisbn + ,pdfbookedition + ,pdfpublisher + ,pdfvolumenum + ,pdfissuenum + ,pdfpagerange + ,pdfdoi + ,pdfurl + ,pdfidentifier + ,pdfsubtitle + ,pdfpubstatus + ,pdfcontactaddress + ,pdfcontactcity + ,pdfcontactregion + ,pdfcontactpostcode + ,pdfcontactcountry + ,pdfcontactphone + ,pdfcontactemail + ,pdfcontacturl + ,pdfdate + } + { + \keys_define:nn { hyp / setup } + { + #1 .code:n= { \__hyp_store_metadata:nn {#1}{##1}} + } + } + +\str_if_eq:eeT {A}{\pdfmeta_standard_item:n{type}} + { + \exp_args:Nnx + \keys_set:nn {hyp / setup} + { + ,pdfapart = \pdfmeta_standard_item:n {level} + ,pdfaconformance = \pdfmeta_standard_item:n {conformance} + } + } +\keys_define:nn { hyp / setup } + { + pdfpageduration .code:n = + { + \tl_if_blank:nTF { #1 } + { + \pdfmanagement_remove:nn {Page}{Dur} + } + { + \pdfmanagement_add:nnn {Page}{Dur}{#1} + } + } + } +\keys_define:nn { hyp / setup } + { + pdfpagetransition .code:n = + { + \tl_if_blank:nTF {#1} + { + \pdfmanagement_remove:nn {Page}{Trans} + } + { + \group_begin: + \keys_set:nn { hyp / trans }{style=R,#1} + \pdf_object_unnamed_write:nx { dict } + { + \pdfdict_use:n {l__hyp_page/Trans} + } + \pdfmanagement_add:nnx {Page}{Trans}{\pdf_object_ref_last:} + \group_end: + } + } + } +\keys_define:nn { hyp / trans } + { + ,style .choices:nn = + {Split,Blinds,Box,Wipe,Dissolve,Glitter,R,Fly,Push,Cover,Uncover,Fade} + { \pdfdict_put:nnn {l__hyp_page/Trans}{ S }{/#1} } + ,style / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { trans / style } + { Split,Blinds,Box,Wipe,Dissolve,Glitter,R,Fly,Push,Cover,Uncover,Fade } + { \exp_not:n {#1} } + } + ,duration .code:n = + { + \pdfdict_put:nnn {l__hyp_page/Trans}{ D }{#1} + } + ,direction .choices:nn = + {H,V} + { \pdfdict_put:nnn {l__hyp_page/Trans}{ Dm }{/#1} } + ,direction .choices:nn = + {0,90,180,270,315} + { \pdfdict_put:nnn {l__hyp_page/Trans}{ Di }{ #1 } } + ,direction / None .code:n = + { \pdfdict_put:nnn {l__hyp_page/Trans}{ Di }{ /None } } + ,direction / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { trans / direction } + { + H~(horizontal,~only~Split,~Blinds), + V~(vertical,~only~Split,~Blinds), + 0~(left~to~right,~only~Wipe,~Glitter,~Fly,~Cover,~Uncover,~Push), + 90~(bottom~to~top,~only~Wipe), + 180~(right~to~left,~only~Wipe), + 270~(top~to~bottom,~only~Wipe,~Glitter,~Fly,~Cover,~Uncover,~Push), + 315~(top~left~to~bottom,~only~Glitter), + None~(only~Fly) + } + { \exp_not:n {#1} } + } + ,motion .choices:nn = + {I,O} + { \pdfdict_put:nnn {l__hyp_page/Trans}{ M }{/#1} } + ,motion / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { trans / motion } + { I~(inwards) , O~(outwards) } + { \exp_not:n {#1} } + } + ,scale .code:n = + { \pdfdict_put:nnn { l__hyp_page/Trans }{ SS }{ #1 } } + ,opaque .choices:nn = {true,false} + { \pdfdict_put:nnn { l__hyp_page/Trans }{ B } { #1} } + ,opaque / unknown .code:n = + { + \msg_warning:nnxxx { hyp } { unknown-choice } + { trans / B } + { true~(opaque~back,~only~Fly), false~(opaque~back,~only~Fly) } + { \exp_not:n {#1} } + } + % try to set unknown keys as style + ,unknown .code:n = + { + % warning ... + \exp_args:Nnx\keys_set:nn {hyp/trans}{ style=\l_keys_key_str } + } + } +\keys_set_known:nv{hyp/setup}{opt@hyperref.sty} +%% Form field code +\NewDocumentCommand \MakeFieldObject { m m } + { + \pdfxform_new:nnn { #2 }{} { #1 } + } + +\prop_new:N \g__hyp_AcroForm_CoFields_prop +\prop_new:N \g__hyp_AcroForm_Fields_prop + +\let\HyField@afields\ltx@empty +\let\HyField@cofields\ltx@empty +%% UF test for old pdftex removed +\def\HyField@AfterAuxOpen{\Hy@AtBeginDocument}% + +\def\HyField@AuxAddToFields#1 + { + \prop_gput:Nnn \g__hyp_AcroForm_Fields_prop {#1}{F} + }% + +\def\HyField@AuxAddToCoFields #1 #2 + { + \prop_gput:Nnn \g__hyp_AcroForm_CoFields_prop {a#1}{#2} + } + +\Hy@AtBeginDocument + { + \if@filesw + \immediate\write\@mainaux{% + \string\providecommand\string\HyField@AuxAddToFields[1]{}% + }% + \immediate\write\@mainaux{% + \string\providecommand\string\HyField@AuxAddToCoFields[2]{}% + }% + \fi + \let\HyField@AfterAuxOpen\@firstofone + }% + +\def\HyField@AddToFields + { + \exp_args:Nx\HyField__hypAddToFields + { + \pdfannot_box_ref_last: + } + \ifx\Fld@calculate@code\ltx@empty + \else + \begingroup + \Hy@safe@activestrue + \edef\Hy@temp{% + \endgroup + \if@filesw + \write\@mainaux + { + \string\HyField@AuxAddToCoFields + { + \Fld@calculate@sortkey + } + { + \pdfannot_box_ref_last: + } + } + \fi + }% + \Hy@temp + \fi + }% + +\def\HyField__hypAddToFields#1{ + \HyField@AfterAuxOpen{% + \if@filesw + \write\@mainaux{% + \string\HyField@AuxAddToFields{#1}% + }% + \fi + }% + }% + +\ExplSyntaxOff +\ExplSyntaxOn + +\def\@Form[#1] + { + \kvsetkeys{Form}{#1} + \pdf@ifdraftmode{} + { + \Hy@FormObjects + \prop_map_inline:Nn \g__hyp_AcroForm_Fields_prop + { + \pdfmanagement_add:nnx { Catalog / AcroForm } { Fields }{##1} + %\pdfmanagement_show:n { Catalog / AcroForm } + } + \prop_if_empty:NF \g__hyp_AcroForm_CoFields_prop + { + \prop_map_inline:Nn \g__hyp_AcroForm_CoFields_prop + { + \seq_put_right:Nn \l__hyp_tmpa_seq {##1} + } + \seq_sort:Nn \l__hyp_tmpa_seq + { + \str_compare:nNnTF {##1} > {##2} + { \sort_return_swapped: } + { \sort_return_same: } + } + \seq_map_inline:Nn \l__hyp_tmpa_seq + { + \pdfmanagement_add:nnx { Catalog / AcroForm } + { CO } + { + \prop_item:Nn \g__hyp_AcroForm_CoFields_prop {##1} + } + } + } + \pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font } + {ZaDb} {\pdf_object_ref:n {__hyp/Font/ZaDb} } + \pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font } + {Helv} {\pdf_object_ref:n {__hyp/Font/Helv} } + \pdfmanagement_add:nnx {Catalog /AcroForm} + {DA}{(/Helv~10~Tf~0~g)} + \pdfmeta_standard_verify:nTF {form_no_NeedAppearance} + { + \legacy_if:nT { HyField@NeedAppearances } + { + \pdfmanagement_add:nnn {Catalog / AcroForm }{NeedAppearances}{true} + } + } + { + \pdfmanagement_remove:nn {Catalog / AcroForm }{NeedAppearances} + } + } + } +\ExplSyntaxOff +\let\@endForm\ltx@empty +\let\HyAnn@AbsPageLabel\ltx@empty +\let\Fld@pageobjref\ltx@empty + +\ExplSyntaxOn +\newcount\HyAnn@Count +\HyAnn@Count=\ltx@zero +\def\HyAnn@AbsPageLabel + { + \global\advance\HyAnn@Count by\ltx@one + %\zref@labelbyprops{HyAnn@\the\HyAnn@Count}{abspage}% + %\zref@labelbylist {HyAnn@\the\HyAnn@Count} {l3pdf} + %\zref@refused{HyAnn@\the\HyAnn@Count}% + \__hyp_ref_label:en {HyAnn@\the\HyAnn@Count}{abspage} + \__hyp_ref_check:en {HyAnn@\the\HyAnn@Count}{abspage} + }% +\def\Fld@pageobjref + { + \__hyp_ref_if_exist:enT {HyAnn@\the\HyAnn@Count}{abspage} + { + /P~\pdf_pageobject_ref:n + { + \__hyp_ref_value:en{HyAnn@\the\HyAnn@Count}{abspage} + } + } + } +\ExplSyntaxOff +\ExplSyntaxOn +%% check if the attr should be set through +%% hooks. +%% check if options are missing. +\def\@TextField[#1]#2{% parameters, label + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Fld@value\@empty + \def\Fld@width{\DefaultWidthofText}% + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofText,#1% + }% + \PDFForm@Name + \HyField@FlagsText + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi + \LayoutTextField{#2}{% + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Text + \pdfannot_box:nnnn + {\Fld@width} + {\Fld@height} + {0pt} %is this correct? + {\PDFForm@Text} + \MakeTextField{\Fld@width}{\Fld@height} + \HyField@AddToFields + }% + \endgroup +} +\providecommand\@curropt{} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \def\Fld@name{#2} + \let\Fld@default\relax + \let\Fld@value\relax + \def\Fld@width{\DefaultWidthofChoiceMenu} + \def\Fld@height{\DefaultHeightofChoiceMenu} + \begingroup + \Fld@menulength=0 % + \@tempdima\z@ + \clist_map_variable:nNn { #3 } \@curropt + %\@for\@curropt:=#3\do + {% + \expandafter\Fld@checkequals\@curropt==\\% + \Hy@StepCount\Fld@menulength + \settowidth{\@tempdimb}{\@currDisplay}% + \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi + }% + \advance\@tempdima by~15\p@ + \begingroup + \HyField@SetKeys{#1} + \edef\x{\endgroup + \noexpand\expandafter + \noexpand\HyField@SetKeys + \noexpand\expandafter{% + \expandafter\noexpand\csname DefaultOptionsof% + \ifFld@radio + Radio% + \else + \ifFld@combo + \ifFld@popdown + PopdownBox% + \else + ComboBox% + \fi + \else + ListBox% + \fi + \fi + \endcsname + }% + }\x + \HyField@SetKeys{#1}% + \PDFForm@Name + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\relax + \let\Fld@value\Fld@default + \fi + \LayoutChoiceField{#2}{% + \ifFld@radio + \HyField@FlagsRadioButton + \__hypRadio{#3}% + \else + \begingroup + \HyField@FlagsChoice + \ifdim\Fld@width<\@tempdima + \ifdim\@tempdima<1cm\@tempdima1cm\fi + \edef\Fld@width{\the\@tempdima}% + \fi + \ifFld@combo + \else + \@tempdima=\the\Fld@menulength\Fld@charsize + \advance\@tempdima by~\Fld@borderwidth bp % + \advance\@tempdima by~\Fld@borderwidth bp % + \edef\Fld@height{\the\@tempdima}% + \fi + \__hypListbox{#3}% + \endgroup + \fi + }% + \endgroup +} + +\def\__hypRadio#1{% + \Fld@listcount=0~% + %\show\Fld@default + \EdefEscapeName\Fld@default{\Fld@default}% + \clist_map_variable:nNn { #1 } \@curropt + %\@for\@curropt:=#1\do + {% + \expandafter\Fld@checkequals\@curropt==\\% + \EdefEscapeName\@currValue{\@currValue}% + \Hy@StepCount\Fld@listcount + \@currDisplay\space + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Radio + \pdfxform_if_exist:nF { __hyp_xform_Ding } + { + \pdfxform_new:nnn { __hyp_xform_Ding } {} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char123 + \group_end: + } + } + \pdfannot_box:nnnx + {\Fld@width} + {\Fld@height} + {0pt} %is this correct? + { + \PDFForm@Radio + /AP + << + /N + << + /\@currValue\c_space_tl \pdfxform_ref:n {__hyp_xform_Ding} + %/Off \c_space_tl \pdfxform_ref:n {__hyp_xform_DingOff} %hm + >> + >> + } + {\fbox{ \MakeRadioField{\Fld@width}{\Fld@height}} } + \int_compare:nNnT { \Fld@listcount} = { 1 } + { \HyField@AddToFields } + \c_space_tl % deliberate space between radio buttons + % to do: --> should be configurable + }% +} + +\newcount\Fld@listcount +\def\__hypListbox#1 + { + \HyField@PDFChoices{#1} + \mode_leave_vertical: + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@List + \pdf_link_user:nnn + {widget} %perhaps we need more types?? + {\PDFForm@List} + {\MakeChoiceField{\Fld@width}{\Fld@height}} + \HyField@AddToFields + } + +\def\@PushButton[#1]#2{% parameters, label + \def\Fld@name{#2}% + \group_begin: + \exp_args:No\HyField@SetKeys + { + \DefaultOptionsofPushButton,#1 + } + \PDFForm@Name + \pdfmeta_standard_verify:nnTF {annot_action_A}{JavaScript} + { + \HyField@FlagsPushButton + \legacy_if:nT {Fld@hidden} + { + \def\Fld@width{1sp} + } + \LayoutPushButtonField + { + \mode_leave_vertical: + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Push + \hbox_set:Nn \l_tmpa_box { \MakeButtonField {#2}} + \pdfannot_box:nnnn + {\box_wd:N\l_tmpa_box} + {\box_ht:N\l_tmpa_box} + {\box_dp:N\l_tmpa_box} %is this correct? + {\PDFForm@Push} + {\box_use:N\l_tmpa_box} + \HyField@AddToFields + } + } + { + \msg_error:nn { hyp }{ pdfa-no-push-button } + \LayoutPushButtonField + { + \mode_leave_vertical: + \MakeButtonField{#2} + } + } + \group_end: +} + +\def\@Submit[#1]#2 + { + \def\Fld@width {\DefaultWidthofSubmit} + \def\Fld@height{\DefaultHeightofSubmit} + \group_begin: + \exp_args:No\HyField@SetKeys + { + \DefaultOptionsofSubmit,#1 + } + \HyField@FlagsPushButton + \HyField@FlagsSubmit + \legacy_if:nT { Fld@hidden } + { + \def\Fld@width{1sp} + } + \mode_leave_vertical: + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Submit + \hbox_set:Nn \l_tmpa_box { \MakeButtonField {#2}} + \pdfxform_if_exist:nF + { __hyp_xform_Submit } + { + \pdfxform_new:nnn { __hyp_xform_Submit }{} + { + \fbox{\color_select:n{yellow}\textsf{Submit}} + } + \pdfxform_new:nnn { __hyp_xform_SubmitP }{} + { + \fbox{\color_select:n{yellow}\textsf{SubmitP}} + } + } + \pdfannot_box:nnnn + {\box_wd:N\l_tmpa_box} + {\box_ht:N\l_tmpa_box} + {\box_dp:N\l_tmpa_box} %is this correct? + { + \PDFForm@Submit + /AP<< + /N~\pdfxform_ref:n {__hyp_xform_Submit}~ + /D~\pdfxform_ref:n {__hyp_xform_SubmitP} + >> + } + \HyField@AddToFields + \box_use:N\l_tmpa_box + + \group_end: + } + +\def\@Reset[#1]#2 + { + \def\Fld@width {\DefaultWidthofReset} + \def\Fld@height{\DefaultHeightofReset} + \group_begin: + \exp_args:No\HyField@SetKeys + { + \DefaultOptionsofReset,#1 + } + \mode_leave_vertical: + \pdfmeta_standard_verify:nnTF {annot_action_A}{ResetForm} + { + \HyField@FlagsPushButton + \legacy_if:nT { Fld@hidden } + { \def\Fld@width{1sp} } + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Reset + \hbox_set:Nn \l_tmpa_box { \MakeButtonField {#2}} + \pdfannot_box:nnnn + {\box_wd:N\l_tmpa_box} + {\box_ht:N\l_tmpa_box} + {\box_dp:N\l_tmpa_box} %is this correct? + { \PDFForm@Reset } + \HyField@AddToFields + \box_use:N \l_tmpa_box + } + { + \msg_error:nn { hyp }{ pdfa-no-reset-button } + \MakeButtonField{#2} + } + \group_end: + } + +\def\@CheckBox[#1]#2 + {% parameters, label + \def\Fld@name{#2} + \def\Fld@default{0} + \group_begin: + \def\Fld@width {\DefaultWidthofCheckBox} + \def\Fld@height{\DefaultHeightofCheckBox} + \exp_args:No\HyField@SetKeys + { + \DefaultOptionsofCheckBox,#1 + } + \PDFForm@Name + \HyField@FlagsCheckBox + \legacy_if:nT { Fld@hidden } + { + \def\Fld@width{1sp} + } + \LayoutCheckField{#2} + { + \mode_leave_vertical: + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Check + \pdfxform_if_exist:nF { __hyp_xform_CheckMarkYes } + { + \pdfxform_new:nnn + {__hyp_xform_CheckMarkYes}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \char51 + \group_end: + } + \pdfxform_new:nnn + {__hyp_xform_CheckMarkOff}{} + { + \group_begin: + \fontfamily{pzd} + \fontencoding{U} + \fontseries{m} + \fontshape{n} + \selectfont + \phantom{\char51} %perhaps xetex needs some small glyph .. + \group_end: + } + } + \pdfannot_box:nnnn + {\Fld@width} + {\Fld@height} + {0pt} %is this correct? + {\PDFForm@Check} + \HyField@AddToFields %check if this works with xelatex ... + } + \group_end: + } +\ExplSyntaxOff + +\ExplSyntaxOn +\def\Hy@FormObjects + { + \pdf_object_new:nn {__hyp/Encoding/pdfdoc } { dict } + \pdf_object_new:nn {__hyp/Font/ZaDb } { dict } + \pdf_object_new:nn {__hyp/Font/Helv } { dict } + \pdf_object_write:nx {__hyp/Encoding/pdfdoc } + { + /Type/Encoding + /Differences[ + 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek + /ring/tilde + \c_space_tl + 39/quotesingle + \c_space_tl + 96/grave % + \iow_newline: + 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin + /fraction/guilsinglleft/guilsinglright/minus/perthousand + /quotedblbase/quotedblleft/quotedblright/quoteleft + /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE + /Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron + \iow_newline: + 164/currency + \c_space_tl + 166/brokenbar + \c_space_tl + 168/dieresis/copyright/ordfeminine + \c_space_tl + 172/logicalnot/.notdef/registered/macron/degree/plusminus + /twosuperior/threesuperior/acute/mu + \c_space_tl + 183/periodcentered/cedilla/onesuperior/ordmasculine + \c_space_tl + 188/onequarter/onehalf/threequarters + \iow_newline: + 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE + /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave + /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute + /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave + /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls + /agrave/aacute/acircumflex/atilde/adieresis/aring/ae + /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave + /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute + /ocircumflex/otilde/odieresis/divide/oslash/ugrave + /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis + ] + } + \pdf_object_write:nn {__hyp/Font/ZaDb } + { + /Type/Font + /Subtype/Type1 + /Name/ZaDb + /BaseFont/ZapfDingbats + } + \pdf_object_write:nx {__hyp/Font/Helv } + { + /Type/Font + /Subtype/Type1 + /Name/Helv + /BaseFont/Helvetica + /Encoding~\pdf_object_ref:n { __hyp/Encoding/pdfdoc } + } + \global\let\Hy@FormObjects\relax + } +\ExplSyntaxOff +\providecommand*{\Fld@pageobjref}{} +\ifcsname pdf@escapestring\endcsname + \def\Hy@escapeform#1{% + \ifHy@pdfescapeform + \let\Hy@escapestring\pdfescapestring + \else + \let\Hy@escapestring\@firstofone + \fi + }% + \Hy@escapeform{}% +\else + \let\Hy@escapestring\@firstofone + \def\Hy@escapeform#1{% + \ifHy@pdfescapeform + \def\Hy@escapestring##1{% + \noexpand\Hy@escapestring{\noexpand##1}% + }% + \edef\Hy@temp{#1}% + \expandafter\Hy__hypescapeform\Hy@temp\Hy@escapestring{}\@nil + \def\Hy@escapestring##1{% + \@ifundefined{Hy@esc@\string##1}{% + ##1% + \ThisShouldNotHappen + }{% + \csname Hy@esc@\string##1\endcsname + }% + }% + \else + \let\Hy@escapestring\@firstofone + \fi + }% + \def\Hy__hypescapeform#1\Hy@escapestring#2#3\@nil{% + \ifx\\#3\\% + \else + \expandafter + \Hy@pstringdef\csname Hy@esc@\string#2\endcsname{#2}% probably string-hex + \ltx@ReturnAfterFi{% + \Hy__hypescapeform#3\@nil + }% + \fi + }% +\fi +\def\PDFForm@Name{% + \PDFForm__hypName\Fld@name + \ifx\Fld@altname\relax + \else + \PDFForm__hypName\Fld@altname + \fi + \ifx\Fld@mappingname\relax + \else + \PDFForm__hypName\Fld@mappingname + \fi +} +\def\PDFForm__hypName#1{% + \begingroup + \ifnum\Hy@pdfversion<5 % implementation note 117, PDF spec 1.7 + \ifHy@unicode + \Hy@unicodefalse + \fi + \fi + \pdfstringdef\Hy@gtemp#1% + \endgroup + \let#1\Hy@gtemp +} +\def\Fld@X@additionalactions{% + \ifx\Fld@keystroke@code\@empty + \else + /K<>% + \fi + \ifx\Fld@format@code\@empty + \else + /F<>% + \fi + \ifx\Fld@validate@code\@empty + \else + /V<>% + \fi + \ifx\Fld@calculate@code\@empty + \else + /C<>% + \fi + \ifx\Fld@onfocus@code\@empty + \else + /Fo<>% + \fi + \ifx\Fld@onblur@code\@empty + \else + /Bl<>% + \fi + \ifx\Fld@onmousedown@code\@empty + \else + /D<>% + \fi + \ifx\Fld@onmouseup@code\@empty + \else + /U<>% + \fi + \ifx\Fld@onenter@code\@empty + \else + /E<>% + \fi + \ifx\Fld@onexit@code\@empty + \else + /X<>% + \fi +} +\ExplSyntaxOn +\def\Fld@additionalactions + {% + \exp_args:Ne\str_if_eq:nnF {\Fld@X@additionalactions}{} + { + \pdfmeta_standard_verify:nT {annot_widget_no_AA} + {/AA<<\Fld@X@additionalactions>>} + } + } +\ExplSyntaxOff +\def\Fld@annotnames{% + /T(\Fld@name)% + \ifx\Fld@altname\relax + \else + /TU(\Fld@altname)% + \fi + \ifx\Fld@mappingname\relax + \else + /TM(\Fld@mappingname)% + \fi +} +\ExplSyntaxOn +\def\PDFForm@Check + { + /Subtype/Widget + ~\Fld@annotflags + ~\Fld@pageobjref + ~\Fld@annotnames + /FT/Btn + \Fld@flags + /Q~\Fld@align + /BS<> + /AP + << + /N + << + /Yes~\pdfxform_ref:n{__hyp_xform_CheckMarkYes} + /Off~\pdfxform_ref:n{__hyp_xform_CheckMarkOff} + >> + >> + /MK<< + \int_compare:nNnF {\Fld@rotation}={0} + { + /R~\Fld@rotation + } + \tl_if_empty:NF\Fld@bordercolor + { + /BC[\Fld@bordercolor] + } + \tl_if_empty:NF\Fld@bcolor + { + /BG[\Fld@bcolor] + } + /CA(\Hy@escapestring{\Fld@cbsymbol})% + >> + /DA + ( + /ZaDb~\strip@pt\Fld@charsize\c_space_tl Tf + \tl_if_empty:NF \Fld@color + { + \c_space_tl \Fld@color + } + ) + /H/P + \legacy_if:nTF {Fld@checked} + { + /V/Yes /AS/Yes + } + { + /V/Off /AS/Off + } + \Fld@additionalactions +} +\ExplSyntaxOff +\ExplSyntaxOn + \def\PDFForm@Push + { + /Subtype/Widget + ~\Fld@annotflags + ~\Fld@pageobjref + ~\Fld@annotnames + /FT/Btn + ~\Fld@flags + /H/P + /BS<> + \bool_if:nT + { + !\int_compare_p:nNn {\Fld@rotation} = {0} + || + \tl_if_exist_p:N \Fld@bordercolor + } + { + /MK + << + \int_compare:nNnF {\Fld@rotation} = {0} + { + /R~\Fld@rotation + } + \tl_if_exist:NT \Fld@bordercolor + { + /BC[\Fld@bordercolor] + } + >> + } + /A<> + \Fld@additionalactions + } + +\ExplSyntaxOff +\def\PDFForm@List{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Ch% + \Fld@flags + /Q \Fld@align + /BS<>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \ifx\fld@bcolor\relax \else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + >>% + \fi + /DA(/Helv \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + \Fld@choices + \Fld@additionalactions +} +\ExplSyntaxOn +\def\PDFForm@Radio + { + /Subtype/Widget + ~\Fld@annotflags + ~\Fld@pageobjref + ~\Fld@annotnames + /FT/Btn + \Fld@flags + /H/P + /BS<> + /MK<< + \ifnum\Fld@rotation=\z@ + \else + /R~\Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + /CA(\Hy@escapestring{\Fld@radiosymbol})% + >> + /DA(/ZaDb~\strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + \ifx\Fld@default\@empty + /V/Off% + /DV/Off% + \else + /V/\Fld@default + /DV/\Fld@default + \fi + \Fld@additionalactions + } +\ExplSyntaxOff +\ExplSyntaxOn +\def\PDFForm@Text + { + /Subtype/Widget + ~\Fld@annotflags + ~\Fld@pageobjref + ~\Fld@annotnames + /FT/Tx + ~\Fld@flags + /Q~\Fld@align + /BS<> + \bool_if:nT + { + !\int_compare_p:nNn {\Fld@rotation} = {0} + || + \tl_if_exist_p:N \Fld@bordercolor + || + \tl_if_exist_p:N \Fld@bcolor + } + { + /MK + << + \int_compare:nNnF {\Fld@rotation} = {0} + { + /R~\Fld@rotation + } + \tl_if_exist:NT \Fld@bordercolor + { + /BC[\Fld@bordercolor] + } + \tl_if_exist:NT \Fld@bcolor + { + /BG[\Fld@bcolor] + } + >> + } + /DA + ( + /Helv~\strip@pt\Fld@charsize\c_space_tl Tf + \tl_if_empty:NF {\c_space_tl\Fld@color} + ) + /DV(\Hy@escapestring{\Fld@default}) + /V(\Hy@escapestring{\Fld@value}) + ~\Fld@additionalactions + \int_compare:nNnT { \Fld@maxlen}>{0} + { + /MaxLen~\Fld@maxlen + } + } +\ExplSyntaxOff + +\def\PDFForm@Submit{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /BS<>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + >>% + \fi + /A<<% + /S/SubmitForm% + /F<<% + /FS/URL% + /F(\Hy@escapestring{\Form@action})% + >>% + \Fld@submitflags + >>% + \Fld@additionalactions +} +\ExplSyntaxOn + \def\PDFForm@Reset{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /DA(/Helv~\strip@pt\Fld@charsize\space Tf~0~0~1~rg)% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R~\Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + >>% + \fi + /BS<>% + /A<>% + \Fld@additionalactions + }% + + %these patterns are used in hyperref checks. +\str_case:VnF \c_sys_backend_str + { + { pdfmode } + { + \def\HyPat@ObjRef + { + [0-9]*[1-9][0-9]*~0~R + } + } + { dvipdfmx } + { + \def\HyPat@ObjRef + { + @[^~]+ + } + } + { xdvipdfmx } + { + \def\HyPat@ObjRef + { + @[^~]+ + } + } + } + { %also set in hyperref sty, so probably not needed. + \def\HyPat@ObjRef/{.+} + } + +\ExplSyntaxOff +%% \RequirePackage{rerunfilecheck}[2009/12/10] +%% removed \Hy@OutlineRerunCheck, unneeded with bookmark +%% removed \ReadBookmarks / unneeded with bookmark. +%% removed \Hy@OutlineName +%% removed \check@bm@number +%% removed \calc@bm@number + +\ifHy@implicit +\else + \expandafter\endinput +\fi +\newlength\Hy@SectionHShift +\def\Hy@SectionAnchorHref#1{% + \ifx\protect\@typeset@protect + \Hy__hypSectionAnchor{#1}% + \fi +} +\DeclareRobustCommand*{\Hy__hypSectionAnchor}[1]{% + \leavevmode + \hbox to 0pt{% + \kern-\Hy@SectionHShift + \Hy@raisedlink{% + \hyper@anchorstart{#1}\hyper@anchorend + }% + \hss + }% +} +\@ifundefined{hyper@nopatch@sectioning} +{ +\let\H@old@ssect\@ssect +\def\@ssect#1#2#3#4#5{% + \Hy@MakeCurrentHrefAuto{section*}% + \setlength{\Hy@SectionHShift}{#1}% + \begingroup + \toks@{\H@old@ssect{#1}{#2}{#3}{#4}}% + \toks\tw@\expandafter{% + \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}% + #5% + }% + \edef\x{\endgroup + \the\toks@{\the\toks\tw@}% + }\x +} +\let\H@old@schapter\@schapter +\def\@schapter#1{% + \begingroup + \let\@mkboth\@gobbletwo + \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \endgroup + \H@old@schapter{#1}% +} +\ltx@IfUndefined{@chapter}{}{% + \let\Hy@org@chapter\@chapter + \def\@chapter{% + \def\Hy@next{% + \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \ifnum\c@secnumdepth>\m@ne + \ltx@IfUndefined{if@mainmatter}% + \iftrue{\csname if@mainmatter\endcsname}% + \let\Hy@next\relax + \fi + \fi + \Hy@next + \Hy@org@chapter + }% +} +\let\H@old@part\@part +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname chapter\endcsname\relax + \let\Hy@secnum@part\z@ +\else + \let\Hy@secnum@part\m@ne +\fi +\def\@part{% + \ifnum\Hy@secnum@part>\c@secnumdepth + \phantomsection + \fi + \H@old@part +} +\let\H@old@spart\@spart +\def\@spart#1{% + \Hy@MakeCurrentHrefAuto{part*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \H@old@spart{#1}% +} +\let\H@old@sect\@sect +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \Hy@MakeCurrentHrefAuto{section*}% + \setlength{\Hy@SectionHShift}{#3}% + \begingroup + \toks@{\H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]}% + \toks\tw@\expandafter{% + \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}% + #8% + }% + \edef\x{\endgroup + \the\toks@{\the\toks\tw@}% + }\x + }{% + \H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}% + }% +} +}{} +\expandafter\def\csname Parent-4\endcsname{} +\expandafter\def\csname Parent-3\endcsname{} +\expandafter\def\csname Parent-2\endcsname{} +\expandafter\def\csname Parent-1\endcsname{} +\expandafter\def\csname Parent0\endcsname{} +\expandafter\def\csname Parent1\endcsname{} +\expandafter\def\csname Parent2\endcsname{} +\expandafter\def\csname Parent3\endcsname{} +\expandafter\def\csname Parent4\endcsname{} +%% +%% End of file 'hgeneric-testphase.def'. +%% +%% +%% End of file `hgeneric-testphase.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/hyperref-colorschemes.def b/texmf/tex/latex/pdfmanagement-testphase/hyperref-colorschemes.def new file mode 100644 index 000000000..29a3982e6 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/hyperref-colorschemes.def @@ -0,0 +1,145 @@ +%% +%% This is file `hyperref-colorschemes.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hyperref-generic.dtx (with options: `colorscheme') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: hyperref-generic.dtx + + +\prop_const_from_keyval:cn { c__hyp_colorscheme_primary-colors_prop } + { + linkcolor = [rgb]{1,0,0}, %red + filecolor = [rgb]{0,1,1}, %cyan + urlcolor = [rgb]{1,0,1}, %magenta + menucolor = [rgb]{1, 0, 0}, %red + runcolor = [rgb]{0,1,1}, %cyan + %------------- + linkbordercolor = [rgb]{1, 0 ,0 }, + filebordercolor = [rgb]{0, .5, .5}, + urlbordercolor = [rgb]{0, 1, 1}, + menubordercolor = [rgb]{1, 0, 0}, + runbordercolor = [rgb]{0, .7, .7} + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_daleif_prop + { + linkcolor = [rgb]{0,0.2,0.6}, + filecolor = [rgb]{0.8,0,0.8}, + urlcolor = [rgb]{0.8,0,0.8}, + menucolor = [rgb]{0,0.2,0.6}, + runcolor = [rgb]{0.8,0,0.8}, + %------------- %-------- + linkbordercolor = [rgb]{0,0.2,0.6}, + filebordercolor = [rgb]{0.8,0,0.8}, + urlbordercolor = [rgb]{0.8,0,0.8}, + menubordercolor = [rgb]{0,0.2,0.6}, + runbordercolor = [rgb]{0.8,0,0.8} + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_julian_prop + { %two colors: intern/extern + linkcolor = [rgb]{0.79216, 0, 0.12549}, + filecolor = [rgb]{0.01961, 0.44314, 0.6902}, + urlcolor = [rgb]{0.01961, 0.44314, 0.6902}, + menucolor = [rgb]{0.79216, 0, 0.12549 }, + runcolor = [rgb]{0.01961, 0.44314, 0.6902 }, + %------------- %-------- + linkbordercolor = [rgb]{0.79216, 0, 0.12549}, + filebordercolor = [rgb]{0.01961, 0.44314, 0.6902}, + urlbordercolor = [rgb]{0.01961, 0.44314, 0.6902}, + menubordercolor = [rgb]{0.79216, 0, 0.12549 }, + runbordercolor = [rgb]{0.01961, 0.44314, 0.6902 } + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_tivv_prop + { %all darkgray + linkcolor = [rgb]{0.4 ,0.4 ,0.4 }, + filecolor = [rgb]{0.4 ,0.4 ,0.4 }, + urlcolor = [rgb]{0.4 ,0.4 ,0.4 }, + menucolor = [rgb]{0.4 ,0.4 ,0.4 }, + runcolor = [rgb]{0.4 ,0.4 ,0.4 }, + %------------- %-------- + linkbordercolor = [rgb]{0.4 ,0.4 ,0.4 }, + filebordercolor = [rgb]{0.4 ,0.4 ,0.4 }, + urlbordercolor = [rgb]{0.4 ,0.4 ,0.4 }, + menubordercolor = [rgb]{0.4 ,0.4 ,0.4 }, + runbordercolor = [rgb]{0.4 ,0.4 ,0.4 } + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_szabolcsA_prop + { %dvipsnam.def + linkcolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + filecolor = [rgb]{1, 0, 0}, %Red + urlcolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + menucolor = [rgb]{1, 0, 0}, %Red + runcolor = [rgb]{1, 0, 0}, %Red + %------------- %------------------ + linkbordercolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + filebordercolor = [rgb]{1, 0, 0}, %Red + urlbordercolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + menubordercolor = [rgb]{1, 0, 0}, %Red + runbordercolor = [rgb]{1, 0, 0} %Red + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_szabolcsB_prop + { %dvipsnam.def + linkcolor = [rgb]{0.72, 0, 0}, %BrickRed + filecolor = [rgb]{0, 1, 0}, %Green + urlcolor = [rgb]{0.64, 0.08, 0.98}, %Mulberry + menucolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + runcolor = [rgb]{0.64, 0.08, 0.98}, %Mulberry + %------------- %------------------ + linkbordercolor = [rgb]{0.72, 0, 0}, %BrickRed + filebordercolor = [rgb]{0, 1, 0}, %Green + urlbordercolor = [rgb]{0.64, 0.08, 0.98}, %Mulberry + menubordercolor = [rgb]{0.06, 0.46, 1}, %NavyBlue + runbordercolor = [rgb]{0.64, 0.08, 0.98} %Mulberry + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_phelype_prop + { + linkcolor = [rgb]{0.50196, 0, 0.02353}, + filecolor = [rgb]{0.07451, 0.09412, 0.46667}, + urlcolor = [rgb]{0.54118, 0, 0.52941}, + menucolor = [rgb]{0.44706, 0.45882, 0}, + runcolor = [rgb]{0.07451, 0.46667, 0.46275}, + %------------- %------------- + linkbordercolor = [rgb]{0.701176, 0.4, 0.414118}, + filebordercolor = [rgb]{0.444706, 0.456472, 0.680002}, + urlbordercolor = [rgb]{0.724708, 0.4, 0.717646}, + menubordercolor = [rgb]{0.668236, 0.675292, 0.4}, + runbordercolor = [rgb]{0.444706, 0.680002, 0.67765} + } + +\prop_const_from_keyval:Nn \c__hyp_colorscheme_henryford_prop + { + linkcolor = [rgb]{0,0,0}, + filecolor = [rgb]{0,0,0}, + urlcolor = [rgb]{0,0,0}, + menucolor = [rgb]{0,0,0}, + runcolor = [rgb]{0,0,0}, + %------------- %-------- + linkbordercolor = [rgb]{0,0,0}, + filebordercolor = [rgb]{0,0,0}, + urlbordercolor = [rgb]{0,0,0}, + menubordercolor = [rgb]{0,0,0}, + runbordercolor = [rgb]{0,0,0} + } +%% +%% +%% End of file `hyperref-colorschemes.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty new file mode 100644 index 000000000..5c77d8ce6 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty @@ -0,0 +1,184 @@ +%% This is file `hyperxmp-patches-tmp-ltx.sty" +% Copyright (C) 2019-2021 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% This file is part of the "pdfmanagement bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/pdfresources +% +% for those people who are interested. +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-08-24}{0.95r} + {Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF} + +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \pdfmanagement_if_active:T + { + \renewcommand\hyxmp@embed@packet{\hyxmp@embed@packet@generic} + } + } + +% +\newcommand*{\hyxmp@embed@packet@generic} + {% + \typeout{} + \typeout{!!~new-hyperxmp--generic~packet~command~used!!}{} + \typeout{} + \hyxmp@construct@packet + %or some other command to write a object: + \exp_args:Nnx + \pdf_object_unnamed_write:nn{stream}{{/Type~/Metadata~/Subtype~/XML}{\hyxmp@xml}}% + % reference in the Catalog: + \pdfmanagement_add:nnx {Catalog} {Metadata}{\pdf_object_ref_last:} + } + +% A standard should be retrieved from the document settings. +\cs_new:Npn \__hypxmp_get_Astandard: + { + \exp_args:Ne \tl_if_eq:nnT{\pdfmeta_standard_item:n{type}}{A} + { + \Hy@pdfatrue + \tl_set:Nx \@pdfapart{\pdfmeta_standard_item:n{level}} + \tl_set:Nx \@pdfaconformance{\pdfmeta_standard_item:n{conformance}} + } + } +% A-4 will need also the year, so we have to extend the schema +\renewcommand*{\hyxmp@pdfa@id@schema}{% + \ifHy@pdfa + \exp_args:Nnx\hyxmp@add@simple{pdfaid:part}{\pdfmeta_standard_item:n{level}} + \exp_args:Nnx\hyxmp@add@simple{pdfaid:conformance}{\pdfmeta_standard_item:n{conformance}} + \int_compare:nNnT{\pdfmeta_standard_item:n{level}}>{3} + { \exp_args:Nnx\hyxmp@add@simple{pdfaid:rev}{\pdfmeta_standard_item:n{year}} } + \fi +} + +\cs_new_protected:Npn \__hyxmp_get_metadata: + { + \__hypxmp_get_Astandard: + \clist_map_inline:nn + { + % hyperxmp keys: + ,pdfcopyright + ,pdftype + ,pdflicenseurl + ,pdfauthortitle + ,pdfcaptionwriter + ,pdfmetalang + %,pdfapart %document + %,pdfaconformance %document + ,pdfuapart %probably document too but later ... + ,pdfxstandard + ,pdfsource + ,pdfdocumentid + ,pdfinstanceid + ,pdfversionid + ,pdfrendition + ,pdfpublication + ,pdfpubtype + ,pdfbytes + ,pdfnumpages + ,pdfissn + ,pdfeissn + ,pdfisbn + ,pdfbookedition + ,pdfpublisher + ,pdfvolumenum + ,pdfissuenum + ,pdfpagerange + ,pdfdoi + ,pdfurl + ,pdfidentifier + ,pdfsubtitle + ,pdfpubstatus + ,pdfcontactaddress + ,pdfcontactcity + ,pdfcontactregion + ,pdfcontactpostcode + ,pdfcontactcountry + ,pdfcontactphone + ,pdfcontactemail + ,pdfcontacturl + ,pdfdate + %hyperref, needs probably special handling + % ,pdftitle %see below + % ,pdfsubject %see below + ,pdfkeywords + ,pdfproducer + } + { + \tl_if_exist:cF{@##1}{\tl_new:c{@##1}} + \tl_set:cx {@##1}{\GetDocumentProperties{hyperref/##1}} + } + + % pdfauthor, this is only a work around for simple author + % TODO needs improvement + \exp_args:NNe + \pdfstringdef\@pdfauthor{\GetDocumentProperties{hyperref/pdfauthor}} + \cs_set_eq:NN\hyxmp@pdfauthor\@pdfauthor + \exp_args:NNe + \pdfstringdef\@pdfsubject{\GetDocumentProperties{hyperref/pdfsubject}} + \cs_set_eq:NN\hyxmp@pdfsubject\@pdfsubject + \exp_args:NNe + \pdfstringdef\@pdftitle{\GetDocumentProperties{hyperref/pdftitle}} + \cs_set_eq:NN\hyxmp@pdftitle\@pdftitle + \exp_args:NNe + \pdfstringdef\@pdfcopyright{\GetDocumentProperties{hyperref/pdfcopyright}} + \cs_set_eq:NN\hyxmp@pdfcopyright\@pdfcopyright + % pdflang, + \tl_if_exist:cF{@pdflang}{\tl_new:c{@pdflang}} + \tl_set:cx {@pdflang}{\GetDocumentProperties{document/lang}} + } + +% we need to provide a few commands so that hyperxmp stops to overwrite them +% in \AtEndPreamble +% we need also add it to the document properties to avoid stray commas +% with empty author. +\AddToHook{begindocument/before}[pdfmanagement/firstaid/hyperxmp]{% + \def\@pdfauthor{Author}\def\@pdftitle {Title}% + \tl_if_blank:eT{\GetDocumentProperties{hyperref/pdfauthor}} + {\AddToDocumentProperties[hyperref]{pdfauthor}{Author}} + \tl_if_blank:eT{\GetDocumentProperties{hyperref/pdftitle}} + {\AddToDocumentProperties[hyperref]{pdfauthor}{Title}} + } + +% hyperxmp recalculates pdfproduce at begin document and we should copy that definition +\AddToHook{begindocument/end} + {\edef\next{\noexpand\AddToDocumentProperties[hyperref]{pdfproducer}{\@pdfproducer}}\next} + +\DeclareHookRule{begindocument/before}{pdfmanagement/firstaid/hyperxmp}{before}{hyperxmp} + +% hyperxmp puts the code into enddocument, but for xetex this is too late. +% so we move that to shipout/lastpage and add our command before. +% the luatex code must stay in enddocument as hyperxmp tries to detect the pdf size +% there. +\sys_if_output_dvi:TF + { + \RemoveFromHook{enddocument}[hyperxmp] + \AddToHook{shipout/lastpage}[pdfmanagement-firstaid] + { + \__hyxmp_get_metadata: + \hyxmp@auto@assign@data + \hyxmp@check@standards + \hyxmp@warn@if@no@metadata + \hyxmp@embed@packet + } + } + { + \AddToHook{enddocument}[pdfmanagement-firstaid]{\__hyxmp_get_metadata:} + \DeclareHookRule{enddocument}{pdfmanagement-firstaid}{before}{hyperxmp} + } + + +\endinput diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def new file mode 100644 index 000000000..ae7260647 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def @@ -0,0 +1,478 @@ +%% +%% This is file `l3backend-testphase-dvipdfmx.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,dvipdfmx') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-dvipdfmx.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} + \__kernel_backend_literal:x { dvipdfmx:config~C~ 0x0010 } +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + / \str_convert_pdfname:e { \text_expand:n { #1 } } + } +\tl_gput_right:Nn \@kernel@after@shipout@lastpage + { + \g__kernel_pdfmanagement_end_run_code_tl + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1 + { + \__pdf_backend:n{put~@pages~<<#1>>} + } + %the primitive +\cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + { + \tex_special:D{pdf:~put~@thispage~<<#1>>} + } + % the command to store default values. + % Uses a prop with pdflatex + dvi, + % sets a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 + { + \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } + } + % the command to remove a default value. + % Uses a prop with pdflatex + dvi, + % changes a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } + } + % the command used in the document. + % direct call of the primitive special with dvips/dvipdfmx + % \latelua: fill a page related table with lualatex, merge it with the page + % table and push it directly + % write to aux and store in prop with pdflatex +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + { + \__pdf_backend_Page_primitive:n { /#1~#2 } + } + %the code to push the values, used in shipout + %merges the two props and then fills the register in pdflatex + %merges the two tables (the one is probably still empty) + % and then fills (in lua) in luatex + %issues the values stored in the global prop with dvi +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + { + \exp_args:Nx \__pdf_backend_Page_primitive:n + { \pdfdict_use:n { g__pdf_Core/Page} } + } +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\hook_gset_rule:nnnn{shipout/firstpage}{l3backend-dvipdfmx}{after}{pdf} +\clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \pdf_object_new:nn { __pdf/Page/Resources/#1 } { dict } + \hook_gput_code:nnn{shipout/firstpage}{pdf}{\pdf_object_write:nn { __pdf/Page/Resources/#1 } {}} + } +\cs_new_protected:Npn \__pdf_backend_PageResources:n #1 + { + \__pdf_backend:n {put~@resources~<<#1>>} + } +\cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { + % this is not used for output, but there is a test if the resource is empty + \exp_args:Nnx + \prop_gput:cnn { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/#1} } + { \str_convert_pdfname:n {#2} }{ #3 } + %objects are not filled with \pdf_object_write as this is not additive! + \__pdf_backend:x + { + put~\__pdf_backend_object_ref:n {__pdf/Page/Resources/#1}<> + } + } + +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {} +\bool_new:N \l__pdf_backend_xform_bool + + \cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + { + \int_gincr:N \g__pdf_backend_name_int + \__kernel_backend_literal:x + { + pdf:code~/#1/l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC + } + \__kernel_backend_literal:x + { + pdf:put~@resources~ + << + /Properties~ + << + /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl + \__pdf_backend_object_ref:n { #2 } + >> + >> + } + } + \cs_set_protected:Npn \__pdf_backend_bdcobject:n #1 % #1 eg. Span + { + \int_gincr:N \g__pdf_backend_name_int + \__kernel_backend_literal:x + { + pdf:code~/#1/l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC + } + \__kernel_backend_literal:x + { + pdf:put~@resources~ + << + /Properties~ + << + /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl + \__pdf_backend_object_last: + >> + >> + } + } +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + { + \__kernel_backend_literal:n {pdf:code~/#1~BMC} %pdfbase + } + +\cs_set_protected:Npn \__pdf_backend_bdc_contobj:nn #1 #2 + { + \pdf_object_unnamed_write:nn { dict }{ #2 } + \__pdf_backend_bdcobject:n { #1 } + } + +\cs_set_protected:Npn \__pdf_backend_bdc_contstream:nn #1 #2 + { + \__kernel_backend_literal:n {pdf:code~ /#1~<<#2>>~BDC } + } + +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 + { + \bool_if:NTF \g__pdfmanagement_active_bool + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn} + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn} + \__pdf_backend_bdc:nn {#1}{#2} + } +\cs_set_protected:Npn \__pdf_backend_emc: + { + \__kernel_backend_literal:n {pdf:code~EMC} %pdfbase + } + % properties are handled automatically, but the other resources should be added + % at shipout +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 + { + \clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} } + { + \__kernel_backend_literal:x + { + pdf:put~@resources~ + <> + } + } + } + } +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content + { + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \__pdf_backend:x {put~@names~<>} + } + +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} + \cs_set_protected:Npn \__pdf_backend_link_off: + { + \__pdf_backend:n { nolink } + } + \cs_set_protected:Npn \__pdf_backend_link_on: + { + \__pdf_backend:n { link } + } + % it needs a bit testing if it really works to set the box to 0 before the special ... + % does it disturb viewing the xobject? + % what happens with the resources (bdc)? (should work as they are specials too) + % xetex requires that the special is in horizontal mode. This means it affects + % typesetting. But we can no delay the whole form code to shipout + % as the object reference and the size is often wanted on the current page. + % so we need to allocate a box - but probably they won't be thousands xform + % in a document so it shouldn't matter. + \cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 + % #1 name + % #2 attributes + % #3 resources + % #4 content, not necessarily a box! + { + \int_gincr:N \g__pdf_backend_object_int + \int_const:cn + { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \g__pdf_backend_object_int } + \box_new:c { g__pdf_backend_xform_#1_box } + \hbox_gset:cn { g__pdf_backend_xform_#1_box } + { + \bool_set_true:N \l__pdf_backend_xform_bool + #4 + } + \tl_const:cx + { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_wd:c { g__pdf_backend_xform_#1_box } } + \tl_const:cx + { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_ht:c { g__pdf_backend_xform_#1_box } } + \tl_const:cx + { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_dp:c { g__pdf_backend_xform_#1_box } } + \box_set_dp:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \box_set_ht:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \box_set_wd:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \hook_gput_next_code:nn {shipout/background} + { + \mode_leave_vertical: %needed, the xform disappears without it. + \__pdf_backend:x + { + bxobj ~ \__pdf_backend_xform_ref:n { #1 } + \c_space_tl width ~ \pdfxform_wd:n { #1 } + \c_space_tl height ~ \pdfxform_ht:n { #1 } + \c_space_tl depth ~ \pdfxform_dp:n { #1 } + } + \box_use_drop:c { g__pdf_backend_xform_#1_box } + \__pdf_backend:x {put ~ @resources ~<<#3>> } + \__pdf_backend:x + { + put~ @resources ~ + << + /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /ColorSpace~ + \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace } + >> + } + \exp_args:Nx + \__pdf_backend:x {exobj ~<<#2>>} + } + } + + \cs_new:Npn \__pdf_backend_xform_ref:n #1 + { + @pdf.xform \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + } + + \cs_new_protected:Npn \__pdf_backend_xform_use:n #1 + { + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \__pdf_backend:x + { + uxobj~ \__pdf_backend_xform_ref:n { #1 } + } + } + \box_set_wd:Nn \l__pdf_backend_tmpa_box { \pdfxform_wd:n { #1 } } + \box_set_ht:Nn \l__pdf_backend_tmpa_box { \pdfxform_ht:n { #1 } } + \box_set_dp:Nn \l__pdf_backend_tmpa_box { \pdfxform_dp:n { #1 } } + \box_use_drop:N \l__pdf_backend_tmpa_box + } +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw +\cs_set_protected:Npn \__pdf_backend_structure_destination:nn #1#2 + { + \__pdf_backend:x + { + dest ~ ( \exp_not:n {#1} ) + [ + @thispage + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + { fitr } { /Fit } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \__pdf_backend:x + { + obj ~ @pdf.SDest.\exp_not:n{#1} + [ + \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl } + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + { fitr } { /Fit } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + } + } +\cs_new_protected:Npn \__pdf_backend_structure_destination_aux:nnnn #1#2#3#4 + { + \vbox_to_zero:n + { + \__kernel_kern:n {#4} + \hbox:n + { + \__pdf_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos } + \__pdf_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos } + } + \tex_vss:D + } + \__kernel_kern:n {#1} + \vbox_to_zero:n + { + \__kernel_kern:n { -#3 } + \hbox:n + { + \__pdf_backend:n + { + dest ~ (#2) + [ + @thispage + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \__pdf_backend:x + { + obj ~ @pdf.SDest.\exp_not:n{#2} + [ + \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl } + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + } + } + \tex_vss:D + } + \__kernel_kern:n { -#1 } + } +\cs_set_protected:Npn \__pdf_backend_structure_destination:nnnn #1#2#3#4 + { + \exp_args:Ne \__pdf_backend_structure_destination_aux:nnnn + { \dim_eval:n {#2} } {#1} {#3} {#4} + } +\cs_set_protected:Npn \__pdf_backend_link_begin_structure_goto:nnw #1#2 + { + \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) /SD~@pdf.SDest.#2 >> } + } +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \pdfmanagement_add:nnn{Info}{Producer}{(dvipdfmx)} + \__kernel_backend_literal:e + {pdf:trailerid [~ + <00112233445566778899aabbccddeeff>~ + <00112233445566778899aabbccddeeff>~ + ]} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-dvipdfmx.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def new file mode 100644 index 000000000..86be59a5a --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def @@ -0,0 +1,308 @@ +%% +%% This is file `l3backend-testphase-dvips.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,dvips') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-dvips.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: dvips} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + ~ ( \text_expand:n { #1 } ) ~ cvn + } +\tl_gput_right:Nn\@kernel@after@shipout@lastpage + { + \g__kernel_pdfmanagement_end_run_code_tl + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\cs_new_protected:Npx \__pdf_backend_Pages_primitive:n #1 + { + \tex_special:D{ps:~[#1~/PAGES~pdfmark} %] + } +\cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + { + \tex_special:D{ps:~[{ThisPage}<<#1>>~/PUT~pdfmark} %] + } + % the command to store default values. + % Uses a prop with pdflatex + dvi, + % sets a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 + { + \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } + } + % the command to remove a default value. + % Uses a prop with pdflatex + dvi, + % changes a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } + } + % the command used in the document. + % direct call of the primitive special with dvips/dvipdfmx + % \latelua: fill a page related table with lualatex, merge it with the page + % table and push it directly + % write to aux and store in prop with pdflatex +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + { + \__pdf_backend_Page_primitive:n { /#1~#2 } + } + %the code to push the values, used in shipout + %merges the two props and then fills the register in pdflatex + %merges the two tables (the one is probably still empty) + %and then fills (in lua) in luatex + %issues the values stored in the global prop with dvi +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + { + \exp_args:Nx \__pdf_backend_Page_primitive:n + { \pdfdict_use:n { g__pdf_Core/Page} } + } +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\cs_new_protected:Npn \__pdf_backend_PageResources:n #1 {} +\cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { %only for the show command TEST!! + \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 } + } +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {} +\bool_new:N \l__pdf_backend_xform_bool +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content + { + \__pdf_backend_pdfmark:x{/#1~<<#2>>~/BDC} + } +\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + { + \__pdf_backend_pdfmark:x{/#1~\__pdf_backend_object_ref:n{#2}~/BDC} + } +\cs_set_protected:Npn \__pdf_backend_bdcobject:n #1 % #1 eg. Span, + { + \__pdf_backend_pdfmark:x{/#1~\__pdf_backend_object_last:~/BDC} + } +\cs_set_protected:Npn \__pdf_backend_emc: + { + \__pdf_backend_pdfmark:n{/EMC} % + } +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + { + \__pdf_backend_pdfmark:n{/#1~/BMC} % + } +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {} + + + +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 + { + \__pdf_backend_pdfmark:x + { + /Name~#1~ + /FS~#2~ + /EMBED + } + } +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} +\tl_new:N \l__pdf_backend_xform_tmpwd_tl +\tl_new:N \l__pdf_backend_xform_tmpdp_tl +\tl_new:N \l__pdf_backend_xform_tmpht_tl +\cs_new_protected:Npn\__pdf_backend_xform_new:nnnn #1 #2 #3 #4 % #1 name, #2 attribute, #4 content + { + \int_gincr:N \g__pdf_backend_object_int + \int_const:cn + { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \g__pdf_backend_object_int } + + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \bool_set_true:N \l__pdf_backend_xform_bool + \prop_gclear:c {\__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties }} + #4 + } + %store the dimensions + \tl_const:cx + { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_wd:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_ht:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_dp:N \l__pdf_backend_tmpa_box } + %store content dimensions in DPI units (Dots) (code from issue 25) + \tl_set:Nx\l__pdf_backend_xform_tmpwd_tl + { + \dim_to_decimal_in_sp:n{ \box_wd:N \l__pdf_backend_tmpa_box }~ + 65536~div~72.27~div~DVImag~mul~Resolution~mul~ + } + \tl_set:Nx\l__pdf_backend_xform_tmpht_tl + { + \dim_to_decimal_in_sp:n{ \box_ht:N \l__pdf_backend_tmpa_box }~ + 65536~div~72.27~div~DVImag~mul~VResolution~mul~ + } + \tl_set:Nx\l__pdf_backend_xform_tmpdp_tl + { + \dim_to_decimal_in_sp:n{ \box_dp:N \l__pdf_backend_tmpa_box }~ + 65536~div~72.27~div~DVImag~mul~VResolution~mul~ + } + % mirror the box + %\box_scale:Nnn \l__pdf_backend_tmpa_box {1} {-1} + \hbox_set:Nn\l__pdf_backend_tmpb_box + { + \__kernel_backend_postscript:x + { + gsave~currentpoint~ + initclip~ % restore default clipping path (page device/whole page) + clippath~pathbbox~newpath~pop~pop~ + \tl_use:N\l__pdf_backend_xform_tmpdp_tl~add~translate~ + mark~ + /_objdef~{ pdf.obj \int_use:N\g__pdf_backend_object_int }\c_space_tl~ + /BBox[ + 0~ + \tl_use:N\l__pdf_backend_xform_tmpht_tl~ + \tl_use:N\l__pdf_backend_xform_tmpwd_tl~ + \tl_use:N\l__pdf_backend_xform_tmpdp_tl~ + neg + ] + \str_if_eq:eeF{#1}{} + { + product~(Distiller)~search~{pop~pop~pop~#2}{pop}ifelse~ + } + /BP~pdfmark~1~-1~scale~neg~exch~neg~exch~translate + } + \box_use_drop:N\l__pdf_backend_tmpa_box + \__kernel_backend_postscript:n + { + mark ~ /EP~pdfmark ~ grestore + } + \str_if_eq:eeF{#1}{} + { + \__kernel_backend_postscript:x + { + product~(Ghostscript)~search~ + { + pop~pop~pop~ + mark~ + { pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int} } + ~<<#2>>~/PUT~pdfmark + }{pop}ifelse + } + } + } + \box_set_dp:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } + \box_set_ht:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } + \box_set_wd:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } + \hook_gput_code:nnn {begindocument/end}{pdfxform} + { + \mode_leave_vertical: + \box_use:N\l__pdf_backend_tmpb_box + } + } + +\cs_new_protected:Npn \__pdf_backend_xform_use:n #1 + { + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \__kernel_backend_postscript:x + { + gsave~currentpoint~translate~1~-1~scale~ + mark~{ pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int }}~ + /SP~pdfmark ~ grestore + } + } + \box_set_wd:Nn \l__pdf_backend_tmpa_box { \pdfxform_wd:n { #1 } } + \box_set_ht:Nn \l__pdf_backend_tmpa_box { \pdfxform_ht:n { #1 } } + \box_set_dp:Nn \l__pdf_backend_tmpa_box { \pdfxform_dp:n { #1 } } + \box_use_drop:N \l__pdf_backend_tmpa_box + } +\cs_new:Npn \__pdf_backend_xform_ref:n #1 + { + { pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int} } + } + +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \__kernel_backend_literal:e{!~<>~setpagedevice} + \__kernel_backend_literal:e{!~<>~setpagedevice} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-dvips.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def new file mode 100644 index 000000000..12e95a1c0 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def @@ -0,0 +1,152 @@ +%% +%% This is file `l3backend-testphase-dvisvgm.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,dvisvgm') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-dvisvgm.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + / \str_convert_pdfname:e { \text_expand:n { #1 } } + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1 + {} +\cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + {} + % Uses a prop with pdflatex + dvi, +\cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 + { + \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } + } + % the command to remove a default value. + % Uses a prop with pdflatex + dvi, +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } + } + % the command used in the document. +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + {} + %the code to push the values, used in shipout +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + {} +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\cs_new_protected:Npn \__pdf_backend_PageResources:n #1 {} +\cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { %only for the show command TEST!! + \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 } + } +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {} +\bool_new:N \l__pdf_backend_xform_bool +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content + {} +\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + {} +\cs_set_protected:Npn \__pdf_backend_bdcobject:n #1 % #1 eg. Span, + {} +\cs_set_protected:Npn \__pdf_backend_emc: + {} +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + {} +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {} + + + +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 + {} + +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} +\cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 {} +\cs_new_protected:Npn \__pdf_backend_xform_use:n #1 {} +\cs_new:Npn \__pdf_backend_xform_ref:n {} +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-dvisvgm.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def new file mode 100644 index 000000000..f750dbff8 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def @@ -0,0 +1,460 @@ +%% +%% This is file `l3backend-testphase-luatex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,luatex') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-luatex.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int + \directlua { require("l3backend-testphase.lua") } +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + / \str_convert_pdfname:e { \text_expand:n { #1 } } + } +\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage + { + \g__kernel_pdfmanagement_end_run_code_tl + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\sys_if_engine_luatex:T + { + \cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1 + { + \tex_directlua:D + { + pdf.setpagesattributes( \__pdf_backend_luastring:n { #1 } ) + } + } + } +\cs_new:Npn \__pdf_backend_luastring:n #1 + { + "\tex_luaescapestring:D { \tex_unexpanded:D { #1 } }" + } + %not used, only there for consistency +\cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + { + \tex_latelua:D + { + pdf.setpageattributes(\__pdf_backend_luastring:n { #1 }) + } + } + % the command to store default values. + % Uses a prop with pdflatex + dvi, + % sets a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 + { + \tex_directlua:D + { + ltx.__pdf.backend_Page_gput + ( + \__pdf_backend_luastring:n { #1 }, + \__pdf_backend_luastring:n { #2 } + ) + } + } + % the command to remove a default value. + % Uses a prop with pdflatex + dvi, + % changes a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \tex_directlua:D + { + ltx.__pdf.backend_Page_gremove (\__pdf_backend_luastring:n { #1 }) + } + } + % the command used in the document. + % direct call of the primitive special with dvips/dvipdfmx + % \latelua: fill a page related table with lualatex, merge it with the page + % table and push it directly + % write to aux and store in prop with pdflatex +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + { + \tex_latelua:D + { + ltx.__pdf.backend_ThisPage_gput + ( + tex.count["g_shipout_readonly_int"], + \__pdf_backend_luastring:n { #1 }, + \__pdf_backend_luastring:n { #2 } + ) + ltx.__pdf.backend_ThisPage_gpush (tex.count["g_shipout_readonly_int"]) + } + } + %the code to push the values, used in shipout + %merges the two props and then fills the register in pdflatex + %merges the two tables (the one is probably still empty) and then fills (in lua) in luatex + %issues the values stored in the global prop with dvi +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + { + \tex_latelua:D + { + ltx.__pdf.backend_ThisPage_gpush (tex.count["g_shipout_readonly_int"]) + } + } + +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \pdf_object_new:nn {__pdf/Page/Resources/#1} {dict} + \cs_if_exist:NT \tex_directlua:D + { + \tex_directlua:D + { + ltx.__pdf.object["__pdf/Page/Resources/#1"] + = + "\__pdf_backend_object_ref:n{__pdf/Page/Resources/#1}" + } + } + } +\cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { + \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 } + \tex_latelua:D{ltx.__pdf.Page.Resources.#1=true} + \tex_latelua:D + { + ltx.pdf.Page_Resources_gpush(tex.count["g_shipout_readonly_int"]) + } + } +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: + { + \clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} } + { + \pdf_object_write:nx + { __pdf/Page/Resources/##1 } + { \pdfdict_use:n { g__pdf_Core/Page/Resources/##1} } + } + } + } +\bool_new:N \l__pdf_backend_xform_bool + +\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + { + \int_gincr:N \g__pdf_backend_name_int + \exp_args:Nx\__kernel_backend_literal_page:n + { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC } + \bool_if:NTF \l__pdf_backend_xform_bool + { + \exp_args:Nnx\pdfdict_gput:nnn + { g__pdf_Core/Xform/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_name_int } + { \__pdf_backend_object_ref:n { #2 } } + } + { + \exp_args:Nx \tex_latelua:D + { + ltx.pdf.Page_Resources_Properties_gput + ( + tex.count["g_shipout_readonly_int"], + "l3pdf\int_use:N\g__pdf_backend_name_int", + "\__pdf_backend_object_ref:n { #2 }" + ) + } + } + } +\cs_set_protected:Npn \__pdf_backend_bdcobject:n #1% #1 eg. Span + { + \int_gincr:N \g__pdf_backend_name_int + \exp_args:Nx\__kernel_backend_literal_page:n + { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC } + \bool_if:NTF \l__pdf_backend_xform_bool + { + \exp_args:Nnx\pdfdict_gput:nnn %no handler needed + { g__pdf_Core/Xform/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_name_int } + { \__pdf_backend_object_last: } + } + { + \exp_args:Nx \tex_latelua:D + { + ltx.pdf.Page_Resources_Properties_gput + ( + tex.count["g_shipout_readonly_int"], + "l3pdf\int_use:N\g__pdf_backend_name_int", + "\__pdf_backend_object_last:" + ) + } + } + } +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + { + \__kernel_backend_literal_page:n { /#1~BMC } + } +\cs_set_protected:Npn \__pdf_backend_bdc_contobj:nn #1 #2 + { + \pdf_object_unnamed_write:nn { dict } { #2 } + \__pdf_backend_bdcobject:n { #1 } + } +\cs_set_protected:Npn \__pdf_backend_bdc_contstream:nn #1 #2 + { + \__kernel_backend_literal_page:n { /#1~<<#2>>~BDC } + } +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 + { + \bool_if:NTF \g__pdfmanagement_active_bool + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn} + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn} + \__pdf_backend_bdc:nn {#1}{#2} + } +\cs_set_protected:Npn \__pdf_backend_emc: + { + \__kernel_backend_literal_page:n { EMC } + } + +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {} +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content + { + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfextension:D~names~ {/#1~\pdf_object_ref_last:} + } + +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} +\int_compare:nNnT {\tex_luatexversion:D } > {112} + { + \cs_set_protected:Npn \__pdf_backend_link_off: + { + \pdfextension linkstate 1 + } + \cs_set_protected:Npn \__pdf_backend_link_on: + { + \pdfextension linkstate 0 + } + } +\cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 + { + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \bool_set_true:N \l__pdf_backend_xform_bool + \prop_gclear:c { \__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties } } + #4 + } + \tl_const:cx + { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_wd:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_ht:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_dp:N \l__pdf_backend_tmpa_box } + %% do we need to test if #2 and #3 are empty?? + \tex_immediate:D \tex_pdfxform:D + ~ attr ~ { #2 } + %% which resources should be default? Is an argument actually needed? + ~ resources ~ + { + #3 + \int_compare:nNnT + {\prop_count:c { \__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties } }} + > + { 0 } + { + /Properties~ + << + \pdfdict_use:n { g__pdf_Core/Xform/Resources/Properties } + >> + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ExtGState } } + { + /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Pattern } } + { + /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Shading } } + { + /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ColorSpace } } + { + /ColorSpace~ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace } + } + } + \l__pdf_backend_tmpa_box + \int_const:cn + { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \tex_pdflastxform:D } + } + +\cs_new_protected:Npn \__pdf_backend_xform_use:n #1 %protected as with xelatex + { + \tex_pdfrefxform:D \int_use:c + { + c__pdf_backend_xform_ \tl_to_str:n {#1} _int + } + \scan_stop: + } + +\cs_new:Npn \__pdf_backend_xform_ref:n #1 + { \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R } + +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw + \int_compare:nNnT {\directlua{tex.print(status.list()["development_id"])} } > {7468} + { + \cs_set_protected:Npn \__pdf_backend_structure_destination:nn #1#2 + { + \tex_pdfextension:D dest + name {#1} + \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + { fitr } { fitr } + } + { xyz ~ zoom \fp_eval:n { #2 * 10 } } + \scan_stop: + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \tex_pdfextension:D dest + struct~ + \int_use:c + { c__pdf_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~ + name {#1} + \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + { fitr } { fitr } + } + { xyz ~ zoom \fp_eval:n { #2 * 10 } } + \scan_stop: + } + } + \cs_set_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 + { + \tex_pdfextension:D dest + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \tex_pdfextension:D dest + struct~ + \int_use:c + { c__pdf_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~ + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: + } + } + \cs_set_protected:Npn \__pdf_backend_link_begin_structure_goto:nnw #1#2 + { + \__pdf_backend_link_begin:nnnw {#1} { goto~struct~name~{#2}~name } {#2} + } + } +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \pdfmanagement_add:nnn{Info}{Producer}{(LuaTeX)} + \tex_pdfvariable:D suppressoptionalinfo 7\relax + \tex_pdfvariable:D trailerid + {[~ + <2350CAD05F8A7AF0AA4058486855344F>~ + <2350CAD05F8A7AF0AA4058486855344F>~ + ]} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-luatex.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def new file mode 100644 index 000000000..6d5f16690 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def @@ -0,0 +1,467 @@ +%% +%% This is file `l3backend-testphase-pdftex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,pdftex') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-pdftex.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + / \str_convert_pdfname:e { \text_expand:n { #1 } } + } +\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage + { + \g__kernel_pdfmanagement_end_run_code_tl + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1 + { + \tex_global:D \tex_pdfpagesattr:D { #1 } + } + %the primitive + \cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + { + \tex_global:D \tex_pdfpageattr:D { #1 } + } + \cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 %key,value + { + \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } + } +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } + } +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + { + %we need to know the page the resource should be added too. + \int_gincr:N\g__pdf_backend_resourceid_int + \__pdf_backend_ref_label:en { l3pdf\int_use:N\g__pdf_backend_resourceid_int }{abspage} + \tl_set:Nx \l__pdf_tmpa_tl + { + \__pdf_backend_ref_value:en {l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage} + } + \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl} + { + \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl} + } + %backend_Page has no handler. + \pdfdict_gput:nnn {g__pdf_Core/backend_Page\l__pdf_tmpa_tl}{ #1 }{ #2 } + } +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + { + \prop_gset_eq:Nc \g__pdf_tmpa_prop { \__kernel_pdfdict_name:n { g__pdf_Core/Page } } + \prop_if_exist:cT { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1 } } + { + \prop_map_inline:cn { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1 } } + { + \prop_gput:Nnn \g__pdf_tmpa_prop { ##1 }{ ##2 } + } + } + \exp_args:Nx \__pdf_backend_Page_primitive:n + { + \prop_map_function:NN \g__pdf_tmpa_prop \pdfdict_item:ne + } + } +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \pdf_object_new:nn {__pdf/Page/Resources/#1} {dict} + \cs_if_exist:NT \tex_directlua:D + { + \tex_directlua:D + { + ltx.__pdf.object["__pdf/Page/Resources/#1"] + = + "\__pdf_backend_object_ref:n{__pdf/Page/Resources/#1}" + } + } + } + \cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { + \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 } + } +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: + { + \clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} } + { + \pdf_object_write:nx + { __pdf/Page/Resources/##1 } + { \pdfdict_use:n { g__pdf_Core/Page/Resources/##1} } + } + } + } +\bool_new:N \l__pdf_backend_xform_bool + +\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + { + \int_gincr:N \g__pdf_backend_name_int + \exp_args:Nx\__kernel_backend_literal_page:n + { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC } + % code to set the property .... + \int_gincr:N\g__pdf_backend_resourceid_int + \bool_if:NTF \l__pdf_backend_xform_bool + { + \exp_args:Nnxx\pdfdict_gput:nnn %no handler needed + { g__pdf_Core/Xform/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_resourceid_int } + { \__pdf_backend_object_ref:n { #2 } } + } + { + \__pdf_backend_ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage} + \tl_set:Nx \l__pdf_tmpa_tl + { + \__pdf_backend_ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage} + } + \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + { + \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + } + \exp_args:Nnxx\pdfdict_gput:nnn + { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_resourceid_int } + { \__pdf_backend_object_ref:n{#2} } + } + } +\cs_set_protected:Npn \__pdf_backend_bdcobject:n #1% #1 eg. Span + { + \int_gincr:N \g__pdf_backend_name_int + \exp_args:Nx\__kernel_backend_literal_page:n + { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC } + % code to set the property .... + \int_gincr:N\g__pdf_backend_resourceid_int + \bool_if:NTF \l__pdf_backend_xform_bool + { + \exp_args:Nnxx\pdfdict_gput:nnn + { g__pdf_Core/Xform/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_resourceid_int } + { \__pdf_backend_object_last: } + } + { + \__pdf_backend_ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage} + \tl_set:Nx \l__pdf_tmpa_tl + { + \__pdf_backend_ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage} + } + \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + { + \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + } + \exp_args:Nnxx\pdfdict_gput:nnn + { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties } + { l3pdf\int_use:N\g__pdf_backend_resourceid_int } + { \__pdf_backend_object_last: } + %\pdfdict_show:n { g_backend_Page\l__pdf_tmpa_tl/Resources/Properties } + } + } +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + { + \__kernel_backend_literal_page:n { /#1~BMC } + } +\cs_set_protected:Npn \__pdf_backend_bdc_contobj:nn #1 #2 + { + \pdf_object_unnamed_write:nn { dict } { #2 } + \__pdf_backend_bdcobject:n { #1 } + } +\cs_set_protected:Npn \__pdf_backend_bdc_contstream:nn #1 #2 + { + \__kernel_backend_literal_page:n { /#1~<<#2>>~BDC } + } +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 + { + \bool_if:NTF \g__pdfmanagement_active_bool + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn} + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn} + \__pdf_backend_bdc:nn {#1}{#2} + } +\cs_set_protected:Npn \__pdf_backend_emc: + { + \__kernel_backend_literal_page:n { EMC } + } + +\cs_new:Npn \__pdf_backend_PageResources_gpush_aux:n #1 %#1 ExtGState etc + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/#1} } + { + \pdfdict_item:ne { #1 }{ \pdf_object_ref:n {__pdf/Page/Resources/#1}} + } + } + +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 + { + \exp_args:NNx \tex_global:D \tex_pdfpageresources:D + { + \prop_if_exist:cT + { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1/Resources/Properties } } + { + /Properties~ + << + \prop_map_function:cN + { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1/Resources/Properties } } + \pdfdict_item:ne + >> + } + %% add ExtGState etc + \clist_map_function:NN + \c__pdf_backend_PageResources_clist + \__pdf_backend_PageResources_gpush_aux:n + } + } + +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content + { + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \tex_pdfnames:D {/#1~\pdf_object_ref_last:} + } + +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} +\cs_if_exist:NT \pdfrunninglinkoff + { + \cs_set_protected:Npn \__pdf_backend_link_off: + { + \pdfrunninglinkoff + } + \cs_set_protected:Npn \__pdf_backend_link_on: + { + \pdfrunninglinkon + } + } +\cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 + { + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \bool_set_true:N \l__pdf_backend_xform_bool + \prop_gclear:c {\__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties }} + #4 + } + %store the dimensions + \tl_const:cx + { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_wd:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_ht:N \l__pdf_backend_tmpa_box } + \tl_const:cx + { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_dp:N \l__pdf_backend_tmpa_box } + %% do we need to test if #2 and #3 are empty?? + \tex_immediate:D \tex_pdfxform:D + ~ attr ~ { #2 } + %% which other resources should be default? Is an argument actually needed? + ~ resources ~ + { + #3 + \int_compare:nNnT + { \prop_count:c { \__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties } } } + > + { 0 } + { + /Properties~ + << + \pdfdict_use:n { g__pdf_Core/Xform/Resources/Properties } + >> + } + + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ExtGState } } + { + /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Pattern } } + { + /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Shading } } + { + /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading } + } + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ColorSpace } } + { + /ColorSpace~ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace } + } + } + \l__pdf_backend_tmpa_box + \int_const:cn + { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \tex_pdflastxform:D } + } + +\cs_new_protected:Npn \__pdf_backend_xform_use:n #1 + { + \tex_pdfrefxform:D + \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + \scan_stop: + } + +\cs_new:Npn \__pdf_backend_xform_ref:n #1 + { + \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R + } +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw +\bool_lazy_and:nnT + { \int_compare_p:nNn {\tex_pdftexversion:D } > {139} } + { \int_compare_p:nNn {\tex_pdftexrevision:D } > {23} } + { + \cs_set_protected:Npn \__pdf_backend_structure_destination:nn #1#2 + { + \tex_pdfdest:D + name {#1} + \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + { fitr } { fitr } + } + { xyz ~ zoom \fp_eval:n { #2 * 10 } } + \scan_stop: + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \tex_pdfdest:D + struct~ + \int_use:c + { c__pdf_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~ + name {#1} + \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + { fitr } { fitr } + } + { xyz ~ zoom \fp_eval:n { #2 * 10 } } + \scan_stop: + } + } + \cs_set_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 + { + \tex_pdfdest:D + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \tex_pdfdest:D + struct~ + \int_use:c + { c__pdf_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~ + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: + } + } + \cs_set_protected:Npn \__pdf_backend_link_begin_structure_goto:nnw #1#2 + { + \__pdf_backend_link_begin:nnnw {#1} { goto~struct~name~{#2}~name } {#2} + } + } +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \pdfmanagement_add:nnn{Info}{Producer}{(pdfTeX)} + \tex_pdfsuppressptexinfo:D 7 \scan_stop: + \pdftrailerid{2350CAD05F8A7AF0AA4058486855344F} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-pdftex.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def new file mode 100644 index 000000000..3e3f22607 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def @@ -0,0 +1,478 @@ +%% +%% This is file `l3backend-testphase-xetex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3backend-testphase.dtx (with options: `drivers,xdvipdfmx') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3backend-testphase.dtx +\ProvidesExplFile + {l3backend-testphase-xetex.def}{2022-08-24}{} + {LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX} +\RequirePackage{l3ref-tmp} +\cs_generate_variant:Nn \ref_label:nn {en} +\cs_generate_variant:Nn \ref_value:nn {en} +\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2 + { + \@bsphack + \ref_label:nn{#1}{abspage} + \@esphack + } +\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2 + { + \ref_value:nn{#1}{#2} + } +\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en} +\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en} + \__kernel_backend_literal:x { dvipdfmx:config~C~ 0x0010 } +\prop_new:N \g__pdf_tmpa_prop +\tl_new:N \l__pdf_tmpa_tl +\box_new:N \l__pdf_backend_tmpa_box +\box_new:N \l__pdf_backend_tmpb_box +\int_new:N \g__pdf_backend_resourceid_int +\int_new:N \g__pdf_backend_name_int +\int_new:N \g__pdf_backend_page_int +\cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 + { + / \str_convert_pdfname:e { \text_expand:n { #1 } } + } +\tl_gput_right:Nn \@kernel@after@shipout@lastpage + { + \g__kernel_pdfmanagement_end_run_code_tl + } +\tl_if_exist:NTF \@kernel@after@shipout@background + { + \g@addto@macro \@kernel@before@shipout@background{\relax} + \g@addto@macro \@kernel@after@shipout@background + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + { + \hook_gput_code:nnn{shipout/background}{pdf} + { + \g__kernel_pdfmanagement_thispage_shipout_code_tl + } + } + +\cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1 + { + \__pdf_backend:n{put~@pages~<<#1>>} + } + %the primitive +\cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 + { + \tex_special:D{pdf:~put~@thispage~<<#1>>} + } + % the command to store default values. + % Uses a prop with pdflatex + dvi, + % sets a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 + { + \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } + } + % the command to remove a default value. + % Uses a prop with pdflatex + dvi, + % changes a lua table with lualatex +\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 + { + \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } + } + % the command used in the document. + % direct call of the primitive special with dvips/dvipdfmx + % \latelua: fill a page related table with lualatex, merge it with the page + % table and push it directly + % write to aux and store in prop with pdflatex +\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 + { + \__pdf_backend_Page_primitive:n { /#1~#2 } + } + %the code to push the values, used in shipout + %merges the two props and then fills the register in pdflatex + %merges the two tables (the one is probably still empty) + % and then fills (in lua) in luatex + %issues the values stored in the global prop with dvi +\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 + { + \exp_args:Nx \__pdf_backend_Page_primitive:n + { \pdfdict_use:n { g__pdf_Core/Page} } + } +\clist_const:Nn \c__pdf_backend_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } +\hook_gset_rule:nnnn{shipout/firstpage}{l3backend-xetex}{after}{pdf} +\clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \pdf_object_new:nn { __pdf/Page/Resources/#1 } { dict } + \hook_gput_code:nnn{shipout/firstpage}{pdf}{\pdf_object_write:nn { __pdf/Page/Resources/#1 } {}} + } +\cs_new_protected:Npn \__pdf_backend_PageResources:n #1 + { + \__pdf_backend:n {put~@resources~<<#1>>} + } +\cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 + { + % this is not used for output, but there is a test if the resource is empty + \exp_args:Nnx + \prop_gput:cnn { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/#1} } + { \str_convert_pdfname:n {#2} }{ #3 } + %objects are not filled with \pdf_object_write as this is not additive! + \__pdf_backend:x + { + put~\__pdf_backend_object_ref:n {__pdf/Page/Resources/#1}<> + } + } + +\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {} +\bool_new:N \l__pdf_backend_xform_bool + + \cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name + { + \int_gincr:N \g__pdf_backend_name_int + \__kernel_backend_literal:x + { + pdf:code~/#1/l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC + } + \__kernel_backend_literal:x + { + pdf:put~@resources~ + << + /Properties~ + << + /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl + \__pdf_backend_object_ref:n { #2 } + >> + >> + } + } + \cs_set_protected:Npn \__pdf_backend_bdcobject:n #1 % #1 eg. Span + { + \int_gincr:N \g__pdf_backend_name_int + \__kernel_backend_literal:x + { + pdf:code~/#1/l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC + } + \__kernel_backend_literal:x + { + pdf:put~@resources~ + << + /Properties~ + << + /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl + \__pdf_backend_object_last: + >> + >> + } + } +\cs_set_protected:Npn \__pdf_backend_bmc:n #1 + { + \__kernel_backend_literal:n {pdf:code~/#1~BMC} %pdfbase + } + +\cs_set_protected:Npn \__pdf_backend_bdc_contobj:nn #1 #2 + { + \pdf_object_unnamed_write:nn { dict }{ #2 } + \__pdf_backend_bdcobject:n { #1 } + } + +\cs_set_protected:Npn \__pdf_backend_bdc_contstream:nn #1 #2 + { + \__kernel_backend_literal:n {pdf:code~ /#1~<<#2>>~BDC } + } + +\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 + { + \bool_if:NTF \g__pdfmanagement_active_bool + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn} + {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn} + \__pdf_backend_bdc:nn {#1}{#2} + } +\cs_set_protected:Npn \__pdf_backend_emc: + { + \__kernel_backend_literal:n {pdf:code~EMC} %pdfbase + } + % properties are handled automatically, but the other resources should be added + % at shipout +\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 + { + \clist_map_inline:Nn \c__pdf_backend_PageResources_clist + { + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} } + { + \__kernel_backend_literal:x + { + pdf:put~@resources~ + <> + } + } + } + } +\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 %#1 name of name tree, #2 array content + { + \pdf_object_unnamed_write:nn {dict} {/Names [#2] } + \__pdf_backend:x {put~@names~<>} + } + +\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 {} +\cs_new_protected:Npn \__pdf_backend_link_off:{} +\cs_new_protected:Npn \__pdf_backend_link_on: {} + \cs_set_protected:Npn \__pdf_backend_link_off: + { + \__pdf_backend:n { nolink } + } + \cs_set_protected:Npn \__pdf_backend_link_on: + { + \__pdf_backend:n { link } + } + % it needs a bit testing if it really works to set the box to 0 before the special ... + % does it disturb viewing the xobject? + % what happens with the resources (bdc)? (should work as they are specials too) + % xetex requires that the special is in horizontal mode. This means it affects + % typesetting. But we can no delay the whole form code to shipout + % as the object reference and the size is often wanted on the current page. + % so we need to allocate a box - but probably they won't be thousands xform + % in a document so it shouldn't matter. + \cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4 + % #1 name + % #2 attributes + % #3 resources + % #4 content, not necessarily a box! + { + \int_gincr:N \g__pdf_backend_object_int + \int_const:cn + { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \g__pdf_backend_object_int } + \box_new:c { g__pdf_backend_xform_#1_box } + \hbox_gset:cn { g__pdf_backend_xform_#1_box } + { + \bool_set_true:N \l__pdf_backend_xform_bool + #4 + } + \tl_const:cx + { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_wd:c { g__pdf_backend_xform_#1_box } } + \tl_const:cx + { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_ht:c { g__pdf_backend_xform_#1_box } } + \tl_const:cx + { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } + { \tex_the:D \box_dp:c { g__pdf_backend_xform_#1_box } } + \box_set_dp:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \box_set_ht:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \box_set_wd:cn { g__pdf_backend_xform_#1_box } { \c_zero_dim } + \hook_gput_next_code:nn {shipout/background} + { + \mode_leave_vertical: %needed, the xform disappears without it. + \__pdf_backend:x + { + bxobj ~ \__pdf_backend_xform_ref:n { #1 } + \c_space_tl width ~ \pdfxform_wd:n { #1 } + \c_space_tl height ~ \pdfxform_ht:n { #1 } + \c_space_tl depth ~ \pdfxform_dp:n { #1 } + } + \box_use_drop:c { g__pdf_backend_xform_#1_box } + \__pdf_backend:x {put ~ @resources ~<<#3>> } + \__pdf_backend:x + { + put~ @resources ~ + << + /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading } + >> + } + \__pdf_backend:x + { + put~ @resources ~ + << + /ColorSpace~ + \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace } + >> + } + \exp_args:Nx + \__pdf_backend:x {exobj ~<<#2>>} + } + } + + \cs_new:Npn \__pdf_backend_xform_ref:n #1 + { + @pdf.xform \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + } + + \cs_new_protected:Npn \__pdf_backend_xform_use:n #1 + { + \hbox_set:Nn \l__pdf_backend_tmpa_box + { + \__pdf_backend:x + { + uxobj~ \__pdf_backend_xform_ref:n { #1 } + } + } + \box_set_wd:Nn \l__pdf_backend_tmpa_box { \pdfxform_wd:n { #1 } } + \box_set_ht:Nn \l__pdf_backend_tmpa_box { \pdfxform_ht:n { #1 } } + \box_set_dp:Nn \l__pdf_backend_tmpa_box { \pdfxform_dp:n { #1 } } + \box_use_drop:N \l__pdf_backend_tmpa_box + } +%% all +\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } + { + \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } + { \prg_return_true: } + { \prg_return_false:} + } +\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n + { TF , T , F , p } +\tl_new:N \l_pdf_current_structure_destination_tl +\cs_new_protected:Npn \pdf_activate_structure_destination: + { + \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn + \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn + \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw + } +\cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn +\cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn +\cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw +\cs_set_protected:Npn \__pdf_backend_structure_destination:nn #1#2 + { + \__pdf_backend:x + { + dest ~ ( \exp_not:n {#1} ) + [ + @thispage + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + { fitr } { /Fit } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \__pdf_backend:x + { + obj ~ @pdf.SDest.\exp_not:n{#1} + [ + \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl } + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + { fitr } { /Fit } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + } + } +\cs_new_protected:Npn \__pdf_backend_structure_destination_aux:nnnn #1#2#3#4 + { + \vbox_to_zero:n + { + \__kernel_kern:n {#4} + \hbox:n + { + \__pdf_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos } + \__pdf_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos } + } + \tex_vss:D + } + \__kernel_kern:n {#1} + \vbox_to_zero:n + { + \__kernel_kern:n { -#3 } + \hbox:n + { + \__pdf_backend:n + { + dest ~ (#2) + [ + @thispage + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl } + { + \__pdf_backend:x + { + obj ~ @pdf.SDest.\exp_not:n{#2} + [ + \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl } + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + } + } + \tex_vss:D + } + \__kernel_kern:n { -#1 } + } +\cs_set_protected:Npn \__pdf_backend_structure_destination:nnnn #1#2#3#4 + { + \exp_args:Ne \__pdf_backend_structure_destination_aux:nnnn + { \dim_eval:n {#2} } {#1} {#3} {#4} + } +\cs_set_protected:Npn \__pdf_backend_link_begin_structure_goto:nnw #1#2 + { + \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) /SD~@pdf.SDest.#2 >> } + } +\cs_new_protected:Npn \__pdf_backend_set_regression_data: + { + \sys_gset_rand_seed:n{1000} + \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} + \pdfmanagement_add:nnn{Info}{Producer}{(xetex)} + \__kernel_backend_literal:e + {pdf:trailerid [~ + <00112233445566778899aabbccddeeff>~ + <00112233445566778899aabbccddeeff>~ + ]} + \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} + \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} + } +%% +%% +%% End of file `l3backend-testphase-xetex.def'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua new file mode 100644 index 000000000..f7702b51c --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua @@ -0,0 +1,142 @@ +-- +-- This is file `l3backend-testphase.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- l3backend-testphase.dtx (with options: `lua') +-- +-- Copyright (C) 2019-2021 The LaTeX Project +-- +-- It may be distributed and/or modified under the conditions of +-- the LaTeX Project Public License (LPPL), either version 1.3c of +-- this license or (at your option) any later version. The latest +-- version of this license is in the file: +-- +-- https://www.latex-project.org/lppl.txt +-- +-- This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +-- and all files in that bundle must be distributed together. +-- +-- File: l3backend-testphase.dtx + + +ltx= ltx or {} +ltx.__pdf = ltx.__pdf or {} +ltx.__pdf.Page = ltx.__pdf.Page or {} +ltx.__pdf.Page.dflt = ltx.__pdf.Page.dflt or {} +ltx.__pdf.Page.Resources = ltx.__pdf.Resources or {} +ltx.__pdf.Page.Resources.Properties = ltx.__pdf.Page.Resources.Properties or {} +ltx.__pdf.Page.Resources.List={"ExtGState","ColorSpace","Pattern","Shading"} +ltx.__pdf.object = ltx.__pdf.object or {} + +ltx.pdf= ltx.pdf or {} -- for "public" functions + +local __pdf = ltx.__pdf +local pdf = pdf + +local function __pdf_backend_Page_gput (name,value) + __pdf.Page.dflt[name]=value +end + +local function __pdf_backend_Page_gremove (name) + __pdf.Page.dflt[name]=nil +end + +local function __pdf_backend_Page_gclear () + __pdf.Page.dflt={} +end + +local function __pdf_backend_ThisPage_gput (page,name,value) + __pdf.Page[page] = __pdf.Page[page] or {} + __pdf.Page[page][name]=value +end + +local function __pdf_backend_ThisPage_gpush (page) + local token="" + local t = {} + local tkeys= {} + for name,value in pairs(__pdf.Page.dflt) do + t[name]=value + end + if __pdf.Page[page] then + for name,value in pairs(__pdf.Page[page]) do + t[name] = value + end + end + -- sort the table to get reliable test files. + for name,value in pairs(t) do + table.insert(tkeys,name) + end + table.sort(tkeys) + for _,name in ipairs(tkeys) do + token = token .. "/"..name.." "..t[name] + end + return token +end + +function ltx.__pdf.backend_ThisPage_gput (page,name,value) -- tex.count["g_shipout_readonly_int"] + __pdf_backend_ThisPage_gput (page,name,value) +end + +function ltx.__pdf.backend_ThisPage_gpush (page) + pdf.setpageattributes(__pdf_backend_ThisPage_gpush (page)) +end + +function ltx.__pdf.backend_Page_gput (name,value) + __pdf_backend_Page_gput (name,value) +end + +function ltx.__pdf.backend_Page_gremove (name) + __pdf_backend_Page_gremove (name) +end + +function ltx.__pdf.backend_Page_gclear () + __pdf_backend_Page_gclear () +end + +local Properties = ltx.__pdf.Page.Resources.Properties +local ResourceList= ltx.__pdf.Page.Resources.List +local function __pdf_backend_PageResources_gpush (page) + local token="" + if Properties[page] then +-- we sort the table, so that the pdf test works + local t = {} + for name,value in pairs (Properties[page]) do + table.insert (t,name) + end + table.sort (t) + for _,name in ipairs(t) do + token = token .. "/"..name.." ".. Properties[page][name] + end + token = "/Properties <<"..token..">>" + end + for i,name in ipairs(ResourceList) do + if ltx.__pdf.Page.Resources[name] then + token = token .. "/"..name.." "..ltx.pdf.object_ref("__pdf/Page/Resources/"..name) + end + end + return token +end + +-- the function is public, as I probably need it in tagpdf too ... +function ltx.pdf.Page_Resources_Properties_gput (page,name,value) -- tex.count["g_shipout_readonly_int"] + Properties[page] = Properties[page] or {} + Properties[page][name]=value + pdf.setpageresources(__pdf_backend_PageResources_gpush (page)) +end + +function ltx.pdf.Page_Resources_gpush(page) + pdf.setpageresources(__pdf_backend_PageResources_gpush (page)) +end + +function ltx.pdf.object_ref (objname) + if ltx.__pdf.object[objname] then + local ref= ltx.__pdf.object[objname] + return ref + else + return "false" + end +end +-- +-- End of File `l3backend-testphase.lua'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty b/texmf/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty new file mode 100644 index 000000000..2b39d5ec3 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty @@ -0,0 +1,2151 @@ +%% +%% This is file `l3pdffield-testphase.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3pdffield.dtx (with options: `package') +%% l3pdffield-checkbox.dtx (with options: `package') +%% l3pdffield-radiobutton.dtx (with options: `package') +%% l3pdffield-textfield.dtx (with options: `package') +%% l3pdffield-pushbutton.dtx (with options: `package') +%% l3pdffield-choice.dtx (with options: `package') +%% l3pdffield-action.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3pdffield.dtx + +\NeedsTeXFormat{LaTeX2e} +\ProvidesExplPackage{l3pdffield-testphase}{2022-08-24}{0.95r}% + {form fields} +\csname HyField@NeedAppearancesfalse\endcsname % suppress NeedAppearances +\str_new:N \l__pdffield_tmpa_str +\str_new:N \l__pdffield_tmpb_str +\tl_new:N \l__pdffield_tmpa_tl +\tl_new:N \l__pdffield_tmpa_keys_tl +\tl_new:N \l__pdffield_currentparent_tl +\tl_new:N \l__pdffield_fieldID_tl +\tl_new:N \l__pdffield_caption_tl +\tl_new:N \l__pdffield_rollover_caption_tl +\tl_new:N \l__pdffield_down_caption_tl +\prop_new:N \g__pdffield_CO_sortkeys_prop +\seq_new:N \g__pdffield_CO_sortkeys_seq +\str_new:N \l__pdffield_CO_sortkey_str +\tl_new:N \g__pdffield_annot_ref_last_tl +\bool_new:N \l__pdffield_tag_bool +\bool_set_true:N \l__pdffield_tag_bool +\cs_new_protected:Npn \__pdffield_tmpa:n #1 {} +\cs_new_protected:Npn \__pdffield_tmpa:nn #1 #2 {} + +\msg_new:nnn {pdffield}{no-period} + { + The~field~name~'#1'~contains~a~period. \\ + This~is~not~allowed. + } +\msg_new:nnn {pdffield}{empty-name} + { + The~field~name~is~empty. \\ + This~is~not~allowed. + } +\msg_new:nnn {pdffield}{appearance-missing} + { + The~appearance~definition~'#1'~is~missing~for~the~#2~appearance. + } +\msg_new:nnn {pdffield}{not-implemented} + { + Support~for~'/#1'~is~not~implemented\\ + The~key~is~ignored. + } +\msg_new:nnn {pdffield}{key-disabled} + { + key~'#2'~is~disabled~and~ignored~in~the~'#1'~command.\\ + Use~key~'#3'~instead. + } +\msg_new:nnn {pdffield}{parent-field-missing} + { + The~parent~field~'#1'~doesn't~exist\\ + Create~it~with~\tl_to_str:n{\pdffield_field:nn} + } +\msg_new:nnn {pdffield}{key-ignored} + { + key~'#1'~has~no~function~and~is~ignored + } + +\cs_new_protected:Npn \__pdffield_key_disable:nnn #1#2#3 + { + \keys_define:nn {pdffield} + { + #2 .code:n = + { + \msg_warning:nnnnn {pdffield}{key-disabled}{#1}{#2}{#3} + } + } + } +\bitset_new:Nn \l__pdffield_Ff_bitset + { + ReadOnly = 1, + Required = 2, + NoExport = 3, + Multiline = 13,%Tx + Password = 14, + NoToggleToOff = 15,%Btn, radio button + Radio = 16,%Btn: Radio: 15=1, 16=0 + Pushbutton = 17,%Btn: Checkbox: 15=0, 16=0 + %Btn: Pushbutton: 16=1 + Combo = 18,%Ch: Combo=1 List=0 + Edit = 19,%Ch, Combo=1 -> + edit field + Sort = 20,%Ch, not relevant for view... + FileSelect = 21,%Tx + MultiSelect = 22,%Ch + DoNotSpellCheck = 23,%Tx, Ch (if Combo + Edit set) + DoNotScroll = 24,%Tx + Comb = 25,%Tx, requires MaxLen in dict + RadiosInUnison = 26,%Btn Radio + RichText = 26,%Tx + CommitOnSelChange = 27, + readonly = 1, + required = 2, + noexport = 3, + multiline = 13,%Tx + password = 14, + notoggletooff = 15,%Btn, radio button + radio = 16,%Btn: Radio: 15=1, 16=0 + pushbutton = 17,%Btn: Checkbox: 15=0, 16=0 + %Btn: Pushbutton: 16=1 + combo = 18,%Ch: Combo=1 List=0 + edit = 19,%Ch, Combo=1 -> + edit field + sort = 20,%Ch, not relevant for view... + fileselect = 21,%Tx + multiselect = 22,%Ch + donotspellcheck = 23,%Tx, Ch (if Combo + Edit set) + donotscroll = 24,%Tx + comb = 25,%Tx, requires MaxLen in dict + radiosinunison = 26,%Btn Radio + richtext = 26,%Tx + commitonselchange = 27 + } + +\bitset_new:Nn \l__pdffield_F_bitset + { + Invisible = 1, + Hidden = 2, + Print = 3, + NoZoom = 4, + NoRotate = 5, + NoView = 6, + ReadOnly = 7, + Locked = 8, + ToggleNoView = 9, + LockedContents = 10, + invisible = 1, + hidden = 2, + print = 3, + nozoom = 4, + norotate = 5, + noview = 6, + readonly = 7, + locked = 8, + togglenoview = 9, + lockedcontents = 10 + } +\pdfdict_new:n {l__pdffield/field} +\pdfdict_new:n {l__pdffield/field/AA} +\cs_new_protected:Npn \__pdffield_field:n #1 + { + \pdf_object_new:nn {__pdffield/field/#1} {dict} + \pdf_object_new:nn {__pdffield/field/Kids/#1} {array} + \tl_if_empty:NTF \l__pdffield_currentparent_tl + { + \pdfmanagement_add:nnx + { Catalog / AcroForm } + { Fields } + {\pdf_object_ref:n {__pdffield/field/#1} } + } + { + \exp_args:Ne + \pdf_object_if_exist:nTF {__pdffield/field/\l__pdffield_currentparent_tl} + { + \pdfdict_put:nnx { l__pdffield/field }{Parent} + {\exp_args:Ne \pdf_object_ref:n{__pdffield/field/\l__pdffield_currentparent_tl}} + \seq_gput_right:cx {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq} + { \exp_args:Ne \pdf_object_ref:n{__pdffield/field/#1}} + } + { + \msg_error:nnx {pdffield}{parent-field-missing}{\l__pdffield_currentparent_tl} + } + } + \seq_new:c {g__pdffield_field/Kids/#1_seq} + \pdfdict_put:nnx {l__pdffield/field} + {Kids} + { + \pdf_object_ref:n {__pdffield/field/Kids/#1} + } + \pdfdict_put:nnx {l__pdffield/field} + {Ff} + {\bitset_to_arabic:N \l__pdffield_Ff_bitset } + \pdfdict_if_empty:nF{l__pdffield/field/AA} + { + \pdfmeta_standard_verify:nT + {annot_widget_no_AA} + { + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n {l__pdffield/field/AA}} + \pdfdict_put:nnx + {l__pdffield/field} + {AA} + {\pdf_object_ref_last:} + \pdfdict_get:nnN {l__pdffield/field/AA}{C}\l__pdffield_tmpa_tl + \quark_if_no_value:NF \l__pdffield_tmpa_tl + { + \prop_gput:Nxx\g__pdffield_CO_sortkeys_prop + { \pdf_object_ref:n {__pdffield/field/#1} }{ \l__pdffield_CO_sortkey_str } + \seq_gput_right:Nx\g__pdffield_CO_sortkeys_seq + { \pdf_object_ref:n {__pdffield/field/#1} } + } + } + } + \hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ... + { + \pdf_object_write:nx {__pdffield/field/Kids/#1} + { + \seq_use:cn{g__pdffield_field/Kids/#1_seq}{~} + } + } + \pdf_object_write:nx {__pdffield/field/#1} { \pdfdict_use:n {l__pdffield/field} } + } + +\hook_gput_code:nnn {shipout/lastpage}{pdffield} + { + \prop_if_empty:NF \g__pdffield_CO_sortkeys_prop + { + \seq_sort:Nn \g__pdffield_CO_sortkeys_seq + { + \str_compare:eNeTF + { \prop_item:Nn \g__pdffield_CO_sortkeys_prop {#1} } + > + { \prop_item:Nn \g__pdffield_CO_sortkeys_prop {#2} } + { \sort_return_swapped: } + { \sort_return_same: } + } + \pdfmanagement_add:nnx + { Catalog / AcroForm } + { CO } + { \seq_use:Nn \g__pdffield_CO_sortkeys_seq{~} } + } + } + +\cs_new_protected:Npn \pdffield_field:nn #1 #2 + { + \group_begin: + \keys_set:nn { pdffield } {#1} + \__pdffield_field:n {#2} + \group_end: + } +\cs_new_protected:Npn \__pdffield_annot: + { + \pdfmeta_standard_verify:nF + {annot_flags} + { + \bitset_set_true:Nn \l__pdffield_F_bitset {Print} + \bitset_set_false:Nn \l__pdffield_F_bitset {Hidden} + \bitset_set_false:Nn \l__pdffield_F_bitset {Invisible} + \bitset_set_false:Nn \l__pdffield_F_bitset {NoView} + } + \pdfannot_dict_put:nnx {widget}{F}{ \bitset_to_arabic:N \l__pdffield_F_bitset } + \__pdffield_tag_add_struct_parent: + \tl_if_empty:NF \l__pdffield_currentparent_tl + { + \exp_args:Ne + \pdf_object_if_exist:nTF { __pdffield/field/\l__pdffield_currentparent_tl } + { + \pdfannot_dict_put:nnx {widget}{Parent} + { + \exp_args:Ne + \pdf_object_ref:n{__pdffield/field/\l__pdffield_currentparent_tl} + } + } + { + \msg_error:nnx { pdffield }{parent-field-missing}{\l__pdffield_currentparent_tl} + } + } + \mode_leave_vertical: + \__pdffield_tag_struct_begin: + \hbox_to_wd:nn + { \l__pdffield_annot_wd_dim } + { + \rule [-\l__pdffield_annot_dp_dim]{0pt}{\dim_eval:n{\l__pdffield_annot_ht_dim+\l__pdffield_annot_dp_dim} } + \pdfannot_widget_box:nnn + { \l__pdffield_annot_wd_dim } + { \l__pdffield_annot_ht_dim } + { \l__pdffield_annot_dp_dim } + \hfill + } + \tl_gset:Nx \g__pdffield_annot_ref_last_tl { \pdfannot_box_ref_last: } + \exp_args:NV \__pdffield_tag_add_objr:n \g__pdffield_annot_ref_last_tl + \__pdffield_tag_struct_end: + \tl_if_empty:NF \l__pdffield_currentparent_tl + { + \seq_if_exist:cTF {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq} + { + \seq_gput_right:cx + {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq} + { \g__pdffield_annot_ref_last_tl } + } + { + \msg_error:nnx { pdffield}{parent-field-missing}{\l__pdffield_currentparent_tl} + } + } + } +\cs_new_protected:Npn \pdffield_annot:n #1 + { + \group_begin: + \keys_set:nn { pdffield } {#1} + \__pdffield_annot: + \group_end: + } +\cs_new:Npn \pdffield_annot_ref_last: { \g__pdffield_annot_ref_last_tl } +\cs_new_protected:Npn \__pdffield_tag_add_struct_parent: {} +\cs_new_protected:Npn \__pdffield_tag_add_objr:n #1 {} +\cs_new_protected:Npn \__pdffield_tag_struct_begin: {} +\cs_new_protected:Npn \__pdffield_tag_struct_end: {} +\hook_gput_code:nnn {begindocument} { l3pdffield } + { + \cs_if_exist:NT \tag_if_active:T + { + \tag_if_active:T + { + \cs_set_protected:Npn \__pdffield_tag_add_struct_parent: + { + \bool_if:NT \l__pdffield_tag_bool + { + \pdfannot_dict_put:nnx {widget}{StructParent}{ \tag_struct_parent_int: } + } + } + \cs_set_protected:Npn \__pdffield_tag_add_objr:n #1 + { + \bool_if:NT \l__pdffield_tag_bool + { + \exp_args:Nnx + \tag_struct_insert_annot:nn {#1}{ \tag_struct_parent_int: } + } + } + \cs_set_protected:Npn \__pdffield_tag_struct_begin: + { + \bool_if:NT \l__pdffield_tag_bool + { + \tag_mc_end_push: + \tag_struct_begin:n{tag=Form} + } + } + \cs_set_protected:Npn \__pdffield_tag_struct_end: + { + \bool_if:NT \l__pdffield_tag_bool + { + \tag_struct_end: + \tag_mc_begin_pop:n{} + } + } + } + } + } +\cs_new_protected:Npn \__pdffield_color_set:nn #1 #2 + { + \tl_if_head_eq_charcode:nNTF {#2}[ %] + { + \__pdffield_color_set_aux:nwn { #1 } #2 + } + { + \color_set:nn {#1} {#2} + } + } + +\cs_new_protected:Npn \__pdffield_color_set_aux:nwn #1 [#2] #3 + { + \color_set:nnn {#1}{#2}{#3} + } + +\cs_new_protected:Npn \__pdffield_V_handler:nN #1#2 + { + \tl_set:Nn #2 {#1} + } +\keys_define:nn { pdffield } + { + ,parent .tl_set:N = \l__pdffield_currentparent_tl + ,parent .groups:n = {field,annot} + ,T .code:n = + { + \pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l__pdffield_tmpa_str + \str_if_in:NnT \l__pdffield_tmpa_str {.} + { + \msg_error:nnx {pdffield}{no-period}{\l__pdffield_tmpa_str} + } + \str_if_empty:NTF\l__pdffield_tmpa_str + { + \msg_warning:nn {pdffield}{empty-name} + \pdfdict_remove:nn { l__pdffield/field }{T} + } + { + \pdfdict_put:nnx { l__pdffield/field }{T}{(\l__pdffield_tmpa_str)} + } + } + ,T .value_required:n = true + ,T .groups:n = {field} + ,name .meta:n = {T={#1}} + ,name .value_required:n = true + ,name .groups:n = {field} + ,TU .groups:n = {field} + ,TU .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{TU} + } + { + \pdf_string_from_unicode:nnN {utf16/hex}{#1}\l__pdffield_tmpa_str + \pdfdict_put:nnx { l__pdffield/field }{TU}{\l__pdffield_tmpa_str} + } + } + ,TU .groups:n = {field} + ,altname .meta:n = {TU={#1}} + ,altname .groups:n = {field} + ,TM .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{TM} + } + { + \pdf_string_from_unicode:nnN {utf16/hex}{#1}\l__pdffield_tmpa_str + \pdfdict_put:nnx { l__pdffield/field }{TM}{\l__pdffield_tmpa_str} + } + } + ,TM .groups:n = {field} + ,mappingname .meta:n = {TM={#1}} + ,mappingname .groups:n = {field} + } +\keys_define:nn { pdffield } + { + fieldID .tl_set:N = \l__pdffield_fieldID_tl + } +\keys_define:nn{pdffield} + { + ,FT .choices:nn = + { Btn, Tx, Ch, Sig } + { + \pdfdict_put:nnn { l__pdffield/field }{FT}{ /#1 } + } + ,FT .groups:n = {field} + ,V .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{V} + } + { + \__pdffield_V_handler:nN{#1}\l__pdffield_tmpa_str + \pdfdict_put:nnx { l__pdffield/field }{V}{ \l__pdffield_tmpa_str } + } + } + ,V .groups:n = {field} + ,DV .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{DV} + } + { + \__pdffield_V_handler:nN{#1}\l__pdffield_tmpa_str + \pdfdict_put:nnx { l__pdffield/field }{DV}{ \l__pdffield_tmpa_str } + } + } + ,DV .groups:n = {field} + ,MaxLen .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{MaxLen} + } + { + \pdfdict_put:nnx { l__pdffield/field }{MaxLen}{ #1 } + } + } + ,MaxLen .groups:n = {field} + ,Lock .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{Lock} + } + { + \pdfdict_put:nnx { l__pdffield/field }{Lock}{ \pdf_object_ref:n{#1} } + } + } + ,Lock .groups:n = {field} + ,SV .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{SV} + } + { + \pdfdict_put:nnx { l__pdffield/field }{SV}{ \pdf_object_ref:n{#1} } + } + } + ,SV .groups:n = {field} + ,Opt .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{Opt} + } + { + \pdfdict_put:nnx { l__pdffield/field }{Opt}{ \pdf_object_ref:n{#1} } + } + } + ,Opt .groups:n = {field} + ,TI .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{TI} + } + { + \pdfdict_put:nnx { l__pdffield/field }{TI}{ #1 } + } + } + ,TI .groups:n = {field} + ,I .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{I} + } + { + \pdfdict_put:nnx { l__pdffield/field }{I}{ \pdf_object_ref:n{#1} } + } + } + ,I .groups:n = {field} + } +\keys_define:nn { pdffield } + { + ,setFf .code:n = + { + \clist_map_inline:nn {#1} + { + \bitset_set_true:Nn \l__pdffield_Ff_bitset {##1} + } + } + ,setFf .groups:n = {field} + ,setfieldflags .meta:n = + {setFf={#1}} + ,setfieldflags .groups:n = {field} + ,unsetFf .multichoice: + ,unsetFf / all .code:n = { \bitset_clear:N \l__pdffield_Ff_bitset} + ,unsetFf / unknown .code:n = + { + \bitset_set_false:Nn \l__pdffield_Ff_bitset {#1} + } + ,unsetFf .groups:n = {field} + ,unsetfieldflags .meta:n = {unsetFf={#1}} + ,unsetfieldflags .groups:n = {field} + } + +\cs_set_protected:Npn \__pdffield_tmpa:n #1 % + { + \keys_define:nn { pdffield } + { + AA/#1 .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn {l__pdffield/field/AA}{#1} + } + { + \pdfdict_put:nnx {l__pdffield/field/AA} + {#1} + {<>} + } + }, + AA/#1 .groups:n = {field} + } + } + +\clist_map_inline:nn {K,F,V,C}{\__pdffield_tmpa:n{#1}} + +\cs_set_protected:Npn \__pdffield_tmpa:nn #1 #2 + { + \keys_define:nn { pdffield } + { + #1 .meta:nn = + { pdffield }{AA/#2={##1}}, + #1 .groups:n = {field} + } + } +\__pdffield_tmpa:nn {keystroke}{K} +\__pdffield_tmpa:nn {format} {F} +\__pdffield_tmpa:nn {validate} {V} +\__pdffield_tmpa:nn {calculate}{C} + +\keys_define:nn {pdffield} + { + sortkey .code:n = {\str_set:Nx \l__pdffield_CO_sortkey_str {\tl_to_str:n{#1}}} + } +\keys_define:nn { pdffield } + { + DA .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfdict_remove:nn { l__pdffield/field }{DA} + } + { + \pdfdict_put:nnx { l__pdffield/field }{DA}{ (#1) } + } + } + ,DA .groups:n = {field} + ,Q .choices:nn = {left,center,right} + { + \pdfdict_put:nnx { l__pdffield/field }{Q}{ \int_eval:n{\l_keys_choice_int-1} } + } + ,Q / .code:n = { \pdfdict_remove:nn { l__pdffield/field }{Q} } + ,Q .groups:n = {field} + ,align .meta:n={Q=#1} + ,DS .code:n = + { + \msg_warning:nnn {pdffield}{not-implemented}{DS} + } + ,DS .groups:n = {field} + ,RV .code:n = + { + \msg_warning:nnn {pdffield}{not-implemented}{RV} + } + ,RV .groups:n = {field} + } +\dim_new:N \l__pdffield_annot_ht_dim +\dim_new:N \l__pdffield_annot_wd_dim +\dim_new:N \l__pdffield_annot_dp_dim +\keys_define:nn { pdffield } + { + ,width .dim_set:N = \l__pdffield_annot_wd_dim + ,height .dim_set:N = \l__pdffield_annot_ht_dim + ,depth .dim_set:N = \l__pdffield_annot_dp_dim + ,width .initial:n = 0pt + ,height .initial:n = 0pt + ,depth .initial:n = 0pt + } +\keys_define:nn { pdffield } + { + ,tag .bool_set:N = \l__pdffield_tag_bool + } +\cs_new_protected:Npn \__pdffield_appearance_handler:nnn #1#2#3 + { + \pdfxform_if_exist:nTF { #1 } + { + \pdfannot_dict_put:nnx {widget/AP}{#2} + { + \pdfxform_ref:n {#1} + } + } + { + \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3} + } + } +\keys_define:nn { pdffield } + { + %parent is defined in field + ,AS .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget }{AS} + } + { + \pdfannot_dict_put:nnx {widget}{AS}{\pdf_name_from_unicode_e:n{#1}} + } + } + ,AS .groups:n = annot + } +\keys_define:nn { pdffield } + { + AP/N .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/AP }{N} + } + { + \__pdffield_appearance_handler:nnn {#1}{N}{normal} + } + } + ,AP/N .groups:n = annot + ,appearance .meta:n = {AP/N={#1}} + ,appearance .groups:n = annot + } +\keys_define:nn { pdffield } + { + AP/R .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/AP }{R} + } + { + \__pdffield_appearance_handler:nnn {#1}{R}{rollover} + } + } + ,AP/R .groups:n = annot + ,rollover-appearance .meta:n = {AP/R={#1}} + ,rollover-appearance .groups:n = annot + } +\keys_define:nn { pdffield } + { + AP/D .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/AP }{D} + } + { + \__pdffield_appearance_handler:nnn {#1}{D}{down} + } + } + ,AP/D .groups:n = annot + ,down-appearance .meta:n = {AP/D={#1}} + ,down-appearance .groups:n = annot + } +\keys_define:nn { pdffield } + { + MK/R .choices:nn = {0,90,180,270} + { + \pdfannot_dict_put:nnx {widget/MK}{R}{#1} + } + ,MK/R / .code:n = + { + \pdfannot_dict_remove:nn { widget/MK }{R} + } + ,MK/R .groups:n = annot + ,rotate .meta:n = {MK/R=#1} + } + +\keys_define:nn { pdffield } + { + MK/BC .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/MK }{BC} + } + { + \__pdffield_color_set:nn {__pdffield/tmp}{#1} + \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_tmpa_tl + \pdfannot_dict_put:nnx {widget/MK}{BC}{[\l__pdffield_tmpa_tl]} + } + } + ,MK/BC .groups:n = annot + ,bordercolor .meta:n = {MK/BC=#1} + } + +\keys_define:nn { pdffield } + { + MK/BG .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/MK }{BG} + } + { + \__pdffield_color_set:nn {__pdffield/tmp}{#1} + \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_tmpa_tl + \pdfannot_dict_put:nnx {widget/MK}{BG}{[\l__pdffield_tmpa_tl]} + } + } + ,MK/BG .groups:n = annot + ,backgroundcolor .meta:n = {MK/BG=#1} + } + +\keys_define:nn { pdffield } + { + MK/CA .code:n = + { + \tl_set:Nn \l__pdffield_caption_tl {#1} + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/MK }{CA} + } + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str + \pdfannot_dict_put:nnx {widget/MK}{CA}{\l__pdffield_tmpa_str} + } + } + ,MK/CA .groups:n = annot + ,caption .meta:n = {MK/CA=#1} + } + +\keys_define:nn { pdffield } + { + MK/RC .code:n = + { + \tl_set:Nn \l__pdffield_rollover_caption_tl {#1} + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/MK }{RC} + } + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str + \pdfannot_dict_put:nnx {widget/MK}{RC}{\l__pdffield_tmpa_str} + } + } + ,MK/RC .groups:n = annot + ,rollover-caption .meta:n = {MK/RC=#1} + } + +\keys_define:nn { pdffield } + { + MK/AC .code:n = + { + \tl_set:Nn \l__pdffield_down_caption_tl {#1} + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn { widget/MK }{AC} + } + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str + \pdfannot_dict_put:nnx {widget/MK}{AC}{\l__pdffield_tmpa_str} + } + } + ,MK/AC .groups:n = annot + ,down-caption .meta:n = {MK/AC=#1} + } + +\cs_set_protected:Npn \__pdffield_tmpa:n #1 + { + \keys_define:nn { pdffield } + { + MK/#1 .code:n = + { + \tl_if_empty:nTF {##1} + { + \pdfannot_dict_remove:nn { widget/MK }{#1} + } + { + \pdfannot_dict_put:nnx {widget/MK}{#1}{##1} + } + } + ,MK/#1 .groups:n = annot + } + } + +\clist_map_inline:nn {I,RI,IX,IF,TP} + { \__pdffield_tmpa:n {#1} } +\keys_define:nn { pdffield } + { + ,setF .code:n = + { + \clist_map_inline:nn {#1} + { + \bitset_set_true:Nn \l__pdffield_F_bitset {##1} + } + } + ,setF .groups:n = annot + ,setannotflags .meta:nn = + { pdffield }{setF={#1}} + ,setannotflags .groups:n = annot + ,unsetF .multichoice: + ,unsetF / all .code:n = { \bitset_clear:N \l__pdffield_F_bitset} + ,unsetF / unknown .code:n = + { + \bitset_set_false:Nn \l__pdffield_F_bitset {#1} + } + ,unsetF .groups:n = annot + ,unsetannotflags .meta:nn = + { pdffield }{unsetF= {#1} } + ,unsetannotflags .groups:n = annot + } + +\cs_set_protected:Npn \__pdffield_tmpa:n #1 % + { + \keys_define:nn { pdffield } + { + AA/#1 .code:n = + { + \tl_if_empty:nTF {#1} + { + \pdfannot_dict_remove:nn {widget/AA}{#1} + } + { + \pdfannot_dict_put:nnx {widget/AA} + {#1} + {<>} + } + }, + ,AA/#1 .groups:n = annot + } + } + +\clist_map_inline:nn {Fo,Bl,D,U,E,X,PO,PC,PV,PI}{\__pdffield_tmpa:n{#1}} + +\cs_set_protected:Npn \__pdffield_tmpa:nn #1 #2 + { + \keys_define:nn { pdffield } + { + #1 .meta:nn = + { pdffield }{AA/#2={##1}}, + #1 .groups:n = {annot} + } + } +\__pdffield_tmpa:nn {onfocus} {Fo} +\__pdffield_tmpa:nn {onblur} {Bl} +\__pdffield_tmpa:nn {onmousedown}{D} +\__pdffield_tmpa:nn {onmouseup}{U} +\__pdffield_tmpa:nn {onenter} {E} +\__pdffield_tmpa:nn {onexit} {X} +\cs_new_protected:Npn \pdffield_appearance:nn #1 #2 + { + \pdfxform_new:nnn {#1}{}{#2} + } + +\cs_set_eq:NN \pdffield_store_appearance:nn\pdffield_appearance:nn +\keys_define:nn { pdffield / setup } + { + ,create-style .code:n = { \__pdffield_style_create:nn #1 } + ,preset-checkbox .code:n = + { + \keys_define:nn { pdffield } + { + __pdffield/preset/checkbox .meta:n = {#1}, + } + } + ,preset-radiobutton .code:n = + { + \keys_define:nn { pdffield } + { + __pdffield/preset/radiobutton .meta:n = {#1}, + } + } + ,preset-textfield .code:n = + { + \keys_define:nn { pdffield } + { + __pdffield/preset/textfield .meta:n = {#1}, + } + } + ,preset-pushbutton .code:n = + { + \keys_define:nn { pdffield } + { + __pdffield/preset/pushbutton .meta:n = {#1}, + } + } + ,preset-choice .code:n = + { + \keys_define:nn { pdffield } + { + __pdffield/preset/choice .meta:n = {#1}, + } + } + } +\keys_set:nn{ pdffield / setup }{preset-checkbox={}} +\keys_set:nn{ pdffield / setup }{preset-textfield={}} +\keys_set:nn{ pdffield / setup }{preset-radiobutton={}} +\keys_set:nn{ pdffield / setup }{preset-pushbutton={}} +\keys_set:nn{ pdffield / setup }{preset-choice={}} +\cs_new_protected:Npn \__pdffield_style_create:nn #1#2 + { + \keys_define:nn { pdffield } + { + __pdffield/style/#1 .meta:n = {#2}, + } + } + +\cs_new_protected:Npn \pdffield_setup:n #1 + { + \keys_set:nn{ pdffield / setup }{#1} + } + +\keys_define:nn { pdffield } + { + style .code:n = {\keys_set:nn {pdffield}{__pdffield/style/#1={#1}}} + } +\cs_new_protected:Npn \__pdffield_value_handler:n #1 + { + \msg_info:nnn {pdffield}{key-ignored}{value} + } +\cs_new_protected:Npn \__pdffield_default_handler:n #1 + { + \msg_info:nnn {pdffield}{key-ignored}{default} + } +\keys_define:nn {pdffield} + { + value .code:n = { \__pdffield_value_handler:n {#1} } + ,default .code:n = { \__pdffield_default_handler:n {#1}} + } +%% File: l3pdfpdffield-checkbox.dtx +\cs_new_protected:Npn \__pdffield_checkbox_default_appearances: + { + \pdffield_appearance:nn {pdffield/checkbox/default/Yes} + { + \normalsize + \fboxsep 0pt + \framebox + [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ] + { \texttimes \strut } + } + \pdffield_appearance:nn {pdffield/checkbox/default/Off} + { + \normalsize + \fboxsep 0pt + \framebox + [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ] + { \phantom{\texttimes} \strut } + } + \cs_gset_eq:NN \__pdffield_checkbox_default_appearances: \prg_do_nothing: + } +\cs_new_protected:Npn \__pdffield_checkbox_field:n #1 %name + { + \pdf_object_if_exist:nF {__pdffield/field/__pdffield/checkbox/#1} + { + \__pdffield_field:n { __pdffield/checkbox/#1 } + } + \keys_set:nn {pdffield}{parent=__pdffield/checkbox/#1} + } +\cs_generate_variant:Nn \__pdffield_checkbox_field:n {V} +\cs_new_protected:Npn \__pdffield_checkbox:n #1 + { + \group_begin: + \__pdffield_checkbox_default_appearances: + \cs_set_eq:NN\__pdffield_appearance_handler:nnn \__pdffield_checkbox_appearance_handler:nnn + \cs_set_eq:NN\__pdffield_value_handler:n \__pdffield_checkbox_value_handler:n + \cs_set_eq:NN\__pdffield_default_handler:n \__pdffield_checkbox_default_handler:n + \keys_set:nn {pdffield} + { + fieldID=, + name=checkbox, + appearance = pdffield/checkbox/default, + checked=false, + width = \normalbaselineskip, + height = \normalbaselineskip, + } + \__pdffield_key_disable:nnn{checkbox}{V}{checked} + \__pdffield_key_disable:nnn{checkbox}{DV}{checked} + \__pdffield_key_disable:nnn{checkbox}{AS}{checked} + \keys_set:nn { pdffield }{__pdffield/preset/checkbox,#1} + \keys_set:nn { pdffield } + { + ,unsetFf={Radio,Pushbutton} + ,FT= Btn + } + \tl_if_empty:NT\l__pdffield_fieldID_tl + { + \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl + \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/checkbox/} + } + \__pdffield_checkbox_field:V\l__pdffield_fieldID_tl + \__pdffield_annot: + \group_end: + } +\keys_define:nn { pdffield } + { + ,checked .choice: + ,checked / false .code:n = + { + \pdfdict_put:nnx { l__pdffield/field }{V} { /Off } + \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Off } + \pdfannot_dict_put:nnn {widget}{AS}{ /Off } + } + ,checked / true .code:n = + { + \pdfdict_put:nnx { l__pdffield/field }{V} { /Yes } + \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Yes } + \pdfannot_dict_put:nnn {widget}{AS}{ /Yes } + } + ,checked .default:n = {true} + ,checked .groups:n = {checkbox} + } +\keys_define:nn { pdffield } + { + ,__value .choice: + ,__value / Off .code:n = + { + \pdfdict_put:nnx { l__pdffield/field }{V} { /Off } + \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Off } + \pdfannot_dict_put:nnn {widget}{AS}{ /Off } + } + ,__value / Yes .code:n = + { + \pdfdict_put:nnx { l__pdffield/field }{V} { /Yes } + \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Yes } + \pdfannot_dict_put:nnn {widget}{AS}{ /Yes } + } + } +\cs_new_protected:Npn \__pdffield_checkbox_value_handler:n #1 + { + \keys_set:nn{pdffield}{__value={#1}} + } +\cs_new_protected:Npn \__pdffield_checkbox_default_handler:n #1 + { + \keys_set:nn{pdffield}{__value={#1}} + } +\cs_new_protected:Npn \__pdffield_checkbox_appearance_handler:nnn #1 #2 #3 %name, type, text + { + \pdfxform_if_exist:nTF { #1/Yes } + { + \pdf_object_if_exist:nF {__pdffield/checkbox/AP/#1} + { + \pdf_object_new:nn {__pdffield/checkbox/AP/#1}{dict} + \pdf_object_write:nx + {__pdffield/checkbox/AP/#1} + { + /Yes ~ \pdfxform_ref:n { #1/Yes} + /Off ~ \pdfxform_ref:n { #1/Off} + } + } + \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdf_object_ref:n{__pdffield/checkbox/AP/#1}} + } + { + \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3} + } + } + +\cs_set_eq:NN \pdffield_checkbox:n \__pdffield_checkbox:n + +%% File: l3pdfpdffield-radiobutton.dtx +\RequirePackage{l3draw} +\tl_new:N \l__pdffield_radio_value_tl +\bool_new:N \l__pdffield_radio_default_bool +\int_new:N \l__pdffield_radio_value_num_int +\tl_new:N \l__pdffield_radio_appearance_code_tl +\bool_new:N \l__pdffield_radio_unison_bool % if true use same name (e.g. /1) for same value +\bool_set_true:N \l__pdffield_radio_unison_bool +\cs_new_protected:Npn \__pdffield_radio_default_appearances: + { + \pdffield_appearance:nn {pdffield/radio/default/Yes} + { + \normalsize + \draw_begin: + \draw_path_circle:nn {0pt,0pt}{0.5\normalbaselineskip} + \draw_path_use_clear:n { stroke } + \draw_path_circle:nn {0pt,0pt}{0.2\normalbaselineskip} + \draw_path_use_clear:n { fill } + \draw_end: + } + \pdffield_appearance:nn {pdffield/radio/default/Off} + { + \normalsize + \draw_begin: + \draw_path_circle:nn {0pt,0pt}{0.5\normalbaselineskip} + \draw_path_use_clear:n { stroke } + \draw_end: + } + + \pdffield_appearance:nn {pdffield/radio/defaultdown/Yes} + { + \normalsize + \draw_begin: + \draw_path_circle:nn {0pt,0pt}{0.5\normalbaselineskip} + \draw_path_use_clear:n { stroke } + \draw_path_circle:nn {0pt,0pt}{0.25\normalbaselineskip} + \draw_path_use_clear:n { fill } + \draw_end: + } + \pdffield_appearance:nn {pdffield/radio/defaultdown/Off} + { + \normalsize + \draw_begin: + \draw_path_circle:nn {0pt,0pt}{0.5\normalbaselineskip} + \draw_path_use_clear:n { stroke } + \draw_path_circle:nn {0pt,0pt}{0.25\normalbaselineskip} + \draw_path_use_clear:n { fill } + \draw_end: + } + \cs_gset_eq:NN \__pdffield_radio_default_appearances: \prg_do_nothing: + } +\ref_attribute_gset:nnnn {pdfradioindex}{0}{now} + { + \int_use:N\l__pdffield_radio_value_num_int + } +\cs_generate_variant:Nn \ref_label:nn {V} +\cs_generate_variant:Nn \ref_value:nn {V} +\cs_new_protected:Npn \__pdffield_radio_field:n #1 %name + { + \pdf_object_if_exist:nF {__pdffield/field/__pdffield/radio/#1} + { + \pdf_object_new:nn {__pdffield/field/__pdffield/radio-Opt/#1}{array} + \pdfdict_put:nnx { l__pdffield/field }{Opt} { \pdf_object_ref:n {__pdffield/field/__pdffield/radio-Opt/#1} } + \seq_new:c { g__pdffield_radio_opt_#1_seq } + \hook_gput_code:nnn {shipout/lastpage}{pdffield/radio} + { + \pdf_object_write:nx + {__pdffield/field/__pdffield/radio-Opt/#1} + {\seq_use:cn {g__pdffield_radio_opt_#1_seq}{~}} + } + \pdfdict_put:nnx { l__pdffield/field }{V} { /\ref_value:nn{#1}{pdfradioindex} } + \pdfdict_put:nnx { l__pdffield/field }{DV} { /\ref_value:nn{#1}{pdfradioindex} } + \__pdffield_field:n { __pdffield/radio/#1 } + \bool_if:NF \l__pdffield_radio_unison_bool + { + \cs_new:cpn {g__pdffield_radio_unison_state_#1_tl} + { + \bool_set_false:N \l__pdffield_radio_unison_bool + } + } + } + \keys_set:nn {pdffield}{parent=__pdffield/radio/#1} + } +\cs_generate_variant:Nn \__pdffield_radio_field:n {V} +\cs_new_protected:Npn \__pdffield_radio:n #1 + { + \group_begin: + \cs_set_eq:NN\__pdffield_appearance_handler:nnn \__pdffield_radio_appearance_handler:nnn + \cs_set_eq:NN\__pdffield_value_handler:n \__pdffield_radio_value_handler:n + \cs_set_eq:NN\__pdffield_default_handler:n \__pdffield_radio_default_handler:n + \tl_set:Nn\l__pdffield_radio_appearance_code_tl{} + \bool_set_false:N\l__pdffield_radio_default_bool + \keys_set:nn {pdffield} + { + fieldID= + ,name=radio + ,width = \normalbaselineskip + ,height = \normalbaselineskip + ,inunison + ,__pdffield/preset/radiobutton + ,#1 + ,unsetFf={Pushbutton} + ,setFf={Radio} + ,FT= Btn + } + \tl_if_empty:NT\l__pdffield_fieldID_tl + { + \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl + \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/radio/} + } + \cs_if_exist_use:c {g__pdffield_radio_unison_state_ \l__pdffield_fieldID_tl _tl} + \__pdffield_radio_field:V\l__pdffield_fieldID_tl + \seq_gput_right:cV { g__pdffield_radio_opt_ \l__pdffield_fieldID_tl _seq }\l__pdffield_radio_value_tl + \bool_if:NTF \l__pdffield_radio_unison_bool + { + \int_zero:N \l__pdffield_radio_value_num_int + \exp_args:Nc + \seq_map_inline:Nn { g__pdffield_radio_opt_ \l__pdffield_fieldID_tl _seq } + { + \str_if_eq:nVTF { ##1 } \l__pdffield_radio_value_tl + { + \seq_map_break: + } + { + \int_incr:N \l__pdffield_radio_value_num_int + } + } + } + { + \int_set:Nn \l__pdffield_radio_value_num_int + {\seq_count:c { g__pdffield_radio_opt_ \l__pdffield_fieldID_tl _seq } -1 } + } + \bool_if:NT\l__pdffield_radio_default_bool + { + \exp_args:Ne + \ref_label:nn{\l__pdffield_fieldID_tl}{pdfradioindex} + } + + \int_compare:nNnTF { \l__pdffield_radio_value_num_int } = + { + \ref_value:Vn\l__pdffield_fieldID_tl{pdfradioindex} + } + { \pdfannot_dict_put:nnx {widget}{AS}{/\ref_value:Vn\l__pdffield_fieldID_tl{pdfradioindex}} } + { \pdfannot_dict_put:nnx {widget}{AS}{/Off} } + \tl_if_empty:NT\l__pdffield_radio_appearance_code_tl + { + \__pdffield_radio_default_appearances: + \keys_set:nn {pdffield} + { + appearance = pdffield/radio/default, + down-appearance = pdffield/radio/defaultdown, + } + } + \l__pdffield_radio_appearance_code_tl + \__pdffield_annot: + \group_end: + } +\cs_new_protected:Npn \__pdffield_radio_value_handler:n #1 + { + \pdf_string_from_unicode:nnN {utf16/string}{#1}\l__pdffield_radio_value_tl + } +\cs_new_protected:Npn \__pdffield_radio_default_handler:n #1 + { + %\pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_radio_default_tl + \bool_set_true:N \l__pdffield_radio_default_bool + } +\keys_define:nn { pdffield } + { + group .meta:n = {T=#1} + } +\keys_define:nn { pdffield } + { + inunison .choice: + ,inunison / true .code:n = + { + \bool_set_true:N \l__pdffield_radio_unison_bool + \bitset_set_true:Nn \l__pdffield_Ff_bitset {RadiosInUnison} + } + ,inunison / false .code:n = + { + \bool_set_false:N \l__pdffield_radio_unison_bool + \bitset_set_false:Nn \l__pdffield_Ff_bitset {RadiosInUnison} + } + ,inunison .default:n = {true} + } +\cs_new_protected:Npn \__pdffield_radio_appearance_handler:nnn #1 #2 #3 %name, type, text + { + \tl_put_right:Nn \l__pdffield_radio_appearance_code_tl + { + \pdfxform_if_exist:nTF { #1 / Yes } + { + \pdf_object_unnamed_write:nx + {dict} + { + /\int_use:N \l__pdffield_radio_value_num_int + \c_space_tl \pdfxform_ref:n { #1/Yes} + /Off ~ \pdfxform_ref:n { #1/Off} + } + \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdf_object_ref_last:} + } + { + \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3} + } + } + } + +\cs_set_eq:NN \pdffield_radio:n \__pdffield_radio:n +%% File: l3pdfpdffield-textfield.dtx + +\tl_new:N \l__pdffield_DA_fontcolor_tl +\dim_new:N \l__pdffield_DA_fontsize_dim +\tl_new:N \l__pdffield_DA_fontname_tl +\cs_new_protected:Npn {\__pdffield_textfield_default_appearance:} + { + \pdffield_appearance:nn {pdffield/textfield/default} + { + { \color_select:n{black!5!white}\rule{\paperwidth}{\paperheight} } + } + \cs_gset_eq:NN \__pdffield_textfield_default_appearance: \prg_do_nothing: + } +\cs_new_protected:Npn \__pdffield_textfield_field:n #1 %name + { + \pdf_object_if_exist:nF {__pdffield/field/__pdffield/textfield/#1} + { + \__pdffield_field:n { __pdffield/textfield/#1 } + } + \keys_set:nn {pdffield}{parent=__pdffield/textfield/#1} + } +\cs_generate_variant:Nn \__pdffield_textfield_field:n {V} +\cs_new_protected:Npn \__pdffield_textfield:n #1 + { + \group_begin: + \cs_set_eq:NN\__pdffield_V_handler:nN \__pdffield_textfield_V_handler:nN + \cs_set_eq:NN\__pdffield_value_handler:n \__pdffield_textfield_value_handler:n + \cs_set_eq:NN\__pdffield_default_handler:n \__pdffield_textfield_default_handler:n + \__pdffield_textfield_default_appearance: + \keys_set:nn {pdffield} + { + ,fieldID= + ,name=textfield + ,appearance = pdffield/textfield/default + ,width = 3cm + ,fontsize= \f@size pt + ,height = \f@size pt, + depth = \fp_eval:n {0.3*\f@size} pt, + % font defaults!! + } + \keys_set:nn { pdffield }{__pdffield/preset/textfield,#1} + \int_compare:nNnT {\bitset_item:Nn \l__pdffield_Ff_bitset {Comb}}={1} + { + % warning if set? + \keys_set:nn { pdffield } + { + ,unsetFf={FileSelect,Multiline,Password} + } + \pdfdict_get:nnN {l__pdffield/field}{MaxLen}\l__pdffield_tmpa_tl + \quark_if_no_value:NT \l__pdffield_tmpa_tl + { + \keys_set:nn { pdffield} + { + MaxLen = 10 %variable + } + % warning + } + } + \keys_set:nn { pdffield } + { + ,FT= Tx + ,AS= + ,DA= + { + \pdf_name_from_unicode_e:n{\l__pdffield_DA_fontname_tl} + \c_space_tl + \dim_to_decimal_in_bp:n{\l__pdffield_DA_fontsize_dim} + \c_space_tl + Tf + \c_space_tl + \l__pdffield_DA_fontcolor_tl + \c_space_tl + %\l__pdffield_text_DAextra_tl + } + } + \tl_if_empty:NT\l__pdffield_fieldID_tl + { + \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl + \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/textfield/} + } + \__pdffield_textfield_field:V\l__pdffield_fieldID_tl + \__pdffield_annot: + \group_end: + } +\keys_define:nn {pdffield} + { + ,fontcolor .code:n = + { + \__pdffield_color_set:nn {__pdffield/tmp}{#1} + \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_DA_fontcolor_tl + \tl_put_right:Nn \l__pdffield_DA_fontcolor_tl{~rg} + } + ,fontcolor .initial:n = black, + ,fontcolor .groups:n = {textfield} + ,font .tl_set:N = \l__pdffield_DA_fontname_tl + ,font .initial:n = {Helv} + ,font .groups:n = {textfield} + ,fontsize .dim_set:N = \l__pdffield_DA_fontsize_dim + ,fontsize .initial:n = {10bp} + ,fontsize .groups:n = {textfield} + } +\cs_new_protected:Npn \__pdffield_textfield_V_handler:nN #1#2 + { + \pdf_string_from_unicode:nnN {utf16/hex}{#1}#2 + } +\cs_new_protected:Npn \__pdffield_textfield_value_handler:n #1 + { + \keys_set:nn{pdffield}{V={#1}} + } +\cs_new_protected:Npn \__pdffield_textfield_default_handler:n #1 + { + \keys_set:nn{pdffield}{DV={#1}} + } +\cs_set_eq:NN \pdffield_textfield:n \__pdffield_textfield:n +%% File: l3pdfpdffield-pushbutton.dtx +\tl_new:N \l__pdffield_pushbutton_appearance_code_tl +\dim_new:N \l__pdffield_pushbutton_linewidth_dim +\dim_new:N \l__pdffield_pushbutton_totalht_dim +\int_new:N \g__pdffield_pushbutton_cnt_int +\dim_set:Nn \l__pdffield_pushbutton_linewidth_dim {0.4pt} +\color_set:nn {pdffield/push/text}{black} +\color_set:nn {pdffield/push/border}{black!95!white} +\color_set:nn {pdffield/push/bordertop}{yellow!5!white} +\color_set:nn {pdffield/push/borderbot}{black!50!white} +\color_set:nn {pdffield/push/fill}{black!20!white} + +\cs_new_protected:Npn \__pdffield_pushbutton_default_appearances: + { + \int_gincr:N \g__pdffield_pushbutton_cnt_int + \exp_args:Nx + \pdffield_appearance:nn {pdffield/pushbutton/default-\int_use:N \g__pdffield_pushbutton_cnt_int} + { + \draw_begin: + \color_set:nn {pdffield/push/text}{.} + \dim_set:Nn \l__pdffield_pushbutton_totalht_dim + {\l__pdffield_annot_ht_dim + \l__pdffield_annot_dp_dim} + \draw_linewidth:n {\l__pdffield_pushbutton_linewidth_dim} + \draw_path_rectangle_corners:nn + {0.5\l__pdffield_pushbutton_linewidth_dim,0.5\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-0.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-0.5\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/border} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + {2\l__pdffield_pushbutton_linewidth_dim,2\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/bordertop} + \draw_path_use_clear:n { fill } + \draw_path_moveto:n + { + 2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + {5\l__pdffield_pushbutton_linewidth_dim,5\l__pdffield_pushbutton_linewidth_dim} + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-5\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_close: + \color_fill:n {pdffield/push/borderbot} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + { + 1.5\l__pdffield_pushbutton_linewidth_dim, + 1.5\l__pdffield_pushbutton_linewidth_dim + } + { + \l__pdffield_annot_wd_dim-1.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-1.5\l__pdffield_pushbutton_linewidth_dim + } + \color_stroke:n {pdffield/push/border} + \draw_path_use_clear:n { stroke } + \draw_path_rectangle_corners:nn + {4\l__pdffield_pushbutton_linewidth_dim,4\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-4\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-4\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/fill} + \draw_path_use_clear:n { fill } + \color_fill:n {pdffield/push/text} + \draw_transform_shift:n + {0.5 \l__pdffield_annot_wd_dim, \l__pdffield_annot_dp_dim } + \hbox_set:Nn \l_tmpa_box { \makebox[0pt]{\l__pdffield_caption_tl} } + \draw_box_use:N \l_tmpa_box + \draw_end: + } + \exp_args:Nx + \pdffield_appearance:nn {pdffield/pushbutton/defaultrollover-\int_use:N \g__pdffield_pushbutton_cnt_int} + { + \draw_begin: + \dim_set:Nn \l__pdffield_pushbutton_totalht_dim + {\l__pdffield_annot_ht_dim + \l__pdffield_annot_dp_dim} + \draw_linewidth:n {\l__pdffield_pushbutton_linewidth_dim} + \draw_path_rectangle_corners:nn + {0.5\l__pdffield_pushbutton_linewidth_dim,0.5\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-0.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-0.5\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/border} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + {2\l__pdffield_pushbutton_linewidth_dim,2\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/borderbot} + \draw_path_use_clear:n { fill } + \draw_path_moveto:n + { + 2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + {5\l__pdffield_pushbutton_linewidth_dim,5\l__pdffield_pushbutton_linewidth_dim} + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-5\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_close: + \color_fill:n {pdffield/push/bordertop} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + { + 1.5\l__pdffield_pushbutton_linewidth_dim, + 1.5\l__pdffield_pushbutton_linewidth_dim + } + { + \l__pdffield_annot_wd_dim-1.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-1.5\l__pdffield_pushbutton_linewidth_dim + } + \color_stroke:n {pdffield/push/border} + \draw_path_use_clear:n { stroke } + \draw_path_rectangle_corners:nn + {4\l__pdffield_pushbutton_linewidth_dim,4\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-4\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-4\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/fill} + \draw_path_use_clear:n { fill } + \color_fill:n {pdffield/push/text} + \draw_transform_shift:n + {0.5 \l__pdffield_annot_wd_dim, \l__pdffield_annot_dp_dim } + \hbox_set:Nn \l_tmpa_box { \makebox[0pt]{\l__pdffield_rollover_caption_tl} } + \draw_box_use:N \l_tmpa_box + \draw_end: + } + \exp_args:Nx + \pdffield_appearance:nn {pdffield/pushbutton/defaultdown-\int_use:N \g__pdffield_pushbutton_cnt_int} + { + \draw_begin: + \dim_set:Nn \l__pdffield_pushbutton_totalht_dim + {\l__pdffield_annot_ht_dim + \l__pdffield_annot_dp_dim} + \draw_linewidth:n {\l__pdffield_pushbutton_linewidth_dim} + \draw_path_rectangle_corners:nn + {0.5\l__pdffield_pushbutton_linewidth_dim,0.5\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-0.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-0.5\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/border} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + {2\l__pdffield_pushbutton_linewidth_dim,2\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/borderbot} + \draw_path_use_clear:n { fill } + \draw_path_moveto:n + { + 2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + {5\l__pdffield_pushbutton_linewidth_dim,5\l__pdffield_pushbutton_linewidth_dim} + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-5\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_lineto:n + { + \l__pdffield_annot_wd_dim-2\l__pdffield_pushbutton_linewidth_dim, + 2\l__pdffield_pushbutton_linewidth_dim + } + \draw_path_close: + \color_fill:n {pdffield/push/bordertop} + \draw_path_use_clear:n { fill } + \draw_path_rectangle_corners:nn + { + 1.5\l__pdffield_pushbutton_linewidth_dim, + 1.5\l__pdffield_pushbutton_linewidth_dim + } + { + \l__pdffield_annot_wd_dim-1.5\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-1.5\l__pdffield_pushbutton_linewidth_dim + } + \color_stroke:n {pdffield/push/border} + \draw_path_use_clear:n { stroke } + \draw_path_rectangle_corners:nn + {4\l__pdffield_pushbutton_linewidth_dim,4\l__pdffield_pushbutton_linewidth_dim} + { + \l__pdffield_annot_wd_dim-4\l__pdffield_pushbutton_linewidth_dim, + \l__pdffield_pushbutton_totalht_dim-4\l__pdffield_pushbutton_linewidth_dim + } + \color_fill:n {pdffield/push/fill} + \draw_path_use_clear:n { fill } + \color_fill:n {pdffield/push/text} + \draw_transform_shift:n + {0.5 \l__pdffield_annot_wd_dim, \l__pdffield_annot_dp_dim } + \hbox_set:Nn \l_tmpa_box { \makebox[0pt]{\l__pdffield_down_caption_tl} } + \draw_box_use:N \l_tmpa_box + \draw_end: + } + } +\cs_new_protected:Npn \__pdffield_pushbutton_field:n #1 %name + { + \pdf_object_if_exist:nF {__pdffield/field/__pdffield/pushbutton/#1} + { + \__pdffield_field:n { __pdffield/pushbutton/#1 } + } + \keys_set:nn {pdffield}{parent=__pdffield/pushbutton/#1} + } +\cs_generate_variant:Nn \__pdffield_pushbutton_field:n {V} +\cs_new_protected:Npn \__pdffield_pushbutton:n #1 + { + \group_begin: + \tl_set:Nn\l__pdffield_pushbutton_appearance_code_tl{} + \cs_set_eq:NN\__pdffield_appearance_handler:nnn \__pdffield_pushbutton_appearance_handler:nnn + \keys_set:nn {pdffield} + { + fieldID=, + name=pushbutton, + width = 3cm, + height = 1.05\normalbaselineskip, + depth = 0.45\normalbaselineskip, + } + \keys_set:nn { pdffield }{__pdffield/preset/pushbutton,#1} + \keys_set:nn { pdffield } + { + ,V= + ,DV= + ,setFf={Pushbutton} + ,FT= Btn + } + \tl_if_empty:NT\l__pdffield_fieldID_tl + { + \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl + \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/pushbutton/} + } + \tl_if_empty:NT\l__pdffield_pushbutton_appearance_code_tl + { + \__pdffield_pushbutton_default_appearances: + \exp_args:Nnx + \keys_set:nn {pdffield} + { + appearance = pdffield/pushbutton/default-\int_eval:n{ \g__pdffield_pushbutton_cnt_int}, + down-appearance = pdffield/pushbutton/defaultdown-\int_eval:n{ \g__pdffield_pushbutton_cnt_int}, + rollover-appearance = pdffield/pushbutton/defaultrollover-\int_eval:n{ \g__pdffield_pushbutton_cnt_int}, + } + } + \l__pdffield_pushbutton_appearance_code_tl + \__pdffield_pushbutton_field:V\l__pdffield_fieldID_tl + \__pdffield_annot: + \group_end: + } +\cs_new_protected:Npn \__pdffield_pushbutton_appearance_handler:nnn #1 #2 #3 %name, type, text + { + \tl_put_right:Nn \l__pdffield_pushbutton_appearance_code_tl + { + \pdfxform_if_exist:nTF { #1 } + { + \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdfxform_ref:n{#1}} + } + { + \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3} + } + } + } +\cs_set_eq:NN \pdffield_pushbutton:n \__pdffield_pushbutton:n + +%% File: l3pdfpdffield-choice.dtx + + +\RequirePackage{l3draw} +\seq_new:N \l__pdffield_choice_values_seq +\seq_new:N \l__pdffield_choice_defaultvalues_seq +\seq_new:N \l__pdffield_choice_displayvalues_seq +\seq_new:N \l__pdffield_choice_opt_seq +\cs_new_protected:Npn \__pdffield_choice_field:n #1 %name + { + \pdf_object_if_exist:nF {__pdffield/field/__pdffield/choice/#1} + { + \seq_clear:N \l__pdffield_choice_opt_seq + \seq_map_indexed_inline:Nn \l__pdffield_choice_values_seq + { + \pdf_string_from_unicode:nnN{utf16/hex}{##2}\l__pdffield_tmpa_str + \tl_set:Nx \l__pdffield_tmpa_tl {\seq_item:Nn \l__pdffield_choice_displayvalues_seq {##1} } + \tl_if_empty:NTF \l__pdffield_tmpa_tl + { + \seq_put_right:NV \l__pdffield_choice_opt_seq \l__pdffield_tmpa_str + } + { + \exp_args:NnV + \pdf_string_from_unicode:nnN{utf16/hex}\l__pdffield_tmpa_tl\l__pdffield_tmpb_str + \seq_put_right:Nx \l__pdffield_choice_opt_seq + { [ \l__pdffield_tmpa_str\c_space_tl\l__pdffield_tmpb_str] } + } + } + \pdf_object_unnamed_write:nx {array}{\seq_use:Nn\l__pdffield_choice_opt_seq {~}} + \pdfdict_put:nnx { l__pdffield/field }{Opt} { \pdf_object_ref_last: } + \int_compare:nNnTF {\bitset_item:Nn \l__pdffield_Ff_bitset {MultiSelect}} = {1} + { + \tl_clear:N \l__pdffield_tmpa_tl + \seq_map_inline:Nn \l__pdffield_choice_defaultvalues_seq + { + \pdf_string_from_unicode:nnN{utf16/hex}{##1}\l__pdffield_tmpa_str + \tl_put_right:NV \l__pdffield_tmpa_tl \l__pdffield_tmpa_str + \pdfdict_put:nnx { l__pdffield/field }{V} { [ \l__pdffield_tmpa_tl ] } + } + } + { + \tl_set:Nx \l__pdffield_tmpa_tl {\seq_item:Nn \l__pdffield_choice_defaultvalues_seq {1} } + \exp_args:NnV + \pdf_string_from_unicode:nnN{utf16/hex}\l__pdffield_tmpa_tl\l__pdffield_tmpb_str + \pdfdict_put:nnx { l__pdffield/field }{V} { \l__pdffield_tmpb_str } + } + \__pdffield_field:n { __pdffield/choice/#1 } + } + \keys_set:nn {pdffield}{parent=__pdffield/choice/#1} + } +\cs_generate_variant:Nn \__pdffield_choice_field:n {V} +\cs_new_protected:Npn \__pdffield_choice:n #1 + { + \group_begin: + \cs_set_eq:NN\__pdffield_value_handler:n \__pdffield_choice_value_handler:n + \cs_set_eq:NN\__pdffield_default_handler:n \__pdffield_choice_default_handler:n + \__pdffield_textfield_default_appearance: + \keys_set:nn {pdffield} + { + fieldID= + ,name=choice + ,appearance = pdffield/textfield/default + ,width = 3cm + ,height = \normalbaselineskip + ,type=combo-edit + ,__pdffield/preset/choice + ,#1 + ,FT= Ch + } + \__pdffield_choice_set_type: + \keys_set:nn {pdffield} + { + ,DA= + { + \pdf_name_from_unicode_e:n{\l__pdffield_DA_fontname_tl} + \c_space_tl + \dim_to_decimal_in_bp:n{\l__pdffield_DA_fontsize_dim} + \c_space_tl + Tf + \c_space_tl + \l__pdffield_DA_fontcolor_tl + \c_space_tl + %\l__pdffield_text_DAextra_tl + } + } + \tl_if_empty:NT\l__pdffield_fieldID_tl + { + \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl + \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/choice/} + } + \__pdffield_choice_field:V\l__pdffield_fieldID_tl + \__pdffield_annot: + \group_end: + } +\cs_new_protected:Npn \__pdffield_choice_value_handler:n #1 + { + \seq_set_from_clist:Nn \l__pdffield_choice_values_seq {#1} + } +\cs_new_protected:Npn \__pdffield_choice_default_handler:n #1 + { + \seq_set_from_clist:Nn \l__pdffield_choice_defaultvalues_seq {#1} + } +\keys_define:nn{pdffield} + { + values .meta:n = {value={#1}} + ,default-values .meta:n = {default={#1}} + ,display-values .code:n = + { + \seq_set_from_clist:Nn \l__pdffield_choice_displayvalues_seq {#1} + } + ,top-index .code:n = + { + \pdfdict_put:nnx {l__pdffield/field}{TI}{\int_eval:n{#1-1}} + } + } +\cs_new_protected:Npn \__pdffield_choice_set_type: {} + +\keys_define:nn { pdffield } + { + type .choice: + ,type / combo .code:n = + { + \cs_set_protected:Npn\__pdffield_choice_set_type: + { + \keys_set:nn{pdffield}{setFf={Combo},unsetFf={Edit,DoNotSpellCheck}} + } + } + ,type / combo-edit .code:n = + { + \cs_set_protected:Npn\__pdffield_choice_set_type: + { + \keys_set:nn{pdffield}{setFf={Combo,Edit}} + } + } + ,type / list .code:n = + { + \cs_set_protected:Npn\__pdffield_choice_set_type: + { + \keys_set:nn{pdffield}{unsetFf={Combo,Edit,},unsetFf={Edit,DoNotSpellCheck}} + } + } + } +\cs_new_protected:Npn \__pdffield_choice_appearance_handler:nnn #1 #2 #3 %name, type, text + { + } + +\cs_set_eq:NN \pdffield_choice:n \__pdffield_choice:n +%% File: l3pdfpdffield-action.dtx + +\msg_new:nnn {pdffield}{action-name-undefined} + { + The~'#1'~action~name~'#2'~is~not~defined~and~ + will~be~ignored. + } + +\tl_new:N \l__pdffield_action_export_tl +\seq_new:N \l__pdffield_action_Fields_seq +\tl_new:N \l__pdffield_action_next_tl +\pdfdict_new:n {l__pdffield/ResetForm} +\pdfdict_put:nnn {l__pdffield/ResetForm}{Type}{/Action} +\pdfdict_put:nnn {l__pdffield/ResetForm}{S}{/ResetForm} +\pdfdict_new:n {l__pdffield/SubmitForm} +\pdfdict_put:nnn {l__pdffield/SubmitForm}{Type}{/Action} +\pdfdict_put:nnn {l__pdffield/SubmitForm}{S}{/SubmitForm} +\bitset_new:Nn \l__pdffield_Flags_bitset + { + Include/Exclude = 1 + ,IncludeNoValueFields = 2 + ,ExportFormat = 3 + ,GetMethod = 4 + ,SubmitCoordinates = 5 + ,XFDF = 6 + ,IncludeAppendSaves = 7 + ,IncludeAnnotations = 8 + ,SubmitPDF = 9 + ,CanonicalFormat = 10 + ,ExclNonUserAnnots = 11 + ,ExclFKey = 12 + ,EmbedForm = 14 + ,include/exclude = 1 + ,includenovaluefields = 2 + ,exportformat = 3 + ,getmethod = 4 + ,submitcoordinates = 5 + ,xfdf = 6 + ,includeappendsaves = 7 + ,includeannotations = 8 + ,submitpdf = 9 + ,canonicalformat = 10 + ,exclnonuserannots = 11 + ,exclfkey = 12 + ,embedform = 14 + } +\cs_new_protected:Npn \__pdffield_action_flags_pdf: + { + \bitset_clear:N \l__pdffield_Flags_bitset + \bitset_set_true:Nn \l__pdffield_Flags_bitset { SubmitPDF } + } + +\cs_new_protected:Npn \__pdffield_action_flags_html: + { + \bitset_set_true:Nn \l__pdffield_Flags_bitset { ExportFormat } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { XFDF } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { IncludeAppendSaves } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { IncludeAnnotations } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { SubmitPDF } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExclNonUserAnnots } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExclFKey } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { EmbedForm } + } + +\cs_new_protected:Npn \__pdffield_action_flags_fdf: + { + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExportFormat } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { GetMethod } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { SubmitCoordinates } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { XFDF } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { SubmitPDF } + } + +\cs_new_protected:Npn \__pdffield_action_flags_xfdf: + { + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExportFormat } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { GetMethod } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { SubmitCoordinates } + \bitset_set_true:Nn \l__pdffield_Flags_bitset { XFDF } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { IncludeAppendSaves } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { IncludeAnnotations } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { SubmitPDF } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExclNonUserAnnots } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { ExclFKey } + \bitset_set_false:Nn \l__pdffield_Flags_bitset { EmbedForm } + } +\keys_define:nn { pdffield } + { + reset .code:n = + { + \cs_if_exist:cTF { __pdffield_action_reset_#1: } + { + \use:c { __pdffield_action_reset_#1: } + \pdfannot_dict_put:nnx{widget} + {A} + {\tl_use:c { c__pdffield_action_reset_#1_tl } } + } + { + \msg_warning:nnnn{pdffield}{action-name-undefined}{reset}{#1} + } + } + ,reset .default:n = all + } + +\keys_define:nn { pdffield } + { + submit .code:n = + { + \cs_if_exist:cTF { __pdffield_action_submit_#1: } + { + \use:c { __pdffield_action_submit_#1: } + \pdfannot_dict_put:nnx{widget} + {A} + {\tl_use:c { c__pdffield_action_submit_#1_tl } } + } + { + \msg_warning:nnnn{pdffield}{action-name-undefined}{submit}{#1} + } + } + } + +\keys_define:nn { pdffield } + { + import .code:n = + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str + \pdf_object_unnamed_write:nx {dict}{/Type/Action/S/ImportData/F\l__pdffield_tmpa_str} + \pdfannot_dict_put:nnx{widget} + {A} + {\pdf_object_ref_last: } + } + } + +\keys_define:nn { pdffield / action } + { + fields .code:n = + { + \clist_map_inline:nn {#1} + { + \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdffield_tmpa_str + \seq_put_right:NV\l__pdffield_action_Fields_seq \l__pdffield_tmpa_str + } + } + ,exclude .code:n = { \bitset_set_true:Nn \l__pdffield_Flags_bitset {Include/Exclude }} + ,include .code:n = { \bitset_set_false:Nn \l__pdffield_Flags_bitset {Include/Exclude }} + ,export .choices:nn = {pdf,fdf,html,xfdf} + { + \tl_set:Nn \l__pdffield_action_export_tl {#1} + } + ,export .initial:n = {html} + ,charset .choices:nn = + {utf-8, utf-16, Shift-JIS, BigFive, GBK, UHC} + { \pdfdict_put:nnn { l__pdffield/SubmitForm }{#1} } + ,urlencode .bool_set:N = \l__pdffield_url_encode_bool + ,next .tl_set:N = \l__pdffield_action_next_tl + } +\keys_define:nn { pdffield / action } + { + ,setFlags .code:n = + { + \clist_map_inline:nn {#1} + { + \bitset_set_true:Nn \l__pdffield_Flags_bitset {##1} + } + } + ,setsubmitflags .meta:n = {setFlags={#1}} + ,unsetFlags .multichoice: + ,unsetFlags / all .code:n = { \bitset_clear:N \l__pdffield_Flags_bitset} + ,unsetFlags / unknown .code:n = + { + \bitset_set_false:Nn \l__pdffield_Flags_bitset {#1} + } + ,unsetsubmitflags .meta:n = {unsetFlags={#1}} + } +\cs_new_protected:Npn \__pdffield_action_reset_new:nn #1 #2 %#1 name, #2 keyval + { + \cs_new_protected:cpn {__pdffield_action_reset_#1:} + { + \group_begin: + \seq_clear:N \l__pdffield_action_Fields_seq + \keys_set:nn { pdffield / action }{ #2 } + \pdf_object_unnamed_write:nx + { array } + { \seq_use:Nn \l__pdffield_action_Fields_seq {~} } + \tl_if_empty:NF \l__pdffield_action_next_tl + { + \pdfdict_put:nnx {l__pdffield/ResetForm}{Next}{\l__pdffield_action_next_tl} + } + \pdfdict_put:nnx + { l__pdffield/ResetForm } + { Fields } + { \pdf_object_ref_last: } + \pdfdict_put:nnx + { l__pdffield/ResetForm } + { Flags } + { \bitset_item:Nn\l__pdffield_Flags_bitset{Include/Exclude} } + \pdf_object_unnamed_write:nx + { dict } + { \pdfdict_use:n{l__pdffield/ResetForm} } + \tl_const:cx { c__pdffield_action_reset_#1_tl } { \pdf_object_ref_last: } + \cs_gset_eq:cN {__pdffield_action_reset_#1:} \prg_do_nothing: + \group_end: + } + } + +\__pdffield_action_reset_new:nn {all}{fields={},exclude} +\cs_new_protected:Npn \__pdffield_action_submit_new:nn #1 #2 %#1 name, #2 keyval + { + \group_begin: + \char_set_catcode_other:N \% + \char_set_catcode_other:N \# + \__pdffield_action_submit_new:nnn {#1}{#2} + } +\cs_new_protected:Npn \__pdffield_action_submit_new:nnn #1 #2 #3 %#1 name, #2 keyval, #3 url + { + \group_end: + \cs_new_protected:cpn {__pdffield_action_submit_#1:} + { + \group_begin: + \seq_clear:N \l__pdffield_action_Fields_seq + \bitset_clear:N \l__pdffield_Flags_bitset + \keys_set:nn {pdffield/action}{#2} + \use:c{ __pdffield_action_flags_\l__pdffield_action_export_tl :} + \pdfdict_put:nnx + { l__pdffield/SubmitForm } + { Flags } + { \bitset_to_arabic:N \l__pdffield_Flags_bitset } + \tl_if_empty:NF \l__pdffield_action_next_tl + { + \pdfdict_put:nnx {l__pdffield/SubmitForm}{Next}{\l__pdffield_action_next_tl} + } + \bool_if:NTF \l__pdffield_url_encode_bool + { \pdf_string_from_unicode:nnN { utf8/URI } {#3}\l__pdffield_tmpa_str } + { \pdf_string_from_unicode:nnN { utf8/string }{#3}\l__pdffield_tmpa_str } + \pdf_object_unnamed_write:nx {dict} + { + /FS/URL + /F \l__pdffield_tmpa_str + } + \pdfdict_put:nnx + { l__pdffield/SubmitForm } + { F } + { \pdf_object_ref_last: } + \pdf_object_unnamed_write:nx + { dict } + { \pdfdict_use:n{ l__pdffield/SubmitForm } } + \tl_const:cx { c__pdffield_action_submit_#1_tl } { \pdf_object_ref_last: } + \cs_gset_eq:cN { __pdffield_action_submit_#1: } \prg_do_nothing: + \group_end: + } + } + +\cs_set_eq:NN \pdffield_reset_new:nn \__pdffield_action_reset_new:nn +\cs_set_eq:NN \pdffield_submit_new:nnn \__pdffield_action_submit_new:nn + +%% +%% +%% End of file `l3pdffield-testphase.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/l3ref-tmp.sty b/texmf/tex/latex/pdfmanagement-testphase/l3ref-tmp.sty new file mode 100644 index 000000000..f5d2a8ba3 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/l3ref-tmp.sty @@ -0,0 +1,124 @@ +%% This is file `l3ref-tmp.sty', +%% +%% Copyright (C) 2020-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This file is a tmp file in place of a future kernel module +%% and subject to change without notice. +%% +\ProvidesExplPackage{l3ref-tmp}{2021-06-23}{} + {L3 Experimental cross-referencing} +\cs_new_protected:Npn \ref_attribute_gset:nnnn #1#2#3#4 + { + \exp_args:Nx \__ref_attribute_gset:nnnn { \tl_to_str:n {#1} } + {#2} {#3} {#4} + } +\cs_new_protected:Npn \__ref_attribute_gset:nnnn #1#2#3#4 + { + \cs_gset:cpn { __ref_attribute_ #1 : } {#4} + \tl_gclear_new:c { g__ref_default_ #1 _tl } + \tl_gset:cn { g__ref_default_ #1 _tl } {#2} + \bool_if_exist:cF { g__ref_shipout_ #1 _tl } + { \bool_new:c { g__ref_shipout_ #1 _tl } } + \str_case:nnF {#3} + { + { now } { { \bool_gset_false:c { g__ref_shipout_ #1 _tl } } } + { shipout } + { \bool_gset_true:c { g__ref_shipout_ #1 _tl } } + } + { \msg_error:nnnn { ref } { unknown-setpoint } {#1} {#3} } + } +\cs_new_protected:Npn \ref_label:nN #1#2 + { \ref_label:nV {#1} #2 } +\cs_new_protected:Npn \ref_label:nn #1#2 + { \exp_args:Nx \__ref_label:nn { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \ref_label:nn { nV } +\cs_new_protected:Npn \__ref_label:nn #1#2 + { + \legacy_if:nT { @filesw } + { + \iow_shipout_x:Nx \@auxout + { + \token_to_str:N \newlabeldata + {#1} + { \clist_map_function:nN {#2} \__ref_label_attribute:n } + } + } + } +\cs_new:Npn \__ref_label_attribute:n #1 + { \exp_args:Ne \__ref_label_attribute_aux:n { \tl_to_str:n {#1} } } +\cs_new:Npn \__ref_label_attribute_aux:n #1 + { + \cs_if_exist:cTF { __ref_attribute_ #1 : } + { + {#1} + { + \bool_if:cTF { g__ref_shipout_ #1 _tl } + { \exp_not:c } + { \use:c } + { __ref_attribute_ #1 : } + } + } + { \msg_expandable_error:nnn { ref } { attribute-not-defined } {#1} } + } +\cs_new:Npn \ref_value:nn #1#2 + { + \exp_args:Nee \__ref_value:nn { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } + } +\cs_new:Npn \__ref_value:nn #1#2 + { + \tl_if_exist:cTF { g__ref_label_ #1 _ #2 _tl } + { \tl_use:c { g__ref_label_ #1 _ #2 _tl } } + { + \tl_if_exist:cTF { g__ref_default_ #2 _tl } + { \tl_use:c { g__ref_default_ #2 _tl } } + { \exp_not:n { \textbf { ?? } } } + } + } +\prg_new_conditional:Npnn \ref_if_exist:nn #1#2 { p , T , F, TF } % #1 label #2 attribute + { + \tl_if_exist:cTF { g__ref_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\cs_new_protected:Npn \newlabeldata #1#2 + { + \__ref_data:nnn {#1} #2 { \q_recursion_tail } { ? } \q_recursion_stop + } +\cs_new_protected:Npn \__ref_data:nnn #1#2#3 + { + \quark_if_recursion_tail_stop:n {#2} + \tl_gclear_new:c { g__ref_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + \tl_gset:cn { g__ref_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } {#3} + \__ref_data:nnn {#1} + } +\ref_attribute_gset:nnnn { abspage } { 0 } { shipout } + { \int_use:N \g_shipout_readonly_int } +\ref_attribute_gset:nnnn { page } { 0 } { shipout } { \thepage } +\clist_new:N \g_ref_main_clist +\clist_gput_right:Nn \g_ref_main_clist { page } +\msg_new:nnnn { ref } { attribute-not-defined } + { Attribute~'#1'~not~defined. } + { + LaTeX~has~been~asked~to~use~attribute~'#1',~but~this~ + name~has~not~been~defined. + } +\msg_new:nnnn { ref } { unknown-setpoint } + { Unknown~keyword~'#3'~for~setting~attribute~'#1'. } + { + LaTeX~has~been~asked~to~set~the~attribute~'#1',~but~the~keyword~ + '#3'~is~not~one~of~the~two~known~values:~'now'~or~'shipout'. + } +%% +%% +%% End of file `l3ref.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/luaotfload-l3color-tmp.lua b/texmf/tex/latex/pdfmanagement-testphase/luaotfload-l3color-tmp.lua new file mode 100644 index 000000000..1d4eab4de --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/luaotfload-l3color-tmp.lua @@ -0,0 +1,78 @@ +if not luaotfload.set_transparent_colorstack then return end +local l = lpeg +local spaces = l.P' '^0 +local digit16 = l.R('09', 'af', 'AF') + +local octet = digit16 * digit16 / function(s) return string.format('%.3g ', tonumber(s, 16) / 255) end +local htmlcolor = l.Cs(octet * octet * octet * -1 * l.Cc'rg') +local color_export = { + token.create'endlocalcontrol', + token.create'tex_hpack:D', + token.new(0, 1), + token.create'color_export:nnN', + token.new(0, 1), + '', + token.new(0, 2), + token.new(0, 1), + 'backend', + token.new(0, 2), + token.create'l_tmpa_tl', + token.create'exp_after:wN', + token.create'__color_select:nn', + token.create'l_tmpa_tl', + token.new(0, 2), +} +local group_end = token.create'group_end:' +local value = (1 - l.P'}')^0 +luatexbase.add_to_callback('luaotfload.parse_color', function (value) + local html = htmlcolor:match(value) + if html then return html end + + tex.runtoks(function() + token.get_next() + color_export[6] = value + tex.sprint(-2, color_export) + end) + local list = token.scan_list() + if not list.head or list.head.next or list.head.subtype ~= node.subtype'pdf_colorstack' then + error'Unexpected backend behavior' + end + local cmd = list.head.data + node.free(list) + return cmd +end, 'l3color') + +-- Let's also integrate l3opacity + +luaotfload.set_transparent_colorstack(token.create'c__opacity_backend_stack_int'.index) + +local transparent_register = { + token.create'pdfmanagement_add:nnn', + token.new(0, 1), + 'Page/Resources/ExtGState', + token.new(0, 2), + token.new(0, 1), + '', + token.new(0, 2), + token.new(0, 1), + '<>', + token.new(0, 2), +} +luatexbase.add_to_callback('luaotfload.parse_transparent', function(value) + value = (octet * -1):match(value) + if not value then + tex.error'Invalid transparency value' + return + end + value = value:sub(1, -2) + local result = 'opacity' .. value + tex.runtoks(function() + transparent_register[6], transparent_register[10], transparent_register[12] = result, value, value + tex.sprint(-2, transparent_register) + end) + return '/' .. result .. ' gs' +end, 'l3opacity') diff --git a/texmf/tex/latex/pdfmanagement-testphase/output-patches-tmp-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/output-patches-tmp-ltx.sty new file mode 100644 index 000000000..d95056d22 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/output-patches-tmp-ltx.sty @@ -0,0 +1,73 @@ +%% +%% This is file `output-patches-tmp-ltx.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% output-patches-tmp-ltx.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: output-patches.dtx (C) Copyright 2020-2021 Frank Mittelbach +\ProvidesPackage{output-patches-tmp-ltx} + [2021-08-20 v0.95 Temporary patches of output commands] +\RequirePackage{etoolbox} +\providecommand\@kernel@before@head{} +\providecommand\@kernel@before@foot{} +\providecommand\@kernel@after@head{} +\providecommand\@kernel@after@foot{} +\providecommand\@mult@ptagging@hook{}% multicol + +\patchcmd\@outputpage + {\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox} + {\vfil\@kernel@before@head\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox\@kernel@after@head} + {\typeout{Patching header in \string\@outputpage}}{\PATCHerror } + +\patchcmd\@outputpage + {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox} + {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot} + {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror } +\@ifpackageloaded{latex-lab-testphase-new-or} + {} + { + \providecommand\@kernel@before@footins{} + \providecommand\@kernel@before@cclv{} + + \patchcmd\@makecol + {\vskip\skip\footins} + {\vskip\skip\footins\@kernel@before@footins} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } + + + \pretocmd\@makecol{\@kernel@before@cclv} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } + } +\AddToHook{package/multicol/after} + {% multicol needs later loading + \patchcmd\page@sofar + {\setbox\z@\hbox{p}\global\dimen\tw@\dp\z@}% + {% + \setbox\z@\hbox{p}\global\dimen\tw@\dp\z@ + \@mult@ptagging@hook + }% + {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}% +} +\ExplSyntaxOn +\def\@kernel@before@head{\pdfannot_link_off:} +\def\@kernel@before@foot{\pdfannot_link_off:} +\def\@kernel@after@head {\pdfannot_link_on:} +\def\@kernel@after@foot {\pdfannot_link_on:} +\ExplSyntaxOff +%% +%% +%% End of file `output-patches-tmp-ltx.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty new file mode 100644 index 000000000..1cefb7112 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty @@ -0,0 +1,54 @@ +%% +%% This is file `pdflscape-ltx.sty', +%% +%% Copyright (C) 2021 The LaTeX Project +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% https://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainers of this work are +%% The LaTeX Project +%% +%% +%% This work consists of the main source file pdflscape-ltx.sty +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesExplPackage{pdflscape-ltx}{2022-08-24}{0.95r} + {Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)} + +\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} +\ProcessOptions +\RequirePackage{lscape} +% this always turns in the same direction as pdflscape does too. +% left and right would need +% \pdfmanagement_add:nnn{ThisPage}{Rotate}{..} +% on every page (e.g. in a shipout hook) and some option to control the wanted +% orientation. + +\tl_new:N\g__pdflscape_saverotate_tl +\hook_gput_code:nnn {env/landscape/begin}{pdflscape} + { + \pdfmanagement_get:nnN {Page}{Rotate}\l_tmpa_tl + \tl_gset_eq:NN\g__pdflscape_saverotate_tl\l_tmpa_tl + \clearpage + \pdfmanagement_add:nnn{Page}{Rotate}{90} + } +\hook_gput_code:nnn {env/landscape/after}{pdflscape} + { + \quark_if_no_value:NTF\g__pdflscape_saverotate_tl + {\pdfmanagement_remove:nn{Page}{Rotate}} + {\pdfmanagement_add:nnx{Page}{Rotate}{\g__pdflscape_saverotate_tl}} + } + +\endinput +%% +%% End of file `pdflscape-ltx.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty new file mode 100644 index 000000000..be55fe9a7 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty @@ -0,0 +1,192 @@ +%% +%% This is file `pdfmanagement-firstaid.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pdfmanagement-firstaid.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: pdfmanagement-firstaid.dtx +\ProvidesExplPackage{pdfmanagement-firstaid}{2022-08-24}{0.95r} + {LaTeX PDF management testphase bundle / firstaid-patches} + +\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color,beamer,output,colorspace,fontspec} + { + \bool_new:c { g__pdfmanagement_firstaid_#1_bool } + \bool_gset_true:c { g__pdfmanagement_firstaid_#1_bool } + } +\clist_map_inline:Nn \g__pdfmanagement_firstaidoff_clist + { + \bool_if_exist:cT { g__pdfmanagement_firstaid_#1_bool } + { + \bool_gset_false:c { g__pdfmanagement_firstaid_#1_bool } + } + } +\msg_new:nnn { pdfmanagement } { firstaid } + { loading~pdfmanagement~firstaid~code~for~#1 } +\msg_new:nnn { pdfmanagement } { firstaid-changed } + { package~#1~has~changed.~Check~if~patch~is~still~valid! } +\sys_if_engine_luatex:T + { + \lua_now:n + { + if~not~luaotfload.set_transparent_colorstack~ + then~ + tex.print("\\bool_gset_false:N\\g__pdfmanagement_firstaid_fontspec_bool")~ + end + } + \bool_if:NT \g__pdfmanagement_firstaid_fontspec_bool + { + \msg_info:nnn{pdfmanagement}{firstaid}{fontspec} + \file_if_exist:nT { luaotfload-l3color-tmp.lua } + { + \lua_load_module:n { luaotfload-l3color-tmp.lua } + } + + \declare@file@substitution{fontspec-luatex.sty}{fontspec-luatex-tmp-ltx.sty} + \AddToHook{package/fontspec/after} + { + \str_if_eq:vnF{ver@fontspec.sty}{2022/01/15~v2.8a~Font~selection~for~XeLaTeX~and~LuaLaTeX} + {\msg_warn:nnn{pdfmanagement}{firstaid-changed}{fontspec}} + } + } + } +\bool_if:NT \g__pdfmanagement_firstaid_output_bool + { + \RequirePackage{output-patches-tmp-ltx} + } + +\bool_if:NT \g__pdfmanagement_firstaid_beamer_bool + { + \color_set:nnn{.5~.5~.5}{rgb}{0.5,0.5,0.5} + } +\bool_if:NT \g__pdfmanagement_firstaid_color_bool + { + \declare@file@substitution{color.sty}{color-ltx.sty} + } +\bool_if:NT \g__pdfmanagement_firstaid_xcolor_bool + { + \AddToHook + { + package/xcolor/after + } + {\RequirePackage{xcolor-patches-tmp-ltx}} + } + +\bool_if:NT \g__pdfmanagement_firstaid_pgf_bool + { + \msg_info:nnn{pdfmanagement }{firstaid}{pgf} + \AddToHook + { + file/pgfrcs.sty/after + } + { + \cs_set_eq:NN + \__pdfmanagement_pgfori_pgfutil@setuppdfresources + \pgfutil@setuppdfresources + \def\pgfutil@setuppdfresources + { + \pdfmanagement_if_active:TF + { + \__pdfmanagement_pgf_sys_setuppdfresources_plain: + } + { + \__pdfmanagement_pgfori_pgfutil@setuppdfresources + } + } + } + } +\cs_new_protected:Npn \__pdfmanagement_pgf_sys_setuppdfresources_plain: + { + %objects are already created ... + \def\pgf@sys@pdf@possible@resources + { + /ColorSpace~\pdf_object_ref:n {__pdf/Page/Resources/ColorSpace} + /Pattern ~\pdf_object_ref:n {__pdf/Page/Resources/Pattern} + /ExtGState ~\pdf_object_ref:n {__pdf/Page/Resources/ExtGState} + } + \let\pgf@sys@pdf@check@resources=\relax% + %not sure if needed, but perhaps the lists are used somewhere else ... + \let\pgf@sys@pgf@resource@list@extgs=\pgfutil@empty% + \let\pgf@sys@pgf@resource@list@patterns=\pgfutil@empty% + \let\pgf@sys@pgf@resource@list@colorspaces=\pgfutil@empty% + % the commands to add page resources + \def\pgf@sys@addpdfresource@extgs@plain##1 + { + %\exp_after:wN %for transparent which passes a command + \__pdfmanagement_patch_pgfextgs:w ##1\q_stop + } + \def\pgf@sys@addpdfresource@patterns@plain##1 + { + \__pdfmanagement_patch_pgfpatterns:w ##1\q_stop + } + \def\pgf@sys@addpdfresource@colorspaces@plain##1 + { + \__pdfmanagement_patch_pgfcolorspaces:w ##1\q_stop + } + } + +\cs_new:Npn \__pdfmanagement_split_dict_entry_aux:NNw #1 #2 /#3~#4\q_stop + { + \tl_set:Nn #1 {#3} + \tl_set:Nn #2 {#4} + } + +\cs_generate_variant:Nn \tl_trim_spaces:n{V} +\cs_generate_variant:Nn \pdfmanagement_add:nnn {nex} +\cs_new:Npn \__pdfmanagement_patch_pgfextgs:w #1/#2<<#3>>#4\q_stop + { + \tl_set:Nx\l_tmpa_tl{#2} + \pdfmanagement_add:nex + {Page/Resources/ExtGState}{\tl_trim_spaces:V\l_tmpa_tl}{<<#3 #4>>} + } +\cs_new:Npn \__pdfmanagement_patch_pgfpatterns:w #1/#2\space#3\q_stop + { + \pdfmanagement_add:nex + {Page/Resources/Pattern}{\tl_trim_spaces:n{#2}}{#3} + } +\cs_new:Npn \__pdfmanagement_patch_pgfcolorspaces:w #1/#2[#3]#4\q_stop + { + \pdfmanagement_add:nex + {Page/Resources/ColorSpace}{\tl_trim_spaces:n{#2}}{[#3]} + } + +\bool_if:NT \g__pdfmanagement_firstaid_transparent_bool + { + \declare@file@substitution{transparent.sty}{transparent-ltx.sty} + } +\bool_if:NT \g__pdfmanagement_firstaid_pdflscape_bool + { + \declare@file@substitution{pdflscape.sty}{pdflscape-ltx.sty} + } +\bool_if:NT \g__pdfmanagement_firstaid_hyperxmp_bool + { + \AddToHook + { + file/hyperxmp.sty/after + } + {\RequirePackage{hyperxmp-patches-tmp-ltx}} + } +\bool_if:NT \g__pdfmanagement_firstaid_colorspace_bool + { + \AddToHook + { + package/colorspace/after + } + {\RequirePackage{colorspace-patches-tmp-ltx}} + } +%% +%% +%% End of file `pdfmanagement-firstaid.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx new file mode 100644 index 000000000..7e7cff0f6 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx @@ -0,0 +1,2285 @@ +%% +%% This is file `pdfmanagement-testphase.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pdfmanagement-testphase.dtx (with options: `header') +%% l3pdfdict.dtx (with options: `package') +%% l3pdfmanagement.dtx (with options: `package') +%% ltdocinit.dtx (with options: `package') +%% l3pdfannot.dtx (with options: `package') +%% l3pdfxform.dtx (with options: `package') +%% l3pdfmeta.dtx (with options: `package') +%% l3pdftools.dtx (with options: `package') +%% l3pdffile.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: pdfmanagement-testphase.dtx +\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-08-24}{0.95r} + {PDF~management~code~(testphase)} +%% File: l3pdfdict.dtx +\cs_new:Npn \__pdfdict_get_type:n #1 + { + \str_case_e:nn { \str_head:n{#1} } + { + {g}{global} + {l}{local} + } + } +\msg_new:nnn { pdfdict } { show-dict } + { %#1: name of the dictionary + %#2: expanded content + %#3: type + The~#3~dictionary~'#1'~ + \tl_if_empty:nTF {#2} + { is~empty \\>~ . } + { contains~the~pairs~(without~outer~braces): #2 . } + } +\msg_new:nnn { pdfdict } { unknown-dict } + { + The~dictionary~'#1'~is~unknown. + } +\msg_new:nnn { pdfdict } { dict-already-defined } + { + The~#2~dictionary~'#1'~is~already~defined. + } +\msg_new:nnn { pdfdict } { empty-value } + { The~value~#1~for~#2~is~blank~and~will~be~ignored } + +\msg_new:nnn { pdfdict } { invalid-name } + { Name~'#1'~is~not~valid\\ + Names~of~dictionaries~should~start~with~'g_'~or~'l_' } + + +\seq_new:N \g__pdfdict_lnames_seq +\seq_new:N \g__pdfdict_gnames_seq +\cs_new:Npn \__pdfdict_name:n #1 % #1 dictionary name + { + \str_head:n{#1}__pdfdict_/#1_prop + } +\cs_set_eq:NN \__kernel_pdfdict_name:n \__pdfdict_name:n + +\cs_new_protected:Npn \__pdfdict_new:n #1 + { + \__pdfdict_if_exist:nTF { #1 } + { + \msg_error:nnxx + { pdfdict } + { dict-already-defined } + { \tl_to_str:n {#1} } + { \__pdfdict_get_type:n{#1} } + } + { + \str_case_e:nnF { \str_head:n{#1} } + { + {g} + { + \prop_new:c { \__pdfdict_name:n { #1 } } + \seq_gput_right:cn {g__pdfdict_gnames_seq} { #1 } + } + {l} + { + \prop_new:c { \__pdfdict_name:n { #1 } } + \seq_gput_right:cn {g__pdfdict_lnames_seq} { #1 } + } + } + { + \msg_error:nnx{pdfdict}{invalid-name}{\tl_to_str:n{#1}} + } + } + } + +\cs_set_eq:NN \pdfdict_new:n \__pdfdict_new:n +\cs_new_protected:Npn \__pdfdict_set_eq:nn #1 #2 + { + \__pdfdict_if_exist:nTF { #2 } + { + \__pdfdict_if_exist:nF { #1 } + { + \__pdfdict_new:n { #1 } + } + \prop_set_eq:cc { \__pdfdict_name:n {#1} }{ \__pdfdict_name:n {#2} } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + +\cs_set_eq:NN \pdfdict_set_eq:nn \__pdfdict_set_eq:nn + +\cs_new_protected:Npn \__pdfdict_gset_eq:nn #1 #2 + { + \__pdfdict_if_exist:nTF { #2 } + { + \__pdfdict_if_exist:nF { #1 } + { + \__pdfdict_new:n { #1 } + } + \prop_gset_eq:cc { \__pdfdict_name:n {#1} }{ \__pdfdict_name:n {#2} } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + +\cs_set_eq:NN \pdfdict_gset_eq:nn \__pdfdict_gset_eq:nn +\prg_new_conditional:Npnn \__pdfdict_if_exist:n #1 { p , T , F , TF } + { + \prop_if_exist:cTF + { \__pdfdict_name:n { #1 } } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_set_eq_conditional:NNn + \pdfdict_if_exist:n \__pdfdict_if_exist:n { p , T , F , TF } +\prg_new_conditional:Npnn \__pdfdict_if_empty:n #1 { p , T , F , TF } + { + \prop_if_empty:cTF + { \__pdfdict_name:n { #1 } } + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_set_eq_conditional:NNn + \pdfdict_if_empty:n \__pdfdict_if_empty:n { p , T , F , TF } +\cs_new_protected:Npn \__pdfdict_put:nnn #1 #2 #3 %#1 (local) dict, #2 name, #3 value + { + \tl_if_blank:nTF { #3 } + { + \msg_warning:nnnn { pdfdict }{ empty-value }{ #2 } { #1 } + } + { + \__pdfdict_if_exist:nTF { #1 } + { + \exp_args:Nnx \prop_put:cnn + { \__pdfdict_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } { #3 } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + } + +\cs_set_eq:NN \pdfdict_put:nnn \__pdfdict_put:nnn +\cs_generate_variant:Nn \pdfdict_put:nnn {nnx,nno} + +\cs_new_protected:Npn \__pdfdict_gput:nnn #1 #2 #3 %#1 global dict, #2 name, #3 value + { + \tl_if_empty:nTF { #3 } + { + \msg_warning:nnnn { pdfdict }{ empty-value }{ #2 } { #1 } + } + { + \__pdfdict_if_exist:nTF { #1 } + { + \exp_args:Nnx \prop_gput:cnn + { \__pdfdict_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } { #3 } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + } + +\cs_set_eq:NN \pdfdict_gput:nnn \__pdfdict_gput:nnn +\cs_generate_variant:Nn \pdfdict_gput:nnn {nnx,nno} +\cs_new_protected:Npn \__pdfdict_get:nnN #1 #2 #3 %dict,key,macro + { + \__pdfdict_if_exist:nTF { #1 } + { + \exp_args:Nnx \prop_get:cnN + { \__pdfdict_name:n { #1 } } + { \str_convert_pdfname:n { #2 } } #3 + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + +\cs_set_eq:NN \pdfdict_get:nnN \__pdfdict_get:nnN +\cs_new_protected:Npn \__pdfdict_remove:nn #1 #2 %dict,name + { + \__pdfdict_if_exist:nTF { #1 } + { + \exp_args:Nnx \prop_remove:cn + { \__pdfdict_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } +\cs_set_eq:NN \pdfdict_remove:nn \__pdfdict_remove:nn + +\cs_new_protected:Npn \__pdfdict_gremove:nn #1 #2 %dict,name + { + \__pdfdict_if_exist:nTF { #1 } + { + \exp_args:Nnx \prop_gremove:cn + { \__pdfdict_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } + } + { + \msg_error:nnn { pdfdict } { unknown-dict } { #1 } + } + } + +\cs_set_eq:NN \pdfdict_gremove:nn \__pdfdict_gremove:nn +\cs_new_protected:Npn \__pdfdict_show:Nn #1#2 %#1 message command, #2 dict + { + \prop_if_exist:cTF { \__pdfdict_name:n { #2 } } + { + #1 + { pdfdict } + { show-dict } + { \tl_to_str:n {#2} } + { \prop_map_function:cN {\__pdfdict_name:n { #2 }} \msg_show_item:nn } + { \__pdfdict_get_type:n{#2} } + { } + } + { + #1 { pdfdict } { unknown-dict } { #2 } {}{}{} + } + } +\cs_new_protected:Npn \pdfdict_show:n #1 + { + \__pdfdict_show:Nn \msg_show:nnxxxx {#1} + } +\cs_new:Npn \__pdfdict_item:nn #1 #2 %#1 name, #2 value + { + \tl_if_blank:nF {#2} { /#1~#2~ } + } +\cs_generate_variant:Nn \__pdfdict_item:nn {ne} +\cs_set_eq:NN \pdfdict_item:nn \__pdfdict_item:nn +\cs_generate_variant:Nn \pdfdict_item:nn {ne} +\cs_new:Npn \__pdfdict_use:n #1 %#1 dict + { + \prop_map_function:cN { \__pdfdict_name:n { #1 } } \__pdfdict_item:ne + } + +\cs_set_eq:NN \pdfdict_use:n \__pdfdict_use:n +%% File: l3pdfmanagement.dtx + + +\msg_new:nnn { pdfmanagement } { unknown-dict } + { The~PDF~management~resource~'#1'~is~unknown. } + +\msg_new:nnn { pdfmanagement } { empty-value } + { The~value~for~#1~is~empty~and~will~be~ignored } + +\msg_new:nnn { pdfmanagement } { no-removal } + { It~is~not~possible~to~remove~values~from~'#1'.} + +\msg_new:nnn { pdfmanagement } { no-show } + { It~is~not~possible~to~show~the~content~of~'#1'.} + +\msg_new:nnn { pdfmanagement } { name-exist } + { The~name~'#1'~has~already~been~used~for~name~tree~'#2'.} + +\msg_new:nnn { pdfmanagement } { show-dict } + { + The~PDF~resource~'#1'~ + \tl_if_empty:nTF {#2} + { is~empty \\>~ . } + { contains~the~pairs~(without~outer~braces): #2 . } + } +\msg_new:nnn { pdfmanagement } { dict-already-defined } + { + The~path~'#1'~is~already~defined. + } +\msg_new:nnn { pdfmanagement } { inactive } + { + The~PDF~resources~management~is~not~active\\ + command~'#1'~ignored. + } +\tl_new:N \l__pdfmanagement_tmpa_tl +\tl_new:N \l__pdfmanagement_tmpb_tl +\seq_new:N \l__pdfmanagement_tmpa_seq + +\bool_new:N \g__pdfmanagement_active_bool +\prg_new_conditional:Npnn \__pdfmanagement_if_active: { p , T , F , TF } + { + \bool_if:NTF \g__pdfmanagement_active_bool + { \prg_return_true: } + { \prg_return_false: } + } +\prg_set_eq_conditional:NNn + \pdfmanagement_if_active: \__pdfmanagement_if_active: { p , T , F , TF } + +\cs_set_eq:NN \IfPDFManagementActiveTF\pdfmanagement_if_active:TF +\hook_new:n {pdfmanagement/add} +\cs_new_protected:Npn \pdfmanagement_add:nnn #1 #2 #3 + { + \__pdfmanagement_if_active:TF + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \hook_gput_code:nnn + {pdfmanagement/add} + {pdfmanagement} + { + \__pdfmanagement_handler_gput:nnn { #1 }{ #2 }{ #3 } + } + } + { + \msg_error:nnn{pdfmanagement}{unknown-dict}{#1} + } + } + { + \msg_warning:nnx {pdfmanagement}{inactive} + {\tl_to_str:n {\pdfmanagement_add:nnn}} + } + } + +\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx,xxx} +\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:xxx +\tl_new:N \g__kernel_pdfmanagement_thispage_shipout_code_tl +\tl_new:N \g__kernel_pdfmanagement_lastpage_shipout_code_tl +\tl_new:N \g__kernel_pdfmanagement_end_run_code_tl +\tl_gset:Nn \g__kernel_pdfmanagement_thispage_shipout_code_tl + { + \bool_if:NT \g__pdfmanagement_active_bool + { + \exp_args:NV \__pdf_backend_ThisPage_gpush:n { \g_shipout_readonly_int } + \exp_args:NV \__pdf_backend_PageResources_gpush:n { \g_shipout_readonly_int } + } + } + +\tl_gset:Nn \g__kernel_pdfmanagement_end_run_code_tl + { + \bool_if:NT \g__pdfmanagement_active_bool + { + \__pdf_backend_PageResources_obj_gpush: %ExtGState etc + \__pdfmanagement_Pages_gpush: %pagesattr + \__pdfmanagement_Info_gpush: %pdfinfo + \__pdfmanagement_Catalog_gpush: + } + } + + + +\cs_new_protected:Npn \__pdfmanagement_handler_gput:nnn #1 #2 #3 %#1 dict, #2 name, #3 value + { + \tl_if_empty:nTF { #3 } + { + \msg_none:nnn { pdfmanagement }{ empty-value }{ /#1/#2 } + } + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \cs_if_exist:cTF + { __pdfmanagement_handler/#1/?_gput:nn } %general, name independant handler + { \use:c {__pdfmanagement_handler/#1/?_gput:nn} {#2} {#3} } + { + \cs_if_exist:cTF + { __pdfmanagement_handler/#1/#2_gput:n } + { \use:c {__pdfmanagement_handler/#1/#2_gput:n} {#3} } %special handler + { + \exp_args:Nnx + \prop_gput:cnn + { \__kernel_pdfdict_name:n { g__pdf_Core/#1 } } + { \str_convert_pdfname:n { #2 } } + { #3 } + } + } + } + { + \msg_error:nnn { pdfmanagement } { unknown-dict } { #1 } + } + } + } + +\cs_generate_variant:Nn \__pdfmanagement_handler_gput:nnn {nxx} + +\cs_new_protected:Npn \__pdfmanagement_get:nnN #1 #2 #3 %path,key,macro + { + \exp_args:Nnx + \prop_get:cnN + { \__kernel_pdfdict_name:n { g__pdf_Core/#1 } } + { \str_convert_pdfname:n {#2} } #3 + } + +\cs_new_protected:Npn \__pdfmanagement_handler_gremove:nn #1 #2 %path,key + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \cs_if_exist:cTF + { __pdfmanagement_handler/#1/?_gremove:n } %general, name independant handler + { \use:c {__pdfmanagement_handler/#1/?_gremove:n} {#2} } + { + \cs_if_exist:cTF + { __pdfmanagement_handler/#1/#2_gremove: } + { \use:c {__pdfmanagement_handler/#1/#2_gremove:} } %special handler + { + \exp_args:Nnx + \prop_gremove:cn + { \__kernel_pdfdict_name:n { g__pdf_Core/#1 } } + { \str_convert_pdfname:n {#2} } + } + } + } + { + \msg_error:nnn { pdfmanagement } { unknown-dict } { #1 } + } + } + +\cs_new_protected:Npn \__pdfmanagement_gremove:nn #1 #2 %path,key + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \exp_args:Nnx + \prop_gremove:cn + { \__kernel_pdfdict_name:n { g__pdf_Core/#1 } } + { \str_convert_pdfname:n{#2} } + } + { + \msg_error:nnn { pdfmanagement } { unknown-dict } { #1 } + } + } + +\cs_new_protected:Npn \__pdfmanagement_show:Nn #1#2 + { + \cs_if_exist:cTF + { __pdfmanagement_handler/#2/?_show: } %general, name independant handler + { \use:c {__pdfmanagement_handler/#2/?_show:} } + { + \prop_if_exist:cTF { \__kernel_pdfdict_name:n { g__pdf_Core/#2 } } + { + #1 + { pdfmanagement } { show-dict } + { \tl_to_str:n {#2} } + { + \prop_map_function:cN + {\__kernel_pdfdict_name:n { g__pdf_Core/#2 }} + \msg_show_item:nn + } + { } { } + } + { + #1 { pdfmanagement } { unknown-dict } {#2}{}{}{} + } + } + } + +\cs_new_protected:Npn \__pdfmanagement_show:n #1 %path + { + \prop_show:c { \__kernel_pdfdict_name:n { g__pdf_Core/#1 } } + } +\cs_new_protected:Npn \pdfmanagement_show:n #1 + { + \__pdfmanagement_show:Nn \msg_show:nnxxxx {#1} + } +\cs_new_protected:Npn \pdfmanagement_remove:nn #1 #2 + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \__pdfmanagement_handler_gremove:nn { #1 }{ #2 } + } + { + \msg_error:nnn{pdfmanagement}{unknown-dict}{#1} + } + } +\cs_new_protected:Npn \pdfmanagement_get:nnN #1 #2 #3 + { + \pdfdict_if_exist:nTF { g__pdf_Core/#1 } + { + \__pdfmanagement_get:nnN { #1 }{ #2 } #3 + } + { + \msg_error:nnn{pdfmanagement}{unknown-dict}{#1} + } + } +\pdfdict_new:n { g__pdf_Core/Info} +\cs_new_protected:Npn \__pdfmanagement_Info_gpush: + { + \prop_map_function:cN + { \__kernel_pdfdict_name:n { g__pdf_Core/Info} } + \__pdf_backend_info_gput:nn + \prop_gclear:c { \__kernel_pdfdict_name:n { g__pdf_Core/Info} } + } +\pdfdict_new:n { g__pdf_Core/Pages} +\cs_new_protected:Npn \__pdfmanagement_Pages_gpush: + { + \pdfdict_if_empty:nF { g__pdf_Core/Pages} + { + \exp_args:Nx \__pdf_backend_Pages_primitive:n + { + \pdfdict_use:n { g__pdf_Core/Pages} + } + } + } + +\pdfdict_new:n { g__pdf_Core/Page } +\pdfdict_new:n { g__pdf_Core/ThisPage } + +\cs_new_protected:cpn { __pdfmanagement_handler/Page/?_gput:nn } #1 #2 + { + \__pdf_backend_Page_gput:nn { #1 }{ #2 } + } +\cs_new_protected:cpn { __pdfmanagement_handler/Page/?_gremove:n } #1 + { + \__pdf_backend_Page_gremove:n { #1 } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/ThisPage/?_gput:nn } #1 #2 + { + \prop_gput:cnn { \__kernel_pdfdict_name:n { g__pdf_Core/ThisPage } }{ #1 } { #2 } + \bool_if:NT \g__pdfmanagement_active_bool + { + \__pdf_backend_ThisPage_gput:nn { #1 }{ #2 } + } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/ThisPage/?_gremove:n } #1 + { + \msg_warning:nnn { pdfmanagement } { no-removal }{ThisPage} + } + +\cs_new_protected:cpn { __pdfmanagement_handler/ThisPage/?_show: } + { + \msg_warning:nnn { pdfmanagement } { no-show }{ThisPage} + } + +\clist_const:Nn \c__pdfmanagement_PageResources_clist + { + ExtGState, + ColorSpace, + Pattern, + Shading, + } + +\clist_map_inline:Nn \c__pdfmanagement_PageResources_clist + { + \pdfdict_new:n { g__pdf_Core/Page/Resources/#1} + } +\cs_new_protected:cpn { __pdfmanagement_handler/Page/Resources/ExtGState/?_gput:nn } #1 #2 + { + \__pdf_backend_PageResources_gput:nnn {ExtGState} { #1 }{ #2 } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/Page/Resources/ColorSpace/?_gput:nn } #1 #2 + { + \__pdf_backend_PageResources_gput:nnn {ColorSpace} { #1 }{ #2 } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/Page/Resources/Shading/?_gput:nn } #1 #2 + { + \__pdf_backend_PageResources_gput:nnn {Shading} { #1 }{ #2 } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/Page/Resources/Pattern/?_gput:nn } #1 #2 + { + \__pdf_backend_PageResources_gput:nnn {Pattern} { #1 }{ #2 } + } +\pdfdict_new:n { g__pdf_Core/Catalog} + +\clist_const:Nn \c__pdfmanagement_Catalog_toplevel_clist + { + Collection, + DPartRoot, + Lang, + Legal, + Metadata, + NeedsRendering, + OCProperties/D, + OpenAction, + PageLabels, + PageLayout, + PageMode, + Perms, + PieceInfo, + SpiderInfo, + StructTreeRoot, + Threads, + URI, + Version + } + +\clist_const:Nn \c__pdfmanagement_Catalog_sub_clist + { + AA, + AcroForm, + AcroForm/DR, + AcroForm/DR/Font, + MarkInfo, + ViewerPreferences, + OCProperties + } + +\clist_map_inline:Nn \c__pdfmanagement_Catalog_sub_clist + { + \pdfdict_new:n { g__pdf_Core/Catalog/#1} + } + +\clist_const:Nn \c__pdfmanagement_Catalog_seq_clist + { + AF, + OCProperties/OCGs, + OCProperties/Configs, + OutputIntents, + Requirements, + AcroForm/Fields, + AcroForm/CO + } + +\clist_const:Nn \c__pdfmanagement_Catalog_nametree_clist + { + AP, + JavaScript, + } +\clist_map_inline:Nn \c__pdfmanagement_Catalog_seq_clist + { + \seq_new:c { g__pdfmanagement_/Catalog/#1_seq } % new name later + \cs_new_protected:cpn { __pdfmanagement_handler/Catalog/#1_gput:n } ##1 + { + \seq_gput_right:cn { g__pdfmanagement_/Catalog/#1_seq } { ##1 } + } + } + +\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/OCProperties/D_gput:n } #1 + { + \seq_gput_left:cn + { g__pdfmanagement_/Catalog/OCProperties/Configs_seq } + { #1 } + } +\cs_new_protected:Npn \__pdfmanagement_nametree_add_aux:nnn #1 #2 #3 + %#1 name tree, #2 sanitized name #3 value + { + \prop_get:coNTF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + \l__pdfmanagement_tmpb_tl + { + \msg_error:nnnn{pdfmanagement}{name-exist}{#2}{#1} + } + { + \prop_gput:con + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { #2 } + { #3 } + } + } +\clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist + { + \pdfdict_new:n { g__pdf_Core/Catalog/Names/#1} + \cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/#1/?_gput:nn } ##1 ##2 + { + \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdfmanagement_tmpa_tl + \exp_args:Nno + \__pdfmanagement_nametree_add_aux:nnn {#1}{\l__pdfmanagement_tmpa_tl}{##2} + } + } +\pdfdict_new:n { g__pdf_Core/Catalog/Names/EmbeddedFiles} +\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles/?_gput:nn } #1 #2 + { + \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdfmanagement_tmpa_tl + \exp_args:Nno + \__pdfmanagement_nametree_add_aux:nnn + {EmbeddedFiles}{\l__pdfmanagement_tmpa_tl}{#2} + \exp_args:No + \__pdf_backend_NamesEmbeddedFiles_add:nn {\l__pdfmanagement_tmpa_tl}{#2} + } +\cs_new_protected:Npn \__pdfmanagement_Catalog_gpush: + { + \use:c { __pdfmanagement_/Catalog/AA_gpush: } + \use:c { __pdfmanagement_/Catalog/AcroForm_gpush: } + \use:c { __pdfmanagement_/Catalog/AF_gpush: } + \use:c { __pdfmanagement_/Catalog/MarkInfo_gpush: } + \pdfmeta_standard_verify:nT {Catalog_no_OCProperties} + { + \use:c { __pdfmanagement_/Catalog/OCProperties_gpush: } + } + \use:c { __pdfmanagement_/Catalog/OutputIntents_gpush: } + \use:c { __pdfmanagement_/Catalog/Requirements_gpush: } + \use:c { __pdfmanagement_/Catalog/ViewerPreferences_gpush: } + % output the single values: + \prop_map_function:cN + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog} } + \__pdf_backend_catalog_gput:nn + % output names tree: + \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {EmbeddedFiles} + \clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist + { + \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {##1} + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/AA_gpush: } + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AA } } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AA } { dict } + \pdf_object_write:nx + { __pdfmanagement/Catalog/AA } + { \pdfdict_use:n { g__pdf_Core/Catalog/AA } } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {AA} + { + \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AA } + } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/AcroForm_gpush: } + { + \seq_if_empty:cF { g__pdfmanagement_/Catalog/AcroForm/Fields_seq } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AcroForm/Fields } { array } + \pdf_object_write:nx + { __pdfmanagement/Catalog/AcroForm/Fields } + { \seq_use:cn { g__pdfmanagement_/Catalog/AcroForm/Fields_seq } {~} } + \exp_args:Nnnx + \prop_gput:cnn %we have to use \prop here to avoid the handler ... + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } } + { Fields } + { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/Fields } } + } + \seq_if_empty:cF { g__pdfmanagement_/Catalog/AcroForm/CO_seq } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AcroForm/CO } { array } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/AcroForm/CO } + { \seq_use:cn { g__pdfmanagement_/Catalog/AcroForm/CO_seq } {~} } + \exp_args:Nnnx + \prop_gput:cnn %we have to use \prop here to avoid the handler ... + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } } + { CO } + { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/CO } } + } + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR/Font}} + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AcroForm/DR/Font } {dict} + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/AcroForm/DR/Font } + { \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR/Font } } + \exp_args:Nnnx + \prop_gput:cnn %we have to use \prop here to avoid the handler ... + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR } } + { Font } + { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/DR/Font } } + } + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR}} + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AcroForm/DR } {dict} + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/AcroForm/DR } + { \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR } } + \exp_args:Nnnx + \prop_gput:cnn %we have to use \prop here to avoid the handler ... + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } } + { DR } + { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/DR } } + } + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm} } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AcroForm } {dict} + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/AcroForm } + { \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm } } + \exp_args:Nnnx + \__pdfmanagement_handler_gput:nnn + { Catalog } + { AcroForm } + { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm } } + } + } + +\cs_new_protected:cpn { __pdfmanagement_/Catalog/AF_gpush: } + { + \seq_if_empty:cF + { g__pdfmanagement_/Catalog/AF_seq } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/AF } { array } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/AF } + { \seq_use:cn { g__pdfmanagement_/Catalog/AF_seq } {~} } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {AF} + { + \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/AF} + } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/MarkInfo_gpush: } + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/MarkInfo } } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/MarkInfo } { dict } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/MarkInfo } + { \pdfdict_use:n { g__pdf_Core/Catalog/MarkInfo } } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {MarkInfo} + { + \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/MarkInfo} + } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/OCProperties_gpush: } + { + \int_compare:nNnT + { + ( \seq_count:c { g__pdfmanagement_/Catalog/OCProperties/OCGs_seq } )* + ( \seq_count:c { g__pdfmanagement_/Catalog/OCProperties/Configs_seq } ) + } + > + { 0 } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/OCProperties } { dict } + \seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l__pdfmanagement_tmpa_tl + \exp_args:Nnx + \pdf_object_write:nn {__pdfmanagement/Catalog/OCProperties} + { + /OCGs~[ \seq_use:cn { g__pdfmanagement_/Catalog/OCProperties/OCGs_seq } {~} ] + /D~\l__pdfmanagement_tmpa_tl~ + \seq_if_empty:cF { g__pdfmanagement_/Catalog/OCProperties/Configs_seq } + { + /Configs~ + [ \seq_use:cn { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} {~} ] + } + } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + { OCProperties } + { \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/OCProperties} } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/OutputIntents_gpush: } + { + \seq_if_empty:cF + { g__pdfmanagement_/Catalog/OutputIntents_seq } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/OutputIntents } { array } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/OutputIntents } + { \seq_use:cn { g__pdfmanagement_/Catalog/OutputIntents_seq } {~} } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {OutputIntents} + { + \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/OutputIntents} + } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/Requirements_gpush: } + { + \seq_if_empty:cF + { g__pdfmanagement_/Catalog/Requirements_seq } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/Requirements } { array } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/Requirements } + { \seq_use:cn { g__pdfmanagement_/Catalog/Requirements_seq } {~} } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {Requirements} + { + \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/Requirements } + } + } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/ViewerPreferences_gpush: } + { + \prop_if_empty:cF + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/ViewerPreferences } } + { + \pdf_object_new:nn { __pdfmanagement/Catalog/ViewerPreferences } { dict } + \exp_args:Nnx + \pdf_object_write:nn + { __pdfmanagement/Catalog/ViewerPreferences } + { \pdfdict_use:n { g__pdf_Core/Catalog/ViewerPreferences } } + \exp_args:Nnx + \__pdf_backend_catalog_gput:nn + {ViewerPreferences} + { + \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/ViewerPreferences} + } + } + } +\int_new:N \g__pdfmanagement_EmbeddedFiles_int +\cs_new:Npn \__pdfmanagement_EmbeddedFiles_name: + { + ( + l3ef + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {10} + {0} + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {100} + {0} + \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {1000} + {0} + \int_use:N \g__pdfmanagement_EmbeddedFiles_int + ) + } +\pdfdict_new:n { g__pdf_Core/Catalog/Names } + +\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles_gput:n } #1 + { + \int_gincr:N \g__pdfmanagement_EmbeddedFiles_int + \exp_args:Nnx + \prop_gput:cnn + { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/EmbeddedFiles }} + { \__pdfmanagement_EmbeddedFiles_name: } + { #1 } + \exp_args:Nx + \__pdf_backend_NamesEmbeddedFiles_add:nn {\__pdfmanagement_EmbeddedFiles_name:} { #1 } + } +\cs_new_protected:cpn { __pdfmanagement_/Catalog/Names_gpush:n } #1 %#1 name of name tree + { + \pdfdict_if_empty:nF { g__pdf_Core/Catalog/Names/#1 } + { + \seq_clear:N \l__pdfmanagement_tmpa_seq + \prop_map_inline:cn + {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }} + { \seq_put_right:Nn \l__pdfmanagement_tmpa_seq {##1~##2}} + \seq_sort:Nn \l__pdfmanagement_tmpa_seq + { + \str_compare:nNnTF {##1} > {##2} + { \sort_return_swapped: } + { \sort_return_same: } + } + \exp_args:Nnx \__pdf_backend_Names_gpush:nn + {#1} + { + \seq_use:Nn \l__pdfmanagement_tmpa_seq {~} + } + } + } +\cs_new_protected:cpn {__pdfmanagement_handler/Catalog/?_show:} + { + \iow_term:x + { + \iow_newline: + The~Catalog~contains~in~the~top~level~the~single~value~entries + \prop_map_function:cN + {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog }} + \msg_show_item:nn + } + \clist_map_inline:Nn \c__pdfmanagement_Catalog_seq_clist + { + \seq_if_empty:cF { g__pdfmanagement_/Catalog/##1_seq } + { + \iow_term:x + { + The~'##1'~array~contains~the~entries + \seq_map_function:cN { g__pdfmanagement_/Catalog/##1_seq } \msg_show_item:n + } + } + } + \clist_map_inline:Nn \c__pdfmanagement_Catalog_sub_clist + { + \prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/##1 } } + { + \iow_term:x + { + The~Catalog~subdirectory~'##1'~contains~the~single~value~entries + \prop_map_function:cN + {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog/##1 }} + \msg_show_item:nn + } + } + } + \tl_show:x {\tl_to_str:n{\pdfmanagement_show:n{Catalog}}} + } +\pdfdict_new:n { g__pdf_Core/Xform/Resources/Properties} +%% File: ltdocinit.dtx +\clist_new:N \g__pdfmanagement_firstaidoff_clist +\tl_new:N \g__pdfmanagement_testphase_tl +\cs_if_free:NT \DocumentMetadata + { + \keys_define:nn { document / metadata } + { + backend .choices:nn = + { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex } + { + \sys_load_backend:n {#1} + }, + backend .groups:n = { init } , + } + + \keys_define:nn { document / metadata } + { + ,pdfversion .code:n = + { + \pdf_version_gset:n { #1 } + \AddToDocumentProperties[document]{pdfversion}{#1} + } + ,uncompress .code:n = + { + \pdf_uncompress: + } + ,uncompress .value_forbidden:n = true + ,lang .code:n = + { + \pdfmanagement_add:nnn {Catalog} {Lang}{(#1)} + \AddToDocumentProperties[document]{lang}{#1} + } + %,xmpmeta .bool_gset:N = \g_pdfmeta_xmp_bool %see pdfmeta unused and undefined for now! + % this uses internal command from pdfmeta, it should probably move there ... + ,pdfstandard .code:n = + { + \exp_args:Nnx + \keys_set:nn {document / metadata} {_pdfstandard=\str_uppercase:n{#1}} + } + ,_pdfstandard .choices:nn = + {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U,A-4} + { + \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop } + { + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop } + } + \AddToDocumentProperties [document]{pdfstandard}{#1} + } + ,_pdfstandard / unknown .code:n = + { + \msg_warning:nnn{pdf}{unknown-standard}{#1} + } + ,testphase .multichoice: + ,testphase / tagpdf .code:n = + { + \tl_gput_right:Nn\g__pdfmanagement_testphase_tl + { + \file_if_exist_input:nF {tagpdf-latex-lab-testphase.ltx} + { + \RequirePackage{tagpdf} + \AddToDocumentProperties [document]{testphase/tagpdf}{loaded} + \tagpdfsetup{activate,paratagging,interwordspace} + \AddToDocumentProperties [document]{tagging}{active} + \AddToDocumentProperties [document]{tagging/para}{active} + \AddToDocumentProperties [document]{tagging/interwordspace}{active} + } + } + } + ,testphase / unknown .code:n = + { + \tl_gput_right:Nn\g__pdfmanagement_testphase_tl + { + \AddToDocumentProperties [document]{testphase/#1}{loaded} + \file_if_exist_input:nF {#1-latex-lab-testphase.ltx} + { + \msg_warning:nnn{document}{latex-lab-pkg-missing}{#1} + \AddToDocumentProperties [document]{testphase/#1}{missing} + } + } + } + ,activate .multichoice: + ,activate / tagging .code:n = + { + \PackageWarning{pdfmanagement-testphase} + {The~activate~key~is~deprecated.\MessageBreak + Tagging~is~activated~with~'testphase=tagpdf'~directly}{} + } + ,debug .code:n = + { + \keys_set:nn { document / metadata / debug } {#1} + } + ,debug / para .code:n = + { + \AddToHook + { + package/tagpdf/after + } + { + \tagpdfsetup{paratagging-show} + } + } + ,debug / log .code:n = + { + \AddToHook + { + package/tagpdf/after + } + { + \tagpdfsetup{log=#1} + } + } + ,debug / uncompress .code:n = + { + \pdf_uncompress: + } + ,debug / pdfmanagement .bool_gset:N = \g__pdfmanagement_active_bool + ,debug / firstaidoff .clist_gset:N = \g__pdfmanagement_firstaidoff_clist + } + } +\cs_if_exist:NT \DocumentMetadata + { + \cs_new_protected:Npn \DeclareDocumentMetadata + { + \cs_if_free:NT \DocumentMetadata + { + \file_if_exist_input:nF {documentmetadata-support.ltx}% + { + \@latex@error + {No~support~files~for~\noexpand\DeclareDocumentMetadata~found} + { + Is~the~'LaTeX-lab'~bundle~installed? + \MessageBreak + Without~it,~the~declaration~is~ignored. + } + \let\DeclareDocumentMetadata\@gobble + } + } + \RenewDocumentCommand \DeclareDocumentMetadata {} + { \DocumentMetadata } + \DocumentMetadata + } + } +\cs_if_free:NT \DocumentMetadata + { + \prop_gput:Nnn \g_msg_module_type_prop { document } { LaTeX } + \prop_gput:Nnn \g_msg_module_name_prop { document } { DocumentMetadata } + \msg_new:nnn + { document } { setup-after-documentclass } + { + \token_to_str:N \DocumentMetadata \c_space_tl + should~be~used~only~before~\token_to_str:N\documentclass + } + \msg_new:nnn + { document } { latex-lab-pkg-missing } + { + LaTeX-lab~package~'#1'~not~found. + } + \NewDocumentCommand\DocumentMetadata { m } + { + \cs_if_eq:NNTF \documentclass \@twoclasseserror + { \msg_error:nn { document }{ setup-after-documentclass } } + { + \bool_gset_true:N \g__pdfmanagement_active_bool + \keys_set_groups:nnn { document / metadata} {init}{ #1 } + %if no backend has been loaded force it now: + \str_if_exist:NF \c_sys_backend_str + { + \sys_load_backend:n {} + } + \ExplSyntaxOn\makeatletter + \file_input:n {l3backend-testphase-\c_sys_backend_str.def} + \ExplSyntaxOff\makeatother + \keys_set_filter:nnn { document / metadata } { init } { lang=en-US, #1 } + \bool_if:NT \g__pdfmanagement_active_bool + { + \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref} + } + \hook_use_once:n {pdfmanagement/add} + \RenewDocumentCommand\DocumentMetadata { m } + { + \keys_set_filter:nnn { document / metadata } { init } { ##1 } + \bool_if:NTF \g__pdfmanagement_active_bool + { + \str_remove_all:cn + {opt@hyperref.sty}{customdriver=hgeneric-testphase} + \PassOptionsToPackage + {customdriver=hgeneric-testphase}{hyperref} + } + { + \str_remove_all:cn + {opt@hyperref.sty}{customdriver=hgeneric-testphase} + } + } + \g__pdfmanagement_testphase_tl + \RequirePackage{pdfmanagement-firstaid} + } + } + \NewDocumentCommand\DeclareDocumentMetadata{}{\DocumentMetadata} + } +\prop_new:N \g__pdfmanagement_documentproperties_prop % +\NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm} + { + \exp_args:NNx + \prop_gput:Nnn \g__pdfmanagement_documentproperties_prop + { + \tl_if_blank:eTF {#1}{top-level/}{#1/} #2 + } + { #3} + } +\NewExpandableDocumentCommand\GetDocumentProperties{m} + { + \prop_item:Nn \g__pdfmanagement_documentproperties_prop {#1} + } +\msg_new:nnn { pdfmanagement } { show-properties } + { + The~following~document~properties~have~been~stored: + #1 + } +\NewDocumentCommand\ShowDocumentProperties {} + { + \msg_show:nnx {pdfmanagement}{show-properties} + { + \prop_map_function:NN \g__pdfmanagement_documentproperties_prop \msg_show_item:nn + } + } +%% File: l3pdfannot.dtx +\RequirePackage{l3bitset} +\bitset_new:Nn \l_pdfannot_F_bitset + { + Invisible = 1, + Hidden = 2, + Print = 3, + NoZoom = 4, + NoRotate = 5, + NoView = 6, + ReadOnly = 7, + Locked = 8, + ToggleNoView = 9, + LockedContents = 10 + } +\bool_new:N \g__pdfannot_use_lastlink_bool +\cs_new_protected:Npn \pdfannot_box:nnnn #1 #2 #3 #4 + { + \__pdf_backend_annotation:nnnn {#1}{#2}{#3}{#4} + \bool_gset_false:N\g__pdfannot_use_lastlink_bool + } +\cs_generate_variant:Nn \pdfannot_box:nnnn {nnnx} +\cs_new:Npn \pdfannot_box_ref_last: + { + \__pdf_backend_annotation_last: + } + + \pdfdict_new:n { l__pdfannot/widget } + \pdfdict_new:n { l__pdfannot/widget/AA } + \pdfdict_new:n { l__pdfannot/widget/AP } + \pdfdict_new:n { l__pdfannot/widget/MK } + \pdfdict_new:n { l__pdfannot/widget/BS } + \pdfdict_put:nnn { l__pdfannot/widget }{ Subtype }{ /Widget } + \hook_new_pair:nn + {pdfannot/widget/before} + {pdfannot/widget/after} +\cs_new_protected:Npn \pdfannot_widget_box:nnn #1 #2 #3 + { + \hook_use:n { pdfannot/widget/before } + \group_begin: + \pdfmeta_standard_verify:nT + {annot_widget_no_AA} + { + \pdfdict_if_empty:nF { l__pdfannot/widget/AA } + { + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/AA}} + \pdfdict_put:nnx { l__pdfannot/widget } + {AA} + {\pdf_object_ref_last:} + } + } + \pdfdict_if_empty:nF { l__pdfannot/widget/AP } + { + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/AP}} + \pdfdict_put:nnx { l__pdfannot/widget } + {AP} + {\pdf_object_ref_last:} + } + \pdfdict_if_empty:nF { l__pdfannot/widget/MK } + { + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/MK}} + \pdfdict_put:nnx { l__pdfannot/widget } + {MK} + {\pdf_object_ref_last:} + } + \pdfdict_if_empty:nF { l__pdfannot/widget/BS } + { + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/BS}} + \pdfdict_put:nnx { l__pdfannot/widget } + {BS} + {\pdf_object_ref_last:} + } + \pdfannot_box:nnnx {#1}{#2}{#3} + { + \pdfdict_use:n { l__pdfannot/widget} + } + \hook_use:n { pdfannot/widget/end } + \group_end: + \bool_gset_false:N\g__pdfannot_use_lastlink_bool + } +\seq_const_from_clist:Nn \c_pdfannot_link_types_seq { URI , GoToR , Launch , GoTo, Named } +\seq_map_inline:Nn \c_pdfannot_link_types_seq + { + \pdfdict_new:n { l__pdfannot/link/#1 } + \pdfdict_put:nnn { l__pdfannot/link/#1 }{ Subtype }{ /Link } + \hook_new_pair:nn + {pdfannot/link/#1/before} + {pdfannot/link/#1/after} + \hook_new_pair:nn + {pdfannot/link/#1/begin} + {pdfannot/link/#1/end} + } +\cs_new_protected:Nn \pdfannot_link_off: { \__pdf_backend_link_off: } +\cs_new_protected:Nn \pdfannot_link_on: { \__pdf_backend_link_on: } +\cs_new_protected:Nn \pdfannot_link:nnn %#1 type (URI, GoTo etc), + %#2 action spec, #3 link text + { + \hook_use:n { pdfannot/link/#1/before} + \mode_leave_vertical: + \exp_args:Nxx %xetex needs expansion + \__pdf_backend_link_begin_user:nnw + { + \pdfdict_if_exist:nT { l__pdfannot/link/#1 } + { + \pdfdict_use:n { l__pdfannot/link/#1} + } + } + { + #2 %exp_not? + } + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \hook_use:n { pdfannot/link/#1/begin} + #3 + \hook_use:n { pdfannot/link/#1/end} + \__pdf_backend_link_end: + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \hook_use:n { pdfannot/link/#1/after} + } +\cs_generate_variant:Nn \pdfannot_link:nnn {nxn} +\cs_new_protected:Npn \pdfannot_link_begin:nnw #1 #2 %#1 type, #2 action spec + { + \hook_use:n { pdfannot/link/#1/before} + \mode_leave_vertical: + \exp_args:Nxx %xetex needs expansion + \__pdf_backend_link_begin_user:nnw + { + \pdfdict_if_exist:nT { l__pdfannot/link/#1 } + { + \pdfdict_use:n { l__pdfannot/link/#1} + } + } + { #2 } + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \hook_use:n { pdfannot/link/#1/begin} + } + +\cs_new_protected:Nn \pdfannot_link_end:n %#1 type, e.g. url + { + \hook_use:n { pdfannot/link/#1/end} + \__pdf_backend_link_end: + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \hook_use:n { pdfannot/link/#1/after} + } +\cs_generate_variant:Nn \pdfannot_link_begin:nnw {nxw} +\cs_new_protected:Npn \pdfannot_link_goto_begin:nw #1 %#1 destination + { + \pdfdict_remove:nn { l__pdfannot/link/GoTo} {Subtype} + \hook_use:n { pdfannot/link/GoTo/before} %the backend add it too + \mode_leave_vertical: + \exp_args:Nxx %xetex needs expansion + \__pdf_backend_link_begin_goto:nnw + { + \pdfdict_use:n { l__pdfannot/link/GoTo} + } + { #1 } + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \pdfdict_put:nnn { l__pdfannot/link/GoTo} {Subtype}{GoTo} + \hook_use:n { pdfannot/link/GoTo/begin} + } + +\cs_new_protected:Nn \pdfannot_link_goto_end: + { + \hook_use:n { pdfannot/link/GoTo/end} + \__pdf_backend_link_end: + \bool_gset_true:N \g__pdfannot_use_lastlink_bool + \hook_use:n { pdfannot/link/GoTo/after} + } +\cs_new:Nn \pdfannot_link_ref_last: { \__pdf_backend_link_last: } +\cs_new:Npn \pdfannot_ref_last: + { + \bool_if:NTF \g__pdfannot_use_lastlink_bool + { + \__pdf_backend_link_last: + } + { + \__pdf_backend_annotation_last: + } + } +\cs_new_protected:Npn \pdfannot_link_margin:n #1 + { + \__pdf_backend_link_margin:n { #1 } + } +\cs_new_protected:Npn \pdfannot_dict_put:nnn #1 #2 #3 + { + \pdfdict_put:nnn { l__pdfannot/#1 } { #2 }{ #3 } + } +\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nnx} +\cs_new_protected:Npn \pdfannot_dict_remove:nn #1 #2 + { + \pdfdict_remove:nn { l__pdfannot/#1 } { #2 } + } +\cs_new_protected:Npn \pdfannot_dict_show:n #1 + { + \pdfdict_show:n { l__pdfannot/#1 } + } + +\cs_new:Npn \pdfannot_dict_use:n #1 + { + \pdfdict_use:n { l__pdfannot/#1 } + } +%% File: l3pdfxform.dtx +\cs_new_protected:Npn \pdfxform_new:nnn #1 #2 #3 + { + \__pdf_backend_xform_new:nnnn { #1 } { #2 } { } { #3 } + } +\cs_new_protected:Npn \pdfxform_use:n #1 + { + \__pdf_backend_xform_use:n { #1 } + } +\cs_new:Npn \pdfxform_ref:n #1 + { + \__pdf_backend_xform_ref:n { #1 } + } + +\cs_generate_variant:Nn \pdfxform_ref:n {o} +\cs_new:Npn \pdfxform_wd:n #1 + { + \tl_use:c { c__pdf_backend_xform_wd_ \tl_to_str:n { #1 } _tl } + } + +\cs_new:Npn \pdfxform_ht:n #1 + { + \tl_use:c { c__pdf_backend_xform_ht_ \tl_to_str:n { #1 } _tl } + } + +\cs_new:Npn \pdfxform_dp:n #1 + { + \tl_use:c { c__pdf_backend_xform_dp_ \tl_to_str:n { #1 } _tl } + } +%% File: l3pdfmeta.dtx + +\msg_new:nnn {pdf }{unknown-standard}{The~standard~'#1'~is~unknown~and~has~been~ignored} +\msg_new:nnn {pdf }{wrong-pdfversion} + {PDF~version~#1~is~too~#2~for~standard~'#3'.} +\tl_new:N\l__pdfmeta_tmpa_tl +\tl_new:N\l__pdfmeta_tmpb_tl +\str_new:N \l__pdfmeta_tmpa_str +\prop_new:N \g__pdfmeta_standard_prop +\cs_new:Npn \pdfmeta_standard_item:n #1 + { + \prop_item:Nn \g__pdfmeta_standard_prop {#1} + } +\cs_new_protected:Npn \pdfmeta_standard_get:nN #1 #2 + { + \prop_get:NnN \g__pdfmeta_standard_prop {#1} #2 + } +\prg_new_conditional:Npnn \pdfmeta_standard_verify:n #1 {T,F,TF} + { + \prop_if_in:NnTF \g__pdfmeta_standard_prop {#1} + { + \prg_return_false: + } + { + \prg_return_true: + } + } +\prg_new_protected_conditional:Npnn \pdfmeta_standard_verify:nn #1 #2 {T,F,TF} + { + \prop_if_in:NnTF \g__pdfmeta_standard_prop {#1} + { + \cs_if_exist:cTF {__pdfmeta_standard_verify_handler_#1:nn} + { + \exp_args:Nnnx + \use:c + {__pdfmeta_standard_verify_handler_#1:nn} + { #2 } + { \prop_item:Nn \g__pdfmeta_standard_prop {#1} } + } + { + \prg_return_false: + } + } + { + \prg_return_true: + } + } +\cs_new_protected:Npn \__pdfmeta_standard_verify_handler_min_pdf_version:nn #1 #2 + { + \pdf_version_compare:NnTF < + { #2 } + {\prg_return_false:} + {\prg_return_true:} + } +\cs_new_protected:Npn \__pdfmeta_standard_verify_handler_max_pdf_version:nn #1 #2 + { + \pdf_version_compare:NnTF > + { #2 } + {\prg_return_false:} + {\prg_return_true:} + } + +\cs_new_protected:Npn \__pdfmeta_standard_verify_handler_named_actions:nn #1 #2 + { + \tl_if_in:nnTF { #2 }{ #1 } + {\prg_return_true:} + {\prg_return_false:} + } +\cs_new_protected:Npn \__pdfmeta_standard_verify_handler_annot_action_A:nn #1 #2 + { + \tl_if_in:nnTF { #2 }{ #1 } + {\prg_return_true:} + {\prg_return_false:} + } +\cs_new_protected:Npn \__pdfmeta_standard_verify_handler_outputintent_subtype:nn #1 #2 + { + \tl_if_eq:nnTF { #2 }{ #1 } + {\prg_return_true:} + {\prg_return_false:} + } +\cs_new_protected:Npn \__pdfmeta_verify_pdfa_annot_flags: + { + \bitset_set_true:Nn \l_pdfannot_F_bitset {Print} + \bitset_set_false:Nn \l_pdfannot_F_bitset {Hidden} + \bitset_set_false:Nn \l_pdfannot_F_bitset {Invisible} + \bitset_set_false:Nn \l_pdfannot_F_bitset {NoView} + \pdfannot_dict_put:nnn {link/URI}{F}{ \bitset_to_arabic:N \l_pdfannot_F_bitset } + \pdfannot_dict_put:nnn {link/GoTo}{F}{ \bitset_to_arabic:N \l_pdfannot_F_bitset } + \pdfannot_dict_put:nnn {link/GoToR}{F}{ \bitset_to_arabic:N \l_pdfannot_F_bitset } + \pdfannot_dict_put:nnn {link/Launch}{F}{ \bitset_to_arabic:N \l_pdfannot_F_bitset } + \pdfannot_dict_put:nnn {link/Named}{F}{ \bitset_to_arabic:N \l_pdfannot_F_bitset } + } +\hook_gput_code:nnn {begindocument} {pdf} + { + \pdfmeta_standard_verify:nF { annot_flags } + { \__pdfmeta_verify_pdfa_annot_flags: } + \pdfmeta_standard_verify:nnF { min_pdf_version } + { \pdf_version: } + { \msg_warning:nnxxx {pdf}{wrong-pdfversion} + {\pdf_version:}{low} + { + \pdfmeta_standard_item:n{type} + - + \pdfmeta_standard_item:n{level} + } + } + \pdfmeta_standard_verify:nnF { max_pdf_version } + { \pdf_version: } + { \msg_warning:nnxxx {pdf}{wrong-pdfversion} + {\pdf_version:}{high} + { + \pdfmeta_standard_item:n{type} + - + \pdfmeta_standard_item:n{level} + } + } + } +\prop_new:c { g__pdfmeta_standard_pdf/A-1B_prop } +\prop_gset_from_keyval:cn { g__pdfmeta_standard_pdf/A-1B_prop } + { + ,name = pdf/A-1B + ,type = A + ,level = 1 + ,conformance = B + ,year = 2005 + ,min_pdf_version = 1.4 %minimum + ,max_pdf_version = 1.4 %minimum + ,no_encryption = + ,no_external_content = % no F, FFilter, or FDecodeParms in stream dicts + ,no_embed_content = % no EF key in filespec, no /Type/EmbeddedFiles + ,max_string_size = 65535 + ,max_array_size = 8191 + ,max_dict_size = 4095 + ,max_obj_num = 8388607 + ,max_nest_qQ = 28 + ,named_actions = {NextPage, PrevPage, FirstPage, LastPage} + ,annot_flags = + %booleans. Only the existence of the key matter. + %If the entry is added it means a requirements is there + %(in most cases "don't use ...") + % + %=============== + % Rule 6.1.13-1 CosDocument, isOptionalContentPresent == false + ,Catalog_no_OCProperties = + %=============== + % Rule 6.6.1-1: PDAction, S == "GoTo" || S == "GoToR" || S == "Thread" + % || S == "URI" || S == "Named" || S == "SubmitForm" + % means: no /S/Launch, /S/Sound, /S/Movie, /S/ResetForm, /S/ImportData, + % /S/JavaScript, /S/Hide + ,annot_action_A = {GoTo,GoToR,Thread,URI,Named,SubmitForm} + %=============== + % Rule 6.6.2-1: PDAnnot, Subtype != "Widget" || AA_size == 0 + % means: no AA dictionary + ,annot_widget_no_AA = + %=============== + % Rule 6.9-2: PDAnnot, Subtype != "Widget" || (A_size == 0 && AA_size == 0) + % (looks like a tightening of the previous rule) + ,annot_widget_no_A_AA = + %=============== + % Rule 6.9-1 PDAcroForm, NeedAppearances == null || NeedAppearances == false + ,form_no_NeedAppearances = + %=============== + %Rule 6.9-3 PDFormField, AA_size == 0 + ,form_no_AA = + %=============== + % to be continued https://docs.verapdf.org/validation/pdfa-part1/ + % - Outputintent/colorprofiles requirements + % an outputintent should be loaded and is unique. + ,outputintent_A = {GTS_PDFA1} + % - no Alternates key in image dictionaries + % - no OPI, Ref, Subtype2 with PS key in xobjects + % - Interpolate = false in images + % - no TR, TR2 in ExtGstate + } + +\prop_new:c { g__pdfmeta_standard_pdf/A-2B_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-2B_prop } + { g__pdfmeta_standard_pdf/A-1B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2B_prop }{name}{pdf/A-2B} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2B_prop }{year}{2011} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2B_prop }{level}{2} +\prop_gremove:cn + { g__pdfmeta_standard_pdf/A-2B_prop } + { embed_content} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2B_prop }{max_pdf_version}{1.7} +\prop_new:c { g__pdfmeta_standard_pdf/A-2U_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-2U_prop } + { g__pdfmeta_standard_pdf/A-2B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2U_prop }{name}{pdf/A-2U} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2U_prop }{conformance}{U} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2U_prop }{unicode}{} + +\prop_new:c { g__pdfmeta_standard_pdf/A-2A_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-2A_prop } + { g__pdfmeta_standard_pdf/A-2B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2A_prop }{name}{pdf/A-2A} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2A_prop }{conformance}{A} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-2A_prop }{tagged}{} + +\prop_new:c { g__pdfmeta_standard_pdf/A-3B_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-3B_prop } + { g__pdfmeta_standard_pdf/A-2B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3B_prop }{name}{pdf/A-3B} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3B_prop }{year}{2012} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3B_prop }{level}{3} +\prop_gremove:cn + { g__pdfmeta_standard_pdf/A-3B_prop } + { embed_content} +\prop_new:c { g__pdfmeta_standard_pdf/A-3U_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-3U_prop } + { g__pdfmeta_standard_pdf/A-3B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3U_prop }{name}{pdf/A-3U} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3U_prop }{conformance}{U} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3U_prop }{unicode}{} + +\prop_new:c { g__pdfmeta_standard_pdf/A-3A_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-3A_prop } + { g__pdfmeta_standard_pdf/A-3B_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3A_prop }{name}{pdf/A-3A} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3A_prop }{conformance}{A} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-3A_prop }{tagged}{} + +\prop_new:c { g__pdfmeta_standard_pdf/A-4_prop } +\prop_gset_eq:cc + { g__pdfmeta_standard_pdf/A-4_prop } + { g__pdfmeta_standard_pdf/A-3U_prop } +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-4_prop }{name}{pdf/A-4} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-4_prop }{level}{4} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-4_prop }{min_pdf_version}{2.0} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-4_prop }{year}{2020} +\prop_gput:cnn + { g__pdfmeta_standard_pdf/A-4_prop }{Trailer_no_Info}{} +\prop_gremove:cn + { g__pdfmeta_standard_pdf/A-4_prop }{conformance} +\prop_gremove:cn + { g__pdfmeta_standard_pdf/A-4_prop }{max_pdf_version} +\prop_new:N \g__pdfmeta_outputintents_prop +\keys_define:nn { document / metadata } + { + colorprofiles .code:n = + { + \keys_set:nn { document / metadata / colorprofiles }{#1} + } + } +\keys_define:nn { document / metadata / colorprofiles } + { + ,A .code:n = + { + \tl_if_blank:nF {#1} + { + \prop_gput:Nnn \g__pdfmeta_outputintents_prop + { GTS_PDFA1 } {#1} + } + } + ,a .code:n = + { + \tl_if_blank:nF {#1} + { + \prop_gput:Nnn \g__pdfmeta_outputintents_prop + { GTS_PDFA1 } {#1} + } + } + ,X .code:n = + { + \tl_if_blank:nF {#1} + { + \prop_gput:Nnn \g__pdfmeta_outputintents_prop + { GTS_PDFX } {#1} + } + } + ,x .code:n = + { + \tl_if_blank:nF {#1} + { + \prop_gput:Nnn \g__pdfmeta_outputintents_prop + { GTS_PDFX } {#1} + } + } + ,unknown .code:n = + { + \tl_if_blank:nF {#1} + { + \exp_args:NNo + \prop_gput:Nnn \g__pdfmeta_outputintents_prop + { \l_keys_key_str } {#1} + } + } + } +\pdfdict_new:n {l_pdfmeta/outputintent} +\pdfdict_put:nnn {l_pdfmeta/outputintent} + {Type}{/OutputIntent} +\prop_const_from_keyval:cn { c__pdfmeta_colorprofile_sRGB.icc} + { + ,OutputConditionIdentifier=IEC~sRGB + ,Info=IEC~61966-2.1~Default~RGB~colour~space~-~sRGB + ,RegistryName=http://www.iec.ch + ,N = 3 + } +\prop_const_from_keyval:cn { c__pdfmeta_colorprofile_FOGRA39L_coated.icc} + { + ,OutputConditionIdentifier=FOGRA39L~Coated + ,Info={Offset~printing,~according~to~ISO~12647-2:2004/Amd~1,~OFCOM,~ % + paper~type~1~or~2~=~coated~art,~115~g/m2,~tone~value~increase~ + curves~A~(CMY)~and~B~(K)} + ,RegistryName=http://www.fogra.org + ,N = 4 + } +\cs_new_protected:Npn \__pdfmeta_embed_colorprofile:n #1%#1 file name + { + \pdf_object_if_exist:nF { __color_icc_ #1 } + { + \pdf_object_new:nn { __color_icc_ #1 }{fstream} + \pdf_object_write:nx { __color_icc_ #1 } + { + {/N\c_space_tl + \prop_item:cn{c__pdfmeta_colorprofile_#1}{N} + } + {#1} + } + } + } + +\cs_new_protected:Npn \__pdfmeta_write_outputintent:nn #1 #2 %#1 file name, #2 subtype + { + \group_begin: + \pdfdict_put:nnx {l_pdfmeta/outputintent}{S}{/\str_convert_pdfname:n{#2}} + \pdfdict_put:nnx {l_pdfmeta/outputintent} + {DestOutputProfile} + {\pdf_object_ref:n{ __color_icc_ #1 }} + \clist_map_inline:nn { OutputConditionIdentifier, Info, RegistryName } + { + \prop_get:cnNT + { c__pdfmeta_colorprofile_#1} + { ##1 } + \l__pdfmeta_tmpa_tl + { + \pdf_string_from_unicode:nVN {utf8/string}\l__pdfmeta_tmpa_tl\l__pdfmeta_tmpa_str + \pdfdict_put:nnx + {l_pdfmeta/outputintent}{##1}{\l__pdfmeta_tmpa_str} + } + } + \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n {l_pdfmeta/outputintent} } + \pdfmanagement_add:nnx {Catalog}{OutputIntents}{\pdf_object_ref_last:} + \group_end: + } + +\AddToHook{begindocument/end} + { + \pdfmeta_standard_verify:nTF {outputintent_A} + { + \prop_map_inline:Nn \g__pdfmeta_outputintents_prop + { + \__pdfmeta_embed_colorprofile:n + {#2} + \__pdfmeta_write_outputintent:nn + {#2} + {#1} + } + } + { + \exp_args:NNx + \prop_if_in:NnF + \g__pdfmeta_outputintents_prop + { \pdfmeta_standard_item:n { outputintent_A } } + { + \exp_args:NNx + \prop_gput:Nnn + \g__pdfmeta_outputintents_prop + { \pdfmeta_standard_item:n { outputintent_A } } + { sRGB.icc } + } + \exp_args:NNx + \prop_get:NnN + \g__pdfmeta_outputintents_prop + { \pdfmeta_standard_item:n { outputintent_A } } + \l__pdfmeta_tmpb_tl + \exp_args:NV \__pdfmeta_embed_colorprofile:n \l__pdfmeta_tmpb_tl + \prop_map_inline:Nn \g__pdfmeta_outputintents_prop + { + \exp_args:NV + \__pdfmeta_write_outputintent:nn + \l__pdfmeta_tmpb_tl + { #1 } + } + } + } +\cs_new_protected:Npn \pdfmeta_set_regression_data: + { \__pdf_backend_set_regression_data: } +%% File: l3pdftools.dtx +\cs_generate_variant:Nn \str_convert_pdfname:n { e } + +\cs_new:Npn \pdf_name_from_unicode_e:n #1 + { + \__kernel_pdf_name_from_unicode_e:n { #1 } + } + +\cs_generate_variant:Nn \pdf_name_from_unicode_e:n {V} +\bool_lazy_any:nTF + { + \sys_if_engine_luatex_p: + \sys_if_engine_xetex_p: + } + { + \prop_gput:Nnn \g__str_alias_prop { default } { } + } + { + \prop_gput:Nnn \g__str_alias_prop { default } { utf8 } + } +\cs_new:Npn \pdf_string_from_unicode:nnN #1 #2 #3 + { + \cs_if_exist_use:cF { __pdf_string_from_unicode_#1:nN } + { + \__kernel_msg_error:nnn { pdf } { unknown-convert } {#1} + \use_none:nn + } + { #2 } #3 + } + +\cs_generate_variant:Nn \pdf_string_from_unicode:nnN {nVN} +%% TODO Names need a review when it is clear which converters +%% are actually needed +%% string conversions and printing +%% we assume here that the text purify step has been done. The input is +%% a list of (utf8) chars. +%% str convert, not expandable. + + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf8/string-raw:nN } #1 #2 + { + \str_set_convert:Nnnn #2 + { #1 } + { default } + {utf8/string} + } + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf8/string:nN } #1 #2 + { + \use:c { __pdf_string_from_unicode_utf8/string-raw:nN } { #1 } #2 + \str_put_left:Nn #2 {(} + \str_put_right:Nn #2 {)} + } +\cs_new_protected:cpx { __pdf_string_from_unicode_utf8/URI-raw:nN } #1 #2 + { + \exp_not:N \str_set_convert:Nnnn #2 + { #1 } + { default } + {utf8/url} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 3A} {:} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 2F} {/} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 23} {\c_hash_str} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 5B} {[} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 5D} {]} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 40} {\c_atsign_str} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 21} {!} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 24} {\c_dollar_str} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 26} {\c_ampersand_str} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 27} {'} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 2A} {*} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 2B} {+} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 2C} {,} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 3B} {;} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 3D} {=} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 3F} {?} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 30} {0} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 31} {1} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 32} {2} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 33} {3} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 34} {4} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 35} {5} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 36} {6} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 37} {7} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 38} {8} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 39} {9} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 28} {\c_backslash_str(} + \exp_not:N \str_replace_all:Nnn #2 {\c_percent_str 29} {\c_backslash_str)} + } + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf8/URI:nN } #1 #2 + { + \use:c { __pdf_string_from_unicode_utf8/URI-raw:nN } {#1} #2 + \str_put_left:Nn #2 {(} + \str_put_right:Nn #2 {)} + } +\cs_new_protected:cpn { __pdf_string_from_unicode_utf16/string-raw:nN } #1 #2 + { + \str_set_convert:Nnnn #2 + { #1 } + { default } + {utf16/string} + } + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf16/string:nN } #1 #2 + { + \use:c { __pdf_string_from_unicode_utf16/string-raw:nN } {#1} #2 + \str_put_left:Nn #2 {(} + \str_put_right:Nn #2 {)} + } + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf16/hex-raw:nN } #1 #2 + { + \str_set_convert:Nnnn #2 + { #1 } + { default } + {utf16/hex} + } + +\cs_new_protected:cpn { __pdf_string_from_unicode_utf16/hex:nN } #1 #2 + { + \use:c { __pdf_string_from_unicode_utf16/hex-raw:nN } {#1} #2 + \str_put_left:Nn #2 {<} + \str_put_right:Nn #2 {>} + } + +\cs_new_protected:Npn \pdf_bdc:nn #1 #2 { \__pdf_backend_bdc:nn { #1 }{ #2 } } +\cs_new_protected:Npn \pdf_bdcobject:nn #1 #2 { \__pdf_backend_bdcobject:nn { #1 }{ #2 } } +\cs_new_protected:Npn \pdf_bdcobject:n #1 { \__pdf_backend_bdcobject:n { #1 } } +\cs_new_protected:Npn \pdf_bmc:n #1 { \__pdf_backend_bmc:n { #1 } } +\cs_new_protected:Npn \pdf_emc: { \__pdf_backend_emc: } +%% File: l3pdffile.dtx + +\cs_new_protected:Npn \__pdffile_filename_convert_to_print:nN #1 #2 + {\pdf_string_from_unicode:nnN {utf16/hex}{#1}{#2}} +\msg_new:nnn { pdffile } { file-not-found } + { + File~'\tl_to_str:n{#1}'~not~found + } + +\msg_new:nnn { pdffile } { mimetype-missing } + { + Mime~type~not~set~for~file~'\tl_to_str:n{#1}' + } + +\msg_new:nnn { pdffile } { target-name-missing } + { + a~target~name~for~the~/Filespec~dictionary~is~missing. + } + +\msg_new:nnn { pdffile } { object-exists } + { + object~name~'#1'~is~already~used. + } + +\msg_new:nnn { pdffile } { show-files } + { + The~following~files~have~been~embedded\\ + #1 + } +\tl_new:N \l__pdffile_tmpa_tl +\tl_new:N \l__pdffile_tmpb_tl +\str_new:N \l__pdffile_tmpa_str +\str_new:N \l__pdffile_tmpb_str +\str_new:N \l__pdffile_ext_str +\tl_new:N \l__pdffile_automimetype_tl +\tl_new:N \l__pdffile_embed_ref_tl +\prop_new:N \g_pdffile_mimetypes_prop +\prop_gset_from_keyval:Nn \g_pdffile_mimetypes_prop + { + ,.css = text/css + ,.csv = text/csv + ,.html= text/html + ,.dtx = text/plain %or application/x-tex, not in iana.org list + ,.eps = application/postscript + ,.jpg = image/jpeg + ,.mp4 = video/mp4 + ,.pdf = application/pdf + ,.png = image/png + ,.tex = text/plain %or application/x-tex, not in iana.org list + ,.txt = text/plain + ,.sty = text/plain + ,.xml = text/xml + } +\str_new:N \l_pdffile_source_name_str +\pdfdict_new:n { l_pdffile } +\pdfdict_put:nnn { l_pdffile }{Type}{/EmbeddedFile} +\pdfdict_new:n { l_pdffile/Params } +\pdfdict_put:nnn { l_pdffile/Params } + {ModDate} { (\file_timestamp:n { \l_pdffile_source_name_str }) } +\pdfdict_put:nnn { l_pdffile/Params } + {Size} { \file_size:n { \l_pdffile_source_name_str } } +\pdfdict_put:nnn { l_pdffile/Params } + {CheckSum} { (\file_mdfive_hash:n { \l_pdffile_source_name_str }) } +\pdfdict_new:n { l_pdffile/streamParams } +\pdfdict_put:nnn { l_pdffile/streamParams } + {ModDate} { + ( + D:\int_use:N\c_sys_year_int + \int_compare:nNnT{\c_sys_month_int}<{10}{0} + \int_use:N\c_sys_month_int + \int_compare:nNnT{\c_sys_day_int}<{10}{0} + \int_use:N\c_sys_day_int + ) + } +\pdfdict_new:n { l_pdffile/Filespec } +\pdfdict_put:nnn { l_pdffile/Filespec } + {Type} { /Filespec } +\pdfdict_put:nnn { l_pdffile/Filespec } + {AFRelationship} { /Unspecified } + +\prop_new:N \g_pdffile_embed_prop +\cs_new_protected:Npn \pdffile_embed_show: + { + \msg_show:nnx + {pdffile}{show-files} + { + \prop_map_function:NN {\g_pdffile_embed_prop} \msg_show_item:nn + } + } +\cs_new_protected:Npn \__pdffile_mimetype_set:nN #1 #2 + { + \file_parse_full_name:nNNN + {#1} + \l__pdffile_tmpa_str %unused + \l__pdffile_tmpb_str %unused + \l__pdffile_ext_str + %check if Subtype has been set + \pdfdict_get:nnN { l_pdffile}{Subtype}\l__pdffile_tmpa_tl + %if not look up in the prop: + \quark_if_no_value:NT \l__pdffile_tmpa_tl + { + \prop_get:NVNTF + \g_pdffile_mimetypes_prop + \l__pdffile_ext_str + \l__pdffile_tmpb_tl + { + \tl_set:Nx #2 {/Subtype~\pdf_name_from_unicode_e:V \l__pdffile_tmpb_tl} + } + { + \msg_warning:nnx { pdffile }{ mimetype-missing} {#1} + \tl_clear:N #2 + } + } + } + +\cs_generate_variant:Nn \__pdffile_mimetype_set:nN {VN} + +\cs_new_protected:Npn \__pdffile_fstream_write:nN #1 #2 + { + \pdf_object_unnamed_write:nx { fstream } + { + { + #2 + \pdfdict_use:n { l_pdffile} + \pdfdict_if_empty:nF { l_pdffile/Params} + { + /Params + << + \pdfdict_use:n { l_pdffile/Params} + >> + } + } + { #1 } + } + \tl_clear:N \l__pdffile_automimetype_tl + } + +\cs_generate_variant:Nn \__pdffile_fstream_write:nN {VN} + +\cs_new_protected:Npn \__pdffile_stream_write:nN #1 #2 + { + \pdf_object_unnamed_write:nx { stream } + { + { + #2 + \pdfdict_use:n { l_pdffile} + \pdfdict_if_empty:nF { l_pdffile/streamParams} + { + /Params + << + \pdfdict_use:n { l_pdffile/streamParams} + >> + } + } + { \exp_not:n { #1 } } + } + \tl_clear:N \l__pdffile_automimetype_tl + } + +\cs_generate_variant:Nn \__pdffile_stream_write:nN {VN} + +\cs_new_protected:Npn \__pdffile_filespec_write:nnn #1 #2 #3 + { + \tl_if_blank:nT { #2 } + { + \msg_error:nn {pdffile}{target-name-missing} + } + { + \group_begin: + \__pdffile_filename_convert_to_print:nN { #2 } \l__pdffile_tmpa_str + \pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l__pdffile_tmpa_str } + \pdfdict_put:nnx {l_pdffile/Filespec}{UF}{ \l__pdffile_tmpa_str } + \pdf_object_write:nx { #1 } + { + \pdfdict_use:n { l_pdffile/Filespec} + \tl_if_empty:nF { #3 } + { + /EF <> + } + } + \group_end: + } + } + +\cs_set_eq:NN \pdffile_filespec:nnn \__pdffile_filespec_write:nnn +\cs_generate_variant:Nn \pdffile_filespec:nnn {nnx} +\cs_new_protected:Npn \pdffile_embed_file:nnn #1 #2 #3 + { % if #1 empty => only filespec + % if #2 empty => = #1 + \pdf_object_if_exist:nTF { #3 } + { + \msg_error:nnn { pdffile }{ object-exists } { #3 } + } + { + \tl_if_blank:nTF { #1 } + { + \tl_set:Nn \l__pdffile_embed_ref_tl {} + } + { + \file_get_full_name:nNTF {#1} \l_pdffile_source_name_str + { + \__pdffile_mimetype_set:VN + \l_pdffile_source_name_str + \l__pdffile_automimetype_tl + \__pdffile_fstream_write:VN + \l_pdffile_source_name_str + \l__pdffile_automimetype_tl + \tl_set:Nx \l__pdffile_embed_ref_tl { \pdf_object_ref_last: } + } + { + \msg_error:nnn { pdffile }{ file-not-found }{ #1 } + } + + } + \prop_gput:Nnx + \g_pdffile_embed_prop + { #3 } + { + { \tl_if_blank:nTF { #1 } {filespec}{file} } + {\l_pdffile_source_name_str} + { + \tl_if_blank:nTF { #2 } + { \l_pdffile_source_name_str } + { \tl_to_str:n{#2}} + } + } + \tl_if_blank:nTF { #2 } + { + \pdf_object_new:nn { #3 } {dict} + \exp_args:Nnnx + \__pdffile_filespec_write:nnn + %#1 dict, #2 target file name, #3 object ref + { #3 } + { #1 } + {\l__pdffile_embed_ref_tl} + } + { + \pdf_object_new:nn { #3 } {dict} + \exp_args:Nnnx + \__pdffile_filespec_write:nnn + %#1 dict, #2 target file name, #3 object ref + { #3 } + { #2 } + {\l__pdffile_embed_ref_tl} + } + } + } + +\cs_new_protected:Npn \pdffile_embed_stream:nnn #1 #2 #3 + { + % if #2 empty => error + \pdf_object_if_exist:nTF { #3 } + { + \msg_error:nnn { pdffile }{ object-exists } { #3 } + } + { + \prop_gput:Nnx + \g_pdffile_embed_prop + { #3 } + {{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}} + \tl_if_blank:nTF {#2} + { \__pdffile_mimetype_set:nN {stream.txt}\l__pdffile_automimetype_tl} + { \__pdffile_mimetype_set:nN { #2 } \l__pdffile_automimetype_tl } + \__pdffile_stream_write:nN + { #1 } + \l__pdffile_automimetype_tl + \tl_set:Nx \l__pdffile_embed_ref_tl { \pdf_object_ref_last: } + \pdf_object_new:nn { #3 } {dict} + \exp_args:Nnxx + \__pdffile_filespec_write:nnn + %#1 dict, #2 target file name, #3 object ref + { #3 } + { \tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}} } + {\l__pdffile_embed_ref_tl} + } + } + +%% +%% +%% End of file `pdfmanagement-testphase.ltx'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty new file mode 100644 index 000000000..34ad090aa --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty @@ -0,0 +1,47 @@ +%% +%% This is file `pdfmanagement-testphase.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pdfmanagement-testphase.dtx (with options: `package') +%% +%% Copyright (C) 2019-2021 The LaTeX Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: pdfmanagement-testphase.dtx +\ProvidesExplPackage{pdfmanagement-testphase}{2022-08-24}{0.95r} + {LaTeX PDF management testphase bundle} +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2020-10-01}{}{ + \PackageWarning{pdfmanagement-testphase} + {This~package~needs~LaTeX~2020-10-01~or~newer. + \MessageBreak Loading~is~aborted.}{} + \DeclareOption { debug }{} + \newcommand\DeclareDocumentMetadata[1]{} + \newcommand\DocumentMetadata[1]{} + \ProcessOptions\relax + } +\IfFormatAtLeastTF{2020-10-01}{}{\endinput} + +\DeclareOption { debug } + { + \msg_redirect_module:nnn { pdf } { none } { warning } + } + +\ProcessOptions\relax +\IfFileExists{tagpdf-base.sty} + {\RequirePackage{tagpdf-base}}{} +\input{pdfmanagement-testphase.ltx} +%% +%% +%% End of file `pdfmanagement-testphase.sty'. diff --git a/texmf/tex/latex/pdfmanagement-testphase/transparent-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/transparent-ltx.sty new file mode 100644 index 000000000..bf44fbeb2 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/transparent-ltx.sty @@ -0,0 +1,26 @@ +%% +%% This is file `transparent-ltx.sty', +%% a replacement for transparent sty from Heiko Oberdiek +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{transparent-ltx}{2022-08-24}{0.95r} + {Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}% + +\RequirePackage{l3opacity} + +\NewDocumentCommand{\transparent} { m } + { + \opacity_select:n{\fp_eval:n{ min(max(0,#1),1) } } + } + +\NewDocumentCommand{\texttransparent}{m m} + { + \mode_leave_vertical: + \group_begin: + \transparent{#1} + #2 + \group_end: + } + + +\endinput diff --git a/texmf/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/texmf/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty new file mode 100644 index 000000000..88c8bf739 --- /dev/null +++ b/texmf/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty @@ -0,0 +1,84 @@ +%% LaTeX2e file `xcolor-patches.sty' +%% +\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-08-24 v0.95r patch xcolor for l3color] +\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{} + +\ExplSyntaxOn +\cs_set_protected:Npn \expl@color@set@@nnn #1#2#3 + { + \color_set:nnn{#1}{#2}{#3} + } + +\cs_set_protected:Npn \expl@color@set@eq@@nn #1 #2 + { + \color_if_exist:nT{#2} + { + \color_set_eq:nn{#1}{#2} + } + } +\ExplSyntaxOff +\def\XC@definec@lor[#1]#2[#3]#4#5% + {\begingroup + \XC@sdef\@@cls{#1}\XC@edef\@@nam{#2}\edef\colornameprefix{#3}% + \XC@logdef\@@nam + \XC@getmodclr02{#4}{#5}{\let\@@tmp\relax}% + {\ifx\@@mod\XC@mod@named + \XC@c@l@rlet\@@nam\@@clr + \else + \ifx\@@cls\XC@mod@ps + \edef\@@drv{\@@mod\space\@@clr}\def\@@hue{0}% + \edef\@@clr{\@nameuse{XC@clr@\@@mod @white}}% + \else + \ifconvertcolorsD + \let\@@tmp\@@mod\XC@sdef\@@mod{\XC@tgt@mod\@@tmp}% + \convertcolorspec\@@tmp\@@clr\@@mod\@@clr + \fi + \XC@coremodel\@@mod\@@clr + \csname color@\@@mod\expandafter\endcsname + \expandafter\@@drv\expandafter{\@@clr}% + \ifcase\XC@@xcp@ + \immediate\write\XC@@xcp{/\colornameprefix\@@nam{\expandafter + \XC@strip@comma\@@clr,,\@nnil}XC\@@mod}% + \let\@@cls\XC@mod@named + \fi + \ifx\@@cls\@empty\else + \let\@@tmp\@@cls + \@nameuse{define@color@\@@cls}\@@nam\@@drv + \csname color@\@@tmp\expandafter\endcsname + \expandafter\@@drv\expandafter{\@@nam}% + \fi + \fi + \toks@\expandafter{\@@drv}% + \edef\@@tmp + {\ifglobalcolors\global\else\xglobal@\fi + \noexpand\@namedef{\@backslashchar color@\@@nam}% + {\noexpand\xcolor@{\@@cls}{\the\toks@}{\@@mod}{\@@clr}}% + \noexpand\expl@color@set@@nnn{\@@nam}{\@@mod}{\@@clr}}% + \fi}% + \expandafter\endgroup\@@tmp\xglobal@stop} +\def\XC@c@l@rlet#1#2% + {\@ifundefinedcolor{#2}% + {\c@lor@error{`#2'}\let\@@tmp\@empty}% + {\edef\@@tmp + {\ifglobalcolors\global\else\xglobal@\fi + \noexpand\XC@let@cc{\@backslashchar color@#1}{\@backslashchar color@#2}% + \noexpand\expl@color@set@eq@@nn{#1}{#2}}}} + +%re-predefine the colors +\definecolorset{rgb/hsb/cmyk/gray}{}{}% + {brown,.75,.5,.25/.083333,.66667,.75/0,.25,.5,.25/.5475;% + lime,.75,1,0/.20833,1,1/.25,0,1,0/.815;% + orange,1,.5,0/.083333,1,1/0,.5,1,0/.595;% + pink,1,.75,.75/0,.25,1/0,.25,.25,0/.825;% + purple,.75,0,.25/.94444,1,.75/0,.75,.5,.25/.2525;% + teal,0,.5,.5/.5,1,.5/.5,0,0,.5/.35;% + violet,.5,0,.5/.83333,1,.5/0,.5,0,.5/.205}% +\definecolorset{cmyk/rgb/hsb/gray}{}{}% + {olive,0,0,1,.5/.5,.5,0/.16667,1,.5/.39} +\definecolorset{gray/rgb/hsb/cmyk}{}{}% + {darkgray,.25/.25,.25,.25/0,0,.25/0,0,0,.75;% + gray,.5/.5,.5,.5/0,0,.5/0,0,0,.5;% + lightgray,.75/.75,.75,.75/0,0,.75/0,0,0,.25} + +\XC@@names +\endinput From 91d73ddd8539f4163564ec7448cf0d769127faf9 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 22:09:32 +0200 Subject: [PATCH 09/13] Also need tagpdf --- texmf/tex/latex/tagpdf/tagpdf-base.sty | 112 + .../tex/latex/tagpdf/tagpdf-debug-generic.sty | 79 + texmf/tex/latex/tagpdf/tagpdf-debug-lua.sty | 24 + texmf/tex/latex/tagpdf/tagpdf-debug.sty | 218 ++ texmf/tex/latex/tagpdf/tagpdf-luatex.def | 78 + .../latex/tagpdf/tagpdf-mc-code-generic.sty | 424 +++ texmf/tex/latex/tagpdf/tagpdf-mc-code-lua.sty | 309 ++ texmf/tex/latex/tagpdf/tagpdf.lua | 707 +++++ texmf/tex/latex/tagpdf/tagpdf.sty | 2701 +++++++++++++++++ texmf/tex/latex/tagpdf/tagpdfdocu-patches.sty | 288 ++ 10 files changed, 4940 insertions(+) create mode 100644 texmf/tex/latex/tagpdf/tagpdf-base.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf-debug-generic.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf-debug-lua.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf-debug.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf-luatex.def create mode 100644 texmf/tex/latex/tagpdf/tagpdf-mc-code-generic.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf-mc-code-lua.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdf.lua create mode 100644 texmf/tex/latex/tagpdf/tagpdf.sty create mode 100644 texmf/tex/latex/tagpdf/tagpdfdocu-patches.sty diff --git a/texmf/tex/latex/tagpdf/tagpdf-base.sty b/texmf/tex/latex/tagpdf/tagpdf-base.sty new file mode 100644 index 000000000..a268313ab --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-base.sty @@ -0,0 +1,112 @@ +%% +%% This is file `tagpdf-base.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf.dtx (with options: `base') +%% tagpdf-mc-generic.dtx (with options: `base') +%% tagpdf-mc-shared.dtx (with options: `base') +%% tagpdf-struct.dtx (with options: `base') +%% tagpdf-checks.dtx (with options: `base') +%% tagpdf-user.dtx (with options: `base') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf.dtx +\ProvidesExplPackage {tagpdf-base} {2022-08-24} {0.97} + {part of tagpdf - provide base, no-op versions of the user commands } +\AddToHook{begindocument} + { + \str_case:VnF \c_sys_backend_str + { + { luatex } { \cs_new_protected:Npn \__tag_whatsits: {} } + { dvisvgm } { \cs_new_protected:Npn \__tag_whatsits: {} } + } + { + \cs_new_protected:Npn \__tag_whatsits: {\tex_special:D {} } + } + } + +\cs_new_protected:Npn \tag_stop:{} +\cs_new_protected:Npn \tag_start:{} +\cs_new_protected:Npn \tag_stop:n{} +\cs_new_protected:Npn \tag_start:n{} + +%% File: tagpdf-mc-generic.dtx +\cs_new_protected:Npn \tag_mc_begin:n #1 { \__tag_whatsits: } +\cs_new_protected:Nn \tag_mc_end:{ \__tag_whatsits: } + +%% File: tagpdf-mc-shared.dtx + +\cs_new_protected:Npn \tag_mc_use:n #1 { \__tag_whatsits: } +\cs_new_protected:Npn \tag_mc_artifact_group_begin:n #1 {} +\cs_new_protected:Npn \tag_mc_artifact_group_end:{} +\cs_new_protected:Npn \tag_mc_end_push: {} +\cs_new_protected:Npn \tag_mc_begin_pop:n #1 {} +%% File: tagpdf-struct.dtx +\newcounter { g__tag_struct_abs_int } +\int_gzero:N \c@g__tag_struct_abs_int +\tl_new:N \g__tag_struct_stack_current_tl +\tl_gset:Nn \g__tag_struct_stack_current_tl {\int_use:N\c@g__tag_struct_abs_int} +\cs_new:Npn \__tag_get_data_struct_num: + { + \g__tag_struct_stack_current_tl + } +\cs_new_protected:Npn \tag_struct_begin:n #1 {\int_gincr:N \c@g__tag_struct_abs_int} +\cs_new_protected:Npn \tag_struct_end:{} +\cs_new_protected:Npn \tag_struct_use:n #1 {} + +%% File: tagpdf-checks.dtx +\cs_new:Npn \tag_get:n #1 { \use:c {__tag_get_data_#1: } } +\prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F } + { \prg_return_false: } +%% File: tagpdf-user.dtx + + +\NewDocumentCommand \tagpdfsetup { m }{} + +\NewDocumentCommand \tagmcbegin { m } + { + \tag_mc_begin:n {#1} + } + +\NewDocumentCommand \tagmcend { } + { + \tag_mc_end: + } + +\NewDocumentCommand \tagmcuse { m } + { + \tag_mc_use:n {#1} + } + +\NewDocumentCommand \tagstructbegin { m } + { + \tag_struct_begin:n {#1} + } + +\NewDocumentCommand \tagstructend { } + { + \tag_struct_end: + } + +\NewDocumentCommand \tagstructuse { m } + { + \tag_struct_use:n {#1} + } +\newcommand\tagpdfparaOn {} +\newcommand\tagpdfparaOff{} +%% +%% +%% End of file `tagpdf-base.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-debug-generic.sty b/texmf/tex/latex/tagpdf/tagpdf-debug-generic.sty new file mode 100644 index 000000000..185bb750b --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-debug-generic.sty @@ -0,0 +1,79 @@ +%% +%% This is file `tagpdf-debug-generic.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf-mc-generic.dtx (with options: `debug') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf-mc-generic.dtx +\ProvidesExplPackage {tagpdf-debug-generic} {2022-08-24} {0.97} + {part of tagpdf - debugging code related to marking chunks - generic mode} +\cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval + { + \__tag_check_if_active_mc:TF + { + \__tag_debug_mc_begin_insert:n { #1 } + \group_begin: %hm + \__tag_check_mc_if_nested: + \bool_gset_true:N \g__tag_in_mc_bool + \keys_set:nn { __tag / mc } {#1} + \bool_if:NTF \l__tag_mc_artifact_bool + { %handle artifact + \__tag_mc_handle_artifact:N \l__tag_mc_artifact_type_tl + \exp_args:NV + \__tag_mc_artifact_begin_marks:n \l__tag_mc_artifact_type_tl + } + { %handle mcid type + \__tag_check_mc_tag:N \l__tag_mc_key_tag_tl + \__tag_mc_handle_mcid:VV + \l__tag_mc_key_tag_tl + \l__tag_mc_key_properties_tl + \__tag_mc_begin_marks:oo{\l__tag_mc_key_tag_tl}{\l__tag_mc_key_label_tl} + \tl_if_empty:NF {\l__tag_mc_key_label_tl} + { + \exp_args:NV + \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl + } + \bool_if:NF \l__tag_mc_key_stash_bool + { + \__tag_mc_handle_stash:x { \int_use:N \c@g__tag_MCID_abs_int } + } + } + \group_end: + } + { + \__tag_debug_mc_begin_ignore:n { #1 } + } + } +\cs_set_protected:Nn \tag_mc_end: + { + \__tag_check_if_active_mc:TF + { + \__tag_debug_mc_end_insert: + \__tag_check_mc_if_open: + \bool_gset_false:N \g__tag_in_mc_bool + \tl_gset:Nn \g__tag_mc_key_tag_tl { } + \__tag_mc_emc: + \__tag_mc_end_marks: + } + { + \__tag_debug_mc_end_ignore: + } + } + +%% +%% +%% End of file `tagpdf-debug-generic.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-debug-lua.sty b/texmf/tex/latex/tagpdf/tagpdf-debug-lua.sty new file mode 100644 index 000000000..262e2bdca --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-debug-lua.sty @@ -0,0 +1,24 @@ +%% +%% This is file `tagpdf-debug-lua.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf-mc-luacode.dtx (with options: `debug') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf-mc-luacode.dtx +%% +%% +%% End of file `tagpdf-debug-lua.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-debug.sty b/texmf/tex/latex/tagpdf/tagpdf-debug.sty new file mode 100644 index 000000000..819600419 --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-debug.sty @@ -0,0 +1,218 @@ +%% +%% This is file `tagpdf-debug.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf.dtx (with options: `debug') +%% tagpdf-checks.dtx (with options: `debug') +%% tagpdf-user.dtx (with options: `debug') +%% tagpdf-mc-shared.dtx (with options: `debug') +%% tagpdf-tree.dtx (with options: `debug') +%% tagpdf-roles.dtx (with options: `debug') +%% tagpdf-struct.dtx (with options: `debug') +%% tagpdf-space.dtx (with options: `debug') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf.dtx +\ProvidesExplPackage {tagpdf-debug} {2022-08-24} {0.97} + { debug code for tagpdf } +\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput} +\prop_gput:Nnn \g_msg_module_type_prop { tag / debug} {} +\prop_gput:Nnn \g_msg_module_name_prop { tag / debug }{tagpdf~DEBUG} + + +\bool_if:NTF \g__tag_mode_lua_bool + { + \RequirePackage {tagpdf-debug-lua} + } + { + \RequirePackage {tagpdf-debug-generic} % + } +%% File: tagpdf-checks.dtx +\msg_new:nnn { tag / debug } {mc-begin} { MC~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:] } +\msg_new:nnn { tag / debug } {mc-end} { MC~end~#1~[\msg_line_context:] } + +\cs_new_protected:Npn \__tag_debug_mc_begin_insert:n #1 + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnnn { tag / debug } {mc-begin} {inserted} { #1 } + } + } +\cs_new_protected:Npn \__tag_debug_mc_begin_ignore:n #1 + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnnn { tag / debug } {mc-begin } {ignored} { #1 } + } + } +\cs_new_protected:Npn \__tag_debug_mc_end_insert: + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnn { tag / debug } {mc-end} {inserted} + } + } +\cs_new_protected:Npn \__tag_debug_mc_end_ignore: + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnn { tag / debug } {mc-end } {ignored} + } + } +\msg_new:nnn { tag / debug } {struct-begin} + { + Struct~\tag_get:n{struct_num}~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:] + } +\msg_new:nnn { tag / debug } {struct-end} + { + Struct~end~#1~[\msg_line_context:] + } + +\cs_new_protected:Npn \__tag_debug_struct_begin_insert:n #1 + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnnn { tag / debug } {struct-begin} {inserted} { #1 } + \seq_log:N \g__tag_struct_tag_stack_seq + } + } +\cs_new_protected:Npn \__tag_debug_struct_begin_ignore:n #1 + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnnn { tag / debug } {struct-begin } {ignored} { #1 } + } + } +\cs_new_protected:Npn \__tag_debug_struct_end_insert: + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnn { tag / debug } {struct-end} {inserted} + \seq_log:N \g__tag_struct_tag_stack_seq + } + } +\cs_new_protected:Npn \__tag_debug_struct_end_ignore: + { + \int_compare:nNnT { \l__tag_loglevel_int } > {0} + { + \msg_note:nnn { tag / debug } {struct-end } {ignored} + } + } +%% File: tagpdf-user.dtx + + + + +%% File: tagpdf-mc-shared.dtx + +%% File: tagpdf-tree.dtx +%% File: tagpdf-roles.dtx +%% File: tagpdf-struct.dtx +\cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val + { +\__tag_check_if_active_struct:TF + { + \group_begin: + \int_gincr:N \c@g__tag_struct_abs_int + \__tag_prop_new:c { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } + \__tag_new_output_prop_handler:n {\int_eval:n { \c@g__tag_struct_abs_int }} + \__tag_seq_new:c { g__tag_struct_kids_\int_eval:n { \c@g__tag_struct_abs_int }_seq} + \exp_args:Ne + \pdf_object_new:n + { __tag/struct/\int_eval:n { \c@g__tag_struct_abs_int } } + \__tag_prop_gput:cno + { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } + { Type } + { /StructElem } + \tl_set:Nn \l__tag_struct_stack_parent_tmpa_tl {-1} + \keys_set:nn { __tag / struct} { #1 } + \__tag_check_structure_has_tag:n { \int_eval:n {\c@g__tag_struct_abs_int} } + \tl_if_empty:NF + \l__tag_struct_key_label_tl + { + \__tag_ref_label:en{tagpdfstruct-\l__tag_struct_key_label_tl}{struct} + } + \int_compare:nNnT { \l__tag_struct_stack_parent_tmpa_tl } = { -1 } + { + \seq_get:NNF + \g__tag_struct_stack_seq + \l__tag_struct_stack_parent_tmpa_tl + { + \msg_error:nn { tag } { struct-faulty-nesting } + } + } + \seq_gpush:NV \g__tag_struct_stack_seq \c@g__tag_struct_abs_int + \seq_gpush:NV \g__tag_struct_tag_stack_seq \g__tag_struct_tag_tl + \tl_gset:NV \g__tag_struct_stack_current_tl \c@g__tag_struct_abs_int + %\seq_show:N \g__tag_struct_stack_seq + \bool_if:NF + \l__tag_struct_elem_stash_bool + {%set the parent + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { P } + { + \pdf_object_ref:e { __tag/struct/\l__tag_struct_stack_parent_tmpa_tl } + } + %record this structure as kid: + %\tl_show:N \g__tag_struct_stack_current_tl + %\tl_show:N \l__tag_struct_stack_parent_tmpa_tl + \__tag_struct_kid_struct_gput_right:xx + { \l__tag_struct_stack_parent_tmpa_tl } + { \g__tag_struct_stack_current_tl } + %\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop } + %\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq} + } + %\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop } + %\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq} + \__tag_debug_struct_begin_insert:n { #1 } + \group_end: + } +{ \__tag_debug_struct_begin_ignore:n { #1 }} + } +\cs_set_protected:Nn \tag_struct_end: + { %take the current structure num from the stack: + %the objects are written later, lua mode hasn't all needed info yet + %\seq_show:N \g__tag_struct_stack_seq +\__tag_check_if_active_struct:TF + { + \seq_gpop:NN \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl + \seq_gpop:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl + { + \__tag_check_info_closing_struct:o { \g__tag_struct_stack_current_tl } + } + { \__tag_check_no_open_struct: } + % get the previous one, shouldn't be empty as the root should be there + \seq_get:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl + { + \tl_gset:NV \g__tag_struct_stack_current_tl \l__tag_tmpa_tl + } + { + \__tag_check_no_open_struct: + } + \seq_get:NNT \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl + { + \tl_gset:NV \g__tag_struct_tag_tl \l__tag_tmpa_tl + } +\__tag_debug_struct_end_insert: + } +{\__tag_debug_struct_end_ignore:} + } + +%% File: tagpdf-space.dtx +%% +%% +%% End of file `tagpdf-debug.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-luatex.def b/texmf/tex/latex/tagpdf/tagpdf-luatex.def new file mode 100644 index 000000000..7fcc6ec60 --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-luatex.def @@ -0,0 +1,78 @@ +%% +%% This is file `tagpdf-luatex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf-backend.dtx (with options: `luatex') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf-backend.dtx +\ProvidesExplFile {tagpdf-luatex.def} {2022-08-24} {0.97} + {tagpdf~driver~for~luatex} +{ + \fontencoding{TU}\fontfamily{lmr}\fontseries{m}\fontshape{n}\fontsize{10pt}{10pt}\selectfont +} +\lua_now:e { tagpdf=require('tagpdf.lua') } +\cs_set_protected:Npn \__tag_prop_new:N #1 + { + \prop_new:N #1 + \lua_now:e { ltx.__tag.tables.\cs_to_str:N#1 = {} } + } + +\cs_set_protected:Npn \__tag_seq_new:N #1 + { + \seq_new:N #1 + \lua_now:e { ltx.__tag.tables.\cs_to_str:N#1 = {} } + } + +\cs_set_protected:Npn \__tag_prop_gput:Nnn #1 #2 #3 + { + \prop_gput:Nnn #1 { #2 } { #3 } + \lua_now:e { ltx.__tag.tables.\cs_to_str:N#1 ["#2"] = "#3" } + } + +\cs_set_protected:Npn \__tag_seq_gput_right:Nn #1 #2 + { + \seq_gput_right:Nn #1 { #2 } + \lua_now:e { table.insert(ltx.__tag.tables.\cs_to_str:N#1, "#2") } + } + + +\cs_set:Npn \__tag_seq_item:cn #1 #2 + { + \lua_now:e { tex.print(ltx.__tag.tables.#1[#2]) } + } + +\cs_set:Npn \__tag_prop_item:cn #1 #2 + { + \lua_now:e { tex.print(ltx.__tag.tables.#1["#2"]) } + } + +\cs_set_protected:Npn \__tag_seq_show:N #1 + { + \seq_show:N #1 + \lua_now:e { ltx.__tag.trace.log ("lua~sequence~array~\cs_to_str:N#1",1) } + \lua_now:e { ltx.__tag.trace.show_seq (ltx.__tag.tables.\cs_to_str:N#1) } + } + +\cs_set_protected:Npn \__tag_prop_show:N #1 + { + \prop_show:N #1 + \lua_now:e {ltx.__tag.trace.log ("lua~property~table~\cs_to_str:N#1",1) } + \lua_now:e {ltx.__tag.trace.show_prop (ltx.__tag.tables.\cs_to_str:N#1) } + } +%% +%% +%% End of file `tagpdf-luatex.def'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-mc-code-generic.sty b/texmf/tex/latex/tagpdf/tagpdf-mc-code-generic.sty new file mode 100644 index 000000000..38651bdcf --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-mc-code-generic.sty @@ -0,0 +1,424 @@ +%% +%% This is file `tagpdf-mc-code-generic.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf-mc-generic.dtx (with options: `generic') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf-mc-generic.dtx +\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-08-24} {0.97} + {part of tagpdf - code related to marking chunks - generic mode} +\__tag_prop_new:N \g__tag_MCID_byabspage_prop + +\tl_new:N \l__tag_mc_ref_abspage_tl + +\tl_new:N \l__tag_mc_tmpa_tl + +\newmarks \g__tag_mc_marks +\seq_new:N \g__tag_mc_main_marks_seq +\seq_new:N \g__tag_mc_footnote_marks_seq +\seq_new:N \g__tag_mc_multicol_marks_seq + +\seq_new:N \l__tag_mc_firstmarks_seq +\seq_new:N \l__tag_mc_botmarks_seq +\cs_new_protected:Npn \__tag_mc_begin_marks:nn #1 #2 %#1 tag, #2 label + { + \tex_marks:D \g__tag_mc_marks + { + b-, %first of begin pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + \g__tag_struct_stack_current_tl, %structure num + #1, %tag + \bool_if:NT \l__tag_mc_key_stash_bool{stash}, % stash info + #2, %label + } + \tex_marks:D \g__tag_mc_marks + { + b+, % second of begin pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + \g__tag_struct_stack_current_tl, %structure num + #1, %tag + \bool_if:NT \l__tag_mc_key_stash_bool{stash}, % stash info + #2, %label + } + } +\cs_generate_variant:Nn \__tag_mc_begin_marks:nn {oo} +\cs_new_protected:Npn \__tag_mc_artifact_begin_marks:n #1 %#1 type + { + \tex_marks:D \g__tag_mc_marks + { + b-, %first of begin pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + -1, %structure num + #1 %type + } + \tex_marks:D \g__tag_mc_marks + { + b+, %first of begin pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + -1, %structure num + #1 %Type + } + } + +\cs_new_protected:Npn \__tag_mc_end_marks: + { + \tex_marks:D \g__tag_mc_marks + { + e-, %first of end pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + \g__tag_struct_stack_current_tl, %structure num + } + \tex_marks:D \g__tag_mc_marks + { + e+, %second of end pair + \int_use:N\c@g__tag_MCID_abs_int, %mc-num + \g__tag_struct_stack_current_tl, %structure num + } + } +\cs_new_protected:Npn \__tag_mc_disable_marks: + { + \cs_set_eq:NN \__tag_mc_begin_marks:nn \use_none:nn + \cs_set_eq:NN \__tag_mc_artifact_begin_marks:n \use_none:n + \cs_set_eq:NN \__tag_mc_end_marks: \prg_do_nothing: + } +\cs_new_protected:Npn \__tag_mc_get_marks: + { + \exp_args:NNx + \seq_set_from_clist:Nn \l__tag_mc_firstmarks_seq + { \tex_firstmarks:D \g__tag_mc_marks } + \exp_args:NNx + \seq_set_from_clist:Nn \l__tag_mc_botmarks_seq + { \tex_botmarks:D \g__tag_mc_marks } + } +\cs_new_protected:Npn \__tag_mc_store:nnn #1 #2 #3 %#1 mc-prev, #2 mc-num #3 structure-num + { + %\prop_show:N \g__tag_struct_cont_mc_prop + \prop_get:NnNTF \g__tag_struct_cont_mc_prop {#1} \l__tag_tmpa_tl + { + \prop_gput:Nnx \g__tag_struct_cont_mc_prop {#1}{ \l__tag_tmpa_tl \__tag_struct_mcid_dict:n {#2}} + } + { + \prop_gput:Nnx \g__tag_struct_cont_mc_prop {#1}{ \__tag_struct_mcid_dict:n {#2}} + } + \prop_gput:Nxx \g__tag_mc_parenttree_prop + {#2} + {#3} + } +\cs_generate_variant:Nn \__tag_mc_store:nnn {xxx} +\cs_new_protected:Npn \__tag_mc_insert_extra_tmb:n #1 % #1 stream: e.g. main or footnote + { + \__tag_check_typeout_v:n {=>~ first~ \seq_use:Nn \l__tag_mc_firstmarks_seq {,~}} + \__tag_check_typeout_v:n {=>~ bot~ \seq_use:Nn \l__tag_mc_botmarks_seq {,~}} + \__tag_check_if_mc_tmb_missing:TF + { + \__tag_check_typeout_v:n {=>~ TMB~ ~ missing~ --~ inserted} + %test if artifact + \int_compare:nNnTF { \seq_item:cn { g__tag_mc_#1_marks_seq } {3} } = {-1} + { + \tl_set:Nx \l__tag_tmpa_tl { \seq_item:cn { g__tag_mc_#1_marks_seq } {4} } + \__tag_mc_handle_artifact:N \l__tag_tmpa_tl + } + { + \exp_args:Nx + \__tag_mc_bdc_mcid:n + { + \seq_item:cn { g__tag_mc_#1_marks_seq } {4} + } + \str_if_eq:eeTF + { + \seq_item:cn { g__tag_mc_#1_marks_seq } {5} + } + {} + { + %store + \__tag_mc_store:xxx + { + \seq_item:cn { g__tag_mc_#1_marks_seq } {2} + } + { \int_eval:n{\c@g__tag_MCID_abs_int} } + { + \seq_item:cn { g__tag_mc_#1_marks_seq } {3} + } + } + { + %stashed -> warning!! + } + } + } + { + \__tag_check_typeout_v:n {=>~ TMB~ not~ missing} + } + } + +\cs_new_protected:Npn \__tag_mc_insert_extra_tme:n #1 % #1 stream, eg. main or footnote + { + \__tag_check_if_mc_tme_missing:TF + { + \__tag_check_typeout_v:n {=>~ TME~ ~ missing~ --~ inserted} + \__tag_mc_emc: + \seq_gset_eq:cN + { g__tag_mc_#1_marks_seq } + \l__tag_mc_botmarks_seq + } + { + \__tag_check_typeout_v:n {=>~ TME~ not~ missing} + } + } +\cs_new_protected:Npn\__tag_add_missing_mcs:Nn #1 #2 { + \vbadness \@M + \vfuzz \c_max_dim + \vbox_set_to_ht:Nnn #1 { \box_ht:N #1 } { + \hbox_set:Nn \l__tag_tmpa_box { \__tag_mc_insert_extra_tmb:n {#2} } + \hbox_set:Nn \l__tag_tmpb_box { \__tag_mc_insert_extra_tme:n {#2} } + \int_compare:nNnT {\l__tag_loglevel_int} > { 0 } + { + \seq_log:c { g__tag_mc_#2_marks_seq} + } + \box_set_ht:Nn \l__tag_tmpa_box \c_zero_dim + \box_set_dp:Nn \l__tag_tmpa_box \c_zero_dim + \box_set_ht:Nn \l__tag_tmpb_box \c_zero_dim + \box_set_dp:Nn \l__tag_tmpb_box { \box_dp:N #1 } + \boxmaxdepth \@maxdepth + \box_use_drop:N \l__tag_tmpa_box + \vbox_unpack_drop:N #1 + \tex_kern:D -\box_dp:N \l__tag_tmpb_box + \nointerlineskip + \box_use_drop:N \l__tag_tmpb_box + } +} + +\cs_new_protected:Npn \__tag_add_missing_mcs_to_stream:Nn #1#2 + { + \__tag_check_if_active_mc:T { + \vbadness\maxdimen + \box_set_eq:NN \l__tag_tmpa_box #1 + \vbox_set_split_to_ht:NNn \l__tag_tmpa_box \l__tag_tmpa_box \c_max_dim + \exp_args:NNx + \seq_set_from_clist:Nn \l__tag_mc_firstmarks_seq + { \tex_splitfirstmarks:D \g__tag_mc_marks } + \seq_if_empty:NTF \l__tag_mc_firstmarks_seq + { + \__tag_check_typeout_v:n + { + No~ marks~ so~ use~ saved~ bot~ mark:~ + \seq_use:cn {g__tag_mc_#2_marks_seq} {,~} \iow_newline: + } + \seq_set_eq:Nc \l__tag_mc_firstmarks_seq {g__tag_mc_#2_marks_seq} + \seq_set_eq:NN \l__tag_mc_botmarks_seq \l__tag_mc_firstmarks_seq + } + { + \__tag_check_typeout_v:n + { + Pick~ up~ new~ bot~ mark! + } + \exp_args:NNx + \seq_set_from_clist:Nn \l__tag_mc_botmarks_seq + { \tex_splitbotmarks:D \g__tag_mc_marks } + } + \__tag_add_missing_mcs:Nn #1 {#2} +%% + \seq_gset_eq:cN {g__tag_mc_#2_marks_seq} \l__tag_mc_botmarks_seq +%% + } +} +\prg_new_conditional:Nnn \__tag_mc_if_in: {p,T,F,TF} + { + \bool_if:NTF \g__tag_in_mc_bool + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_eq_conditional:NNn \tag_mc_if_in: \__tag_mc_if_in: {p,T,F,TF} +\cs_set_eq:NN \__tag_mc_bmc:n \pdf_bmc:n +\cs_set_eq:NN \__tag_mc_emc: \pdf_emc: +\cs_set_eq:NN \__tag_mc_bdc:nn \pdf_bdc:nn +\cs_generate_variant:Nn \__tag_mc_bdc:nn {nx} +\cs_new_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2 + { + \int_gincr:N \c@g__tag_MCID_abs_int + \tl_set:Nx \l__tag_mc_ref_abspage_tl + { + \__tag_ref_value:enn %3 args + { + mcid-\int_use:N \c@g__tag_MCID_abs_int + } + { tagabspage } + {-1} + } + \prop_get:NoNTF + \g__tag_MCID_byabspage_prop + { + \l__tag_mc_ref_abspage_tl + } + \l__tag_mc_tmpa_tl + { + %key already present, use value for MCID and add 1 for the next + \int_gset:Nn \g__tag_MCID_tmp_bypage_int { \l__tag_mc_tmpa_tl } + \__tag_prop_gput:Nxx + \g__tag_MCID_byabspage_prop + { \l__tag_mc_ref_abspage_tl } + { \int_eval:n {\l__tag_mc_tmpa_tl +1} } + } + { + %key not present, set MCID to 0 and insert 1 + \int_gzero:N \g__tag_MCID_tmp_bypage_int + \__tag_prop_gput:Nxx + \g__tag_MCID_byabspage_prop + { \l__tag_mc_ref_abspage_tl } + {1} + } + \__tag_ref_label:en + { + mcid-\int_use:N \c@g__tag_MCID_abs_int + } + { mc } + \__tag_mc_bdc:nx + {#1} + { /MCID~\int_eval:n { \g__tag_MCID_tmp_bypage_int }~ \exp_not:n { #2 } } + } +\cs_new_protected:Npn \__tag_mc_bdc_mcid:n #1 + { + \__tag_mc_bdc_mcid:nn {#1} {} + } + +\cs_new_protected:Npn \__tag_mc_handle_mcid:nn #1 #2 %#1 tag, #2 properties + { + \__tag_mc_bdc_mcid:nn {#1} {#2} + } + +\cs_generate_variant:Nn \__tag_mc_handle_mcid:nn {VV} + +\cs_new_protected:Npn \__tag_mc_handle_stash:n #1 %1 mcidnum + { + \__tag_check_mc_used:n {#1} + \__tag_struct_kid_mc_gput_right:nn + { \g__tag_struct_stack_current_tl } + {#1} + \prop_gput:Nxx \g__tag_mc_parenttree_prop + {#1} + { \g__tag_struct_stack_current_tl } + } +\cs_generate_variant:Nn \__tag_mc_handle_stash:n { x } + +\cs_new_protected:Npn \__tag_mc_bmc_artifact: + { + \__tag_mc_bmc:n {Artifact} + } +\cs_new_protected:Npn \__tag_mc_bmc_artifact:n #1 + { + \__tag_mc_bdc:nn {Artifact}{/Type/#1} + } +\cs_new_protected:Npn \__tag_mc_handle_artifact:N #1 + % #1 is a var containing the artifact type + { + \int_gincr:N \c@g__tag_MCID_abs_int + \tl_if_empty:NTF #1 + { \__tag_mc_bmc_artifact: } + { \exp_args:NV\__tag_mc_bmc_artifact:n #1 } + } + +\cs_new:Nn \__tag_get_data_mc_tag: { \g__tag_mc_key_tag_tl } +\cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval + { + \__tag_check_if_active_mc:T + { + \group_begin: %hm + \__tag_check_mc_if_nested: + \bool_gset_true:N \g__tag_in_mc_bool + \keys_set:nn { __tag / mc } {#1} + \bool_if:NTF \l__tag_mc_artifact_bool + { %handle artifact + \__tag_mc_handle_artifact:N \l__tag_mc_artifact_type_tl + \exp_args:NV + \__tag_mc_artifact_begin_marks:n \l__tag_mc_artifact_type_tl + } + { %handle mcid type + \__tag_check_mc_tag:N \l__tag_mc_key_tag_tl + \__tag_mc_handle_mcid:VV + \l__tag_mc_key_tag_tl + \l__tag_mc_key_properties_tl + \__tag_mc_begin_marks:oo{\l__tag_mc_key_tag_tl}{\l__tag_mc_key_label_tl} + \tl_if_empty:NF {\l__tag_mc_key_label_tl} + { + \exp_args:NV + \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl + } + \bool_if:NF \l__tag_mc_key_stash_bool + { + \__tag_mc_handle_stash:x { \int_use:N \c@g__tag_MCID_abs_int } + } + } + \group_end: + } + } +\cs_set_protected:Nn \tag_mc_end: + { + \__tag_check_if_active_mc:T + { + \__tag_check_mc_if_open: + \bool_gset_false:N \g__tag_in_mc_bool + \tl_gset:Nn \g__tag_mc_key_tag_tl { } + \__tag_mc_emc: + \__tag_mc_end_marks: + } + } + +\keys_define:nn { __tag / mc } + { + tag .code:n = % the name (H,P,Span) etc + { + \tl_set:Nx \l__tag_mc_key_tag_tl { #1 } + \tl_gset:Nx \g__tag_mc_key_tag_tl { #1 } + }, + raw .code:n = + { + \tl_put_right:Nx \l__tag_mc_key_properties_tl { #1 } + }, + alt .code:n = % Alt property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \tl_put_right:Nn \l__tag_mc_key_properties_tl { /Alt~< } + \tl_put_right:No \l__tag_mc_key_properties_tl { \l__tag_tmpa_str>~ } + }, + alttext .meta:n = {alt=#1}, + actualtext .code:n = % ActualText property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \tl_put_right:Nn \l__tag_mc_key_properties_tl { /ActualText~< } + \tl_put_right:No \l__tag_mc_key_properties_tl { \l__tag_tmpa_str>~ } + }, + label .tl_set:N = \l__tag_mc_key_label_tl, + artifact .code:n = + { + \exp_args:Nnx + \keys_set:nn + { __tag / mc } + { __artifact-bool, __artifact-type=#1 } + }, + artifact .default:n = {notype} + } +%% +%% +%% End of file `tagpdf-mc-code-generic.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf-mc-code-lua.sty b/texmf/tex/latex/tagpdf/tagpdf-mc-code-lua.sty new file mode 100644 index 000000000..d109c3acc --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf-mc-code-lua.sty @@ -0,0 +1,309 @@ +%% +%% This is file `tagpdf-mc-code-lua.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf-mc-luacode.dtx (with options: `luamode') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf-mc-luacode.dtx +\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-08-24} {0.97} + {tagpdf - mc code only for the luamode } +\hook_gput_code:nnn{begindocument}{tagpdf/mc} + { + \bool_if:NT\g__tag_active_space_bool + { + \lua_now:e + { + if~luatexbase.callbacktypes.pre_shipout_filter~then~ + luatexbase.add_to_callback("pre_shipout_filter", function(TAGBOX)~ + ltx.__tag.func.space_chars_shipout(TAGBOX)~return~true~ + end, "tagpdf")~ + end + } + \lua_now:e + { + if~luatexbase.callbacktypes.pre_shipout_filter~then~ + token.get_next()~ + end + }\@secondoftwo\@gobble + { + \hook_gput_code:nnn{shipout/before}{tagpdf/lua} + { + \lua_now:e + { ltx.__tag.func.space_chars_shipout (tex.box["ShipoutBox"]) } + } + } + } + \bool_if:NT\g__tag_active_mc_bool + { + \lua_now:e + { + if~luatexbase.callbacktypes.pre_shipout_filter~then~ + luatexbase.add_to_callback("pre_shipout_filter", function(TAGBOX)~ + ltx.__tag.func.mark_shipout(TAGBOX)~return~true~ + end, "tagpdf")~ + end + } + \lua_now:e + { + if~luatexbase.callbacktypes.pre_shipout_filter~then~ + token.get_next()~ + end + }\@secondoftwo\@gobble + { + \hook_gput_code:nnn{shipout/before}{tagpdf/lua} + { + \lua_now:e + { ltx.__tag.func.mark_shipout (tex.box["ShipoutBox"]) } + } + } + } + } +\cs_new_protected:Npn \__tag_add_missing_mcs_to_stream:Nn #1#2 {} +\prg_new_conditional:Nnn \__tag_mc_if_in: {p,T,F,TF} + { + \int_compare:nNnTF + { -2147483647 } + = + {\lua_now:e + { + tex.print(tex.getattribute(luatexbase.attributes.g__tag_mc_type_attr)) + } + } + { \prg_return_false: } + { \prg_return_true: } + } + +\prg_new_eq_conditional:NNn \tag_mc_if_in: \__tag_mc_if_in: {p,T,F,TF} +\cs_new:Nn \__tag_mc_lua_set_mc_type_attr:n % #1 is a tag name + { + %TODO ltx.__tag.func.get_num_from("#1") seems not to return a suitable number?? + \tl_set:Nx\l__tag_tmpa_tl{\lua_now:e{ltx.__tag.func.output_num_from ("#1")} } + \lua_now:e + { + tex.setattribute + ( + "global", + luatexbase.attributes.g__tag_mc_type_attr, + \l__tag_tmpa_tl + ) + } + \lua_now:e + { + tex.setattribute + ( + "global", + luatexbase.attributes.g__tag_mc_cnt_attr, + \__tag_get_mc_abs_cnt: + ) + } + } + +\cs_generate_variant:Nn\__tag_mc_lua_set_mc_type_attr:n { o } + +\cs_new:Nn \__tag_mc_lua_unset_mc_type_attr: + { + \lua_now:e + { + tex.setattribute + ( + "global", + luatexbase.attributes.g__tag_mc_type_attr, + -2147483647 + ) + } + \lua_now:e + { + tex.setattribute + ( + "global", + luatexbase.attributes.g__tag_mc_cnt_attr, + -2147483647 + ) + } + } + +\cs_new:Nn \__tag_mc_insert_mcid_kids:n + { + \lua_now:e { ltx.__tag.func.mc_insert_kids (#1,0) } + } + +\cs_new:Nn \__tag_mc_insert_mcid_single_kids:n + { + \lua_now:e {ltx.__tag.func.mc_insert_kids (#1,1) } + } +\cs_new:Nn \__tag_mc_handle_stash:n %1 mcidnum + { + \__tag_check_mc_used:n { #1 } + \seq_gput_right:cn % Don't fill a lua table due to the command in the item, + % so use the kernel command + { g__tag_struct_kids_\g__tag_struct_stack_current_tl _seq } + { + \__tag_mc_insert_mcid_kids:n {#1}% + } + \lua_now:e + { + ltx.__tag.func.store_struct_mcabs + ( + \g__tag_struct_stack_current_tl,#1 + ) + } + \prop_gput:Nxx + \g__tag_mc_parenttree_prop + { #1 } + { \g__tag_struct_stack_current_tl } + } + +\cs_generate_variant:Nn \__tag_mc_handle_stash:n { x } +\cs_set_protected:Nn \tag_mc_begin:n + { + \__tag_check_if_active_mc:T + { + \group_begin: + %\__tag_check_mc_if_nested: + \bool_gset_true:N \g__tag_in_mc_bool + \bool_set_false:N\l__tag_mc_artifact_bool + \tl_clear:N \l__tag_mc_key_properties_tl + \int_gincr:N \c@g__tag_MCID_abs_int + \keys_set:nn { __tag / mc }{ label={}, #1 } + %check that a tag or artifact has been used + \__tag_check_mc_tag:N \l__tag_mc_key_tag_tl + %set the attributes: + \__tag_mc_lua_set_mc_type_attr:o { \l__tag_mc_key_tag_tl } + \bool_if:NF \l__tag_mc_artifact_bool + { % store the absolute num name in a label: + \tl_if_empty:NF {\l__tag_mc_key_label_tl} + { + \exp_args:NV + \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl + } + % if not stashed record the absolute number + \bool_if:NF \l__tag_mc_key_stash_bool + { + \__tag_mc_handle_stash:x { \__tag_get_mc_abs_cnt: } + } + } + \group_end: + } + } +\cs_set_protected:Nn \tag_mc_end: + { + \__tag_check_if_active_mc:T + { + %\__tag_check_mc_if_open: + \bool_gset_false:N \g__tag_in_mc_bool + \bool_set_false:N\l__tag_mc_artifact_bool + \__tag_mc_lua_unset_mc_type_attr: + \tl_set:Nn \l__tag_mc_key_tag_tl { } + \tl_gset:Nn \g__tag_mc_key_tag_tl { } + } + } +\cs_new:Npn \__tag_get_data_mc_tag: { \g__tag_mc_key_tag_tl } + +\keys_define:nn { __tag / mc } + { + tag .code:n = % + { + \tl_set:Nx \l__tag_mc_key_tag_tl { #1 } + \tl_gset:Nx \g__tag_mc_key_tag_tl { #1 } + \lua_now:e + { + ltx.__tag.func.store_mc_data(\__tag_get_mc_abs_cnt:,"tag","#1") + } + }, + raw .code:n = + { + \tl_put_right:Nx \l__tag_mc_key_properties_tl { #1 } + \lua_now:e + { + ltx.__tag.func.store_mc_data(\__tag_get_mc_abs_cnt:,"raw","#1") + } + }, + alt .code:n = % Alt property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \tl_put_right:Nn \l__tag_mc_key_properties_tl { /Alt~< } + \tl_put_right:No \l__tag_mc_key_properties_tl { \l__tag_tmpa_str>~ } + \lua_now:e + { + ltx.__tag.func.store_mc_data + ( + \__tag_get_mc_abs_cnt:,"alt","/Alt~<\str_use:N \l__tag_tmpa_str>" + ) + } + }, + alttext .meta:n = {alt=#1}, + actualtext .code:n = % Alt property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \tl_put_right:Nn \l__tag_mc_key_properties_tl { /Alt~< } + \tl_put_right:No \l__tag_mc_key_properties_tl { \l__tag_tmpa_str>~ } + \lua_now:e + { + ltx.__tag.func.store_mc_data + ( + \__tag_get_mc_abs_cnt:, + "actualtext", + "/ActualText~<\str_use:N \l__tag_tmpa_str>" + ) + } + }, + label .code:n = + { + \tl_set:Nn\l__tag_mc_key_label_tl { #1 } + \lua_now:e + { + ltx.__tag.func.store_mc_data + ( + \__tag_get_mc_abs_cnt:,"label","#1" + ) + } + }, + __artifact-store .code:n = + { + \lua_now:e + { + ltx.__tag.func.store_mc_data + ( + \__tag_get_mc_abs_cnt:,"artifact","#1" + ) + } + }, + artifact .code:n = + { + \exp_args:Nnx + \keys_set:nn + { __tag / mc} + { __artifact-bool, __artifact-type=#1, tag=Artifact } + \exp_args:Nnx + \keys_set:nn + { __tag / mc } + { __artifact-store=\l__tag_mc_artifact_type_tl } + }, + artifact .default:n = { notype } + } + +%% +%% +%% End of file `tagpdf-mc-code-lua.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdf.lua b/texmf/tex/latex/tagpdf/tagpdf.lua new file mode 100644 index 000000000..1c8d29867 --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf.lua @@ -0,0 +1,707 @@ +-- +-- This is file `tagpdf.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- tagpdf-backend.dtx (with options: `lua') +-- +-- Copyright (C) 2019-2022 Ulrike Fischer +-- +-- It may be distributed and/or modified under the conditions of +-- the LaTeX Project Public License (LPPL), either version 1.3c of +-- this license or (at your option) any later version. The latest +-- version of this license is in the file: +-- +-- https://www.latex-project.org/lppl.txt +-- +-- This file is part of the "tagpdf bundle" (The Work in LPPL) +-- and all files in that bundle must be distributed together. +-- +-- File: tagpdf-backend.dtx +-- tagpdf.lua +-- Ulrike Fischer + +local ProvidesLuaModule = { + name = "tagpdf", + version = "0.97", --TAGVERSION + date = "2022-08-24", --TAGDATE + description = "tagpdf lua code", + license = "The LATEX Project Public License 1.3c" +} + +if luatexbase and luatexbase.provides_module then + luatexbase.provides_module (ProvidesLuaModule) +end + +--[[ +The code has quite probably a number of problems + - more variables should be local instead of global + - the naming is not always consistent due to the development of the code + - the traversing of the shipout box must be tested with more complicated setups + - it should probably handle more node types + - +--]] + +--[[ +the main table is named ltx.__tag. It contains the functions and also the data +collected during the compilation. + +ltx.__tag.mc will contain mc connected data. +ltx.__tag.struct will contain structure related data. +ltx.__tag.page will contain page data +ltx.__tag.tables contains also data from mc and struct (from older code). This needs cleaning up. + There are certainly dublettes, but I don't dare yet ... +ltx.__tag.func will contain (public) functions. +ltx.__tag.trace will contain tracing/loging functions. +local funktions starts with __ +functions meant for users will be in ltx.tag + +functions + ltx.__tag.func.get_num_from (tag): takes a tag (string) and returns the id number + ltx.__tag.func.output_num_from (tag): takes a tag (string) and prints (to tex) the id number + ltx.__tag.func.get_tag_from (num): takes a num and returns the tag + ltx.__tag.func.output_tag_from (num): takes a num and prints (to tex) the tag + ltx.__tag.func.store_mc_data (num,key,data): stores key=data in ltx.__tag.mc[num] + ltx.__tag.func.store_mc_label (label,num): stores label=num in ltx.__tag.mc.labels + ltx.__tag.func.store_mc_kid (mcnum,kid,page): stores the mc-kids of mcnum on page page + ltx.__tag.func.store_mc_in_page(mcnum,mcpagecnt,page): stores in the page table the number of mcnum on this page + ltx.__tag.func.store_struct_mcabs (structnum,mcnum): stores relations structnum<->mcnum (abs) + ltx.__tag.func.mc_insert_kids (mcnum): inserts the /K entries for mcnum by wandering throught the [kids] table + ltx.__tag.func.mark_page_elements(box,mcpagecnt,mccntprev,mcopen,name,mctypeprev) : the main function + ltx.__tag.func.mark_shipout (): a wrapper around the core function which inserts the last EMC + ltx.__tag.func.fill_parent_tree_line (page): outputs the entries of the parenttree for this page + ltx.__tag.func.output_parenttree(): outputs the content of the parenttree + ltx.__tag.func.pdf_object_ref(name): outputs the object reference for the object name + ltx.__tag.func.markspaceon(), ltx.__tag.func.markspaceoff(): (de)activates the marking of positions for space chars + ltx.__tag.trace.show_mc_data (num,loglevel): shows ltx.__tag.mc[num] is the current log level is >= loglevel + ltx.__tag.trace.show_all_mc_data (max,loglevel): shows a maximum about mc's if the current log level is >= loglevel + ltx.__tag.trace.show_seq: shows a sequence (array) + ltx.__tag.trace.show_struct_data (num): shows data of structure num + ltx.__tag.trace.show_prop: shows a prop + ltx.__tag.trace.log + ltx.__tag.trace.showspaces : boolean +--]] + +local mctypeattributeid = luatexbase.new_attribute ("g__tag_mc_type_attr") +local mccntattributeid = luatexbase.new_attribute ("g__tag_mc_cnt_attr") +local iwspaceattributeid = luatexbase.new_attribute ("g__tag_interwordspace_attr") +local iwfontattributeid = luatexbase.new_attribute ("g__tag_interwordfont_attr") +local tagunmarkedbool= token.create("g__tag_tagunmarked_bool") +local truebool = token.create("c_true_bool") +local catlatex = luatexbase.registernumber("catcodetable@latex") +local tableinsert = table.insert +local nodeid = node.id +local nodecopy = node.copy +local nodegetattribute = node.get_attribute +local nodesetattribute = node.set_attribute +local nodehasattribute = node.has_attribute +local nodenew = node.new +local nodetail = node.tail +local nodeslide = node.slide +local noderemove = node.remove +local nodetraverseid = node.traverse_id +local nodetraverse = node.traverse +local nodeinsertafter = node.insert_after +local nodeinsertbefore = node.insert_before +local pdfpageref = pdf.pageref + +local HLIST = node.id("hlist") +local VLIST = node.id("vlist") +local RULE = node.id("rule") +local DISC = node.id("disc") +local GLUE = node.id("glue") +local GLYPH = node.id("glyph") +local KERN = node.id("kern") +local PENALTY = node.id("penalty") +local LOCAL_PAR = node.id("local_par") +local MATH = node.id("math") +ltx = ltx or { } +ltx.__tag = ltx.__tag or { } +ltx.__tag.mc = ltx.__tag.mc or { } -- mc data +ltx.__tag.struct = ltx.__tag.struct or { } -- struct data +ltx.__tag.tables = ltx.__tag.tables or { } -- tables created with new prop and new seq. + -- wasn't a so great idea ... + -- g__tag_role_tags_seq used by tag<-> is in this tables! +ltx.__tag.page = ltx.__tag.page or { } -- page data, currently only i->{0->mcnum,1->mcnum,...} +ltx.__tag.trace = ltx.__tag.trace or { } -- show commands +ltx.__tag.func = ltx.__tag.func or { } -- functions +ltx.__tag.conf = ltx.__tag.conf or { } -- configuration variables +local __tag_log = + function (message,loglevel) + if (loglevel or 3) <= tex.count["l__tag_loglevel_int"] then + texio.write_nl("tagpdf: ".. message) + end + end + +ltx.__tag.trace.log = __tag_log +function ltx.__tag.trace.show_seq (seq) + if (type(seq) == "table") then + for i,v in ipairs(seq) do + __tag_log ("[" .. i .. "] => " .. tostring(v),1) + end + else + __tag_log ("sequence " .. tostring(seq) .. " not found",1) + end +end +local __tag_pairs_prop = + function (prop) + local a = {} + for n in pairs(prop) do tableinsert(a, n) end + table.sort(a) + local i = 0 -- iterator variable + local iter = function () -- iterator function + i = i + 1 + if a[i] == nil then return nil + else return a[i], prop[a[i]] + end + end + return iter + end + +function ltx.__tag.trace.show_prop (prop) + if (type(prop) == "table") then + for i,v in __tag_pairs_prop (prop) do + __tag_log ("[" .. i .. "] => " .. tostring(v),1) + end + else + __tag_log ("prop " .. tostring(prop) .. " not found or not a table",1) + end + end +function ltx.__tag.trace.show_mc_data (num,loglevel) + if ltx.__tag and ltx.__tag.mc and ltx.__tag.mc[num] then + for k,v in pairs(ltx.__tag.mc[num]) do + __tag_log ("mc"..num..": "..tostring(k).."=>"..tostring(v),loglevel) + end + if ltx.__tag.mc[num]["kids"] then + __tag_log ("mc" .. num .. " has " .. #ltx.__tag.mc[num]["kids"] .. " kids",loglevel) + for k,v in ipairs(ltx.__tag.mc[num]["kids"]) do + __tag_log ("mc ".. num .. " kid "..k.." =>" .. v.kid.." on page " ..v.page,loglevel) + end + end + else + __tag_log ("mc"..num.." not found",loglevel) + end +end +function ltx.__tag.trace.show_all_mc_data (min,max,loglevel) + for i = min, max do + ltx.__tag.trace.show_mc_data (i,loglevel) + end + texio.write_nl("") +end + +function ltx.__tag.trace.show_struct_data (num) + if ltx.__tag and ltx.__tag.struct and ltx.__tag.struct[num] then + for k,v in ipairs(ltx.__tag.struct[num]) do + __tag_log ("struct "..num..": "..tostring(k).."=>"..tostring(v),1) + end + else + __tag_log ("struct "..num.." not found ",1) + end +end + +local __tag_get_mc_cnt_type_tag = function (n) + local mccnt = nodegetattribute(n,mccntattributeid) or -1 + local mctype = nodegetattribute(n,mctypeattributeid) or -1 + local tag = ltx.__tag.func.get_tag_from(mctype) + return mccnt,mctype,tag +end +local function __tag_get_mathsubtype (mathnode) + if mathnode.subtype == 0 then + subtype = "beginmath" + else + subtype = "endmath" + end + return subtype +end + +local __tag_get_num_from = + function (tag) + if ltx.__tag.tables["g__tag_role_tags_prop"][tag] then + a= ltx.__tag.tables["g__tag_role_tags_prop"][tag] + else + a= -1 + end + return a + end + +ltx.__tag.func.get_num_from = __tag_get_num_from + +function ltx.__tag.func.output_num_from (tag) + local num = __tag_get_num_from (tag) + tex.sprint(catlatex,num) + if num == -1 then + __tag_log ("Unknown tag "..tag.." used") + end +end +local __tag_get_tag_from = + function (num) + if ltx.__tag.tables["g__tag_role_tags_seq"][num] then + a = ltx.__tag.tables["g__tag_role_tags_seq"][num] + else + a= "UNKNOWN" + end + return a +end + +ltx.__tag.func.get_tag_from = __tag_get_tag_from + +function ltx.__tag.func.output_tag_from (num) + tex.sprint(catlatex,__tag_get_tag_from (num)) +end +function ltx.__tag.func.store_mc_data (num,key,data) + ltx.__tag.mc[num] = ltx.__tag.mc[num] or { } + ltx.__tag.mc[num][key] = data + __tag_log ("INFO TEX-STORE-MC-DATA: "..num.." => "..tostring(key).." => "..tostring(data),3) +end +function ltx.__tag.func.store_mc_label (label,num) + ltx.__tag.mc["labels"] = ltx.__tag.mc["labels"] or { } + ltx.__tag.mc.labels[label] = num +end +function ltx.__tag.func.store_mc_kid (mcnum,kid,page) + ltx.__tag.trace.log("INFO TAG-STORE-MC-KID: "..mcnum.." => " .. kid.." on page " .. page,3) + ltx.__tag.mc[mcnum]["kids"] = ltx.__tag.mc[mcnum]["kids"] or { } + local kidtable = {kid=kid,page=page} + tableinsert(ltx.__tag.mc[mcnum]["kids"], kidtable ) +end + +function ltx.__tag.func.mc_num_of_kids (mcnum) + local num = 0 + if ltx.__tag.mc[mcnum] and ltx.__tag.mc[mcnum]["kids"] then + num = #ltx.__tag.mc[mcnum]["kids"] + end + ltx.__tag.trace.log ("INFO MC-KID-NUMBERS: " .. mcnum .. "has " .. num .. "KIDS",4) + return num +end +local function __tag_insert_emc_node (head,current) + local emcnode = nodenew("whatsit","pdf_literal") + emcnode.data = "EMC" + emcnode.mode=1 + head = node.insert_before(head,current,emcnode) + return head +end +local function __tag_insert_bmc_node (head,current,tag) + local bmcnode = nodenew("whatsit","pdf_literal") + bmcnode.data = "/"..tag.." BMC" + bmcnode.mode=1 + head = node.insert_before(head,current,bmcnode) + return head +end +local function __tag_insert_bdc_node (head,current,tag,dict) + local bdcnode = nodenew("whatsit","pdf_literal") + bdcnode.data = "/"..tag.."<<"..dict..">> BDC" + bdcnode.mode=1 + head = node.insert_before(head,current,bdcnode) + return head +end +local function __tag_pdf_object_ref (name) + local tokenname = 'c__pdf_backend_object_'..name..'_int' + local object = token.create(tokenname).index..' 0 R' + return object +end +ltx.__tag.func.pdf_object_ref=__tag_pdf_object_ref +local function __tag_show_spacemark (head,current,color,height) + local markcolor = color or "1 0 0" + local markheight = height or 10 + local pdfstring = node.new("whatsit","pdf_literal") + pdfstring.data = + string.format("q "..markcolor.." RG "..markcolor.." rg 0.4 w 0 %g m 0 %g l S Q",-3,markheight) + head = node.insert_after(head,current,pdfstring) + return head +end +local function __tag_fakespace() + tex.setattribute(iwspaceattributeid,1) + tex.setattribute(iwfontattributeid,font.current()) +end +ltx.__tag.func.fakespace = __tag_fakespace +--[[ a function to mark up places where real space chars should be inserted + it only sets an attribute. +--]] + +local function __tag_mark_spaces (head) + local inside_math = false + for n in nodetraverse(head) do + local id = n.id + if id == GLYPH then + local glyph = n + if glyph.next and (glyph.next.id == GLUE) + and not inside_math and (glyph.next.width >0) + then + nodesetattribute(glyph.next,iwspaceattributeid,1) + nodesetattribute(glyph.next,iwfontattributeid,glyph.font) + -- for debugging + if ltx.__tag.trace.showspaces then + __tag_show_spacemark (head,glyph) + end + elseif glyph.next and (glyph.next.id==KERN) and not inside_math then + local kern = glyph.next + if kern.next and (kern.next.id== GLUE) and (kern.next.width >0) + then + nodesetattribute(kern.next,iwspaceattributeid,1) + nodesetattribute(kern.next,iwfontattributeid,glyph.font) + end + end + -- look also back + if glyph.prev and (glyph.prev.id == GLUE) + and not inside_math + and (glyph.prev.width >0) + and not nodehasattribute(glyph.prev,iwspaceattributeid) + then + nodesetattribute(glyph.prev,iwspaceattributeid,1) + nodesetattribute(glyph.prev,iwfontattributeid,glyph.font) + -- for debugging + if ltx.__tag.trace.showspaces then + __tag_show_spacemark (head,glyph) + end + end + elseif id == PENALTY then + local glyph = n + -- ltx.__tag.trace.log ("PENALTY ".. n.subtype.."VALUE"..n.penalty,3) + if glyph.next and (glyph.next.id == GLUE) + and not inside_math and (glyph.next.width >0) and n.subtype==0 + then + nodesetattribute(glyph.next,iwspaceattributeid,1) + -- nodesetattribute(glyph.next,iwfontattributeid,glyph.font) + -- for debugging + if ltx.__tag.trace.showspaces then + __tag_show_spacemark (head,glyph) + end + end + elseif id == MATH then + inside_math = (n.subtype == 0) + end + end + return head +end +local function __tag_activate_mark_space () + if not luatexbase.in_callback ("pre_linebreak_filter","markspaces") then + luatexbase.add_to_callback("pre_linebreak_filter",__tag_mark_spaces,"markspaces") + luatexbase.add_to_callback("hpack_filter",__tag_mark_spaces,"markspaces") + end +end + +ltx.__tag.func.markspaceon=__tag_activate_mark_space + +local function __tag_deactivate_mark_space () + if luatexbase.in_callback ("pre_linebreak_filter","markspaces") then + luatexbase.remove_from_callback("pre_linebreak_filter","markspaces") + luatexbase.remove_from_callback("hpack_filter","markspaces") + end +end + +ltx.__tag.func.markspaceoff=__tag_deactivate_mark_space +local default_space_char = node.new(GLYPH) +local default_fontid = font.id("TU/lmr/m/n/10") +default_space_char.char = 32 +default_space_char.font = default_fontid +local function __tag_space_chars_shipout (box) + local head = box.head + if head then + for n in node.traverse(head) do + local spaceattr = nodegetattribute(n,iwspaceattributeid) or -1 + if n.id == HLIST then -- enter the hlist + __tag_space_chars_shipout (n) + elseif n.id == VLIST then -- enter the vlist + __tag_space_chars_shipout (n) + elseif n.id == GLUE then + if ltx.__tag.trace.showspaces and spaceattr==1 then + __tag_show_spacemark (head,n,"0 1 0") + end + if spaceattr==1 then + local space + local space_char = node.copy(default_space_char) + local curfont = nodegetattribute(n,iwfontattributeid) + ltx.__tag.trace.log ("INFO SPACE-FUNCTION-FONT: ".. tostring(curfont),3) + if curfont and luaotfload.aux.slot_of_name(curfont,"space") then + space_char.font=curfont + end + head, space = node.insert_before(head, n, space_char) -- + n.width = n.width - space.width + space.attr = n.attr + end + end + end + end +end + +function ltx.__tag.func.space_chars_shipout (box) + __tag_space_chars_shipout (box) +end +function ltx.__tag.func.mc_insert_kids (mcnum,single) + if ltx.__tag.mc[mcnum] then + ltx.__tag.trace.log("INFO TEX-MC-INSERT-KID-TEST: " .. mcnum,4) + if ltx.__tag.mc[mcnum]["kids"] then + if #ltx.__tag.mc[mcnum]["kids"] > 1 and single==1 then + tex.sprint("[") + end + for i,kidstable in ipairs( ltx.__tag.mc[mcnum]["kids"] ) do + local kidnum = kidstable["kid"] + local kidpage = kidstable["page"] + local kidpageobjnum = pdfpageref(kidpage) + ltx.__tag.trace.log("INFO TEX-MC-INSERT-KID: " .. mcnum .. + " insert KID " ..i.. + " with num " .. kidnum .. + " on page " .. kidpage.."/"..kidpageobjnum,3) + tex.sprint(catlatex,"<> " ) + end + if #ltx.__tag.mc[mcnum]["kids"] > 1 and single==1 then + tex.sprint("]") + end + else + -- this is typically not a problem, e.g. empty hbox in footer/header can + -- trigger this warning. + ltx.__tag.trace.log("WARN TEX-MC-INSERT-NO-KIDS: "..mcnum.." has no kids",2) + if single==1 then + tex.sprint("null") + end + end + else + ltx.__tag.trace.log("WARN TEX-MC-INSERT-MISSING: "..mcnum.." doesn't exist",0) + end +end +function ltx.__tag.func.store_struct_mcabs (structnum,mcnum) + ltx.__tag.struct[structnum]=ltx.__tag.struct[structnum] or { } + ltx.__tag.struct[structnum]["mc"]=ltx.__tag.struct[structnum]["mc"] or { } + -- a structure can contain more than on mc chunk, the content should be ordered + tableinsert(ltx.__tag.struct[structnum]["mc"],mcnum) + ltx.__tag.trace.log("INFO TEX-MC-INTO-STRUCT: ".. + mcnum.." inserted in struct "..structnum,3) + -- but every mc can only be in one structure + ltx.__tag.mc[mcnum]= ltx.__tag.mc[mcnum] or { } + ltx.__tag.mc[mcnum]["parent"] = structnum +end + +-- pay attention: lua counts arrays from 1, tex pages from one +-- mcid and arrays in pdf count from 0. +function ltx.__tag.func.store_mc_in_page (mcnum,mcpagecnt,page) + ltx.__tag.page[page] = ltx.__tag.page[page] or {} + ltx.__tag.page[page][mcpagecnt] = mcnum + ltx.__tag.trace.log("INFO TAG-MC-INTO-PAGE: page " .. page .. + ": inserting MCID " .. mcpagecnt .. " => " .. mcnum,3) +end +--[[ + Now follows the core function + It wades through the shipout box and checks the attributes + ARGUMENTS + box: is a box, + mcpagecnt: num, the current page cnt of mc (should start at -1 in shipout box), needed for recursion + mccntprev: num, the attribute cnt of the previous node/whatever - if different we have a chunk border + mcopen: num, records if some bdc/emc is open + These arguments are only needed for log messages, if not present are replaces by fix strings: + name: string to describe the box + mctypeprev: num, the type attribute of the previous node/whatever + + there are lots of logging messages currently. Should be cleaned up in due course. + One should also find ways to make the function shorter. +--]] + +function ltx.__tag.func.mark_page_elements (box,mcpagecnt,mccntprev,mcopen,name,mctypeprev) + local name = name or ("SOMEBOX") + local mctypeprev = mctypeprev or -1 + local abspage = status.total_pages + 1 -- the real counter is increased + -- inside the box so one off + -- if the callback is not used. (???) + ltx.__tag.trace.log ("INFO TAG-ABSPAGE: " .. abspage,3) + ltx.__tag.trace.log ("INFO TAG-ARGS: pagecnt".. mcpagecnt.. + " prev "..mccntprev .. + " type prev "..mctypeprev,4) + ltx.__tag.trace.log ("INFO TAG-TRAVERSING-BOX: ".. tostring(name).. + " TYPE ".. node.type(node.getid(box)),3) + local head = box.head -- ShipoutBox is a vlist? + if head then + mccnthead, mctypehead,taghead = __tag_get_mc_cnt_type_tag (head) + ltx.__tag.trace.log ("INFO TAG-HEAD: " .. + node.type(node.getid(head)).. + " MC"..tostring(mccnthead).. + " => TAG " .. tostring(mctypehead).. + " => ".. tostring(taghead),3) + else + ltx.__tag.trace.log ("INFO TAG-NO-HEAD: head is ".. + tostring(head),3) + end + for n in node.traverse(head) do + local mccnt, mctype, tag = __tag_get_mc_cnt_type_tag (n) + local spaceattr = nodegetattribute(n,iwspaceattributeid) or -1 + ltx.__tag.trace.log ("INFO TAG-NODE: ".. + node.type(node.getid(n)).. + " MC".. tostring(mccnt).. + " => TAG ".. tostring(mctype).. + " => " .. tostring(tag),3) + if n.id == HLIST + then -- enter the hlist + mcopen,mcpagecnt,mccntprev,mctypeprev= + ltx.__tag.func.mark_page_elements (n,mcpagecnt,mccntprev,mcopen,"INTERNAL HLIST",mctypeprev) + elseif n.id == VLIST then -- enter the vlist + mcopen,mcpagecnt,mccntprev,mctypeprev= + ltx.__tag.func.mark_page_elements (n,mcpagecnt,mccntprev,mcopen,"INTERNAL VLIST",mctypeprev) + elseif n.id == GLUE then -- at glue real space chars are inserted, but this has + -- been done if the previous shipout wandering, so here it is ignored + elseif n.id == LOCAL_PAR then -- local_par is ignored + elseif n.id == PENALTY then -- penalty is ignored + elseif n.id == KERN then -- kern is ignored + ltx.__tag.trace.log ("INFO TAG-KERN-SUBTYPE: ".. + node.type(node.getid(n)).." "..n.subtype,4) + else + -- math is currently only logged. + -- we could mark the whole as math + -- for inner processing the mlist_to_hlist callback is probably needed. + if n.id == MATH then + ltx.__tag.trace.log("INFO TAG-MATH-SUBTYPE: ".. + node.type(node.getid(n)).." "..__tag_get_mathsubtype(n),4) + end + -- endmath + ltx.__tag.trace.log("INFO TAG-MC-COMPARE: current ".. + mccnt.." prev "..mccntprev,4) + if mccnt~=mccntprev then -- a new mc chunk + ltx.__tag.trace.log ("INFO TAG-NEW-MC-NODE: ".. + node.type(node.getid(n)).. + " MC"..tostring(mccnt).. + " <=> PREVIOUS "..tostring(mccntprev),4) + if mcopen~=0 then -- there is a chunk open, close it (hope there is only one ... + box.list=__tag_insert_emc_node (box.list,n) + mcopen = mcopen - 1 + ltx.__tag.trace.log ("INFO TAG-INSERT-EMC: " .. + mcpagecnt .. " MCOPEN = " .. mcopen,3) + if mcopen ~=0 then + ltx.__tag.trace.log ("WARN TAG-OPEN-MC: " .. mcopen,1) + end + end + if ltx.__tag.mc[mccnt] then + if ltx.__tag.mc[mccnt]["artifact"] then + ltx.__tag.trace.log("INFO TAG-INSERT-ARTIFACT: ".. + tostring(ltx.__tag.mc[mccnt]["artifact"]),3) + if ltx.__tag.mc[mccnt]["artifact"] == "" then + box.list = __tag_insert_bmc_node (box.list,n,"Artifact") + else + box.list = __tag_insert_bdc_node (box.list,n,"Artifact", "/Type /"..ltx.__tag.mc[mccnt]["artifact"]) + end + else + ltx.__tag.trace.log("INFO TAG-INSERT-TAG: ".. + tostring(tag),3) + mcpagecnt = mcpagecnt +1 + ltx.__tag.trace.log ("INFO TAG-INSERT-BDC: "..mcpagecnt,3) + local dict= "/MCID "..mcpagecnt + if ltx.__tag.mc[mccnt]["raw"] then + ltx.__tag.trace.log("INFO TAG-USE-RAW: ".. + tostring(ltx.__tag.mc[mccnt]["raw"]),3) + dict= dict .. " " .. ltx.__tag.mc[mccnt]["raw"] + end + if ltx.__tag.mc[mccnt]["alt"] then + ltx.__tag.trace.log("INFO TAG-USE-ALT: ".. + tostring(ltx.__tag.mc[mccnt]["alt"]),3) + dict= dict .. " " .. ltx.__tag.mc[mccnt]["alt"] + end + if ltx.__tag.mc[mccnt]["actualtext"] then + ltx.__tag.trace.log("INFO TAG-USE-ACTUALTEXT: ".. + tostring(ltx.__tag.mc[mccnt]["actualtext"]),3) + dict= dict .. " " .. ltx.__tag.mc[mccnt]["actualtext"] + end + box.list = __tag_insert_bdc_node (box.list,n,tag, dict) + ltx.__tag.func.store_mc_kid (mccnt,mcpagecnt,abspage) + ltx.__tag.func.store_mc_in_page(mccnt,mcpagecnt,abspage) + ltx.__tag.trace.show_mc_data (mccnt,3) + end + mcopen = mcopen + 1 + else + if tagunmarkedbool.mode == truebool.mode then + ltx.__tag.trace.log("INFO TAG-NOT-TAGGED: this has not been tagged, using artifact",2) + box.list = __tag_insert_bmc_node (box.list,n,"Artifact") + mcopen = mcopen + 1 + else + ltx.__tag.trace.log("WARN TAG-NOT-TAGGED: this has not been tagged",1) + end + end + mccntprev = mccnt + end + end -- end if + end -- end for + if head then + mccnthead, mctypehead,taghead = __tag_get_mc_cnt_type_tag (head) + ltx.__tag.trace.log ("INFO TAG-ENDHEAD: " .. + node.type(node.getid(head)).. + " MC"..tostring(mccnthead).. + " => TAG "..tostring(mctypehead).. + " => "..tostring(taghead),4) + else + ltx.__tag.trace.log ("INFO TAG-ENDHEAD: ".. tostring(head),4) + end + ltx.__tag.trace.log ("INFO TAG-QUITTING-BOX ".. + tostring(name).. + " TYPE ".. node.type(node.getid(box)),4) + return mcopen,mcpagecnt,mccntprev,mctypeprev +end + +function ltx.__tag.func.mark_shipout (box) + mcopen = ltx.__tag.func.mark_page_elements (box,-1,-100,0,"Shipout",-1) + if mcopen~=0 then -- there is a chunk open, close it (hope there is only one ... + local emcnode = nodenew("whatsit","pdf_literal") + local list = box.list + emcnode.data = "EMC" + emcnode.mode=1 + if list then + list = node.insert_after (list,node.tail(list),emcnode) + mcopen = mcopen - 1 + ltx.__tag.trace.log ("INFO SHIPOUT-INSERT-LAST-EMC: MCOPEN " .. mcopen,3) + else + ltx.__tag.trace.log ("WARN SHIPOUT-UPS: this shouldn't happen",0) + end + if mcopen ~=0 then + ltx.__tag.trace.log ("WARN SHIPOUT-MC-OPEN: " .. mcopen,1) + end + end +end + +function ltx.__tag.func.fill_parent_tree_line (page) + -- we need to get page-> i=kid -> mcnum -> structnum + -- pay attention: the kid numbers and the page number in the parent tree start with 0! + local numsentry ="" + local pdfpage = page-1 + if ltx.__tag.page[page] and ltx.__tag.page[page][0] then + mcchunks=#ltx.__tag.page[page] + ltx.__tag.trace.log("INFO PARENTTREE-NUM: page ".. + page.." has "..mcchunks.."+1 Elements ",4) + for i=0,mcchunks do + -- what does this log?? + ltx.__tag.trace.log("INFO PARENTTREE-CHUNKS: ".. + ltx.__tag.page[page][i],4) + end + if mcchunks == 0 then + -- only one chunk so no need for an array + local mcnum = ltx.__tag.page[page][0] + local structnum = ltx.__tag.mc[mcnum]["parent"] + local propname = "g__tag_struct_"..structnum.."_prop" + --local objref = ltx.__tag.tables[propname]["objref"] or "XXXX" + local objref = __tag_pdf_object_ref('__tag/struct/'..structnum) + ltx.__tag.trace.log("INFO PARENTTREE-STRUCT-OBJREF: =====>".. + tostring(objref),5) + numsentry = pdfpage .. " [".. objref .. "]" + ltx.__tag.trace.log("INFO PARENTTREE-NUMENTRY: page " .. + page.. " num entry = ".. numsentry,3) + else + numsentry = pdfpage .. " [" + for i=0,mcchunks do + local mcnum = ltx.__tag.page[page][i] + local structnum = ltx.__tag.mc[mcnum]["parent"] or 0 + local propname = "g__tag_struct_"..structnum.."_prop" + --local objref = ltx.__tag.tables[propname]["objref"] or "XXXX" + local objref = __tag_pdf_object_ref('__tag/struct/'..structnum) + numsentry = numsentry .. " ".. objref + end + numsentry = numsentry .. "] " + ltx.__tag.trace.log("INFO PARENTTREE-NUMENTRY: page " .. + page.. " num entry = ".. numsentry,3) + end + else + ltx.__tag.trace.log ("INFO PARENTTREE-NO-DATA: page "..page,3) + end + return numsentry +end + +function ltx.__tag.func.output_parenttree (abspage) + for i=1,abspage do + line = ltx.__tag.func.fill_parent_tree_line (i) .. "^^J" + tex.sprint(catlatex,line) + end +end +-- +-- End of File `tagpdf.lua'. diff --git a/texmf/tex/latex/tagpdf/tagpdf.sty b/texmf/tex/latex/tagpdf/tagpdf.sty new file mode 100644 index 000000000..064ce5998 --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdf.sty @@ -0,0 +1,2701 @@ +%% +%% This is file `tagpdf.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tagpdf.dtx (with options: `package') +%% tagpdf-checks.dtx (with options: `package') +%% tagpdf-mc-shared.dtx (with options: `shared') +%% tagpdf.dtx (with options: `mcloading') +%% tagpdf-tree.dtx (with options: `package') +%% tagpdf-roles.dtx (with options: `package') +%% tagpdf-struct.dtx (with options: `package') +%% tagpdf-space.dtx (with options: `package') +%% tagpdf-user.dtx (with options: `package') +%% +%% Copyright (C) 2019-2022 Ulrike Fischer +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This file is part of the "tagpdf bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: tagpdf.dtx +\ProvidesExplPackage {tagpdf} {2022-08-24} {0.97} + { A package to experiment with pdf tagging } + +\bool_if:nF + { + \bool_lazy_and_p:nn + {\cs_if_exist_p:N \pdfmanagement_if_active_p:} + { \pdfmanagement_if_active_p: } + } + { %error for now, perhaps warning later. + \PackageError{tagpdf} + { + PDF~resource~management~is~no~active!\MessageBreak + tagpdf~will~no~work. + } + { + Activate~it~with \MessageBreak + \string\RequirePackage{pdfmanagement-testphase}\MessageBreak + \string\DocumentMetadata{}\MessageBreak + before~\string\documentclass + } + } +\prop_gput:Nnn \g_msg_module_name_prop { tag }{ tagpdf } +\bool_new:N\g__tag_mode_lua_bool +\DeclareOption {luamode} { \sys_if_engine_luatex:T { \bool_gset_true:N \g__tag_mode_lua_bool } } +\DeclareOption {genericmode}{ \bool_gset_false:N\g__tag_mode_lua_bool } +\ExecuteOptions{luamode} +\ProcessOptions +\RequirePackage{l3ref-tmp} +\RequirePackage{tagpdf-base} +\cs_if_free:NT \pdf_object_write:nnn + { + \cs_new_protected:Npn \pdf_object_new:n #1 + { \pdf_object_new:nn{#1}{dict} } + \cs_new_protected:Npn \pdf_object_write:nnn #1#2#3 + { + \pdf_object_write:nn {#1}{#3} + } + \str_if_eq:VnT \c_sys_backend_str {pdftex} + { + \cs_set_protected:Npn \pdf_object_write:nnn #1#2#3 + { + \tex_immediate:D \tex_pdfobj:D + useobjnum ~ + \int_use:c + { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { << ~ \exp_not:n {#3} ~ >> } + } + } + \str_if_eq:VnT \c_sys_backend_str {luatex} + { + \cs_set_protected:Npn \pdf_object_write:nnn #1#2#3 + { + \tex_immediate:D \tex_pdfextension:D obj ~ + useobjnum ~ + \int_use:c + { c__pdf_backend_object_ \tl_to_str:n {#1} _int } + { << ~ \exp_not:n {#3} ~ >> } + } + } + } +\cs_generate_variant:Nn \pdf_object_write:nnn {nnx} + + + \cs_new_protected:Npn \__tag_lastpagelabel: + { + \legacy_if:nT { @filesw } + { + \exp_args:NNnx \exp_args:NNx\iow_now:Nn \@auxout + { + \token_to_str:N \newlabeldata + {__tag_LastPage} + { + {abspage} { \int_use:N \g_shipout_readonly_int} + {tagmcabs}{ \int_use:N \c@g__tag_MCID_abs_int } + } + } + } + } + + \AddToHook{enddocument/afterlastpage} + {\__tag_lastpagelabel:} + \cs_if_exist:NF \ref_value:nnn + { + \cs_new:Npn \ref_value:nnn #1#2#3 + { + \exp_args:Nee + \__ref_value:nnn + { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } {#3} + } + \cs_new:Npn \__ref_value:nnn #1#2#3 + { + \tl_if_exist:cTF { g__ref_label_ #1 _ #2 _tl } + { \tl_use:c { g__ref_label_ #1 _ #2 _tl } } + { + #3 + } + } + } + +\tl_new:N \l__tag_tmpa_tl +\tl_new:N \l__tag_tmpb_tl +\str_new:N \l__tag_tmpa_str +\prop_new:N \l__tag_tmpa_prop +\seq_new:N \l__tag_tmpa_seq +\seq_new:N \l__tag_tmpb_seq +\clist_new:N \l__tag_tmpa_clist +\int_new:N \l__tag_tmpa_int +\box_new:N \l__tag_tmpa_box +\box_new:N \l__tag_tmpb_box +\clist_const:Nn \c__tag_refmc_clist {tagabspage,tagmcabs,tagmcid} +\clist_const:Nn \c__tag_refstruct_clist {tagstruct,tagstructobj} +\int_new:N \l__tag_loglevel_int +\bool_new:N \g__tag_active_space_bool +\bool_new:N \g__tag_active_mc_bool +\bool_new:N \g__tag_active_tree_bool +\bool_new:N \g__tag_active_struct_bool +\bool_new:N \g__tag_active_struct_dest_bool +\bool_gset_true:N \g__tag_active_struct_dest_bool + +\bool_new:N \l__tag_active_mc_bool +\bool_set_true:N \l__tag_active_mc_bool +\bool_new:N \l__tag_active_struct_bool +\bool_set_true:N \l__tag_active_struct_bool +\bool_new:N \g__tag_tagunmarked_bool +\prg_generate_conditional_variant:Nnn \pdf_object_if_exist:n {e}{T,F} +\cs_generate_variant:Nn \pdf_object_ref:n {e} +\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nnx} +\cs_generate_variant:Nn \pdffile_embed_stream:nnn {nxx,oxx} +\cs_generate_variant:Nn \prop_gput:Nnn {Nxx,Nen} +\cs_generate_variant:Nn \prop_put:Nnn {Nxx} +\cs_generate_variant:Nn \prop_item:Nn {No} +\cs_generate_variant:Nn \ref_label:nn { nv } +\cs_generate_variant:Nn \seq_set_split:Nnn{Nne} +\cs_generate_variant:Nn \str_set_convert:Nnnn {Nonn, Noon, Nnon } +\cs_generate_variant:Nn \clist_map_inline:nn {on} + +\ref_attribute_gset:nnnn { tagstruct } {0} { now } + { \int_use:N \c@g__tag_struct_abs_int } +\ref_attribute_gset:nnnn { tagstructobj } {} { now } + { + \pdf_object_if_exist:eT {__tag/struct/\int_use:N \c@g__tag_struct_abs_int} + { + \pdf_object_ref:e{__tag/struct/\int_use:N \c@g__tag_struct_abs_int} + } + } +\ref_attribute_gset:nnnn { tagabspage } {0} { shipout } + { \int_use:N \g_shipout_readonly_int } +\ref_attribute_gset:nnnn { tagmcabs } {0} { now } + { \int_use:N \c@g__tag_MCID_abs_int } +\ref_attribute_gset:nnnn {tagmcid } {0} { now } + { \int_use:N \g__tag_MCID_tmp_bypage_int } +\cs_new_protected:Npn \__tag_ref_label:nn #1 #2 %#1 label, #2 name of list mc or struct + { + \@bsphack + \ref_label:nv {#1}{c__tag_ref#2_clist} + \@esphack + } +\cs_generate_variant:Nn \__tag_ref_label:nn {en} +\cs_new:Npn \__tag_ref_value:nnn #1 #2 #3 %#1 label, #2 attribute, #3 default + { + \ref_value:nnn {#1}{#2}{#3} + } +\cs_generate_variant:Nn \__tag_ref_value:nnn {enn} +\cs_new:Npn \__tag_ref_value_lastpage:nn #1 #2 + { + \ref_value:nnn {__tag_LastPage}{#1}{#2} + } + +\cs_set_eq:NN \__tag_prop_new:N \prop_new:N +\cs_set_eq:NN \__tag_seq_new:N \seq_new:N +\cs_set_eq:NN \__tag_prop_gput:Nnn \prop_gput:Nnn +\cs_set_eq:NN \__tag_seq_gput_right:Nn \seq_gput_right:Nn +\cs_set_eq:NN \__tag_seq_item:cn \seq_item:cn +\cs_set_eq:NN \__tag_prop_item:cn \prop_item:cn +\cs_set_eq:NN \__tag_seq_show:N \seq_show:N +\cs_set_eq:NN \__tag_prop_show:N \prop_show:N + +\cs_generate_variant:Nn \__tag_prop_gput:Nnn { Nxn , Nxx, Nnx , cnn, cxn, cnx, cno} +\cs_generate_variant:Nn \__tag_seq_gput_right:Nn { Nx , No, cn, cx } +\cs_generate_variant:Nn \__tag_prop_new:N { c } +\cs_generate_variant:Nn \__tag_seq_new:N { c } +\cs_generate_variant:Nn \__tag_seq_show:N { c } +\cs_generate_variant:Nn \__tag_prop_show:N { c } +\cs_new_protected:Npn \tag_stop_group_begin: + { + \group_begin: + \bool_set_false:N \l__tag_active_struct_bool + \bool_set_false:N \l__tag_active_mc_bool + } +\cs_set_eq:NN \tag_stop_group_end: \group_end: +\cs_set_protected:Npn \tag_stop: + { + \bool_set_false:N \l__tag_active_struct_bool + \bool_set_false:N \l__tag_active_mc_bool + } +\cs_set_protected:Npn \tag_start: + { + \bool_set_true:N \l__tag_active_struct_bool + \bool_set_true:N \l__tag_active_mc_bool + } +\prop_new:N\g__tag_state_prop +\cs_set_protected:Npn \tag_stop:n #1 + { + \tag_if_active:TF + { + \bool_set_false:N \l__tag_active_struct_bool + \bool_set_false:N \l__tag_active_mc_bool + \prop_gput:Nnn \g__tag_state_prop { #1 }{ 1 } + } + { + \prop_gremove:Nn \g__tag_state_prop { #1 } + } + } +\cs_set_protected:Npn \tag_start:n #1 + { + \prop_gpop:NnN \g__tag_state_prop {#1}\l__tag_tmpa_tl + \quark_if_no_value:NF \l__tag_tmpa_tl + { + \bool_set_true:N \l__tag_active_struct_bool + \bool_set_true:N \l__tag_active_mc_bool + } + } + +\keys_define:nn { __tag / setup } + { + activate-space .bool_gset:N = \g__tag_active_space_bool, + activate-mc .bool_gset:N = \g__tag_active_mc_bool, + activate-tree .bool_gset:N = \g__tag_active_tree_bool, + activate-struct .bool_gset:N = \g__tag_active_struct_bool, + activate-all .meta:n = + {activate-mc={#1},activate-tree={#1},activate-struct={#1}}, + activate-all .default:n = true, + no-struct-dest .bool_gset_inverse:N = \g__tag_active_struct_dest_bool, + % \end{macrocode} + log .choice:, + log / none .code:n = {\int_set:Nn \l__tag_loglevel_int { 0 }}, + log / v .code:n = + { + \int_set:Nn \l__tag_loglevel_int { 1 } + \cs_set_protected:Nn \__tag_check_typeout_v:n { \iow_term:x {##1} } + }, + log / vv .code:n = {\int_set:Nn \l__tag_loglevel_int { 2 }}, + log / vvv .code:n = {\int_set:Nn \l__tag_loglevel_int { 3 }}, + log / all .code:n = {\int_set:Nn \l__tag_loglevel_int { 10 }}, + tagunmarked .bool_gset:N = \g__tag_tagunmarked_bool, + tagunmarked .initial:n = true, + tabsorder .choice:, + tabsorder / row .code:n = + \pdfmanagement_add:nnn { Page } {Tabs}{/R}, + tabsorder / column .code:n = + \pdfmanagement_add:nnn { Page } {Tabs}{/C}, + tabsorder / structure .code:n = + \pdfmanagement_add:nnn { Page } {Tabs}{/S}, + tabsorder / none .code:n = + \pdfmanagement_remove:nn {Page} {Tabs}, + tabsorder .initial:n = structure, + uncompress .code:n = { \pdf_uncompress: }, + } +\sys_if_engine_luatex:T + { + \file_input:n {tagpdf-luatex.def} + } +%% File: tagpdf-checks.dtx +\msg_new:nnn { tag } {mc-nested} { nested~marked~content~found~-~mcid~#1 } +\msg_new:nnn { tag } {mc-tag-missing} { required~tag~missing~-~mcid~#1 } +\msg_new:nnn { tag } {mc-label-unknown} + { label~#1~unknown~or~has~been~already~used.\\ + Either~rerun~or~remove~one~of~the~uses. } +\msg_new:nnn { tag } {mc-used-twice} { mc~#1~has~been~already~used } +\msg_new:nnn { tag } {mc-not-open} { there~is~no~mc~to~end~at~#1 } +\msg_new:nnn { tag } {mc-pushed} { #1~has~been~pushed~to~the~mc~stack} +\msg_new:nnn { tag } {mc-popped} { #1~has~been~removed~from~the~mc~stack } +\msg_new:nnn { tag } {mc-current} + { current~MC:~ + \bool_if:NTF\g__tag_in_mc_bool + {abscnt=\__tag_get_mc_abs_cnt:,~tag=\g__tag_mc_key_tag_tl} + {no~MC~open,~current~abscnt=\__tag_get_mc_abs_cnt:"} + } +\msg_new:nnn { tag } {struct-unknown} + { structure~with~number~#1~doesn't~exist\\ #2 } +\msg_new:nnn { tag } {struct-no-objnum} { objnum~missing~for~structure~#1 } +\msg_new:nnn { tag } + {struct-faulty-nesting} + { there~is~no~open~structure~on~the~stack } +\msg_new:nnn { tag } {struct-missing-tag} { a~structure~must~have~a~tag! } +\msg_new:nnn { tag } {struct-used-twice} + { structure~with~label~#1~has~already~been~used} +\msg_new:nnn { tag } {struct-label-unknown} + { structure~with~label~#1~is~unknown~rerun} +\msg_new:nnn { tag } {struct-show-closing} + { closing~structure~#1~tagged~\prop_item:cn{g__tag_struct_#1_prop}{S} } +\msg_new:nnn { tag } {attr-unknown} { attribute~#1~is~unknown} +\msg_new:nnn { tag } {role-missing} { tag~#1~has~no~role~assigned } +\msg_new:nnn { tag } {role-unknown} { role~#1~is~not~known } +\msg_new:nnn { tag } {role-unknown-tag} { tag~#1~is~not~known } +\msg_new:nnn { tag } {role-tag} { mapping~tag~#1~to~role~#2 } +\msg_new:nnn { tag } {new-tag} { adding~new~tag~#1 } +\msg_new:nnn { tag } {tree-mcid-index-wrong} + {something~is~wrong~with~the~mcid--rerun} +\msg_new:nnn { tag } {sys-no-interwordspace} + {engine/output~mode~#1~doesn't~support~the~interword~spaces} +\cs_set_eq:NN \__tag_check_typeout_v:n \use_none:n +\msg_new:nnnn { tag } {para-hook-count-wrong} + {The~number~of~automatic~begin~(#1)~and~end~(#2)~para~hooks~differ!} + {This~quite~probably~a~coding~error~and~the~structure~will~be~wrong!} +\prg_set_conditional:Npnn \tag_if_active: { p , T , TF, F } + { + \bool_lazy_all:nTF + { + {\g__tag_active_struct_bool} + {\g__tag_active_mc_bool} + {\g__tag_active_tree_bool} + {\l__tag_active_struct_bool} + {\l__tag_active_mc_bool} + } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_new_conditional:Npnn \__tag_check_if_active_mc: {T,F,TF} + { + \bool_lazy_and:nnTF { \g__tag_active_mc_bool } { \l__tag_active_mc_bool } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_new_conditional:Npnn \__tag_check_if_active_struct: {T,F,TF} + { + \bool_lazy_and:nnTF { \g__tag_active_struct_bool } { \l__tag_active_struct_bool } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\cs_new_protected:Npn \__tag_check_structure_has_tag:n #1 %#1 struct num + { + \prop_if_in:cnF { g__tag_struct_#1_prop } + {S} + { + \msg_error:nn { tag } {struct-missing-tag} + } + } +\cs_new_protected:Npn \__tag_check_structure_tag:N #1 + { + \prop_if_in:NoF \g__tag_role_tags_prop {#1} + { + \msg_warning:nnx { tag } {role-unknown-tag} {#1} + } + } +\cs_new_protected:Npn \__tag_check_info_closing_struct:n #1 %#1 struct num + { + \int_compare:nNnT {\l__tag_loglevel_int} > { 0 } + { + \msg_info:nnn { tag } {struct-show-closing} {#1} + } + } + +\cs_generate_variant:Nn \__tag_check_info_closing_struct:n {o,x} +\cs_new_protected:Npn \__tag_check_no_open_struct: + { + \msg_error:nn { tag } {struct-faulty-nesting} + } +\cs_new_protected:Npn \__tag_check_struct_used:n #1 %#1 label + { + \prop_get:cnNT + {g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop} + {P} + \l_tmpa_tl + { + \msg_warning:nnn { tag } {struct-used-twice} {#1} + } + } +\cs_new_protected:Npn \__tag_check_add_tag_role:nn #1 #2 %#1 tag, #2 role + { + \tl_if_empty:nTF {#2} + { + \msg_warning:nnn { tag } {role-missing} {#1} + } + { + \prop_get:NnNTF \g__tag_role_tags_prop {#2} \l_tmpa_tl + { + \int_compare:nNnT {\l__tag_loglevel_int} > { 0 } + { + \msg_info:nnnn { tag } {role-tag} {#1} {#2} + } + } + { + \msg_warning:nnn { tag } {role-unknown} {#2} + } + } + } +\cs_new_protected:Npn \__tag_check_mc_if_nested: + { + \__tag_mc_if_in:T + { + \msg_warning:nnx { tag } {mc-nested} { \__tag_get_mc_abs_cnt: } + } + } + +\cs_new_protected:Npn \__tag_check_mc_if_open: + { + \__tag_mc_if_in:F + { + \msg_warning:nnx { tag } {mc-not-open} { \__tag_get_mc_abs_cnt: } + } + } +\cs_new_protected:Npn \__tag_check_mc_pushed_popped:nn #1 #2 + { + \int_compare:nNnT + { \l__tag_loglevel_int } ={ 2 } + { \msg_info:nnx {tag}{mc-#1}{#2} } + \int_compare:nNnT + { \l__tag_loglevel_int } > { 2 } + { + \msg_info:nnx {tag}{mc-#1}{#2} + \seq_log:N \g__tag_mc_stack_seq + } + } +\cs_new_protected:Npn \__tag_check_mc_tag:N #1 %#1 is var with a tag name in it + { + \tl_if_empty:NT #1 + { + \msg_error:nnx { tag } {mc-tag-missing} { \__tag_get_mc_abs_cnt: } + } + \prop_if_in:NoF \g__tag_role_tags_NS_prop {#1} + { + \msg_warning:nnx { tag } {role-unknown-tag} {#1} + } + } +\cs_new_protected:Npn \__tag_check_init_mc_used: + { + \intarray_new:Nn \g__tag_check_mc_used_intarray { 65536 } + \cs_gset_eq:NN \__tag_check_init_mc_used: \prg_do_nothing: + } +\cs_new_protected:Npn \__tag_check_mc_used:n #1 %#1 mcid abscnt + { + \int_compare:nNnT {\l__tag_loglevel_int} > { 2 } + { + \__tag_check_init_mc_used: + \intarray_gset:Nnn \g__tag_check_mc_used_intarray + {#1} + { \intarray_item:Nn \g__tag_check_mc_used_intarray {#1} + 1 } + \int_compare:nNnT + { + \intarray_item:Nn \g__tag_check_mc_used_intarray {#1} + } + > + { 1 } + { + \msg_warning:nnn { tag } {mc-used-twice} {#1} + } + } + } +\cs_new_protected:Npn \__tag_check_show_MCID_by_page: + { + \tl_set:Nx \l__tag_tmpa_tl + { + \__tag_ref_value_lastpage:nn + {abspage} + {-1} + } + \int_step_inline:nnnn {1}{1} + { + \l__tag_tmpa_tl + } + { + \seq_clear:N \l_tmpa_seq + \int_step_inline:nnnn + {1} + {1} + { + \__tag_ref_value_lastpage:nn + {tagmcabs} + {-1} + } + { + \int_compare:nT + { + \__tag_ref_value:enn + {mcid-####1} + {tagabspage} + {-1} + = + ##1 + } + { + \seq_gput_right:Nx \l_tmpa_seq + { + Page##1-####1- + \__tag_ref_value:enn + {mcid-####1} + {tagmcid} + {-1} + } + } + } + \seq_show:N \l_tmpa_seq + } + } +\prg_new_conditional:Npnn \__tag_check_if_mc_in_galley: { T,F,TF } + { + \tl_if_eq:NNTF \l__tag_mc_firstmarks_seq \l__tag_mc_botmarks_seq + { \prg_return_false: } + { \prg_return_true: } + } + +\prg_new_conditional:Npnn \__tag_check_if_mc_tmb_missing: { T,F,TF } + { + \bool_if:nTF + { + \str_if_eq_p:ee {\seq_item:Nn \l__tag_mc_firstmarks_seq {1}}{e-} + || + \str_if_eq_p:ee {\seq_item:Nn \l__tag_mc_firstmarks_seq {1}}{b+} + } + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_conditional:Npnn \__tag_check_if_mc_tme_missing: { T,F,TF } + { + \str_if_eq:eeTF {\seq_item:Nn \l__tag_mc_botmarks_seq {1}}{b+} + { \prg_return_true: } + { \prg_return_false: } + } +%% File: tagpdf-mc-shared.dtx + +\newcounter { g__tag_MCID_abs_int } +\cs_new:Npn \__tag_get_mc_abs_cnt: { \int_use:N \c@g__tag_MCID_abs_int } +\int_new:N \g__tag_MCID_tmp_bypage_int +\bool_new:N \g__tag_in_mc_bool +\__tag_prop_new:N \g__tag_mc_parenttree_prop +\seq_new:N \g__tag_mc_stack_seq +\tl_new:N \l__tag_mc_artifact_type_tl +\bool_new:N \l__tag_mc_key_stash_bool +\bool_new:N \l__tag_mc_artifact_bool +\tl_new:N \l__tag_mc_key_tag_tl +\tl_new:N \g__tag_mc_key_tag_tl +\tl_new:N \l__tag_mc_key_label_tl +\tl_new:N \l__tag_mc_key_properties_tl +\cs_new:Nn \__tag_mc_handle_mc_label:n + { + \__tag_ref_label:en{tagpdf-#1}{mc} + } +\cs_new_protected:Npn \__tag_mc_set_label_used:n #1 %#1 labelname + { + \tl_new:c { g__tag_mc_label_\tl_to_str:n{#1}_used_tl } + } +\cs_set_protected:Npn \tag_mc_use:n #1 %#1: label name + { + \__tag_check_if_active_struct:T + { + \tl_set:Nx \l__tag_tmpa_tl { \__tag_ref_value:nnn{tagpdf-#1}{tagmcabs}{} } + \tl_if_empty:NTF\l__tag_tmpa_tl + { + \msg_warning:nnn {tag} {mc-label-unknown} {#1} + } + { + \cs_if_free:cTF { g__tag_mc_label_\tl_to_str:n{#1}_used_tl } + { + \__tag_mc_handle_stash:x { \l__tag_tmpa_tl } + \__tag_mc_set_label_used:n {#1} + } + { + \msg_warning:nnn {tag}{mc-used-twice}{#1} + } + } + } + } +\cs_set_protected:Npn \tag_mc_artifact_group_begin:n #1 + { + \tag_mc_end_push: + \tag_mc_begin:n {artifact=#1} + \tag_stop_group_begin: + } + +\cs_set_protected:Npn \tag_mc_artifact_group_end: + { + \tag_stop_group_end: + \tag_mc_end: + \tag_mc_begin_pop:n{} + } +\cs_set_protected:Npn \tag_mc_end_push: + { + \__tag_check_if_active_mc:T + { + \__tag_mc_if_in:TF + { + \seq_gpush:Nx \g__tag_mc_stack_seq { \tag_get:n {mc_tag} } + \__tag_check_mc_pushed_popped:nn + { pushed } + { \tag_get:n {mc_tag} } + \tag_mc_end: + } + { + \seq_gpush:Nn \g__tag_mc_stack_seq {-1} + \__tag_check_mc_pushed_popped:nn { pushed }{-1} + } + } + } + +\cs_set_protected:Npn \tag_mc_begin_pop:n #1 + { + \__tag_check_if_active_mc:T + { + \seq_gpop:NNTF \g__tag_mc_stack_seq \l__tag_tmpa_tl + { + \tl_if_eq:NnTF \l__tag_tmpa_tl {-1} + { + \__tag_check_mc_pushed_popped:nn {popped}{-1} + } + { + \__tag_check_mc_pushed_popped:nn {popped}{\l__tag_tmpa_tl} + \tag_mc_begin:n {tag=\l__tag_tmpa_tl,#1} + } + } + { + \__tag_check_mc_pushed_popped:nn {popped}{empty~stack,~nothing} + } + } + } +\keys_define:nn { __tag / mc } + { + stash .bool_set:N = \l__tag_mc_key_stash_bool, + __artifact-bool .bool_set:N = \l__tag_mc_artifact_bool, + __artifact-type .choice:, + __artifact-type / pagination .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Pagination } + }, + __artifact-type / pagination/header .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Pagination/Subtype/Header } + }, + __artifact-type / pagination/footer .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Pagination/Subtype/Footer } + }, + __artifact-type / layout .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Layout } + }, + __artifact-type / page .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Page } + }, + __artifact-type / background .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl { Background } + }, + __artifact-type / notype .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl {} + }, + __artifact-type / .code:n = + { + \tl_set:Nn \l__tag_mc_artifact_type_tl {} + }, + } +%% File: tagpdf.dtx + + +\bool_if:NTF \g__tag_mode_lua_bool + { + \RequirePackage {tagpdf-mc-code-lua} + } + { + \RequirePackage {tagpdf-mc-code-generic} % + } +%% File: tagpdf-tree.dtx +\hook_gput_code:nnn{begindocument}{tagpdf} + { + \bool_if:NT \g__tag_active_tree_bool + { + \sys_if_output_pdf:TF + { + \AddToHook{enddocument/end} { \__tag_finish_structure: } + } + { + \AddToHook{shipout/lastpage} { \__tag_finish_structure: } + } + } + } +\pdf_object_new:n { __tag/struct/0 } +\hook_gput_code:nnn{shipout/lastpage}{tagpdf} + { + \bool_if:NT \g__tag_active_tree_bool + { + \pdfmanagement_add:nnn { Catalog / MarkInfo } { Marked } { true } + \pdfmanagement_add:nnx + { Catalog } + { StructTreeRoot } + { \pdf_object_ref:n { __tag/struct/0 } } + } + } +\cs_new_protected:Npn \__tag_tree_write_structtreeroot: + { + \__tag_prop_gput:cnx + { g__tag_struct_0_prop } + { ParentTree } + { \pdf_object_ref:n { __tag/tree/parenttree } } + \__tag_prop_gput:cnx + { g__tag_struct_0_prop } + { RoleMap } + { \pdf_object_ref:n { __tag/tree/rolemap } } + \__tag_struct_write_obj:n { 0 } + } +\cs_new_protected:Npn \__tag_tree_write_structelements: + { + \int_step_inline:nnnn {1}{1}{\c@g__tag_struct_abs_int} + { + \__tag_struct_write_obj:n { ##1 } + } + } +\pdf_object_new:n { __tag/tree/parenttree } +\newcounter { g__tag_parenttree_obj_int } +\hook_gput_code:nnn{begindocument}{tagpdf} + { + \int_gset:Nn + \c@g__tag_parenttree_obj_int + { \__tag_ref_value_lastpage:nn{abspage}{100} } + } +\tl_new:N \g__tag_parenttree_objr_tl +\cs_new_protected:Npn \__tag_parenttree_add_objr:nn #1 #2 %#1 StructParent number, #2 objref + { + \tl_gput_right:Nx \g__tag_parenttree_objr_tl + { + #1 \c_space_tl #2 ^^J + } + } +\tl_new:N \l__tag_parenttree_content_tl + +\cs_new_protected:Npn \__tag_tree_fill_parenttree: + { + \int_step_inline:nnnn{1}{1}{\__tag_ref_value_lastpage:nn{abspage}{-1}} %not quite clear if labels are needed. See lua code + { %page ##1 + \prop_clear:N \l__tag_tmpa_prop + \int_step_inline:nnnn{1}{1}{\__tag_ref_value_lastpage:nn{tagmcabs}{-1}} + { + %mcid####1 + \int_compare:nT + {\__tag_ref_value:enn{mcid-####1}{tagabspage}{-1}=##1} %mcid is on current page + {% yes + \prop_put:Nxx + \l__tag_tmpa_prop + {\__tag_ref_value:enn{mcid-####1}{tagmcid}{-1}} + {\prop_item:Nn \g__tag_mc_parenttree_prop {####1}} + } + } + \tl_put_right:Nx\l__tag_parenttree_content_tl + { + \int_eval:n {##1-1}\c_space_tl + [\c_space_tl %] + } + \int_step_inline:nnnn + {0} + {1} + { \prop_count:N \l__tag_tmpa_prop -1 } + { + \prop_get:NnNTF \l__tag_tmpa_prop {####1} \l__tag_tmpa_tl + {% page#1:mcid##1:\l__tag_tmpa_tl :content + \tl_put_right:Nx \l__tag_parenttree_content_tl + { + \pdf_object_if_exist:eT { __tag/struct/\l__tag_tmpa_tl } + { + \pdf_object_ref:e { __tag/struct/\l__tag_tmpa_tl } + } + \c_space_tl + } + } + { + \msg_warning:nn { tag } {tree-mcid-index-wrong} + } + } + \tl_put_right:Nn + \l__tag_parenttree_content_tl + {%[ + ]^^J + } + } + } +\cs_new_protected:Npn \__tag_tree_lua_fill_parenttree: + { + \tl_set:Nn \l__tag_parenttree_content_tl + { + \lua_now:e + { + ltx.__tag.func.output_parenttree + ( + \int_use:N\g_shipout_readonly_int + ) + } + } + } +\cs_new_protected:Npn \__tag_tree_write_parenttree: + { + \bool_if:NTF \g__tag_mode_lua_bool + { + \__tag_tree_lua_fill_parenttree: + } + { + \__tag_tree_fill_parenttree: + } + \tl_put_right:NV \l__tag_parenttree_content_tl\g__tag_parenttree_objr_tl + \pdf_object_write:nnx { __tag/tree/parenttree }{dict} + { + /Nums\c_space_tl [\l__tag_parenttree_content_tl] + } + } +\pdf_object_new:n { __tag/tree/rolemap } +\cs_new_protected:Npn \__tag_tree_write_rolemap: + { + \pdf_object_write:nnx { __tag/tree/rolemap }{dict} + { + \pdfdict_use:n{g__tag_role/RoleMap_dict} + } + } +\cs_new_protected:Npn \__tag_tree_write_classmap: + { + \tl_clear:N \l__tag_tmpa_tl + \seq_gremove_duplicates:N \g__tag_attr_class_used_seq + \seq_set_map:NNn \l__tag_tmpa_seq \g__tag_attr_class_used_seq + { + ##1\c_space_tl + << + \prop_item:Nn + \g__tag_attr_entries_prop + {##1} + >> + } + \tl_set:Nx \l__tag_tmpa_tl + { + \seq_use:Nn + \l__tag_tmpa_seq + { \iow_newline: } + } + \tl_if_empty:NF + \l__tag_tmpa_tl + { + \pdf_object_new:n { __tag/tree/classmap } + \pdf_object_write:nnx + { __tag/tree/classmap } + {dict} + { \l__tag_tmpa_tl } + \__tag_prop_gput:cnx + { g__tag_struct_0_prop } + { ClassMap } + { \pdf_object_ref:n { __tag/tree/classmap } } + } + } +\pdf_object_new:nn{ __tag/tree/namespaces }{array} +\cs_new_protected:Npn \__tag_tree_write_namespaces: + { + \prop_map_inline:Nn \g__tag_role_NS_prop + { + \pdfdict_if_empty:nF {g__tag_role/RoleMapNS_##1_dict} + { + \pdf_object_write:nnx {__tag/RoleMapNS/##1}{dict} + { + \pdfdict_use:n {g__tag_role/RoleMapNS_##1_dict} + } + \pdfdict_gput:nnx{g__tag_role/Namespace_##1_dict} + {RoleMapNS}{\pdf_object_ref:n {__tag/RoleMapNS/##1}} + } + \pdf_object_write:nnx{tag/NS/##1}{dict} + { + \pdfdict_use:n {g__tag_role/Namespace_##1_dict} + } + } + \pdf_object_write:nx {__tag/tree/namespaces} %array + { + \prop_map_tokens:Nn \g__tag_role_NS_prop{\use_ii:nn} + } + } +\hook_new:n {tagpdf/finish/before} +\cs_new_protected:Npn \__tag_finish_structure: + { + \bool_if:NT\g__tag_active_tree_bool + { + \hook_use:n {tagpdf/finish/before} + \__tag_tree_write_parenttree: + \__tag_tree_write_rolemap: + \__tag_tree_write_classmap: + \__tag_tree_write_namespaces: + \__tag_tree_write_structelements: %this is rather slow!! + \__tag_tree_write_structtreeroot: + } + } +\hook_gput_code:nnn{begindocument}{tagpdf} + { + \bool_if:NT\g__tag_active_tree_bool + { + \hook_gput_code:nnn{shipout/before} { tagpdf/structparents } + { + \pdfmanagement_add:nnx + { Page } + { StructParents } + { \int_eval:n { \g_shipout_readonly_int} } + } + } + } +%% File: tagpdf-roles.dtx +\__tag_seq_new:N \g__tag_role_tags_seq %to get names (type/NS) from numbers +\__tag_prop_new:N \g__tag_role_tags_prop %to get numbers from names (type/NS) +\prop_new:N \g__tag_role_tags_NS_prop %to namespace info +\prop_new:N \g__tag_role_NS_prop % collect namespaces +\tl_new:N \l__tag_role_tag_tmpa_tl +\tl_new:N \l__tag_role_tag_namespace_tmpa_tl +\tl_new:N \l__tag_role_role_tmpa_tl +\tl_new:N \l__tag_role_role_namespace_tmpa_tl +\cs_new_protected:Npn \__tag_role_NS_new:nnn #1 #2 #3 + { + \pdf_object_new:n {tag/NS/#1} + \pdfdict_new:n {g__tag_role/Namespace_#1_dict} + \pdf_object_new:n {__tag/RoleMapNS/#1} + \pdfdict_new:n {g__tag_role/RoleMapNS_#1_dict} + \pdfdict_gput:nnn + {g__tag_role/Namespace_#1_dict} + {Type} + {/Namespace} + \pdf_string_from_unicode:nnN{utf8/string}{#2}\l_tmpa_str + \tl_if_empty:NF \l_tmpa_str + { + \pdfdict_gput:nnx + {g__tag_role/Namespace_#1_dict} + {NS} + {\l_tmpa_str} + } + %RoleMapNS is added in tree + \tl_if_empty:nF {#3} + { + \pdfdict_gput:nnx{g__tag_role/Namespace_#1_dict} + {Schema}{#3} + } + \prop_gput:Nnx \g__tag_role_NS_prop {#1}{\pdf_object_ref:n{tag/NS/#1}~} + } +\str_const:Nx \c__tag_role_userNS_id_str + { data:, + \int_to_Hex:n{\int_rand:n {65535}} + \int_to_Hex:n{\int_rand:n {65535}} + - + \int_to_Hex:n{\int_rand:n {65535}} + - + \int_to_Hex:n{\int_rand:n {65535}} + - + \int_to_Hex:n{\int_rand:n {65535}} + - + \int_to_Hex:n{\int_rand:n {16777215}} + \int_to_Hex:n{\int_rand:n {16777215}} + } +\pdf_version_compare:NnT > {1.9} + { + \__tag_role_NS_new:nnn {pdf} {http://iso.org/pdf/ssn}{} + \__tag_role_NS_new:nnn {pdf2} {http://iso.org/pdf2/ssn}{} + \__tag_role_NS_new:nnn {mathml}{http://www.w3.org/1998/Math/MathML}{} + %\__tag_role_NS_new:nnn {latex} {https://www.latex-project.org/ns/2022}{} + \exp_args:Nnx + \__tag_role_NS_new:nnn {user}{\c__tag_role_userNS_id_str}{} + } +\clist_const:Nn \c__tag_role_sttags_pdf_pdfII_clist + { + Document, %A complete document. This is the root element + %of any structure tree containing + %multiple parts or multiple articles. + Part, %A large-scale division of a document. + Sect, %A container for grouping related content elements. + Div, %A generic block-level element or group of elements + Caption, %A brief portion of text describing a table or figure. + Index, + NonStruct, %probably not needed + H, + H1, + H2, + H3, + H4, + H5, + H6, + P, + L, %list + LI, %list item (around label and list item body) + Lbl, %list label + LBody, %list item body + Table, + TR, %table row + TH, %table header cell + TD, %table data cell + THead, %table header (n rows) + TBody, %table rows + TFoot, %table footer + Span, %generic inline marker + Link, % + Annot, + Figure, + Formula, + Form, + % ruby warichu etc .. + Ruby, + RB, + RT, + Warichu, + WT, + WP, + Artifact % only MC-tag ?... + } + +\clist_const:Nn \c__tag_role_sttags_only_pdf_clist + { + Art, %A relatively self-contained body of text + %constituting a single narrative or exposition + BlockQuote, %A portion of text consisting of one or more paragraphs + %attributed to someone other than the author of the + %surrounding text. + TOC, %A list made up of table of contents item entries + %(structure tag TOCI; see below) and/or other + %nested table of contents entries + TOCI, %An individual member of a table of contents. + %This entry's children can be any of the following structure tags: + %Lbl,Reference,NonStruct,P,TOC + Index, + Private, + Quote, %inline quote + Note, %footnote, endnote. Lbl can be child + Reference, %A citation to content elsewhere in the document. + BibEntry, %bibentry + Code + } + +\clist_const:Nn \c__tag_role_sttags_only_pdfII_clist + { + DocumentFragment + ,Aside + ,H7 + ,H8 + ,H9 + ,H10 + ,Title + ,FENote + ,Sub + ,Em + ,Strong + ,Artifact + } + +\clist_const:Nn \c__tag_role_sttags_mathml_clist + { + abs + ,and + ,annotation + ,apply + ,approx + ,arccos + ,arccosh + ,arccot + ,arccoth + ,arccsc + ,arccsch + ,arcsec + ,arcsech + ,arcsin + ,arcsinh + ,arctan + ,arctanh + ,arg + ,bind + ,bvar + ,card + ,cartesianproduct + ,cbytes + ,ceiling + ,cerror + ,ci + ,cn + ,codomain + ,complexes + ,compose + ,condition + ,conjugate + ,cos + ,cosh + ,cot + ,coth + ,cs + ,csc + ,csch + ,csymbol + ,curl + ,declare + ,degree + ,determinant + ,diff + ,divergence + ,divide + ,domain + ,domainofapplication + ,emptyset + ,eq + ,equivalent + ,eulergamma + ,exists + ,exp + ,exponentiale + ,factorial + ,factorof + ,false + ,floor + ,fn + ,forall + ,gcd + ,geq + ,grad + ,gt + ,ident + ,image + ,imaginary + ,imaginaryi + ,implies + ,in + ,infinity + ,int + ,integers + ,intersect + ,interval + ,inverse + ,lambda + ,laplacian + ,lcm + ,leq + ,limit + ,ln + ,log + ,logbase + ,lowlimit + ,lt + ,maction + ,maligngroup + ,malignmark + ,math + ,matrix + ,matrixrow + ,max + ,mean + ,median + ,menclose + ,merror + ,mfenced + ,mfrac + ,mglyph + ,mi + ,min + ,minus + ,mlabeledtr + ,mlongdiv + ,mmultiscripts + ,mn + ,mo + ,mode + ,moment + ,momentabout + ,mover + ,mpadded + ,mphantom + ,mprescripts + ,mroot + ,mrow + ,ms + ,mscarries + ,mscarry + ,msgroup + ,msline + ,mspace + ,msqrt + ,msrow + ,mstack + ,mstyle + ,msub + ,msubsup + ,msup + ,mtable + ,mtd + ,mtext + ,mtr + ,munder + ,munderover + ,naturalnumbers + ,neq + ,none + ,not + ,notanumber + ,notin + ,notprsubset + ,notsubset + ,or + ,otherwise + ,outerproduct + ,partialdiff + ,pi + ,piece + ,piecewise + ,plus + ,power + ,primes + ,product + ,prsubset + ,quotient + ,rationals + ,real + ,reals + ,reln + ,rem + ,root + ,scalarproduct + ,sdev + ,sec + ,sech + ,selector + ,semantics + ,sep + ,set + ,setdiff + ,share + ,sin + ,sinh + ,subset + ,sum + ,tan + ,tanh + ,tendsto + ,times + ,transpose + ,true + ,union + ,uplimit + ,variance + ,vector + ,vectorproduct + ,xor + } + +\prop_const_from_keyval:Nn \c__tag_role_sttags_pdfII_to_pdf_prop + { + DocumentFragment = Art, + Aside = Note, + Title = H1, + Sub = Span, + H7 = H6 , + H8 = H6 , + H9 = H6 , + H10 = H6, + FENote= Note, + Em = Span, + Strong= Span, + } + +\clist_map_inline:Nn \c__tag_role_sttags_pdf_pdfII_clist + { + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ pdf2 } + } +\clist_map_inline:Nn \c__tag_role_sttags_only_pdf_clist + { + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ pdf } + } +\clist_map_inline:Nn \c__tag_role_sttags_only_pdfII_clist + { + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ pdf2 } + } +\pdf_version_compare:NnT > {1.9} + { + \clist_map_inline:Nn \c__tag_role_sttags_mathml_clist + { + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ mathml } + } + } +\int_step_inline:nnnn { 1 }{ 1 }{ \seq_count:N \g__tag_role_tags_seq } + { + \__tag_prop_gput:Nxn \g__tag_role_tags_prop + { + \seq_item:Nn \g__tag_role_tags_seq { #1 } + } + { #1 } + } +\pdfdict_new:n {g__tag_role/RoleMap_dict} +\cs_new_protected:Nn \__tag_role_add_tag:nn %(new) name, reference to old + { + \prop_if_in:NnF \g__tag_role_tags_prop {#1} + { + \int_compare:nNnT {\l__tag_loglevel_int} > { 0 } + { + \msg_info:nnn { tag }{new-tag}{#1} + } + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \__tag_prop_gput:Nnx \g__tag_role_tags_prop { #1 } + { + \seq_count:N \g__tag_role_tags_seq + } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ user } + } + \__tag_check_add_tag_role:nn {#1}{#2} + \tl_if_empty:nF { #2 } + { + \pdfdict_gput:nnx {g__tag_role/RoleMap_dict} + {#1} + {\pdf_name_from_unicode_e:n{#2}} + } + } +\cs_generate_variant:Nn \__tag_role_add_tag:nn {VV} + +\pdf_version_compare:NnT < {2.0} + { + \prop_map_inline:Nn \c__tag_role_sttags_pdfII_to_pdf_prop + { + \__tag_role_add_tag:nn {#1}{#2} + } + } + +\cs_new_protected:Nn \__tag_role_add_tag:nnnn %tag/namespace/role/namespace + { + \int_compare:nNnT {\l__tag_loglevel_int} > { 0 } + { + \msg_info:nnn { tag }{new-tag}{#1} + } + \__tag_seq_gput_right:Nn \g__tag_role_tags_seq { #1 } + \__tag_prop_gput:Nnx \g__tag_role_tags_prop { #1 } + { + \seq_count:N \g__tag_role_tags_seq + } + \prop_gput:Nnn \g__tag_role_tags_NS_prop { #1 }{ #2 } + \__tag_check_add_tag_role:nn {#1}{#3} + \pdfdict_gput:nnx {g__tag_role/RoleMapNS_#2_dict}{#1} + { + [ + \pdf_name_from_unicode_e:n{#3} + \c_space_tl + \pdf_object_ref:n {tag/NS/#4} + ] + } + } +\cs_generate_variant:Nn \__tag_role_add_tag:nnnn {VVVV} +\keys_define:nn { __tag / tag-role } + { + ,tag .tl_set:N = \l__tag_role_tag_tmpa_tl + ,tag-namespace .tl_set:N = \l__tag_role_tag_namespace_tmpa_tl + ,role .tl_set:N = \l__tag_role_role_tmpa_tl + ,role-namespace .tl_set:N = \l__tag_role_role_namespace_tmpa_tl + } + +\keys_define:nn { __tag / setup } + { + add-new-tag .code:n = + { + \keys_set_known:nnnN + {__tag/tag-role} + { + tag-namespace=user, + role-namespace=, %so that we can test for it. + #1 + }{__tag/tag-role}\l_tmpa_tl + \tl_if_empty:NF \l_tmpa_tl + { + \exp_args:NNno \seq_set_split:Nnn \l_tmpa_seq { / } {\l_tmpa_tl/} + \tl_set:Nx \l__tag_role_tag_tmpa_tl { \seq_item:Nn \l_tmpa_seq {1} } + \tl_set:Nx \l__tag_role_role_tmpa_tl { \seq_item:Nn \l_tmpa_seq {2} } + } + \tl_if_empty:NT \l__tag_role_role_namespace_tmpa_tl + { + \prop_get:NVNTF + \g__tag_role_tags_NS_prop + \l__tag_role_role_tmpa_tl + \l__tag_role_role_namespace_tmpa_tl + { + \prop_if_in:NVF\g__tag_role_NS_prop \l__tag_role_role_namespace_tmpa_tl + { + \tl_set:Nn \l__tag_role_role_namespace_tmpa_tl {user} + } + } + { + \tl_set:Nn \l__tag_role_role_namespace_tmpa_tl {user} + } + } + \pdf_version_compare:NnTF < {2.0} + { + %TODO add check for emptyness? + \__tag_role_add_tag:VV + \l__tag_role_tag_tmpa_tl + \l__tag_role_role_tmpa_tl + } + { + \__tag_role_add_tag:VVVV + \l__tag_role_tag_tmpa_tl + \l__tag_role_tag_namespace_tmpa_tl + \l__tag_role_role_tmpa_tl + \l__tag_role_role_namespace_tmpa_tl + } + } + } +%% File: tagpdf-struct.dtx +\__tag_seq_new:N \g__tag_struct_objR_seq + +\__tag_prop_new:N \g__tag_struct_cont_mc_prop +\seq_new:N \g__tag_struct_stack_seq +\seq_gpush:Nn \g__tag_struct_stack_seq {0} +\seq_new:N \g__tag_struct_tag_stack_seq +\seq_gpush:Nn \g__tag_struct_tag_stack_seq {Root} +\tl_new:N \l__tag_struct_stack_parent_tmpa_tl + +\seq_const_from_clist:Nn \c__tag_struct_StructTreeRoot_entries_seq + {%p. 857/858 + Type, % always /StructTreeRoot + K, % kid, dictionary or array of dictionaries + IDTree, % currently unused + ParentTree, % required,obj ref to the parent tree + ParentTreeNextKey, % optional + RoleMap, + ClassMap, + Namespaces, + AF %pdf 2.0 + } + +\seq_const_from_clist:Nn \c__tag_struct_StructElem_entries_seq + {%p 858 f + Type, %always /StructElem + S, %tag/type + P, %parent + ID, %optional + Ref, %optional, pdf 2.0 Use? + Pg, %obj num of starting page, optional + K, %kids + A, %attributes, probably unused + C, %class "" + %R, %attribute revision number, irrelevant for us as we + % don't update/change existing PDF and (probably) + % deprecated in PDF 2.0 + T, %title, value in () or <> + Lang, %language + Alt, % value in () or <> + E, % abreviation + ActualText, + AF, %pdf 2.0, array of dict, associated files + NS, %pdf 2.0, dict, namespace + PhoneticAlphabet, %pdf 2.0 + Phoneme %pdf 2.0 + } +\tl_new:N \g__tag_struct_tag_tl +\tl_new:N \g__tag_struct_tag_NS_tl +\tl_new:N \l__tag_struct_key_label_tl +\bool_new:N \l__tag_struct_elem_stash_bool +\cs_new:Npn \__tag_struct_output_prop_aux:nn #1 #2 %#1 num, #2 key + { + \prop_if_in:cnT + { g__tag_struct_#1_prop } + { #2 } + { + \c_space_tl/#2~ \prop_item:cn{ g__tag_struct_#1_prop } { #2 } + } + } + +\cs_new_protected:Npn \__tag_new_output_prop_handler:n #1 + { + \cs_new:cn { __tag_struct_output_prop_#1:n } + { + \__tag_struct_output_prop_aux:nn {#1}{##1} + } + } +\tl_gset:Nn \g__tag_struct_stack_current_tl {0} + +\__tag_prop_new:c { g__tag_struct_0_prop } +\__tag_new_output_prop_handler:n {0} +\__tag_seq_new:c { g__tag_struct_kids_0_seq } + +\__tag_prop_gput:cnn + { g__tag_struct_0_prop } + { Type } + { /StructTreeRoot } + +\__tag_prop_gput:cnx + { g__tag_struct_0_prop } + { Namespaces } + { \pdf_object_ref:n { __tag/tree/namespaces } } +\cs_new:Npn \__tag_struct_mcid_dict:n #1 %#1 MCID absnum + { + << + /Type \c_space_tl /MCR \c_space_tl + /Pg + \c_space_tl + \pdf_pageobject_ref:n { \__tag_ref_value:enn{mcid-#1}{tagabspage}{1} } + /MCID \c_space_tl \__tag_ref_value:enn{mcid-#1}{tagmcid}{1} + >> + } +\cs_new_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum% + { + \__tag_seq_gput_right:cx + { g__tag_struct_kids_#1_seq } + { + \__tag_struct_mcid_dict:n {#2} + } + \__tag_seq_gput_right:cn + { g__tag_struct_kids_#1_seq } + { + \prop_item:Nn \g__tag_struct_cont_mc_prop {#2} + } + } +\cs_generate_variant:Nn \__tag_struct_kid_mc_gput_right:nn {nx} + +\cs_new_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct + { + \__tag_seq_gput_right:cx + { g__tag_struct_kids_#1_seq } + { + \pdf_object_ref:n { __tag/struct/#2 } + } + } + +\cs_generate_variant:Nn \__tag_struct_kid_struct_gput_right:nn {xx} +\cs_new_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct, + %#2 obj reference + %#3 page object reference + { + \pdf_object_unnamed_write:nn + { dict } + { + /Type/OBJR/Obj~#2/Pg~#3 + } + \__tag_seq_gput_right:cx + { g__tag_struct_kids_#1_seq } + { + \pdf_object_ref_last: + } + } + +\cs_generate_variant:Nn\__tag_struct_kid_OBJR_gput_right:nnn { xxx } + +\cs_new_protected:Npn\__tag_struct_exchange_kid_command:N #1 %#1 = seq var + { + \seq_gpop_left:NN #1 \l__tag_tmpa_tl + \regex_replace_once:nnN + { \c{\__tag_mc_insert_mcid_kids:n} } + { \c{\__tag_mc_insert_mcid_single_kids:n} } + \l__tag_tmpa_tl + \seq_gput_left:NV #1 \l__tag_tmpa_tl + } + +\cs_generate_variant:Nn\__tag_struct_exchange_kid_command:N { c } +\cs_new_protected:Npn \__tag_struct_fill_kid_key:n #1 %#1 is the struct num + { + \bool_if:NF\g__tag_mode_lua_bool + { + \seq_clear:N \l__tag_tmpa_seq + \seq_map_inline:cn { g__tag_struct_kids_#1_seq } + { \seq_put_right:Nx \l__tag_tmpa_seq { ##1 } } + %\seq_show:c { g__tag_struct_kids_#1_seq } + %\seq_show:N \l__tag_tmpa_seq + \seq_remove_all:Nn \l__tag_tmpa_seq {} + %\seq_show:N \l__tag_tmpa_seq + \seq_gset_eq:cN { g__tag_struct_kids_#1_seq } \l__tag_tmpa_seq + } + + \int_case:nnF + { + \seq_count:c + { + g__tag_struct_kids_#1_seq + } + } + { + { 0 } + { } %no kids, do nothing + { 1 } % 1 kid, insert + { + % in this case we need a special command in + % luamode to get the array right. See issue #13 + \bool_if:NT\g__tag_mode_lua_bool + { + \__tag_struct_exchange_kid_command:c + {g__tag_struct_kids_#1_seq} + } + \__tag_prop_gput:cnx { g__tag_struct_#1_prop } {K} + { + \seq_item:cn + { + g__tag_struct_kids_#1_seq + } + {1} + } + } % + } + { %many kids, use an array + \__tag_prop_gput:cnx { g__tag_struct_#1_prop } {K} + { + [ + \seq_use:cn + { + g__tag_struct_kids_#1_seq + } + { + \c_space_tl + } + ] + } + } + } + +\cs_new_protected:Npn \__tag_struct_get_dict_content:nN #1 #2 %#1: stucture num + { + \tl_clear:N #2 + \seq_map_inline:cn + { + c__tag_struct_ + \int_compare:nNnTF{#1}={0}{StructTreeRoot}{StructElem} + _entries_seq + } + { + \tl_put_right:Nx + #2 + { + \prop_if_in:cnT + { g__tag_struct_#1_prop } + { ##1 } + { + \c_space_tl/##1~ + \cs_if_exist_use:cTF {__tag_struct_format_##1:e} + { + { \prop_item:cn{ g__tag_struct_#1_prop } { ##1 } } + } + { + \prop_item:cn{ g__tag_struct_#1_prop } { ##1 } + } + } + } + } + } +\cs_new:Nn\__tag_struct_format_Ref:n{[#1]} +\cs_generate_variant:Nn\__tag_struct_format_Ref:n{e} +\cs_new_protected:Npn \__tag_struct_write_obj:n #1 % #1 is the struct num + { + \pdf_object_if_exist:nTF { __tag/struct/#1 } + { + \__tag_struct_fill_kid_key:n { #1 } + \__tag_struct_get_dict_content:nN { #1 } \l__tag_tmpa_tl + \exp_args:Nx + \pdf_object_write:nnx + { __tag/struct/#1 } + {dict} + { + \l__tag_tmpa_tl + } + } + { + \msg_error:nnn { tag } { struct-no-objnum } { #1} + } + } +\cs_new_protected:Npn \__tag_struct_insert_annot:nn #1 #2 %#1 object reference to the annotation/xform + %#2 structparent number + { + \bool_if:NT \g__tag_active_struct_bool + { + %get the number of the parent structure: + \seq_get:NNF + \g__tag_struct_stack_seq + \l__tag_struct_stack_parent_tmpa_tl + { + \msg_error:nn { tag } { struct-faulty-nesting } + } + %put the obj number of the annot in the kid entry, this also creates + %the OBJR object + \ref_label:nn {__tag_objr_page_#2 }{ tagabspage } + \__tag_struct_kid_OBJR_gput_right:xxx + { + \l__tag_struct_stack_parent_tmpa_tl + } + { + #1 % + } + { + \pdf_pageobject_ref:n { \__tag_ref_value:nnn {__tag_objr_page_#2 }{ tagabspage }{1} } + } + % add the parent obj number to the parent tree: + \exp_args:Nnx + \__tag_parenttree_add_objr:nn + { + #2 + } + { + \pdf_object_ref:e { __tag/struct/\l__tag_struct_stack_parent_tmpa_tl } + } + % increase the int: + \stepcounter{ g__tag_parenttree_obj_int } + } + } +\cs_new:Npn \__tag_get_data_struct_tag: + { + \exp_args:Ne + \tl_tail:n + { + \prop_item:cn {g__tag_struct_\g__tag_struct_stack_current_tl _prop}{S} + } + } +\keys_define:nn { __tag / struct } + { + label .tl_set:N = \l__tag_struct_key_label_tl, + stash .bool_set:N = \l__tag_struct_elem_stash_bool, + parent .code:n = + { + \bool_lazy_and:nnTF + { + \prop_if_exist_p:c { g__tag_struct_\int_eval:n {#1}_prop } + } + { + \int_compare_p:nNn {#1}<{\c@g__tag_struct_abs_int} + } + { \tl_set:Nx \l__tag_struct_stack_parent_tmpa_tl { \int_eval:n {#1} } } + { + \msg_warning:nnxx { tag } { struct-unknown } + { \int_eval:n {#1} } + { parent~key~ignored } + } + }, + parent .default:n = {-1}, + tag .code:n = % S property + { + \seq_set_split:Nne \l__tag_tmpa_seq { / } {#1/\prop_item:No\g__tag_role_tags_NS_prop{#1}} + \tl_gset:Nx \g__tag_struct_tag_tl { \seq_item:Nn\l__tag_tmpa_seq {1} } + \tl_gset:Nx \g__tag_struct_tag_NS_tl { \seq_item:Nn\l__tag_tmpa_seq {2} } + \__tag_check_structure_tag:N \g__tag_struct_tag_tl + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { S } + { \pdf_name_from_unicode_e:n{ \g__tag_struct_tag_tl} } % + \prop_get:NVNT \g__tag_role_NS_prop\g__tag_struct_tag_NS_tl\l__tag_tmpa_tl + { + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { NS } + { \l__tag_tmpa_tl } % + } + }, + title .code:n = % T property + { + \str_set_convert:Nnnn + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { T } + { <\l__tag_tmpa_str> } + }, + title-o .code:n = % T property + { + \str_set_convert:Nonn + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { T } + { <\l__tag_tmpa_str> } + }, + alt .code:n = % Alt property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { Alt } + { <\l__tag_tmpa_str> } + }, + alttext .meta:n = {alt=#1}, + actualtext .code:n = % ActualText property + { + \str_set_convert:Noon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { ActualText } + { <\l__tag_tmpa_str>} + }, + lang .code:n = % Lang property + { + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { Lang } + { (#1) } + }, + ref .code:n = % ref property + { + \tl_clear:N\l__tag_tmpa_tl + \clist_map_inline:on {#1} + { + \tl_put_right:Nx \l__tag_tmpa_tl + {~\ref_value:nn{tagpdfstruct-##1}{tagstructobj} } + } + \__tag_struct_gput_data_ref:ee { \int_eval:n {\c@g__tag_struct_abs_int} } {\l__tag_tmpa_tl} + }, + E .code:n = % E property + { + \str_set_convert:Nnon + \l__tag_tmpa_str + { #1 } + { default } + { utf16/hex } + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { E } + { <\l__tag_tmpa_str> } + }, + } +\cs_new_protected:Npn \__tag_struct_add_AF:nn #1 #2 % #1 struct num #2 object name + { + \tl_if_exist:cTF + { + g__tag_struct_#1_AF_tl + } + { + \tl_gput_right:cx + { g__tag_struct_#1_AF_tl } + { ~ \pdf_object_ref:n {#2} } + } + { + \tl_new:c + { g__tag_struct_#1_AF_tl } + \tl_gset:cx + { g__tag_struct_#1_AF_tl } + { \pdf_object_ref:n {#2} } + } + } +\cs_generate_variant:Nn \__tag_struct_add_AF:nn {en,ee} +\keys_define:nn { __tag / struct } + { + AF .code:n = % AF property + { + \pdf_object_if_exist:nTF {#1} + { + \__tag_struct_add_AF:en { \int_eval:n {\c@g__tag_struct_abs_int} }{#1} + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { AF } + { + [ + \tl_use:c + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_AF_tl } + ] + } + } + { + + } + }, + ,AFinline .code:n = + { + \group_begin: + \pdf_object_if_exist:eF {__tag/fileobj\int_use:N\c@g__tag_struct_abs_int} + { + \pdffile_embed_stream:nxx + {#1} + {tag-AFfile\int_use:N\c@g__tag_struct_abs_int.txt} + {__tag/fileobj\int_use:N\c@g__tag_struct_abs_int} + \__tag_struct_add_AF:ee + { \int_eval:n {\c@g__tag_struct_abs_int} } + { __tag/fileobj\int_use:N\c@g__tag_struct_abs_int } + \__tag_prop_gput:cnx + { g__tag_struct_\int_use:N\c@g__tag_struct_abs_int _prop } + { AF } + { + [ + \tl_use:c + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_AF_tl } + ] + } + } + \group_end: + } + ,AFinline-o .code:n = + { + \group_begin: + \pdf_object_if_exist:eF {__tag/fileobj\int_use:N\c@g__tag_struct_abs_int} + { + \pdffile_embed_stream:oxx + {#1} + {tag-AFfile\int_use:N\c@g__tag_struct_abs_int.txt} + {__tag/fileobj\int_use:N\c@g__tag_struct_abs_int} + \__tag_struct_add_AF:ee + { \int_eval:n {\c@g__tag_struct_abs_int} } + { __tag/fileobj\int_use:N\c@g__tag_struct_abs_int } + \__tag_prop_gput:cnx + { g__tag_struct_\int_use:N\c@g__tag_struct_abs_int _prop } + { AF } + { + [ + \tl_use:c + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_AF_tl } + ] + } + } + \group_end: + } + } +\keys_define:nn { __tag / setup } + { + root-AF .code:n = + { + \pdf_object_if_exist:nTF {#1} + { + \__tag_struct_add_AF:en { 0 }{#1} + \__tag_prop_gput:cnx + { g__tag_struct_0_prop } + { AF } + { + [ + \tl_use:c + { g__tag_struct_0_AF_tl } + ] + } + } + { + + } + }, + } +\cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val + { +\__tag_check_if_active_struct:T + { + \group_begin: + \int_gincr:N \c@g__tag_struct_abs_int + \__tag_prop_new:c { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } + \__tag_new_output_prop_handler:n {\int_eval:n { \c@g__tag_struct_abs_int }} + \__tag_seq_new:c { g__tag_struct_kids_\int_eval:n { \c@g__tag_struct_abs_int }_seq} + \exp_args:Ne + \pdf_object_new:n + { __tag/struct/\int_eval:n { \c@g__tag_struct_abs_int } } + \__tag_prop_gput:cno + { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } + { Type } + { /StructElem } + \tl_set:Nn \l__tag_struct_stack_parent_tmpa_tl {-1} + \keys_set:nn { __tag / struct} { #1 } + \__tag_check_structure_has_tag:n { \int_eval:n {\c@g__tag_struct_abs_int} } + \tl_if_empty:NF + \l__tag_struct_key_label_tl + { + \__tag_ref_label:en{tagpdfstruct-\l__tag_struct_key_label_tl}{struct} + } + \int_compare:nNnT { \l__tag_struct_stack_parent_tmpa_tl } = { -1 } + { + \seq_get:NNF + \g__tag_struct_stack_seq + \l__tag_struct_stack_parent_tmpa_tl + { + \msg_error:nn { tag } { struct-faulty-nesting } + } + } + \seq_gpush:NV \g__tag_struct_stack_seq \c@g__tag_struct_abs_int + \seq_gpush:NV \g__tag_struct_tag_stack_seq \g__tag_struct_tag_tl + \tl_gset:NV \g__tag_struct_stack_current_tl \c@g__tag_struct_abs_int + %\seq_show:N \g__tag_struct_stack_seq + \bool_if:NF + \l__tag_struct_elem_stash_bool + {%set the parent + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { P } + { + \pdf_object_ref:e { __tag/struct/\l__tag_struct_stack_parent_tmpa_tl } + } + %record this structure as kid: + %\tl_show:N \g__tag_struct_stack_current_tl + %\tl_show:N \l__tag_struct_stack_parent_tmpa_tl + \__tag_struct_kid_struct_gput_right:xx + { \l__tag_struct_stack_parent_tmpa_tl } + { \g__tag_struct_stack_current_tl } + %\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop } + %\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq} + } + %\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop } + %\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq} + \group_end: + } + } +\cs_set_protected:Nn \tag_struct_end: + { %take the current structure num from the stack: + %the objects are written later, lua mode hasn't all needed info yet + %\seq_show:N \g__tag_struct_stack_seq +\__tag_check_if_active_struct:T + { + \seq_gpop:NN \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl + \seq_gpop:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl + { + \__tag_check_info_closing_struct:o { \g__tag_struct_stack_current_tl } + } + { \__tag_check_no_open_struct: } + % get the previous one, shouldn't be empty as the root should be there + \seq_get:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl + { + \tl_gset:NV \g__tag_struct_stack_current_tl \l__tag_tmpa_tl + } + { + \__tag_check_no_open_struct: + } + \seq_get:NNT \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl + { + \tl_gset:NV \g__tag_struct_tag_tl \l__tag_tmpa_tl + } + } + } +\cs_set_protected:Npn \tag_struct_use:n #1 %#1 is the label + { + \__tag_check_if_active_struct:T + { + \prop_if_exist:cTF + { g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } % + { + \__tag_check_struct_used:n {#1} + %add the label structure as kid to the current structure (can be the root) + \__tag_struct_kid_struct_gput_right:xx + { \g__tag_struct_stack_current_tl } + { \__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0} } + %add the current structure to the labeled one as parents + \__tag_prop_gput:cnx + { g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop } + { P } + { + \pdf_object_ref:e { __tag/struct/\g__tag_struct_stack_current_tl } + } + } + { + \msg_warning:nnn{ tag }{struct-label-unknown}{#1} + } + } + } +\cs_new:Npn \tag_struct_object_ref:n #1 + { + \pdf_object_ref:n {__tag/struct/#1} + } +\cs_generate_variant:Nn \tag_struct_object_ref:n {e} +\cs_new_protected:Npn \tag_struct_gput:nnn #1 #2 #3 + { + \cs_if_exist_use:cF {__tag_struct_gput_data_#2:nn} + { %warning?? + \use_none:nn + } + {#1}{#3} + } +\cs_generate_variant:Nn \tag_struct_gput:nnn {ene,nne} +\cs_new_protected:Npn \__tag_struct_gput_data_ref:nn #1 #2 + % #1 receiving struct num, #2 list of object ref + { + \prop_get:cnN + { g__tag_struct_#1_prop } + {Ref} + \l__tag_tmpb_tl + \__tag_prop_gput:cnx + { g__tag_struct_#1_prop } + { Ref } + { \quark_if_no_value:NF\l__tag_tmpb_tl { \l__tag_tmpb_tl\c_space_tl }#2 } + } +\cs_generate_variant:Nn \__tag_struct_gput_data_ref:nn {ee} + +\cs_new_protected:Npn \tag_struct_insert_annot:nn #1 #2 %#1 should be an object reference + %#2 struct parent num + { + \__tag_check_if_active_struct:T + { + \__tag_struct_insert_annot:nn {#1}{#2} + } + } + +\cs_generate_variant:Nn \tag_struct_insert_annot:nn {xx} +\cs_new:Npn \tag_struct_parent_int: {\int_use:c { c@g__tag_parenttree_obj_int }} + + +\prop_new:N \g__tag_attr_entries_prop +\seq_new:N \g__tag_attr_class_used_seq +\tl_new:N \l__tag_attr_value_tl +\prop_new:N \g__tag_attr_objref_prop %will contain obj num of used attributes +\cs_new_protected:Npn \__tag_attr_new_entry:nn #1 #2 %#1:name, #2: content + { + \prop_gput:Nen \g__tag_attr_entries_prop + {\pdf_name_from_unicode_e:n{#1}}{#2} + } + +\keys_define:nn { __tag / setup } + { + newattribute .code:n = + { + \__tag_attr_new_entry:nn #1 + } + } +\keys_define:nn { __tag / struct } + { + attribute-class .code:n = + { + \clist_set:No \l__tag_tmpa_clist { #1 } + \seq_set_from_clist:NN \l__tag_tmpb_seq \l__tag_tmpa_clist + \seq_set_map_x:NNn \l__tag_tmpa_seq \l__tag_tmpb_seq + { + \pdf_name_from_unicode_e:n {##1} + } + \seq_map_inline:Nn \l__tag_tmpa_seq + { + \prop_if_in:NnF \g__tag_attr_entries_prop {##1} + { + \msg_error:nnn { tag } { attr-unknown } { ##1 } + } + \seq_gput_left:Nn\g__tag_attr_class_used_seq { ##1} + } + \tl_set:Nx \l__tag_tmpa_tl + { + \int_compare:nT { \seq_count:N \l__tag_tmpa_seq > 1 }{[} + \seq_use:Nn \l__tag_tmpa_seq { \c_space_tl } + \int_compare:nT { \seq_count:N \l__tag_tmpa_seq > 1 }{]} + } + \int_compare:nT { \seq_count:N \l__tag_tmpa_seq > 0 } + { + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { C } + { \l__tag_tmpa_tl } + %\prop_show:c { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + } + } + } +\keys_define:nn { __tag / struct } + { + attribute .code:n = % A property (attribute, value currently a dictionary) + { + \clist_set:No \l__tag_tmpa_clist { #1 } + \seq_set_from_clist:NN \l__tag_tmpb_seq \l__tag_tmpa_clist + \seq_set_map_x:NNn \l__tag_tmpa_seq \l__tag_tmpb_seq + { + \pdf_name_from_unicode_e:n {##1} + } + \tl_set:Nx \l__tag_attr_value_tl + { + \int_compare:nT { \seq_count:N \l__tag_tmpa_seq > 1 }{[}%] + } + \seq_map_inline:Nn \l__tag_tmpa_seq + { + \prop_if_in:NnF \g__tag_attr_entries_prop {##1} + { + \msg_error:nnn { tag } { attr-unknown } { ##1 } + } + \prop_if_in:NnF \g__tag_attr_objref_prop {##1} + {%\prop_show:N \g__tag_attr_entries_prop + \pdf_object_unnamed_write:nx + { dict } + { + \prop_item:Nn\g__tag_attr_entries_prop {##1} + } + \prop_gput:Nnx \g__tag_attr_objref_prop {##1} {\pdf_object_ref_last:} + } + \tl_put_right:Nx \l__tag_attr_value_tl + { + \c_space_tl + \prop_item:Nn \g__tag_attr_objref_prop {##1} + } + % \tl_show:N \l__tag_attr_value_tl + } + \tl_put_right:Nx \l__tag_attr_value_tl + { %[ + \int_compare:nT { \seq_count:N \l__tag_tmpa_seq > 1 }{]}% + } + % \tl_show:N \l__tag_attr_value_tl + \__tag_prop_gput:cnx + { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } + { A } + { \l__tag_attr_value_tl } + }, + } +%% File: tagpdf-space.dtx +\keys_define:nn { __tag / setup } + { + interwordspace .choices:nn = { true, on } + { \msg_warning:nnx {tag}{sys-no-interwordspace}{\c_sys_engine_str} }, + interwordspace .choices:nn = { false, off } + { \msg_warning:nnx {tag}{sys-no-interwordspace}{\c_sys_engine_str} }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l__tag_showspaces_bool + } +\sys_if_engine_pdftex:T + { + \sys_if_output_pdf:TF + { + \pdfglyphtounicode{space}{0020} + \keys_define:nn { __tag / setup } + { + interwordspace .choices:nn = { true, on } { \pdfinterwordspaceon }, + interwordspace .choices:nn = { false, off }{ \pdfinterwordspaceon }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l__tag_showspaces_bool + } + } + { + \keys_define:nn { __tag / setup } + { + interwordspace .choices:nn = { true, on, false, off } + { \msg_warning:nnn {tag}{sys-no-interwordspace}{dvi} }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l__tag_showspaces_bool + } + } + } + +\sys_if_engine_luatex:T + { + \keys_define:nn { __tag / setup } + { + interwordspace .choices:nn = + { true, on } + { + \bool_gset_true:N \g__tag_active_space_bool + \lua_now:e{ltx.__tag.func.markspaceon()} + }, + interwordspace .choices:nn = + { false, off } + { + \bool_gset_false:N \g__tag_active_space_bool + \lua_now:e{ltx.__tag.func.markspaceoff()} + }, + interwordspace .default:n = true, + show-spaces .choice:, + show-spaces / true .code:n = + {\lua_now:e{ltx.__tag.trace.showspaces=true}}, + show-spaces / false .code:n = + {\lua_now:e{ltx.__tag.trace.showspaces=nil}}, + show-spaces .default:n = true + } + } +\sys_if_engine_luatex:T + { + \cs_new_protected:Nn \__tag_fakespace: + { + \group_begin: + \lua_now:e{ltx.__tag.func.fakespace()} + \skip_horizontal:n{\c_zero_skip} + \group_end: + } + } +%% File: tagpdf-user.dtx + + +\RenewDocumentCommand \tagpdfsetup { m } + { + \keys_set:nn { __tag / setup } { #1 } + } + + +\NewDocumentCommand \tagmcifinTF { m m } + { + \tag_mc_if_in:TF { #1 } { #2 } + } +\NewDocumentCommand\ShowTagging { m } + { + \keys_set:nn { __tag / show }{ #1} + + } +\keys_define:nn { __tag / show } + { + mc-data .code:n = + { + \sys_if_engine_luatex:T + { + \lua_now:e{ltx.__tag.trace.show_all_mc_data(#1,\__tag_get_mc_abs_cnt:,0)} + } + } + ,mc-data .default:n = 1 + } + +\keys_define:nn { __tag / show } + { mc-current .code:n = + { + \bool_if:NTF \g__tag_mode_lua_bool + { + \sys_if_engine_luatex:T + { + \int_compare:nNnTF + { -2147483647 } + = + { + \lua_now:e + { + tex.print + (tex.getattribute + (luatexbase.attributes.g__tag_mc_cnt_attr)) + } + } + { + \lua_now:e + { + ltx.__tag.trace.log + ( + "mc-current:~no~MC~open,~current~abscnt + =\__tag_get_mc_abs_cnt:" + ,0 + ) + texio.write_nl("") + } + } + { + \lua_now:e + { + ltx.__tag.trace.log + ( + "mc-current:~abscnt=\__tag_get_mc_abs_cnt:==" + .. + tex.getattribute(luatexbase.attributes.g__tag_mc_cnt_attr) + .. + "~=>tag=" + .. + tostring + (ltx.__tag.func.get_tag_from + (tex.getattribute + (luatexbase.attributes.g__tag_mc_type_attr))) + .. + "=" + .. + tex.getattribute + (luatexbase.attributes.g__tag_mc_type_attr) + ,0 + ) + texio.write_nl("") + } + } + } + } + { + \msg_note:nn{ tag }{ mc-current } + } + } + } +\keys_define:nn { __tag / show } + { + mc-marks .choice: , + mc-marks / show .code:n = + { + \__tag_mc_get_marks: + \__tag_check_if_mc_in_galley:TF + { + \iow_term:n {Marks~from~this~page:~} + } + { + \iow_term:n {Marks~from~a~previous~page:~} + } + \seq_show:N \l__tag_mc_firstmarks_seq + \seq_show:N \l__tag_mc_botmarks_seq + \__tag_check_if_mc_tmb_missing:T + { + \iow_term:n {BDC~missing~on~this~page!} + } + \__tag_check_if_mc_tme_missing:T + { + \iow_term:n {EMC~missing~on~this~page!} + } + }, + mc-marks / use .code:n = + { + \__tag_mc_get_marks: + \__tag_check_if_mc_in_galley:TF + { Marks~from~this~page:~} + { Marks~from~a~previous~page:~} + \seq_use:Nn \l__tag_mc_firstmarks_seq {,~}\quad + \seq_use:Nn \l__tag_mc_botmarks_seq {,~}\quad + \__tag_check_if_mc_tmb_missing:T + { + BDC~missing~ + } + \__tag_check_if_mc_tme_missing:T + { + EMC~missing + } + }, + mc-marks .default:n = show + } +\keys_define:nn { __tag / show } + { + struct-stack .choice: + ,struct-stack / log .code:n = \seq_log:N \g__tag_struct_tag_stack_seq + ,struct-stack / show .code:n = \seq_show:N \g__tag_struct_tag_stack_seq + ,struct-stack .default:n = show + } +\cs_new_protected:Npn \__tag_add_document_structure:n #1 + { + \hook_gput_code:nnn{begindocument}{tagpdf}{\tagstructbegin{tag=#1}} + \hook_gput_code:nnn{tagpdf/finish/before}{tagpdf}{\tagstructend} + } +\keys_define:nn { __tag / setup} + { + activate .code:n = + { + \keys_set:nn { __tag / setup } + { activate-mc,activate-tree,activate-struct } + \__tag_add_document_structure:n {#1} + }, + activate .default:n = Document + } +\AddToHook{begindocument/before} + { + \bool_lazy_all:nT + { + { \g__tag_active_struct_dest_bool } + { \g__tag_active_struct_bool } + { \cs_if_exist_p:N \pdf_activate_structure_destination: } + { ! \pdf_version_compare_p:Nn < {2.0} } + } + { + \tl_set:Nn \l_pdf_current_structure_destination_tl { __tag/struct/\g__tag_struct_stack_current_tl } + \pdf_activate_structure_destination: + } + } + +\sys_if_engine_luatex:T + { + \NewDocumentCommand\pdffakespace { } + { + \__tag_fakespace: + } + } +\bool_new:N \l__tag_para_bool +\bool_new:N \l__tag_para_show_bool +\int_new:N \g__tag_para_begin_int +\int_new:N \g__tag_para_end_int +\tl_new:N \l__tag_para_tag_tl +\tl_set:Nn \l__tag_para_tag_tl { P } +\keys_define:nn { __tag / setup } + { + paratagging .bool_set:N = \l__tag_para_bool, + paratagging-show .bool_set:N = \l__tag_para_show_bool, + paratag .tl_set:N = \l__tag_para_tag_tl + } + +\AddToHook{para/begin} + { + \bool_if:NT \l__tag_para_bool + { + \int_gincr:N \g__tag_para_begin_int + \tag_struct_begin:n {tag=\l__tag_para_tag_tl} + \bool_if:NT \l__tag_para_show_bool + { \tag_mc_begin:n{artifact} + \llap{\color_select:n{red}\tiny\int_use:N\g__tag_para_begin_int\ } + \tag_mc_end: + } + \tag_mc_begin:n {tag=\l__tag_para_tag_tl} + } + } +\AddToHook{para/end} + { + \bool_if:NT \l__tag_para_bool + { + \int_gincr:N \g__tag_para_end_int + \tag_mc_end: + \bool_if:NT \l__tag_para_show_bool + { \tag_mc_begin:n{artifact} + \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int} + \tag_mc_end: + } + \tag_struct_end: + } + } +\AddToHook{enddocument/info} + { + \int_compare:nNnF {\g__tag_para_begin_int}={\g__tag_para_end_int} + { + \msg_error:nnxx + {tag} + {para-hook-count-wrong} + {\int_use:N\g__tag_para_begin_int} + {\int_use:N\g__tag_para_end_int} + } + } +\AddToHook{begindocument/before} + { + \bool_if:NF \g__tag_mode_lua_bool + { + \cs_if_exist:NT \@kernel@before@footins + { + \tl_put_right:Nn \@kernel@before@footins + { \__tag_add_missing_mcs_to_stream:Nn \footins {footnote} } + \tl_put_right:Nn \@kernel@before@cclv + { + \__tag_check_typeout_v:n {====>~In~\token_to_str:N \@makecol\c_space_tl\the\c@page} + \__tag_add_missing_mcs_to_stream:Nn \@cclv {main} + } + \tl_put_right:Nn \@mult@ptagging@hook + { + \__tag_check_typeout_v:n {====>~In~\string\page@sofar} + \process@cols\mult@firstbox + { + \__tag_add_missing_mcs_to_stream:Nn \count@ {multicol} + } + \__tag_add_missing_mcs_to_stream:Nn \mult@rightbox {multicol} + } + } + } + } +\renewcommand\tagpdfparaOn {\bool_set_true:N \l__tag_para_bool} +\renewcommand\tagpdfparaOff{\bool_set_false:N \l__tag_para_bool} +\NewDocumentCommand\tagpdfsuppressmarks{m} + {{\use:c{__tag_mc_disable_marks:} #1}} +\cs_new_protected:Npn\__tag_hook_kernel_before_head:{} +\cs_new_protected:Npn\__tag_hook_kernel_after_head:{} +\cs_new_protected:Npn\__tag_hook_kernel_before_foot:{} +\cs_new_protected:Npn\__tag_hook_kernel_after_foot:{} + +\AddToHook{begindocument} + { + \cs_if_exist:NT \@kernel@before@head + { + \tl_put_right:Nn \@kernel@before@head {\__tag_hook_kernel_before_head:} + \tl_put_left:Nn \@kernel@after@head {\__tag_hook_kernel_after_head:} + \tl_put_right:Nn \@kernel@before@foot {\__tag_hook_kernel_before_foot:} + \tl_put_left:Nn \@kernel@after@foot {\__tag_hook_kernel_after_foot:} + } + } + +\bool_new:N \g__tag_saved_in_mc_bool +\cs_new_protected:Npn \__tag_exclude_headfoot_begin: + { + \bool_set_false:N \l__tag_para_bool + \bool_if:NTF \g__tag_mode_lua_bool + { + \tag_mc_end_push: + } + { + \bool_gset_eq:NN \g__tag_saved_in_mc_bool \g__tag_in_mc_bool + \bool_gset_false:N \g__tag_in_mc_bool + } + \tag_mc_begin:n {artifact} + } +\cs_new_protected:Npn \__tag_exclude_headfoot_end: + { + \tag_mc_end: + \bool_if:NTF \g__tag_mode_lua_bool + { + \tag_mc_begin_pop:n{} + } + { + \bool_gset_eq:NN \g__tag_in_mc_bool\g__tag_saved_in_mc_bool + } + } +\__tag_attr_new_entry:nn {__tag/attr/pagination}{/O/Artifact/Type/Pagination} +\cs_new_protected:Npn \__tag_exclude_struct_headfoot_begin:n #1 + { + \bool_set_false:N \l__tag_para_bool + \bool_if:NTF \g__tag_mode_lua_bool + { + \tag_mc_end_push: + } + { + \bool_gset_eq:NN \g__tag_saved_in_mc_bool \g__tag_in_mc_bool + \bool_gset_false:N \g__tag_in_mc_bool + } + \tag_struct_begin:n{tag=Artifact,attribute-class=__tag/attr/#1} + \tag_mc_begin:n {artifact=#1} + } + +\cs_new_protected:Npn \__tag_exclude_struct_headfoot_end: + { + \tag_mc_end: + \tag_struct_end: + \bool_if:NTF \g__tag_mode_lua_bool + { + \tag_mc_begin_pop:n{} + } + { + \bool_gset_eq:NN \g__tag_in_mc_bool\g__tag_saved_in_mc_bool + } + } +\keys_define:nn { __tag / setup } + { + exclude-header-footer .choice:, + exclude-header-footer / true .code:n = + { + \cs_set_eq:NN \__tag_hook_kernel_before_head: \__tag_exclude_headfoot_begin: + \cs_set_eq:NN \__tag_hook_kernel_before_foot: \__tag_exclude_headfoot_begin: + \cs_set_eq:NN \__tag_hook_kernel_after_head: \__tag_exclude_headfoot_end: + \cs_set_eq:NN \__tag_hook_kernel_after_foot: \__tag_exclude_headfoot_end: + }, + exclude-header-footer / pagination .code:n = + { + \cs_set:Nn \__tag_hook_kernel_before_head: { \__tag_exclude_struct_headfoot_begin:n {pagination} } + \cs_set:Nn \__tag_hook_kernel_before_foot: { \__tag_exclude_struct_headfoot_begin:n {pagination} } + \cs_set_eq:NN \__tag_hook_kernel_after_head: \__tag_exclude_struct_headfoot_end: + \cs_set_eq:NN \__tag_hook_kernel_after_foot: \__tag_exclude_struct_headfoot_end: + }, + exclude-header-footer / false .code:n = + { + \cs_set_eq:NN \__tag_hook_kernel_before_head: \prg_do_nothing: + \cs_set_eq:NN \__tag_hook_kernel_before_foot: \prg_do_nothing: + \cs_set_eq:NN \__tag_hook_kernel_after_head: \prg_do_nothing: + \cs_set_eq:NN \__tag_hook_kernel_after_foot: \prg_do_nothing: + }, + exclude-header-footer .default:n = true, + exclude-header-footer .initial:n = true + } +\hook_gput_code:nnn + {pdfannot/link/URI/before} + {tagpdf} + { + \tag_mc_end_push: + \tag_struct_begin:n { tag=Link } + \tag_mc_begin:n { tag=Link } + \pdfannot_dict_put:nnx + { link/URI } + { StructParent } + { \tag_struct_parent_int: } + } + +\hook_gput_code:nnn + {pdfannot/link/URI/after} + {tagpdf} + { + \tag_struct_insert_annot:xx {\pdfannot_link_ref_last:}{\tag_struct_parent_int:} + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin_pop:n{} + } + +\hook_gput_code:nnn + {pdfannot/link/GoTo/before} + {tagpdf} + { + \tag_mc_end_push: + \tag_struct_begin:n{tag=Link} + \tag_mc_begin:n{tag=Link} + \pdfannot_dict_put:nnx + { link/GoTo } + { StructParent } + { \tag_struct_parent_int: } + } + +\hook_gput_code:nnn + {pdfannot/link/GoTo/after} + {tagpdf} + { + \tag_struct_insert_annot:xx {\pdfannot_link_ref_last:}{\tag_struct_parent_int:} + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin_pop:n{} + + } + +\pdfannot_dict_put:nnn + { link/URI } + { Contents } + { (url) } + +\pdfannot_dict_put:nnn + { link/GoTo } + { Contents } + { (ref) } + +%% +%% +%% End of file `tagpdf.sty'. diff --git a/texmf/tex/latex/tagpdf/tagpdfdocu-patches.sty b/texmf/tex/latex/tagpdf/tagpdfdocu-patches.sty new file mode 100644 index 000000000..e01f9fa59 --- /dev/null +++ b/texmf/tex/latex/tagpdf/tagpdfdocu-patches.sty @@ -0,0 +1,288 @@ +%\RequirePackage[enable-debug]{expl3}[2018/06/14] +\ProvidesExplPackage {tagpdfdocu-patches} {2022-08-24} {0.97} + {patches/commands for the tagpdf documentation} +\RequirePackage{etoolbox} + +%%%%% +% tableofcontents +% no internal patches, but KOMA-only solution +% TODO it must be checked how best practice is now for the table of contents. +%%%%% + + +\AfterTOCHead{\tag_struct_begin:n{tag=TOC}} +\AfterStartingTOC{\tag_struct_end:} %end TOC +%Marking the toc entries +%around the whole entry so only structure: +\newcommand\tagscrtocentry[1]{\tag_struct_begin:n{tag=TOCI}#1\tag_struct_end:} + +%leaf so structure and mc: +\newcommand\tagscrtocpagenumber[1] + { + \tag_struct_begin:n{tag=Reference} + \tag_mc_begin:n{tag=Reference} + #1 + \tag_mc_end: + \tag_struct_end: + } + + +\DeclareTOCStyleEntry[ + entryformat=\tagscrtocentry, + pagenumberformat=\tagscrtocpagenumber]{tocline}{section} +\DeclareTOCStyleEntry[ + entryformat=\tagscrtocentry, + pagenumberformat=\tagscrtocpagenumber]{tocline}{subsection} +\DeclareTOCStyleEntry[ + entryformat=\tagscrtocentry, + pagenumberformat=\tagscrtocpagenumber]{tocline}{subsubsection} +\DeclareTOCStyleEntry[ + entryformat=\tagscrtocentry, + pagenumberformat=\tagscrtocpagenumber]{tocline}{paragraph} + + +% \IfStr{#3} doesnt like a \label ... +\renewcommand{\addtocentrydefault}[3]{% +% \Ifstr{#3}{}{} +% {% + \Ifstr{#2}{} + {% + \addcontentsline{toc}{#1} + {% + \protect\nonumberline + \tagstructbegin{tag=P}% + \tagmcbegin{tag=P}% + #3% + \tagmcend + \tagstructend + }% + }% + {% + \addcontentsline{toc}{#1}{% + \tagstructbegin{tag=Lbl}% + \tagmcbegin{tag=Lbl}% + \protect\numberline{#2}% + \tagmcend\tagstructend + \tagstructbegin{tag=P}% + \tagmcbegin{tag=P}% + #3% + \tagmcend + \tagstructend + }% + }% + %} +}% + +% the dots must be marked too + +\renewcommand*{\TOCLineLeaderFill}[1][.]{ + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{\tag_mc_begin:n{artifact}#1\tag_mc_end:}\mkern \@dotsep + mu$}\hfill +} + +%%%%%%%%% +% Sectioning commands +% no internal patches, but KOMA-only solution +%%%%%%%% + +% the structure should be opened rather early to catch the refstepcounter! +\AddtoDoHook{heading/begingroup}{\tagpdfparaOff\use_none:n} +\cs_new_protected:Npn \__tag_struct_section_begin:n #1 {\tagstructbegin{tag=\prop_item:Nn\g_tag_section_level_prop{#1}}} +\AddtoDoHook{heading/postinit}{\__tag_struct_section_begin:n} +\AddtoDoHook{heading/endgroup}{\tagstructend\use_none:n} + +\prop_new:N \g_tag_section_level_prop +\prop_gput:Nnn \g_tag_section_level_prop {section}{H1} +\prop_gput:Nnn \g_tag_section_level_prop {subsection}{H2} +\prop_gput:Nnn \g_tag_section_level_prop {subsubsection}{H3} +\prop_gput:Nnn \g_tag_section_level_prop {paragraph}{H4} + +\renewcommand{\sectionlinesformat}[4] + { + \@hangfrom + {\hskip #2 + %\tl_if_empty:nF{#3} + \tl_if_in:nnF{\@empty}{#3} + { + \tag_mc_begin:n {tag=\prop_item:Nn\g_tag_section_level_prop{#1}} + #3 + \tag_mc_end: + } + } + {\tag_mc_begin:n {tag=\prop_item:Nn\g_tag_section_level_prop{#1}} + #4 + \tag_mc_end:}% + } + +% minisec is simply P, so we let paratagging handle this. +% But we add a strong structure +% TODO: Should changed to H6 as it is no longer required to have H6 only after H5 +% but need to check how to disable paratagging ... +\cs_new:Nn \__tag_docu_tag_minisec:n +{ + \tag_struct_begin:n {tag=Strong} + \tag_mc_begin:n{tag=Strong} + #1 + \tag_mc_end: + \tag_struct_end: +} +% +\addtokomafont{minisec}{\__tag_docu_tag_minisec:n} + + +%%%% +%% Lists +%% patches enumitem internals! +%%%% +\AddToHook{env/itemize/begin}{\par\tagstructbegin{tag=L}}%\par is needed to close the paragraph before. +\AddToHook{env/itemize/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L +\AddToHook{env/enumerate/begin}{\par\tagstructbegin{tag=L}} +\AddToHook{env/enumerate/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L +\AddToHook{env/description/begin}{\par\tagstructbegin{tag=L}} +\AddToHook{env/description/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L + +\newcommand\tag@enit@format@preset[1]{% + \str_if_eq:eeTF { \prop_item:cn { g__tag_struct_\g__tag_struct_stack_current_tl _prop }{S} }{/L} + { + %\typeout{BEGIN~OF~LIST} + } + {%\typeout{NEXT ITEM} + \tagstructend\tagstructend} % for the LBody/LI + \tagstructbegin{tag=LI} + \tagstructbegin{tag=Lbl} + \tagmcbegin{tag=Lbl} + #1 + \tagmcend + \tagstructend + \tagstructbegin{tag=LBody} + } + +\ExplSyntaxOff +\xpatchcmd\enit@preset{\@firstofone}{\tag@enit@format@preset}{}{\fail} +%close mc from paratagging and reopen ... +\xpatchcmd\@item{\box\@labels}{\tagmcend \box\@labels \tagmcbegin{tag=P}}{}{\fail} +\ExplSyntaxOn + +% keys that overwrite \enit@format must be patched, eg like the follow +% the font key should be patched in a similar way +\enitkv@key{}{format}{% new enumitem don't use first argument + \def\enit@format{% + \tagstructbegin{tag=LI}% + \tagstructbegin{tag=Lbl}% + \tagmcbegin{tag=Lbl}% + #1\tagmcend}} + + +% listings + verbatim +% the paragraph code could create span around the lines ... +% it is quite unclear if Code is a sensible structure as it no longer exists in pdf 2.0 + +\AddToHook{env/lstlisting/begin}{\tagpdfparaOff\tagstructbegin{tag=Code}\tagmcbegin{tag=Code}} +\AddToHook{env/lstlisting/end}{\tagmcend\tagstructend} + +\AddToHook{env/verbatim/begin}{\tagpdfparaOff\tagstructbegin{tag=Code}\tagmcbegin{tag=Code}} +\AddToHook{env/verbatim/end}{\tagmcend\tagstructend} + + +% ======== marginnote ========== +% TODO marginnote has a bug (a \par is missing) so it messes up tagging. +% but currently unneeded as we marked them up as artifacts anyway as they don't contain +% meaningful contents + +\NewDocumentCommand\sidenote{m} + { + \tag_mc_artifact_group_begin:n{notype}\tagpdfparaOff\marginnote{#1}\tag_mc_artifact_group_end: + } + +% ======== tikzpicture ========== +% TODO this needs some investigation: it messes up the stack if one add paraOff + +\AddToHook{env/tikzpicture/begin}{} + +%======== tcolorbox ======== +% We switch of paratagging at the begin and reenable it locally in before upper. +% the before upper setting is dangerous as it can be overwritten by +% users. So a more stable hook is needed. +%\AddToHook{env/tcolorbox/begin}{\tagpdfparaOff} +%\AddToHook{env/docCommand/begin}{\tagpdfparaOff} +%\tcbset{before~upper=\tagpdfparaOn} +\AddToHook{env/tcolorbox/begin}{\tagpdfparaOff \tcbset{before~upper=\tagpdfparaOn}} +\AddToHook{env/docCommand/begin}{\tagpdfparaOff \tcbset{before~upper=\tagpdfparaOn}} + + %locally for now + + +% ======= footnote ======== +% TODO + +% ======= bibliography ======== +% biblatex. Creates some empty mc-chunks. +% no internal patches, but redefining begentry/finentry is not safe. +% better hook is needed. + +\newbibmacro*{begentry}{\tagstructbegin{tag=BibEntry}\tagmcbegin{tag=BibEntry}} +\newbibmacro*{finentry}{\finentry\tagmcend\tagstructend} + +% ====== hyperref ======== +% this should probably go into tagpdf, but it is related to +% problem of pdf strings and context .... + +\@ifpackageloaded{hyperref}{% +\pdfstringdefDisableCommands{ + \let\tagstructbegin\@gobble + \let\tagmcbegin\@gobble + \let\tagmcend\relax + \let\tagstructend\relax +}}{} + + +%====== pictures ======== +% PAC3 complained that the BBox is missing, so we are cheating for now +% and add a fix size. +\tagpdfsetup + { + newattribute = + {bbox}{/O /Layout /BBox [0~0~100~100]} + } + +%%%%% +%======== Role maps ========= +%%%%% +\tagpdfsetup{ add-new-tag=Title/H1,add-new-tag=Strong/Span } + + + +\endinput + +% ========================== +% now unneeded commands + +% we need a command which simply starts a paragraph \TagP^, +% a "continuation" variant which closes the previous paragraph (\TagP), +% and a final end. + +\NewDocumentCommand\TagP{t{^}} + { + \tag_mc_if_in:T { \tag_mc_end: } + \IfBooleanF{#1} + { + \tag_struct_end: + } + \tag_struct_begin:n{tag=P} + \tag_mc_begin:n{tag=P} + } +% close a mc and one structure + +\NewDocumentCommand\TagPend{} + { + \tag_mc_if_in:T { \tag_mc_end: } + \tag_struct_end: + } + + + \ExplSyntaxOn +\newcommand\showcurrentstruct{\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop }} + + +\ExplSyntaxOff From dcb8c870863e06c935f211c3e77c616417abc916 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Tue, 30 Aug 2022 22:27:28 +0200 Subject: [PATCH 10/13] And KOMA --- texmf/tex/latex/koma-script/DIN.lco | 154 + texmf/tex/latex/koma-script/DIN5008A.lco | 175 + texmf/tex/latex/koma-script/DIN5008B.lco | 173 + texmf/tex/latex/koma-script/DINmtext.lco | 154 + texmf/tex/latex/koma-script/KOMAold.lco | 226 + texmf/tex/latex/koma-script/KakuLL.lco | 151 + texmf/tex/latex/koma-script/NF.lco | 139 + texmf/tex/latex/koma-script/NipponEH.lco | 151 + texmf/tex/latex/koma-script/NipponEL.lco | 151 + texmf/tex/latex/koma-script/NipponLH.lco | 151 + texmf/tex/latex/koma-script/NipponLL.lco | 151 + texmf/tex/latex/koma-script/NipponRL.lco | 151 + texmf/tex/latex/koma-script/SN.lco | 154 + texmf/tex/latex/koma-script/SNleft.lco | 154 + texmf/tex/latex/koma-script/UScommercial9.lco | 155 + .../tex/latex/koma-script/UScommercial9DW.lco | 162 + texmf/tex/latex/koma-script/float.hak | 166 + texmf/tex/latex/koma-script/floatrow.hak | 153 + texmf/tex/latex/koma-script/hyperref.hak | 177 + .../koma-script/koma-script-source-doc.cls | 290 + texmf/tex/latex/koma-script/listings.hak | 146 + texmf/tex/latex/koma-script/lscape.hak | 94 + texmf/tex/latex/koma-script/nomencl.hak | 163 + texmf/tex/latex/koma-script/scraddr.sty | 112 + texmf/tex/latex/koma-script/scrartcl.cls | 6729 +++++++++++++++ texmf/tex/latex/koma-script/scrarticle.cls | 88 + texmf/tex/latex/koma-script/scrbase.sty | 2997 +++++++ texmf/tex/latex/koma-script/scrbook.cls | 7667 +++++++++++++++++ texmf/tex/latex/koma-script/scrdate.sty | 255 + texmf/tex/latex/koma-script/scrdoc.cls | 354 + texmf/tex/latex/koma-script/scrextend.sty | 1754 ++++ texmf/tex/latex/koma-script/scrfontsizes.sty | 373 + texmf/tex/latex/koma-script/scrhack.sty | 218 + texmf/tex/latex/koma-script/scrjura.sty | 1124 +++ texmf/tex/latex/koma-script/scrkbase.sty | 642 ++ .../latex/koma-script/scrlayer-notecolumn.sty | 1288 +++ .../latex/koma-script/scrlayer-scrpage.sty | 1660 ++++ texmf/tex/latex/koma-script/scrlayer.sty | 2346 +++++ texmf/tex/latex/koma-script/scrletter.cls | 90 + texmf/tex/latex/koma-script/scrletter.sty | 3111 +++++++ .../latex/koma-script/scrlfile-hook-3.34.sty | 329 + texmf/tex/latex/koma-script/scrlfile-hook.sty | 337 + .../koma-script/scrlfile-patcholdlatex.sty | 576 ++ texmf/tex/latex/koma-script/scrlfile.sty | 100 + texmf/tex/latex/koma-script/scrlogo.sty | 61 + texmf/tex/latex/koma-script/scrlttr2.cls | 5184 +++++++++++ texmf/tex/latex/koma-script/scrreport.cls | 88 + texmf/tex/latex/koma-script/scrreprt.cls | 7665 ++++++++++++++++ texmf/tex/latex/koma-script/scrsize10pt.clo | 166 + texmf/tex/latex/koma-script/scrsize11pt.clo | 167 + texmf/tex/latex/koma-script/scrsize12pt.clo | 165 + texmf/tex/latex/koma-script/scrtime.sty | 107 + texmf/tex/latex/koma-script/scrwfile.sty | 260 + texmf/tex/latex/koma-script/setspace.hak | 121 + .../latex/koma-script/standardsections.hak | 616 ++ texmf/tex/latex/koma-script/tocbasic.sty | 2952 +++++++ texmf/tex/latex/koma-script/typearea.sty | 1771 ++++ texmf/tex/latex/koma-script/visualize.lco | 584 ++ 58 files changed, 55798 insertions(+) create mode 100644 texmf/tex/latex/koma-script/DIN.lco create mode 100644 texmf/tex/latex/koma-script/DIN5008A.lco create mode 100644 texmf/tex/latex/koma-script/DIN5008B.lco create mode 100644 texmf/tex/latex/koma-script/DINmtext.lco create mode 100644 texmf/tex/latex/koma-script/KOMAold.lco create mode 100644 texmf/tex/latex/koma-script/KakuLL.lco create mode 100644 texmf/tex/latex/koma-script/NF.lco create mode 100644 texmf/tex/latex/koma-script/NipponEH.lco create mode 100644 texmf/tex/latex/koma-script/NipponEL.lco create mode 100644 texmf/tex/latex/koma-script/NipponLH.lco create mode 100644 texmf/tex/latex/koma-script/NipponLL.lco create mode 100644 texmf/tex/latex/koma-script/NipponRL.lco create mode 100644 texmf/tex/latex/koma-script/SN.lco create mode 100644 texmf/tex/latex/koma-script/SNleft.lco create mode 100644 texmf/tex/latex/koma-script/UScommercial9.lco create mode 100644 texmf/tex/latex/koma-script/UScommercial9DW.lco create mode 100644 texmf/tex/latex/koma-script/float.hak create mode 100644 texmf/tex/latex/koma-script/floatrow.hak create mode 100644 texmf/tex/latex/koma-script/hyperref.hak create mode 100644 texmf/tex/latex/koma-script/koma-script-source-doc.cls create mode 100644 texmf/tex/latex/koma-script/listings.hak create mode 100644 texmf/tex/latex/koma-script/lscape.hak create mode 100644 texmf/tex/latex/koma-script/nomencl.hak create mode 100644 texmf/tex/latex/koma-script/scraddr.sty create mode 100644 texmf/tex/latex/koma-script/scrartcl.cls create mode 100644 texmf/tex/latex/koma-script/scrarticle.cls create mode 100644 texmf/tex/latex/koma-script/scrbase.sty create mode 100644 texmf/tex/latex/koma-script/scrbook.cls create mode 100644 texmf/tex/latex/koma-script/scrdate.sty create mode 100644 texmf/tex/latex/koma-script/scrdoc.cls create mode 100644 texmf/tex/latex/koma-script/scrextend.sty create mode 100644 texmf/tex/latex/koma-script/scrfontsizes.sty create mode 100644 texmf/tex/latex/koma-script/scrhack.sty create mode 100644 texmf/tex/latex/koma-script/scrjura.sty create mode 100644 texmf/tex/latex/koma-script/scrkbase.sty create mode 100644 texmf/tex/latex/koma-script/scrlayer-notecolumn.sty create mode 100644 texmf/tex/latex/koma-script/scrlayer-scrpage.sty create mode 100644 texmf/tex/latex/koma-script/scrlayer.sty create mode 100644 texmf/tex/latex/koma-script/scrletter.cls create mode 100644 texmf/tex/latex/koma-script/scrletter.sty create mode 100644 texmf/tex/latex/koma-script/scrlfile-hook-3.34.sty create mode 100644 texmf/tex/latex/koma-script/scrlfile-hook.sty create mode 100644 texmf/tex/latex/koma-script/scrlfile-patcholdlatex.sty create mode 100644 texmf/tex/latex/koma-script/scrlfile.sty create mode 100644 texmf/tex/latex/koma-script/scrlogo.sty create mode 100644 texmf/tex/latex/koma-script/scrlttr2.cls create mode 100644 texmf/tex/latex/koma-script/scrreport.cls create mode 100644 texmf/tex/latex/koma-script/scrreprt.cls create mode 100644 texmf/tex/latex/koma-script/scrsize10pt.clo create mode 100644 texmf/tex/latex/koma-script/scrsize11pt.clo create mode 100644 texmf/tex/latex/koma-script/scrsize12pt.clo create mode 100644 texmf/tex/latex/koma-script/scrtime.sty create mode 100644 texmf/tex/latex/koma-script/scrwfile.sty create mode 100644 texmf/tex/latex/koma-script/setspace.hak create mode 100644 texmf/tex/latex/koma-script/standardsections.hak create mode 100644 texmf/tex/latex/koma-script/tocbasic.sty create mode 100644 texmf/tex/latex/koma-script/typearea.sty create mode 100644 texmf/tex/latex/koma-script/visualize.lco diff --git a/texmf/tex/latex/koma-script/DIN.lco b/texmf/tex/latex/koma-script/DIN.lco new file mode 100644 index 000000000..2ace30464 --- /dev/null +++ b/texmf/tex/latex/koma-script/DIN.lco @@ -0,0 +1,154 @@ +%% +%% This is file `DIN.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,DIN,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,DIN,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + DIN% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + DIN% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + DIN% +}{a4} +\setkomavar*{fromzipcode}{% + D} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 105mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 210mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 45mm} +\setplength{toaddrhpos}{% + 20mm} +\setplength{toaddrwidth}{% + 85mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 8mm} +\setplength{firstheadwidth}{% + \paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 98.5mm} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\endinput +%% +%% End of file `DIN.lco'. diff --git a/texmf/tex/latex/koma-script/DIN5008A.lco b/texmf/tex/latex/koma-script/DIN5008A.lco new file mode 100644 index 000000000..652ce9070 --- /dev/null +++ b/texmf/tex/latex/koma-script/DIN5008A.lco @@ -0,0 +1,175 @@ +%% +%% This is file `DIN5008A.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,5008,A,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,5008,A,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + 5008% + A% + .lco}[\KOMAScriptVersion\space letter-class-option] +\LoadLetterOption{% + DINmtext% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\setplength{toaddrindent}{% + 5mm} +\setplength{specialmailindent}{\useplength{toaddrindent}} +\setplength{specialmailrightindent}{\z@} +\setplength{locvpos}{% + \dimexpr\useplength{toaddrvpos}+\useplength{backaddrheight}} +\setplength{locwidth}{% + 75mm} +\setplength{lochpos}{10mm} +\setplength{firstheadhpos}{% + \dimexpr \useplength{toaddrhpos}+\useplength{toaddrindent}} +\setplength{firstheadwidth}{% + \dimexpr 125mm-\useplength{firstheadhpos}} +\setplength{firstfoothpos}{% + \dimexpr\useplength{toaddrhpos}+\useplength{toaddrindent}}% +\setplength{firstfootwidth}{% + \dimexpr \paperwidth-\useplength{toaddrhpos}-\useplength{firstfoothpos}}% +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 79.4mm} +\setplength{refaftervskip}{% + 8.46mm} +\newplength{specialmailheight} +\setplength{specialmailheight}{12.7mm} +\areaset[5mm]{165mm}{233mm} +\KOMAoptions{% + fromalign=locationleft, + addrfield=topaligned, + refline=narrow, + parskip=full +} +\l@addto@macro\@PapersizeWarning{% + \begingroup + \@tempswafalse + \ifdim\oddsidemargin<\dimexpr 25mm-1in-1pt\relax\@tempswatrue\else + \ifdim\oddsidemargin>\dimexpr 25mm-1in+1pt\relax\@tempswatrue\fi\fi + \ifdim\textwidth<\dimexpr \paperwidth-45mm-1pt\relax\@tempswatrue\else + \ifdim\textwidth>\dimexpr \paperwidth-45mm+1pt\relax\@tempswatrue\fi\fi + \if@tempswa + \LCOWarning{DIN5008% + A% + }{% + DIN5008 orders exact margins and text\MessageBreak + width. Without following these values,\MessageBreak + your document does not conform DIN5008.\MessageBreak + You should use, e.g.,\MessageBreak + \space\string\areaset[5mm]{% + \the\dimexpr \paperwidth-45mm\relax}{% + \the\dimexpr 1.414\dimexpr \paperwidth-45mm\relax\relax}\MessageBreak + to follow the norm% + }% + \fi + \ifdim \dimexpr\parskip\relax=\dimexpr\baselineskip\relax\else + \LCOWarning{DIN5008% + A% + }{% + DIN5008 orders paragraph separation by\MessageBreak + exactly one line. Without this, your\MessageBreak + document does not conform DIN5008.\MessageBreak + You shoud use, e.g.,\MessageBreak + \space\string\KOMAoption{parskip}{full}\MessageBreak + to follow the norm% + }% + \fi + \endgroup +} +\renewcommand{\backaddr@format}[1]{\hspace*{\useplength{toaddrindent}}% + \parbox[t][\useplength{backaddrheight}][t]% + {\dimexpr\useplength{toaddrwidth}-\useplength{toaddrindent}}% + {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}% +} +\renewcommand{\specialmail@format}[1]{% + \parbox[t][\useplength{specialmailheight}][t]% + {\dimexpr\useplength{toaddrwidth} + -\useplength{specialmailindent} + -\useplength{specialmailrightindent}}% + {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}% +} +\setkomafont{specialmail}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{backaddress}{\sffamily\fontsize{8pt}{10pt}\selectfont} +\setkomafont{addressee}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{fromname}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{fromaddress}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{refvalue}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\let\raggedsignature\raggedright +\endinput +%% +%% End of file `DIN5008A.lco'. diff --git a/texmf/tex/latex/koma-script/DIN5008B.lco b/texmf/tex/latex/koma-script/DIN5008B.lco new file mode 100644 index 000000000..a0d0ebbb3 --- /dev/null +++ b/texmf/tex/latex/koma-script/DIN5008B.lco @@ -0,0 +1,173 @@ +%% +%% This is file `DIN5008B.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,5008,B,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,5008,B,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + 5008% + B% + .lco}[\KOMAScriptVersion\space letter-class-option] +\LoadLetterOption{% + DIN% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\setplength{toaddrindent}{% + 5mm} +\setplength{specialmailindent}{\useplength{toaddrindent}} +\setplength{specialmailrightindent}{\z@} +\setplength{locvpos}{% + \dimexpr\useplength{toaddrvpos}+\useplength{backaddrheight}} +\setplength{locwidth}{% + 75mm} +\setplength{lochpos}{10mm} +\setplength{firstheadhpos}{% + \dimexpr \useplength{toaddrhpos}+\useplength{toaddrindent}} +\setplength{firstheadwidth}{% + \dimexpr 125mm-\useplength{firstheadhpos}} +\setplength{firstfoothpos}{% + \dimexpr\useplength{toaddrhpos}+\useplength{toaddrindent}}% +\setplength{firstfootwidth}{% + \dimexpr \paperwidth-\useplength{toaddrhpos}-\useplength{firstfoothpos}}% +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refaftervskip}{% + 8.46mm} +\newplength{specialmailheight} +\setplength{specialmailheight}{12.7mm} +\areaset[5mm]{165mm}{233mm} +\KOMAoptions{% + fromalign=locationleft, + addrfield=topaligned, + refline=narrow, + parskip=full +} +\l@addto@macro\@PapersizeWarning{% + \begingroup + \@tempswafalse + \ifdim\oddsidemargin<\dimexpr 25mm-1in-1pt\relax\@tempswatrue\else + \ifdim\oddsidemargin>\dimexpr 25mm-1in+1pt\relax\@tempswatrue\fi\fi + \ifdim\textwidth<\dimexpr \paperwidth-45mm-1pt\relax\@tempswatrue\else + \ifdim\textwidth>\dimexpr \paperwidth-45mm+1pt\relax\@tempswatrue\fi\fi + \if@tempswa + \LCOWarning{DIN5008% + B% + }{% + DIN5008 orders exact margins and text\MessageBreak + width. Without following these values,\MessageBreak + your document does not conform DIN5008.\MessageBreak + You should use, e.g.,\MessageBreak + \space\string\areaset[5mm]{% + \the\dimexpr \paperwidth-45mm\relax}{% + \the\dimexpr 1.414\dimexpr \paperwidth-45mm\relax\relax}\MessageBreak + to follow the norm% + }% + \fi + \ifdim \dimexpr\parskip\relax=\dimexpr\baselineskip\relax\else + \LCOWarning{DIN5008% + B% + }{% + DIN5008 orders paragraph separation by\MessageBreak + exactly one line. Without this, your\MessageBreak + document does not conform DIN5008.\MessageBreak + You shoud use, e.g.,\MessageBreak + \space\string\KOMAoption{parskip}{full}\MessageBreak + to follow the norm% + }% + \fi + \endgroup +} +\renewcommand{\backaddr@format}[1]{\hspace*{\useplength{toaddrindent}}% + \parbox[t][\useplength{backaddrheight}][t]% + {\dimexpr\useplength{toaddrwidth}-\useplength{toaddrindent}}% + {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}% +} +\renewcommand{\specialmail@format}[1]{% + \parbox[t][\useplength{specialmailheight}][t]% + {\dimexpr\useplength{toaddrwidth} + -\useplength{specialmailindent} + -\useplength{specialmailrightindent}}% + {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}% +} +\setkomafont{specialmail}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{backaddress}{\sffamily\fontsize{8pt}{10pt}\selectfont} +\setkomafont{addressee}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{fromname}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{fromaddress}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\setkomafont{refvalue}{\sffamily\fontsize{10pt}{12pt}\selectfont} +\let\raggedsignature\raggedright +\endinput +%% +%% End of file `DIN5008B.lco'. diff --git a/texmf/tex/latex/koma-script/DINmtext.lco b/texmf/tex/latex/koma-script/DINmtext.lco new file mode 100644 index 000000000..2d52fe0a2 --- /dev/null +++ b/texmf/tex/latex/koma-script/DINmtext.lco @@ -0,0 +1,154 @@ +%% +%% This is file `DINmtext.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,DINmoretext,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,DINmoretext,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + DINmtext% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + DINmtext% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + DINmtext% +}{a4} +\setkomavar*{fromzipcode}{% + D} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 87mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 192mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 27mm} +\setplength{toaddrhpos}{% + 20mm} +\setplength{toaddrwidth}{% + 85mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 8mm} +\setplength{firstheadwidth}{% + \paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 80.5mm} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\endinput +%% +%% End of file `DINmtext.lco'. diff --git a/texmf/tex/latex/koma-script/KOMAold.lco b/texmf/tex/latex/koma-script/KOMAold.lco new file mode 100644 index 000000000..bf5503932 --- /dev/null +++ b/texmf/tex/latex/koma-script/KOMAold.lco @@ -0,0 +1,226 @@ +%% +%% This is file `KOMAold.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,KOMAold,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,KOMAold,body') +%% scrkernel-notepaper.dtx (with options: `lco,KOMAold,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + KOMAold% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + KOMAold% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + KOMAold% +}{a4} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 103.5mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 202.5mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 49mm} +\setplength{toaddrhpos}{% + 1in} +\addtoplength{toaddrhpos}{\oddsidemargin} +\setplength{toaddrwidth}{% + 70mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 6mm} +\setplength{firstheadwidth}{% + \textwidth} +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-2cm} +\setplength{refvpos}{% + 89.5mm} +\setplength{refaftervskip}{% + 2\baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\raggedright +\def\yourref{\setkomavar{yourref}} +\def\yourmail{\setkomavar{yourmail}} +\def\myref{\setkomavar{myref}} +\def\customer{\setkomavar{customer}} +\def\invoice{\setkomavar{invoice}} +\@ifundefined{scr@refitemi@var}{\newkomavar{refitemi}}{} +\def\refitemi{\setkomavar{refitemi}} +\def\refitemnamei{\setkomavar*{refitemi}} +\@ifundefined{scr@refitemii@var}{\newkomavar{refitemii}}{} +\def\refitemii{\setkomavar{refitemii}} +\def\refitemnameii{\setkomavar*{refitemii}} +\@ifundefined{scr@refitemiii@var}{\newkomavar{refitemiii}}{} +\def\refitemiii{\setkomavar{refitemiii}} +\def\refitemnameiii{\setkomavar*{refitemiii}} +\l@addto@macro{\defaultreffields}{% + \addtoreffields{refitemi}% + \addtoreffields{refitemii}% + \addtoreffields{refitemiii}% + } +\addtoreffields{refitemi}% +\addtoreffields{refitemii}% +\addtoreffields{refitemiii}% +\def\toname{\usekomavar{toname}} +\def\toaddress{\usekomavar{toaddress}} +\@ifundefined{scr@branch@var}{\newkomavar{branch}}{} +\def\branch{\setkomavar{branch}} +\def\frombranch{\usekomavar{branch}} +\def\signature{\setkomavar{signature}} +\def\fromsig{\usekomavar{signature}} +\def\name{\setkomavar{fromname}} +\def\fromname{\usekomavar{fromname}} +\def\address{\setkomavar{fromaddress}} +\def\fromaddress{\usekomavar{fromaddress}} +\def\location{\setkomavar{location}} +\def\fromlocation{\usekomavar{location}} +\def\backaddress{\setkomavar{backaddress}} +\def\@tempa{% + \Ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \Ifkomavarempty{fromaddress}{}{\\}}% + \Ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% +} +\ifx\@tempa\scr@backaddress@var% + \setkomavar{backaddress}{} +\else + \def\@tempa{% + \ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \ifkomavarempty{fromaddress}{}{\\}}% + \ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% + } + \ifx\@tempa\scr@backaddress@var% + \setkomavar{backaddress}{} + \fi +\fi +\def\frombackaddress{\usekomavar{backaddress}} +\def\telephone{\setkomavar{fromphone}} +\def\telephonenum{\usekomavar{fromphone}} +\def\specialmail{\setkomavar{specialmail}} +\def\@specialmail{\usekomavar{specialmail}} +\def\title{\setkomavar{title}} +\def\@title{\usekomavar{title}} +\def\subject{\setkomavar{subject}} +\def\@subject{\usekomavar{subject}} +\def\place{\setkomavar{place}} +\def\fromplace{\usekomavar{place}} +\let\ccnameseparator=\scr@ccseparator@var +\setkomavar{ccseparator}{\ccnameseparator} +\let\enclnameseparator=\scr@enclseparator@var +\setkomavar{enclseparator}{\enclnameseparator} +\setkomafont{fromname}{\scshape} +\def\foldmarkson{\@ObsoleteCommand{\foldmarkson}{foldmarks=on}} +\def\foldmarksoff{\@ObsoleteCommand{\foldmarksoff}{foldmarks=off}} +\def\addrfieldon{\@ObsoleteCommand{\addrfieldon}{addrfield=on}} +\def\addrfieldoff{\@ObsoleteCommand{\addrfieldoff}{addrfield=off}} +\def\subjecton{\@ObsoleteCommand{\subjecton}{subject=titled}} +\def\subjectoff{\@ObsoleteCommand{\subjectoff}{subject=untitled}} +\def\subjectafteron{% + \@ObsoleteCommand{\subjectafteron}{subject=afteropening}} +\def\subjectafteroff{% + \@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}} +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: body) +\def\setpresigskip{\setplength{sigbeforevskip}} +\endinput +%% +%% End of file `KOMAold.lco'. diff --git a/texmf/tex/latex/koma-script/KakuLL.lco b/texmf/tex/latex/koma-script/KakuLL.lco new file mode 100644 index 000000000..3c408a212 --- /dev/null +++ b/texmf/tex/latex/koma-script/KakuLL.lco @@ -0,0 +1,151 @@ +%% +%% This is file `KakuLL.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Kaku,LATE,LOW,head') +%% japanlco.dtx (with options: `lco,Kaku,LATE,LOW,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Kaku,LATE,LOW,head) +\ProvidesFile{% + Kaku% + L% + L% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Kaku,LATE,LOW,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Kaku% + L% + L% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Kaku% + L% + L% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{25mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{24mm} +\setplength{toaddrheight}{40mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{45mm}% +\setplength{refvpos}{69mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `KakuLL.lco'. diff --git a/texmf/tex/latex/koma-script/NF.lco b/texmf/tex/latex/koma-script/NF.lco new file mode 100644 index 000000000..7d2d3ca69 --- /dev/null +++ b/texmf/tex/latex/koma-script/NF.lco @@ -0,0 +1,139 @@ +%% +%% This is file `NF.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,NF,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,NF,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + NF% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + NF% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + NF% +}{a4} +\setkomavar*{fromzipcode}{% + F} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 99mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 198mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 35mm} +\setplength{toaddrhpos}{% + -10mm} +\setplength{toaddrwidth}{% + 100mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + 10mm} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 15mm} +\setplength{firstheadwidth}{% + 170mm} +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{266.679mm} +\setplength{refvpos}{% + \useplength{tfoldmarkvpos}} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\raggedright +\endinput +%% +%% End of file `NF.lco'. diff --git a/texmf/tex/latex/koma-script/NipponEH.lco b/texmf/tex/latex/koma-script/NipponEH.lco new file mode 100644 index 000000000..de09a331d --- /dev/null +++ b/texmf/tex/latex/koma-script/NipponEH.lco @@ -0,0 +1,151 @@ +%% +%% This is file `NipponEH.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Ni,EARLY,HIGH,head') +%% japanlco.dtx (with options: `lco,Ni,EARLY,HIGH,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,EARLY,HIGH,head) +\ProvidesFile{% + Nippon% + E% + H% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,EARLY,HIGH,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Nippon% + E% + H% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Nippon% + E% + H% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{22mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{12mm} +\setplength{toaddrheight}{50mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{55mm}% +\setplength{refvpos}{69mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `NipponEH.lco'. diff --git a/texmf/tex/latex/koma-script/NipponEL.lco b/texmf/tex/latex/koma-script/NipponEL.lco new file mode 100644 index 000000000..20605ed97 --- /dev/null +++ b/texmf/tex/latex/koma-script/NipponEL.lco @@ -0,0 +1,151 @@ +%% +%% This is file `NipponEL.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Ni,EARLY,LOW,head') +%% japanlco.dtx (with options: `lco,Ni,EARLY,LOW,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,EARLY,LOW,head) +\ProvidesFile{% + Nippon% + E% + L% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,EARLY,LOW,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Nippon% + E% + L% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Nippon% + E% + L% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{22mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{12mm} +\setplength{toaddrheight}{40mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{55mm}% +\setplength{refvpos}{69mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `NipponEL.lco'. diff --git a/texmf/tex/latex/koma-script/NipponLH.lco b/texmf/tex/latex/koma-script/NipponLH.lco new file mode 100644 index 000000000..5ce840d73 --- /dev/null +++ b/texmf/tex/latex/koma-script/NipponLH.lco @@ -0,0 +1,151 @@ +%% +%% This is file `NipponLH.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Ni,LATE,HIGH,head') +%% japanlco.dtx (with options: `lco,Ni,LATE,HIGH,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,LATE,HIGH,head) +\ProvidesFile{% + Nippon% + L% + H% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,LATE,HIGH,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Nippon% + L% + H% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Nippon% + L% + H% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{25mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{12mm} +\setplength{toaddrheight}{50mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{55mm}% +\setplength{refvpos}{69mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `NipponLH.lco'. diff --git a/texmf/tex/latex/koma-script/NipponLL.lco b/texmf/tex/latex/koma-script/NipponLL.lco new file mode 100644 index 000000000..4fd743382 --- /dev/null +++ b/texmf/tex/latex/koma-script/NipponLL.lco @@ -0,0 +1,151 @@ +%% +%% This is file `NipponLL.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Ni,LATE,LOW,head') +%% japanlco.dtx (with options: `lco,Ni,LATE,LOW,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,LATE,LOW,head) +\ProvidesFile{% + Nippon% + L% + L% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,LATE,LOW,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Nippon% + L% + L% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Nippon% + L% + L% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{25mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{12mm} +\setplength{toaddrheight}{40mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{55mm}% +\setplength{refvpos}{69mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `NipponLL.lco'. diff --git a/texmf/tex/latex/koma-script/NipponRL.lco b/texmf/tex/latex/koma-script/NipponRL.lco new file mode 100644 index 000000000..4762c07b7 --- /dev/null +++ b/texmf/tex/latex/koma-script/NipponRL.lco @@ -0,0 +1,151 @@ +%% +%% This is file `NipponRL.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% japanlco.dtx (with options: `lco,Ni,RIGHT,LOW,head') +%% japanlco.dtx (with options: `lco,Ni,RIGHT,LOW,body') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,RIGHT,LOW,head) +\ProvidesFile{% + Nippon% + R% + L% +}[% + 2022/07/04 v3.37 KOMA-Script +Japanese letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter class option #1 Warning: #2% + }% +} +%%% From File: $Id: japanlco.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: Ni,RIGHT,LOW,body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + Nippon% + R% + L% + }{% + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + Nippon% + R% + L% +}{a4} +\setkomavar*{fromzipcode}{J} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{83mm} +\setplength{tfoldmarklength}{4mm} +\setplength{mfoldmarkvpos}{116mm} +\setplength{mfoldmarklength}{2mm} +\setplength{bfoldmarkvpos}{232mm} +\setplength{bfoldmarklength}{2mm} +\setplength{foldmarkvpos}{3.5mm} +\setplength{lfoldmarkhpos}{202mm} +\setplength{toaddrhpos}{-22mm} +\setplength{toaddrwidth}{90mm} +\setplength{toaddrvpos}{28mm} +\setplength{toaddrheight}{40mm} +\setplength{toaddrindent}{\z@} +\setplength{backaddrheight}{5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{\z@} +\setplength{locheight}{55mm}% +\setplength{refvpos}{84mm} +\setplength{refaftervskip}{\baselineskip} +\setplength{refwidth}{\z@} +\setplength{firstheadvpos}{8mm} +\setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\setplength{firstfootvpos}{\paperheight} +\addtoplength{firstfootvpos}{-16mm} +\setplength{sigindent}{\z@} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\ifcase\@alignfrom + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\or + \KOMAoptions{fromalign=locationright}% +\fi +\endinput +%% +%% End of file `NipponRL.lco'. diff --git a/texmf/tex/latex/koma-script/SN.lco b/texmf/tex/latex/koma-script/SN.lco new file mode 100644 index 000000000..d9f5e1b3d --- /dev/null +++ b/texmf/tex/latex/koma-script/SN.lco @@ -0,0 +1,154 @@ +%% +%% This is file `SN.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,SN,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,SN,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + SN% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + SN% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + SN% +}{a4} +\setkomavar*{fromzipcode}{% + CH} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 105mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 210mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 45mm} +\setplength{toaddrhpos}{% + -8mm} +\setplength{toaddrwidth}{% + 90mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 8mm} +\setplength{firstheadwidth}{% + \paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 98.5mm} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\endinput +%% +%% End of file `SN.lco'. diff --git a/texmf/tex/latex/koma-script/SNleft.lco b/texmf/tex/latex/koma-script/SNleft.lco new file mode 100644 index 000000000..7a3d9fbe9 --- /dev/null +++ b/texmf/tex/latex/koma-script/SNleft.lco @@ -0,0 +1,154 @@ +%% +%% This is file `SNleft.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,SwissLeft,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,SwissLeft,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + SNleft% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + SNleft% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + SNleft% +}{a4} +\setkomavar*{fromzipcode}{% + CH} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 105mm} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 210mm} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 35.5mm} +\setplength{toaddrhpos}{% + 20mm} +\setplength{toaddrwidth}{% + 100mm} +\setplength{toaddrheight}{% + 45mm} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + 5mm} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + 8mm} +\setplength{firstheadwidth}{% + \paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 89mm} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\centering +\endinput +%% +%% End of file `SNleft.lco'. diff --git a/texmf/tex/latex/koma-script/UScommercial9.lco b/texmf/tex/latex/koma-script/UScommercial9.lco new file mode 100644 index 000000000..caadb589a --- /dev/null +++ b/texmf/tex/latex/koma-script/UScommercial9.lco @@ -0,0 +1,155 @@ +%% +%% This is file `UScommercial9.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,UScommercial9,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,UScommercial9,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + UScommercial9 + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + UScommercial9% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + UScommercial9% +}{letter} +\setkomavar*{fromzipcode}{% + US} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 3.75in} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 7.375in} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 2.1875in} +\setplength{toaddrhpos}{% + 0.6875in} +\setplength{toaddrwidth}{% + 4.5in} +\setplength{toaddrheight}{% + 1.125in} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + \z@} +\KOMAoptions{backaddress=false} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + .4375in} +\setplength{firstheadwidth}{% + \paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 3.4375in} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\raggedright +\endinput +%% +%% End of file `UScommercial9.lco'. diff --git a/texmf/tex/latex/koma-script/UScommercial9DW.lco b/texmf/tex/latex/koma-script/UScommercial9DW.lco new file mode 100644 index 000000000..de0b290d4 --- /dev/null +++ b/texmf/tex/latex/koma-script/UScommercial9DW.lco @@ -0,0 +1,162 @@ +%% +%% This is file `UScommercial9DW.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,UScommercial9DW,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,UScommercial9DW,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + UScommercial9DW + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{scr@fromname@var}{% + \LCOWarningNoLine{% + UScommercial9DW% + }{% + This letter configuration option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2' or letter package `scrletter'.\MessageBreak + Use with other classes and without that package\MessageBreak + can result in a lot of errors% + }% +}{} +\LetterOptionNeedsPapersize{% + UScommercial9DW% +}{letter} +\setkomavar*{fromzipcode}{% + US} +\setplength{foldmarkhpos}{3.5mm} +\setplength{tfoldmarkvpos}{% + 3.75in} +\setplength{mfoldmarkvpos}{\z@} +\setplength{bfoldmarkvpos}{% + 7.375in} +\setplength{lfoldmarkhpos}{\z@} +\setplength{toaddrvpos}{% + 2.1875in} +\setplength{toaddrhpos}{% + .5625in} +\setplength{toaddrwidth}{% + 3.625in} +\setplength{toaddrheight}{% + 1.125in} +\setplength{toaddrindent}{% + \z@} +\setplength{backaddrheight}{% + \z@} +\KOMAoptions{backaddress=false} +\setplength{specialmailindent}{\fill} +\setplength{specialmailrightindent}{1em} +\setplength{locwidth}{% + \z@} +\setplength{firstheadvpos}{% + .4375in} +\setplength{firstheadwidth}{% + \paperwidth} +\addtoplength[-]{firstheadwidth}{.25in} +\setplength{firstfootwidth}{\useplength{firstheadwidth}} +\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax + \setplength{firstfootvpos}{\paperheight} + \addtoplength{firstfootvpos}{-16mm} +\else + \setplength{firstfootvpos}{1in} + \addtoplength{firstfootvpos}{\topmargin} + \addtoplength{firstfootvpos}{\headheight} + \addtoplength{firstfootvpos}{\headsep} + \addtoplength{firstfootvpos}{\textheight} + \addtoplength{firstfootvpos}{\footskip} +\fi +\setplength{refvpos}{% + 3.4375in} +\setplength{refaftervskip}{% + \baselineskip} +\setplength{refwidth}{0pt} +\setplength{sigindent}{0mm} +\setplength{sigbeforevskip}{2\baselineskip} +\let\raggedsignature=\raggedright +\newcommand*{\showUSletterCixDW}{% + \showUScommercial9[{% + \thicklines + \usekomafont{envelope}% + \measuredIFrame({\dimexpr (\paperwidth- + \expandafter\dimexpr \useplength{firstheadwidth}\relax% + )/2\relax},% + -\expandafter\dimexpr\useplength{firstheadvpos}\relax)% + (3.5in,.875in)% + }]% +} +\endinput +%% +%% End of file `UScommercial9DW.lco'. diff --git a/texmf/tex/latex/koma-script/float.hak b/texmf/tex/latex/koma-script/float.hak new file mode 100644 index 000000000..9662ad8af --- /dev/null +++ b/texmf/tex/latex/koma-script/float.hak @@ -0,0 +1,166 @@ +%% +%% This is file `float.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,float.hak') +%% scrhack.dtx (with options: `hack,float,identify') +%% scrhack.dtx (with options: `hack,float,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{float.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + float)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\scr@ifexpected{\newfloat}{% + \long\def\newfloat#1#2#3{\@namedef{ext@#1}{#3} + \let\float@do=\relax + \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}% + \@tempa + \floatplacement{#1}{#2}% + \@ifundefined{fname@#1}{\floatname{#1}{#1}}{} + \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}% + \addtocounter{float@type}{\value{float@type}} + \restylefloat{#1}% + \expandafter\edef\csname fnum@#1\endcsname% + {\expandafter\noexpand\csname fname@#1\endcsname{} + \expandafter\noexpand\csname the#1\endcsname} + \@ifnextchar[%] + {\float@newx{#1}}% + {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}% + {}}}% +}{% + \scr@ifexpected{\listof}{% + \def\listof#1#2{% + \@ifundefined{ext@#1}{\float@error{#1}}{% + \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}% + \float@listhead{#2}% + \begingroup\setlength{\parskip}{\z@}% + \@starttoc{\@nameuse{ext@#1}}% + \endgroup}}% + }{% + \RequirePackage{tocbasic}% + \PackageInfo{scrhack}{redefining \string\newfloat}% + \renewcommand\newfloat[3]{% + \Ifattoclist{#3}{% + \PackageError{scrhack}{extension `#3' already in use}{% + Each extension may be used only once.\MessageBreak + You, the class, or another package already uses extension + `#3'.\MessageBreak + \string\newfloat\space command will be ignored!}% + }{% + \addtotoclist[float]{#3}% + \setuptoc{#3}{chapteratlist}% + \@namedef{ext@#1}{#3}% + \let\float@do=\relax + \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}% + \@tempa + \floatplacement{#1}{#2}% + \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}% + \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}% + \addtocounter{float@type}{\value{float@type}} + \restylefloat{#1}% + \expandafter\edef\csname fnum@#1\endcsname% + {\expandafter\noexpand\csname fname@#1\endcsname{} + \expandafter\noexpand\csname the#1\endcsname}% + \@ifnextchar[%] + {\float@newx{#1}}% + {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}% + {}}}% + }% + \PackageInfo{scrhack}{redefining \string\listof}% + \renewcommand*\listof[2]{% + \@ifundefined{ext@#1}{\float@error{#1}}{% + \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l@figure + \@ifundefined{l@#1}{% + \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em] + {default}{#1}% + }{}% + }{}% + \listoftoc[{#2}]{\csname ext@#1\endcsname}% + }% + }% + \scr@ifexpected{\float@addtolists}{% + \long\def\float@addtolists#1{% + \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts}% + }{% + \PackageInfo{scrhack}{undefining \string\float@addtolists}% + \let\float@addtolists\relax + }{% + \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space + definition found!\MessageBreak + Maybe you are using a unsupported float version}% + }% + }{% + \PackageWarningNoLine{scrhack}{unknown \string\listof\space + definition found!\MessageBreak + Maybe you are using a unsupported float version}% + }% +}{% + \PackageWarningNoLine{scrhack}{unknown \string\newfloat\space + definition found!\MessageBreak + Maybe you are using a unsupported float version}% +} +\endinput +%% +%% End of file `float.hak'. diff --git a/texmf/tex/latex/koma-script/floatrow.hak b/texmf/tex/latex/koma-script/floatrow.hak new file mode 100644 index 000000000..d12807533 --- /dev/null +++ b/texmf/tex/latex/koma-script/floatrow.hak @@ -0,0 +1,153 @@ +%% +%% This is file `floatrow.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,floatrow.hak') +%% scrhack.dtx (with options: `hack,floatrow,identify') +%% scrhack.dtx (with options: `hack,floatrow,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{floatrow.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + floatrow)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\scr@ifexpected{\DeclareNewFloatType}{% + \long\def\DeclareNewFloatType#1#2{\def\FB@captype{#1}% + \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}% + \addtocounter{float@type}{\value{float@type}}% + \@namedef{#1name}{#1}\newcounter{#1}% + \expandafter\edef\csname fnum@#1\endcsname + {\expandafter\noexpand\csname #1name\endcsname\nobreakspace + \expandafter\noexpand\csname the#1\endcsname}% + \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}% + \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}% + \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax + \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}% + \@tempa}% +}{% + \scr@ifexpected{\listof}{% + \def\listof#1#2{% + \@ifundefined{ext@#1}{\flrow@error{Unknown float style `#1'}}{% + \expandafter\providecommand\csname l@#1\endcsname + {\@dottedtocline{1}{1.5em}{2.3em}}% + \float@listhead{#2}% + \begingroup\setlength{\parskip}{\z@}% + \@starttoc{\@nameuse{ext@#1}}% + \endgroup}}% + }{% + \RequirePackage{tocbasic}% + \PackageInfo{scrhack}{redefining \string\DeclareNewFloatType}% + \renewcommand\DeclareNewFloatType[2]{\def\FB@captype{#1}% + \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}% + \addtocounter{float@type}{\value{float@type}}% + \@namedef{#1name}{#1}\newcounter{#1}% + \expandafter\edef\csname fnum@#1\endcsname + {\expandafter\noexpand\csname #1name\endcsname\nobreakspace + \expandafter\noexpand\csname the#1\endcsname}% + \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}% + \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]{default}{#1}% + \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax + \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}% + \@tempa + \xdef\@tempa{\noexpand\addtotoclist[float]{\@nameuse{ext@\FB@captype}}% + \noexpand\setuptoc{\@nameuse{ext@\FB@captype}}{chapteratlist}% + }% + \@tempa + }% + \PackageInfo{scrhack}{redefining \string\listof}% + \renewcommand*\listof[2]{% + \@ifundefined{ext@#1}{\flrow@error{Unknown float style `#1'}}{% + \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l@figure + \@ifundefined{l@#1}{% + \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em] + {default}{#1}% + }{}% + }{}% + \listoftoc[{#2}]{\csname ext@#1\endcsname}% + }% + }% + \scr@ifexpected{\float@addtolists}{% + \long\def\float@addtolists#1{% + \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts}% + }{% + \PackageInfo{scrhack}{undefining \string\float@addtolists}% + \let\float@addtolists\relax + }{% + \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space + definition found!\MessageBreak + Maybe you are using a unsupported floatrow version}% + }% + }{% + \PackageWarningNoLine{scrhack}{unknown \string\listof\space + definition found!\MessageBreak + Maybe you are using a unsupported floatrow version}% + }% +}{% + \PackageWarningNoLine{scrhack}{unknown \string\DeclareNewFloatType\space + definition found!\MessageBreak + Maybe you are using a unsupported floatrow version}% +} +\endinput +%% +%% End of file `floatrow.hak'. diff --git a/texmf/tex/latex/koma-script/hyperref.hak b/texmf/tex/latex/koma-script/hyperref.hak new file mode 100644 index 000000000..109f2cdd9 --- /dev/null +++ b/texmf/tex/latex/koma-script/hyperref.hak @@ -0,0 +1,177 @@ +%% +%% This is file `hyperref.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,hyperref.hak') +%% scrhack.dtx (with options: `hack,hyperref,identify') +%% scrhack.dtx (with options: `hack,hyperref,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{hyperref.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + hyperref)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\scr@ifexpected\@schapter{% + \def\@schapter#1{% + \H@old@schapter{#1}% + \begingroup + \let\@mkboth\@gobbletwo + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \endgroup + }% +}{% + \PackageInfo{scrhack}{redefining \string\@schapter}% + \def\@schapter#1{% + \begingroup + \let\@mkboth\@gobbletwo + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \endgroup + \H@old@schapter{#1}% + }% +}{% + \scr@ifexpected\@schapter{% + \def\@schapter#1{% + \begingroup + \let\@mkboth\@gobbletwo + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \endgroup + \H@old@schapter{#1}% + }% + }{}{% + \PackageWarningNoLine{scrhack}{unknown \string\@schapter\space + definition found!\MessageBreak + Maybe you are using a unsupported hyperref version}% + }% +} +\scr@ifexpected\@spart{% + \def\@spart#1{% + \H@old@spart{#1}% + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{part*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% +}{% + \PackageInfo{scrhack}{redefining \string\@spart}% + \def\@spart#1{% + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{part*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \H@old@spart{#1}% + }% +}{% + \scr@ifexpected\@spart{% + \def\@spart#1{% + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\@currentHref{part*.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \H@old@spart{#1}% + }% + }{}{% + \PackageWarningNoLine{scrhack}{unknown \string\@spart\space + definition found!\MessageBreak + Maybe you are using a unsupported hyperref version}% + }% +} +\scr@ifexpected\@ssect{% + \def\@ssect#1#2#3#4#5{% + \H@old@ssect{#1}{#2}{#3}{#4}{#5}% + \phantomsection + }% +}{% + \PackageInfo{scrhack}{redefining \string\@ssect}% + \def\@ssect#1#2#3#4#5{% + \H@old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}% + }% +}{% + \scr@ifexpected\@ssect{% + \def\@ssect#1#2#3#4#5{% + \H@old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}% + }% + }{}{% + \PackageWarningNoLine{scrhack}{unknown \string\@ssect\space + definition found!\MessageBreak + Maybe you are using a unsupported hyperref version}% + }% +} +\endinput +%% +%% End of file `hyperref.hak'. diff --git a/texmf/tex/latex/koma-script/koma-script-source-doc.cls b/texmf/tex/latex/koma-script/koma-script-source-doc.cls new file mode 100644 index 000000000..2f8f4dc53 --- /dev/null +++ b/texmf/tex/latex/koma-script/koma-script-source-doc.cls @@ -0,0 +1,290 @@ +%% +%% This is file `koma-script-source-doc.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% koma-script-source-doc.dtx (with options: `class') +%% scrlogo.dtx (with options: `logo,forcedefine') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from koma-script-source-doc.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file koma-script-source-doc.dtx scrlogo.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +\ProvidesClass{koma-script-source-doc} +[2022-03-10 v0.91 KOMA-Script source documentation] +\RequirePackage{l3keys2e} +\ExplSyntaxOn +\newif \ifkdoc@indexlatex \kdoc@indexlatexfalse +\keys_define:nn {kdoc} + { + indexlatex .choice:, + indexlatex / true .code:n = { \legacy_if_set_true:n { kdoc@indexlatex } }, + indexlatex / false .code:n = { \legacy_if_set_false:n { kdoc@indexlatex } }, + indexlatex .default:n = { true }, + } +\ExplSyntaxOff +\ProcessKeysOptions {kdoc} +\IfFileExists{scrartcl.cls}{% + \declare@file@substitution{article.cls}{scrartcl.cls} + \PassOptionsToClass{fontsize=10pt}{scrartcl} +}{% + \ClassWarningNoLine{koma-script-source-doc}{% + Usually this class should be used with KOMA-Script\MessageBreak + scrartcl. But as that class is not available we use\MessageBreak + standard class article as emergency fallback.\MessageBreak + It is recommended to repeat this LaTeX run after\MessageBreak + build/installation of a complete KOMA-Script% + }% +} +\LoadClassWithOptions{ltxdoc}[2021/12/07] +\IfPackageAtLeastTF{doc}{2022/06/01}{}{% + \ClassError{koma-script-source-doc}{old package `doc' detected}{% + This class needs `doc' v3. It cannot be used with\MessageBreak + `doc' v2. `doc' v3 is available at LaTeX developer\MessageBreak + release from at least January 2022}% + \csname fi\endcsname\csname @@end\endcsname\end\endinput +} +\SetupDoc{reportchangedates} +\CodelineIndex +\RecordChanges +\ifkdoc@indexlatex\else + \DoNotIndex{\.,\\,\ ,\@,\@Alph,\@M} + \DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading} + \DoNotIndex{\@afterindentfalse,\@alph,\@arabic} + \DoNotIndex{\@beginparpenalty} + \DoNotIndex{\@car,\@cdr,\@centercr} + \DoNotIndex{\@dblfloat,\@dotsep} + \DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty} + \DoNotIndex{\@float,\@fontswitch} + \DoNotIndex{\@gobbletwo} + \DoNotIndex{\@hangfrom,\@highpenalty} + \DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty} + \DoNotIndex{\@latex@warning} + \DoNotIndex{\@m,\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse} + \DoNotIndex{\@mparswitchtrue} + \DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath} + \DoNotIndex{\@plus} + \DoNotIndex{\@Roman,\@roman} + \DoNotIndex{\@tempa,\@tempcnta,\@tempdima,\@tempskipka} + \DoNotIndex{\@tempswafalse,\@tempswatrue} + \DoNotIndex{\@tempb,\@tempcntb,\@tempdimb,\@tempskipkb} + \DoNotIndex{\@tempswbfalse,\@tempswbtrue} + \DoNotIndex{\@tempc,\@tempcntc,\@tempdimc,\@tempskipkc} + \DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum,\@twocolumnfalse} + \DoNotIndex{\@twocolumntrue,\@twosidefalse,\@twosidetrue} + \DoNotIndex{\@whiledim,\@whilenum} + \DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength} + \DoNotIndex{\addvspace,\advance,\AtBeginDocument} + \DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet} + \DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth} + \DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage} + \DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\cs} + \DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction} + \DoNotIndex{\declare@file@substitution} + \DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs} + \DoNotIndex{\divide,\DoNotIndex} + \DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end} + \DoNotIndex{\end@dblfloat} + \DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage} + \DoNotIndex{\everypar,\ExecuteOptions,\expandafter} + \DoNotIndex{\fboxrule,\fboxsep} + \DoNotIndex{\g@addto@macro,\gdef,\global} + \DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss} + \DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi} + \DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi} + \DoNotIndex{\include,\input,\InputIfFileExists,\item,\itshape} + \DoNotIndex{\kern,\kernel@ifnextchar} + \DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip} + \DoNotIndex{\list,\long,\LoadClass,\LoadClassWithOptions} + \DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal} + \DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak} + \DoNotIndex{\month} + \DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen} + \DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent} + \DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number} + \DoNotIndex{\numberline,\normalcolor} + \DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule} + \DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} + \DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox} + \DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges} + \DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand} + \DoNotIndex{\ProvidesClass} + \DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax} + \DoNotIndex{\renewcommand,\RenewDocElement,\RequirePackage} + \DoNotIndex{\reserved@a,\reserved@b,\reserved@c,\reset@font} + \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily} + \DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength} + \DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space} + \DoNotIndex{\string} + \DoNotIndex{\TeX,\textbf,\textit,\textrm,\textsf,\texttt,\textup} + \DoNotIndex{\the,\thispagestyle,\triangleright,\ttfamily} + \DoNotIndex{\twocolumn,\typeout} + \DoNotIndex{\undefined,\usecounter} + \DoNotIndex{\vfil,\vfill,\vspace} + \DoNotIndex{\wd,\xdef,\year,\z@} +\fi +\ifdefined\AfterCalculatingTypearea + \AfterCalculatingTypearea{% + \addtolength{\oddsidemargin} + {.5\dimexpr\oddsidemargin+1in\relax}% + \setlength{\marginparwidth} + {\dimexpr \oddsidemargin+1in-2\marginparsep\relax}% + \setlength{\marginparpush}{0pt}% + } + \KOMAoption{DIV}{9} +\fi +\RequirePackage{auxhook} +\expandafter\def\expandafter\index@prologue\expandafter{% + \expandafter\kssd@section@hack\index@prologue} +\expandafter\def\expandafter\glossary@prologue\expandafter{% + \expandafter\kssd@section@hack\glossary@prologue} +\newcommand*{\kssd@section@hack}{% + \let\ksdd@markboth\markboth + \def\markboth##1##2{% + \@ifundefined{addsectiontocentry}{% + \@ifundefined{addxcontentsline}{% + \addcontentsline{toc}{section}{\numberline{}##1}% + }{% + \addxcontentsline{toc}{section}{##1}% + }% + }{% + \addsectiontocentry{}{##1}% + }% + \let\markboth\ksdd@markboth + \markboth{##1}{##2}% + }% +} +\newcommand*{\file}{\texttt} +\newcommand*{\cls}{\pkg} +\NewDocumentCommand{\pkg}{sO{https://www.ctan.org/pkg/#3}m}{% + \IfBooleanTF{#1}{\@gobble}{% + \csname tl_if_blank:nTF\endcsname{#2}{\@gobble}{\href}% + }% + {#2}{\textsf{#3}}% +} +\newcommand*{\opt}{\texttt} +\newcommand*{\optvalue}{\texttt} +\newcommand*{\env}{\texttt} +\newcommand*{\len}{\cs} +\newcommand*{\cnt}{\texttt} +\newcommand*{\fnt}{\texttt} +\newcommand*{\var}{\texttt} +\newcommand*{\plen}{\texttt} +\newcommand*{\pstyle}{\texttt} +\newcommand*{\dhook}{\texttt} +\RenewDocElement[% + macrolike = true, + toplevel = false, + idxtype = , + idxgroup = TeX macros (internal)\actualchar\TeX{} macros (internal), + printtype = \textit{intern} +]{Macro}{macro} +\NewDocElement[% + macrolike = true, + toplevel = true, + idxtype = , + idxgroup = Commands, + printtype = , +]{Command}{command} +\RenewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{env.} , + idxgroup = Environments, + printtype = \textit{env.} +]{Env}{environment} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{opt.}, + idxgroup = Options, + printtype = \textit{opt.} +]{Option}{option} +\NewDocElement[% + macrolike = true, + toplevel = false, + idxtype = , + idxgroup = Lengths (internal), + printtype = \textit{ilen.} +]{ILength}{ilength} +\NewDocElement[% + macrolike = true, + toplevel = true, + idxtype = \textit{len.}, + idxgroup = Lengths (user), + printtype = \textit{len.}, +]{Length}{length} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{cnt.}, + idxgroup = Counters, + printtype = \textit{cnt.}, +]{Counter}{counter} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{font}, + idxgroup = KOMA-Script font elements\actualchar\KOMAScript{} font elements, + printtype = \textit{font}, +]{KOMAfont}{fontelement} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{var.}, + idxgroup = KOMA-Script variables\actualchar\KOMAScript{} variables, + printtype = \textit{var.}, +]{KOMAvar}{variable} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{plen.}, + idxgroup = KOMA-Script pseudo-lengths\actualchar\KOMAScript{} pseudo-lengths, + printtype = \textit{plen.}, +]{PLength}{pseudolength} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{pgstyle}, + idxgroup = page styles, + printtype = \textit{style} +]{PageStyle}{pgstyle} +\NewDocElement[% + macrolike = false, + toplevel = true, + idxtype = \textit{do hook}, + idxgroup = do hooks, + printtype = \textit{dohook} +]{DoHook}{dohook} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\IfFileExists{scrlogo.sty}{% +\RequirePackage{scrlogo} +}{}% +\@ifundefined{KOMAScript}{% + \DeclareRobustCommand*{\KOMAScript}{\textsf{K\kern.05em O\kern.05em% + M\kern.05em A\kern.1em-\kern.1em Script}}% + \@ifundefined{pdfstringdefPreHook}{% + \def + }{% + \g@addto@macro + }% + \pdfstringdefPreHook{% + \def\KOMAScript{KOMA-Script}% + \expandafter\def\csname KOMAScript \endcsname{KOMA-Script}% + }% +}{} +\endinput +%% +%% End of file `koma-script-source-doc.cls'. diff --git a/texmf/tex/latex/koma-script/listings.hak b/texmf/tex/latex/koma-script/listings.hak new file mode 100644 index 000000000..cc0524dd2 --- /dev/null +++ b/texmf/tex/latex/koma-script/listings.hak @@ -0,0 +1,146 @@ +%% +%% This is file `listings.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,listings.hak') +%% scrhack.dtx (with options: `hack,listings,identify') +%% scrhack.dtx (with options: `hack,listings,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{listings.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + listings)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\newcommand*{\scr@do@hack@listings}{% + \RequirePackage{tocbasic}% + \addtotoclist[float]{lol}% + \setuptoc{lol}{chapteratlist}% + \PackageInfo{scrhack}{redefining \string\lstlistoflistings}% + \renewcommand*{\lstlistoflistings}{\listoftoc[{\lstlistlistingname}]{lol}}% + \AtBeginDocument{% + \scr@ifexpected{\float@addtolists}{% + \def\float@addtolists##1{\addtocontents{lol}{##1}}% + }{% + \PackageInfo{scrhack}{undefining \string\float@addtolists}% + \let\float@addtolists\relax + }{% + \scr@ifexpected{\float@addtolists}{% + \def\float@addtolists##1{\addtocontents{lol}{##1}% + \orig@float@addtolists{##1}}% + }{% + \PackageInfo{scrhack}{setting \string\float@addtolists\MessageBreak + to \string\orig@float@addtolists}% + \let\float@addtolists\orig@float@addtolists + }{% + \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space + definition found!\MessageBreak + Maybe you are using a unsupported listings version}% + }% + }% + }% + \expandafter\def\expandafter\lst@makecaption\expandafter{% + \expandafter\def\expandafter\@captype\expandafter{% + \expandafter l\expandafter s\expandafter t\expandafter l% + \expandafter i\expandafter s\expandafter t\expandafter i% + \expandafter n\expandafter g\expandafter}\lst@makecaption + }% + \let\scr@do@hack@listings\relax +} +\scr@ifexpected{\lstlistoflistings}{% + \def\lstlistoflistings{\bgroup + \let\contentsname\lstlistlistingname + \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}% + \tableofcontents \egroup}% +}{% + \scr@do@hack@listings +}{% + \scr@ifexpected{\lstlistoflistings}{% + \def\lstlistoflistings{% + \begingroup + \@ifundefined{@restonecoltrue}{}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + }% + \float@listhead{\lstlistlistingname}% + \parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil% + \@starttoc{lol}% + \@ifundefined{@restonecoltrue}{}{% + \if@restonecol\twocolumn\fi + }% + \endgroup + }% + }{% + \scr@do@hack@listings + }{% + \PackageWarningNoLine{scrhack}{unknown \string\lstlistoflistings\space + definition found!\MessageBreak + Maybe you are using a unsupported listings version}% + }% +} +\endinput +%% +%% End of file `listings.hak'. diff --git a/texmf/tex/latex/koma-script/lscape.hak b/texmf/tex/latex/koma-script/lscape.hak new file mode 100644 index 000000000..e3d16332b --- /dev/null +++ b/texmf/tex/latex/koma-script/lscape.hak @@ -0,0 +1,94 @@ +%% +%% This is file `lscape.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,lscape.hak') +%% scrhack.dtx (with options: `hack,lscape,identify') +%% scrhack.dtx (with options: `hack,lscape,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{lscape.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + lscape)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\xpatchcmd{\landscape}{\textheight=\vsize}{% + \if@scrhack@lscape + \scrh@LT@textheight=\vsize + \let\scrh@LT@outputpage\@outputpage + \def\@outputpage{\scrh@LT@outputpage\global\@colht\scrh@LT@textheight}% + \else + \textheight=\vsize + \fi +}{% + \PackageInfo{scrhack}{\string\landscape\space patched to make + \string\textheight\space change optional}% +}{% + \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak + Maybe you are using a unsupported lscape version}% + \@scrhack@lscapefalse +} +\newlength{\scrh@LT@textheight} +\endinput +%% +%% End of file `lscape.hak'. diff --git a/texmf/tex/latex/koma-script/nomencl.hak b/texmf/tex/latex/koma-script/nomencl.hak new file mode 100644 index 000000000..4a080dc92 --- /dev/null +++ b/texmf/tex/latex/koma-script/nomencl.hak @@ -0,0 +1,163 @@ +%% +%% This is file `nomencl.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,nomencl.hak') +%% scrhack.dtx (with options: `hack,nomencl,identify') +%% scrhack.dtx (with options: `hack,nomencl,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{nomencl.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + nomencl)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\RequirePackage{tocbasic} +\@ifpackagelater{nomencl}{2019/01/01}{% + \PackageInfo{scrhack}{only `tocbasic' loaded for `nomencl'}% + \expandafter\endinput +}{} +\addtotoclist[nomencl]{nlo} +\addtotoclist[nomencl]{nls} +\xpatchcmd{\thenomenclature}{% + \@ifundefined{chapter}% + { + \section*{\nomname} + \if@intoc\addcontentsline{toc}{section}{\nomname}\fi% + }% + { + \chapter*{\nomname} + \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi% + }% +}{% + \scr@hack@nomencl@head +}{% + \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}% +}{% + \xpatchcmd{\thenomenclature}{% + \@ifundefined{chapter}% + { + \section*{\nomname} + \if@intoc\addcontentsline{toc}{section}{\nomname}\fi% + }% + { + \chapter*{\nomname} + \markboth{\nomname}{\nomname}% + \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi% + }% + }{% + \scr@hack@nomencl@head + }{% + \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}% + }{% + \xpatchcmd{\thenomenclature}{% + \@ifundefined{chapter}% + { + \section*{\nomname} + \if@intoc\addcontentsline{toc}{section}{\nomname}\fi% + }% + { + \chapter*{\nomname} + \@mkboth{\nomname}{\nomname}% + \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi% + }% + }{% + \scr@hack@nomencl@head + }{% + \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}% + }{% + \xpatchcmd{\thenomenclature}{% + \@ifundefined{chapter}% + }{% + \scr@hack@nomencl@head + \@gobbletwo + }{% + \PackageWarning{scrhack}{% + using emergency patch of \string\thenomenclature.\MessageBreak + This could happen if you are using an unknown\MessageBreak + release of package `nomencl'.\MessageBreak + Mostly this patch does work too, but it also could\MessageBreak + break `nomencl`. If this happens, please deactivate\MessageBreak + the `nomencl` hack of `scrhack`% + }% + }{% + \PackageWarning{scrhack}{% + cannot patch \string\thenomenclature.\MessageBreak + This could happen if you are using an unknown\MessageBreak + release of package `nomencl'% + }% + }% + }% + }% +} +\newcommand*{\scr@hack@nomencl@head}{% + \providecommand*{\listofnlsname}{\nomname}% + \def\@currext{nls}% + \tocbasic@listhead{\nomname}% +} +\if@intoc + \setuptoc{nls}{totoc} +\fi +\endinput +%% +%% End of file `nomencl.hak'. diff --git a/texmf/tex/latex/koma-script/scraddr.sty b/texmf/tex/latex/koma-script/scraddr.sty new file mode 100644 index 000000000..ca93daee8 --- /dev/null +++ b/texmf/tex/latex/koma-script/scraddr.sty @@ -0,0 +1,112 @@ +%% +%% This is file `scraddr.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scraddr.dtx (with options: `scraddr') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2006-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scraddr.dtx 3874 2022-06-05 10:38:02Z kohm $ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{scraddr} + [2022/01/24 v1.1d KOMA-Script + package] +\newcommand*{\@adrFIVerror}{} +\DeclareOption{adrFreeIVempty}{\renewcommand*{\@adrFIVerror}{0}} +\DeclareOption{adrFreeIVshow}{\renewcommand*{\@adrFIVerror}{1}} +\DeclareOption{adrFreeIVwarn}{\renewcommand*{\@adrFIVerror}{2}} +\DeclareOption{adrFreeIVstop}{\renewcommand*{\@adrFIVerror}{3}} +\ExecuteOptions{adrFreeIVshow} +\ProcessOptions\relax +\newcommand{\InputAddressFile}[1]{\begingroup + \ifcase\@adrFIVerror + \def\adrentry##1##2##3##4##5##6##7{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{}}% + \or + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + (entry FreeIV undefined at `##8')}{##8}}% + \or + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + \PackageWarning{scraddr}{% + `##8' was defined using \string\adrentry\MessageBreak + so \string\FreeIV-entry is not defined}}{##8}}% + \else + \def\adrentry##1##2##3##4##5##6##7##8{% + \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% + \PackageError{scraddr}{% + \string\FreeIV\space undefined at `##8'}{% + `##8' was defined using \string\adrentry\MessageBreak + so \string\FreeIV-entry is not defined.\MessageBreak + You may continue but you should check output}}{##8}}% + \fi + \providecommand*{\addrchar}[1]{}% + \providecommand*{\adrchar}{\addrchar}% + \def\addrentry##1##2##3##4##5##6##7##8##9{% + \def\@tempa{##9}\ifx\@tempa\@empty\else + \expandafter\gdef\csname ##9.LN\endcsname{##1} + \expandafter\gdef\csname ##9.FN\endcsname{##2} + \expandafter\gdef\csname ##9.A\endcsname{##3} + \expandafter\gdef\csname ##9.P\endcsname{##4} + \expandafter\gdef\csname ##9.FI\endcsname{##5} + \expandafter\gdef\csname ##9.FII\endcsname{##6} + \expandafter\gdef\csname ##9.FIII\endcsname{##7} + \expandafter\gdef\csname ##9.FIV\endcsname{##8} + \fi} + \InputIfFileExists{#1.adr} + {\typeout{Load addressfile: #1.adr.}} + {\PackageError{scraddr} + {File #1.adr not found} + {The addressfile you wanted is not + available}} + \endgroup} +\newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}} +\newcommand*{\FirstName}[1]{\csname #1.FN\endcsname} +\newcommand*{\LastName}[1]{\csname #1.LN\endcsname} +\newcommand*{\Address}[1]{\csname #1.A\endcsname} +\newcommand*{\Telephone}[1]{\csname #1.P\endcsname} +\newcommand*{\FreeI}[1]{\csname #1.FI\endcsname} +\newcommand*{\FreeII}[1]{\csname #1.FII\endcsname} +\newcommand*{\Comment}{} +\newcommand*{\FreeIII}[1]{\csname #1.FIII\endcsname} +\let\Comment\FreeIII +\newcommand*{\FreeIV}[1]{\csname #1.FIV\endcsname} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scraddr.sty'. diff --git a/texmf/tex/latex/koma-script/scrartcl.cls b/texmf/tex/latex/koma-script/scrartcl.cls new file mode 100644 index 000000000..b0135bc7d --- /dev/null +++ b/texmf/tex/latex/koma-script/scrartcl.cls @@ -0,0 +1,6729 @@ +%% +%% This is file `scrartcl.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,article') +%% scrkernel-basics.dtx (with options: `class,load') +%% scrkernel-listsof.dtx (with options: `class,article,prepare') +%% scrkernel-tocstyle.dtx (with options: `class,article,prepare') +%% scrkernel-sections.dtx (with options: `class,article,prepare') +%% scrkernel-compatibility.dtx (with options: `class,article,init') +%% scrkernel-typearea.dtx (with options: `class,article,init') +%% scrkernel-compatibility.dtx (with options: `class,article,option') +%% scrkernel-miscellaneous.dtx (with options: `class,article,option') +%% scrkernel-language.dtx (with options: `class,article,option') +%% scrkernel-fonts.dtx (with options: `class,article,option') +%% scrkernel-typearea.dtx (with options: `class,article,options') +%% scrkernel-paragraphs.dtx (with options: `class,article,option') +%% scrkernel-title.dtx (with options: `class,article,option') +%% scrkernel-tocstyle.dtx (with options: `class,article,option') +%% scrkernel-sections.dtx (with options: `class,article,option') +%% scrkernel-pagestyles.dtx (with options: `class,article,option') +%% scrkernel-floats.dtx (with options: `class,article,option') +%% scrkernel-footnotes.dtx (with options: `class,article,option') +%% scrkernel-listsof.dtx (with options: `class,article,option') +%% scrkernel-bibliography.dtx (with options: `class,article,option') +%% scrkernel-index.dtx (with options: `class,article,option') +%% scrkernel-listsandtabulars.dtx (with options: `class,article,option') +%% scrkernel-sections.dtx (with options: `class,article,execoption') +%% scrkernel-miscellaneous.dtx (with options: `class,article,execoption') +%% scrkernel-compatibility.dtx (with options: `class,article,body') +%% scrkernel-fonts.dtx (with options: `class,article,body') +%% scrkernel-language.dtx (with options: `class,article,body') +%% scrkernel-typearea.dtx (with options: `class,article,body') +%% scrkernel-paragraphs.dtx (with options: `class,article,body') +%% scrkernel-title.dtx (with options: `class,article,body') +%% scrkernel-tocstyle.dtx (with options: `class,article,body') +%% scrkernel-tocstyle.dtx (with options: `class,article,style,part') +%% scrkernel-tocstyle.dtx (with options: `class,article,style,section') +%% scrkernel-tocstyle.dtx (with options: `class,article,style,subsection') +%% scrkernel-tocstyle.dtx (with options: `class,article,style,default') +%% scrkernel-sections.dtx (with options: `class,article,body') +%% scrkernel-miscellaneous.dtx (with options: `class,article,body') +%% scrkernel-pagestyles.dtx (with options: `class,article,body') +%% scrlayer.dtx (with options: `class,article,body') +%% scrkernel-floats.dtx (with options: `class,article,body') +%% scrkernel-footnotes.dtx (with options: `class,article,body') +%% scrkernel-listsof.dtx (with options: `class,article,body') +%% scrkernel-bibliography.dtx (with options: `class,article,body') +%% scrkernel-index.dtx (with options: `class,article,body') +%% scrkernel-listsandtabulars.dtx (with options: `class,article,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrartcl% +} +\newcommand*{\KOMAClassFileName}{\KOMAClassName.\@clsextension} +\edef\KOMAClassFileName{\KOMAClassFileName} +\newcommand*{\ClassName}{% + article% +} +\ProvidesClass{\KOMAClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: prepare) +\RequirePackage{tocbasic}[% + 2022/07/04 v3.37 KOMA-Script +] +\addtotoclist[ToC]{toc} +\Ifstr{\ext@toc}{toc}{}{% + \expandafter\addtotoclist + \expandafter[\expandafter T\expandafter o\expandafter C\expandafter ]% + \expandafter{\ext@toc}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +\newcommand*{\scr@dotchangeatdocument}[1]{% + \ClassError{\KOMAClassName}{% + change of end dot feature after \string\begin{document}% + }{% + You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak + but this option is only allowed at the document preamble.\MessageBreak + See KOMA-Script manual for more information about.% + }% +} +\newif\if@altsecnumformat\@altsecnumformatfalse +\newif\if@autodot +\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue} +\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse} +\@autodotfalse +\newcommand*{\scr@altsecnumhook}{} +\AtBeginDocument{\scr@altsecnumhook} +\newcommand*{\scr@altsecnumhooktrue}{% + \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue +} +\newcommand*{\scr@altsecnumhookfalse}{% + \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse +} +\newcommand*{\scr@osectarg}{0} +\newcommand*{\scr@activate@xsection}[1]{% + \renewcommand*{\scr@osectarg}{#1}% +} +\IfLTXAtLeastTF{2020/10/01}{\NewHook{\KOMAClassName/appendix}}{} +\newcommand*{\size@part}{} +\newcommand*{\scr@fnt@part}{\size@part} +\newcommand*{\size@partnumber}{} +\newcommand*{\scr@fnt@partnumber}{\size@partnumber} +\aliaskomafont{partprefix}{partnumber} +\newcommand*{\scr@part@beforeskip}{% + 4ex +} +\newcommand*{\scr@part@afterskip}{% + 3ex +} +\newcommand*{\scr@part@style}{part} +\newcommand*{\partheadstartvskip}{% + \addvspace{\@tempskipa}% +} +\newcommand*{\partheadmidvskip}{% + \par\nobreak +} +\newcommand*{\partheadendvskip}{% + \vskip\@tempskipa +} +\newcommand*{\size@section}{} +\newcommand*{\scr@fnt@section}{\size@section} +\newcommand*{\size@subsection}{} +\newcommand*{\scr@fnt@subsection}{\size@subsection} +\newcommand*{\size@subsubsection}{} +\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection} +\newcommand*{\size@paragraph}{} +\newcommand*{\scr@fnt@paragraph}{\size@paragraph} +\newcommand*{\size@subparagraph}{} +\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph} +\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries} +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\newcommand* + {\scr@compatibility}{\scr@v@last} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\newif\if@scr@emulatestandardclasses +\let\scr@emulatestandardclassestrue\relax +\let\scr@emulatestandardclassesfalse\relax +\DeclareOption{emulatestandardclasses}{% + \let\if@scr@emulatestandardclasses\iftrue + \KOMAExecuteOptions{% + fontsize=10pt,% + headings=standardclasses,% + cleardoublepage=current + }% + \newcommand*{\defaultpapersize}{letter}% + \AtEndOfClass{% + \setkomafont{descriptionlabel}{\bfseries}% + \setkomafont{dictum}{\normalfont\small}% + \setkomafont{caption}{}% + \setkomafont{captionlabel}{}% + \setcapindent{0pt}% + \RequirePackage[pagestyleset=standard,markcase=upper]{scrlayer-scrpage}% + \PreventPackageFromLoading{scrpage2}% + \setkomafont{pagenumber}{\normalfont}% + \setkomafont{pageheadfoot}{\normalfont}% + \cfoot[\pagemark]{}% + \pagestyle{plain}% + }% +} +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \ClassWarningNoLine{\KOMAClassName}{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{version}{first}% + }{% + \ClassInfoNoLine{\KOMAClassName}{% + Switching compatibility level to `#1'% + }% + \edef\scr@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \ClassWarningNoLine{\KOMAClassName}{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\KOMA@kav@add{.\KOMAClassFileName}{version}{last} +\AtEndOfClass{% + \KOMA@key{version}[]{% + \ClassError{\KOMAClassName}{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + class.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@v@is@lt}[1]{% + \scr@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@gt}[1]{% + \scr@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@le}[1]{% + \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@ge}[1]{% + \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{draft}{false} +\KOMA@DeclareStandardOption +{final}{draft=false} +\KOMA@key{overfullrule}[true]{% + \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles} +\newcommand*{\@gr@gsffamily}{% + \if@egregdoesnotlikesansseriftitles\else\sffamily\fi +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\providecommand*\@ptsize{% + 11% +} +\newcommand*{\@pt@scan}{% + \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan% +} +\newcommand*{\@pt@@scan}{} +\def\@pt@@scan #1pt#2\@pt@@scan{% + \Ifstr{#2}{pt}{% + \Ifnumber{#1}{% + \Ifstr{#1}{10}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{11}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{12}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }% + }% + } + }{\@headlines}% + }{\@headlines}% +} +\providecommand*{\@fontsizefilebase}{scrsize} +\KOMA@key{fontsize}{% + \scr@ifundefinedorrelax{changefontsizes}{% + \@defaultunits\@tempdima#1pt\relax\@nnil + \edef\@ptsize{#1}% + }{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{fontsize}{#1}% +} +\DeclareOption{enabledeprecatedfontcommands}{% + \ClassWarningNoLine{\KOMAClassName}{% + deprecated option `enabledeprecatedfontcommands'.\MessageBreak + Note, that this option was already depreacted when\MessageBreak + it has been defined. Support for old font commands\MessageBreak + has been removed from KOMA-Script more than one\MessageBreak + decade ago. It is not recommended to use them any\MessageBreak + longer. Therefore usage of this class option also\MessageBreak + is not recommended% + }% + \let\scr@defineobsoletefonts\@ne +} +\scr@ifundefinedorrelax{scr@defineobsoletefonts}{% + \let\scr@defineobsoletefonts\z@ +}{} +\BeforePackage{tex4ht}{% + \let\scr@defineobsoletefonts\thr@@ +} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\KOMA@key{twoside}[true]{% + \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi% + \Ifstr{#1}{semi}{% + \@twosidetrue + \FamilyKeyStateProcessed + }{% + \def\FamilyElseValue{, `semi'}% + \KOMA@set@ifkey{twoside}{% + @twoside% + }{#1}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twoside\flushbottom + \else + \if@twocolumn\sloppy\flushbottom\else\raggedbottom\fi + \fi + \fi + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{twoside}{#1}% + \fi +} +\KOMAExecuteOptions{twoside=false} +\KOMA@DeclareStandardOption% + {oneside}{twoside=false} +\KOMA@key{twocolumn}[true]{% + \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi% + \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{twocolumn}{@twocolumn}% + \if@atdocument\expandafter\@firstofone + \else\@ifpackageloaded{typearea}{\expandafter\@firstofone} + {\expandafter\AtEndOfClass}\fi + {\expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else + \onecolumn + \if@twoside\flushbottom\else + \raggedbottom + \fi + \fi + \fi}% + \fi +} +\AtEndOfClass{% + \expandafter\ifnum\scr@v@is@lt{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else\onecolumn\if@twoside\flushbottom\else\raggedbottom\fi\fi + \fi +} +\KOMAExecuteOptions{twocolumn=false} +\KOMA@DeclareStandardOption% + {onecolumn}{twocolumn=false} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{% + \Ifstr{#1}{}{% + \Ifstr{#3}{BCOR}{% + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifdimen{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifdimen{#2}{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% +} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{% + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifnumber{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifnumber{#2}{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }% + \else\scr@pti@nerr@r\fi + \else\@BCOR\fi +} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines% +} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \PassOptionsToPackage{#1headlines}{typearea} + \else\@DIV\fi +} +\newcommand*{\x@paper}{% + \expandafter\x@@paper\CurrentOption paper\x@@paper% +} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{% + \Ifstr{#3}{paper}{% + \Ifnumber{#2}{% + \Ifstr{#1}{a}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{b}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{c}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{d}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{\scr@pti@nerr@r}% + }% + }% + }% + }{\scr@pti@nerr@r}% + }{% + \@pt@scan + }% +} +\newcommand*{\scr@pti@nerr@r}{ + \OptionNotUsed +} +\DeclareOption*{% + \x@paper} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\setparsizes}[3]{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% + \def\scr@parindent{#1}% + \def\scr@parskip{#2}% + \def\scr@parfillskip{#3}% + \def\par@update{% + \if@atdocument\let\par@update\default@par@update\fi + \par@updaterelative + }% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{false}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{never}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full*}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half*}% +} +\newcommand*{\f@parindent}{\the\parindent} +\newcommand*{\f@parskip}{\the\parskip} +\newcommand*{\f@parfillskip}{\the\parfillskip} +\newcommand*{\scr@parindent}{1em} +\newcommand*{\scr@parskip}{\z@} +\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil} +\AtEndOfClass{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% +} +\newcommand*{\par@update}{} +\let\par@update\relax +\newcommand*{\default@par@update}{} +\let\default@par@update\relax +\AtBeginDocument{\par@update} +\KOMA@key{parskip}[true]{% + \begingroup + \KOMA@set@ncmdkey{parskip}{@tempa}{% + {never}{0},% + {false}{1},{off}{1},{no}{1},% + {full-}{2},% + {half-}{3},% + {full}{4},{true}{4},{on}{4},{yes}{4},% + {half}{5},% + {full+}{6},% + {half+}{7},% + {full*}{8},% + {half*}{9},% + {relative}{10},% + {absolute}{11}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\number\@tempa% 0 + \endgroup + \setparsizes{1em}{\z@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{never}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 1 + \endgroup + \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 2 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 3 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 4 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 5 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 6 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .3333\linewidth\@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 7 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .3333\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 8 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 9 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 10 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{relative}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\par@updaterelative + \fi + \let\default@par@update=\par@updaterelative + }% + \or%11 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\relax + \fi + \let\default@par@update=\relax + }% + \else% should never be + \endgroup + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@DeclareDeprecatedOption{parskip-}{parskip=full-} +\KOMA@DeclareDeprecatedOption{parskip+}{parskip=full+} +\KOMA@DeclareDeprecatedOption{parskip*}{parskip=full*} +\KOMA@DeclareDeprecatedOption{halfparskip}{parskip=half} +\KOMA@DeclareDeprecatedOption{halfparskip-}{parskip=half-} +\KOMA@DeclareDeprecatedOption{halfparskip+}{parskip=half+} +\KOMA@DeclareDeprecatedOption{halfparskip*}{parskip=half*} +\KOMA@DeclareDeprecatedOption{parindent}{parskip=false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute} +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@titlepage +\@titlepagefalse +\newif\if@titlepageiscoverpage +\KOMA@key{titlepage}[true]{% + \Ifstr{#1}{firstiscover}{% + \@titlepagetrue + \@titlepageiscoverpagetrue + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + }{% + \def\FamilyElseValue{, `firstiscover'}% + \KOMA@set@ifkey{titlepage}{@titlepage}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@remove{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{titlepage}{@titlepage}% + \@titlepageiscoverpagefalse + \fi + }% +} +\KOMA@kav@xadd{.% + \KOMAClassFileName +}{titlepage}{\if@titlepage true\else false\fi} +\KOMA@DeclareStandardOption% + {notitlepage}{titlepage=false} +\KOMA@ifkey{abstract}{@abstrt} +\KOMA@DeclareDeprecatedOption{abstracton}{abstract=true} +\KOMA@DeclareDeprecatedOption{abstractoff}{abstract=false} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{numbers}{% + \KOMA@set@ncmdkey{numbers}{@tempa}{% + {autoendperiod}{0},{autoenddot}{0},{auto}{0},% + {endperiod}{1},{withendperiod}{1},{periodatend}{1},% + {enddot}{1},{withenddot}{1},{dotatend}{1},% + {noendperiod}{2},{noperiodatend}{2},% + {noenddot}{2},{nodotatend}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}% + \ifcase \@tempa\relax + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\@empty + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhooktrue + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhookfalse + \fi + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot} +\KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot} +\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage} +\@scr@autoloadbookmarkpackagetrue +\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true} +\AfterAtEndOfPackage{hyperref}{% + \AtBeginDocument{% + \@ifpackageloaded{bookmark}{}{% + \if@scr@autoloadbookmarkpackage + \scr@ifundefinedorrelax{Hy@driver}{% + \ClassWarning{\KOMAClassName}{% + `hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak + This should not happen!\MessageBreak + Maybe `hyperref' not loaded or unknown version?% + }% + }{% + \Ifstr{\Hy@driver}{hdvips}{% + \providecommand*{\BookmarkDriverDefault}{dvips}% + }{% + \Ifstr{\Hy@driver}{hdvipdfm}{% + \providecommand*{\BookmarkDriverDefault}{dvipdfm}% + }{% + \Ifstr{\Hy@driver}{hdvipson}{% + \providecommand*{\BookmarkDriverDefault}{dvipsone}% + }{% + \Ifstr{\Hy@driver}{htexture}{% + \providecommand*{\BookmarkDriverDefault}{textures}% + }{% + }% + }% + }% + }% + }% + \ClassInfo{\KOMAClassName}{% + loading recommended package `bookmark'.\MessageBreak + Using `bookmark' together with `hyperref' is + recommended,\MessageBreak + because of handling of possible bookmark level gaps.\MessageBreak + You can avoid loading `bookmark' with KOMA-Script + option\MessageBreak + `bookmarkpackage=false' before \string\begin{document} + and\MessageBreak + you can avoid this message adding:\MessageBreak + \space\space\string\usepackage + \scr@ifundefinedorrelax{BookmarkDriverDefault}{}{% + [\BookmarkDriverDefault]% + }{bookmark}\MessageBreak + before \string\begin{document}% + }% + \@ifundefined{es@quoting}{% + \RequirePackage{bookmark}% + }{% + \ifx\es@quoting\activatequoting + \ClassInfo{\KOMAClassName}{% + temporary deactivation of babel-spanish quoting + }% + \deactivatequoting + \RequirePackage{bookmark}% + \ClassInfo{\KOMAClassName}{% + reactivation of babel-spanish quoting + }% + \activatequoting + \else + \RequirePackage{bookmark}% + \fi + }% + \ifx\@beginmainauxhook\relax + \else + \if@filesw + \ClassWarning{\KOMAClassName}{% + seems someone has broken package `auxhook'.\MessageBreak + Usually this happens, if `auxhook' is loaded or used\MessageBreak + implicitly or explicitly by patching + \string\document% + \scr@ifundefinedorrelax{AtEndPreamble}{}{% + \MessageBreak + or via etoolbox command \string\AtEndPreamble% + }.\MessageBreak + Trying an emergency workaround.\MessageBreak + You can avoid this warning adding:\MessageBreak + \space\space\string\usepackage{auxhook}\MessageBreak + before \string\begin{document}% + }% + \@beginmainauxhook + \fi + \fi + \fi + }% + }% +} +\KOMA@ifkey{sectionentrydots}{@sectionentrywithdots} +\KOMA@key{headings}{% + \KOMA@set@ncmdkey{headings}{@tempa}{% + {big}{0},% + {normal}{1},% + {small}{2},% + {optiontotocandhead}{10},{optiontoheadandtoc}{10},% + {optiontotoc}{11},% + {optiontohead}{12},% + {standardclasses}{13}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax% big + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{big}% + \setkomafont{part}{\Huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % normal + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}% + \setkomafont{part}{\huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{section}{\large}% + \setkomafont{subsection}{\normalsize}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % small + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{small}% + \setkomafont{part}{\LARGE}% + \setkomafont{partnumber}{\LARGE}% + \setkomafont{section}{\normalsize}% + \setkomafont{subsection}{\normalsize}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % openany + \or % openright + \or % openleft + \or % twolinechapter + \or % onelinechapter + \or % twolineappendix + \or % onelineappendix + \or % optiontotocandhead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \scr@activate@xsection{3}% + \or % optiontotoc + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}% + \scr@activate@xsection{2}% + \or % optiontohead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}% + \scr@activate@xsection{1}% + \or % standardclasses + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}% + \setkomafont{part}{\huge}% + \setkomafont{partnumber}{\Large}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \renewcommand*{\sectfont}{\bfseries}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{big} +\KOMA@DeclareDeprecatedOption{bigheadings}{headings=big} +\KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal} +\KOMA@DeclareDeprecatedOption{smallheadings}{headings=small} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{headsepline}{@hsl}% +\KOMA@kav@add{.\KOMAClassFileName}{headsepline}{false} +\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false} +\KOMA@ifkey{footsepline}{@fsl}% +\KOMA@kav@add{.\KOMAClassFileName}{footsepline}{false} +\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false} +\KOMA@key{cleardoublepage}{% + \begingroup + \def\@tempc{% + \endgroup + \KOMA@unknown@keyval{cleardoublepage}{#1}{% + 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% + }% + \Ifstr{#1}{current}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublestandardpage}% + \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% + \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{current}% + }% + }{% + \Ifnotundefined{ps@#1}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{#1}% + }% + }{% + \ifx\@currname\KOMAClassName + \ifx\@currext\@clsextension + \Ifstr{#1}{headings}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}% + {cleardoublepage}{#1}% + }% + }{}% + \fi + \fi + }% + }% + \@tempc +} +\newcommand*{\cleardoubleoddstandardpage}{} +\let\cleardoubleoddstandardpage=\cleardoublepage +\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleoddstandardpage}} +\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} +\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} +\newcommand*{\cleardoubleevenstandardpage}{% + \clearpage + \if@twoside\ifodd\c@page + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi + \fi\fi +} +\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleevenstandardpage}} +\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} +\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} +\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} +\renewcommand*{\cleardoublepage}{% + \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax + \cleardoubleemptypage + \else + \cleardoublestandardpage + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{cleardoublepage}{% + \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi +} +\AtEndOfClass{% + \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% + {% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{cleardoublepage}{\@tempa}% +} +\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} +\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} +\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoublestandardpage}} +\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} +\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} +\KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty} +\KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain} +\KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@captionabove\@captionabovefalse +\newif\if@tablecaptionabove\@tablecaptionabovefalse +\newif\if@figurecaptionabove\@figurecaptionabovefalse +\newif\ifonelinecaptions\onelinecaptionstrue +\newcommand*{\scap@pos}{r} +\newcommand*{\scap@valign}{b} +\KOMA@key{captions}{% + \KOMA@set@ncmdkey{captions}{@tempa}{% + {heading}{0},{above}{0},{top}{0},% + {signature}{1},{below}{1},{bot}{1},{bottom}{1},% + {tableheading}{2},% + {tableabove}{2},{abovetable}{2},{abovetabular}{2},{topattable}{2},% + {tablesignature}{3},% + {tablebelow}{3},{belowtable}{3},{belowtabular}{3},{bottomattable}{3},% + {figureheading}{4},{figureabove}{4},{abovefigure}{4},{topatfigure}{4},% + {figuresignature}{5},{figurebelow}{5},{belowfigure}{5},{bottomatfigure}{5},% + {oneline}{6},% + {nooneline}{7},% + {rightbeside}{8},{besideright}{8},% + {leftbeside}{9},{besideleft}{9},% + {innerbeside}{10},{besideinner}{10},% + {outerbeside}{11},{besideouter}{11},% + {topbeside}{12},{besidetop}{12},% + {centeredbeside}{13},{besidecentered}{13},% + {middlebeside}{13},{besidemiddle}{13},% + {bottombeside}{14},{besidebottom}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % heading + \@tablecaptionabovetrue + \@figurecaptionabovetrue + \@captionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{heading}% + \or % signature + \@tablecaptionabovefalse + \@figurecaptionabovefalse + \@captionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{signature}% + \or % tableheading + \@tablecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tableheading}% + \or % tablesignature + \@tablecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature}% + \or % figureheading + \@figurecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figureheading}% + \or % figuresignature + \@figurecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature}% + \or % oneline + \onelinecaptionstrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline}% + \or % nooneline + \onelinecaptionsfalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{nooneline}% + \or % rightbeside + \renewcommand*{\scap@pos}{r}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside}% + \or % leftbeside + \renewcommand*{\scap@pos}{l}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{leftbeside}% + \or % innerbeside + \renewcommand*{\scap@pos}{i}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{innerbeside}% + \or % outerbeside + \renewcommand*{\scap@pos}{o}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{outerbeside}% + \or % topbeside + \renewcommand*{\scap@valign}{t}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{topbeside}% + \or % centeredbeside + \renewcommand*{\scap@valign}{c}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{centeredbeside}% + \or % bottombeside + \renewcommand*{\scap@valign}{b}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{signature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside} +\KOMA@DeclareDeprecatedOption{tablecaptionabove}{captions=tableheading} +\KOMA@DeclareDeprecatedOption{tablecaptionbelow}{captions=tablesignature} +\newif\if@komalongtable\@komalongtabletrue +\DeclareOption{origlongtable}{\@komalongtablefalse} +\KOMA@DeclareDeprecatedOption{onelinecaption}{captions=oneline} +\KOMA@DeclareDeprecatedOption{noonelinecaption}{captions=nooneline} +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{footnotes}{% + \ifx\@footnotemark\scr@saved@footnotemark + \else + \ifx\@footnotemark\scr@footnotemark + \else + \ClassWarning{\KOMAClassName}{% + Change of `\string\@footnotemark' detected!\MessageBreak + Use of `footnotes=#1' may break\MessageBreak + another package!\MessageBreak + Maybe you should remove the usage of\MessageBreak + option `footnotes=#1'}% + \fi + \fi + \Ifstr{#1}{multiple}{% + \let\@footnotemark\scr@footnotemark + \def\FN@mf@prepare{\scr@mf@prepare}% + \def\scr@footmisc@options{multiple}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{multiple}% + }{% + \Ifstr{#1}{nomultiple}{% + \let\@footnotemark\scr@saved@footnotemark + \let\FN@mf@prepare\relax + \let\scr@footmisc@options\@empty + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + }{% + \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% + }% + }% +} +\AtBeginDocument{% + \ifx\@footnotemark\scr@saved@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + \else\ifx\@footnotemark\scr@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{multiple}% + \fi\fi +} +\newcommand*{\scr@footmisc@options}{} +\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} +\newcommand*{\scr@saved@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark +\expandafter{\scr@saved@footnotemark} +\newcommand*{\scr@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi + \@makefnmark + \csname FN@mf@prepare\endcsname + \ifhmode\spacefactor\@x@sf\fi + \relax} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: option) +\newif\if@tocleft +\KOMA@key{toc}{% + \KOMA@set@ncmdkey{toc}{@tempa}{% + {noindex}{0},{noidx}{0},% + {index}{1},{idx}{1},% + {indexnumbered}{2},{idxnumbered}{2},{numberedindex}{2},{numberedidx}{2},% + {nolistof}{3},{nolistsof}{3},% + {listof}{4},{listsof}{4},% + {listofnumbered}{5},{numberedlistof}{5},% + {listsofnumbered}{5},{numberedlistsof}{5},% + {nobibliography}{6},{nobib}{6},% + {bibliography}{7},{bib}{7},% + {bibliographynumbered}{8},{bibnumbered}{8},{numberedbibliography}{8},% + {numberedbib}{8},% + {flat}{9},{left}{9},% + {graduated}{10},{indent}{10},{indented}{10},% + {indenttextentries}{11},{indentunnumbered}{11},{numberline}{11},% + {leftaligntextentries}{12},{leftalignunnumbered}{12},{nonumberline}{12},% + {sectionentrywithdots}{13},{sectionentrydotfill}{13}, + {sectionentrywithoutdots}{14},{sectionentryfill}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % noindex + \KOMAoptions{index=notoc}% + \or % index + \KOMAoptions{index=totoc}% + \or % indexnumbered + \KOMAoptions{index=numbered}% + \or % listof + \KOMAoptions{listof=notoc}% + \or % nolistof + \KOMAoptions{listof=totoc}% + \or % listofnumbered + \KOMAoptions{listof=numbered}% + \or % nobibliography + \KOMAoptions{bibliography=nottotoc}% + \or % bibliography + \KOMAoptions{bibliography=totoc}% + \or % bibliographynumbered + \KOMAoptions{bibliography=totocnumbered}% + \or % flat + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{flat}% + \@toclefttrue + \or % graduated + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{graduated}% + \@tocleftfalse + \or % indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indenttextentries}% + \expandafter\setuptoc\expandafter{\ext@toc}{numberline}% + \or % leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \expandafter\unsettoc\expandafter{\ext@toc}{numberline}% + \or % chapterentrywithdots/sectionentrywithdots + \KOMAoptions{sectionentrydots=true}% + \or % chapterentrywithoutdots/sectionentrywithoutdots + \KOMAoptions{sectionentrydots=false}% + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{tocleft}{toc=flat} +\KOMA@DeclareDeprecatedOption{tocindent}{toc=graduated} +\newcommand*{\float@@listhead}{% + \section* +} +\newif\if@dynlist +\KOMA@key{listof}{% + \KOMA@set@ncmdkey{listof}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {flat}{3},{left}{3},% + {graduated}{4},{indent}{4},{indented}{4},% + {leveldown}{5}, + {standardlevel}{6}, + {entryprefix}{7}, + {indenttextentries}{8},{indentunnumbered}{8},{numberline}{8},% + {leftaligntextentries}{9},{leftalignunnumbered}{9},{nonumberline}{9}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}% + \renewcommand*{\float@@listhead}{% + \section* + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{totoc}% + \renewcommand*{\float@@listhead}{% + \addsec + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{numbered}% + \renewcommand*{\float@@listhead}{% + \section + }% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% flat + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{flat}% + \@dynlisttrue + \or% graduated + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}% + \@dynlistfalse + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leveldown}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leveldown}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{standardlevel}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \or% entryprefix + \KOMA@kav@add{.\KOMAClassFileName}{listof}{entryprefix}% + \@dynlisttrue + \doforeachtocfile[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \AtAddToTocList[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \or% indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{indenttextentries}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numberline}% + } + \or% leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numberline}% + } + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries} +\KOMA@DeclareDeprecatedOption{liststotoc}{listof=totoc} +\KOMA@DeclareDeprecatedOption{liststotocnumbered}{listof=numbered} +\KOMA@DeclareDeprecatedOption{listsleft}{listof=flat} +\KOMA@DeclareDeprecatedOption{listsindent}{listof=graduated} +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand{\newbibstyle}[3][]{% + \scr@ifundefinedorrelax{scr@bibstyle@#2}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \ClassError{\KOMAClassName}{% + parent bibliography style `#1' does not exist}{% + You've told me to define the new bibliography style `#2'\MessageBreak + to be a child of bibliography style `#1', but bibliography + style\MessageBreak + `#1' does not exist.\MessageBreak + You have to remove the parent declaration or use an existing parent! + See the KOMA-Script manual for more information.% + }% + }{% + \@namedef{scr@bibstyle@#2}{% + \let\@openbib@code\@empty + \let\newblock\@empty + \let\bib@beginhook\@empty + \let\bib@endhook\@empty + \@ifundefined{scr@current@bibstyle}{}{% + \Ifstr{\scr@current@bibstyle}{}{}{% + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + }% + }% + \def\scr@current@bibstyle{#2}% + \KOMA@kav@xadd{.\KOMAClassFileName}{bibliography}{#2}% + \csname scr@bibstyle@#1\endcsname + #3% + }% + \ifx\scr@bibstylelist\@empty + \edef\scr@bibstylelist{`#2'}% + \else + \edef\scr@bibstylelist{\scr@bibstylelist, `#2'}% + \fi + }% + }{% + \ClassError{\KOMAClassName}{bibliography style `#2' already exists}{% + You've told me to define the new bibliography style `#2',\MessageBreak + but this style already exists.\MessageBreak + You have to use another bibliography style name.\MessageBreak + See the KOMA-Script manual for more information.% + }% + }% +} +\newcommand*{\scr@bibstyle@}{} +\newcommand*{\bib@beginhook}{} +\newcommand*{\bib@endhook}{} +\newcommand*{\scr@bibstylelist}{} +\newcommand*{\@openbib@code}{} +\newcommand*{\newblock}{} +\newbibstyle{openstyle}{% + \renewcommand*{\@openbib@code}{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand*{\newblock}{\par}% +} +\newbibstyle{oldstyle}{% + \renewcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}% +} +\scr@bibstyle@oldstyle +\newcommand*{\bib@heading}{% + \bibliography@heading{\refname}% +} +\newcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \subsection*{#1}% + \begingroup + \c@secnumdepth=-\maxdimen + \subsectionmark{#1}% + \endgroup + \else + \section*{#1}% + \@mkdouble{\MakeMarkcase{#1}}% + \fi +}% +\newif\ifbib@leveldown +\KOMA@key{bibliography}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \KOMA@set@ncmdkey{bibliography}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{notoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \subsection*{##1}% + \@mkright{\MakeMarkcase{##1}}% + \else + \section*{##1}% + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{totoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \subsection*{% + \addsubsectiontocentry{}{##1}% + ##1% + }% + \@mkright{\MakeMarkcase{##1}}% + \else + \addsec{##1}% + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{numbered}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \subsection{##1}% + \else + \section{##1}% + \@mkdouble{\MakeMarkcase{\sectionmarkformat ##1}}% + \fi + } + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{leveldown}% + \bib@leveldowntrue + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{standardlevel}% + \bib@leveldownfalse + \fi + }{% + \FamilyKeyStateProcessed + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + \csname scr@bibstyle@#1\endcsname + }% +} +\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle} +\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc} +\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\subsection + \else + \expandafter\section + \fi*% +} +\newif\ifidx@leveldown +\KOMA@key{index}{% + \KOMA@set@ncmdkey{index}{@tempa}{% + {notoc}{0},{nottotoc}{0},{default}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{numberedtotoc}{2},{tocnumbered}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\subsection + \else + \expandafter\section + \fi*% + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{toc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\subsection\expandafter* + \else + \expandafter\addsec + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{numbered}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\subsection + \else + \expandafter\section + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{leveldown}% + \idx@leveldowntrue + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}% + \idx@leveldownfalse + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex} +\KOMA@kav@add{.\KOMAClassFileName}{index}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel} +\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{numbers=autoendperiod} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{% + parskip=false,% + headings=big% +} +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +\AtBeginDocument{% + \begingroup + \def\reserved@a#1/#2/#3 #4\@nil{\@tempcnta=#1\relax\@tempcntb=#2\relax}% + \expandafter\reserved@a\KOMAScriptVersion\@nil + \edef\reserved@a{\the\numexpr\@tempcnta+2\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{% + \ClassWarningNoLine{\KOMAClassName}{% + Your are using a KOMA-Script version, that has not\MessageBreak + been tested with your more than one year newer\MessageBreak + LaTeX release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + this could result in a lot of issues.\MessageBreak + Please have a look at\MessageBreak + and if this\MessageBreak + shows a newer KOMA-Script version than\MessageBreak + `\KOMAScriptVersion', we suggest to do\MessageBreak + an update of KOMA-Script or maybe even the whole\MessageBreak + TeX distribution% + }% + }{% + \edef\reserved@a{\the\numexpr\@tempcnta-4\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{}{% + \ClassWarningNoLine{\KOMAClassName}{% + You are using a KOMA-Script version, that has not been\MessageBreak + tested with your more than four years older LaTeX\MessageBreak + release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + KOMA-Script releases cannot be tested with all past\MessageBreak + LaTeX releases.\MessageBreak + \ifnum\scr@compatibility<\scr@v@last + So even if you are using option `version' implicitly\MessageBreak + or explicitly, this + \else + So this + \fi + could result in a lot of issues.\MessageBreak + We recommend, to update the whole TeX distribution.\MessageBreak + If this could not be done, we suggest to use at\MessageBreak + least an older KOMA-Script release, e.g., from\MessageBreak + % + }% + }% + }% + \endgroup +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{fontsize}% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\footnotesep}{.7\@tempdimc}% + \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus + .6\@tempdimc}% + \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{0\p@ \@plus 1fil}% + \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{0\p@ \@plus 1fil}% + \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@dblfpbot}{\@fptop}% + \fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% + \ClassWarning{\KOMAClassName}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil +\edef\@tempa{\@ptsize}% +\setlength{\@tempdimb}{\@tempdima}% +\edef\@tempb{\strip@pt\@tempdimb}% +\addtolength{\@tempdimb}{-10\p@}% +\edef\@ptsize{\strip@pt\@tempdimb}% +\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% +}{% + \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}% + }{% + \InputIfFileExists{size\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `size\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% + \edef\@tempa{% + \noexpand\changefontsizes{\@tempa}% + \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% + }\@tempa + }% + }% +} +\newcommand*{\scr@DeclareOldFontCommand}[3]{% + \ifnum\scr@defineobsoletefonts<\z@\else + \ifnum\scr@defineobsoletefonts>\tw@ + \DeclareOldFontCommand{#1}{#2}{#3}% + \else + \DeclareOldFontCommand{#1}{% + \scr@ErrorWarningInfo{#1}{#2}#2% + }{% + \scr@ErrorWarningInfo{#1}{#3}#3% + }% + \fi + \fi +} +\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{% + \ifnum \scr@defineobsoletefonts=\z@ + \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{% + You should note that since 1994 LaTeX2e provides a new font selection + scheme\MessageBreak + called NFSS2 with several new, combinable font commands. + KOMA-Script\MessageBreak + classes had defined the old font commands like `\string#1' + only for compatibility\MessageBreak + with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, + these\MessageBreak + commands are deprecated and undocumented at least since 2003. Since + 2013\MessageBreak + KOMA-Script classes warned about soon removement of these deprecated + commands.\MessageBreak + Now, after two decades of LaTeX2e and NFSS2, these commands will not + work any\MessageBreak + more. If loading a package results in this error message, you should + contact\MessageBreak + the author of that package and ask him to replace the deprecated font + command\MessageBreak + `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should + reconfigure\MessageBreak + or replace the package. If you have used the old font command + `\string#1' yourself,\MessageBreak + you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak + To make it work for now, you can use the already also deprecated class + option\MessageBreak + `enabledeprecatedfontcommands'.% + }% + \else + \ifcase \scr@defineobsoletefonts + \or + \expandafter\ClassWarning + \or + \expandafter\ClassInfo + \else + \expandafter\@gobbletwo + \fi + {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak + You should note, that since 1994 LaTeX2e provides a\MessageBreak + new font selection scheme called NFSS2 with several\MessageBreak + new, combinable font commands. New KOMA-Script classes\MessageBreak + defined the old font commands like `\string#1' only for\MessageBreak + compatibility with LaTeX 2.09 document styles of\MessageBreak + Script 2.0. These commands are deprecated and\MessageBreak + undocumented at least since 2003. Since 2013,\MessageBreak + KOMA-Script classes warned about soon removement of\MessageBreak + these deprecated commands. Now, after two decades of\MessageBreak + LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak + not work any longer. If loading a package results in\MessageBreak + this message you should contact the author of that\MessageBreak + package and ask him to replace the depracted font\MessageBreak + command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak + Otherwise you should reconfigure or replace the\MessageBreak + package. If you have used the old font command\MessageBreak + `\string #1' yourself you should replace it, e.g., by\MessageBreak + `\detokenize{#2}'% + }% + \fi +} +\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{% + \@nomath\sfb} +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year}% +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\let\@BCOR =\relax +\let\@@BCOR =\relax +\let\@DIV =\relax +\let\@@DIV =\relax +\let\@headlines =\relax +\let\@@headlines =\relax +\let\x@paper =\relax +\let\x@@paper =\relax +\let\scr@pti@nerr@r =\relax +\RequirePackage{typearea}[\KOMAScriptVersion] +\if@scr@emulatestandardclasses + \Ifstr{\@lastdiv}{areaset}{}{% + \ifnum\@lastdiv=\z@ + \setlength{\textwidth}{\dimexpr \paperwidth-2in\relax} + \ifdim \f@size\p@<10.5\p@ + \setlength{\@tempdimb}{345\p@} + \else\ifdim \f@size\p@<11.5\p@ + \setlength{\@tempdimb}{360\p@} + \else + \setlength{\@tempdimb}{390\p@} + \fi + \fi + \if@twocolumn + \ifdim\@textwidth>2\@tempdimb\relax + \setlength{\textwidth}{2\@tempdimb} + \fi + \else + \ifdim\textwidth>\@tempdimb + \setlength{\textwidth}{\@tempdimb} + \fi + \fi + \@settopoint\textwidth + \setlength{\@tempdima}{\dimexpr \paperheight-3.5in\relax} + \divide\@tempdima\baselineskip + \@tempcnta=\@tempdima + \setlength{\textheight}{\@tempcnta\baselineskip} + \addtolength{\textheight}{\topskip} + \edef\reserved@a{% + \noexpand\@areasetadvancedtrue + \noexpand\areaset[current]{\noexpand\textwidth}{\noexpand\textheight}% + \if@areasetadvanced\else\noexpand\@areasetadvancedfalse\fi + }\reserved@a + \fi + }% +\fi +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\par@updaterelative}{% + \begingroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent + \aftergroup\parindent@update + \fi + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip + \aftergroup\parskip@update + \fi + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip + \aftergroup\parfillskip@update + \fi + \endgroup +} +\newcommand*{\parindent@update}{% + \scr@defaultunits\parindent\scr@parindent + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent\else + \def\reserved@b{\endgroup\edef\f@parindent{\the\parindent}}% + \fi + \reserved@b +} +\newcommand*{\parskip@update}{% + \scr@defaultunits\parskip\scr@parskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip\else + \def\reserved@b{\endgroup\edef\f@parskip{\the\parskip}}% + \fi + \reserved@b +} +\newcommand*{\parfillskip@update}{% + \scr@defaultunits\parfillskip\scr@parfillskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip\else + \def\reserved@b{\endgroup\edef\f@parfillskip{\the\parfillskip}}% + \fi + \reserved@b +} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +\IfLTXAtLeastTF{2021/05/01}{% + \AddToHook{selectfont}{\par@update}% + \AfterPackage{everysel}{% + \IfPackageAtLeastTF{everysel}{2021/01/18}{}{% + \ClassError{\KOMAClassName}{% + incompatible `everysel' detected + }{% + You are using an old version of `everysel' in combination with a + LaTeX\MessageBreak + version >= 2021/06/01 and KOMA-Script >= 3.33. This combination + is\MessageBreak + not supported.\MessageBreak + You could switch back to an older LaTeX using package + `latexrelease'.\MessageBreak + But I recommend to update `everysel'% + }% + }% + }% + \AfterPackage{tracefnt}{% + \IfPackageAtLeastTF{tracefnt}{2020/12/22}{}{% + \ClassError{\KOMAClassName}{% + incompatible `tracefnt' detected + }{% + `tracefnt' is a LaTeX base package and therefore should be updated + together\MessageBreak + with LaTeX kernel. So this should never happen! Please check + your\MessageBreak + LaTeX installation% + }% + }% + }% +}{% + \newcommand*{\scr@selectfont}{} + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \BeforePackage{everysel}{% + \AtBeginDocument{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else + \ClassWarningNoLine{\KOMAClassName}{% + discard change of \string\selectfont}% + \fi + \expandafter\let\csname selectfont \endcsname\scr@selectfont + }% + }% + \AfterPackage{everysel}{% + \scr@ifundefinedorrelax{@EverySelectfont@Init}{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont + \ClassWarningNoLine{\KOMAClassName}{% + \string\selectfont\space already changed}% + \else + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + \fi + }{% + \g@addto@macro\@EverySelectfont@Init{% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + }% + }% + }% + \AfterPackage{tracefnt}{% + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname + }% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update} + \newcommand*{\scr@new@selectfont}{} + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname +} +\newcommand*{\scr@defaultunits}[2]{% + \begingroup + \edef\@tempa{#2}% + \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil + \edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}% + \@tempa +} +\newcommand*{\scr@@defaultunits}{} +\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{% + \ifx\relax#3\relax + \scr@@@defaultunits#1{}#2minusminus\@nnil + \else + \scr@@@defaultunits#1{#2}#3minusminus\@nnil + \fi +} +\newcommand*{\scr@@@defaultunits}{} +\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{% + \ifx\relax#2\relax + \@defaultunits\@tempskipa#3pt\relax\@nnil + #1\@tempskipa + \else + \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil + #1\@tempskipa + \@defaultunits\@tempskipa#2pt\relax\@nnil + \advance#1\@tempskipa + \fi + \ifx\relax#4\relax\else + \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil + \advance#1\@tempskipa + \fi +} +\newcommand*{\@list@extra}{% + \ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi +} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\AfterPackage{amsthm}{% + \RequirePackage{xpatch}% + \xpatchcmd{\deferred@thm@head}{\addvspace{-\parskip}}{}{% + \ClassInfoNoLine{\KOMAClassName}{% + amsthm's \string\deferred@thm@head\space patched}% + }{% + \ClassWarningNoLine{\KOMAClassName}{% + cannot patch amsthm's \string\deferred@thm@head.\MessageBreak + This could result in wrong spacing before theorem\MessageBreak + environments defined by package `amsthm'% + }% + }% +} + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +\setlength{\columnsep}{10\p@} +\setlength{\columnseprule}{\z@} +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\@extratitle}{}% +\newcommand{\extratitle}[1]{\gdef\@extratitle{% + #1% +}}% +\newcommand*{\@frontispiece}{}% +\newcommand{\frontispiece}[1]{\gdef\@frontispiece{% + #1% +}}% +\newcommand*{\@titlehead}{}% +\newcommand{\titlehead}[1]{\gdef\@titlehead{% + #1% +}}% +\newcommand*{\@subject}{}% +\newcommand*{\subject}[1]{\gdef\@subject{% + #1% +}}% +\newcommand*{\subtitle}[1]{\gdef\@subtitle{% + #1% +}}% +\newcommand*{\@subtitle}{}% +\newcommand*{\@publishers}{}% +\newcommand{\publishers}[1]{\gdef\@publishers{% + #1% +}}% +\newcommand*{\@uppertitleback}{}% +\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{% + #1% +}}% +\newcommand*{\@lowertitleback}{}% +\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{% + #1% +}}% +\newcommand*{\@dedication}{}% +\newcommand{\dedication}[1]{\gdef\@dedication{% + #1% +}}% +\newcommand*{\next@tpage}{% + \@thanks\global\let\@thanks\@empty + \clearpage + \csname titlepage@restore\endcsname + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \thispagestyle{empty}% + \let\footnote\thanks + \setcounter{footnote}{0}% +} +\newcommand*{\next@tdpage}{% + \next@tpage\if@twoside \ifodd\value{page}\else\null\next@tpage\fi\fi +} +\newcommand*\maketitle[1][1]{% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular}% + \hskip 1em \@plus.17fil% + \begin{tabular}[t]{c}% + }% + \fi + \if@titlepage + \begin{titlepage} + \setcounter{page}{% + #1% + }% + \if@titlepageiscoverpage + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty + \else + \if@twoside\mbox{}\next@tpage\fi + \noindent\@frontispiece\next@tdpage + \fi + \else + \noindent\@extratitle + \ifx\@frontispiece\@empty + \else + \next@tpage + \noindent\@frontispiece + \fi + \next@tdpage + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth}% + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null\vfill + \begin{center} + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject\par}}% + \vskip 3em + \fi + {\usekomafont{title}{\huge \@title\par}}% + \vskip 1em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + \vskip 2em + {% + \usekomafont{author}{% + \lineskip 0.75em + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1.5em + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus3fill + {\usekomafont{publishers}{\@publishers \par}}% + \vskip 3em + \end{center}\par + \@thanks\global\let\@thanks\@empty + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\global\let\@thanks\@empty + \fi + \else + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\global\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \else + \par + \@tempcnta=% + #1% + \relax\ifnum\@tempcnta=1\else + \ClassWarning{\KOMAClassName}{% + Optional argument of \string\maketitle\space ignored\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \begingroup + \let\titlepage@restore\relax + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \next@tdpage + \if@twocolumn + \ifnum \col@number=\@ne + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \twocolumn[\@makeextratitle]% + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \twocolumn[\@makefrontispiece]% + \next@tdpage + \fi + \twocolumn[\@maketitle]% + \fi + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \fi + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \@thanks\global\let\@thanks\@empty + \endgroup + \fi + \setcounter{footnote}{0}% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \fi + \global\let\and\relax +}% +\newcommand*{\@makeextratitle}{% + \ifx\@extratitle\@empty \else + \noindent\@extratitle\par + \fi +} +\newcommand*{\@makefrontispiece}{% + \ifx\@frontispiece\@empty \else + \noindent\@frontispiece\par + \fi +} +\newcommand*{\@maketitle}{% + \global\@topnum=\z@ + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth} + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null + \vskip 2em% + \begin{center}% + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject \par}}% + \vskip 1.5em + \fi + {\usekomafont{title}{\huge \@title \par}}% + \vskip .5em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% + \vskip 1em + {% + \usekomafont{author}{% + \lineskip .5em% + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1em% + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus 1em + {\usekomafont{publishers}{\@publishers \par}}% + \ifx\@dedication\@empty \else + \vskip 2em + {\usekomafont{dedication}{\@dedication \par}}% + \fi + \end{center}% + \par + \vskip 2em +}% +\newcommand*{\coverpagetopmargin}{% + \dimexpr \topmargin+1in\relax +} +\newcommand*{\coverpagebottommargin}{% + 2\dimexpr\coverpagetopmargin\relax +} +\newcommand*{\coverpageleftmargin}{% + \dimexpr \evensidemargin+1in\relax +} +\newcommand*{\coverpagerightmargin}{\coverpageleftmargin} +\newenvironment{titlepage}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0}% + \fi +}{% + \if@restonecol\twocolumn \else \newpage \fi +}% +\newkomafont{subtitle}{\usekomafont{title}\large}% +\newkomafont{titlehead}{}% +\newkomafont{author}{\Large} +\newkomafont{date}{\Large} +\newkomafont{publishers}{\Large} +\newkomafont{dedication}{\Large} +\newcommand*\titlefont{\sectfont}% +\newcommand*{\scr@fnt@title}{\titlefont}% +\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}% +\newcommand*{\scr@fnt@subject}{\subject@font}% +\newenvironment{abstract}{% + \if@titlepage + \titlepage + \null\vfil + \@beginparpenalty\@lowpenalty + \if@abstrt + \begin{center} + \normalfont\sectfont\nobreak\abstractname + \@endparpenalty\@M + \end{center} + \fi + \else + \if@twocolumn\if@abstrt + \addsec*{\abstractname} + \fi + \else + \if@abstrt + \small + \begin{center} + {\normalfont\sectfont\nobreak\abstractname + \vspace{-.5em}\vspace{\z@}}% + \end{center} + \fi + \quotation + \fi + \fi +}{% + \if@titlepage + \par\vfil\null\endtitlepage + \else + \if@twocolumn\else\endquotation\fi + \fi +} +\newcommand*\abstractname{Abstract} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\abstractname{Abstract} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\let\numberline\scr@numberline +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,part) +\CloneTOCEntryStyle{tocline}{part} +\TOCEntryStyleStartInitCode{part}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\hfill}% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\usekomafont{partentry}{##1}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \usekomafont{partentry}{\usekomafont{partentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{2.25em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,section) +\CloneTOCEntryStyle{tocline}{section} +\TOCEntryStyleStartInitCode{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{% + \if@sectionentrywithdots + {\usekomafont{sectionentrydots}{\TOCLineLeaderFill}}\relax + \else + \hfill + \fi + }% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname{\usekomafont{sectionentry}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{\usekomafont{sectionentry}{\usekomafont{sectionentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{1.0em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,subsection) +\CloneTOCEntryStyle{tocline}{subsection} +\TOCEntryStyleStartInitCode{subsection}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,default) +\CloneTOCEntryStyle{subsection}{default} +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\BeforeClosingMainAux{% + \if@autodot\if@filesw\immediate\write\@mainaux{% + \string\global\string\csname\space @altsecnumformattrue\string\endcsname}% + \fi\fi} +\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup% + \expandafter\@@maybeautodot #1\@stop\endgroup\fi +} +\newcommand*{\@@maybeautodot}[1]{% + \ifx #1\@stop\let\@@maybeautodot\relax + \else + \ifx #1\Alph \@autodottrue\fi + \ifx #1\alph \@autodottrue\fi + \ifx #1\Roman \@autodottrue\fi + \ifx #1\roman \@autodottrue\fi + \ifx #1\@Alph \@autodottrue\fi + \ifx #1\@alph \@autodottrue\fi + \ifx #1\@Roman \@autodottrue\fi + \ifx #1\@roman \@autodottrue\fi + \ifx #1\romannumeral \@autodottrue\fi + \fi + \@@maybeautodot +} +\newcommand*\autodot{\if@altsecnumformat.\fi} +\setcounter{secnumdepth}{3} +\providecommand*{\ifnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifnumbered' by `\string\Ifnumbered'% + }% + \Ifnumbered +} +\newcommand*{\Ifnumbered}[1]{% + \if@currentusenumber + \scr@ifundefinedorrelax{#1numdepth}{% + \expandafter\@secondoftwo + }{% + \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth + \expandafter\expandafter\expandafter\@secondoftwo + \else + \expandafter\expandafter\expandafter\@firstoftwo + \fi + }% + \else + \expandafter\@secondoftwo + \fi +} +\providecommand*{\ifunnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifunnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifunnumbered' by `\string\Ifunnumbered'% + }% + \Ifunnumbered +} +\newcommand*{\Ifunnumbered}[1]{% + \Ifnumbered{#1}{\@secondoftwo}{\@firstoftwo}% +} +\newcommand*{\scr@saved@startsection}[6]{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\def\reserved@a#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\ifcase \ifx\@startsection\scr@saved@startsection 0 + \else + \ifx\@startsection\reserved@a 0 + \else 1 + \fi + \fi + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa \glueexpr #4\relax + \@ifundefined{scr@#1@afterindent}{% + \def\startsection@afterindent##1##2##3{##3}% + }{% + \expandafter\let\expandafter\startsection@afterindent + \csname scr@#1@afterindent\endcsname + }% + \startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + }% + \def\startsection@sectionname{#1}% + \def\startsection@secnumdepth{\numexpr #2\relax}% + \def\startsection@indent{\glueexpr #3\relax}% + \let\startsection@beforeskip\@tempskipa + \@ifundefined{scr@#1@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }{% + \expandafter\let\expandafter\scr@sect@runin + \csname scr@#1@runin\endcsname + }% + \scr@sect@runin{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + }{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + }{% + \ifdim \glueexpr #5\relax <\z@ + \def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + \else + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + \fi + }% + \ExecuteDoHook{heading/postinit/#1}% + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar {% + \ExecuteDoHook{heading/branch/star/#1}% + \def\scr@s@ct@@nn@m@{#1}% + \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}% + }{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \scr@section@dblarg{% + \@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}% + {\glueexpr #5\relax}{#6}% + }% + }% + } +\else + \ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been + changed.\MessageBreak + \KOMAClassName\space needs it's own definition of + `\string\@startsection'\MessageBreak + to provide extended features for the optional argument\MessageBreak + of `\string\section' etc.\MessageBreak + Generally it defines `\string\@startsection' completely new\MessageBreak + to achieve this. Because of the unexpected definition\MessageBreak + an alternative approach will be used.\MessageBreak + If this fails and if there isn't a new release of\MessageBreak + KOMA-Script that fixes the problem, please\MessageBreak + send a report to the KOMA-Script author.\MessageBreak + Note, that this alternative approach does not\MessageBreak + execute the elements of do-hooks:\MessageBreak + \space\space- `heading/postinit',\MessageBreak + \space\space- `heading/branch/star',\MessageBreak + \space\space- `heading/branch/nostar',\MessageBreak + and does always use `runin=bysign' and\MessageBreak + `afterindent=bysign'% + }% + \let\scr@saved@startsection\@startsection + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \kernel@ifstar {% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*% + }{% + \scr@section@dblarg{% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}% + }% + } +\fi +\newcommand*{\scr@sect@runin}[3]{#3} +\newcommand*{\scr@startsection@ulm@error}[1]{% + \ClassError{\KOMAClassName}{% + \string#1 undefined outside of \string\scr@startsection + }{% + A KOMA-Script macro for package authors have been used outside + the\MessageBreak + specified definition scope.\MessageBreak + See `scrkernel-sections.dtx' for more information.% + }% +} +\newcommand*\startsection@sectionname{% + \scr@startsection@ulm@error\startsection@sectionname} +\newcommand*\startsection@secnumdepth{% + \scr@startsection@ulm@error\startsection@secnumdepth} +\newcommand*\startsection@indent{% + \scr@startsection@ulm@error\startsection@indent} +\newcommand*\startsection@beforeskip{% + \scr@startsection@ulm@error\startsection@beforeskip} +\newcommand*\startsection@afterskip{% + \scr@startsection@ulm@error\startsection@afterskip} +\newcommand*{\if@startsection@runin}{% + \scr@startsection@ulm@error\if@startsection@runin} +\newif\if@startsection@runin +\newcommand*\startsection@afterindent{% + \scr@startsection@ulm@error\startsection@afterindent} +\newcommand*{\At@startsection}[1]{% + \ClassInfo{\KOMAClassName}{% + Usage of deprecated command `\string\At@startsection' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/postinit} + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/postinit}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\scr@doonlyifstyleofargis}[3]{% + \IfSectionCommandStyleIs{#3}{#2}{#1}{}% +} +\newcommand*{\Before@ssect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@ssect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/star}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/star}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\Before@sect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@sect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/nostar}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/nostar}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand{\scr@section@dblarg}[1]{% + \kernel@ifnextchar[%] + {#1}% + {\scr@section@xdblarg{#1}}% +} +\newcommand{\scr@section@xdblarg}[2]{% + \begingroup + \edef\reserved@a{% + \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}% + {\scr@osectarg}}% + \reserved@a +} +\renewcommand*{\@startsection}{% + \ifnum \scr@osectarg=\z@ + \expandafter\scr@saved@startsection + \else + \expandafter\scr@startsection + \fi +} +\newcommand*{\UseNumberUsageError}[2]{% + \ClassError{\KOMAClassName}{% + \string\IfUseNumber\space not allowed% + }{% + You cannot use \string\IfUseNumber\space outside a heading.\MessageBreak + If you'd continue, I'll ignore both arguments, because I do not + know\MessageBreak + whether to use the first or the second argument.% + }% +} +\newcommand*{\IfUseNumber}[2]{}% +\let\IfUseNumber\UseNumberUsageError +\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}} +\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}} +\let\secdef\SecDef +\def\scr@latex@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\ifx\@sect\scr@latex@sect\else + \let\scr@latex@sect\@sect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@sect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@sect}% +\fi +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#7=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#8},head={#8},reference={#8},#7}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#8},head={#7},reference={#8}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#8},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \fi + \fi + \scr@ifundefinedorrelax{scr@mt@saved@sect}{}{% + \expandafter\ifx\csname #1\endcsname\section + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + \expandafter\ifx\csname #1\endcsname\starsection\relax + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + }% + \let\IfUsePrefixLine\@secondoftwo + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \let\@svsec\@empty + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \hy@insteadofrefstepcounter{#1}% + \else + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@ + \begingroup + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\interlinepenalty \@M + \sectionlinesformat{#1}{\glueexpr #3\relax}\@svsec{#8}\@@par}% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \expandafter\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname##1##2{% + \addtocentrydefault{#1}{##1}{##2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \else + \def\@svsechd{% + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\sectioncatchphraseformat{#1}{\glueexpr #3\relax}\@svsec{#8}}% + \expandafter\csname #1mark\expandafter\endcsname + \expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname####1####2{% + \addtocentrydefault{#1}{####1}{####2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \ExecuteDoHook{heading/endgroup/#1}% + }% + \fi + \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning + \@xsect{\glueexpr #5\relax}% +} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.section]{KOMAarg} +\providecommand*\@currenttocentry{} +\providecommand*\@currentheadentry{} +\providecommand*\@currentlabelname{} +\FamilyStringKey[.section]{KOMAarg}{tocentry}{\@currenttocentry} +\FamilyStringKey[.section]{KOMAarg}{head}{\@currentheadentry} +\DefineFamilyKey[.section]{KOMAarg}{reference}{% + \scr@ifundefinedorrelax{NR@gettitle}{% + \scr@ifundefinedorrelax{GetTitleString}{% + \def\@currentlabelname{#1}% + }{% + \GetTitleString{#1}% + \let\@currentlabelname\GetTitleStringResult + }% + }{% + \NR@gettitle{#1}% + }% + \scr@ifundefinedorrelax{TR@gettitle}{}{% + \expandafter\TR@gettitle\expandafter{\@currentlabelname}% + }% + \scr@ifundefinedorrelax{ztitlerefsetup}{}{% + \ztitlerefsetup{title=\@currentlabelname}% + }% + \FamilyKeyStateProcessed +} +\FamilyInverseBoolKey[.section]{KOMAarg}{nonumber}{@currentusenumber} +\newcommand*{\scr@istest}{} +\def\scr@istest#1=#2\@nil{% + \ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi +} +\newif\if@scr@tempswa +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{% + \hskip #2#3#4% +} +\def\scr@latex@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\ifx\@ssect\scr@latex@ssect +\else + \let\scr@latex@ssect\@ssect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@ssect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@ssect}% +\fi +\def\@ssect#1#2#3#4#5{% + \scr@ifundefinedorrelax{scr@s@ct@@nn@m@}{% + \ClassWarning{\KOMAClassName}{Incompatible usage of + \string\@ssect\space detected.\MessageBreak + You've used the KOMA-Script implementation of + \string\@ssect\MessageBreak + from within a non compatible caller, that does not\MessageBreak + \string\scr@s@ct@@nn@m@\space locally.\MessageBreak + This could result in several error messages}% + \def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}% + }{% + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@\scr@s@ct@@nn@m@\endcsname + \endgroup + \fi + }% + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@ + \begingroup + \let\IfUseNumber\@secondoftwo + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + }\reserved@a + #4{\nobreak\interlinepenalty \@M + \expandafter\sectionlinesformat\expandafter{\scr@s@ct@@nn@m@}% + {\glueexpr #1\relax}\@empty{#5}\@@par}% + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }\reserved@a + \endgroup + \else + \edef\@svsechd{% + \unexpanded{\let\IfUseNumber\@secondoftwo}% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + \unexpanded{#4}{% + \noexpand\nobreak + \noexpand\sectioncatchphraseformat{\scr@s@ct@@nn@m@}% + \unexpanded{{\glueexpr #1\relax}\@empty{#5}}% + }% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }% + \fi + \let\scr@s@ct@@nn@m@\relax + \@xsect{\glueexpr #3\relax}% +} +\def\scr@latex@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces +} +\ifx\@xsect\scr@latex@xsect\else + \let\scr@latex@xsect\@xsect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@xsect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@xsect}% +\fi +\def\@xsect#1{% + \@ifundefined{scr@sect@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }% + \@tempskipa #1\relax + \ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \ifdim \@tempskipa<\z@ + \hskip -\@tempskipa + \else + \hskip \@tempskipa + \fi + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \def\scr@sect@runin##1##2##3{##3}% + \ignorespaces +} +\newcommand*{\scr@IfUsePrefixLineWarning}[2]{% + \ClassWarning{\KOMAClassName}{% + Usage of \string\IfUsePrefixLine\space outside + section command\MessageBreak + style makes no sense, because the behaviour not only\MessageBreak + depends on class options but also on the run-time\MessageBreak + section command style.\MessageBreak + Neither the then-code nor the else-code will be\MessageBreak + executed.\MessageBreak + You may change this and avoid the warning by LOCALLY\MessageBreak + setting \string\IfUsePrefixLine\space to either + \string\@firstoftwo\space or\MessageBreak + \string\@secondoftwo\space before using it% + }% +} +\newcommand*{\IfUsePrefixLine}[2]{} +\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning +\newcommand*{\raggedsection}{} +\let\raggedsection\raggedright +\DefineFamily{KOMAarg} +\DefineFamilyMember[.dsc]{KOMAarg} +\newcommand*{\DeclareSectionCommandStyleOption}[3]{% + \AddToSectionCommandOptionsDoList{#2}% + \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% + \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% + }% +} +\newcommand*{\AddToSectionCommandOptionsDoList}[1]{% + \kernel@ifnextchar [%] + {\@AddToSectionCommandOptionListWithDefault{#1}}% + {\l@addto@macro\scr@dsc@doopts{\do{#1}}}% +} +\newcommand*{\@AddToSectionCommandOptionListWithDefault}{} +\def\@AddToSectionCommandOptionListWithDefault#1[#2]{% + \l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}} +}% +\newcommand*{\scr@dsc@doopts}{} +\newcommand*{\RelaxSectionCommandOptions}{% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do{% + \kernel@ifnextchar [%] + {\@do}% + {\@do[]}% + }% + \def\@do[##1]##2{% + \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}% + }% + \scr@dsc@doopts + \do@endgroup +} +\newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}% + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dsc@expandtopt + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{% + \the\@tempskipa}% + \else + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}% + \fi + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1} + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \IfExistskomafont{#3\scr@dsc@current#4}{% + \setkomafont + }{% + \newkomafont + }{#3\scr@dsc@current#4}{##1}% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####1}% + \else + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####2}% + \fi + \else + \Ifstr{##1}{#5}{% + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####3}% + \FamilyKeyStateProcessed + }{}% + \fi + }% +} +\newcommand*{\scr@dsc@style@section@options}{} +\DeclareSectionCommandStyleLengthOption{section} + {indent}{scr@}{@sectionindent} +\DeclareSectionCommandStyleFuzzyOption{section} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleFuzzyOption{section} + {runin}{scr@}{@runin} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{section}{font}{}{} +\newcommand*{\scr@dsc@def@style@section@command}[1]{% + \@namedef{#1}{% + \scr@startsection{#1}% + {\csname #1numdepth\endcsname}% + {\csname scr@#1@sectionindent\endcsname}% + {\csname scr@#1@beforeskip\endcsname}% + {\csname scr@#1@afterskip\endcsname}% + {% + \ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}% + \fi + \fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{#1}% + }% + }% +} +\newcommand*{\scr@dsc@style@chapter@subcommands}[1]{% + @#1,@s#1,@make#1head,@makes#1head,@@make#1head,@@makes#1head,set#1preamble% +} +\newcommand*{\scr@dsc@style@part@options}{} +\DeclareSectionCommandStyleFuzzyOption{part} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{part} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleLengthOption{part} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{part}{font}{}{} +\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix} +\newcommand*{\scr@dsc@def@style@part@command}[1]{% + \@namedef{#1}{\scr@startpart{#1}}% + \@namedef{@#1}{\scr@@startpart{#1}}% + \@namedef{@s#1}{\scr@@startspart{#1}}% +} +\newcommand*{\scr@dsc@style@part@subcommands}[1]{% + @#1,@s#1,@end#1,set#1preamble% +} +\newcommand*{\scr@dsc@style@section@neededoptionstest}{% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {section indent}{indent}{0pt}% + {\@namedef{scr@\scr@dsc@current @sectionindent}{0pt}}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before section skip}{beforeskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after section skip}{afterskip}% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {font}{font}{\normalsize}% + {\newkomafont{\scr@dsc@current}{\normalsize}}% + }% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `runin=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname + ##1##2##3{##3}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `afterindent=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3{##3}% + }% + }{}% +} +\newcommand*{\scr@dsc@style@part@neededoptionstest}{% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before part skip}{beforeskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {before part skip}{beforeskip}% + {\scr@part@beforeskip}% + {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@part@beforeskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after part skip}{afterskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {after part skip}{afterskip}% + {\scr@part@afterskip}% + {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@part@afterskip}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}{font}{font}% + {\usekomafont{part}}% + {\newkomafont{\scr@dsc@current}{\usekomafont{part}}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {number font}{prefixfont}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {number font}{prefixfont}% + {\usekomafont{partprefix}}% + {\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName}{% + using compatibility default + `afterindent=false'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3% + {##2}% + }% + }{}% +} +\newif\ifscr@dsc@parametersonly +\newcommand*{\DeclareSectionCommand}[2][]{% + \edef\scr@dsc@current{#2}% + \scr@dsc@parametersonlyfalse + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \IfArgIsEmpty{##1}{% + \scr@dsc@parametersonlytrue + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{% + \IfArgIsEmpty{##1}{% + \@ifundefined{scr@dte@\scr@dsc@current @style}{}{% + \expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname + \relax + }% + \expandafter\let\csname scr@tso@\scr@dsc@current @style\endcsname + \relax + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dte@def@l@##1}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@dte@\scr@dsc@current @style}{##1}% + \@namedef{scr@tso@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{% + \FamilyKeyStateProcessed + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \begingroup + \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% + \scr@declaresectioncommanderror{\scr@dsc@current} + {section command style}{style}% + }{}% + \endgroup + \@firstofone{% + \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \scr@ifundefinedorrelax{l@\scr@dsc@current}{% + \@namedef{scr@tso@\scr@dsc@current @style}{default}% + }{}% + }{}% + \let\scr@dsc@tocstyle@options\@empty + \let\scr@dsc@extra@relax@opts\@empty + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \expandafter\let + \csname scr@tso@\scr@dsc@current @style\expandafter\endcsname + \csname scr@dte@\scr@dsc@current @style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{}{% + \begingroup + \def\scr@dte@current{#2}% + \edef\reserved@a{% + \noexpand\@ExecuteTOCEntryStyleInitCode{% + \@nameuse{scr@tso@\scr@dsc@current @style}% + }{\scr@dsc@current}% + }\reserved@a + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \l@addto@macro\scr@dsc@extra@relax@opts{% + \RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocentry##1}% + }% + }% + \kernel@ifnextchar[%] + {\@dodefault{##1}}% + {\@donodefault{##1}}% + }% + \def\@donodefault##1{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \def\@dodefault##1[##2]{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \scr@dte@doopts + \do@endgroup + }% + \DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}% + \FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}% + \scr@dsc@expandtoptfalse + \scr@ifundefinedorrelax{scr@local@levelincrease}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }{% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + }% + \scr@ifundefinedorrelax{scr@local@leveloffset}{% + \edef\reserved@a{% + \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}% + }\reserved@a + }{% + \edef\reserved@a{% + \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \noexpand\FamilySetCounterMacro{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname + }% + \unexpanded{% + {\numexpr ##1+\scr@local@leveloffset\relax}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + }% + }\reserved@a + }% + \FamilyStringKey[.dsc]{KOMAarg}{counterwithout}{\scr@local@counterwithout}% + \let\scr@local@counterwithout\relax + \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}% + \let\scr@local@counterwithin\relax + \scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{% + \scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{% + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \edef\reserved@a{% + \noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{% + level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,% + }% + }\reserved@a + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + \FamilyKeyStateProcessed + }% + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \scr@dsc@extra@relax@opts + \let\scr@dsc@extra@relax@opts\relax + \RelaxSectionCommandOptions + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}% + \scr@ifundefinedorrelax{scr@local@levelincrease}{}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}% + \begingroup + \def\local@endgroup{\endgroup}% + \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% + }{% + \expandafter\ifnum \csname #2numdepth\endcsname>-\maxdimen + \@nameuse{scr@dsc@style@% + \@nameuse{scr@\scr@dsc@current @style}% + @neededoptionstest}% + \else + \ClassError{\KOMAClassName}{% + `level' must be > -\the\numexpr\maxdimen\relax + }{% + KOMA-Script internally sets `secnumdepth' to + -\the\numexpr\maxdimen\relax\space + to locally switch of\MessageBreak + the numbering, i.e., inside running heads.\MessageBreak + Because of this, you can define section commands with\MessageBreak + `level' greater than -\the\numexpr\maxdimen\relax\space only.% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo + \fi + }% + \local@endgroup + \@firstofone{% + \@ifundefined{c@#2}{\newcounter{#2}}{}% + \ifx\scr@local@counterwithout\relax + \else\ifx\scr@local@counterwithout\@empty + \else + \@removefromreset{#2}{\scr@local@counterwithout}% + \fi + \@namedef{the#2}{\arabic{#2}}% + \fi + \ifx\scr@local@counterwithin\relax + \else\ifx\scr@local@counterwithin\@empty + \@namedef{the#2}{\arabic{#2}}% + \else + \@removefromreset{#2}{\scr@local@counterwithin}% + \@addtoreset{#2}{\scr@local@counterwithin}% + \expandafter\def\csname the#2\expandafter\endcsname\expandafter{% + \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% + \fi + \fi + \@ifundefined{#2format}{% + \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \ifscr@dsc@parametersonly + \ClassInfo{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' due + to\MessageBreak + empty section style option% + }% + \else + \scr@ifundefinedorrelax{% + scr@dsc@def@style@\@nameuse{scr@#2@style}@command% + }{% + \ClassWarning{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' + due\MessageBreak + to not yet defined section style\MessageBreak + `\@nameuse{scr@#2@style}'% + }% + }{% + \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}% + }% + \fi + \@ifundefined{DeclareSectionNumberDepth}{% + \@ifundefined{#2markformat}{% + \@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \@ifundefined{#2mark}{% + \expandafter\let\csname #2mark\endcsname\@gobble + }{}% + }{% + \DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}% + }% + \expandafter\providecommand\expandafter*% + \csname add#2tocentry\endcsname[2]{% + \addtocentrydefault{#2}{##1}{##2}% + }% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + \expandafter\let\csname scr@tso@#2@style\expandafter\endcsname + \csname scr@dte@#2@style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + }{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{% + \@nameuse{scr@tso@#2@style}% + }{#2}% + }% + \scr@ifundefinedorrelax{l@#2}{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}% + }{}% + \if@atdocument + \let\reserved@a\@firstofone + \else + \@ifpackageloaded{hyperref}{% + \let\reserved@a\@firstofone + }{% + \def\reserved@a##1{% + \AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}% + }% + }% + \fi + \reserved@a{% + \expandafter\let\csname toclevel@#2\expandafter\endcsname + \csname #2tocdepth\endcsname + \scr@ifundefinedorrelax{bookmarksetup}{% + \scr@ifundefinedorrelax{scr@min@toclevel}{% + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + < \numexpr \scr@min@toclevel-1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 lower than currently lowest\MessageBreak + known level (\scr@min@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@min@toclevel-1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + < \scr@min@toclevel\relax + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + \fi + }% + \scr@ifundefinedorrelax{scr@max@toclevel}{% + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + > \numexpr \scr@max@toclevel+1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 greater than currently highest\MessageBreak + known level (\scr@max@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@max@toclevel+1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + > \scr@max@toclevel\relax + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + \fi + }% + }{}% + }% + }% + }% + \let\scr@dsc@current\relax +} +\newcommand*{\scr@declaresectioncommanderror}[3]{% + \ClassError{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown% + }{% + Please use option `#3' to declare the #2.\MessageBreak + If you'll continue, declaration will be ignored% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo +} +\newcommand*{\scr@declaresectioncommandwarning}[5]{% + \ClassInfo{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown.\MessageBreak + You should use option `#3' if you\MessageBreak + do not want to use the default value\MessageBreak + `\detokenize{#4}'% + }% + \l@addto@macro\local@endgroup{#5}% +} +\newcommand*{\DeclareNewSectionCommand}[2][]{% + \@ifundefined{#2}{% + \@tempswatrue + \let\reserved@b\@empty + \@for \reserved@a:=the#2,#2mark,#2format,#2markformat\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{\expandafter\string\csname \reserved@a\endcsname}% + }% + }% + \if@tempswa + \expandafter\let\expandafter\scr@dsc@current + \csname scr@tso@##2@style\endcsname + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \edef\scr@dsc@current{##1}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \@tempswatrue + \@ifundefined{scr@dsc@current}{}{% + \scr@ifundefinedorrelax{scr@dsc@style@\scr@dsc@current @subcommands}{% + }{% + \edef\reserved@b{% + \csname scr@dsc@style@\scr@dsc@current @subcommands\endcsname{#2}% + }% + \expandafter\@for\expandafter\reserved@a\expandafter:\expandafter=% + \reserved@b\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{% + \expandafter\string\csname \reserved@a\endcsname}% + }% + }% + } + }% + \let\scr@dsc@current\relax + \fi + \if@tempswa + \DeclareSectionCommand[{#1}]{#2}% + \else + \ClassError{\KOMAClassName}{% + command `\reserved@b' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly.\MessageBreak + Such a section command needs an additional new command + `\reserved@b',\MessageBreak + but this already exists. So you cannot define + `\expandafter\string\csname #2\endcsname' newly.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + \fi + }{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly,\MessageBreak + but a command or something else with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + }% +} +\newcommand*{\RedeclareSectionCommand}[2][]{% + \@ifundefined{#2}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' not defined% + }{% + You've tried to re-define the section command `\expandafter\string\csname + #2\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be irgnored.% + }% + }{% + \DeclareSectionCommand[{#1}]{#2}% + }% +} +\newcommand*{\ProvideSectionCommand}[2][]{% + \@ifundefined{#2}{% + \DeclareSectionCommand[{#1}]{#2}% + }{% + \ClassInfo{\KOMAClassName}{% + \string\ProvideSectionCommand{#1} ignored% + }% + }% +} +\newcommand*{\DeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\DeclareNewSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' already + defined% + }{% + You've tried to define the section command + `\expandafter\string\csname\reserved@a\endcsname' newly,\MessageBreak + but a command, token, box or length with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\RedeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' not defined% + }{% + You've tried to re-define the section command + `\expandafter\string\csname\reserved@a\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }{}% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\ProvideSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + \DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}% + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + }% + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\IfSectionCommandStyleIs}[2]{% + \scr@ifundefinedorrelax{#1}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not defined}{% + You cannot compare the section command style of an undefined command.}% + }{% + \scr@ifundefinedorrelax{scr@#1@style}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not a valid section + command% + }{% + You cannot detect the section command style of a command, that + has\MessageBreak + never been defined as a section command by KOMA-Script.% + }% + }% + }% + \scr@ifundefinedorrelax{scr@dsc@def@style@#2@command}{% + \ClassError{\KOMAClassName}{% + unknown section command style `#2'% + }{}% + }% + \Ifstr{\@nameuse{scr@#1@style}}{#2}% +} +\newcommand*\appendix{% + \Ifstr{\@currenvir}{appendix}{% + \ClassWarning{\KOMAClassName}{% + You are using + `\string\begin{appendix}...\string\end{appendix}'.\MessageBreak + You should note, that `\string\appendix' is a mostly + globally\MessageBreak + working command not an enviroment with only local\MessageBreak + effects. Therefore `\string\end{appendix}' will neither\MessageBreak + switch back to normal section numbering nor finish\MessageBreak + every other effect of `\string\begin{appendix}'.\MessageBreak + Nevertheless, some effects may end with\MessageBreak + `\string\end{appendix}' and the document may become\MessageBreak + inconsistent.\MessageBreak + Because of this, you should remove `\string\end{appendix}'\MessageBreak + and replace `\string\begin{appendix}' by command\MessageBreak + `\string\appendix'% + }% + }{}% + \par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thesection{\@Alph\c@section}% +} +\IfLTXAtLeastTF{2020/10/01}{% + \g@addto@macro{\appendix}{\UseOneTimeHook{\KOMAClassName/appendix}}% +}{} +\g@addto@macro{\appendix}{\csname appendixmore\endcsname} +\newcommand*{\scr@startpart}[1]{% + \ExecuteDoHook{heading/preinit/#1}% + \par + \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax + \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{% + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim\@tempskipa<\z@ + \@tempskipa=-\@tempskipa + \@afterindentfalse + \fi + }% + }% + \ExecuteDoHook{heading/postinit/#1}% + \partheadstartvskip + \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname +} +\newcommand{\scr@@startpart}{} +\long\def\scr@@startpart#1[#2]#3{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#2=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \fi + \fi + \Ifnumbered{#1}{% + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \typeout{#1 \csname the#1\endcsname.}% + \ifx\@currenttocentry\@empty\else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}% + {\@currenttocentry}% + \fi + }{% + \expandafter\ifnum\scr@v@is@lt{3.18}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \typeout{#1 without number}% + \ifx\@currenttocentry\@empty\else + \hy@insteadofrefstepcounter{#1}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{}{\@currenttocentry}% + \fi + }% + \begingroup + \def\IfUseNumber{\Ifnumbered{#1}}% + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{\nobreak + \IfUseNumber{% + \partlineswithprefixformat{#1}{% + \usekomafont{#1prefix}{\nobreak\@nameuse{#1format}}% + \partheadmidvskip + }{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + }% + }{% + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + } + }% + \expandafter\ifx\csname #1mark\endcsname\@gobble + \@mkboth{}{}% + \else + \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \fi + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \nobreak + \@tempskipa=\glueexpr\@nameuse{scr@#1@afterskip}\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \partheadendvskip + \@afterheading +} +\newcommand{\scr@@startspart}[2]{% + \ExecuteDoHook{heading/branch/star/#1}% + \begingroup + \let\@mkboth\@gobbletwo + \hy@insteadofrefstepcounter{#1}% + \endgroup + \begingroup + \let\IfUseNumber\@secondoftwo + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{% + \nobreak + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#2\strut\@@par}% + }% + \@mkboth{}{}% + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \nobreak + \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \partheadendvskip + \@afterheading +} +\newcommand{\partlineswithprefixformat}[3]{% + #2#3% +} +\newcommand*{\hy@insteadofrefstepcounter}[1]{} +\let\hy@insteadofrefstepcounter\@gobble +\newcommand*{\scr@chapter@before@hyperref@patch}{% + \let\scr@orig@chapter\@chapter + \let\scr@orig@schapter\@schapter + \let\scr@orig@addchap\@addchap +} +\BeforePackage{hyperref}{\scr@chapter@before@hyperref@patch} +\newcommand*{\scr@chapter@after@hyperref@patch}{% + \let\@chapter\scr@orig@chapter + \let\@schapter\scr@orig@schapter + \let\@addchap\scr@orig@addchap + \ifx\hy@insteadofrefstepcounter\@gobble + \renewcommand*{\hy@insteadofrefstepcounter}[1]{% + \Hy@MakeCurrentHrefAuto{##1*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \fi +} +\AfterAtEndOfPackage{hyperref}{\scr@chapter@after@hyperref@patch} +\newcommand*{\addparttocentry}[2]{% + \addtocentrydefault{part}{#1}{#2}% +} +\newcommand\addpart{% + \SecDef\@addpart\@saddpart +} +\newcommand*{\@addpart}{} +\long\def\@addpart[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \part[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \reserved@a +} +\newcommand{\@saddpart}[1]{% + \part*{#1}% + \addpartmark{}% +} +\newcounter{part} +\renewcommand*{\thepart}{\@Roman\c@part} +\newcommand*{\partformat}{\partname~\thepart\autodot} +\newcommand*\partname{Part} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\partname{Part} +\newcommand*{\partmark}[1]{\@mkboth{}{}} +\newcommand*\addpartmark[1]{% + \begingroup + \expandafter\let\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \partmark{#1}% + \endgroup +} +\newcommand*{\raggedpart}{} +\let\raggedpart\raggedsection +\newkomafont{partentry}{\usekomafont{disposition}\large} +\newkomafont{partentrypagenumber}{} +\newcommand*{\raggedsectionentry}{} +\newcommand\addsec{\SecDef\@addsec\@saddsec} +\newcommand*{\@addsec}{} +\def\@addsec[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \section[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \reserved@a +} +\newcommand*{\@saddsec}[1]{% + \section*{#1}\addsecmark{}% +} +\newkomafont{minisec}{} +\newcommand\minisec[1]{% + \expandafter\ifnum\scr@v@is@lt{3.13a}\relax + \@afterindentfalse \vskip 1.5ex + \else + \if@noskipsec \leavevmode \fi + \par + \@afterindentfalse + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace{1.5ex}% + \fi + \fi + {\parindent \z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}\fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}% + }\nobreak + \@afterheading +} +\newcommand*{\addsectiontocentry}[2]{% + \addtocentrydefault{section}{#1}{#2}% +} +\newcommand*{\addsubsectiontocentry}[2]{% + \addtocentrydefault{subsection}{#1}{#2}% +} +\newcommand*{\addparagraphtocentry}[2]{% + \addtocentrydefault{paragraph}{#1}{#2}% +} +\newcommand*{\addsubparagraphtocentry}[2]{% + \addtocentrydefault{subparagraph}{#1}{#2}% +} +\newcounter{section} +\renewcommand*{\thesection}{\@arabic\c@section} +\newcommand*\sectionmarkformat{\thesection\autodot\enskip} +\newcounter{subsection}[section] +\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection} +\newcommand*\subsectionmarkformat{\thesubsection\autodot\enskip} +\newcounter{subsubsection}[subsection] +\renewcommand*{\thesubsubsection}{% + \thesubsection.\@arabic\c@subsubsection +} +\newcounter{paragraph}[subsubsection] +\renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph} +\newcounter{subparagraph}[paragraph] +\renewcommand*{\thesubparagraph}{% + \theparagraph.\@arabic\c@subparagraph +} +\newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip} +\renewcommand*{\@seccntformat}[1]{% + \expandafter\ifnum\scr@v@is@lt{3.17}\relax + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + \else + \scr@ifundefinedorrelax{#1format}{% + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + }{\expandafter\protect\csname #1format\endcsname}% + \fi +} +\newcommand*\addsecmark[1]{% + \begingroup + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \sectionmark{#1}% + \endgroup +} +\newkomafont{sectionentry}{\usekomafont{disposition}} +\newkomafont{sectionentrypagenumber}{} +\newkomafont{sectionentrydots}{} +\DeclareSectionCommand[% + style=section,% + level=1,% + indent=\z@,% + beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,% + afterskip=2.3ex \@plus.2ex,% + tocstyle=section,% + tocindent=0pt,% + tocnumwidth=1.5em% +]{section} +\DeclareSectionCommand[% + style=part,% + level=\z@,% + tocstyle=part,% + toclevel=\m@ne,% + tocindent=\z@,% + tocnumwidth=2em% +]{part} +\DeclareSectionCommand[% + style=section,% + level=2,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=subsection,% + tocindent=1.5em,% + tocnumwidth=2.3em% +]{subsection} +\DeclareSectionCommand[% + style=section,% + level=3,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=subsection,% + tocindent=3.8em,% + tocnumwidth=3.2em% +]{subsubsection} +\DeclareSectionCommand[% + style=section,% + level=4,% + indent=\z@,% + beforeskip=3.25ex \@plus1ex \@minus.2ex,% + afterskip=-1em,% + tocstyle=subsection,% + tocindentfollows=subsubsection,% + tocindent=7.0em,% + tocnumwidth=4.1em% +]{paragraph} +\DeclareSectionCommand[% + style=section,% + level=5,% + indent=\scr@parindent,% + beforeskip=3.25ex \@plus1ex \@minus .2ex,% + afterskip=-1em,% + tocstyle=subsection,% + tocindent=10em,% + tocnumwidth=5em% +]{subparagraph} +\expandafter\ifnum\scr@v@is@lt{3.15}\relax + \let\scr@subparagraph@sectionindent\parindent +\else + \def\scr@subparagraph@sectionindent{\scr@parindent}% +\fi +\newcommand*{\scr@fnt@disposition}{\sectfont} +\aliaskomafont{sectioning}{disposition} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newif\if@restonecol +\newcommand{\dictum}[2][]{\par% + \begingroup + \raggeddictum\parbox{\dictumwidth}{% + {\@dictumfont{\raggeddictumtext #2\strut\par}% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + {\raggeddictumtext\dictumrule}% + \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}% + \strut\par% + \fi% + }% + }\par% + \endgroup +} +\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}% +\newcommand*{\dictumwidth}{.3333\textwidth} +\newcommand*{\raggeddictum}{\raggedleft} +\newcommand*{\dictumauthorformat}[1]{(#1)} +\newcommand*{\raggeddictumtext}{\raggedright} +\newcommand*{\raggeddictumauthor}{\raggedleft} +\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small} +\newkomafont{dictumauthor}{\itshape} +\aliaskomafont{dictumtext}{dictum} +\setlength{\skip\@mpfootins}{\skip\footins} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\newcommand*{\new@tpo@label}{\@newl@bel{tpo}} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\new@tpo@label[2]{}% + }% + \fi +} +\newcommand*{\scr@tpo}{0} +\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{% + \@bsphack + \begingroup + \@tempcnta=\scr@tpo + \advance\@tempcnta by\@ne + \xdef\scr@tpo{\the\@tempcnta}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax + \protect\G@refundefinedtrue + \ClassWarning{\KOMAClassName}{% + odd/even page label number \scr@tpo\space undefined}% + \edef\@tempa{\the\value{page}}% + \else + \edef\@tempa{\csname tpo@\scr@tpo\endcsname}% + \fi + \ifodd\number\@tempa + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup + \edef\is@thispageodd@setlabel{% + \if@filesw + \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{% + \noexpand\string + \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}% + \fi + \noexpand\def\noexpand\is@thispageodd@setlabel + {\unexpanded\expandafter{\is@thispageodd@setlabel}}% + }% + #1% + \@esphack +} +\newcommand*{\is@thispageodd@setlabel}{} +\newif\ifthispagewasodd +\providecommand*{\ifthispageodd}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command + `\string\ifthispageodd'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'% + }% + \Ifthispageodd +} +\newcommand{\Ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand\marginline[1]{% + \marginpar[\raggedleft{#1}]{\raggedright #1}% +} +\scr@ifundefinedorrelax{textsubscript}{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% +}{% + \scr@ifundefinedorrelax{textsubscript }{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% + }{}% +} +\providecommand*{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% +} +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +\newcommand*{\scr@package@not@recommended}[2]{% + \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}% + \reserved@a + \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi + }{% + \BeforePackage{#1}{% + \ClassWarning{\KOMAClassName}{% + Usage of package `#1' together\MessageBreak + with a KOMA-Script class is not recommended.\MessageBreak + \if\relax\detokenize{#2}\relax\else + I'd suggest to use #2.\MessageBreak + \fi + Nevertheless, using requested\MessageBreak + package `#1'% + }% + }% + }% +}% +\scr@package@not@recommended{emptypage}{% + option\MessageBreak + `cleardoublepage' with one of it's\MessageBreak + several values} +\scr@package@not@recommended{fancyhdr}{% + \MessageBreak + package `scrlayer' or `scrlayer-scrpage', because\MessageBreak + they support KOMA-Script classes.\MessageBreak + With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak + like options `headsepline', `footsepline' or command\MessageBreak + `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak + `\string\addtokomafont' for the page style elements need\MessageBreak + explicite user intervention to work} +\scr@package@not@recommended{minitoc}{} +\scr@package@not@recommended{multitoc}{% + package `multicol' and, e.g.:\MessageBreak + \space\space + \string\BeforeStartingTOC{\string\begin{multicols}{2}}\MessageBreak + \space\space + \string\AfterStartingTOC{\string\end{multicols}}\MessageBreak + to make all ToCs two-columned.\MessageBreak + \@ifpackagelater{2018/07/18}{}{% + Note, package `multitoc' breaks additional\MessageBreak + ToCs generated by `\string\DeclareNewTOC' or\MessageBreak + packages like `listings' or `newcaption' and\MessageBreak + even the standard table of contents,\MessageBreak + list of figures or list of tables,\MessageBreak + if you omit the corresponding options `toc',\MessageBreak + `lof' or `lot'.% + }% +} +\scr@package@not@recommended{parskip}{% + option\MessageBreak + `parskip' with one of it's several values} +\scr@package@not@recommended{titleps}{% + package `scrlayer-scrpage'} +\scr@package@not@recommended{titlesec}{% + KOMA-Script features\MessageBreak + like \string\setkomafont, \string\RedeclareSectionCommand, + \string\sectionlinesformat\MessageBreak + and several others to re-configure section\MessageBreak + headings} +\AfterPackage*{sectsty}{% + \@ifpackagelater{sectsty}{2002/02/26}{% + \ClassInfo{\KOMAClassName}{Unknown `sectsty' release.\MessageBreak + Cross your fingers, that is compatible% + }% + }{% + \ClassWarning{\KOMAClassName}{% + Incompatible package `sectsty' loaded!\MessageBreak + Package `sectsty' up to version 2.0.2 is incompatible\MessageBreak + with KOMA-Script from version 2.8e released in 2001.\MessageBreak + You should avoid that package and configure the\MessageBreak + section titles of your document using the KOMA-Script\MessageBreak + user interface, e.g., \string\chapterlinesformat,\MessageBreak + \string\RedeclareSectionCommand\space etc. or you should ask\MessageBreak + the `sectsty' maintainer for a more compatible release.\MessageBreak + Ignoring this warning could result in several error\MessageBreak + messages and formatting issues after loading package\MessageBreak + `sectsty'% + }% + }% +} +\scr@package@not@recommended{tocbibind}{% + options like `listof=totoc'\MessageBreak + or `bibliography=totoc', or commands like\MessageBreak + `\string\setuptoc{toc}{totoc}' instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables, bibliography,\MessageBreak + index and the running head% +} +\scr@package@not@recommended{tocloft}{% + options like `listof=entryprefix',\MessageBreak + commands like `\string\listoflofentryname' or\MessageBreak + `\string\listoflotentryname', + and `\string\DeclareTOCStyleEntry' or\MessageBreak + `\string\RedeclareSectionCommand' + instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables and table of\MessageBreak + contents, i.e., options like `listof=numbered',\MessageBreak + `listof=flat or `toc=flat', commands like\MessageBreak + `\string\BeforeTOCHead{...}' and + `\string\AfterTOCHead{...}',\MessageBreak + `\string\BeforeStartingTOC{...}' and + \string\AfterStartingTOC{...}',\MessageBreak + all features of `\string\DeclareTOCStyleEntry',\MessageBreak + and the ToC entry features of `\string\DeclareSecionCommand'\MessageBreak + and `\string\RedeclareSectionCommand' of levels\MessageBreak + `part', + `chapter', + `section', `subsection',\MessageBreak + `subsubsection', `paragraph' and `subparagraph'% +} +\BeforePackage{minitoc}{% + \let\scr@mt@saved@sect\@sect +} +\AfterPackage{minitoc}{% + \def\@tempa#1#2#3#4#5#6[#7]#8{% + \ifnum #2<1 \relax + \addtocontents{toc}{\protect\sectbegin} + \fi + \stc@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}% + }% + \ifx\@sect\@tempa + \def\@tempa#1#2#3#4#5#6[#7]#8{ + \expandafter + \ifx\csname #1\endcsname\section\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifx\csname #1\endcsname\starsection\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifnum #2>\c@secnumdepth\relax + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \edef\@svsec{\csname the#1\endcsname\hskip 1em}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}% + {\interlinepenalty \@M #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7% + }% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname} + \fi + #7}% + }% + \fi + \@xsect{#5}% + }% + \ifx\stc@sect\@tempa + \ClassWarning{\KOMAClassName}{% + Redefining minitoc's internal command + `\string\stc@sect'\MessageBreak + to prevent minitoc to destroy several features\MessageBreak + of KOMA-Script% + }% + \let\stc@sect\scr@mt@saved@sect + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\stc@sect'% + }% + \let\scr@mt@saved@sect\relax + \fi + \else + \ifx\@sect\scr@mt@saved@sect + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround for + `\string\@sect',\MessageBreak + because it is not needed% + }% + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\@sect'% + }% + \fi + \let\scr@mt@saved@sect\relax + \fi +} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\set@tempdima@hw}{% + \setlength{\@tempdima}{\textwidth}% + \if@mincl + \addtolength{\@tempdima}{\marginparsep}% + \addtolength{\@tempdima}{\marginparwidth}% + \fi +} +\newcommand*{\pnumfont}{\normalfont\normalcolor} +\newcommand*{\headfont}{\normalfont\normalcolor\slshape} +\newcommand*{\footfont}{} +\newcommand*{\scr@fnt@pagenumber}{\pnumfont} +\aliaskomafont{pagination}{pagenumber} +\newcommand*{\scr@fnt@pageheadfoot}{\headfont} +\aliaskomafont{pagehead}{pageheadfoot} +\newcommand*{\scr@fnt@pagefoot}{\footfont} +\newcommand*{\scr@fnt@wrn@pagefoot}[1]{% + This class does not use font element `pagefoot'!\MessageBreak + Maybe you should load package `scrlayer-scrpage',\MessageBreak + before using this element% +} +\newcommand*{% + \pagemark +}{% + {\usekomafont{pagenumber}{% + \thepage}}} +\renewcommand*{\ps@plain}{% + \renewcommand*{\@oddhead}{}% + \let\@evenhead\@oddhead + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% +}% +\newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\sectionmark}[1]{% + \if@twoside\expandafter\markboth\else\expandafter\markright\fi + {\MakeMarkcase{\Ifnumbered{section}{\sectionmarkformat}{}##1}}{}}% + \renewcommand*{\subsectionmark}[1]{% + \if@twoside + \markright{% + \MakeMarkcase{\Ifnumbered{subsection}{\subsectionmarkformat}{}##1}% + }% + \fi + }% +}% +\newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\subsectionmark}[1]{}% + \renewcommand*{\sectionmark}[1]{}% +} +\newcommand*{\titlepagestyle}{plain} +\newcommand*{\indexpagestyle}{plain} +\pagestyle{plain} +\pagenumbering{arabic} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\providecommand*{\@mkleft}{% + \IfActiveMkBoth{\markleft}{\@gobble}% +}% +\providecommand*{\@mkright}{% + \IfActiveMkBoth{\markright}{\@gobble}% +}% +\providecommand{\@mkdouble}[1]{% + \@mkboth{#1}{#1}% +} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newlength{\abovecaptionskip} +\newlength{\belowcaptionskip} +\setlength{\abovecaptionskip}{10\p@} +\setlength{\belowcaptionskip}{0\p@} +\newcommand*{\captionformat}{:\ } +\newcommand{\scr@caption}{} +\AtBeginDocument{\let\scr@caption\caption} +\newcommand{\captionabove}{\@captionabovetrue\scr@caption} +\newcommand{\captionbelow}{\@captionabovefalse\scr@caption} +\newcommand*{\scap@caption}{} +\newcommand*{\scap@width}{\linewidth} +\newcommand*{\scap@move}{\z@} +\newif\ifscap@alt +\newcommand*{\scap@currentlabel}{} +\newcommand*{\@captionbeside}{} +\long\def\@captionbeside[#1]#2{% + \kernel@ifnextchar [%] + {\@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@captionbeside}{} +\long\def\@@captionbeside[#1]#2[#3]{% + \def\scap@pos{#3}% + \kernel@ifnextchar [%] + {\@@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@captionbeside}{} +\long\def\@@@captionbeside[#1]#2[#3]{% + \def\scap@width{#3}% + \kernel@ifnextchar [%] + {\@@@@captionbeside[{#1}]{#2}} + {\setlength{\@tempdima}{#3}% + \addtolength{\@tempdima}{-\linewidth}% + \setlength{\@tempdima}{-.5\@tempdima}% + \edef\scap@move{\the\@tempdima}% + \c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@@captionbeside}{} +\long\def\@@@@captionbeside[#1]#2[#3]{% + \def\scap@move{#3}% + \kernel@ifstar + {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}} + {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}% +} +\newbox\c@pti@nb@sid@b@x +\newcommand{\c@pti@nb@sid@}{} +\long\def\c@pti@nb@sid@[#1]#2{% + \def\scap@caption{% + \if c\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \else \if t\scap@valign + \setlength{\abovecaptionskip}{-\ht\strutbox}% + \else \if b\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \fi + \fi + \fi + \setlength{\belowcaptionskip}{-\dp\strutbox}% + \captionbelow[{#1}]{#2}% + }% + \begin{lrbox}{\c@pti@nb@sid@b@x}% +} +\newenvironment*{captionbeside}{% + \@dblarg\@captionbeside +}{% + \end{lrbox}% + \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}% + \setlength{\@tempdimb}{\scap@width}% + \addtolength{\@tempdimb}{-\@tempdima}% + \addtolength{\@tempdimb}{-\columnsep}% + \ifdim \@tempdimb<2em + \ClassWarning{\KOMAClassName}{% + caption beside will be very, very small.\MessageBreak + In most cases this will result in overfull and\MessageBreak + underfull \string\hbox\space messages% + }% + \fi + \onelinecaptionsfalse + \setcapwidth[r]{\@tempdimb}% + \let\@tempa\scap@pos + \setlength{\@tempdimc}{\scap@move}% + \if i\scap@pos\def\@tempa{l}\fi + \if o\scap@pos\def\@tempa{r}\fi + \if@twoside + \Ifthispageodd{}{% + \if o\scap@pos\def\@tempa{l}\fi + \if i\scap@pos\def\@tempa{r}\fi + \ifscap@alt + \addtolength{\@tempdimc}{\scap@width}% + \addtolength{\@tempdimc}{-\linewidth}% + \setlength{\@tempdimc}{-\@tempdimc}% + \fi + }% + \fi + \hspace*{\@tempdimc}% + \if l\@tempa + \rlap{% + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + }% + \else + \rlap{% + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + }% + \fi + \par + \aftergroup\let\aftergroup\@currentlabel + \aftergroup\scap@currentlabel +} +\newcommand*\capfont{\normalfont\normalcolor} +\newcommand*\caplabelfont{\normalfont\normalcolor} +\newcommand*{\scr@fnt@caption}{\capfont} +\newcommand*{\scr@fnt@captionlabel}{\caplabelfont} +\newif\ifdofullc@p +\dofullc@ptrue +\newif\if@capbreak +\@capbreakfalse +\newcommand*{\setcapindent}{\kernel@ifstar{\@@setcapindent}{\@setcapindent}} +\newcommand*{\@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \ifdim\@tempdima>\hsize + \addtolength{\@tempdima}{-\hsize}\@capbreaktrue + \else + \@capbreakfalse + \fi + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse +} +\newcommand*{\@@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse\@capbreaktrue +} +\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse} +\newcommand{\@makecaption}[2]{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + \@@makecaption\@firstofone{#1}{#2}% + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi +} +\newcommand*{\cap@width}{\hsize} +\newcommand*{\cap@left}{\hfill} +\newcommand*{\cap@right}{\hfill} +\newcommand*{\setcapwidth}[2][]{% + \begingroup% + \setlength{\@tempdima}{#2}% + \ifdim\@tempdima <\z@ + \@tempdima\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \fi + \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}% + \@tempa + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\setcapdynwidth}[2][]{% + \def\cap@width{#2}% + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\cap@margin}{} +\let\cap@margin=\relax% +\newcommand*{\setcapmargin}{\kernel@ifstar{\@setcapmargin}{\@@setcapmargin}} +\newcommand*{\@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \noexpand\if@twoside + \noexpand\Ifthispageodd{% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }{% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}% + }% + \noexpand\else + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + \noexpand\fi + }% + \@tempa + }% +} +\newcommand*{\@@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }% + \@tempa + }% +} +\newcommand{\@@makecaption}[3]{% + \cap@margin + \begingroup + \ifonelinecaptions + \def\stepcounter##1{\advance\value{##1}\@ne}% + \let\refstepcounter\stepcounter + \let\label\@gobble + \let\@footnotetext=\@gobble + \let\hypertarget\@gobbletwo + \edef\@xnewline{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xnewline}% + }% + \edef\@xcentercr{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xcentercr}% + }% + \settowidth{\@tempdima}{\scr@@makesinglelinecaption{#1}{#2}{#3}}% + \ifdim\@tempdima>\cap@width + \aftergroup\scr@makemultilinecaption + \else + \aftergroup\scr@makesinglelinecaption + \fi + \else + \aftergroup\scr@makemultilinecaption + \fi + \endgroup + {#1}{#2}{#3}% +} +\newcommand{\scr@makesinglelinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \scr@@makesinglelinecaption{#1}{#2}{#3}% + \cap@right + }\par\kern\dp\strutbox% + }% + }\kern-\dp\strutbox +} +\newcommand{\scr@@makesinglelinecaption}[3]{% + \usekomafont{caption}{\strut\ignorespaces + #1{{\usekomafont{captionlabel}{#2\captionformat}}}% + \ignorespaces #3\unskip}% +} +\newcommand{\scr@makemultilinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \vbox{\hsize\cap@width\linewidth\hsize + \scr@ifundefinedorrelax{@captype}{% + \ClassWarning{\KOMAClassName}{% + `\string\caption' outside float.\MessageBreak + Seems you are using `\string\caption' outside a + float.\MessageBreak + Maybe you are using a package that uses + `\string\@makecaption'\MessageBreak + without setting `\string\@captype' before.\MessageBreak + Because I cannot detect the caption type, I'm using\MessageBreak + the empty one.% + }% + \let\@captype\@empty + }{}% + \scr@ifundefinedorrelax{ragged\@captype caption}{\raggedcaption}{% + \@nameuse{ragged\@captype caption}% + }% + \ifdofullc@p + \@hangfrom{% + \strut + \scr@smashdp{% + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \ifdim\cap@indent<\z@ + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent{\usekomafont{caption}{% + \hspace*{-\cap@indent}#3\scr@endstrut\par + }}% + \else + \if@capbreak + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent\@hangfrom{\hspace*{\cap@indent}}% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}% + {% + \hspace{-\cap@indent}% + \scr@smashdp{% + #1{\usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut}\par}% + }% + \fi + \fi + \fi + }% + \cap@right + }\par\kern\dp\strutbox + }% + }\kern-\dp\strutbox +} +\newcommand*\setcaptionalignment{% + \kernel@ifnextchar [%] + {\@setcaptionalignment} + {% + \scr@ifundefinedorrelax{@captype}{\@setcaptionalignment}{% + \edef\reserved@a{\noexpand\@setcaptionalignment[{\@captype}]}\reserved@a + }% + }% +}% +\newcommand*\@setcaptionalignment[2][]{% + \IfArgIsEmpty{#1}{}{% + \expandafter\ifnum + \scr@ifundefinedorrelax{#1}{0}{\scr@ifundefinedorrelax{end#1}{0}{1}}=0 + \ClassWarning{\KOMAClassName}{% + float type `#1' defined not yet,\MessageBreak + but setting ragged mode for captions of\MessageBreak + float type `#1'% + }% + \fi + }% + \def\reserved@a{#2}% + \Ifstr{\reserved@a}{j}{% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \Ifstr{\reserved@a}{l}{% + \scr@ifundefinedorrelax{LaTeXraggedright}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedright + }% + }{% + \Ifstr{\reserved@a}{r}{% + \scr@ifundefinedorrelax{LaTeXraggedleft}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedleft + }% + }{% + \Ifstr{\reserved@a}{c}{% + \scr@ifundefinedorrelax{LaTeXcentering}{% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXcentering + }% + }{% + \Ifstr{\reserved@a}{J}{% + \scr@ifundefinedorrelax{justifying}{% + \scr@caption@raggede@warning{J}{\justifying}% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \expandafter\let\csname ragged#1caption\endcsname\justifying + }% + }{% + \Ifstr{\reserved@a}{L}{% + \scr@ifundefinedorrelax{RaggedRight}{% + \scr@caption@raggede@warning{L}{\RaggedRight}% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedRight + }% + }{% + \Ifstr{\reserved@a}{R}{% + \scr@ifundefinedorrelax{RaggedLeft}{% + \scr@caption@raggede@warning{R}{\RaggedLeft}% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedLeft + }% + }{% + \Ifstr{\reserved@a}{C}{% + \scr@ifundefinedorrelax{Centering}{% + \scr@caption@raggede@warning{C}{\Centering}% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\Centering + }% + }{% + \Ifstr{\reserved@a}{}{% + \expandafter\let\csname ragged#1caption\endcsname\relax + }{% + \ClassError{\KOMAClassName}{unknown alignment char `#2'}{% + \string\setcaptionalignment\space supports + only:\MessageBreak + \space\space c - centered captions,\MessageBreak + \space\space j - justified captions,\MessageBreak + \space\space l - left align captions,\MessageBreak + \space\space r - right aligned captions,\MessageBreak + \space\space C - centered captions with + `ragged2e',\MessageBreak + \space\space J - justified captions with + `ragged2e',\MessageBreak + \space\space L - left align captions with + `ragged2e',\MessageBreak + \space\space R - right aligned captions with + `ragged2e',\MessageBreak + or an empty argument to remove special + alignment.\MessageBreak + If you'd continue, I'd not change the alignment.% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +\newcommand*{\scr@caption@raggede@warning}[2]{% + \begingroup + \lowercase{\def\reserved@a{#1}}% + \ClassWarning{\KOMAClassName}{% + `\string#2' undefined!\MessageBreak + To avoid replacing caption alignment `#1' by `\reserved@a'\MessageBreak + you should load package `ragged2e' before using\MessageBreak + `\string\setcaptionalignment'% + }% + \endgroup +} +\newcommand*\raggedcaption{} +\newcommand*{\scr@caption@before@longtable@warning}[1]{% + \ClassWarning{\KOMAClassName}{% + you've loaded package `#1' before package\MessageBreak + `longtable'!\MessageBreak + Because of this package `#1' isn't able to\MessageBreak + control `\string\caption' at longtables. \space After loading + \MessageBreak + package `#1' KOMA-Script also doesn't control\MessageBreak + `\string\caption'.\MessageBreak + I think, you should load package `caption' after\MessageBreak + package `longtable'% + }% +} +\AfterPackage{longtable}{% + \if@komalongtable + \renewcommand{\LT@makecaption}[3]{% + \noalign{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + }% + \LT@mcol\LT@cols c{% + \hbox to\z@{\hss\parbox[t]\linewidth{% + \def\@captype{table}% + \@@makecaption{#1}{#2}{#3}% + \endgraf + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi + }% + \hss + }% + }% + }% + \newcommand*{\scr@LT@array}{}% + \let\scr@LT@array=\LT@array + \renewcommand*{\LT@array}{% + \let\scr@caption=\LT@caption + \def\captionabove{\noalign{\global\@captionabovetrue}% + \scr@caption}% + \def\captionbelow{\noalign{\global\@captionabovefalse}% + \scr@caption}% + \if@tablecaptionabove + \let\LT@caption=\captionabove + \else + \let\LT@caption=\captionbelow + \fi + \scr@LT@array + }% + \ClassInfo{\KOMAClassName}{% + longtable captions redefined% + }% + \fi +} +\newcommand*{\fs@komaabove}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iftrue} +\newcommand*{\fs@komabelow}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iffalse} +\newcommand{\floatc@komascript}{\@@makecaption\@firstofone} +\setcounter{topnumber}{2} +\renewcommand*\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand*\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand*\textfraction{.2} +\renewcommand*\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand*\dbltopfraction{.7} +\renewcommand*\dblfloatpagefraction{.5} +\newcommand*{\captionof}[1]{\def\@captype{#1}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@#1captionabove\endcsname\iftrue + \@captionabovetrue + \fi + \scr@caption} +\newcommand*{\captionaboveof}{\@captionabovetrue\captionof} +\newcommand*{\captionbelowof}{\@captionabovefalse\captionof} +\BeforePackage{capt-of}{\let\captionof\relax} +\newenvironment{captionofbeside}[1]{% + \def\@captype{#1}% + \captionbeside +}{% + \endcaptionbeside +} +\newcommand*\figurename{Figure} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\figurename{Figure} +\newcommand*\tablename{Table} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\tablename{Table} +\DeclareNewTOC[% + type=figure, + float, + nonfloat, + floatpos=tbp, + floattype=1, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@figurecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lof} +\expandafter\ifnum\scr@v@is@lt{3.35}% + \renewcommand*\thefigure{\@arabic\c@figure} +\fi +\DeclareNewTOC[% + type=table, + float, + nonfloat, + floatpos=tbp, + floattype=2, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@tablecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lot} +\expandafter\ifnum\scr@v@is@lt{3.35}% + \renewcommand*\thetable{\@arabic\c@table} +\fi +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\renewcommand*\footnoterule{% + \normalsize\ftn@rule@test@values + \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax + \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi + {\usekomafont{footnoterule}{% + \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}% + \kern 2.6\p@} +\newcommand*{\ftn@rule@test@values}{% + \ifdim\ftn@rule@height <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + less than 0% + }% + \else + \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + greater than \the\dimexpr\skip\footins -2.6\p@\relax + }% + \fi + \fi + \ifdim\ftn@rule@width <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + less than 0pt% + }% + \else + \ifdim\ftn@rule@width >\columnwidth + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + greater than \string\columnwidth + }% + \fi + \fi +} +\newkomafont{footnoterule}{} +\newcommand*{\ftn@rule@width}{.4\columnwidth} +\newcommand*{\ftn@rule@height}{.4\p@} +\newcommand*{\setfootnoterule}[2][]{% + \IfArgIsEmpty{#1}{}{% + \renewcommand*{\ftn@rule@height}{#1}% + }% + \IfArgIsEmpty{#2}{}{% + \renewcommand*{\ftn@rule@width}{#2}% + }% + \ftn@rule@test@values +} +\newcommand\deffootnote[4][]{% + \expandafter\ifnum\scr@v@is@ge{3.22}\relax + \long\def\@makefntext##1{% + \ExecuteDoHook{footnote/text/begin}% + \raggedfootnote + \leftskip #2 + \l@addto@macro\@trivlist{% + \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi + }% + \parindent #3\noindent + \IfArgIsEmpty{#1}{}{% + \hskip \dimexpr #1-#2\relax + }% + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + \ExecuteDoHook{footnote/text/end}% + }% + \else + \ClassInfo{\KOMAClassName}{% + Using old \string\@makefntext\space due to compatibility + level\MessageBreak + less than 3.22}% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2}% + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1}% + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2}% + \parshape \tw@ #1 \@tempdima #2 \@tempdimb + }% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + }% + \fi + \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% +} +\newcommand*{\raggedfootnote}{} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\aliaskomafont{footnotenumber}{footnotelabel} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\aliaskomafont{footnotetext}{footnote} +\newcommand*\deffootnotemark[1]{% + \def\@makefnmark{\hbox{\ftntm@font{#1}}}% +} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\aliaskomafont{footnoteref}{footnotereference} +\aliaskomafont{footnotemark}{footnotereference} +\newcommand*{\FN@mf@check}{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern\multiplefootnoteseparator + \spacefactor\@x@sf\relax + \fi +} +\newcommand*{\scr@mf@prepare}{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax +} +\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{} +\newcommand{\scr@saved@footnotetext}{} +\let\scr@saved@footnotetext\@footnotetext +\renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname +} +\BeforePackage{footmisc}{% + \ifx\@footnotemark\scr@footnotemark + \let\@footnotemark\scr@saved@footnotemark + \fi + \let\@footnotetext\scr@saved@footnotetext +} +\BeforePackage{setspace}{% + \let\@footnotetext\scr@saved@footnotetext +} +\AfterPackage{setspace}{% + \let\scr@saved@footnotetext\@footnotetext + \renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname + }% +} +\newcommand*{\multiplefootnoteseparator}{% + \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup +} +\newcommand*{\multfootsep}{,} +\newcommand*{\multiplefootnotemarker}{3sp} +\newcommand*{\thefootnotemark}{\@thefnmark} +\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}} +\deffootnotemark{\textsuperscript{\thefootnotemark}} +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: body) +\g@addto@macro{\numberline@numberpostfix}{\autodot} +\usetocbasicnumberline[% + \ClassInfo{\KOMAClassName}{Redefining `\string\numberline'}% +] +\newcommand*{\scr@dottedtocline}{} +\newcommand*{\last@l@number}{} +\newcommand*{\@l@number}{} +\newcommand*{\set@l@number}[1]{% + \settowidth{\@tempdima}{#1\enskip}% + \ifdim\@tempdima >\@l@number + \xdef\@l@number{\the\@tempdima}% + \fi% + \ifdim\@tempdima >\last@l@number \else + \setlength{\@tempdima}{\last@l@number}% + \fi% +} +\newcommand*{\before@starttoc}[1]{% + \let\scr@dottedtocline=\@dottedtocline + \renewcommand*{\@dottedtocline}[3]{% + \scr@dottedtocline{##1}{\z@}{\last@l@number}}% + \renewcommand*{\numberline@box}[1]{% + \set@l@number{##1}\hb@xt@\@tempdima{##1}}% + \gdef\@l@number{\z@}% + \@ifundefined{#1@l@number}{% + \def\last@l@number{2em}% + }{% + \expandafter\ifx\csname #1@l@number\endcsname\@empty + \let\last@l@number\z@ + \else + \expandafter\let\expandafter\last@l@number + \expandafter=\csname#1@l@number\endcsname + \fi + }% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do##1{% + \scr@ifundefinedorrelax{scr@tso@##1@numwidth}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@numwidth}{\last@l@number}% + }% + }% + \scr@ifundefinedorrelax{scr@tso@##1@indent}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@indent}{\z@}% + }% + }% + }% + \@nameuse{scr@dte@donumwidth}% + \do@endgroup +} +\newcommand*{\after@starttoc}[1]{% + \protected@write\@auxout{}{% + \string\gdef\expandafter\string\csname#1@l@number\endcsname{% + \@l@number}}% +} +\g@addto@macro\tocbasic@@before@hook{% + \if@dynlist\expandafter\before@starttoc\expandafter{\@currext}\fi +} +\g@addto@macro\tocbasic@@after@hook{% + \if@dynlist\expandafter\after@starttoc\expandafter{\@currext}\fi +} +\newcommand*\contentsname{Contents} +\newcommand*\listoftocname{\contentsname} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\contentsname{Contents}% +\setcounter{tocdepth}{3} +\newcommand*\toc@heading{% + \ClassWarning{\KOMAClassName}{% + usage of deprecated \string\toc@heading!\MessageBreak + You should use the features of package `tocbasic'\MessageBreak + instead of \string\toc@heading.\MessageBreak + Definition of \string\toc@heading\space may be removed from\MessageBreak + KOMA-Script soon, so it should not be used% + }% + \section*{\contentsname}% + \@mkboth{\MakeMarkcase{\contentsname}}{\MakeMarkcase{\contentsname}}% +} +\newcommand*{\toc@l@number}{} +\newcommand*{\tableofcontents}{% + \begingroup + \let\if@dynlist\if@tocleft + \expandafter\listoftoc\expandafter{\ext@toc}% + \endgroup +} +\newcommand{\addtocentrydefault}[3]{% + \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}% +} +\newcommand*{\float@listhead}[1]{% + \scr@float@listhead@warning + \float@@listhead{#1}% + \@mkboth{\MakeMarkcase{#1}}{\MakeMarkcase{#1}}% + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}% + }% + \fi +} +\newcommand*{\scr@float@listhead@warning}{% + \ClassWarning{\KOMAClassName}{% + \string\float@listhead\space detected!\MessageBreak + Implementation of \string\float@listhead\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Maybe implementation of \string\float@listhead\space will\MessageBreak + be removed from KOMA-Script soon.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@listhead\space interface% + }% +} +\newcommand*{\scr@float@addtolists@warning}{% + \ClassWarningNoLine{\KOMAClassName}{% + \string\float@addtolists\space detected!\MessageBreak + Implementation of \string\float@addtolist\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Since Version 3.12 support for deprecated\MessageBreak + \string\float@addtolist\space interface has been\MessageBreak + restricted to only some of the KOMA-Script\MessageBreak + features and been removed from others.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@addtolist\space interface% + }% + \global\let\scr@float@addtolists@warning\relax +} +\renewcommand*\listfigurename{List of Figures} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listfigurename{List of Figures} +\renewcommand*\listoflofname{\listfigurename} +\renewcommand*\listoflofentryname{\figurename} +\renewcommand*\listtablename{List of Tables} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listtablename{List of Tables} +\renewcommand*\listoflotname{\listtablename} +\renewcommand*\listoflotentryname{\tablename} +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\refname{References} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\refname{References} +\newcommand*{\bibpreamble}{\relax} +\let\bibpreamble\relax +\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}} +\newdimen\bibindent +\bibindent=1.5em +\newenvironment{thebibliography}[1]{% + \if@bib@break@ + \bib@beginhook + \else + \bib@heading + \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else + \noindent\bibpreamble\par\nobreak + \fi\fi + \bib@beginhook + \bib@before@hook + \fi + \renewcommand{\BreakBibliography}[1]{% + \@bib@break + \end{thebibliography}% + \begingroup ##1\endgroup + \begin{thebibliography}{#1} + }% + \list{% + \@biblabel{\@arabic\c@enumiv}% + }{% + \settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \if@bib@break@ + \edef\@tempa{% + \noexpand\usecounter{enumiv}% + \noexpand\setcounter{enumiv}{\the\c@enumiv}% + }\@tempa + \no@bib@break + \else + \usecounter{enumiv}% + \fi + \let\p@enumiv\@empty + \renewcommand*\theenumiv{\@arabic\c@enumiv}% + }% + \sloppy\clubpenalty4000 \widowpenalty4000 + \sfcode`\.=\@m +}{% + \if@bib@break@ + \def\@noitemerr{% + \@latex@warning{% + \string\BreakBibliography\space at begin of `thebibliography' + environment\MessageBreak + or following \string\BreakBibliography}% + }% + \else + \def\@noitemerr{% + \@latex@warning{% + Empty `thebibliography' environment or + \string\BreakBibliography\MessageBreak + before end of `thebibliography' environment}% + }% + \fi + \endlist + \if@bib@break@ + \else + \bib@after@hook + \let\bib@before@hook\@empty + \let\bib@after@hook\@empty + \fi + \bib@endhook +} +\newif\if@bib@break@ +\newcommand{\no@bib@break}{\global\let\if@bib@break@\iffalse} +\newcommand*{\@bib@break}{\global\let\if@bib@break@\iftrue} +\newcommand*{\bib@before@hook}{} +\newcommand*{\bib@after@hook}{} +\newcommand{\BreakBibliography}[1]{% + \ClassWarning{\KOMAClassName}{% + You've used \string\BreakBibliography\space either outside of\MessageBreak + the bibliography or `thebibliography' was redefined\MessageBreak + incompatible, e.g., using a bibliography package.\MessageBreak + \string\BreakBibliography\space ignored% + }% +} +\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook} +\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\index@preamble}{} +\let\index@preamble=\relax +\newcommand{\setindexpreamble}[1]{\def\index@preamble{#1}} +\newcommand*{\idx@heading}{% + \twocolumn[% + \idx@@heading{\indexname}]% + \ifidx@leveldown + \begingroup + \c@secnumdepth=-\maxdimen + \subsectionmark{\indexname}% + \endgroup + \else + \@mkdouble{\MakeMarkcase{\indexname}}% + \fi +} +\newenvironment{theindex}{% + \if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \idx@heading + \index@preamble\par\nobreak + \ifx\indexpagestyle\@empty\else\thispagestyle{\indexpagestyle}\fi + \parindent\z@ + \setlength{\parskip}{\z@ \@plus .3\p@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \let\item\@idxitem +}{% + \if@restonecol\onecolumn\else\clearpage\fi +} +\newcommand*\@idxitem{\par\hangindent 40\p@} +\newcommand*\subitem{\@idxitem \hspace*{20\p@}} +\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand*\indexspace{% + \par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax +} +\newcommand*\indexname{Index} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\indexname{Index} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\if@twocolumn + \setlength{\leftmargini}{2em} +\else + \setlength{\leftmargini}{2.5em} +\fi +\setlength{\leftmarginii}{2.2em} +\setlength{\leftmarginiii}{1.87em} +\setlength{\leftmarginiv}{1.7em} +\if@twocolumn + \setlength{\leftmarginv}{.5em} + \setlength{\leftmarginvi}{.5em} +\else + \setlength{\leftmarginv}{1em} + \setlength{\leftmarginvi}{1em} +\fi +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelsep}{.5em} +\setlength{\labelwidth}{\leftmargini} +\addtolength{\labelwidth}{-\labelsep} +\@beginparpenalty=-\@lowpenalty +\@endparpenalty =-\@lowpenalty +\@itempenalty =-\@lowpenalty +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\p@enumii(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\usekomafont{labelitemi}{\textbullet}} +\newcommand*\labelitemii{\usekomafont{labelitemii}{\textendash}} +\newcommand*\labelitemiii{\usekomafont{labelitemiii}{\textasteriskcentered}} +\newcommand*\labelitemiv{\usekomafont{labelitemiv}{\textperiodcentered}} +\newenvironment{description}{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}% +}{% + \endlist +} +\newcommand*{\descriptionlabel}[1]{% + \hspace{\labelsep}\usekomafont{descriptionlabel}{#1}% +} +\newenvironment{labeling}[2][]{% + \def\sc@septext{#1}% + \list{}{\settowidth{\labelwidth}{{% + \usekomafont{labelinglabel}{#2% + \usekomafont{labelingseparator}{\sc@septext}}% + }}% + \leftmargin\labelwidth \advance\leftmargin by \labelsep + \let\makelabel\labelinglabel + }% +}{% + \endlist +} +\newcommand\labelinglabel[1]{% + \usekomafont{labelinglabel}{#1\hfil + \usekomafont{labelingseparator}{\sc@septext}}% +} +\newenvironment{verse}{% + \let\\=\@centercr + \list{}{\itemsep=\z@ + \itemindent=-1.5em + \listparindent=\itemindent + \rightmargin=\leftmargin + \advance\leftmargin by1.5em + }% + \item\relax +}{% + \endlist +} +\newenvironment{quotation}{% + \list{}{\listparindent 1em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@ + }% + \item\relax +}{% + \endlist +} +\newenvironment{quote}{% + \list{}{\rightmargin\leftmargin}% + \item\relax +}{% + \endlist +} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin +}{% + \advance\@listdepth\@ne + \endlist +} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi + \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi + \@addmargin +}{% + \if@twoside + \unskip\nobreak\Ifthispageodd{}{}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else + \ClassWarning{\KOMAClassName}{% + page break inside `addmargin*' environment.\MessageBreak + A `addmargin*' environment starting on page + \scr@addmargin@startpage\MessageBreak + ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak + This will result in potential wrong margins on\MessageBreak + every other page.\MessageBreak + So maybe you should change the `addmargin*'\MessageBreak + environment, that ends% + }% + \fi + \fi + \advance\@listdepth\@ne + \endlist +} +\newcommand*{\@addmargin}[2][\@tempa]{% + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\@tempskipa}{\topsep}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\@tempskipb}{\partopsep}% + \setlength{\partopsep}{\z@}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@}% + \advance\@listdepth\m@ne + }% + \expandafter\ifnum\scr@v@is@ge{3.22}% + \setlength{\topsep}{\@tempskipa}% + \setlength{\partopsep}{\@tempskipb}% + \fi + \item\is@thispageodd@setlabel\nobreak\ignorespaces +} +\newcommand*\descfont{\@gr@gsffamily\bfseries} +\newcommand*{\scr@fnt@descriptionlabel}{\descfont} +\newcommand*{\labelitemfont}{\normalfont} +\newcommand*\scr@fnt@itemizelabel{\labelitemfont} +\newkomafont{labelitemi}{\usekomafont{itemizelabel}} +\newkomafont{labelitemii}{\usekomafont{itemizelabel}\bfseries} +\newkomafont{labelitemiii}{\usekomafont{itemizelabel}} +\newkomafont{labelitemiv}{\usekomafont{itemizelabel}} +\newkomafont{labelinglabel}{} +\newkomafont{labelingseparator}{} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrartcl.cls'. diff --git a/texmf/tex/latex/koma-script/scrarticle.cls b/texmf/tex/latex/koma-script/scrarticle.cls new file mode 100644 index 000000000..8cf97f073 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrarticle.cls @@ -0,0 +1,88 @@ +%% +%% This is file `scrarticle.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,article,long') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrartcl% +} +\newcommand*{\ClassName}{% + article% +} +\newcommand*{\KOMALongClassName}{} +\edef\KOMALongClassName{scr\ClassName} +\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension} +\edef\KOMALongClassFileName{\KOMALongClassFileName} +\ProvidesClass{\KOMALongClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +\let\ClassName\relax +\expandafter\let\expandafter\KOMAClassName\expandafter\relax +\expandafter\LoadClassWithOptions\expandafter{\KOMAClassName} +\endinput +%% +%% End of file `scrarticle.cls'. diff --git a/texmf/tex/latex/koma-script/scrbase.sty b/texmf/tex/latex/koma-script/scrbase.sty new file mode 100644 index 000000000..fec4206e6 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrbase.sty @@ -0,0 +1,2997 @@ +%% +%% This is file `scrbase.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,scrbase') +%% scrkernel-basics.dtx (with options: `package,prepare,base') +%% scrkernel-basics.dtx (with options: `package,option,base') +%% scrkernel-language.dtx (with options: `package,option,base') +%% scrkernel-basics.dtx (with options: `package,body,base') +%% scrkernel-language.dtx (with options: `package,body,base') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: prepare) +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{% + scrbase% +}[% + 2022/07/04 v3.37 KOMA-Script + package + (% + KOMA-Script-independent + basics and keyval usage)] +\begingroup + \def\reserved@b{}% + \def\reserved@a#1{% + \PackageError{scrbase}{seems you are not running e-TeX#1}{% + Since 2004 the LaTeX team recommends to use e-TeX.\MessageBreak + KOMA-Script since version 2.95 uses several e-TeX features.\MessageBreak + At actual systems `latex' should already use e-TeX.\MessageBreak + At deprecated systems it may be called `elatex'.\MessageBreak + Use either unsupported KOMA-Script up to version 2.9u or\MessageBreak + ask you administrator for LaTeX using e-TeX#1.\MessageBreak + Not using e-TeX#1 is a fatal error!\MessageBreak + Processing cannot be continued!}% + \endgroup + \batchmode \errmessage{}\csname @@end\endcsname\end\relax + \csname endinput\endcsname + }% + \expandafter\ifx\csname eTeXversion\endcsname\relax\else + \ifnum\eTeXversion <2 + \def\reserved@b{ V 2}% + \else + \let\reserved@a\endgroup + \fi + \fi +\expandafter\reserved@a\expandafter{\reserved@b} +\RequirePackage{scrlfile} +\RequirePackage{keyval} +\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}} +\newcommand{\rloop}[1]{} +\long\def\rloop#1\repeat{% + \ifdefined\iterate + \edef\iterate{\unexpanded{#1\relax\expandafter\iterate\fi\def\iterate}% + {\unexpanded\expandafter{\iterate}}}% + \else + \def\iterate{#1\relax\expandafter\iterate\fi\let\iterate\relax}% + \fi + \iterate +} +\newcommand*{\IfLTXAtLeastTF}{\@ifl@t@r\fmtversion} +\ifcsname IfFormatAtLeastTF\endcsname + \let\IfLTXAtLeastTF\IfFormatAtLeastTF +\fi +\@onlypreamble\IfLTXAtLeastTF +\newcommand{\scr@ifundefinedorrelax}[1]{% + \ifcsname #1\endcsname + \expandafter\ifx\csname #1\endcsname\relax + \expandafter\expandafter\expandafter\@firstoftwo + \else + \expandafter\expandafter\expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi +} +\newcommand*{\DefineFamily}[1]{% + \scr@ifundefinedorrelax{#1@key@familylist}{% + \@namedef{#1@key@familylist}{}% + }{}% +} +\newcommand*{\scr@if@family}[2]{% + \scr@ifundefinedorrelax{#1@key@familylist}{% + \PackageError{scrbase}{% + unknown family `#1'% + }{% + You've tried to #2 for family `#1'.\MessageBreak + This my be done only for previous defined families.\MessageBreak + You should call `\string\DefineFamily{#1}' first.% + }% + }% +} +\newcommand*{\DefineFamilyMember}[2][.\@currname.\@currext]{% + \scr@if@family{#2}{define a family member}{% + \edef\reserved@a{% + \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% + \reserved@a + \ifin@\else + \expandafter\edef\csname #2@key@familylist\endcsname{% + \@nameuse{#2@key@familylist}#2#1,}% + \fi + }% +} +\newcommand*{\scr@if@familymember}[3]{% + \scr@if@family{#2}{#3}{% + \IfArgIsEmpty{#1}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% + \reserved@a + \ifin@ + \expandafter\@firstofone + \else + \PackageError{scrbase}{% + unknown member `#1' at family `#2'% + }{% + You've tried to #3 for member `#1' of family `#2'.\MessageBreak + This my be done only for previous defined family members.\MessageBreak + You should call `\string\DefineFamilyMember[{#1}]{#2}' first.% + }% + \expandafter\@gobble + \fi + }% + }% +} +\newcommand*{\DefineFamilyKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar[%] + {% + \edef\reserved@a{#1}% + \expandafter\scr@define@family@key + \expandafter{\reserved@a}{#2}{#3}% + }{% + \edef\reserved@a{#1}% + \expandafter\scr@define@family@key@nodefault + \expandafter{\reserved@a}{#2}{#3}% + }% +} +\newcommand{\scr@define@family@key}{} +\long\def\scr@define@family@key#1#2#3[#4]#5{% + \scr@if@familymember{#1}{#2}{define a key}{% + \define@key{#2#1}{#3}[{#4}]{% + \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}% + \FamilyKeyStateUnknown + #5% + \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}% + }% + }% +} +\newcommand{\scr@define@family@key@nodefault}[4]{% + \scr@if@familymember{#1}{#2}{define a key}{% + \define@key{#2#1}{#3}{% + \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}% + \FamilyKeyStateUnknown + #4% + \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}% + }% + \@namedef{KV@#2#1@#3@default}{% + \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}% + \FamilyKeyStateNeedValue + }% + }% +} +\newcommand*{\RelaxFamilyKey}[3][.\@currname.\@currext]{% + \scr@ifundefinedorrelax{KV@#2#1@#3}{}{% + \expandafter\let\csname KV@#2#1@#3\endcsname\relax + }% + \scr@ifundefinedorrelax{KV@#2#1@#3@default}{}{% + \expandafter\let\csname KV@#2#1@#3@default\endcsname\relax + }% +} +\newcommand*{\FamilyKeyState}{} +\newcommand*{\FamilyKeyStateUnknown}{% + \let\FamilyKeyState\FamilyKeyStateUnknown +} +\newcommand*{\FamilyKeyStateUnknownValue}{% + \let\FamilyKeyState\FamilyKeyStateUnknownValue +} +\newcommand*{\FamilyKeyStateNeedValue}{% + \let\FamilyKeyState\FamilyKeyStateNeedValue +} +\newcommand*{\FamilyKeyStateProcessed}{% + \let\FamilyKeyState\FamilyKeyStateProcessed +} +\let\FamilyKeyState\FamilyKeyStateUnknown +\newcommand*{\FamilyOfKey}{} +\newcommand*{\FamilyMemberOfKey}{} +\newcommand*{\@globaloptionslist}{} +\IncludeInRelease{2021/05/01}{\FamilyProcessOptions}% + {Usage of raw or classic option list} +\newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{% + \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions + \PackageError{scrbase}{nested \string\FamilyProcessOptions\space + detected\MessageBreak}{% + \string\FamilyProcessOptions\space has been used while processing or + setting options.\MessageBreak + This is currently not allowed. You should contact the author of the + causing\MessageBreak + code.\MessageBreak + This error is fatal. You should not continue.% + }% + \fi + \scr@ifundefinedorrelax{scr@before@process@options@#2@hook}{}{% + \@nameuse{scr@before@process@options@#2@hook}% + }% + \scr@ifundefinedorrelax{scr@before@process@options@#2#1@hook}{}{% + \@nameuse{scr@before@process@options@#2#1@hook}% + \expandafter\let\csname scr@before@process@options@#2#1@hook\endcsname + \relax + }% + \scr@ifundefinedorrelax{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{}% + }% + }{% + \expandafter\edef\csname scr@after@options@#2@hook\endcsname{% + \noexpand\@namedef{scr@after@options@#2@hook}{% + \unexpanded\expandafter\expandafter\expandafter + {\csname scr@after@options@#2@hook\endcsname}% + }% + }% + }% + \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate + \@namedef{scr@after@options@#2@hook@topmost}{% + \@namedef{scr@after@options@#2@hook@topmost}{}% + }% + \expandafter\l@addto@macro\csname scr@after@options@#2@hook\endcsname{% + \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate + \@nameuse{scr@after@options@#2@hook@topmost}% + }% + \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions + \fi + \let\ds@\@empty + \@ifundefined{@raw@opt@\@currname.\@currext}{% + \let\@curroptions\@empty + }{% + \expandafter\let\expandafter\@curroptions + \csname @raw@opt@\@currname.\@currext\endcsname + }% + \ifx\@currext\@clsextension\else + \@ifundefined{@raw@classoptionslist}{}{% + \@for\CurrentOption:=\@raw@classoptionslist\do{% + \scr@trim@spaces\CurrentOption + \ifx\CurrentOption\@empty\else + \@ifundefined{ds@\CurrentOption}{% + \scr@ifprocess@curroption{#1}{#2}{% + \@expandtwoargs\@removeelement{% + \expandafter\@remove@eq@value\CurrentOption=\@nil}% + \@unusedoptionlist\@unusedoptionlist + }{}% + }{% + \@use@ption + \expandafter\let\csname ds@\CurrentOption\endcsname\@empty + }% + \fi + }% + }% + \fi + \@for\reserved@a:=\@curroptions\do{% + \scr@trim@spaces\reserved@a + \def\reserved@b{\CurrentOption}% + \ifx\reserved@a\reserved@b + \PackageError{scrbase}{% + \string\CurrentOption\space loop detected\MessageBreak + Perhaps someone uses:\MessageBreak\space\space + \ifx\@currext\@clsextension + \string\PassOptionsToClass + \else + \string\PassOptionsToPackage + \fi + {\string\CurrentOption}{…}.\MessageBreak + With LaTeX 2020/10/01 or 2021/06/01 this results in + \string\CurrentOption\MessageBreak + in the raw option list and therefore is not allowed.\MessageBreak + Please ask the class or package author to use:\MessageBreak\space\space + \string\expandafter + \ifx\@currext\@clsextension + \string\PassOptionsToClass + \else + \string\PassOptionsToPackage + \fi + \MessageBreak\space\space\space + \string\expandafter{\string\CurrentOption}{…}\MessageBreak + instead or update LaTeX (if possible)% + }% + \let\CurrentOption\@empty + \else + \let\CurrentOption\reserved@a + \fi + \@ifundefined{ds@\CurrentOption}{% + \@use@ption + \scr@ifprocess@curroption{#1}{#2}{}\default@ds + }\@use@ption + }% + \@for\CurrentOption:=\@declaredoptions\do{% + \expandafter\let\csname ds@\CurrentOption\endcsname\relax}% + \let\CurrentOption\@empty + \let\@fileswith@pti@ns\@@fileswith@pti@ns + \AtEndOfPackage{\expandafter\let + \csname unprocessedoptions-\@currname.\@currext\endcsname + \relax}% + \@nameuse{scr@after@options@#2@hook}% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\FamilyProcessOptions}% + {Usage of raw or classic option list} +\newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{% + \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions + \PackageError{scrbase}{nested \string\FamilyProcessOptions\space + detected\MessageBreak}{% + \string\FamilyProcessOptions\space has been used while processing or + setting options.\MessageBreak + This is currently not allowed. You should contact the author of the + causing\MessageBreak + code.\MessageBreak + This error is fatal. You should not continue.% + }% + \fi + \scr@ifundefinedorrelax{scr@before@process@options@#2@hook}{}{% + \@nameuse{scr@before@process@options@#2@hook}% + }% + \scr@ifundefinedorrelax{scr@before@process@options@#2#1@hook}{}{% + \@nameuse{scr@before@process@options@#2#1@hook}% + \expandafter\let\csname scr@before@process@options@#2#1@hook\endcsname + \relax + }% + \scr@ifundefinedorrelax{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{}% + }% + }{% + \expandafter\edef\csname scr@after@options@#2@hook\endcsname{% + \noexpand\@namedef{scr@after@options@#2@hook}{% + \unexpanded\expandafter\expandafter\expandafter + {\csname scr@after@options@#2@hook\endcsname}% + }% + }% + }% + \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate + \@namedef{scr@after@options@#2@hook@topmost}{% + \@namedef{scr@after@options@#2@hook@topmost}{}% + }% + \expandafter\l@addto@macro\csname scr@after@options@#2@hook\endcsname{% + \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate + \@nameuse{scr@after@options@#2@hook@topmost}% + }% + \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions + \fi + \let\ds@\@empty + \edef\@curroptions{\@ptionlist{\@currname.\@currext}}% + \ifx\@currext\@clsextension\else + \let\@globaloptionslist\@classoptionslist + \scr@ifundefinedorrelax{XKV@classoptionslist}{% + }{% + \ifx\XKV@classoptionslist\@empty + \else + \let\@globaloptionslist\XKV@classoptionslist + \fi + }% + \scr@ifundefinedorrelax{@globaloptionslist}{}{% + \@for\CurrentOption:=\@globaloptionslist\do{% + \ifx\CurrentOption\@empty\else + \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}% + \ifin@ + \@use@ption + \expandafter\let\csname ds@\CurrentOption\endcsname\@empty + \else + \scr@ifprocess@curroption{#1}{#2}{% + \@expandtwoargs\@removeelement\CurrentOption + \@unusedoptionlist\@unusedoptionlist + }{}% + \fi + \fi + }% + }% + \fi + \@for\CurrentOption:=\@curroptions\do{% + \edef\reserved@a{\expandafter\detokenize\expandafter{\CurrentOption}}% + \scr@ifundefinedorrelax{ds@\reserved@a}{% + \@expandtwoargs\@removeelement\CurrentOption + \@unusedoptionlist\@unusedoptionlist + \scr@ifprocess@curroption{#1}{#2}{}\default@ds + }\@use@ption + }% + \@for\CurrentOption:=\@declaredoptions\do{% + \expandafter\let\csname ds@\CurrentOption\endcsname\relax}% + \let\CurrentOption\@empty + \let\@fileswith@pti@ns\@@fileswith@pti@ns + \IfLTXAtLeastTF{2020/10/01}{% + \AtEndOfPackage{\expandafter\let + \csname unprocessedoptions-\@currname.\@currext\endcsname + \relax}% + }{% + \AtEndOfPackage{\let\@unprocessedoptions\relax}% + }% + \@nameuse{scr@after@options@#2@hook}% +} +\EndIncludeInRelease +\@onlypreamble\FamilyProcessOptions +\newcommand*{\BeforeFamilyProcessOptions}[3][.\@currname.\@currext]{% + \scr@ifundefinedorrelax{scr@before@process@options@#2#1@hook}{% + \@namedef{scr@before@process@options@#2#1@hook}{#3}% + }{% + \expandafter\g@addto@macro + \csname scr@before@process@options@#2#1@hook\endcsname{#3}% + }% +} +\newcommand*{\scr@AtEndOfFamilyOptions}{% + \kernel@ifstar {\scr@@AtEndOfFamilyOptions{@topmost}}% + {\scr@@AtEndOfFamilyOptions\@empty}% +} +\newcommand*{\scr@@AtEndOfFamilyOptions}[1]{% + \expandafter + \l@addto@macro\csname scr@after@options@\FamilyOfKey @hook#1\endcsname +} +\newcommand*{\scr@AtEndOfFamilyOptions@immediate}{% + \kernel@ifstar {\@firstofone}{\@firstofone}% +} +\newcommand*{\AtEndOfFamilyOptions}{} +\let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate +\newcommand*\scr@ifprocess@curroption[2]{% + \def\reserved@a##1=##2\@nil{\scr@sp@def\reserved@a{##1}}% + \expandafter\reserved@a\CurrentOption=\@nil + \scr@ifundefinedorrelax{KV@#2@\reserved@a}{% + \scr@ifundefinedorrelax{KV@#2#1@\reserved@a}{% + \let\FamilyKeyState\OptionNotUsed + }{% + \protected@edef\reserved@b{\noexpand\setkeys{#2#1}{{\CurrentOption}}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}}% + \reserved@b + \ifx\FamilyKeyState\FamilyKeyStateUnknown + \PackageInfo{scrbase}{Unknown processing state.\MessageBreak + Processing option `\CurrentOption'\MessageBreak + of member `#1' of family\MessageBreak + `#2' doesn't set\MessageBreak + a valid state. This will be interpreted\MessageBreak + as \string\FamilyKeyStateProcessed + }% + \FamilyKeyStateProcessed + \fi + }{% + \let\FamilyKeyState\OptionNotUsed + }% + }{% + \protected@edef\reserved@b{\noexpand\setkeys{#2}{{\CurrentOption}}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}}% + \reserved@b + \ifx\FamilyKeyState\FamilyKeyStateUnknown + \PackageInfo{scrbase}{Unknown processing state.\MessageBreak + Processing option `\CurrentOption'\MessageBreak + of family `#2'\MessageBreak + doesn't set a valid state.\MessageBreak + This will be interpreted\MessageBreak + as \string\FamilyKeyStateProcessed + }% + \FamilyKeyStateProcessed + \fi + \def\reserved@a##1=##2\@nil{\scr@sp@def\reserved@a{##1}}% + \expandafter\reserved@a\CurrentOption=\@nil + \scr@ifundefinedorrelax{KV@#2#1@\reserved@a}{}{% + \protected@edef\reserved@b{\noexpand\setkeys{#2#1}{{\CurrentOption}}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}}% + \ifx\FamilyKeyState\FamiliyKeyStateProcessed + \reserved@b + \FamilyKeyStateProcessed + \else + \reserved@b + \ifx\FamilyKeyState\FamilyKeyStateUnknown + \PackageInfo{scrbase}{Unknown processing state.\MessageBreak + Processing option `\CurrentOption'\MessageBreak + of member `#1' of family\MessageBreak + `#2' doesn't set\MessageBreak + a valid state. This will be interpreted\MessageBreak + as \string\FamilyKeyStateProcessed + }% + \FamilyKeyStateProcessed + \fi + \fi + }% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\@tempa#1{% + \long\def\scr@sp@def##1##2{% + \futurelet\scr@sp@tempa\scr@sp@d##2\@nil\@nil#1\@nil\relax##1}% + \def\scr@sp@d{% + \ifx\scr@sp@tempa\@sptoken + \expandafter\scr@sp@b + \else + \expandafter\scr@sp@b\expandafter#1% + \fi}% + \long\def\scr@sp@b#1##1 \@nil{\scr@sp@c##1}% +} +\@tempa{ } +\long\def\scr@sp@c#1\@nil#2\relax#3{\@temptokena{#1}\edef#3{\the\@temptokena}} +\newcommand\scr@trim@spaces[1]{% + \expandafter\scr@sp@def\expandafter#1\expandafter{#1}% +} +\newcommand{\IfArgIsEmpty}[1]{% + \if\relax\detokenize{#1}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\@ifundefined{l@addto@macro}{}{% + \begingroup + \long\def\reserved@a#1#2{% + \edef#1{\unexpanded\expandafter{#1#2}}% + }% + \ifx\reserved@a\l@addto@macro\else + \PackageWarning{scrbase}{% + Someone also uses macro name \string\l@addto@macro.\MessageBreak + When KOMA-Script author decided to use macro name\MessageBreak + \string\l@addto@macro\space first, there was no other + free\MessageBreak + LaTeX package using this macro name.\MessageBreak + In the meantime other package authers decided to use\MessageBreak + same macro name, but unfortunatly not all of those\MessageBreak + are compatible with KOMA-Script's definition, e.g.,\MessageBreak + while adding definitions with arguments to macros.\MessageBreak + Because of such potentially incompatible definitions,\MessageBreak + KOMA-Script will redefine the command now.\MessageBreak + Please ask the author of the other package to\MessageBreak + rename his macro, if a problem results in the\MessageBreak + redefinition% + }% + \fi + \endgroup +} +\long\def\l@addto@macro#1#2{% + \edef#1{\unexpanded\expandafter{#1#2}}% +}% +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: option) +\DefineFamily{KOMA} +\DefineFamilyMember{KOMA} +\DefineFamilyKey{KOMA}{internalonly}[\relax]{% + \PackageInfo{scrbase}{Ignoring deprecated option `internalonly'}% + \FamilyKeyStateProcessed +} +\AtEndOfPackage{% + \RelaxFamilyKey[.scrbase.sty]{KOMA}{internalonly}% +} +\FamilyProcessOptions{KOMA}\relax +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: body) +\newcommand*{\XdivY}[2]{% + \numexpr ( #1 + #2 / 2 ) / #2 - 1\relax +} +\newcommand*{\XmodY}[2]{% + \numexpr #1 - #2 * \XdivY{#1}{#2}\relax +} +\newcommand{\scr@ForEachTrimmedListElement}[2]{% + \begingroup + \def\reserved@a{\endgroup}% + \@for \reserved@b:=#1 \do {% + \scr@trim@spaces\reserved@b + \ifx\reserved@b\@empty\else + \edef\reserved@a{% + \unexpanded\expandafter{\reserved@a#2}% + {\unexpanded\expandafter{\reserved@b}}% + }% + \fi + }% + \reserved@a +} +\newif\if@atdocument +\IfLTXAtLeastTF{2020/10/01}{% + \AddToHook{begindocument/before}{\@atdocumenttrue}% +}{% + \AtBeginDocument{\@atdocumenttrue}% +} +\@onlypreamble\@atdocumentrue +\@onlypreamble\@atdocumentfalse +\newcommand*{\Ifundefinedorrelax}{\scr@ifundefinedorrelax}% +\providecommand*{\ifnotundefined}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifnotundefined'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifnotundefined' by `\string\Ifnotundefined'% + }% + \Ifnotundefined +} +\newcommand{\Ifnotundefined}[1]{% + \ifcsname #1\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\providecommand*{\ifstr}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifstr'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifstr' by `\string\Ifstr'% + }% + \Ifstr +} +\newcommand\Ifstr[2]{% + \begingroup\protected@edef\reserved@a{#1}\protected@edef\reserved@b{#2}% + \ifx\reserved@a\reserved@b + \endgroup\expandafter\@firstoftwo + \else + \endgroup\expandafter\@secondoftwo + \fi +} +\providecommand*{\ifstrstart}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifstrstart'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifstrstart' by `\string\Ifstrstart'% + }% + \Ifstrstart +} +\newcommand*{\Ifstrstart}[2]{% + \begingroup + \edef\reserved@a{\noexpand\@ifstrstart{#1}{#2}}% + \reserved@a{\aftergroup\@firstoftwo}{\aftergroup\@secondoftwo}% + \endgroup +} +\newcommand*{\@ifstrstart}[2]{% + \def\reserved@a ##1#2##2\@nil{% + \if\relax\detokenize{##1}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% + \reserved@a#1#2\@nil +} +\providecommand*{\ifislengthprimitive}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifislengthprimitive'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifislengthprimitive' by `\string\Ifislengthprimitive'% + }% + \Ifislengthprimitive +} +\newcommand*{\Ifislengthprimitive}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifislengthprimitive#1\@nil}% +} +\newcommand*{\scr@ifislengthprimitive}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifislengthprimitive + }{% + \def\reserved@c{\aftergroup\scr@secondoftwoAfterNil}% + \@for\reserved@a:=\baselineskip,\dp,\hsize,\ht,\lineskip,% + \parindent,\parskip,\pdfpageheight,\pdfpagewidth,% + \wd,\vsize \do {% + \expandafter\Ifstr\expandafter{\expandafter\string\reserved@a}{% + \meaning #1% + }{% + \def\reserved@c{\aftergroup\scr@TestDimenAssignTillNil}% + }% + }% + \reserved@c + }% + \endgroup + #1% +} +\providecommand*{\ifisdimen}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisdimen'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisdimen' by `\string\Ifisdimen'% + }% + \Ifisdimen +} +\newcommand*{\Ifisdimen}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimen#1\@nil}% +} +\newcommand*{\scr@ifisdimen}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisdimen + }{% + \Ifstrstart{\meaning #1}{\string\dimen}{% + \aftergroup\scr@TestDimenAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\newcommand*\scr@TestDimenAssignTillNil{} +\def\scr@TestDimenAssignTillNil#1\@nil{% + \begingroup + \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil + \@tempdima=#1\relax\@nnil +} +\newcommand*\scr@AfterEndGroupIfArgIsRelaxTillNnil{} +\def\scr@AfterEndGroupIfArgIsRelaxTillNnil#1\@nnil{% + \endgroup + \Ifstr{\detokenize{#1}}{\detokenize{\relax}}{\@firstoftwo}{% + \Ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{% + \scr@IfArgIsRelaxAfterRelaxTillNnil #1\@nnil + }{\@secondoftwo}% + }% +} +\newcommand*\scr@IfArgIsRelaxAfterRelaxTillNnil{} +\def\scr@IfArgIsRelaxAfterRelaxTillNnil \relax#1\@nnil{% + \Ifstr{\detokenize{#1}}{\detokenize{\relax}}{\@firstoftwo}{% + \Ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{% + \scr@IfArgIsRelaxAfterRelaxTillNnil #1\@nnil + }{\@secondoftwo}% + }% +} +\newcommand*{\scr@secondoftwoAfterNil}{\scr@@secondoftwoAfterNil\@empty} +\newcommand*{\scr@@secondoftwoAfterNil}{} +\def\scr@@secondoftwoAfterNil#1\@nil{\@secondoftwo} +\providecommand*{\ifisskip}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisskip'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisskip' by `\string\Ifisskip'% + }% + \Ifisskip +} +\newcommand*{\Ifisskip}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisskip#1\@nil}% +} +\newcommand*{\scr@ifisskip}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisskip + }{% + \Ifstrstart{\meaning #1}{\string\skip}{% + \aftergroup\scr@TestSkipAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\newcommand*\scr@TestSkipAssignTillNil{} +\def\scr@TestSkipAssignTillNil#1\@nil{% + \begingroup + \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil + \@tempskipa=#1\relax\@nnil +} +\providecommand*{\ifiscount}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifiscount'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifiscount' by `\string\Ifiscount'% + }% + \Ifiscount +} +\newcommand*{\Ifiscount}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifiscount#1\@nil}% +} +\newcommand*{\scr@ifiscount}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifiscount + }{% + \Ifstrstart{\meaning #1}{\string\count}{% + \aftergroup\scr@TestCountAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\newcommand*\scr@TestCountAssignTillNil{} +\def\scr@TestCountAssignTillNil#1\@nil{% + \begingroup + \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil + \@tempcnta=#1\relax\@nnil +} +\providecommand*{\ifisdimexpr}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisdimexpr'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisdimexpr' by `\string\Ifisdimexpr'% + }% + \Ifisdimexpr +} +\newcommand*{\Ifisdimexpr}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimexpr#1\relax\@nil}% +} +\newcommand*{\scr@ifisdimexpr}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisdimexpr + }{% + \Ifstrstart{\meaning #1}{\string\dimexpr}{% + \aftergroup\scr@TestDimenAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\providecommand*{\ifisglueexpr}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisglueexpr'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisglueexpr' by `\string\Ifisglueexpr'% + }% + \Ifisglueexpr +} +\newcommand*{\Ifisglueexpr}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisglueexpr#1\relax\@nil}% +} +\newcommand*{\scr@ifisglueexpr}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisglueexpr + }{% + \Ifstrstart{\meaning #1}{\string\glueexpr}{% + \aftergroup\scr@TestSkipAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\providecommand*{\ifisnumexpr}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisnumexpr'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisnumexpr' by `\string\Ifisnumexpr'% + }% + \Ifisnumexpr +} +\newcommand*{\Ifisnumexpr}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisnumexpr#1\relax\@nil}% +} +\newcommand*{\scr@ifisnumexpr}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisnumexpr + }{% + \Ifstrstart{\meaning #1}{\string\numexpr}{% + \aftergroup\scr@TestCountAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\providecommand*{\ifisdefchar}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisdefchar'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisdefchar' by `\string\Ifisdefchar'% + }% + \Ifisdefchar +} +\newcommand*{\Ifisdefchar}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdefchar#1\@nil}% +} +\newcommand*{\scr@ifisdefchar}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisdefchar + }{% + \Ifstrstart{\meaning #1}{\string\char\string"}{% + \aftergroup\scr@TestCountAssignTillNil + }{% + \aftergroup\scr@secondoftwoAfterNil + }% + }% + \endgroup + #1% +} +\providecommand*{\ifiscounter}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifiscounter'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifiscounter' by `\string\Ifiscounter'% + }% + \Ifiscounter +} +\newcommand*{\Ifiscounter}[1]{% + \begingroup + \scr@ifundefinedorrelax{c@#1}{% + \aftergroup\@secondoftwo + }{% + \aftergroup\@firstoftwo + }% + \endgroup +} +\providecommand*{\ifisinteger}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisinteger'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisinteger' by `\string\Ifisinteger'% + }% + \Ifisinteger +} +\newcommand*{\Ifisinteger}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisinteger#1\@nil}% +} +\def\scr@ifisinteger#1{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisinteger\aftergroup#1% + }{% + \Ifstrstart{\meaning #1}{\detokenize{the character}}{% + \if #1-\aftergroup\scr@ifisinteger + \else + \if #1+\aftergroup\scr@ifisinteger + \else + \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else + \if #14\else\if #15\else\if #16\else\if #17\else + \if #18\else\if #19\else 1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \relax + \aftergroup\scr@TestCountAssignTillNil + \aftergroup#1% + \else + \aftergroup\scr@secondoftwoAfterNil + \aftergroup#1% + \fi + \fi + \fi + }{% + \Ifstrstart{\meaning #1}{\string\char\string"}{% + \aftergroup\scr@TestCountAssignTillNil + }{% + \def\reserved@c{% + \aftergroup\scr@secondoftwoAfterNil + }% + \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,% + \adjdemerits,% + \baselineskip,\belowdisplayskip,% + \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,% + \brokenpenalty,% + \clubpenalty,\count,% + \dimen,\dimexpr,\doublehyphendemerits,\dp,% + \emergenystretch,\exhyphenpenalty,% + \finalhyphendemerits,% + \glueexpr,% + \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,% + \lastskip,\lastpenalty,\linepenalty,% + \lineskip,\lineskiplimit,% + \maxdepth,\numexpr,% + \overfullrule,% + \parfillskip,\parindent,\parskip,% + \pdfpageheight,\pdfpagewidth,% + \predisplaypenalty,\pretolerance,% + \relpenalty,\widowpenalty,% + \skip,\splitmaxdepth,\splittopskip,% + \tolerance,\topskip,% + \wd,\vbadness,\vfuzz,\vsize + \do {% + \expandafter\Ifstr\expandafter{\expandafter\string\reserved@a}{% + \meaning #1% + }{% + \def\reserved@c{\aftergroup\scr@TestCountAssignTillNil}% + }% + }% + \reserved@c + }% + \aftergroup#1% + }% + }% + \endgroup +} +\newcommand*{\scr@ifrelax@to@nnil}{} +\def\scr@ifrelax@to@nnil#1\@nnil{% + \begingroup + \def\reserved@a{#1}\def\reserved@b{\relax}% + \ifx\reserved@a\reserved@b + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\providecommand*{\ifisdimension}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisdimension'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisdimension' by `\string\Ifisdimension'% + }% + \Ifisdimension +} +\newcommand*{\Ifisdimension}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimension#1\@nil}% +} +\newcommand*{\scr@ifisdimension}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisdimension\aftergroup#1% + }{% + \Ifstrstart{\meaning #1}{\detokenize{the character}}{% + \if #1-\aftergroup\scr@ifisdimension + \else + \if #1+\aftergroup\scr@ifisdimension + \else + \if #1.% + \aftergroup\scr@TestDimensionAssignTillNil + \aftergroup#1% + \else + \if #1,% + \aftergroup\scr@TestDimensionAssignTillNil + \aftergroup#1% + \else + \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else + \if #14\else\if #15\else\if #16\else\if #17\else + \if #18\else\if #19\else 1\fi\fi + \fi\fi\fi\fi + \fi\fi\fi\fi + \relax + \aftergroup\scr@TestDimensionAssignTillNil + \aftergroup#1% + \else + \aftergroup\scr@secondoftwoAfterNil + \aftergroup#1% + \fi + \fi + \fi + \fi + \fi + }{% + \Ifstrstart{\meaning #1}{\string\char\string"}{% + \aftergroup\scr@TestDimensionAssignTillNil + }{% + \def\reserved@c{% + \aftergroup\scr@secondoftwoAfterNil + \aftergroup\@empty + }% + \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,% + \adjdemerits,% + \baselineskip,\belowdisplayskip,% + \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,% + \brokenpenalty,% + \clubpenalty,\count,% + \dimen,\dimexpr,\doublehyphendemerits,\dp,% + \emergenystretch,\exhyphenpenalty,% + \finalhyphendemerits,% + \glueexpr,% + \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,% + \lastskip,\lastpenalty,\linepenalty,% + \lineskip,\lineskiplimit,% + \maxdepth,\numexpr,% + \overfullrule,% + \parfillskip,\parindent,\parskip,% + \pdfpageheight,\pdfpagewidth,% + \predisplaypenalty,\pretolerance,% + \relpenalty,\widowpenalty,% + \skip,\splitmaxdepth,\splittopskip,% + \tolerance,\topskip,% + \wd,\vbadness,\vfuzz,\vsize + \do {% + \expandafter\Ifstr\expandafter{\expandafter\string\reserved@a}{% + \meaning #1% + }{% + \def\reserved@c{\aftergroup\scr@TestDimensionAssignTillNil}% + }% + }% + \reserved@c + }% + \aftergroup#1% + }% + }% + \endgroup +} +\newcommand*\scr@TestDimensionAssignTillNil{} +\def\scr@TestDimensionAssignTillNil#1\@nil{% + \begingroup + \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillptNnil + \@tempdima=#1pt\@nnil +} +\newcommand*\scr@AfterEndGroupIfArgIsRelaxTillptNnil{} +\def\scr@AfterEndGroupIfArgIsRelaxTillptNnil#1\@nnil{% + \endgroup + \Ifstr{\detokenize{#1}}{\detokenize{pt}}{\@firstoftwo}{% + \Ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{% + \scr@IfArgIsRelaxAfterRelaxTillptNnil #1\@nnil + }{\@secondoftwo}% + }% +} +\newcommand*\scr@IfArgIsRelaxAfterRelaxTillptNnil{} +\def\scr@IfArgIsRelaxAfterRelaxTillptNnil \relax#1pt\@nnil{% + \Ifstr{\detokenize{#1}}{\detokenize{pt}}{\@firstoftwo}{% + \Ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{% + \scr@IfArgIsRelaxAfterRelaxTillptNnil #1\@nnil + }{\@secondoftwo}% + }% +} +\providecommand*{\ifisglue}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifisglue'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifisglue' by `\string\Ifisglue'% + }% + \Ifisglue +} +\newcommand*{\Ifisglue}[1]{% + \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisglue#1\@nil}% +} +\newcommand*{\scr@ifisglue}[1]{% + \begingroup + \Ifstrstart{\meaning #1}{\detokenize{macro:}}{% + \aftergroup\expandafter\aftergroup\scr@ifisglue\aftergroup#1% + }{% + \Ifstrstart{\meaning #1}{\detokenize{the character}}{% + \if #1-\aftergroup\scr@ifisglue + \else + \if #1+\aftergroup\scr@ifisglue + \else + \if #1.% + \aftergroup\scr@TestGlueAssignTillNil + \aftergroup#1% + \else + \if #1,% + \aftergroup\scr@TestGlueAssignTillNil + \aftergroup#1% + \else + \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else + \if #14\else\if #15\else\if #16\else\if #17\else + \if #18\else\if #19\else 1\fi\fi + \fi\fi\fi\fi + \fi\fi\fi\fi + \relax + \aftergroup\scr@TestGlueAssignTillNil + \aftergroup#1% + \else + \aftergroup\scr@secondoftwoAfterNil + \aftergroup#1% + \fi + \fi + \fi + \fi + \fi + }{% + \Ifstrstart{\meaning #1}{\string\char\string"}{% + \aftergroup\scr@TestGlueAssignTillNil + }{% + \def\reserved@c{% + \aftergroup\scr@secondoftwoAfterNil + \aftergroup\@empty + }% + \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,% + \adjdemerits,% + \baselineskip,\belowdisplayskip,% + \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,% + \brokenpenalty,% + \clubpenalty,\count,% + \dimen,\dimexpr,\doublehyphendemerits,\dp,% + \emergenystretch,\exhyphenpenalty,% + \finalhyphendemerits,% + \glueexpr,% + \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,% + \lastskip,\lastpenalty,\linepenalty,% + \lineskip,\lineskiplimit,% + \maxdepth,\numexpr,% + \overfullrule,% + \parfillskip,\parindent,\parskip,% + \pdfpageheight,\pdfpagewidth,% + \predisplaypenalty,\pretolerance,% + \relpenalty,\widowpenalty,% + \skip,\splitmaxdepth,\splittopskip,% + \tolerance,\topskip,% + \wd,\vbadness,\vfuzz,\vsize + \do {% + \expandafter\Ifstr\expandafter{\expandafter\string\reserved@a}{% + \meaning #1% + }{% + \def\reserved@c{\aftergroup\scr@TestGlueAssignTillNil}% + }% + }% + \reserved@c + }% + \aftergroup#1% + }% + }% + \endgroup +} +\newcommand*\scr@TestGlueAssignTillNil{} +\def\scr@TestGlueAssignTillNil#1\@nil{% + \begingroup + \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillptNnil + \@tempskipa=#1pt\@nnil +} +\providecommand*{\ifnumber}{% + \scr@ifundefinedorrelax{ver@babelbib.sty}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifnumber'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifnumber' by `\string\Ifnumber'% + }% + }{}% + \Ifnumber +} +\newcommand\Ifnumber[1]{% + \begingroup\@tempswafalse\let\scr@next\scr@test@number + \IfArgIsEmpty{#1}{}{\expandafter\scr@next#1\scr@next}% + \if@tempswa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\newcommand*{\scr@test@number}[1]{% + \ifx \scr@next#1% + \let\scr@next\relax + \else + \@tempcnta=\expandafter\expandafter\expandafter\number + \expandafter`#1\relax + \ifnum \@tempcnta>47 + \ifnum \@tempcnta<58 + \@tempswatrue + \else\@tempswafalse\fi + \else\@tempswafalse\fi + \if@tempswa\else\let\scr@next\gobble@till@scr@next\fi + \fi + \scr@next +} +\newcommand*{\gobble@till@scr@next}{} +\def\gobble@till@scr@next#1\scr@next{} +\providecommand*{\ifintnumber}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifintnumber'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifintnumber' by `\string\Ifintnumber'% + }% + \Ifintnumber +} +\newcommand\Ifintnumber[1]{% + \begingroup\@tempswafalse\let\scr@next\scr@test@sign + \expandafter\scr@next#1\scr@next + \if@tempswa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\newcommand*{\scr@test@sign}[1]{% + \ifx \scr@next#1 + \let\scr@next\relax + \else + \if #1-% + \else + \ifx #1+% + \else + \def\scr@next{\let\scr@next\scr@test@number\scr@next #1}% + \fi + \fi + \fi + \scr@next +} +\providecommand*{\ifdimen}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifdimen'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifdimen' by `\string\Ifdimen'% + }% + \Ifdimen +} +\newcommand{\Ifdimen}[1]{% + \begingroup\@tempswatrue\let\scr@next\scr@test@posdimen + \expandafter\scr@test@dimen#1\scr@next + \if@tempswa + \endgroup\expandafter\@firstoftwo + \else + \endgroup\expandafter\@secondoftwo + \fi +} +\newcommand*{\scr@test@dimen}[1]{% + \ifx -#1\else\ifx +#1\else + \def\scr@next{\let\scr@next\scr@test@posdimen\scr@next#1}\fi\fi + \scr@next +} +\newcommand*{\scr@test@posdimen}[1]{% + \ifx \scr@next#1% + \@tempswafalse\let\scr@next\relax + \else + \if .#1\else\if ,#1\else + \@tempcnta=% + \expandafter\expandafter\expandafter\number\expandafter`#1\relax + \ifnum \@tempcnta>47 + \ifnum \@tempcnta<58 + \else\def\scr@next{\scr@test@dimunt#1}\fi + \else\def\scr@next{\scr@test@dimunt#1}\fi + \fi\fi + \fi + \scr@next +} +\newcommand*{\scr@test@dimunt}{} +\def\scr@test@dimunt#1\scr@next{% + \expandafter\scr@test@trueunt#1truetrue\scr@test@trueunt +} +\newcommand*{\scr@test@trueunt}{} +\def\scr@test@trueunt#1true#2true#3\scr@test@trueunt{% + \edef\reserved@a{#1}% + \ifx\reserved@a\@empty\scr@test@@dimunt{#2}\else\scr@test@@dimunt{#1}\fi +} +\newcommand*\scr@test@@dimunt[1]{% + \@tempswafalse + \Ifstr{#1}{pt}{\@tempswatrue}{% + \Ifstr{#1}{pc}{\@tempswatrue}{% + \Ifstr{#1}{in}{\@tempswatrue}{% + \Ifstr{#1}{bp}{\@tempswatrue}{% + \Ifstr{#1}{cm}{\@tempswatrue}{% + \Ifstr{#1}{mm}{\@tempswatrue}{% + \Ifstr{#1}{dd}{\@tempswatrue}{% + \Ifstr{#1}{cc}{\@tempswatrue}{% + \Ifstr{#1}{sp}{\@tempswatrue}{% + \Ifstr{#1}{ex}{\@tempswatrue}{% + \Ifstr{#1}{em}{\@tempswatrue}{% + \scr@ifpdfoutput{% + \Ifstr{#1}{px}{\@tempswatrue}{}% + }{}% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +\newcommand{\scr@ifpdftex}{\Ifnotundefined{pdftexversion}} +\newcommand{\scr@ifluatex}{\Ifnotundefined{luatexversion}} +\newcommand*{\scr@ifpdforluatex}{% + \scr@ifpdftex{\@firstoftwo}{\scr@ifluatex{\@firstoftwo}{\@secondoftwo}}% +} +\newcommand{\scr@ifVTeX}{\Ifnotundefined{VTeXversion}} +\newcommand{\scr@ifpdfoutput}{% + \scr@ifundefinedorrelax{pdfoutput}{% + \scr@ifundefinedorrelax{outputmode}{% + \scr@ifundefinedorrelax{OpMode}{% + \expandafter\@secondoftwo% + }{% + \ifnum\OpMode=1 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% + }{% + \ifnum\outputmode>0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% + }{% + \ifnum\pdfoutput>0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% +}% +\providecommand*{\ifpdfoutput}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifpdfoutput'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifpdfoutput' by `\string\Ifpdfoutput'% + }% + \Ifpdfoutput +} +\newcommand*{\Ifpdfoutput}{\scr@ifpdfoutput} +\newcommand*{\scr@ifpsoutput}{% + \Ifnotundefined{if@dvips}{% + \if@dvips + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }{% + \Ifnotundefined{OpMode}{% + \ifnum\OpMode=2 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }{% + \expandafter\@secondoftwo + }% + }% +} +\providecommand*{\ifpsoutput}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifpsoutput'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifpsoutput' by `\string\Ifpsoutput'% + }% + \Ifpsoutput +} +\newcommand*{\Ifpsoutput}{\scr@ifpsoutput} +\newcommand*{\scr@ifdvioutput}{% + \scr@ifundefinedorrelax{pdfoutput}{% + \scr@ifundefinedorrelax{outputmode}{% + \scr@ifundefinedorrelax{OpMode}{% + \expandafter\@firstoftwo + }{% + \ifnum\OpMode=0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% + }{% + \ifnum\outputmode>0 + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + }% + }{% + \ifnum\pdfoutput=0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% +} +\providecommand*{\ifdvioutput}{% + \PackageWarning{scrbase}{Usage of deprecated command + `\string\ifdvioutput'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifdvioutput' by `\string\Ifdvioutput'% + }% + \Ifdvioutput +} +\newcommand*{\Ifdvioutput}{\scr@ifdvioutput} +\DeclareRobustCommand{\scr@smashdp}[1]{% + \relax + \begingroup + \def\finsm@sh{\dp\z@\z@ \leavevmode\box\z@}% + \ifmmode + \expandafter\mathpalette\expandafter\mathsm@sh + \else + \expandafter\makesm@sh + \fi + {#1}% + \endgroup +} +\newcommand*{\IfRTL}{% + \scr@ifundefinedorrelax{if@RTL}{\@secondoftwo}{% + \expandafter\ifx\csname if@RTL\expandafter\endcsname + \csname iftrue\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% +} +\newcommand*{\IfLTR}{% + \scr@ifundefinedorrelax{if@RTL}{\@firstoftwo}{% + \expandafter\ifx\csname if@RTL\expandafter\endcsname + \csname iftrue\endcsname + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + }% +} +\providecommand*{\PackageInfoNoLine}[2]{% + \PackageInfo{#1}{#2\@gobble}% +} +\providecommand*{\ClassInfoNoLine}[2]{% + \ClassInfo{#1}{#2\@gobble}% +} +\providecommand*\@removefromreset[2]{% + {% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else\noexpand\@elt{##1}\fi + }% + \expandafter\xdef\csname cl@#2\endcsname{\csname cl@#2\endcsname}% + }% +} +\newif\ifscr@ActiveMkBoth +\def\scr@ActiveMkBothfalse{\global\let\ifscr@ActiveMkBoth\iffalse} +\def\scr@ActiveMkBothtrue {\global\let\ifscr@ActiveMkBoth\iftrue} +\newcommand*{\IfActiveMkBoth}{% + \begingroup + \def\markboth##1##2{\scr@ActiveMkBothtrue}% + \def\markright##1{\scr@ActiveMkBothtrue}% + \def\markleft##1{\scr@ActiveMkBothtrue}% + \def\markboth##1{\scr@ActiveMkBothtrue}% + \def\markdouble##1{\scr@ActiveMkBothtrue}% + \def\mark##1{\scr@ActiveMkBothtrue}% + \def\marks##1##2{\scr@ActiveMkBothtrue}% + \scr@ActiveMkBothfalse + \setbox\@tempboxa\vbox{\@mkboth{}{}}% + \endgroup + \ifscr@ActiveMkBoth + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand*{\FamilyExecuteOptions}[2][.\@currname.\@currext]{% + \@FamilyExecuteOptions[{#1}]{#2}% +} +\newcommand{\@FamilyExecuteOptions}[3][.\@currname.\@currext]{% + \scr@ifundefinedorrelax{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{% + \@namedef{scr@after@options@#2@hook}{}% + }% + }{% + \expandafter\edef\csname scr@after@options@#2@hook\endcsname{% + \noexpand\@namedef{scr@after@options@#2@hook}{% + \unexpanded\expandafter\expandafter\expandafter + {\csname scr@after@options@#2@hook\endcsname}% + }% + }% + }% + \@for\scr@key@atlist:=#3\do{% + \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil + \ifx\scr@key@name\@empty\else + \ifx\scr@key@name\space\else + \scr@ifundefinedorrelax{KV@#2@\scr@key@name}{% + \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{% + \scr@ifundefinedorrelax{KV@#2#1@@else@}{% + \PackageError{scrbase}{% + unknown option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + Member `#1' of family `#2'\MessageBreak + cannot handle option `\scr@key@name'.\MessageBreak + So it cannot be set% + \ifx\scr@key@value\@empty\else + \space to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.% + }% + }{% + \scr@execute@elseoption{#2#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed\else + \PackageError{scrbase}{% + unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + Member `#1' of family `#2'\MessageBreak + cannot handle option `\scr@key@name'.\MessageBreak + So it cannot be set% + \ifx\scr@key@value\@empty\else + \space to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.% + }% + \fi + }% + }{% + \scr@execute@option{#2#1}% + }% + }{% + \scr@execute@option{#2}% + \Ifstr{#1}{}{}{% + \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{% + \scr@ifundefinedorrelax{KV@#2#1@@else@}{}{% + \scr@execute@elseoption{#2#1}% + }% + }{% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \scr@execute@option{#2#1}% + \FamilyKeyStateProcessed + \else + \scr@execute@option{#2#1}% + \fi + }% + }% + }% + \scr@show@key@state@error + \fi + \fi + }% + \@nameuse{scr@after@options@#2@hook}% +} +\newcommand*{\scr@show@key@state@error}{% + \ifx\FamilyKeyState\FamilyKeyStateProcessed\else + \PackageError{scrbase}{% + \ifx\FamilyKeyState\FamilyKeyStateNeedValue + missing option value at + \else + unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi + \fi + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + Option + `\expandafter\detokenize\expandafter{\scr@key@name}'\MessageBreak + \ifx\FamilyMemberOfKey\@empty\else + of member `\FamilyMemberOfKey'\MessageBreak + \fi + \ifx\FamilyOfKey\@empty\else + of family `\FamilyOfKey'\MessageBreak + \fi + \ifx\FamilyKeyState\FamilyKeyStateNeedValue + expects a value, but has been used without any value.% + \else + cannot handle value\MessageBreak + `\expandafter\detokenize\expandafter{\scr@key@value}',% + \MessageBreak + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + because this is an unsupported value.% + \else + because \FamilyKeyState. + \fi + \fi + }% + \fi +} +\newcommand{\FamilyOptions}[1]{\@FamilyOptions{#1}} +\newcommand{\@FamilyOptions}[2]{% + \scr@ifundefinedorrelax{scr@after@options@#1@hook}{% + \@namedef{scr@after@options@#1@hook}{% + \@namedef{scr@after@options@#1@hook}{}% + }% + }{% + \expandafter\edef\csname scr@after@options@#1@hook\endcsname{% + \noexpand\@namedef{scr@after@options@#1@hook}{% + \unexpanded\expandafter\expandafter\expandafter + {\csname scr@after@options@#1@hook\endcsname}% + }% + }% + }% + \scr@ifundefinedorrelax{scr@after@options@#1@hook@topmost}{% + \@namedef{scr@after@options@#1@hook@topmost}{}% + }{}% + \expandafter\ifx\csname scr@after@options@#1@hook@topmost\endcsname\@empty + \expandafter\l@addto@macro\csname scr@after@options@#1@hook\endcsname{% + \@nameuse{scr@after@options@#1@hook@topmost}% + }% + \@namedef{scr@after@options@#1@hook@topmost}{% + \@namedef{scr@after@options@#1@hook@topmost}{}% + }% + \fi + \@for\scr@key@atlist:=#2\do{% + \ifx\scr@key@atlist\@empty\else + \ifx\scr@key@atlist\space\else + \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil + \let\scr@key@run@errors\@empty + \scr@key@found@false + \edef\reserved@a{#1,\csname #1@key@familylist\endcsname}% + \@for\reserved@a:=\reserved@a\do{% + \scr@ifundefinedorrelax{KV@\reserved@a @\scr@key@name}{% + \Ifstr{\reserved@a}{#1}{}{% + \scr@ifundefinedorrelax{KV@\reserved@a @@else@}{}{% + \expandafter\scr@execute@elseoption\expandafter{\reserved@a}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \scr@key@found@true + \let\scr@key@run@errors\relax + \fi + }% + }% + }{% + \expandafter\scr@execute@option\expandafter{\reserved@a}% + \scr@key@found@true + \ifx\scr@key@run@errors\relax\else + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \let\scr@key@run@errors\relax + \else + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + \edef\scr@key@run@errors{% + \unexpanded\expandafter{\scr@key@run@errors}% + \noexpand\MessageBreak + \space\space- `\FamilyMemberOfKey': unkown value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + }% + \else + \ifx\FamilyKeyState\FamilyKeyStateNeedValue + \edef\scr@key@run@errors{% + \unexpanded\expandafter{\scr@key@run@errors}% + \noexpand\MessageBreak + \space\space- `\FamilyMemberOfKey': value expected + }% + \else + \edef\scr@key@run@errors{% + \unexpanded\expandafter{\scr@key@run@errors}% + \noexpand\MessageBreak + \space\space- `\FamilyMemberOfKey': \FamilyKeyState + }% + \fi + \fi + \fi + \fi + }% + }% + \ifscr@key@found@ + \ifx\scr@key@run@errors\relax\else + \ifx\scr@key@run@errors\@empty\else + \scr@ifundefinedorrelax{KV@#1@@else@}{% + \PackageError{scrbase}{% + unknown option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + The members of family `#1' cannot set option + `\scr@key@name' + \ifx\scr@key@value\@empty\else + \MessageBreak + to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.\MessageBreak + Here's what each member says: + \scr@key@run@errors + }% + }{% + \scr@execute@elseoption{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \PackageInfo{scrbase}{% + option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + \MessageBreak + processed by `@else@' option of family\MessageBreak + `#1', after the members said: + \scr@key@run@errors\MessageBreak + o\expandafter\@gobble + }% + \let\scr@key@run@errors\relax + \else + \PackageError{scrbase}{% + unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + The members of family `#1' cannot set option + `\scr@key@name' + \ifx\scr@key@value\@empty\else + \MessageBreak + to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.\MessageBreak + Here's what each member says: + \scr@key@run@errors + }% + \fi + }% + \fi + \fi + \else + \scr@ifundefinedorrelax{KV@#1@@else@}{% + \PackageError{scrbase}{% + unknown option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + No one of the members of family `#1'\MessageBreak + can handle option `\scr@key@name'.\MessageBreak + So it cannot be set% + \ifx\scr@key@value\@empty\else + \space to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.% + }% + }{% + \scr@execute@elseoption{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \else + \PackageError{scrbase}{% + unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + No one of the members of family `#1'\MessageBreak + can handle option `\scr@key@name'.\MessageBreak + So it cannot be set% + \ifx\scr@key@value\@empty\else + \space to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.% + }% + \fi + }% + \fi + \fi + \fi + }% + \@nameuse{scr@after@options@#1@hook}% +} +\newcommand*{\scr@execute@option}[1]{% + \protected@edef\reserved@a{% + \noexpand\let\noexpand\KV@err\noexpand\scr@KV@err + \noexpand\setkeys{#1}{% + \unexpanded\expandafter{\scr@key@atlist}}% + \noexpand\def\noexpand\scr@key@atlist{% + \unexpanded\expandafter{\scr@key@atlist}}% + \noexpand\def\noexpand\scr@key@name{% + \unexpanded\expandafter{\scr@key@name}}% + \noexpand\def\noexpand\scr@key@value{% + \unexpanded\expandafter{\scr@key@value}}% + \ifx\scr@key@run@errors\relax + \noexpand\let\noexpand\scr@key@run@errors\relax + \else + \noexpand\def\noexpand\scr@key@run@errors{% + \unexpanded\expandafter{\scr@key@run@errors}}% + \fi + \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate + \noexpand\let\noexpand\AtEndOfFamilyOptions + \noexpand\scr@AtEndOfFamilyOptions@immediate + \fi + }% + \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions + \reserved@a + \ifx\FamilyKeyState\FamilyKeyStateUnknown + \PackageInfo{scrbase}{Unknown processing state.\MessageBreak + Processing option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'\MessageBreak + \ifx\FamilyMemberOfKey\@empty\else + of member `\FamilyMemberOfKey'\MessageBreak + \fi + of family `\FamilyOfKey'\MessageBreak + doesn't set a valid state.\MessageBreak + This will be interpreted\MessageBreak + as \string\FamilyKeyStateProcessed + }% + \FamilyKeyStateProcessed + \fi +} +\newcommand*{\scr@KV@err}[1]{% + \FamilyKeyStateNeedValue +} +\newcommand*{\scr@key@run@errors}{} +\newcommand*{\scr@execute@elseoption}[1]{% + \begingroup + \protected@edef\reserved@a{% + \unexpanded{% + \endgroup + \let\scr@key@name@else\scr@key@name + \let\scr@key@value@else\scr@key@value + \def\scr@key@name{@else@}% + }% + \noexpand\def\noexpand\scr@key@value{% + \unexpanded\expandafter{\scr@key@atlist}}% + \noexpand\def\noexpand\scr@key@atlist{% + @else@={\unexpanded\expandafter{\scr@key@atlist}}}% + \noexpand\scr@execute@option{#1}% + \noexpand\def\noexpand\scr@key@atlist{% + \unexpanded\expandafter{\scr@key@atlist}}% + \noexpand\def\noexpand\scr@key@name{% + \unexpanded\expandafter{\scr@key@name}}% + \noexpand\def\noexpand\scr@key@value{% + \unexpanded\expandafter{\scr@key@value}}% + \scr@ifundefinedorrelax{scr@key@name@else}{% + \unexpanded{\let\scr@key@name@else\relax}% + }{% + \noexpand\def\noexpand\scr@key@name@else{% + \unexpanded\expandafter{\scr@key@name@else}% + }% + }% + \scr@ifundefinedorrelax{scr@key@value@else}{% + \unexpanded{\let\scr@key@value@else\relax}% + }{% + \noexpand\def\noexpand\scr@key@value@else{% + \unexpanded\expandafter{\scr@key@value@else}% + }% + }% + }\reserved@a +} +\newif\ifscr@key@found@ +\newcommand*{\scr@key@atlist}{} +\newcommand*{\scr@key@name}{} +\newcommand*{\scr@key@value}{} +\newcommand*{\scr@key@split@name@value}{} +\long\def\scr@key@split@name@value#1=#2=#3\@nil{% + \scr@sp@def\scr@key@name{#1}% + \scr@sp@def\scr@key@value{#2}% +} +\newcommand*{\FamilyOption}[2]{% + \begingroup + \def\reserved@a##1,##2\@nil{\IfArgIsEmpty{##2}{}{\@tempswatrue}}% + \@tempswafalse\expandafter\reserved@a#2,\@nil + \if@tempswa + \PackageError{scrbase}{% + syntax error in key `\detokenize{#2}'% + }{% + You've used `\string\...Option' to set the key + `\detokenize{#2}'\MessageBreak + to new value(s), but `,' is not allowed in the key of + an option\MessageBreak + (and `\string\...Option' does not use `,' to separate several + keys).\MessageBreak + Maybe you've meant \string\...Options\space instead of + \string\...Option.\MessageBreak + If you'll continue, I'll give it a try, but you should expect + further\MessageBreak + and even strange error messages.% + }% + \else + \def\reserved@a##1=##2\@nil{% + \IfArgIsEmpty{##2}{}{\@tempswatrue\def\reserved@a{=}}}% + \expandafter\reserved@a#2=\@nil + \if@tempswa + \PackageError{scrbase}{% + syntax error in key `\detokenize{#2}'% + }{% + You've used `\string\...Option' to set the key + `\detokenize{#2}'\MessageBreak + to new value(s), but `=' is not allowed in the key of + an option\MessageBreak + (and `\string\...Option' does not use `=' to separate key and + value).\MessageBreak + Maybe you've meant \string\...Options\space instead of + \string\...Option.\MessageBreak + If you'll continue, I'll give it a try, but you should expect + further\MessageBreak + and even strange error messages.% + }% + \fi + \fi + \endgroup + \@FamilyOption{#1}{#2}% +} +\newcommand{\@FamilyOption}[3]{% + \expandafter\scr@sp@def\expandafter\scr@key@name\expandafter{#2}% + \let\reserved@a\@empty + \@for\reserved@b:=#3\do{% + \ifx\reserved@b\@empty\else + \ifx\reserved@b\space\else + \edef\reserved@a{\unexpanded\expandafter{\reserved@a},% + \scr@key@name=\unexpanded\expandafter{\reserved@b}}% + \fi + \fi + }% + \def\reserved@b{\FamilyOptions{#1}}% + \expandafter\reserved@b\expandafter{\reserved@a}% +} +\begingroup + \catcode`\^^A=\catcode`\# + \@makeother\# + \gdef\l@addto@macro@a^^A1{% + \begingroup + \@makeother\# + \def\l@addto@macro@a@cmd{^^A1}% + \l@addto@macro@a@ + } + \gdef\l@addto@macro@a@^^A1{% + \def\l@addto@macro@a@add{^^A1}% + \l@addto@macro@a@@ + } +\endgroup +\begingroup + \@makeother\# + \gdef\l@addto@macro@a@@{% + \@makeother\# + \edef\reserved@a{% + \detokenize{\endgroup\def}% + \detokenize\expandafter{\l@addto@macro@a@cmd#1}% + {% + \expandafter\detokenize% + \expandafter\expandafter\expandafter{\l@addto@macro@a@cmd{#1}}% + \expandafter\detokenize\expandafter{\l@addto@macro@a@add}% + }% + }% + \expandafter\scantokens\expandafter{\reserved@a}% + }% +\endgroup +\newcommand\l@preto@macro[2]{% + \edef#1{\unexpanded{#2}\unexpanded\expandafter{#1}}% +}% +\begingroup + \catcode`\^^A=\catcode`\# + \@makeother\# + \gdef\l@preto@macro@a^^A1{% + \begingroup + \@makeother\# + \def\l@preto@macro@a@cmd{^^A1}% + \l@preto@macro@a@ + } + \gdef\l@preto@macro@a@^^A1{% + \def\l@preto@macro@a@add{^^A1}% + \l@preto@macro@a@@ + } +\endgroup +\begingroup + \@makeother\# + \gdef\l@preto@macro@a@@{% + \@makeother\# + \edef\reserved@a{% + \detokenize{\endgroup\def}% + \detokenize\expandafter{\l@preto@macro@a@cmd#1}% + {% + \expandafter\detokenize\expandafter{\l@preto@macro@a@add}% + \expandafter\detokenize% + \expandafter\expandafter\expandafter{\l@preto@macro@a@cmd{#1}}% + }% + }% + \expandafter\scantokens\expandafter{\reserved@a}% + }% +\endgroup +\newcommand{\FamilyUnknownKeyValue}[4]{% + \FamilyKeyStateUnknownValue + \ifx\FamilyElseValues\@empty\else + \PackageWarning{scrbase}{non empty \string\FamilyElseValue + ignored.\MessageBreak + Setting this command to a non empty\MessageBreak + value for option `#2' of\MessageBreak + family `#1' is deprecated,\MessageBreak + but has been found% + }% + \fi +} +\newcommand*{\FamilyElseValues}{} +\newcommand*{\FamilyBoolKey}[4][.\@currname.\@currext]{% + \@ifundefined{if#4}{% + \expandafter\newif\csname if#4\endcsname + }{}% + \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetBool{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetBool}[4]{% + \Ifstr{#4}{}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{true}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{on}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{yes}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{false}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{off}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \Ifstr{#4}{no}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + `true', `on', `yes', `false', `off', `no'% + }% + }% + }% + }% + }% + }% + }% + }% + \let\FamilyElseValues\@empty +} +\newcommand*{\FamilyInverseBoolKey}[4][.\@currname.\@currext]{% + \@ifundefined{if#4}{% + \expandafter\newif\csname if#4\endcsname + \@nameuse{#4true}% + }{}% + \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetInverseBool{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetInverseBool}[4]{% + \FamilySetBool{#1}{#2}{#3}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifx\csname if#3\expandafter\endcsname\csname iftrue\endcsname + \@nameuse{#3false}% + \else + \@nameuse{#3true}% + \fi + \fi +} +\newcommand*{\FamilyCounterKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@Counter@@Key{#1}{#2}{#3}}% + {\Family@Counter@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Counter@@Key}{} +\def\Family@@Counter@@Key#1#2#3[#4]#5{% + \@ifundefined{c@#5}{\newcounter{#5}}{}% + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounter{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Counter@Key}[4]{% + \@ifundefined{c@#4}{\newcounter{#4}}{}% + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounter{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetCounter}[4]{% + \begingroup + \protected@edef\reserved@a{#4}% + \def\reserved@b{\endgroup\value{#3}=#4\relax\FamilyKeyStateProcessed}% + \expandafter\Ifiscount\expandafter{\reserved@a}{}{% + \expandafter\Ifisdimen\expandafter{\reserved@a}{}{% + \expandafter\Ifisskip\expandafter{\reserved@a}{}{% + \expandafter\Ifisnumexpr\expandafter{\reserved@a}{}{% + \expandafter\Ifisdimexpr\expandafter{\reserved@a}{}{% + \expandafter\Ifisinteger\expandafter{\reserved@a}{}{% + \expandafter\Ifiscounter\expandafter{\reserved@a}{% + \def\reserved@b{% + \endgroup\value{#3}=\value{#4}\FamilyKeyStateProcessed + }% + }{% + \def\reserved@b{% + \endgroup + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + integer numbers, counters, lengths, skips, dimens + }% + }% + }% + }% + }% + }% + }% + }% + }% + \reserved@b +} +\newcommand*{\FamilyCounterMacroKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@Counter@@Macro@@Key{#1}{#2}{#3}}% + {\Family@Counter@Macro@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Counter@@Macro@@Key}{} +\def\Family@@Counter@@Macro@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\let#5\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounterMacro{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Counter@Macro@Key}[4]{% + \ifdefined#4\else\let#4\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounterMacro{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetCounterMacro}[4]{% + \begingroup + \FamilySetCounter{#1}{#2}{page}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \edef\reserved@a{% + \unexpanded{\endgroup\def#3}% + {\the\value{page}}% + \noexpand\FamilyKeyStateProcessed + }% + \else + \def\reserved@a{% + \endgroup + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + integer numbers, counters, lengths, skips, dimens + }% + }% + \fi + \reserved@a +} +\newcommand*{\FamilyLengthKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@Length@@Key{#1}{#2}{#3}}% + {\Family@Length@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Length@@Key}{} +\def\Family@@Length@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\newlength{#5}\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLength{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Length@Key}[4]{% + \ifdefined#4\else\newlength{#4}\fi + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLength{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetLength}[4]{% + \begingroup + \protected@edef\reserved@a{#4}% + \expandafter\Ifisdimen\expandafter{\reserved@a}{% + \aftergroup\@firstoftwo + }{% + \expandafter\Ifisskip\expandafter{\reserved@a}{% + \aftergroup\@firstoftwo + }{% + \expandafter\Ifisdimexpr\expandafter{\reserved@a}{% + \aftergroup\@firstoftwo + }{% + \expandafter\Ifisglueexpr\expandafter{\reserved@a}{% + \aftergroup\@firstoftwo + }{% + \expandafter\Ifisglue\expandafter{\reserved@a}{% + \aftergroup\@firstoftwo + }{% + \aftergroup\@secondoftwo + }% + }% + }% + }% + }% + \endgroup + {#3=#4\FamilyKeyStateProcessed}% + {% + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + length values, + lengths, skips, dimens + }% + }% +} +\newcommand*{\FamilyLengthMacroKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@Length@@Macro@@Key{#1}{#2}{#3}}% + {\Family@Length@Macro@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Length@@Macro@@Key}{} +\def\Family@@Length@@Macro@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\let#5\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLengthMacro{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Length@Macro@Key}[4]{% + \ifdefined#4\else\let#4\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLengthMacro{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetLengthMacro}[4]{% + \begingroup + \FamilySetLength{#1}{#2}{\@tempskipa}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \edef\reserved@a{% + \unexpanded{\endgroup\def#3}% + {\the\@tempskipa}% + \noexpand\FamilyKeyStateProcessed + }% + \else + \def\reserved@a{% + \endgroup + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + length values, counters, lengths, skips, dimens + }% + }% + \fi + \reserved@a +} +\newcommand*{\FamilyUseLengthMacroKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@UseLength@@Macro@@Key{#1}{#2}{#3}}% + {\Family@UseLength@Macro@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@UseLength@@Macro@@Key}{} +\def\Family@@UseLength@@Macro@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\let#5\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{% + \FamilySetUseLengthMacro{#2}{#3}{#5}{##1}% + }% +} +\newcommand*{\Family@UseLength@Macro@Key}[4]{% + \ifdefined#4\else\let#4\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetUseLengthMacro{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetUseLengthMacro}[4]{% + \begingroup + \FamilySetLength{#1}{#2}{\@tempskipa}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \def\reserved@a{% + \endgroup\def#3{#4}% + \FamilyKeyStateProcessed + }% + \else + \def\reserved@a{% + \endgroup + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + length values, counters, lengths, skips, dimens + }% + }% + \fi + \reserved@a +} +\newcommand*{\FamilyNumericalKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@Numerical@Key{#1}{#2}{#3}}{\Family@Numerical@Key{#1}{#2}{#3}[]}% +} +\newcommand*{\Family@Numerical@Key}{} +\def\Family@Numerical@Key#1#2#3[#4]#5#6{% + \@ifundefined{#5}{\@namedef{#5}{0}}{}% + \ifx\relax#4\relax + \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}% + \else + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{% + \FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}% + \fi +} +\newcommand*{\FamilySetNumerical}[5]{% + \begingroup + \edef\@searched{#5}% + \let\reserved@a=\@empty + \let\reserved@b=\@empty + \@tempswafalse + \@for\@valuelist:=#4\do{% + \ifx\@valuelist\@empty\else + \if@tempswa\else + \edef\reserved@c{\expandafter\@firstoftwo\@valuelist}% + \edef\reserved@a{\reserved@a\reserved@b`\reserved@c'}% + \edef\reserved@b{, }% + \ifx\reserved@c\@searched + \@tempswatrue + \edef\reserved@a{\expandafter\@secondoftwo\@valuelist}% + \fi + \fi + \fi + }% + \if@tempswa + \edef\reserved@a{\endgroup + \noexpand\@namedef{#3}{\reserved@a}% + \noexpand\FamilyKeyStateProcessed + }% + \else + \edef\reserved@a{\endgroup + \noexpand\FamilyUnknownKeyValue{#1}{#2}{#5}{\reserved@a}% + }% + \fi + \reserved@a + \let\FamilyElseValues\@empty +} +\newcommand*{\FamilyStringKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@String@@Key{#1}{#2}{#3}}{\Family@String@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@String@@Key}{} +\long\def\Family@@String@@Key#1#2#3[#4]#5{% + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\def#5{##1}\FamilyKeyStateProcessed}% +} +\newcommand{\Family@String@Key}[4]{% + \DefineFamilyKey[{#1}]{#2}{#3}{\def#4{##1}\FamilyKeyStateProcessed}% +} +\newcommand*{\FamilyCSKey}[3][.\@currname.\@currext]{% + \kernel@ifnextchar [%] + {\Family@@CS@@Key{#1}{#2}{#3}}{\Family@CS@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@CS@@Key}{} +\long\def\Family@@CS@@Key#1#2#3[#4]#5{% + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\@namedef{#5}{##1}\FamilyKeyStateProcessed}% +} +\newcommand{\Family@CS@Key}[4]{% + \DefineFamilyKey[{#1}]{#2}{#3}{\@namedef{#4}{##1}\FamilyKeyStateProcessed}% +} +\newcommand*{\ForDoHook}[2]{% + \Ifstr{#1}{}{% + \PackageError{scrbase}{empty do-hook specificator}{% + You've tried to use an empty do-hook specificator,\MessageBreak + but do-hook specificators must not be empty.% + }% + }{% + \begingroup + \def\scr@hookrun{\endgroup}% + \let\scr@hookname\relax + \edef\scr@hookargument{#1}% + \rloop + \scr@hooksplit@specificator\scr@hookname\scr@hookargument + \scr@hookargument + \edef\scr@hookrun{% + \unexpanded\expandafter{\scr@hookrun}% + \unexpanded{#2}{\scr@hookname}{\scr@hookargument}% + }% + \ifx\scr@hookargument\@empty\else + \repeat + \scr@hookrun + }% +} +\newcommand*{\SplitDoHook}[3]{% + \Ifstr{#1}{}{% + \PackageWarning{scrbase}{empty do-hook specificator}% + \let#2\@empty\let#3\@empty + }{% + \let#2\relax + \edef\reserved@a{% + \unexpanded{\scr@hooksplit@specificator{#2}{#3}}{#1}% + }\reserved@a + }% +} +\newcommand*{\scr@hooksplit@specificator}[3]{% + \expandafter\scr@@hooksplit@specificator\expandafter#1\expandafter#2#3/\@nil +} +\newcommand*{\scr@@hooksplit@specificator}{} +\def\scr@@hooksplit@specificator#1#2#3/#4\@nil{% + \scr@ifundefinedorrelax{scr@hookname}{\def#1{#3}}{% + \edef#1{#1/#3}% + }% + \def#2{#4}% + \ifx#2\@empty\else \scr@@hookargument#2#4\@nil\fi +} +\newcommand*{\scr@@hookargument}{} +\def\scr@@hookargument#1#2/\@nil{\def#1{#2}}% +\newcommand*{\ExecuteDoHook}[1]{% + \@ifundefined{scr@execute@dohook}{% + \def\scr@execute@dohook##1##2{% + \def\scr@hook@do####1{####1{##2}}% + \@nameuse{scr@dohook@##1}% + \@nameuse{scr@otdohook@##1}% + \expandafter\global\expandafter\let + \csname scr@otdohook@##1\endcsname\@empty + \let\scr@hook@do\relax + }% + \ForDoHook{#1}{\scr@execute@dohook}% + \let\scr@execute@dohook\relax + }{% + \PackageWarning{scrbase}{cascaded do-hook detected.\MessageBreak + It seems, that the do-hook `\detokenize{#1}'\MessageBreak + is be executed, while another do-hook is active.\MessageBreak + This is not allowed and therefore ignored% + }% + }% +} +\newcommand*{\AddtoDoHook}[2]{% + \Ifstr{#1}{}{% + \PackageError{scrbase}{empty hook specificator}{% + As hook specificators can never be empty, the first argument\MessageBreak + of \string\AddtoDoHook\space must expand to an not empty string.% + }% + }{% + \scr@ifundefinedorrelax{scr@dohook@#1}{\@namedef{scr@dohook@#1}{}}{}% + \expandafter\l@addto@macro\csname scr@dohook@#1\endcsname{% + \scr@hook@do{#2}% + }% + }% +} +\newcommand*{\AddtoOneTimeDoHook}[2]{% + \Ifstr{#1}{}{% + \PackageError{scrbase}{empty hook specificator}{% + As hook specificators can never be empty, the first argument\MessageBreak + of \string\AddtoDoHook\space must expand to an not empty string.% + }% + }{% + \scr@ifundefinedorrelax{scr@otdohook@#1}{\@namedef{scr@otdohook@#1}{}}{}% + \expandafter\l@addto@macro\csname scr@otdohook@#1\endcsname{% + \scr@hook@do{#2}% + }% + }% +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\defcaptionname}{% + \kernel@ifstar\scr@def@scaptionname\scr@def@captionname +} +\newcommand*{\scr@def@scaptionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\def#2{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\defcaptionname}% + \else + \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname extras\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +\newcommand*{\scr@def@activateactivelanguageaftergroup}[2]{% + \@onelevel@sanitize\languagename + \@tempswafalse + \ifx\languagename\scr@reserved@a + \@tempswatrue + \else + \edef\scr@reserved@b{\detokenize{german}}% + \ifx\languagename\scr@reserved@b + \edef\scr@reserved@b{% + \expandafter\ifx\csname if@german@oldspelling\expandafter\endcsname + \csname iffalse\endcsname n\fi + \expandafter\ifx\csname if@austrian@locale\expandafter\endcsname + \csname iftrue\endcsname austrian\else + \expandafter\ifx\csname if@swiss@locale\expandafter\endcsname + \csname iftrue\endcsname swiss\else german\fi\fi + }% + \@onelevel@sanitize\scr@reserved@b + \ifx\scr@reserved@a\scr@reserved@b \@tempswatrue\fi + \fi + \if@tempswa\else + \ifcsname l@\scr@reserved@a\endcsname + \expandafter\ifnum\csname l@\scr@reserved@a\endcsname=\language + \@tempswatrue + \fi + \fi + \fi + \fi + \if@tempswa + \def\reserved@b{\endgroup + \PackageInfo{scrbase}{activating \languagename\space \string#1}% + \def#1{#2}% + }% + \fi +} +\newcommand*{\scr@ifactivelanguageisoneof}[1]{% + \begingroup + \@tempswafalse + \@onelevel@sanitize\languagename + \edef\reserved@a{#1}% + \@for \reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@onelevel@sanitize\reserved@a + \ifx\languagename\reserved@a + \@tempswatrue + \else + \edef\reserved@b{\detokenize{german}}% + \ifx\languagename\reserved@b + \edef\reserved@b{% + \expandafter\ifx\csname if@german@oldspelling\expandafter\endcsname + \csname iffalse\endcsname n\fi + \expandafter\ifx \csname if@austrian@locale\expandafter\endcsname + \csname iftrue\endcsname austrian\else + \expandafter\ifx\csname if@swiss@locale\expandafter\endcsname + \csname iftrue\endcsname swiss\else german\fi\fi + }% + \@onelevel@sanitize\reserved@b + \ifx\reserved@a\reserved@b \@tempswatrue\fi + \fi + \if@tempswa\else + \ifcsname l@\reserved@a\endcsname + \expandafter\ifnum \csname l@\reserved@a\endcsname=\language + \@tempswatrue + \fi + \fi + \fi + \fi + }% + \if@tempswa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\newcommand*{\scr@def@captionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\def#2{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\defcaptionname}% + \else + \@tempswafalse + \begingroup + \@tempswafalse + \ifcsname extras\scr@reserved@a\endcsname + \let#2\relax + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax \else \aftergroup\@tempswatrue \fi + \fi + \endgroup + \if@tempswa + \expandafter\g@addto@macro\csname extras\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \else + \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname captions\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \fi + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +\AfterPackage*{polyglossia}{% + \scr@ifundefinedorrelax{init@extras@german}{% + \AfterFile{gloss-german.ldf}% + }{% + \@firstofone + }% + {% + \providecommand*\captionsngerman{}% + \providecommand*\captionsaustrian{}% + \providecommand*\captionsnaustrian{}% + \providecommand*\captionsswiss{}% + \providecommand*\captionsnswiss{}% + \csgappto{init@extras@german}{% + \if@austrian@locale + \csuse{captions\if@german@oldspelling\else n\fi austrian}% + \else + \if@swiss@locale + \csuse{captions\if@german@oldspelling\else n\fi swiss}% + \else + \if@german@oldspelling\else \csuse{captionsngerman}\fi + \fi + \fi + }% + }% +} +\newcommand*{\providecaptionname}{% + \kernel@ifstar\scr@provide@scaptionname\scr@provide@captionname +} +\newcommand*{\scr@provide@scaptionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at + \string\providecaptionname}% + \else + \begingroup + \let#2\relax + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \let\renewcommand\providecommand + \csname extras\scr@reserved@a\endcsname + \csname captions\scr@reserved@a\endcsname + \ifx #2\relax \aftergroup\@firstofone + \else + \aftergroup\@gobble + \fi + \endgroup + {% + \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\@gobbletwo + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname extras\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + }% + \fi + }% + \reserved@b + }% +} +\newcommand*{\scr@provide@captionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at + \string\providecaptionname}% + \else + \begingroup + \let#2\relax + \let\renewcommand\providecommand + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname captions\scr@reserved@a\endcsname + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax \aftergroup\@firstofone + \else + \aftergroup\@gobble + \fi + \endgroup + {% + \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\@gobbletwo + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname captions\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + }% + \fi + }% + \reserved@b + }% +} +\newcommand*{\newcaptionname}{% + \kernel@ifstar\scr@new@scaptionname\scr@new@captionname +} +\newcommand*{\scr@new@scaptionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\newcaptionname}% + \else + \begingroup + \let#2\relax + \let\renewcommand\providecommand + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname captions\scr@reserved@a\endcsname + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax + \else + \PackageError{scrbase}{% + `\string#2' already defined\MessageBreak + for language `\scr@reserved@a'% + }{% + You've told me to define `\string#2' for language + `\scr@reserved@a',\MessageBreak + but is has already been defined.\MessageBreak + Nevertheless, if you'll continue it will be redefined.% + }% + \fi + \endgroup + \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname extras\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +\newcommand*{\scr@new@captionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\newcaptionname}% + \else + \begingroup + \let#2\relax + \let\renewcommand\providecommand + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname captions\scr@reserved@a\endcsname + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax + \else + \PackageError{scrbase}{% + `\string#2' already defined\MessageBreak + for language `\scr@reserved@a'% + }{% + You've told me to define `\string#2' for language + `\scr@reserved@a',\MessageBreak + but is has already been defined.\MessageBreak + Nevertheless, if you'll continue it will be redefined.% + }% + \fi + \endgroup + \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname captions\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +\newcommand*{\renewcaptionname}{% + \kernel@ifstar\scr@renew@scaptionname\scr@renew@captionname +} +\newcommand*{\scr@renew@scaptionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\ifdefined#2\renewcommand*{#2}{#3}\fi}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\renewcaptionname}% + \else + \begingroup + \let#2\relax + \let\renewcommand\providecommand + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname captions\scr@reserved@a\endcsname + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax + \PackageError{scrbase}{% + `\string#2' not defined at language `\scr@reserved@a'% + }{% + You've told me to redefine `\string#2' at language + `\scr@reserved@a',\MessageBreak + but is hasn't been defined before.\MessageBreak + Nevertheless, if you'll continue I'll define it at + `\expandafter\string\csname extras\scr@reserved@a\endcsname'% + }% + \fi + \endgroup + \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname extras\scr@reserved@a\endcsname{% + \def#2{#3}% + }% + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +\newcommand*{\scr@renew@captionname}[3]{% + \if@atdocument + \expandafter\@firstofone + \else + \scr@ifactivelanguageisoneof{#1}{\ifdefined#2\renewcommand*{#2}{#3}\fi}{}% + \expandafter\AtBeginDocument + \fi + {% + \begingroup + \let\reserved@b\endgroup + \edef\scr@reserved@a{#1}% + \@onelevel@sanitize\scr@reserved@a + \@for\scr@reserved@a:=\scr@reserved@a\do{% + \scr@trim@spaces\scr@reserved@a + \ifx\scr@reserved@a\@empty + \PackageWarning{scrbase}{empty language at \string\renewcaptionname}% + \else + \begingroup + \let#2\relax + \let\renewcommand\providecommand + \expandafter\providecommand\expandafter*% + \csname abx@extras@\scr@reserved@a\endcsname{}% + \csname extras\scr@reserved@a\endcsname + \ifx #2\relax + \csname captions\scr@reserved@a\endcsname + \ifx #2\relax + \PackageError{scrbase}{% + `\string#2' not defined at language `\scr@reserved@a'% + }{% + You've told me to redefine `\string#2' at language + `\scr@reserved@a',\MessageBreak + but it hasn't been defined before.\MessageBreak + Nevertheless, if you'll continue I'll define it at + `\expandafter\string + \csname captions\scr@reserved@a\endcsname'% + }% + \fi + \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname captions\scr@reserved@a\endcsname{\def#2{#3}}% + \else + \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax + \expandafter\expandafter\expandafter\gdef + \else + \expandafter\expandafter\expandafter\g@addto@macro + \fi + \csname extras\scr@reserved@a\endcsname{\def#2{#3}}% + \fi + \endgroup + \scr@def@activateactivelanguageaftergroup{#2}{#3}% + \fi + }% + \reserved@b + }% +} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrbase.sty'. diff --git a/texmf/tex/latex/koma-script/scrbook.cls b/texmf/tex/latex/koma-script/scrbook.cls new file mode 100644 index 000000000..6256d8170 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrbook.cls @@ -0,0 +1,7667 @@ +%% +%% This is file `scrbook.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,book') +%% scrkernel-basics.dtx (with options: `class,load') +%% scrkernel-listsof.dtx (with options: `class,book,prepare') +%% scrkernel-tocstyle.dtx (with options: `class,book,prepare') +%% scrkernel-sections.dtx (with options: `class,book,prepare') +%% scrkernel-compatibility.dtx (with options: `class,book,init') +%% scrkernel-typearea.dtx (with options: `class,book,init') +%% scrkernel-compatibility.dtx (with options: `class,book,option') +%% scrkernel-miscellaneous.dtx (with options: `class,book,option') +%% scrkernel-language.dtx (with options: `class,book,option') +%% scrkernel-fonts.dtx (with options: `class,book,option') +%% scrkernel-typearea.dtx (with options: `class,book,options') +%% scrkernel-paragraphs.dtx (with options: `class,book,option') +%% scrkernel-title.dtx (with options: `class,book,option') +%% scrkernel-tocstyle.dtx (with options: `class,book,option') +%% scrkernel-sections.dtx (with options: `class,book,option') +%% scrkernel-pagestyles.dtx (with options: `class,book,option') +%% scrkernel-floats.dtx (with options: `class,book,option') +%% scrkernel-footnotes.dtx (with options: `class,book,option') +%% scrkernel-listsof.dtx (with options: `class,book,option') +%% scrkernel-bibliography.dtx (with options: `class,book,option') +%% scrkernel-index.dtx (with options: `class,book,option') +%% scrkernel-listsandtabulars.dtx (with options: `class,book,option') +%% scrkernel-sections.dtx (with options: `class,book,execoption') +%% scrkernel-miscellaneous.dtx (with options: `class,book,execoption') +%% scrkernel-compatibility.dtx (with options: `class,book,body') +%% scrkernel-fonts.dtx (with options: `class,book,body') +%% scrkernel-language.dtx (with options: `class,book,body') +%% scrkernel-typearea.dtx (with options: `class,book,body') +%% scrkernel-paragraphs.dtx (with options: `class,book,body') +%% scrkernel-title.dtx (with options: `class,book,body') +%% scrkernel-tocstyle.dtx (with options: `class,book,body') +%% scrkernel-tocstyle.dtx (with options: `class,book,style,part') +%% scrkernel-tocstyle.dtx (with options: `class,book,style,chapter') +%% scrkernel-tocstyle.dtx (with options: `class,book,style,section') +%% scrkernel-tocstyle.dtx (with options: `class,book,style,default') +%% scrkernel-sections.dtx (with options: `class,book,body') +%% scrkernel-miscellaneous.dtx (with options: `class,book,body') +%% scrkernel-pagestyles.dtx (with options: `class,book,body') +%% scrlayer.dtx (with options: `class,book,body') +%% scrkernel-floats.dtx (with options: `class,book,body') +%% scrkernel-footnotes.dtx (with options: `class,book,body') +%% scrkernel-listsof.dtx (with options: `class,book,body') +%% scrkernel-bibliography.dtx (with options: `class,book,body') +%% scrkernel-index.dtx (with options: `class,book,body') +%% scrkernel-listsandtabulars.dtx (with options: `class,book,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrbook% +} +\newcommand*{\KOMAClassFileName}{\KOMAClassName.\@clsextension} +\edef\KOMAClassFileName{\KOMAClassFileName} +\newcommand*{\ClassName}{% + book% +} +\ProvidesClass{\KOMAClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: prepare) +\RequirePackage{tocbasic}[% + 2022/07/04 v3.37 KOMA-Script +] +\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}% +\AtAddToTocList[ToC]{\setuptoc{\@currext}{onecolumn}}% +\addtotoclist[ToC]{toc} +\Ifstr{\ext@toc}{toc}{}{% + \expandafter\addtotoclist + \expandafter[\expandafter T\expandafter o\expandafter C\expandafter ]% + \expandafter{\ext@toc}% +} +\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}% +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +\newif\if@openright +\@openrighttrue +\newcommand*{\scr@dotchangeatdocument}[1]{% + \ClassError{\KOMAClassName}{% + change of end dot feature after \string\begin{document}% + }{% + You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak + but this option is only allowed at the document preamble.\MessageBreak + See KOMA-Script manual for more information about.% + }% +} +\newif\if@altsecnumformat\@altsecnumformatfalse +\newif\if@autodot +\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue} +\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse} +\@autodotfalse +\newcommand*{\scr@altsecnumhook}{} +\AtBeginDocument{\scr@altsecnumhook} +\newcommand*{\scr@altsecnumhooktrue}{% + \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue +} +\newcommand*{\scr@altsecnumhookfalse}{% + \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse +} +\newcommand*{\scr@osectarg}{0} +\newcommand*{\scr@activate@xsection}[1]{% + \renewcommand*{\scr@osectarg}{#1}% +} +\IfLTXAtLeastTF{2020/10/01}{\NewHook{\KOMAClassName/appendix}}{} +\newcommand*{\size@part}{} +\newcommand*{\scr@fnt@part}{\size@part} +\newcommand*{\size@partnumber}{} +\newcommand*{\scr@fnt@partnumber}{\size@partnumber} +\aliaskomafont{partprefix}{partnumber} +\newcommand*{\scr@part@beforeskip}{% + \z@ \@plus 1fil + \baselineskip +} +\newcommand*{\scr@part@innerskip}{20\p@} +\newcommand*{\scr@part@afterskip}{% + \z@ \@plus 1fil +} +\newcommand*{\scr@part@style}{part} +\newcommand*{\partheadstartvskip}{% + \null\vskip-\baselineskip\vskip\@tempskipa +} +\newcommand*{\partheadmidvskip}{% + \par\nobreak + \vskip\@tempskipa +} +\newcommand*{\partheadendvskip}{% + \vskip\@tempskipa\newpage +} +\newcommand*{\partheademptypage}{% + \if@twoside\if@openright + \null% + \thispagestyle{empty}% + \newpage + \fi\fi +} +\newif\if@chapterprefix +\newcommand*{\size@chapter}{} +\newcommand*{\scr@fnt@chapter}{\size@chapter} +\newcommand*{\size@chapterprefix}{\size@chapter} +\newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix} +\newcommand*{\scr@chapter@beforeskip}{\z@} +\let\scr@chapter@beforeskip\z@ +\newcommand*{\scr@chapter@afterskip}{\z@} +\let\scr@chapter@afterskip\z@ +\newcommand*{\scr@chapter@innerskip}{\z@} +\let\scr@chapter@innerskip\z@ +\newcommand*{\scr@chapter@style}{chapter} +\newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} +\newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} +\newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa} +\newcommand*{\size@section}{} +\newcommand*{\scr@fnt@section}{\size@section} +\newcommand*{\size@subsection}{} +\newcommand*{\scr@fnt@subsection}{\size@subsection} +\newcommand*{\size@subsubsection}{} +\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection} +\newcommand*{\size@paragraph}{} +\newcommand*{\scr@fnt@paragraph}{\size@paragraph} +\newcommand*{\size@subparagraph}{} +\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph} +\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries} +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\newcommand* + {\scr@compatibility}{\scr@v@last} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\newif\if@scr@emulatestandardclasses +\let\scr@emulatestandardclassestrue\relax +\let\scr@emulatestandardclassesfalse\relax +\DeclareOption{emulatestandardclasses}{% + \let\if@scr@emulatestandardclasses\iftrue + \KOMAExecuteOptions{% + fontsize=10pt,% + headings=standardclasses,% + cleardoublepage=current + }% + \newcommand*{\defaultpapersize}{letter}% + \AtEndOfClass{% + \setkomafont{descriptionlabel}{\bfseries}% + \setkomafont{dictum}{\normalfont\small}% + \setkomafont{caption}{}% + \setkomafont{captionlabel}{}% + \setcapindent{0pt}% + \RequirePackage[pagestyleset=standard,markcase=upper]{scrlayer-scrpage}% + \PreventPackageFromLoading{scrpage2}% + \setkomafont{pagenumber}{\normalfont}% + \setkomafont{pageheadfoot}{\normalfont}% + \cfoot[\pagemark]{}% + }% +} +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \ClassWarningNoLine{\KOMAClassName}{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{version}{first}% + }{% + \ClassInfoNoLine{\KOMAClassName}{% + Switching compatibility level to `#1'% + }% + \edef\scr@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \ClassWarningNoLine{\KOMAClassName}{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\KOMA@kav@add{.\KOMAClassFileName}{version}{last} +\AtEndOfClass{% + \KOMA@key{version}[]{% + \ClassError{\KOMAClassName}{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + class.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@v@is@lt}[1]{% + \scr@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@gt}[1]{% + \scr@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@le}[1]{% + \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@ge}[1]{% + \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{draft}{false} +\KOMA@DeclareStandardOption +{final}{draft=false} +\KOMA@key{overfullrule}[true]{% + \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles} +\newcommand*{\@gr@gsffamily}{% + \if@egregdoesnotlikesansseriftitles\else\sffamily\fi +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\providecommand*\@ptsize{% + 11% +} +\newcommand*{\@pt@scan}{% + \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan% +} +\newcommand*{\@pt@@scan}{} +\def\@pt@@scan #1pt#2\@pt@@scan{% + \Ifstr{#2}{pt}{% + \Ifnumber{#1}{% + \Ifstr{#1}{10}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{11}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{12}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }% + }% + } + }{\@headlines}% + }{\@headlines}% +} +\providecommand*{\@fontsizefilebase}{scrsize} +\KOMA@key{fontsize}{% + \scr@ifundefinedorrelax{changefontsizes}{% + \@defaultunits\@tempdima#1pt\relax\@nnil + \edef\@ptsize{#1}% + }{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{fontsize}{#1}% +} +\DeclareOption{enabledeprecatedfontcommands}{% + \ClassWarningNoLine{\KOMAClassName}{% + deprecated option `enabledeprecatedfontcommands'.\MessageBreak + Note, that this option was already depreacted when\MessageBreak + it has been defined. Support for old font commands\MessageBreak + has been removed from KOMA-Script more than one\MessageBreak + decade ago. It is not recommended to use them any\MessageBreak + longer. Therefore usage of this class option also\MessageBreak + is not recommended% + }% + \let\scr@defineobsoletefonts\@ne +} +\scr@ifundefinedorrelax{scr@defineobsoletefonts}{% + \let\scr@defineobsoletefonts\z@ +}{} +\BeforePackage{tex4ht}{% + \let\scr@defineobsoletefonts\thr@@ +} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\KOMA@key{twoside}[true]{% + \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi% + \Ifstr{#1}{semi}{% + \@twosidetrue + \FamilyKeyStateProcessed + }{% + \def\FamilyElseValue{, `semi'}% + \KOMA@set@ifkey{twoside}{% + @twoside% + }{#1}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twoside\flushbottom + \else + \if@twocolumn\sloppy\flushbottom\else\raggedbottom\fi + \fi + \fi + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{twoside}{#1}% + \fi +} +\KOMAExecuteOptions{twoside=true} +\KOMA@DeclareStandardOption% + {oneside}{twoside=false} +\KOMA@key{twocolumn}[true]{% + \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi% + \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{twocolumn}{@twocolumn}% + \if@atdocument\expandafter\@firstofone + \else\@ifpackageloaded{typearea}{\expandafter\@firstofone} + {\expandafter\AtEndOfClass}\fi + {\expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else + \onecolumn + \if@twoside\flushbottom\else + \raggedbottom + \fi + \fi + \fi}% + \fi +} +\AtEndOfClass{% + \expandafter\ifnum\scr@v@is@lt{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else\onecolumn\if@twoside\flushbottom\else\raggedbottom\fi\fi + \fi +} +\KOMAExecuteOptions{twocolumn=false} +\KOMA@DeclareStandardOption% + {onecolumn}{twocolumn=false} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{% + \Ifstr{#1}{}{% + \Ifstr{#3}{BCOR}{% + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifdimen{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifdimen{#2}{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% +} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{% + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifnumber{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifnumber{#2}{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }% + \else\scr@pti@nerr@r\fi + \else\@BCOR\fi +} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines% +} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \PassOptionsToPackage{#1headlines}{typearea} + \else\@DIV\fi +} +\newcommand*{\x@paper}{% + \expandafter\x@@paper\CurrentOption paper\x@@paper% +} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{% + \Ifstr{#3}{paper}{% + \Ifnumber{#2}{% + \Ifstr{#1}{a}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{b}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{c}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{d}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{\scr@pti@nerr@r}% + }% + }% + }% + }{\scr@pti@nerr@r}% + }{% + \@pt@scan + }% +} +\newcommand*{\scr@pti@nerr@r}{ + \OptionNotUsed +} +\DeclareOption*{% + \x@paper} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\setparsizes}[3]{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% + \def\scr@parindent{#1}% + \def\scr@parskip{#2}% + \def\scr@parfillskip{#3}% + \def\par@update{% + \if@atdocument\let\par@update\default@par@update\fi + \par@updaterelative + }% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{false}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{never}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full*}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half*}% +} +\newcommand*{\f@parindent}{\the\parindent} +\newcommand*{\f@parskip}{\the\parskip} +\newcommand*{\f@parfillskip}{\the\parfillskip} +\newcommand*{\scr@parindent}{1em} +\newcommand*{\scr@parskip}{\z@} +\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil} +\AtEndOfClass{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% +} +\newcommand*{\par@update}{} +\let\par@update\relax +\newcommand*{\default@par@update}{} +\let\default@par@update\relax +\AtBeginDocument{\par@update} +\KOMA@key{parskip}[true]{% + \begingroup + \KOMA@set@ncmdkey{parskip}{@tempa}{% + {never}{0},% + {false}{1},{off}{1},{no}{1},% + {full-}{2},% + {half-}{3},% + {full}{4},{true}{4},{on}{4},{yes}{4},% + {half}{5},% + {full+}{6},% + {half+}{7},% + {full*}{8},% + {half*}{9},% + {relative}{10},% + {absolute}{11}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\number\@tempa% 0 + \endgroup + \setparsizes{1em}{\z@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{never}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 1 + \endgroup + \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 2 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 3 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 4 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 5 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 6 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .3333\linewidth\@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 7 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .3333\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 8 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 9 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 10 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{relative}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\par@updaterelative + \fi + \let\default@par@update=\par@updaterelative + }% + \or%11 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\relax + \fi + \let\default@par@update=\relax + }% + \else% should never be + \endgroup + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@DeclareDeprecatedOption{parskip-}{parskip=full-} +\KOMA@DeclareDeprecatedOption{parskip+}{parskip=full+} +\KOMA@DeclareDeprecatedOption{parskip*}{parskip=full*} +\KOMA@DeclareDeprecatedOption{halfparskip}{parskip=half} +\KOMA@DeclareDeprecatedOption{halfparskip-}{parskip=half-} +\KOMA@DeclareDeprecatedOption{halfparskip+}{parskip=half+} +\KOMA@DeclareDeprecatedOption{halfparskip*}{parskip=half*} +\KOMA@DeclareDeprecatedOption{parindent}{parskip=false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute} +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@titlepage +\@titlepagetrue +\newif\if@titlepageiscoverpage +\KOMA@key{titlepage}[true]{% + \Ifstr{#1}{firstiscover}{% + \@titlepagetrue + \@titlepageiscoverpagetrue + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + }{% + \def\FamilyElseValue{, `firstiscover'}% + \KOMA@set@ifkey{titlepage}{@titlepage}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@remove{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{titlepage}{@titlepage}% + \@titlepageiscoverpagefalse + \fi + }% +} +\KOMA@kav@xadd{.% + \KOMAClassFileName +}{titlepage}{\if@titlepage true\else false\fi} +\KOMA@DeclareStandardOption% + {notitlepage}{titlepage=false} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{open}{% + \KOMA@set@ncmdkey{open}{@tempa}{% + {any}{0},% + {right}{1},% + {left}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{open}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openany}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openright}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openleft}% + \ifcase \@tempa\relax + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}% + \@openrightfalse + \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% + \or + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}% + \@openrighttrue + \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% + \or + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openleft}% + \@openrighttrue + \renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}% + \fi + \fi +} +\KOMA@DeclareStandardOption{openright}{open=right} +\KOMA@DeclareStandardOption{openany}{open=any} +\KOMA@key{numbers}{% + \KOMA@set@ncmdkey{numbers}{@tempa}{% + {autoendperiod}{0},{autoenddot}{0},{auto}{0},% + {endperiod}{1},{withendperiod}{1},{periodatend}{1},% + {enddot}{1},{withenddot}{1},{dotatend}{1},% + {noendperiod}{2},{noperiodatend}{2},% + {noenddot}{2},{nodotatend}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}% + \ifcase \@tempa\relax + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\@empty + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhooktrue + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhookfalse + \fi + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot} +\KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot} +\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage} +\@scr@autoloadbookmarkpackagetrue +\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true} +\AfterAtEndOfPackage{hyperref}{% + \AtBeginDocument{% + \@ifpackageloaded{bookmark}{}{% + \if@scr@autoloadbookmarkpackage + \scr@ifundefinedorrelax{Hy@driver}{% + \ClassWarning{\KOMAClassName}{% + `hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak + This should not happen!\MessageBreak + Maybe `hyperref' not loaded or unknown version?% + }% + }{% + \Ifstr{\Hy@driver}{hdvips}{% + \providecommand*{\BookmarkDriverDefault}{dvips}% + }{% + \Ifstr{\Hy@driver}{hdvipdfm}{% + \providecommand*{\BookmarkDriverDefault}{dvipdfm}% + }{% + \Ifstr{\Hy@driver}{hdvipson}{% + \providecommand*{\BookmarkDriverDefault}{dvipsone}% + }{% + \Ifstr{\Hy@driver}{htexture}{% + \providecommand*{\BookmarkDriverDefault}{textures}% + }{% + }% + }% + }% + }% + }% + \ClassInfo{\KOMAClassName}{% + loading recommended package `bookmark'.\MessageBreak + Using `bookmark' together with `hyperref' is + recommended,\MessageBreak + because of handling of possible bookmark level gaps.\MessageBreak + You can avoid loading `bookmark' with KOMA-Script + option\MessageBreak + `bookmarkpackage=false' before \string\begin{document} + and\MessageBreak + you can avoid this message adding:\MessageBreak + \space\space\string\usepackage + \scr@ifundefinedorrelax{BookmarkDriverDefault}{}{% + [\BookmarkDriverDefault]% + }{bookmark}\MessageBreak + before \string\begin{document}% + }% + \@ifundefined{es@quoting}{% + \RequirePackage{bookmark}% + }{% + \ifx\es@quoting\activatequoting + \ClassInfo{\KOMAClassName}{% + temporary deactivation of babel-spanish quoting + }% + \deactivatequoting + \RequirePackage{bookmark}% + \ClassInfo{\KOMAClassName}{% + reactivation of babel-spanish quoting + }% + \activatequoting + \else + \RequirePackage{bookmark}% + \fi + }% + \ifx\@beginmainauxhook\relax + \else + \if@filesw + \ClassWarning{\KOMAClassName}{% + seems someone has broken package `auxhook'.\MessageBreak + Usually this happens, if `auxhook' is loaded or used\MessageBreak + implicitly or explicitly by patching + \string\document% + \scr@ifundefinedorrelax{AtEndPreamble}{}{% + \MessageBreak + or via etoolbox command \string\AtEndPreamble% + }.\MessageBreak + Trying an emergency workaround.\MessageBreak + You can avoid this warning adding:\MessageBreak + \space\space\string\usepackage{auxhook}\MessageBreak + before \string\begin{document}% + }% + \@beginmainauxhook + \fi + \fi + \fi + }% + }% +} +\KOMA@key{chapterprefix}[true]{% + \KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.\KOMAClassFileName}% + {chapterprefix}{@chapterprefix}% + \KOMA@kav@remove{.\KOMAClassFileName}% + {headings}{twolinechapter}% + \KOMA@kav@remove{.\KOMAClassFileName}% + {headings}{onelinechapter}% + \KOMA@kav@xadd{.\KOMAClassFileName}% + {headings}{% + \if@chapterprefix twolinechapter\else onelinechapter\fi + }% + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}% +\KOMA@DeclareDeprecatedOption{nochapterprefix}{chapterprefix=false} +\IfLTXAtLeastTF{2020/10/01}{% + \KOMA@key{appendixprefix}[true]{% + \Ifstr{#1}{default}{% + \KOMA@kav@removekey{.\KOMAClassFileName}{appendixprefix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \IfHookEmptyTF{\KOMAClassName/appendix}{}{% + \RemoveFromHook{\KOMAClassName/appendix}[appendixprefix]% + }% + \FamilyKeyStateProcessed + }{% + \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \IfHookEmptyTF{\KOMAClassName/appendix}{}{% + \RemoveFromHook{\KOMAClassName/appendix}[appendixprefix]% + }% + \if@tempswa + \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}% + \AddToHook{\KOMAClassName/appendix}[appendixprefix]% + {\@chapterprefixtrue}% + \else + \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}% + \AddToHook{\KOMAClassName/appendix}[appendixprefix]% + {\@chapterprefixfalse}% + \fi + \fi + }% + }% +}{% + \KOMA@key{appendixprefix}[true]{% + \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \if@tempswa + \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}% + \@ifundefined{appendixmore}{% + \def\appendixmore{\@chapterprefixtrue}% + }{% + \l@addto@macro\appendixmore{\@chapterprefixtrue}% + }% + \else + \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}% + \@ifundefined{appendixmore}{% + \def\appendixmore{\@chapterprefixfalse}% + }{% + \l@addto@macro\appendixmore{\@chapterprefixfalse}% + }% + \fi + \fi + }% +} +\KOMA@DeclareDeprecatedOption{noappendixprefix}{appendixprefix=false} +\KOMA@ifkey{chapterentrydots}{@chapterentrywithdots} +\KOMA@key{headings}{% + \KOMA@set@ncmdkey{headings}{@tempa}{% + {big}{0},% + {normal}{1},% + {small}{2},% + {openany}{3},% + {openright}{4},% + {openleft}{5},% + {twolinechapter}{6},{chapterprefix}{6},{chapterwithprefix}{6},% + {chapterwithprefixline}{6},% + {onelinechapter}{7},{nochapterprefix}{7},{chapterwithoutprefix}{7},% + {chapterwithoutprefixline}{7},% + {twolineappendix}{8},{appendixprefix}{8},{appendixwithprefix}{8},% + {appendixwithprefixline}{8},% + {onelineappendix}{9},{noappendixprefix}{9},{appendixwithoutprefix}{9},% + {appendixwithoutprefixline}{9},% + {optiontotocandhead}{10},{optiontoheadandtoc}{10},% + {optiontotoc}{11},% + {optiontohead}{12},% + {standardclasses}{13}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax% big + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{big}% + \renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\Huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\huge}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % normal + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}% + \renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\LARGE}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % small + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{small}% + \renewcommand*{\scr@chapter@beforeskip}{-2.8\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\LARGE}% + \setkomafont{partnumber}{\LARGE}% + \setkomafont{chapter}{\Large}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\large}% + \setkomafont{subsection}{\normalsize}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % openany + \KOMAoptions{open=any}% + \or % openright + \KOMAoptions{open=right}% + \or % openleft + \KOMAoptions{open=left}% + \or % twolinechapter + \KOMAoptions{chapterprefix=true}% + \or % onelinechapter + \KOMAoptions{chapterprefix=false}% + \or % twolineappendix + \KOMAoptions{appendixprefix=true}% + \or % onelineappendix + \KOMAoptions{appendixprefix=false}% + \or % optiontotocandhead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \scr@activate@xsection{3}% + \or % optiontotoc + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}% + \scr@activate@xsection{2}% + \or % optiontohead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}% + \scr@activate@xsection{1}% + \or % standardclasses + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}% + \renewcommand*{\scr@chapter@beforeskip}{-50\p@}% + \renewcommand*{\scr@chapter@afterskip}{40\p@}% + \renewcommand*{\scr@chapter@innerskip}{20\p@}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{\vskip\@tempskipa}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\Huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\Huge}% + \setkomafont{chapterprefix}{\huge}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \renewcommand*{\sectfont}{\bfseries}% + \KOMAoptions{open=right,chapterprefix=true}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{big} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter} +\KOMA@DeclareDeprecatedOption{bigheadings}{headings=big} +\KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal} +\KOMA@DeclareDeprecatedOption{smallheadings}{headings=small} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{headsepline}{@hsl}% +\KOMA@kav@add{.\KOMAClassFileName}{headsepline}{false} +\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false} +\KOMA@ifkey{footsepline}{@fsl}% +\KOMA@kav@add{.\KOMAClassFileName}{footsepline}{false} +\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false} +\KOMA@key{cleardoublepage}{% + \begingroup + \def\@tempc{% + \endgroup + \KOMA@unknown@keyval{cleardoublepage}{#1}{% + 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% + }% + \Ifstr{#1}{current}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublestandardpage}% + \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% + \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{current}% + }% + }{% + \Ifnotundefined{ps@#1}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{#1}% + }% + }{% + \ifx\@currname\KOMAClassName + \ifx\@currext\@clsextension + \Ifstr{#1}{headings}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}% + {cleardoublepage}{#1}% + }% + }{}% + \fi + \fi + }% + }% + \@tempc +} +\newcommand*{\cleardoubleoddstandardpage}{} +\let\cleardoubleoddstandardpage=\cleardoublepage +\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleoddstandardpage}} +\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} +\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} +\newcommand*{\cleardoubleevenstandardpage}{% + \clearpage + \if@twoside\ifodd\c@page + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi + \fi\fi +} +\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleevenstandardpage}} +\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} +\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} +\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} +\renewcommand*{\cleardoublepage}{% + \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax + \cleardoubleemptypage + \else + \cleardoublestandardpage + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{cleardoublepage}{% + \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi +} +\AtEndOfClass{% + \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% + {% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{cleardoublepage}{\@tempa}% +} +\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} +\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} +\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoublestandardpage}} +\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} +\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} +\KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty} +\KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain} +\KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@captionabove\@captionabovefalse +\newif\if@tablecaptionabove\@tablecaptionabovefalse +\newif\if@figurecaptionabove\@figurecaptionabovefalse +\newif\ifonelinecaptions\onelinecaptionstrue +\newcommand*{\scap@pos}{r} +\newcommand*{\scap@valign}{b} +\KOMA@key{captions}{% + \KOMA@set@ncmdkey{captions}{@tempa}{% + {heading}{0},{above}{0},{top}{0},% + {signature}{1},{below}{1},{bot}{1},{bottom}{1},% + {tableheading}{2},% + {tableabove}{2},{abovetable}{2},{abovetabular}{2},{topattable}{2},% + {tablesignature}{3},% + {tablebelow}{3},{belowtable}{3},{belowtabular}{3},{bottomattable}{3},% + {figureheading}{4},{figureabove}{4},{abovefigure}{4},{topatfigure}{4},% + {figuresignature}{5},{figurebelow}{5},{belowfigure}{5},{bottomatfigure}{5},% + {oneline}{6},% + {nooneline}{7},% + {rightbeside}{8},{besideright}{8},% + {leftbeside}{9},{besideleft}{9},% + {innerbeside}{10},{besideinner}{10},% + {outerbeside}{11},{besideouter}{11},% + {topbeside}{12},{besidetop}{12},% + {centeredbeside}{13},{besidecentered}{13},% + {middlebeside}{13},{besidemiddle}{13},% + {bottombeside}{14},{besidebottom}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % heading + \@tablecaptionabovetrue + \@figurecaptionabovetrue + \@captionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{heading}% + \or % signature + \@tablecaptionabovefalse + \@figurecaptionabovefalse + \@captionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{signature}% + \or % tableheading + \@tablecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tableheading}% + \or % tablesignature + \@tablecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature}% + \or % figureheading + \@figurecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figureheading}% + \or % figuresignature + \@figurecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature}% + \or % oneline + \onelinecaptionstrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline}% + \or % nooneline + \onelinecaptionsfalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{nooneline}% + \or % rightbeside + \renewcommand*{\scap@pos}{r}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside}% + \or % leftbeside + \renewcommand*{\scap@pos}{l}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{leftbeside}% + \or % innerbeside + \renewcommand*{\scap@pos}{i}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{innerbeside}% + \or % outerbeside + \renewcommand*{\scap@pos}{o}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{outerbeside}% + \or % topbeside + \renewcommand*{\scap@valign}{t}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{topbeside}% + \or % centeredbeside + \renewcommand*{\scap@valign}{c}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{centeredbeside}% + \or % bottombeside + \renewcommand*{\scap@valign}{b}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{signature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside} +\KOMA@DeclareDeprecatedOption{tablecaptionabove}{captions=tableheading} +\KOMA@DeclareDeprecatedOption{tablecaptionbelow}{captions=tablesignature} +\newif\if@komalongtable\@komalongtabletrue +\DeclareOption{origlongtable}{\@komalongtablefalse} +\KOMA@DeclareDeprecatedOption{onelinecaption}{captions=oneline} +\KOMA@DeclareDeprecatedOption{noonelinecaption}{captions=nooneline} +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{footnotes}{% + \ifx\@footnotemark\scr@saved@footnotemark + \else + \ifx\@footnotemark\scr@footnotemark + \else + \ClassWarning{\KOMAClassName}{% + Change of `\string\@footnotemark' detected!\MessageBreak + Use of `footnotes=#1' may break\MessageBreak + another package!\MessageBreak + Maybe you should remove the usage of\MessageBreak + option `footnotes=#1'}% + \fi + \fi + \Ifstr{#1}{multiple}{% + \let\@footnotemark\scr@footnotemark + \def\FN@mf@prepare{\scr@mf@prepare}% + \def\scr@footmisc@options{multiple}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{multiple}% + }{% + \Ifstr{#1}{nomultiple}{% + \let\@footnotemark\scr@saved@footnotemark + \let\FN@mf@prepare\relax + \let\scr@footmisc@options\@empty + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + }{% + \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% + }% + }% +} +\AtBeginDocument{% + \ifx\@footnotemark\scr@saved@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + \else\ifx\@footnotemark\scr@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{multiple}% + \fi\fi +} +\newcommand*{\scr@footmisc@options}{} +\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} +\newcommand*{\scr@saved@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark +\expandafter{\scr@saved@footnotemark} +\newcommand*{\scr@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi + \@makefnmark + \csname FN@mf@prepare\endcsname + \ifhmode\spacefactor\@x@sf\fi + \relax} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: option) +\newif\if@tocleft +\KOMA@key{toc}{% + \KOMA@set@ncmdkey{toc}{@tempa}{% + {noindex}{0},{noidx}{0},% + {index}{1},{idx}{1},% + {indexnumbered}{2},{idxnumbered}{2},{numberedindex}{2},{numberedidx}{2},% + {nolistof}{3},{nolistsof}{3},% + {listof}{4},{listsof}{4},% + {listofnumbered}{5},{numberedlistof}{5},% + {listsofnumbered}{5},{numberedlistsof}{5},% + {nobibliography}{6},{nobib}{6},% + {bibliography}{7},{bib}{7},% + {bibliographynumbered}{8},{bibnumbered}{8},{numberedbibliography}{8},% + {numberedbib}{8},% + {flat}{9},{left}{9},% + {graduated}{10},{indent}{10},{indented}{10},% + {indenttextentries}{11},{indentunnumbered}{11},{numberline}{11},% + {leftaligntextentries}{12},{leftalignunnumbered}{12},{nonumberline}{12},% + {chapterentrywithdots}{13},{chapterentrydotfill}{13}, + {chapterentrywithoutdots}{14},{chapterentryfill}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % noindex + \KOMAoptions{index=notoc}% + \or % index + \KOMAoptions{index=totoc}% + \or % indexnumbered + \KOMAoptions{index=numbered}% + \or % listof + \KOMAoptions{listof=notoc}% + \or % nolistof + \KOMAoptions{listof=totoc}% + \or % listofnumbered + \KOMAoptions{listof=numbered}% + \or % nobibliography + \KOMAoptions{bibliography=nottotoc}% + \or % bibliography + \KOMAoptions{bibliography=totoc}% + \or % bibliographynumbered + \KOMAoptions{bibliography=totocnumbered}% + \or % flat + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{flat}% + \@toclefttrue + \or % graduated + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{graduated}% + \@tocleftfalse + \or % indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indenttextentries}% + \expandafter\setuptoc\expandafter{\ext@toc}{numberline}% + \or % leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \expandafter\unsettoc\expandafter{\ext@toc}{numberline}% + \or % chapterentrywithdots/sectionentrywithdots + \KOMAoptions{chapterentrydots=true}% + \or % chapterentrywithoutdots/sectionentrywithoutdots + \KOMAoptions{chapterentrydots=false}% + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{tocleft}{toc=flat} +\KOMA@DeclareDeprecatedOption{tocindent}{toc=graduated} +\newcommand*{\float@@listhead}{% + \chapter* +} +\newif\if@dynlist +\KOMA@key{listof}{% + \KOMA@set@ncmdkey{listof}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {flat}{3},{left}{3},% + {graduated}{4},{indent}{4},{indented}{4},% + {leveldown}{5}, + {standardlevel}{6}, + {entryprefix}{7}, + {indenttextentries}{8},{indentunnumbered}{8},{numberline}{8},% + {leftaligntextentries}{9},{leftalignunnumbered}{9},{nonumberline}{9}% + ,{chapterentry}{10},{withchapterentry}{10},% + {nochaptergap}{11},{ignorechapter}{11},% + {chaptergapsmall}{12},{smallchaptergap}{12},% + {chaptergapline}{13},{onelinechaptergap}{13}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}% + \renewcommand*{\float@@listhead}{% + \chapter* + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{totoc}% + \renewcommand*{\float@@listhead}{% + \addchap + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{numbered}% + \renewcommand*{\float@@listhead}{% + \chapter + }% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% flat + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{flat}% + \@dynlisttrue + \or% graduated + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}% + \@dynlistfalse + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leveldown}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leveldown}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{standardlevel}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \or% entryprefix + \KOMA@kav@add{.\KOMAClassFileName}{listof}{entryprefix}% + \@dynlisttrue + \doforeachtocfile[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \AtAddToTocList[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \or% indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{indenttextentries}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numberline}% + } + \or% leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numberline}% + } + \or% chapterentry + \KOMAoptions{chapteratlists=entry}% + \or% chaptergap + \KOMAoptions{chapteratlists=\z@}% + \or% chaptergapsmall + \KOMAoptions{chapteratlists=10\p@}% + \or% chaptergapline + \KOMAoptions{chapteratlists=\baselineskip}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries} +\KOMA@DeclareDeprecatedOption{liststotoc}{listof=totoc} +\KOMA@DeclareDeprecatedOption{liststotocnumbered}{listof=numbered} +\KOMA@DeclareDeprecatedOption{listsleft}{listof=flat} +\KOMA@DeclareDeprecatedOption{listsindent}{listof=graduated} +\newcommand*{\@chapterlistsgap}{10\p@} +\newif\if@chaptertolists\@chaptertolistsfalse +\KOMA@key{chapteratlists}[entry]{% + \FamilyKeyStateProcessed + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chapterentry}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergap}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapsmall}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapline}% + \Ifstr{#1}{entry}{% + \@chaptertoliststrue\renewcommand*{\@chapterlistsgap}{\z@}% + \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}{entry}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chapterentry}% + }{% + \@chaptertolistsfalse\renewcommand*{\@chapterlistsgap}{#1}% + \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}% + {\@chapterlistsgap}% + \def\reserved@a{\z@}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergap}% + \else + \def\reserved@a{10\p@}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}% + \else + \def\reserved@a{\baselineskip}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapline}% + \fi + \fi + \fi + }% +} +\BeforeTOCHead{\@chaptertolistsfalse} +\KOMA@kav@add{.\KOMAClassFileName}{chapteratlists}{10\p@}% +\KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}% +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand{\newbibstyle}[3][]{% + \scr@ifundefinedorrelax{scr@bibstyle@#2}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \ClassError{\KOMAClassName}{% + parent bibliography style `#1' does not exist}{% + You've told me to define the new bibliography style `#2'\MessageBreak + to be a child of bibliography style `#1', but bibliography + style\MessageBreak + `#1' does not exist.\MessageBreak + You have to remove the parent declaration or use an existing parent! + See the KOMA-Script manual for more information.% + }% + }{% + \@namedef{scr@bibstyle@#2}{% + \let\@openbib@code\@empty + \let\newblock\@empty + \let\bib@beginhook\@empty + \let\bib@endhook\@empty + \@ifundefined{scr@current@bibstyle}{}{% + \Ifstr{\scr@current@bibstyle}{}{}{% + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + }% + }% + \def\scr@current@bibstyle{#2}% + \KOMA@kav@xadd{.\KOMAClassFileName}{bibliography}{#2}% + \csname scr@bibstyle@#1\endcsname + #3% + }% + \ifx\scr@bibstylelist\@empty + \edef\scr@bibstylelist{`#2'}% + \else + \edef\scr@bibstylelist{\scr@bibstylelist, `#2'}% + \fi + }% + }{% + \ClassError{\KOMAClassName}{bibliography style `#2' already exists}{% + You've told me to define the new bibliography style `#2',\MessageBreak + but this style already exists.\MessageBreak + You have to use another bibliography style name.\MessageBreak + See the KOMA-Script manual for more information.% + }% + }% +} +\newcommand*{\scr@bibstyle@}{} +\newcommand*{\bib@beginhook}{} +\newcommand*{\bib@endhook}{} +\newcommand*{\scr@bibstylelist}{} +\newcommand*{\@openbib@code}{} +\newcommand*{\newblock}{} +\newbibstyle{openstyle}{% + \renewcommand*{\@openbib@code}{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand*{\newblock}{\par}% +} +\newbibstyle{oldstyle}{% + \renewcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}% +} +\scr@bibstyle@oldstyle +\newcommand*{\bib@heading}{% + \bibliography@heading{\bibname}% +} +\newcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section*{#1}% + \addsecmark{#1}% + \else + \chapter*{#1}% + \@mkdouble{\MakeMarkcase{#1}}% + \fi +}% +\newif\ifbib@leveldown +\KOMA@key{bibliography}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \KOMA@set@ncmdkey{bibliography}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{notoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section*{##1}% + \@mkright{\MakeMarkcase{##1}}% + \else + \chapter*{##1}% + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{totoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \addsec{##1}% + \else + \if@chaptertolists + \@chaptertolistsfalse\addchap{##1}\@chaptertoliststrue + \else + \addchap{##1}% + \fi + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{numbered}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section{##1}% + \else + \if@chaptertolists + \@chaptertolistsfalse\chapter{##1}\@chaptertoliststrue + \else + \chapter{##1} + \fi + \@mkdouble{\MakeMarkcase{\chaptermarkformat ##1}}% + \fi + } + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{leveldown}% + \bib@leveldowntrue + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{standardlevel}% + \bib@leveldownfalse + \fi + }{% + \FamilyKeyStateProcessed + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + \csname scr@bibstyle@#1\endcsname + }% +} +\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle} +\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc} +\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi*% +} +\newif\ifidx@leveldown +\KOMA@key{index}{% + \KOMA@set@ncmdkey{index}{@tempa}{% + {notoc}{0},{nottotoc}{0},{default}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{numberedtotoc}{2},{tocnumbered}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi*% + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{toc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\addsec + \else + \expandafter\addchap + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{numbered}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{leveldown}% + \idx@leveldowntrue + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}% + \idx@leveldownfalse + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex} +\KOMA@kav@add{.\KOMAClassFileName}{index}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel} +\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{headings=openright} +\KOMAExecuteOptions{numbers=autoendperiod} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{% + parskip=false,% + headings=big% +} +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +\AtBeginDocument{% + \begingroup + \def\reserved@a#1/#2/#3 #4\@nil{\@tempcnta=#1\relax\@tempcntb=#2\relax}% + \expandafter\reserved@a\KOMAScriptVersion\@nil + \edef\reserved@a{\the\numexpr\@tempcnta+2\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{% + \ClassWarningNoLine{\KOMAClassName}{% + Your are using a KOMA-Script version, that has not\MessageBreak + been tested with your more than one year newer\MessageBreak + LaTeX release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + this could result in a lot of issues.\MessageBreak + Please have a look at\MessageBreak + and if this\MessageBreak + shows a newer KOMA-Script version than\MessageBreak + `\KOMAScriptVersion', we suggest to do\MessageBreak + an update of KOMA-Script or maybe even the whole\MessageBreak + TeX distribution% + }% + }{% + \edef\reserved@a{\the\numexpr\@tempcnta-4\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{}{% + \ClassWarningNoLine{\KOMAClassName}{% + You are using a KOMA-Script version, that has not been\MessageBreak + tested with your more than four years older LaTeX\MessageBreak + release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + KOMA-Script releases cannot be tested with all past\MessageBreak + LaTeX releases.\MessageBreak + \ifnum\scr@compatibility<\scr@v@last + So even if you are using option `version' implicitly\MessageBreak + or explicitly, this + \else + So this + \fi + could result in a lot of issues.\MessageBreak + We recommend, to update the whole TeX distribution.\MessageBreak + If this could not be done, we suggest to use at\MessageBreak + least an older KOMA-Script release, e.g., from\MessageBreak + % + }% + }% + }% + \endgroup +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{fontsize}% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\footnotesep}{.7\@tempdimc}% + \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus + .6\@tempdimc}% + \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{0\p@ \@plus 1fil}% + \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{0\p@ \@plus 1fil}% + \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@dblfpbot}{\@fptop}% + \fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% + \ClassWarning{\KOMAClassName}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil +\edef\@tempa{\@ptsize}% +\setlength{\@tempdimb}{\@tempdima}% +\edef\@tempb{\strip@pt\@tempdimb}% +\addtolength{\@tempdimb}{-10\p@}% +\edef\@ptsize{\strip@pt\@tempdimb}% +\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% +}{% + \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}% + }{% + \InputIfFileExists{bk\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `bk\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% + \InputIfFileExists{size\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `size\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% + \edef\@tempa{% + \noexpand\changefontsizes{\@tempa}% + \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% + }\@tempa + }% + }% + }% +} +\newcommand*{\scr@DeclareOldFontCommand}[3]{% + \ifnum\scr@defineobsoletefonts<\z@\else + \ifnum\scr@defineobsoletefonts>\tw@ + \DeclareOldFontCommand{#1}{#2}{#3}% + \else + \DeclareOldFontCommand{#1}{% + \scr@ErrorWarningInfo{#1}{#2}#2% + }{% + \scr@ErrorWarningInfo{#1}{#3}#3% + }% + \fi + \fi +} +\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{% + \ifnum \scr@defineobsoletefonts=\z@ + \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{% + You should note that since 1994 LaTeX2e provides a new font selection + scheme\MessageBreak + called NFSS2 with several new, combinable font commands. + KOMA-Script\MessageBreak + classes had defined the old font commands like `\string#1' + only for compatibility\MessageBreak + with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, + these\MessageBreak + commands are deprecated and undocumented at least since 2003. Since + 2013\MessageBreak + KOMA-Script classes warned about soon removement of these deprecated + commands.\MessageBreak + Now, after two decades of LaTeX2e and NFSS2, these commands will not + work any\MessageBreak + more. If loading a package results in this error message, you should + contact\MessageBreak + the author of that package and ask him to replace the deprecated font + command\MessageBreak + `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should + reconfigure\MessageBreak + or replace the package. If you have used the old font command + `\string#1' yourself,\MessageBreak + you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak + To make it work for now, you can use the already also deprecated class + option\MessageBreak + `enabledeprecatedfontcommands'.% + }% + \else + \ifcase \scr@defineobsoletefonts + \or + \expandafter\ClassWarning + \or + \expandafter\ClassInfo + \else + \expandafter\@gobbletwo + \fi + {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak + You should note, that since 1994 LaTeX2e provides a\MessageBreak + new font selection scheme called NFSS2 with several\MessageBreak + new, combinable font commands. New KOMA-Script classes\MessageBreak + defined the old font commands like `\string#1' only for\MessageBreak + compatibility with LaTeX 2.09 document styles of\MessageBreak + Script 2.0. These commands are deprecated and\MessageBreak + undocumented at least since 2003. Since 2013,\MessageBreak + KOMA-Script classes warned about soon removement of\MessageBreak + these deprecated commands. Now, after two decades of\MessageBreak + LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak + not work any longer. If loading a package results in\MessageBreak + this message you should contact the author of that\MessageBreak + package and ask him to replace the depracted font\MessageBreak + command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak + Otherwise you should reconfigure or replace the\MessageBreak + package. If you have used the old font command\MessageBreak + `\string #1' yourself you should replace it, e.g., by\MessageBreak + `\detokenize{#2}'% + }% + \fi +} +\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{% + \@nomath\sfb} +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year}% +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\let\@BCOR =\relax +\let\@@BCOR =\relax +\let\@DIV =\relax +\let\@@DIV =\relax +\let\@headlines =\relax +\let\@@headlines =\relax +\let\x@paper =\relax +\let\x@@paper =\relax +\let\scr@pti@nerr@r =\relax +\RequirePackage{typearea}[\KOMAScriptVersion] +\if@scr@emulatestandardclasses + \Ifstr{\@lastdiv}{areaset}{}{% + \ifnum\@lastdiv=\z@ + \setlength{\textwidth}{\dimexpr \paperwidth-2in\relax} + \ifdim \f@size\p@<10.5\p@ + \setlength{\@tempdimb}{345\p@} + \else\ifdim \f@size\p@<11.5\p@ + \setlength{\@tempdimb}{360\p@} + \else + \setlength{\@tempdimb}{390\p@} + \fi + \fi + \if@twocolumn + \ifdim\@textwidth>2\@tempdimb\relax + \setlength{\textwidth}{2\@tempdimb} + \fi + \else + \ifdim\textwidth>\@tempdimb + \setlength{\textwidth}{\@tempdimb} + \fi + \fi + \@settopoint\textwidth + \setlength{\@tempdima}{\dimexpr \paperheight-3.5in\relax} + \divide\@tempdima\baselineskip + \@tempcnta=\@tempdima + \setlength{\textheight}{\@tempcnta\baselineskip} + \addtolength{\textheight}{\topskip} + \edef\reserved@a{% + \noexpand\@areasetadvancedtrue + \noexpand\areaset[current]{\noexpand\textwidth}{\noexpand\textheight}% + \if@areasetadvanced\else\noexpand\@areasetadvancedfalse\fi + }\reserved@a + \fi + }% +\fi +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\par@updaterelative}{% + \begingroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent + \aftergroup\parindent@update + \fi + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip + \aftergroup\parskip@update + \fi + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip + \aftergroup\parfillskip@update + \fi + \endgroup +} +\newcommand*{\parindent@update}{% + \scr@defaultunits\parindent\scr@parindent + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent\else + \def\reserved@b{\endgroup\edef\f@parindent{\the\parindent}}% + \fi + \reserved@b +} +\newcommand*{\parskip@update}{% + \scr@defaultunits\parskip\scr@parskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip\else + \def\reserved@b{\endgroup\edef\f@parskip{\the\parskip}}% + \fi + \reserved@b +} +\newcommand*{\parfillskip@update}{% + \scr@defaultunits\parfillskip\scr@parfillskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip\else + \def\reserved@b{\endgroup\edef\f@parfillskip{\the\parfillskip}}% + \fi + \reserved@b +} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +\IfLTXAtLeastTF{2021/05/01}{% + \AddToHook{selectfont}{\par@update}% + \AfterPackage{everysel}{% + \IfPackageAtLeastTF{everysel}{2021/01/18}{}{% + \ClassError{\KOMAClassName}{% + incompatible `everysel' detected + }{% + You are using an old version of `everysel' in combination with a + LaTeX\MessageBreak + version >= 2021/06/01 and KOMA-Script >= 3.33. This combination + is\MessageBreak + not supported.\MessageBreak + You could switch back to an older LaTeX using package + `latexrelease'.\MessageBreak + But I recommend to update `everysel'% + }% + }% + }% + \AfterPackage{tracefnt}{% + \IfPackageAtLeastTF{tracefnt}{2020/12/22}{}{% + \ClassError{\KOMAClassName}{% + incompatible `tracefnt' detected + }{% + `tracefnt' is a LaTeX base package and therefore should be updated + together\MessageBreak + with LaTeX kernel. So this should never happen! Please check + your\MessageBreak + LaTeX installation% + }% + }% + }% +}{% + \newcommand*{\scr@selectfont}{} + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \BeforePackage{everysel}{% + \AtBeginDocument{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else + \ClassWarningNoLine{\KOMAClassName}{% + discard change of \string\selectfont}% + \fi + \expandafter\let\csname selectfont \endcsname\scr@selectfont + }% + }% + \AfterPackage{everysel}{% + \scr@ifundefinedorrelax{@EverySelectfont@Init}{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont + \ClassWarningNoLine{\KOMAClassName}{% + \string\selectfont\space already changed}% + \else + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + \fi + }{% + \g@addto@macro\@EverySelectfont@Init{% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + }% + }% + }% + \AfterPackage{tracefnt}{% + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname + }% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update} + \newcommand*{\scr@new@selectfont}{} + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname +} +\newcommand*{\scr@defaultunits}[2]{% + \begingroup + \edef\@tempa{#2}% + \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil + \edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}% + \@tempa +} +\newcommand*{\scr@@defaultunits}{} +\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{% + \ifx\relax#3\relax + \scr@@@defaultunits#1{}#2minusminus\@nnil + \else + \scr@@@defaultunits#1{#2}#3minusminus\@nnil + \fi +} +\newcommand*{\scr@@@defaultunits}{} +\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{% + \ifx\relax#2\relax + \@defaultunits\@tempskipa#3pt\relax\@nnil + #1\@tempskipa + \else + \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil + #1\@tempskipa + \@defaultunits\@tempskipa#2pt\relax\@nnil + \advance#1\@tempskipa + \fi + \ifx\relax#4\relax\else + \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil + \advance#1\@tempskipa + \fi +} +\newcommand*{\@list@extra}{% + \ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi +} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\AfterPackage{amsthm}{% + \RequirePackage{xpatch}% + \xpatchcmd{\deferred@thm@head}{\addvspace{-\parskip}}{}{% + \ClassInfoNoLine{\KOMAClassName}{% + amsthm's \string\deferred@thm@head\space patched}% + }{% + \ClassWarningNoLine{\KOMAClassName}{% + cannot patch amsthm's \string\deferred@thm@head.\MessageBreak + This could result in wrong spacing before theorem\MessageBreak + environments defined by package `amsthm'% + }% + }% +} + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +\setlength{\columnsep}{10\p@} +\setlength{\columnseprule}{\z@} +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\@extratitle}{}% +\newcommand{\extratitle}[1]{\gdef\@extratitle{% + #1% +}}% +\newcommand*{\@frontispiece}{}% +\newcommand{\frontispiece}[1]{\gdef\@frontispiece{% + #1% +}}% +\newcommand*{\@titlehead}{}% +\newcommand{\titlehead}[1]{\gdef\@titlehead{% + #1% +}}% +\newcommand*{\@subject}{}% +\newcommand*{\subject}[1]{\gdef\@subject{% + #1% +}}% +\newcommand*{\subtitle}[1]{\gdef\@subtitle{% + #1% +}}% +\newcommand*{\@subtitle}{}% +\newcommand*{\@publishers}{}% +\newcommand{\publishers}[1]{\gdef\@publishers{% + #1% +}}% +\newcommand*{\@uppertitleback}{}% +\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{% + #1% +}}% +\newcommand*{\@lowertitleback}{}% +\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{% + #1% +}}% +\newcommand*{\@dedication}{}% +\newcommand{\dedication}[1]{\gdef\@dedication{% + #1% +}}% +\newcommand*{\next@tpage}{% + \@thanks\global\let\@thanks\@empty + \clearpage + \csname titlepage@restore\endcsname + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \thispagestyle{empty}% + \let\footnote\thanks + \setcounter{footnote}{0}% +} +\newcommand*{\next@tdpage}{% + \next@tpage\if@twoside \ifodd\value{page}\else\null\next@tpage\fi\fi +} +\newcommand*\maketitle[1][1]{% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular}% + \hskip 1em \@plus.17fil% + \begin{tabular}[t]{c}% + }% + \fi + \if@titlepage + \begin{titlepage} + \setcounter{page}{% + #1% + }% + \if@titlepageiscoverpage + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty + \else + \if@twoside\mbox{}\next@tpage\fi + \noindent\@frontispiece\next@tdpage + \fi + \else + \noindent\@extratitle + \ifx\@frontispiece\@empty + \else + \next@tpage + \noindent\@frontispiece + \fi + \next@tdpage + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth}% + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null\vfill + \begin{center} + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject\par}}% + \vskip 3em + \fi + {\usekomafont{title}{\huge \@title\par}}% + \vskip 1em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + \vskip 2em + {% + \usekomafont{author}{% + \lineskip 0.75em + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1.5em + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus3fill + {\usekomafont{publishers}{\@publishers \par}}% + \vskip 3em + \end{center}\par + \@thanks\global\let\@thanks\@empty + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\global\let\@thanks\@empty + \fi + \else + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\global\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \else + \par + \@tempcnta=% + #1% + \relax\ifnum\@tempcnta=1\else + \ClassWarning{\KOMAClassName}{% + Optional argument of \string\maketitle\space ignored\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \begingroup + \let\titlepage@restore\relax + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \next@tdpage + \if@twocolumn + \ifnum \col@number=\@ne + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \twocolumn[\@makeextratitle]% + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \twocolumn[\@makefrontispiece]% + \next@tdpage + \fi + \twocolumn[\@maketitle]% + \fi + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \fi + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \@thanks\global\let\@thanks\@empty + \endgroup + \fi + \setcounter{footnote}{0}% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \fi + \global\let\and\relax +}% +\newcommand*{\@makeextratitle}{% + \ifx\@extratitle\@empty \else + \noindent\@extratitle\par + \fi +} +\newcommand*{\@makefrontispiece}{% + \ifx\@frontispiece\@empty \else + \noindent\@frontispiece\par + \fi +} +\newcommand*{\@maketitle}{% + \global\@topnum=\z@ + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth} + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null + \vskip 2em% + \begin{center}% + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject \par}}% + \vskip 1.5em + \fi + {\usekomafont{title}{\huge \@title \par}}% + \vskip .5em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% + \vskip 1em + {% + \usekomafont{author}{% + \lineskip .5em% + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1em% + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus 1em + {\usekomafont{publishers}{\@publishers \par}}% + \ifx\@dedication\@empty \else + \vskip 2em + {\usekomafont{dedication}{\@dedication \par}}% + \fi + \end{center}% + \par + \vskip 2em +}% +\newcommand*{\coverpagetopmargin}{% + \dimexpr \topmargin+1in\relax +} +\newcommand*{\coverpagebottommargin}{% + 2\dimexpr\coverpagetopmargin\relax +} +\newcommand*{\coverpageleftmargin}{% + \dimexpr \evensidemargin+1in\relax +} +\newcommand*{\coverpagerightmargin}{\coverpageleftmargin} +\newenvironment{titlepage}{% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0}% + \fi +}{% + \if@restonecol\twocolumn \else \newpage \fi +}% +\newkomafont{subtitle}{\usekomafont{title}\large}% +\newkomafont{titlehead}{}% +\newkomafont{author}{\Large} +\newkomafont{date}{\Large} +\newkomafont{publishers}{\Large} +\newkomafont{dedication}{\Large} +\newcommand*\titlefont{\sectfont}% +\newcommand*{\scr@fnt@title}{\titlefont}% +\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}% +\newcommand*{\scr@fnt@subject}{\subject@font}% +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\let\numberline\scr@numberline +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,part) +\CloneTOCEntryStyle{tocline}{part} +\TOCEntryStyleStartInitCode{part}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\hfill}% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\usekomafont{partentry}{##1}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \usekomafont{partentry}{\usekomafont{partentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{2.25em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,chapter) +\CloneTOCEntryStyle{tocline}{chapter} +\TOCEntryStyleStartInitCode{chapter}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{% + \if@chapterentrywithdots + {\usekomafont{chapterentrydots}{\TOCLineLeaderFill}}\relax + \else + \hfill + \fi + }% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname{\usekomafont{chapterentry}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \usekomafont{chapterentry}{\usekomafont{chapterentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{1.0em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,section) +\CloneTOCEntryStyle{tocline}{section} +\TOCEntryStyleStartInitCode{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,default) +\CloneTOCEntryStyle{section}{default} +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\BeforeClosingMainAux{% + \if@autodot\if@filesw\immediate\write\@mainaux{% + \string\global\string\csname\space @altsecnumformattrue\string\endcsname}% + \fi\fi} +\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup% + \expandafter\@@maybeautodot #1\@stop\endgroup\fi +} +\newcommand*{\@@maybeautodot}[1]{% + \ifx #1\@stop\let\@@maybeautodot\relax + \else + \ifx #1\Alph \@autodottrue\fi + \ifx #1\alph \@autodottrue\fi + \ifx #1\Roman \@autodottrue\fi + \ifx #1\roman \@autodottrue\fi + \ifx #1\@Alph \@autodottrue\fi + \ifx #1\@alph \@autodottrue\fi + \ifx #1\@Roman \@autodottrue\fi + \ifx #1\@roman \@autodottrue\fi + \ifx #1\romannumeral \@autodottrue\fi + \fi + \@@maybeautodot +} +\newcommand*\autodot{\if@altsecnumformat.\fi} +\setcounter{secnumdepth}{2} +\providecommand*{\ifnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifnumbered' by `\string\Ifnumbered'% + }% + \Ifnumbered +} +\newcommand*{\Ifnumbered}[1]{% + \if@currentusenumber + \scr@ifundefinedorrelax{#1numdepth}{% + \expandafter\@secondoftwo + }{% + \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth + \expandafter\expandafter\expandafter\@secondoftwo + \else + \expandafter\expandafter\expandafter\@firstoftwo + \fi + }% + \else + \expandafter\@secondoftwo + \fi +} +\providecommand*{\ifunnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifunnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifunnumbered' by `\string\Ifunnumbered'% + }% + \Ifunnumbered +} +\newcommand*{\Ifunnumbered}[1]{% + \Ifnumbered{#1}{\@secondoftwo}{\@firstoftwo}% +} +\newcommand*{\scr@saved@startsection}[6]{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\def\reserved@a#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\ifcase \ifx\@startsection\scr@saved@startsection 0 + \else + \ifx\@startsection\reserved@a 0 + \else 1 + \fi + \fi + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa \glueexpr #4\relax + \@ifundefined{scr@#1@afterindent}{% + \def\startsection@afterindent##1##2##3{##3}% + }{% + \expandafter\let\expandafter\startsection@afterindent + \csname scr@#1@afterindent\endcsname + }% + \startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + }% + \def\startsection@sectionname{#1}% + \def\startsection@secnumdepth{\numexpr #2\relax}% + \def\startsection@indent{\glueexpr #3\relax}% + \let\startsection@beforeskip\@tempskipa + \@ifundefined{scr@#1@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }{% + \expandafter\let\expandafter\scr@sect@runin + \csname scr@#1@runin\endcsname + }% + \scr@sect@runin{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + }{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + }{% + \ifdim \glueexpr #5\relax <\z@ + \def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + \else + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + \fi + }% + \ExecuteDoHook{heading/postinit/#1}% + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar {% + \ExecuteDoHook{heading/branch/star/#1}% + \def\scr@s@ct@@nn@m@{#1}% + \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}% + }{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \scr@section@dblarg{% + \@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}% + {\glueexpr #5\relax}{#6}% + }% + }% + } +\else + \ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been + changed.\MessageBreak + \KOMAClassName\space needs it's own definition of + `\string\@startsection'\MessageBreak + to provide extended features for the optional argument\MessageBreak + of `\string\section' etc.\MessageBreak + Generally it defines `\string\@startsection' completely new\MessageBreak + to achieve this. Because of the unexpected definition\MessageBreak + an alternative approach will be used.\MessageBreak + If this fails and if there isn't a new release of\MessageBreak + KOMA-Script that fixes the problem, please\MessageBreak + send a report to the KOMA-Script author.\MessageBreak + Note, that this alternative approach does not\MessageBreak + execute the elements of do-hooks:\MessageBreak + \space\space- `heading/postinit',\MessageBreak + \space\space- `heading/branch/star',\MessageBreak + \space\space- `heading/branch/nostar',\MessageBreak + and does always use `runin=bysign' and\MessageBreak + `afterindent=bysign'% + }% + \let\scr@saved@startsection\@startsection + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \kernel@ifstar {% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*% + }{% + \scr@section@dblarg{% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}% + }% + } +\fi +\newcommand*{\scr@sect@runin}[3]{#3} +\newcommand*{\scr@startsection@ulm@error}[1]{% + \ClassError{\KOMAClassName}{% + \string#1 undefined outside of \string\scr@startsection + }{% + A KOMA-Script macro for package authors have been used outside + the\MessageBreak + specified definition scope.\MessageBreak + See `scrkernel-sections.dtx' for more information.% + }% +} +\newcommand*\startsection@sectionname{% + \scr@startsection@ulm@error\startsection@sectionname} +\newcommand*\startsection@secnumdepth{% + \scr@startsection@ulm@error\startsection@secnumdepth} +\newcommand*\startsection@indent{% + \scr@startsection@ulm@error\startsection@indent} +\newcommand*\startsection@beforeskip{% + \scr@startsection@ulm@error\startsection@beforeskip} +\newcommand*\startsection@afterskip{% + \scr@startsection@ulm@error\startsection@afterskip} +\newcommand*{\if@startsection@runin}{% + \scr@startsection@ulm@error\if@startsection@runin} +\newif\if@startsection@runin +\newcommand*\startsection@afterindent{% + \scr@startsection@ulm@error\startsection@afterindent} +\newcommand*{\At@startsection}[1]{% + \ClassInfo{\KOMAClassName}{% + Usage of deprecated command `\string\At@startsection' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/postinit} + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/postinit}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\scr@doonlyifstyleofargis}[3]{% + \IfSectionCommandStyleIs{#3}{#2}{#1}{}% +} +\newcommand*{\Before@ssect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@ssect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/star}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/star}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\Before@sect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@sect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/nostar}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/nostar}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand{\scr@section@dblarg}[1]{% + \kernel@ifnextchar[%] + {#1}% + {\scr@section@xdblarg{#1}}% +} +\newcommand{\scr@section@xdblarg}[2]{% + \begingroup + \edef\reserved@a{% + \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}% + {\scr@osectarg}}% + \reserved@a +} +\renewcommand*{\@startsection}{% + \ifnum \scr@osectarg=\z@ + \expandafter\scr@saved@startsection + \else + \expandafter\scr@startsection + \fi +} +\newcommand*{\UseNumberUsageError}[2]{% + \ClassError{\KOMAClassName}{% + \string\IfUseNumber\space not allowed% + }{% + You cannot use \string\IfUseNumber\space outside a heading.\MessageBreak + If you'd continue, I'll ignore both arguments, because I do not + know\MessageBreak + whether to use the first or the second argument.% + }% +} +\newcommand*{\IfUseNumber}[2]{}% +\let\IfUseNumber\UseNumberUsageError +\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}} +\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}} +\let\secdef\SecDef +\def\scr@latex@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\ifx\@sect\scr@latex@sect\else + \let\scr@latex@sect\@sect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@sect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@sect}% +\fi +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#7=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#8},head={#8},reference={#8},#7}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#8},head={#7},reference={#8}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#8},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \fi + \fi + \scr@ifundefinedorrelax{scr@mt@saved@sect}{}{% + \expandafter\ifx\csname #1\endcsname\section + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + \expandafter\ifx\csname #1\endcsname\starsection\relax + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + }% + \let\IfUsePrefixLine\@secondoftwo + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \let\@svsec\@empty + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \hy@insteadofrefstepcounter{#1}% + \else + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@ + \begingroup + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\interlinepenalty \@M + \sectionlinesformat{#1}{\glueexpr #3\relax}\@svsec{#8}\@@par}% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \expandafter\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname##1##2{% + \addtocentrydefault{#1}{##1}{##2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \else + \def\@svsechd{% + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\sectioncatchphraseformat{#1}{\glueexpr #3\relax}\@svsec{#8}}% + \expandafter\csname #1mark\expandafter\endcsname + \expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname####1####2{% + \addtocentrydefault{#1}{####1}{####2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \ExecuteDoHook{heading/endgroup/#1}% + }% + \fi + \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning + \@xsect{\glueexpr #5\relax}% +} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.section]{KOMAarg} +\providecommand*\@currenttocentry{} +\providecommand*\@currentheadentry{} +\providecommand*\@currentlabelname{} +\FamilyStringKey[.section]{KOMAarg}{tocentry}{\@currenttocentry} +\FamilyStringKey[.section]{KOMAarg}{head}{\@currentheadentry} +\DefineFamilyKey[.section]{KOMAarg}{reference}{% + \scr@ifundefinedorrelax{NR@gettitle}{% + \scr@ifundefinedorrelax{GetTitleString}{% + \def\@currentlabelname{#1}% + }{% + \GetTitleString{#1}% + \let\@currentlabelname\GetTitleStringResult + }% + }{% + \NR@gettitle{#1}% + }% + \scr@ifundefinedorrelax{TR@gettitle}{}{% + \expandafter\TR@gettitle\expandafter{\@currentlabelname}% + }% + \scr@ifundefinedorrelax{ztitlerefsetup}{}{% + \ztitlerefsetup{title=\@currentlabelname}% + }% + \FamilyKeyStateProcessed +} +\FamilyInverseBoolKey[.section]{KOMAarg}{nonumber}{@currentusenumber} +\newcommand*{\scr@istest}{} +\def\scr@istest#1=#2\@nil{% + \ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi +} +\newif\if@scr@tempswa +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{% + \hskip #2#3#4% +} +\def\scr@latex@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\ifx\@ssect\scr@latex@ssect +\else + \let\scr@latex@ssect\@ssect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@ssect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@ssect}% +\fi +\def\@ssect#1#2#3#4#5{% + \scr@ifundefinedorrelax{scr@s@ct@@nn@m@}{% + \ClassWarning{\KOMAClassName}{Incompatible usage of + \string\@ssect\space detected.\MessageBreak + You've used the KOMA-Script implementation of + \string\@ssect\MessageBreak + from within a non compatible caller, that does not\MessageBreak + \string\scr@s@ct@@nn@m@\space locally.\MessageBreak + This could result in several error messages}% + \def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}% + }{% + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@\scr@s@ct@@nn@m@\endcsname + \endgroup + \fi + }% + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@ + \begingroup + \let\IfUseNumber\@secondoftwo + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + }\reserved@a + #4{\nobreak\interlinepenalty \@M + \expandafter\sectionlinesformat\expandafter{\scr@s@ct@@nn@m@}% + {\glueexpr #1\relax}\@empty{#5}\@@par}% + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }\reserved@a + \endgroup + \else + \edef\@svsechd{% + \unexpanded{\let\IfUseNumber\@secondoftwo}% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + \unexpanded{#4}{% + \noexpand\nobreak + \noexpand\sectioncatchphraseformat{\scr@s@ct@@nn@m@}% + \unexpanded{{\glueexpr #1\relax}\@empty{#5}}% + }% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }% + \fi + \let\scr@s@ct@@nn@m@\relax + \@xsect{\glueexpr #3\relax}% +} +\def\scr@latex@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces +} +\ifx\@xsect\scr@latex@xsect\else + \let\scr@latex@xsect\@xsect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@xsect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@xsect}% +\fi +\def\@xsect#1{% + \@ifundefined{scr@sect@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }% + \@tempskipa #1\relax + \ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \ifdim \@tempskipa<\z@ + \hskip -\@tempskipa + \else + \hskip \@tempskipa + \fi + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \def\scr@sect@runin##1##2##3{##3}% + \ignorespaces +} +\newcommand*{\scr@IfUsePrefixLineWarning}[2]{% + \ClassWarning{\KOMAClassName}{% + Usage of \string\IfUsePrefixLine\space outside + section command\MessageBreak + style makes no sense, because the behaviour not only\MessageBreak + depends on class options but also on the run-time\MessageBreak + section command style.\MessageBreak + Neither the then-code nor the else-code will be\MessageBreak + executed.\MessageBreak + You may change this and avoid the warning by LOCALLY\MessageBreak + setting \string\IfUsePrefixLine\space to either + \string\@firstoftwo\space or\MessageBreak + \string\@secondoftwo\space before using it% + }% +} +\newcommand*{\IfUsePrefixLine}[2]{} +\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning +\newcommand*{\raggedsection}{} +\let\raggedsection\raggedright +\DefineFamily{KOMAarg} +\DefineFamilyMember[.dsc]{KOMAarg} +\newcommand*{\DeclareSectionCommandStyleOption}[3]{% + \AddToSectionCommandOptionsDoList{#2}% + \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% + \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% + }% +} +\newcommand*{\AddToSectionCommandOptionsDoList}[1]{% + \kernel@ifnextchar [%] + {\@AddToSectionCommandOptionListWithDefault{#1}}% + {\l@addto@macro\scr@dsc@doopts{\do{#1}}}% +} +\newcommand*{\@AddToSectionCommandOptionListWithDefault}{} +\def\@AddToSectionCommandOptionListWithDefault#1[#2]{% + \l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}} +}% +\newcommand*{\scr@dsc@doopts}{} +\newcommand*{\RelaxSectionCommandOptions}{% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do{% + \kernel@ifnextchar [%] + {\@do}% + {\@do[]}% + }% + \def\@do[##1]##2{% + \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}% + }% + \scr@dsc@doopts + \do@endgroup +} +\newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}% + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dsc@expandtopt + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{% + \the\@tempskipa}% + \else + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}% + \fi + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1} + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \IfExistskomafont{#3\scr@dsc@current#4}{% + \setkomafont + }{% + \newkomafont + }{#3\scr@dsc@current#4}{##1}% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####1}% + \else + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####2}% + \fi + \else + \Ifstr{##1}{#5}{% + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####3}% + \FamilyKeyStateProcessed + }{}% + \fi + }% +} +\newcommand*{\scr@dsc@style@section@options}{} +\DeclareSectionCommandStyleLengthOption{section} + {indent}{scr@}{@sectionindent} +\DeclareSectionCommandStyleFuzzyOption{section} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleFuzzyOption{section} + {runin}{scr@}{@runin} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{section}{font}{}{} +\newcommand*{\scr@dsc@def@style@section@command}[1]{% + \@namedef{#1}{% + \scr@startsection{#1}% + {\csname #1numdepth\endcsname}% + {\csname scr@#1@sectionindent\endcsname}% + {\csname scr@#1@beforeskip\endcsname}% + {\csname scr@#1@afterskip\endcsname}% + {% + \ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}% + \fi + \fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{#1}% + }% + }% +} +\newcommand*{\scr@dsc@style@chapter@options}{} +\DeclareSectionCommandStyleOption{chapter}{pagestyle}{% + \@namedef{\scr@dsc@current pagestyle}{#1}% + \FamilyKeyStateProcessed +}% +\DeclareSectionCommandStyleFuzzyOption{chapter} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{chapter} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleLengthOption{chapter} + {innerskip}{scr@}{@innerskip} +\DeclareSectionCommandStyleLengthOption{chapter} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{chapter}{font}{}{} +\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix} +\newcommand*{\scr@dsc@def@style@chapter@command}[1]{% + \@namedef{#1}{\scr@startchapter{#1}}% + \@namedef{@#1}{\scr@@startchapter{#1}}% + \@namedef{@s#1}{\scr@@startschapter{#1}}% + \@namedef{@make#1head}{\scr@makechapterhead{#1}}% + \@namedef{@makes#1head}{\scr@makeschapterhead{#1}}% + \@namedef{@@make#1head}{\scr@@makechapterhead{#1}}% + \@namedef{@@makes#1head}{\scr@@makeschapterhead{#1}}% + \@namedef{set#1preamble}{\set@preamble{#1}}% +} +\newcommand*{\scr@dsc@style@chapter@subcommands}[1]{% + @#1,@s#1,@make#1head,@makes#1head,@@make#1head,@@makes#1head,set#1preamble% +} +\newcommand*{\scr@dsc@style@part@options}{} +\DeclareSectionCommandStyleOption{part}{pagestyle}{% + \@namedef{\scr@dsc@current pagestyle}{#1}% + \FamilyKeyStateProcessed +}% +\DeclareSectionCommandStyleFuzzyOption{part} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{part} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleLengthOption{part} + {innerskip}{scr@}{@innerskip} +\DeclareSectionCommandStyleLengthOption{part} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{part}{font}{}{} +\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix} +\newcommand*{\scr@dsc@def@style@part@command}[1]{% + \@namedef{#1}{\scr@startpart{#1}}% + \@namedef{@#1}{\scr@@startpart{#1}}% + \@namedef{@s#1}{\scr@@startspart{#1}}% + \@namedef{@end#1}{\scr@@endpart{#1}}% + \@namedef{set#1preamble}{\set@preamble{#1}}% +} +\newcommand*{\scr@dsc@style@part@subcommands}[1]{% + @#1,@s#1,@end#1,set#1preamble% +} +\newcommand*{\scr@dsc@style@section@neededoptionstest}{% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {section indent}{indent}{0pt}% + {\@namedef{scr@\scr@dsc@current @sectionindent}{0pt}}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before section skip}{beforeskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after section skip}{afterskip}% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {font}{font}{\normalsize}% + {\newkomafont{\scr@dsc@current}{\normalsize}}% + }% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `runin=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname + ##1##2##3{##3}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `afterindent=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3{##3}% + }% + }{}% +} +\newcommand*{\scr@dsc@style@chapter@neededoptionstest}{% + \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {initial page style}{pagestyle}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {initial page style}{pagestyle}% + {\chapterpagestyle}% + {\@namedef{\scr@dsc@current pagestyle}{\chapterpagestyle}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {inner chapter skip}{innerskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {inner chapter skip}{innerskip}% + {\scr@chapter@innerskip}% + {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@chapter@innerskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before chapter skip}{beforeskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {before chapter skip}{beforeskip}% + {\scr@chapter@beforeskip}% + {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@chapter@beforeskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after chaper skip}{afterskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {after chaper skip}{afterskip}% + {\scr@chapter@afterskip}% + {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@chapter@afterskip}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {font}{font}% + {\usekomafont{chapter}}% + {\newkomafont{\scr@dsc@current}{\usekomafont{chapter}}}% + }% + }% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {prefix line font}{prefixfont}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {prefix line font}{prefixfont}% + {\usekomafont{chapterprefix}}% + {\newkomafont{\scr@dsc@current prefix}{\usekomafont{chapterprefix}}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `afterindent=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3{##3}% + }% + }{}% +} +\newcommand*{\scr@dsc@style@part@neededoptionstest}{% + \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {initial page style}{pagestyle}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {initial page style}{pagestyle}% + {\partpagestyle}% + {\@namedef{\scr@dsc@current pagestyle}{\partpagestyle}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {inner part skip}{innerskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {inner part skip}{innerskip}% + {\scr@part@innerskip}% + {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@part@innerskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before part skip}{beforeskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {before part skip}{beforeskip}% + {\scr@part@beforeskip}% + {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@part@beforeskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after part skip}{afterskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {after part skip}{afterskip}% + {\scr@part@afterskip}% + {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@part@afterskip}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}{font}{font}% + {\usekomafont{part}}% + {\newkomafont{\scr@dsc@current}{\usekomafont{part}}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {number font}{prefixfont}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {number font}{prefixfont}% + {\usekomafont{partprefix}}% + {\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName}{% + using compatibility default + `afterindent=true'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3% + {##1}% + }% + }{}% +} +\newif\ifscr@dsc@parametersonly +\newcommand*{\DeclareSectionCommand}[2][]{% + \edef\scr@dsc@current{#2}% + \scr@dsc@parametersonlyfalse + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \IfArgIsEmpty{##1}{% + \scr@dsc@parametersonlytrue + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{% + \IfArgIsEmpty{##1}{% + \@ifundefined{scr@dte@\scr@dsc@current @style}{}{% + \expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname + \relax + }% + \expandafter\let\csname scr@tso@\scr@dsc@current @style\endcsname + \relax + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dte@def@l@##1}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@dte@\scr@dsc@current @style}{##1}% + \@namedef{scr@tso@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{% + \FamilyKeyStateProcessed + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \begingroup + \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% + \scr@declaresectioncommanderror{\scr@dsc@current} + {section command style}{style}% + }{}% + \endgroup + \@firstofone{% + \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \scr@ifundefinedorrelax{l@\scr@dsc@current}{% + \@namedef{scr@tso@\scr@dsc@current @style}{default}% + }{}% + }{}% + \let\scr@dsc@tocstyle@options\@empty + \let\scr@dsc@extra@relax@opts\@empty + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \expandafter\let + \csname scr@tso@\scr@dsc@current @style\expandafter\endcsname + \csname scr@dte@\scr@dsc@current @style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{}{% + \begingroup + \def\scr@dte@current{#2}% + \edef\reserved@a{% + \noexpand\@ExecuteTOCEntryStyleInitCode{% + \@nameuse{scr@tso@\scr@dsc@current @style}% + }{\scr@dsc@current}% + }\reserved@a + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \l@addto@macro\scr@dsc@extra@relax@opts{% + \RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocentry##1}% + }% + }% + \kernel@ifnextchar[%] + {\@dodefault{##1}}% + {\@donodefault{##1}}% + }% + \def\@donodefault##1{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \def\@dodefault##1[##2]{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \scr@dte@doopts + \do@endgroup + }% + \DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}% + \FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}% + \scr@dsc@expandtoptfalse + \scr@ifundefinedorrelax{scr@local@levelincrease}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }{% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + }% + \scr@ifundefinedorrelax{scr@local@leveloffset}{% + \edef\reserved@a{% + \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}% + }\reserved@a + }{% + \edef\reserved@a{% + \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \noexpand\FamilySetCounterMacro{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname + }% + \unexpanded{% + {\numexpr ##1+\scr@local@leveloffset\relax}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + }% + }\reserved@a + }% + \FamilyStringKey[.dsc]{KOMAarg}{counterwithout}{\scr@local@counterwithout}% + \let\scr@local@counterwithout\relax + \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}% + \let\scr@local@counterwithin\relax + \scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{% + \scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{% + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \edef\reserved@a{% + \noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{% + level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,% + }% + }\reserved@a + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + \FamilyKeyStateProcessed + }% + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \scr@dsc@extra@relax@opts + \let\scr@dsc@extra@relax@opts\relax + \RelaxSectionCommandOptions + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}% + \scr@ifundefinedorrelax{scr@local@levelincrease}{}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}% + \begingroup + \def\local@endgroup{\endgroup}% + \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% + }{% + \expandafter\ifnum \csname #2numdepth\endcsname>-\maxdimen + \@nameuse{scr@dsc@style@% + \@nameuse{scr@\scr@dsc@current @style}% + @neededoptionstest}% + \else + \ClassError{\KOMAClassName}{% + `level' must be > -\the\numexpr\maxdimen\relax + }{% + KOMA-Script internally sets `secnumdepth' to + -\the\numexpr\maxdimen\relax\space + to locally switch of\MessageBreak + the numbering, i.e., inside running heads.\MessageBreak + Because of this, you can define section commands with\MessageBreak + `level' greater than -\the\numexpr\maxdimen\relax\space only.% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo + \fi + }% + \local@endgroup + \@firstofone{% + \@ifundefined{c@#2}{\newcounter{#2}}{}% + \ifx\scr@local@counterwithout\relax + \else\ifx\scr@local@counterwithout\@empty + \else + \@removefromreset{#2}{\scr@local@counterwithout}% + \fi + \@namedef{the#2}{\arabic{#2}}% + \fi + \ifx\scr@local@counterwithin\relax + \else\ifx\scr@local@counterwithin\@empty + \@namedef{the#2}{\arabic{#2}}% + \else + \@removefromreset{#2}{\scr@local@counterwithin}% + \@addtoreset{#2}{\scr@local@counterwithin}% + \expandafter\def\csname the#2\expandafter\endcsname\expandafter{% + \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% + \fi + \fi + \@ifundefined{#2format}{% + \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \ifscr@dsc@parametersonly + \ClassInfo{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' due + to\MessageBreak + empty section style option% + }% + \else + \scr@ifundefinedorrelax{% + scr@dsc@def@style@\@nameuse{scr@#2@style}@command% + }{% + \ClassWarning{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' + due\MessageBreak + to not yet defined section style\MessageBreak + `\@nameuse{scr@#2@style}'% + }% + }{% + \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}% + }% + \fi + \@ifundefined{DeclareSectionNumberDepth}{% + \@ifundefined{#2markformat}{% + \@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \@ifundefined{#2mark}{% + \expandafter\let\csname #2mark\endcsname\@gobble + }{}% + }{% + \DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}% + }% + \expandafter\providecommand\expandafter*% + \csname add#2tocentry\endcsname[2]{% + \addtocentrydefault{#2}{##1}{##2}% + }% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + \expandafter\let\csname scr@tso@#2@style\expandafter\endcsname + \csname scr@dte@#2@style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + }{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{% + \@nameuse{scr@tso@#2@style}% + }{#2}% + }% + \scr@ifundefinedorrelax{l@#2}{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}% + }{}% + \if@atdocument + \let\reserved@a\@firstofone + \else + \@ifpackageloaded{hyperref}{% + \let\reserved@a\@firstofone + }{% + \def\reserved@a##1{% + \AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}% + }% + }% + \fi + \reserved@a{% + \expandafter\let\csname toclevel@#2\expandafter\endcsname + \csname #2tocdepth\endcsname + \scr@ifundefinedorrelax{bookmarksetup}{% + \scr@ifundefinedorrelax{scr@min@toclevel}{% + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + < \numexpr \scr@min@toclevel-1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 lower than currently lowest\MessageBreak + known level (\scr@min@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@min@toclevel-1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + < \scr@min@toclevel\relax + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + \fi + }% + \scr@ifundefinedorrelax{scr@max@toclevel}{% + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + > \numexpr \scr@max@toclevel+1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 greater than currently highest\MessageBreak + known level (\scr@max@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@max@toclevel+1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + > \scr@max@toclevel\relax + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + \fi + }% + }{}% + }% + }% + }% + \let\scr@dsc@current\relax +} +\newcommand*{\scr@declaresectioncommanderror}[3]{% + \ClassError{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown% + }{% + Please use option `#3' to declare the #2.\MessageBreak + If you'll continue, declaration will be ignored% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo +} +\newcommand*{\scr@declaresectioncommandwarning}[5]{% + \ClassInfo{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown.\MessageBreak + You should use option `#3' if you\MessageBreak + do not want to use the default value\MessageBreak + `\detokenize{#4}'% + }% + \l@addto@macro\local@endgroup{#5}% +} +\newcommand*{\DeclareNewSectionCommand}[2][]{% + \@ifundefined{#2}{% + \@tempswatrue + \let\reserved@b\@empty + \@for \reserved@a:=the#2,#2mark,#2format,#2markformat\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{\expandafter\string\csname \reserved@a\endcsname}% + }% + }% + \if@tempswa + \expandafter\let\expandafter\scr@dsc@current + \csname scr@tso@##2@style\endcsname + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \edef\scr@dsc@current{##1}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \@tempswatrue + \@ifundefined{scr@dsc@current}{}{% + \scr@ifundefinedorrelax{scr@dsc@style@\scr@dsc@current @subcommands}{% + }{% + \edef\reserved@b{% + \csname scr@dsc@style@\scr@dsc@current @subcommands\endcsname{#2}% + }% + \expandafter\@for\expandafter\reserved@a\expandafter:\expandafter=% + \reserved@b\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{% + \expandafter\string\csname \reserved@a\endcsname}% + }% + }% + } + }% + \let\scr@dsc@current\relax + \fi + \if@tempswa + \DeclareSectionCommand[{#1}]{#2}% + \else + \ClassError{\KOMAClassName}{% + command `\reserved@b' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly.\MessageBreak + Such a section command needs an additional new command + `\reserved@b',\MessageBreak + but this already exists. So you cannot define + `\expandafter\string\csname #2\endcsname' newly.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + \fi + }{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly,\MessageBreak + but a command or something else with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + }% +} +\newcommand*{\RedeclareSectionCommand}[2][]{% + \@ifundefined{#2}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' not defined% + }{% + You've tried to re-define the section command `\expandafter\string\csname + #2\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be irgnored.% + }% + }{% + \DeclareSectionCommand[{#1}]{#2}% + }% +} +\newcommand*{\ProvideSectionCommand}[2][]{% + \@ifundefined{#2}{% + \DeclareSectionCommand[{#1}]{#2}% + }{% + \ClassInfo{\KOMAClassName}{% + \string\ProvideSectionCommand{#1} ignored% + }% + }% +} +\newcommand*{\DeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\DeclareNewSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' already + defined% + }{% + You've tried to define the section command + `\expandafter\string\csname\reserved@a\endcsname' newly,\MessageBreak + but a command, token, box or length with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\RedeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' not defined% + }{% + You've tried to re-define the section command + `\expandafter\string\csname\reserved@a\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }{}% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\ProvideSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + \DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}% + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + }% + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\IfSectionCommandStyleIs}[2]{% + \scr@ifundefinedorrelax{#1}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not defined}{% + You cannot compare the section command style of an undefined command.}% + }{% + \scr@ifundefinedorrelax{scr@#1@style}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not a valid section + command% + }{% + You cannot detect the section command style of a command, that + has\MessageBreak + never been defined as a section command by KOMA-Script.% + }% + }% + }% + \scr@ifundefinedorrelax{scr@dsc@def@style@#2@command}{% + \ClassError{\KOMAClassName}{% + unknown section command style `#2'% + }{}% + }% + \Ifstr{\@nameuse{scr@#1@style}}{#2}% +} +\newcommand*{\use@preamble}[1]{% + \@ifundefined{#1@preamble}{}{% + \@nameuse{#1@preamble}% + \global\expandafter\let\csname#1@preamble\endcsname=\relax + }% +} +\newcommand*{\set@preamble}[1]{% + \kernel@ifnextchar [%] + {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}% +} +\newcommand*{\set@@preamble}{} +\def\set@@preamble#1[#2]{% + \kernel@ifnextchar [%] + {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}% +} +\newcommand{\set@@@preamble}{} +\long\def\set@@@preamble#1[#2][#3]#4{% + \begingroup + \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax + \expandafter \@tfor \expandafter \@tempa + \expandafter :\expandafter =\prmbl@pos + \do{% + \if \@tempa l% + \set@preamble@hpos{0}{#2}% + \fi% + \if \@tempa c% + \set@preamble@hpos{1}{#2}% + \fi% + \if \@tempa r% + \set@preamble@hpos{2}{#2}% + \fi% + \if \@tempa u% + \set@preamble@vpos{0}{#2}% + \fi% + \if \@tempa b% + \set@preamble@vpos{0}{#2}% + \fi + \if \@tempa o% + \set@preamble@vpos{1}{#2}% + \fi% + \if \@tempa t% + \set@preamble@vpos{1}{#2}% + \fi + }% + \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}% + \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}% + \ifcase\prmbl@hpos + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}% + \fi + \or + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}% + \fi + \else + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}% + \fi + \fi + \endgroup +} +\newcommand{\set@@@@preamble}[6]{% + \expandafter\gdef\csname #1@preamble\endcsname{% + \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% + }% +} +\newcommand*{\set@preamble@hpos}[2]{% + \@ifundefined{prbml@hpos}{% + \def\prmbl@hpos{#1}% + }{% + \ifnum \prmbl@hpos=0\relax\else% + \ClassError{\KOMAClassName}{% + inconsistent hpos options% + }{% + You've said `#2' as position option. But you have + to\MessageBreak + use only one of `l', `r', or `c' not two of + these.\MessageBreak + If you'll continue only first hpos option will be + used% + }% + \fi + }% +} +\newcommand*{\set@preamble@vpos}[2]{% + \@ifundefined{prbml@vpos}{% + \def\prmbl@vpos{#1}% + }{% + \ifnum \prmbl@vpos=0\relax\else% + \ClassError{\KOMAClassName}{% + inconsistent vpos options% + }{% + You've said `#2' as position option. But you have + to\MessageBreak + use only one of `t', `o', `b', or `u' not two of + these.\MessageBreak + If you'll continue only first vpos option will be + used% + }% + \fi + }% +} +\newif\if@mainmatter\@mainmattertrue +\newcommand*\frontmatter{% + \if@twoside\cleardoubleoddpage\else\clearpage\fi + \@mainmatterfalse\pagenumbering{roman}% +} +\newcommand*\mainmatter{% + \if@twoside\cleardoubleoddpage\else\clearpage\fi + \@mainmattertrue\pagenumbering{arabic}% +} +\newcommand*\backmatter{% + \if@openright\cleardoubleoddpage\else\clearpage\fi\@mainmatterfalse +} +\newcommand*\appendix{% + \Ifstr{\@currenvir}{appendix}{% + \ClassWarning{\KOMAClassName}{% + You are using + `\string\begin{appendix}...\string\end{appendix}'.\MessageBreak + You should note, that `\string\appendix' is a mostly + globally\MessageBreak + working command not an enviroment with only local\MessageBreak + effects. Therefore `\string\end{appendix}' will neither\MessageBreak + switch back to normal section numbering nor finish\MessageBreak + every other effect of `\string\begin{appendix}'.\MessageBreak + Nevertheless, some effects may end with\MessageBreak + `\string\end{appendix}' and the document may become\MessageBreak + inconsistent.\MessageBreak + Because of this, you should remove `\string\end{appendix}'\MessageBreak + and replace `\string\begin{appendix}' by command\MessageBreak + `\string\appendix'% + }% + }{}% + \par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \gdef\@chapapp{\appendixname}% + \gdef\thechapter{\@Alph\c@chapter}% +} +\IfLTXAtLeastTF{2020/10/01}{% + \g@addto@macro{\appendix}{\UseOneTimeHook{\KOMAClassName/appendix}}% +}{} +\g@addto@macro{\appendix}{\csname appendixmore\endcsname} +\newcommand*{\scr@startpart}[1]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@openright\cleardoublepage\else\clearpage\fi + \scr@ifundefinedorrelax{#1pagestyle}{}{% + \Ifstr{#1pagestyle}{}{}{% + \thispagestyle{\@nameuse{#1pagestyle}}% + }% + }% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax + \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{% + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim\@tempskipa<\z@ + \@tempskipa=-\@tempskipa + \@afterindentfalse + \fi + }% + }% + \ExecuteDoHook{heading/postinit/#1}% + \partheadstartvskip + \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}% + \vskip-\baselineskip\nobreak + \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname +} +\newcommand{\scr@@startpart}{} +\long\def\scr@@startpart#1[#2]#3{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#2=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \fi + \fi + \Ifnumbered{#1}{% + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \typeout{#1 \csname the#1\endcsname.}% + \ifx\@currenttocentry\@empty\else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}% + {\@currenttocentry}% + \fi + }{% + \expandafter\ifnum\scr@v@is@lt{3.18}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \typeout{#1 without number}% + \ifx\@currenttocentry\@empty\else + \hy@insteadofrefstepcounter{#1}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{}{\@currenttocentry}% + \fi + }% + \begingroup + \def\IfUseNumber{\Ifnumbered{#1}}% + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{\nobreak + \IfUseNumber{% + \partlineswithprefixformat{#1}{% + \usekomafont{#1prefix}{\nobreak\@nameuse{#1format}}% + \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}% + \partheadmidvskip + }{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + }% + }{% + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + } + }% + \expandafter\ifx\csname #1mark\endcsname\@gobble + \@mkboth{}{}% + \else + \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \fi + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \@nameuse{@end#1}% + \@afterheading +} +\newcommand{\scr@@startspart}[2]{% + \ExecuteDoHook{heading/branch/star/#1}% + \begingroup + \let\@mkboth\@gobbletwo + \hy@insteadofrefstepcounter{#1}% + \endgroup + \begingroup + \let\IfUseNumber\@secondoftwo + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{% + \nobreak + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#2\strut\@@par}% + }% + \@mkboth{}{}% + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \@nameuse{@end#1}% +} +\newcommand{\partlineswithprefixformat}[3]{% + #2#3% +} +\newcommand*{\scr@@endpart}[1]{% + \vbox to\z@{\use@preamble{#1@u}\vss}% + \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \partheadendvskip + \partheademptypage + \if@tempswa + \twocolumn + \fi +} +\newcommand*{\hy@insteadofrefstepcounter}[1]{} +\let\hy@insteadofrefstepcounter\@gobble +\newcommand*{\scr@chapter@before@hyperref@patch}{% + \let\scr@orig@chapter\@chapter + \let\scr@orig@schapter\@schapter + \let\scr@orig@addchap\@addchap +} +\BeforePackage{hyperref}{\scr@chapter@before@hyperref@patch} +\newcommand*{\scr@chapter@after@hyperref@patch}{% + \let\@chapter\scr@orig@chapter + \let\@schapter\scr@orig@schapter + \let\@addchap\scr@orig@addchap + \ifx\hy@insteadofrefstepcounter\@gobble + \renewcommand*{\hy@insteadofrefstepcounter}[1]{% + \Hy@MakeCurrentHrefAuto{##1*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \fi +} +\AfterAtEndOfPackage{hyperref}{\scr@chapter@after@hyperref@patch} +\newcommand*{\addparttocentry}[2]{% + \addtocentrydefault{part}{#1}{#2}% +} +\newcommand\addpart{% + \SecDef\@addpart\@saddpart +} +\newcommand*{\@addpart}{} +\long\def\@addpart[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \part[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \reserved@a +} +\newcommand{\@saddpart}[1]{% + \part*{#1}% + \addpartmark{}% +} +\newcounter{part} +\renewcommand*{\thepart}{\@Roman\c@part} +\newcommand*{\partformat}{\partname~\thepart\autodot} +\newcommand*\partname{Part} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\partname{Part} +\newcommand*{\partmark}[1]{\@mkboth{}{}} +\newcommand*\addpartmark[1]{% + \begingroup + \expandafter\let\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \partmark{#1}% + \endgroup +} +\newcommand*{\raggedpart}{} +\let\raggedpart\centering +\newkomafont{partentry}{\usekomafont{disposition}\large} +\newkomafont{partentrypagenumber}{} +\newcommand*{\scr@startchapter}[1]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@openright\cleardoublepage\else\clearpage\fi + \scr@ifundefinedorrelax{#1pagestyle}{}{% + \Ifstr{#1pagestyle}{}{}{% + \thispagestyle{\@nameuse{#1pagestyle}}% + }% + }% + \global\@topnum\z@ + \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{% + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \@ifundefined{scr@#1@beforeskip}{\@afterindentfalse}{% + \ifdim\glueexpr\@nameuse{scr@#1@beforeskip}\relax<\z@ + \@afterindentfalse + \fi + }% + }% + }% + \ExecuteDoHook{heading/postinit/#1}% + \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname +} +\newcommand*{\scr@@startchapter}{} +\def\scr@@startchapter#1[#2]#3{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#2=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \fi + \fi + \Ifnumbered{#1}{% + \if@mainmatter + \@tempswatrue + \else\@tempswafalse\fi + }{\@tempswafalse}% + \if@tempswa + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \typeout{#1 \csname the#1\endcsname.}% + \ifx\@currenttocentry\@empty\else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}% + {\@currenttocentry}% + \fi + \else + \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \typeout{#1 without number}% + \ifx\@currenttocentry\@empty\else + \hy@insteadofrefstepcounter{#1}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{}{\@currenttocentry}% + \fi + \fi + \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \ifdim \@chapterlistsgap>\z@ + \doforeachtocfile{% + \Iftocfeature{\@currext}{chapteratlist}{% + \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}% + }{}% + }% + \@ifundefined{float@addtolists}{}{% + \scr@float@addtolists@warning + \float@addtolists{\protect\addvspace{\@chapterlistsgap}}% + }% + \fi + \scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d{#1}% + \if@twocolumn + \if@at@twocolumn + \@nameuse{@make#1head}{#3}% + \else + \@topnewpage[\@nameuse{@make#1head}{#3}]% + \fi + \else + \@nameuse{@make#1head}{#3}% + \fi + \@afterheading +} +\expandafter\ifnum\scr@v@is@ge{3.36}% + \newcommand*{\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d}[1]{% + \Ifstr{#1}{chapter}{% + \begingroup + \def\reserved@a{\scr@makechapterhead{chapter}}% + \ifx\@makechapterhead\reserved@a\else + \ClassWarningNoLine{\KOMAClassName}{% + Redefinition of \string\@makechapterhead\space detected.\MessageBreak + Note: KOMA-Script does use styles for commands like\MessageBreak + \string\chapter. Currently it internally still provides and\MessageBreak + uses \string\@makechapterhead, but a completely different\MessageBreak + definition compared to the standard classes.\MessageBreak + So redefining or using internal \string\@makechapterhead\MessageBreak + by users or package authors may already break\MessageBreak + KOMA-Script and will not work with a coming version,\MessageBreak + that will remove this deprecated code}% + \let\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d\@gobbble + \fi + \endgroup + }{}% + } +\else + \let\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d\@gobble +\fi +\newcommand*{\scr@@startschapter}[2]{% + \ExecuteDoHook{heading/branch/star/#1}% + \begingroup + \let\@mkboth\@gobbletwo + \hy@insteadofrefstepcounter{#1}% + \endgroup + \scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d{#1}% + \if@twocolumn + \if@at@twocolumn + \@nameuse{@makes#1head}{#2}% + \else + \@topnewpage[\@nameuse{@makes#1head}{#2}]% + \fi + \else + \@nameuse{@makes#1head}{#2}% + \fi + \@afterheading +} +\expandafter\ifnum\scr@v@is@ge{3.36}% + \newcommand*{\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d}[1]{% + \Ifstr{#1}{chapter}{% + \begingroup + \def\reserved@a{\scr@makeschapterhead{chapter}}% + \ifx\@makeschapterhead\reserved@a\else + \ClassWarningNoLine{\KOMAClassName}{% + Redefinition of \string\@makeschapterhead\space detected.\MessageBreak + Note: KOMA-Script does use styles for commands like\MessageBreak + \string\chapter. Currently it internally still provides and\MessageBreak + uses \string\@makeschapterhead, but a completely different\MessageBreak + definition compared to the standard classes.\MessageBreak + So redefining or using internal \string\@makeschapterhead\MessageBreak + by users or package authors may already break\MessageBreak + KOMA-Script and will not work with a coming version,\MessageBreak + that will remove this deprecated code}% + \let\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d\@gobble + \fi + \endgroup + }{}% + } +\else + \let\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d\@gobble +\fi +%% \begin{macro}{\@at@twocolumntrue,\@at@twocolumnfalse,\if@at@twocolumn} +\newif\if@at@twocolumn +\newcommand*\scr@topnewpage{} +\let\scr@topnewpage\@topnewpage +\long\def\@topnewpage[#1]{% + \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse +} +\newcommand*{\scr@makechapterhead}[2]{% + \use@chapter@o@preamble{#1}% + \@nameuse{@@make#1head}{#2}% + \use@preamble{#1@u}% +} +\newcommand*{\scr@@makechapterhead}[2]{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else + \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi + \fi + }% + \chapterheadstartvskip + {% + \def\IfUseNumber{\Ifnumbered{#1}}% + \if@mainmatter\else\let\IfUseNumber\@secondoftwo\fi + \ExecuteDoHook{heading/begingroup/#1}% + \if@chapterprefix + \let\IfUsePrefixLine\@firstoftwo + \else + \let\IfUsePrefixLine\@secondoftwo + \fi + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% + \normalfont\usekomafont{disposition}{% + \usekomafont{#1}{% + \settoheight{\@tempskipa}{% + {\usekomafont{#1prefix}{% + \vrule \@width\z@ \@height\csname scr@#1@innerskip\endcsname}}% + }% + \raggedchapter + \IfUseNumber{% + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {{\usekomafont{#1prefix}{\csname #1format\endcsname% + \setlength{\@tempskipa}{\csname scr@#1@innerskip\endcsname}% + \chapterheadmidvskip}}}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {\csname #1format\endcsname}% + {\interlinepenalty \@M#2\@@par}% + }% + }{% + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }% + }% + }% + }% + \ExecuteDoHook{heading/endgroup/#1}% + }% + \nobreak\par\nobreak + \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax + \chapterheadendvskip +} +\newcommand*{\scr@makeschapterhead}[2]{% + \use@chapter@o@preamble{#1}% + \@nameuse{@@makes#1head}{#2}% + \use@preamble{#1@u}% +} +\newcommand*{\scr@@makeschapterhead}[2]{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else + \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi + \fi + }% + \chapterheadstartvskip + {% + \let\IfUseNumber\@secondoftwo + \ExecuteDoHook{heading/begingroup/#1}% + \if@chapterprefix + \let\IfUsePrefixLine\@firstoftwo + \else + \let\IfUsePrefixLine\@secondoftwo + \fi + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% + \normalfont\usekomafont{disposition}{% + \usekomafont{#1}{% + \raggedchapter + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }% + }% + }% + \ExecuteDoHook{heading/endgroup/#1}% + }% + \nobreak\par\nobreak + \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax + \chapterheadendvskip +} +\newcommand{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3}% +} +\newcommand{\chapterlineswithprefixformat}[3]{% + #2#3% +} +\newcommand*{\use@chapter@o@preamble}[1]{% + {% + \settoheight{\@tempdima}{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \vbox{\chapterheadstartvskip}% + }% + \settodepth{\@tempdimb}{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \vbox{\chapterheadstartvskip}% + }% + \addtolength{\@tempdima}{\@tempdimb}% + \setbox\z@\vbox{% + \use@preamble{#1@o}% + }% + \setlength{\@tempdimb}{\ht0}% + \addtolength{\@tempdimb}{\dp0}% + \vbox to \z@{% + \vskip-\baselineskip + \vbox to \@tempdima{% + \vfill + \box\z@ + }% + \vss + }\vskip-\parskip\vskip-\baselineskip + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \ifdim\@tempdimb<\vfuzz + \ClassInfo{\KOMAClassName}{% + preamble before #1 is \the\@tempdimb\space to high.\MessageBreak + Tolerated without warning because of\MessageBreak + \string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb + }% + \else + \ClassWarning{\KOMAClassName}{% + preamble before #1 is \the\@tempdimb\space to high.\MessageBreak + To avoid the overfull \string\vbox\space you may + change\MessageBreak + the `beforeskip' value using + \string\RedeclareSectionCommand\MessageBreak + at the preamble of your document.\MessageBreak + You may also change \string\setchapterpreamble\MessageBreak + before the command, which generates the message + about\MessageBreak + an overfull \string\vbox + }% + \fi + \fi% + }% +} +\newcommand*{\addchaptertocentry}[2]{% + \addtocentrydefault{chapter}{#1}{#2}% + \if@chaptertolists + \doforeachtocfile{% + \Iftocfeature{\@currext}{chapteratlist}{% + \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}% + }{}% + }% + \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}% + \fi +} +\newcommand\addchap{% + \SecDef\@addchap\@saddchap +}% +\newcommand*{\@addchap}{}% +\long\def\@addchap[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \chapter[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \chapternumdepth-1\relax + \reserved@a +} +\newcommand{\@saddchap}[1]{% + \chapter*{#1}% + \addchapmark{}% +}% +\AfterPackage{hyperref}{% + \@ifpackagelater{hyperref}{2001/02/19}{}{% + \ClassWarningNoLine{\KOMAClassName}{% + You are using an old version of the hyperref package!\MessageBreak% + This version has a buggy hack in many drivers,\MessageBreak% + causing \string\addchap\space to behave strangely.\MessageBreak% + Please update hyperref to at least version 6.71b% + }% + }% +} +\newcommand*{\raggedchapterentry}{} +\newcommand*{\l@chapteratlist}{\l@chapter} +\newcounter{chapter} +\renewcommand*{\thechapter}{\@arabic\c@chapter} +\newcommand*{\chapterformat}{% + \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot + \IfUsePrefixLine{}{\enskip}}% +} +\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }% + \thechapter\autodot\enskip} +\newcommand*\chaptername{Chapter} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\chaptername{Chapter} +\newcommand*\appendixname{Appendix} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\appendixname{Appendix} +\newcommand*{\chapappifchapterprefix}[1]{% + \IfChapterUsesPrefixLine{\chapapp#1}{}% +} +\newcommand*{\IfChapterUsesPrefixLine}{% + \if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} +\newcommand*{\chapapp}{\@chapapp} +\newcommand*\@chapapp{\chaptername} +\newcommand*\chaptermark[1]{} +\newcommand*\addchapmark[1]{% + \begingroup + \expandafter\let\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname + \c@secnumdepth=\numexpr \chapternumdepth-1\relax + \chaptermark{#1}% + \endgroup +} +\newcommand*{\raggedchapter}{\raggedsection} +\newkomafont{chapterentry}{\usekomafont{disposition}} +\newkomafont{chapterentrypagenumber}{} +\newkomafont{chapterentrydots}{} +\newcommand\addsec{\SecDef\@addsec\@saddsec} +\newcommand*{\@addsec}{} +\def\@addsec[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \section[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \reserved@a +} +\newcommand*{\@saddsec}[1]{% + \section*{#1}\addsecmark{}% +} +\newkomafont{minisec}{} +\newcommand\minisec[1]{% + \expandafter\ifnum\scr@v@is@lt{3.13a}\relax + \@afterindentfalse \vskip 1.5ex + \else + \if@noskipsec \leavevmode \fi + \par + \@afterindentfalse + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace{1.5ex}% + \fi + \fi + {\parindent \z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}\fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}% + }\nobreak + \@afterheading +} +\newcommand*{\addsectiontocentry}[2]{% + \addtocentrydefault{section}{#1}{#2}% +} +\newcommand*{\addsubsectiontocentry}[2]{% + \addtocentrydefault{subsection}{#1}{#2}% +} +\newcommand*{\addparagraphtocentry}[2]{% + \addtocentrydefault{paragraph}{#1}{#2}% +} +\newcommand*{\addsubparagraphtocentry}[2]{% + \addtocentrydefault{subparagraph}{#1}{#2}% +} +\newcounter{section}[chapter] +\renewcommand*\thesection{% + \expandafter\ifnum\scr@v@is@gt{2.97d}% + \if@mainmatter\thechapter.\fi + \else + \thechapter.% + \fi + \@arabic\c@section +} +\newcommand*\sectionmarkformat{\thesection\autodot\enskip} +\newcounter{subsection}[section] +\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection} +\newcounter{subsubsection}[subsection] +\renewcommand*{\thesubsubsection}{% + \thesubsection.\@arabic\c@subsubsection +} +\newcounter{paragraph}[subsubsection] +\renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph} +\newcounter{subparagraph}[paragraph] +\renewcommand*{\thesubparagraph}{% + \theparagraph.\@arabic\c@subparagraph +} +\newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip} +\renewcommand*{\@seccntformat}[1]{% + \expandafter\ifnum\scr@v@is@lt{3.17}\relax + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + \else + \scr@ifundefinedorrelax{#1format}{% + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + }{\expandafter\protect\csname #1format\endcsname}% + \fi +} +\newcommand*\addsecmark[1]{% + \begingroup + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \sectionmark{#1}% + \endgroup +} +\DeclareSectionCommand[% + style=chapter,% + level=\z@,% + pagestyle=plain,% + tocstyle=chapter,% + tocindent=\z@,% + tocnumwidth=1.5em% +]{chapter} +\DeclareSectionCommand[% + style=section,% + level=1,% + indent=\z@,% + beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,% + afterskip=2.3ex \@plus.2ex,% + tocstyle=section,% + tocindentfollows=chapter,% + tocindent=1.5em,% + tocnumwidth=2.3em% +]{section} +\DeclareSectionCommand[% + style=part,% + level=\m@ne,% + pagestyle=plain,% + tocstyle=part,% + toclevel=\m@ne,% + tocindent=\z@,% + tocnumwidth=2em% +]{part} +\DeclareSectionCommand[% + style=section,% + level=2,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=section,% + tocindent=3.8em,% + tocnumwidth=3.2em% +]{subsection} +\DeclareSectionCommand[% + style=section,% + level=3,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=section,% + tocindent=7.0em,% + tocnumwidth=4.1em% +]{subsubsection} +\DeclareSectionCommand[% + style=section,% + level=4,% + indent=\z@,% + beforeskip=3.25ex \@plus1ex \@minus.2ex,% + afterskip=-1em,% + tocindentfollows=subsubsection,% + tocstyle=section,% + tocindent=10em,% + tocnumwidth=5em% +]{paragraph} +\DeclareSectionCommand[% + style=section,% + level=5,% + indent=\scr@parindent,% + beforeskip=3.25ex \@plus1ex \@minus .2ex,% + afterskip=-1em,% + tocstyle=section,% + tocindent=12em,% + tocnumwidth=6em% +]{subparagraph} +\expandafter\ifnum\scr@v@is@lt{3.15}\relax + \let\scr@subparagraph@sectionindent\parindent +\else + \def\scr@subparagraph@sectionindent{\scr@parindent}% +\fi +\newcommand*{\scr@fnt@disposition}{\sectfont} +\aliaskomafont{sectioning}{disposition} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@addtoreset{equation}{chapter} +\renewcommand*{\theequation}{% + \expandafter\ifnum\scr@v@is@gt{2.97d}% + \if@mainmatter\thechapter.\fi + \else + \thechapter.% + \fi + \@arabic\c@equation +} + +\newif\if@restonecol +\newcommand{\dictum}[2][]{\par% + \begingroup + \raggeddictum\parbox{\dictumwidth}{% + {\@dictumfont{\raggeddictumtext #2\strut\par}% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + {\raggeddictumtext\dictumrule}% + \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}% + \strut\par% + \fi% + }% + }\par% + \endgroup +} +\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}% +\newcommand*{\dictumwidth}{.3333\textwidth} +\newcommand*{\raggeddictum}{\raggedleft} +\newcommand*{\dictumauthorformat}[1]{(#1)} +\newcommand*{\raggeddictumtext}{\raggedright} +\newcommand*{\raggeddictumauthor}{\raggedleft} +\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small} +\newkomafont{dictumauthor}{\itshape} +\aliaskomafont{dictumtext}{dictum} +\setlength{\skip\@mpfootins}{\skip\footins} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\newcommand*{\new@tpo@label}{\@newl@bel{tpo}} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\new@tpo@label[2]{}% + }% + \fi +} +\newcommand*{\scr@tpo}{0} +\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{% + \@bsphack + \begingroup + \@tempcnta=\scr@tpo + \advance\@tempcnta by\@ne + \xdef\scr@tpo{\the\@tempcnta}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax + \protect\G@refundefinedtrue + \ClassWarning{\KOMAClassName}{% + odd/even page label number \scr@tpo\space undefined}% + \edef\@tempa{\the\value{page}}% + \else + \edef\@tempa{\csname tpo@\scr@tpo\endcsname}% + \fi + \ifodd\number\@tempa + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup + \edef\is@thispageodd@setlabel{% + \if@filesw + \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{% + \noexpand\string + \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}% + \fi + \noexpand\def\noexpand\is@thispageodd@setlabel + {\unexpanded\expandafter{\is@thispageodd@setlabel}}% + }% + #1% + \@esphack +} +\newcommand*{\is@thispageodd@setlabel}{} +\newif\ifthispagewasodd +\providecommand*{\ifthispageodd}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command + `\string\ifthispageodd'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'% + }% + \Ifthispageodd +} +\newcommand{\Ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand\marginline[1]{% + \marginpar[\raggedleft{#1}]{\raggedright #1}% +} +\scr@ifundefinedorrelax{textsubscript}{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% +}{% + \scr@ifundefinedorrelax{textsubscript }{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% + }{}% +} +\providecommand*{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% +} +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +\newcommand*{\scr@package@not@recommended}[2]{% + \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}% + \reserved@a + \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi + }{% + \BeforePackage{#1}{% + \ClassWarning{\KOMAClassName}{% + Usage of package `#1' together\MessageBreak + with a KOMA-Script class is not recommended.\MessageBreak + \if\relax\detokenize{#2}\relax\else + I'd suggest to use #2.\MessageBreak + \fi + Nevertheless, using requested\MessageBreak + package `#1'% + }% + }% + }% +}% +\scr@package@not@recommended{emptypage}{% + option\MessageBreak + `cleardoublepage' with one of it's\MessageBreak + several values} +\scr@package@not@recommended{fancyhdr}{% + \MessageBreak + package `scrlayer' or `scrlayer-scrpage', because\MessageBreak + they support KOMA-Script classes.\MessageBreak + With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak + like options `headsepline', `footsepline' or command\MessageBreak + `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak + `\string\addtokomafont' for the page style elements need\MessageBreak + explicite user intervention to work} +\scr@package@not@recommended{minitoc}{} +\scr@package@not@recommended{multitoc}{% + package `multicol' and, e.g.:\MessageBreak + \space\space + \string\BeforeStartingTOC{\string\begin{multicols}{2}}\MessageBreak + \space\space + \string\AfterStartingTOC{\string\end{multicols}}\MessageBreak + to make all ToCs two-columned.\MessageBreak + \@ifpackagelater{2018/07/18}{}{% + Note, package `multitoc' breaks additional\MessageBreak + ToCs generated by `\string\DeclareNewTOC' or\MessageBreak + packages like `listings' or `newcaption' and\MessageBreak + even the standard table of contents,\MessageBreak + list of figures or list of tables,\MessageBreak + if you omit the corresponding options `toc',\MessageBreak + `lof' or `lot'.% + }% +} +\scr@package@not@recommended{parskip}{% + option\MessageBreak + `parskip' with one of it's several values} +\scr@package@not@recommended{titleps}{% + package `scrlayer-scrpage'} +\scr@package@not@recommended{titlesec}{% + KOMA-Script features\MessageBreak + like \string\setkomafont, \string\RedeclareSectionCommand, + \string\sectionlinesformat\MessageBreak + and several others to re-configure section\MessageBreak + headings} +\AfterPackage*{sectsty}{% + \@ifpackagelater{sectsty}{2002/02/26}{% + \ClassInfo{\KOMAClassName}{Unknown `sectsty' release.\MessageBreak + Cross your fingers, that is compatible% + }% + }{% + \ClassWarning{\KOMAClassName}{% + Incompatible package `sectsty' loaded!\MessageBreak + Package `sectsty' up to version 2.0.2 is incompatible\MessageBreak + with KOMA-Script from version 2.8e released in 2001.\MessageBreak + You should avoid that package and configure the\MessageBreak + section titles of your document using the KOMA-Script\MessageBreak + user interface, e.g., \string\chapterlinesformat,\MessageBreak + \string\RedeclareSectionCommand\space etc. or you should ask\MessageBreak + the `sectsty' maintainer for a more compatible release.\MessageBreak + Ignoring this warning could result in several error\MessageBreak + messages and formatting issues after loading package\MessageBreak + `sectsty'% + }% + }% +} +\scr@package@not@recommended{tocbibind}{% + options like `listof=totoc'\MessageBreak + or `bibliography=totoc', or commands like\MessageBreak + `\string\setuptoc{toc}{totoc}' instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables, bibliography,\MessageBreak + index and the running head% +} +\scr@package@not@recommended{tocloft}{% + options like `listof=entryprefix',\MessageBreak + commands like `\string\listoflofentryname' or\MessageBreak + `\string\listoflotentryname', + and `\string\DeclareTOCStyleEntry' or\MessageBreak + `\string\RedeclareSectionCommand' + instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables and table of\MessageBreak + contents, i.e., options like `listof=numbered',\MessageBreak + `listof=flat or `toc=flat', commands like\MessageBreak + `\string\BeforeTOCHead{...}' and + `\string\AfterTOCHead{...}',\MessageBreak + `\string\BeforeStartingTOC{...}' and + \string\AfterStartingTOC{...}',\MessageBreak + all features of `\string\DeclareTOCStyleEntry',\MessageBreak + and the ToC entry features of `\string\DeclareSecionCommand'\MessageBreak + and `\string\RedeclareSectionCommand' of levels\MessageBreak + `part', + `section', `subsection',\MessageBreak + `subsubsection', `paragraph' and `subparagraph'% +} +\BeforePackage{minitoc}{% + \let\scr@mt@saved@sect\@sect +} +\AfterPackage{minitoc}{% + \def\@tempa#1#2#3#4#5#6[#7]#8{% + \ifnum #2<1 \relax + \addtocontents{toc}{\protect\sectbegin} + \fi + \stc@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}% + }% + \ifx\@sect\@tempa + \def\@tempa#1#2#3#4#5#6[#7]#8{ + \expandafter + \ifx\csname #1\endcsname\section\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifx\csname #1\endcsname\starsection\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifnum #2>\c@secnumdepth\relax + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \edef\@svsec{\csname the#1\endcsname\hskip 1em}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}% + {\interlinepenalty \@M #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7% + }% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname} + \fi + #7}% + }% + \fi + \@xsect{#5}% + }% + \ifx\stc@sect\@tempa + \ClassWarning{\KOMAClassName}{% + Redefining minitoc's internal command + `\string\stc@sect'\MessageBreak + to prevent minitoc to destroy several features\MessageBreak + of KOMA-Script% + }% + \let\stc@sect\scr@mt@saved@sect + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\stc@sect'% + }% + \let\scr@mt@saved@sect\relax + \fi + \else + \ifx\@sect\scr@mt@saved@sect + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround for + `\string\@sect',\MessageBreak + because it is not needed% + }% + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\@sect'% + }% + \fi + \let\scr@mt@saved@sect\relax + \fi +} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\set@tempdima@hw}{% + \setlength{\@tempdima}{\textwidth}% + \if@mincl + \addtolength{\@tempdima}{\marginparsep}% + \addtolength{\@tempdima}{\marginparwidth}% + \fi +} +\newcommand*{\pnumfont}{\normalfont\normalcolor} +\newcommand*{\headfont}{\normalfont\normalcolor\slshape} +\newcommand*{\footfont}{} +\newcommand*{\scr@fnt@pagenumber}{\pnumfont} +\aliaskomafont{pagination}{pagenumber} +\newcommand*{\scr@fnt@pageheadfoot}{\headfont} +\aliaskomafont{pagehead}{pageheadfoot} +\newcommand*{\scr@fnt@pagefoot}{\footfont} +\newcommand*{\scr@fnt@wrn@pagefoot}[1]{% + This class does not use font element `pagefoot'!\MessageBreak + Maybe you should load package `scrlayer-scrpage',\MessageBreak + before using this element% +} +\newcommand*{% + \pagemark +}{% + {\usekomafont{pagenumber}{% + \thepage}}} +\renewcommand*{\ps@plain}{% + \renewcommand*{\@oddhead}{}% + \let\@evenhead\@oddhead + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% +}% +\newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\chaptermark}[1]{% + \if@twoside\expandafter\markboth\else\expandafter\markright\fi + {\MakeMarkcase{\Ifnumbered{chapter}{% + \if@mainmatter + \chaptermarkformat + \fi + }{}##1}% + }{}% + }% + \renewcommand*{\sectionmark}[1]{% + \if@twoside + \markright{\MakeMarkcase{\Ifnumbered{section}{\sectionmarkformat}{}% + ##1}}% + \fi + }% +}% +\newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\chaptermark}[1]{}% + \renewcommand*{\sectionmark}[1]{}% +} +\newcommand*{\titlepagestyle}{plain} +\newcommand*{\indexpagestyle}{plain} +\pagestyle{headings} +\pagenumbering{arabic} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\providecommand*{\@mkleft}{% + \IfActiveMkBoth{\markleft}{\@gobble}% +}% +\providecommand*{\@mkright}{% + \IfActiveMkBoth{\markright}{\@gobble}% +}% +\providecommand{\@mkdouble}[1]{% + \@mkboth{#1}{#1}% +} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newlength{\abovecaptionskip} +\newlength{\belowcaptionskip} +\setlength{\abovecaptionskip}{10\p@} +\setlength{\belowcaptionskip}{0\p@} +\newcommand*{\captionformat}{:\ } +\newcommand{\scr@caption}{} +\AtBeginDocument{\let\scr@caption\caption} +\newcommand{\captionabove}{\@captionabovetrue\scr@caption} +\newcommand{\captionbelow}{\@captionabovefalse\scr@caption} +\newcommand*{\scap@caption}{} +\newcommand*{\scap@width}{\linewidth} +\newcommand*{\scap@move}{\z@} +\newif\ifscap@alt +\newcommand*{\scap@currentlabel}{} +\newcommand*{\@captionbeside}{} +\long\def\@captionbeside[#1]#2{% + \kernel@ifnextchar [%] + {\@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@captionbeside}{} +\long\def\@@captionbeside[#1]#2[#3]{% + \def\scap@pos{#3}% + \kernel@ifnextchar [%] + {\@@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@captionbeside}{} +\long\def\@@@captionbeside[#1]#2[#3]{% + \def\scap@width{#3}% + \kernel@ifnextchar [%] + {\@@@@captionbeside[{#1}]{#2}} + {\setlength{\@tempdima}{#3}% + \addtolength{\@tempdima}{-\linewidth}% + \setlength{\@tempdima}{-.5\@tempdima}% + \edef\scap@move{\the\@tempdima}% + \c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@@captionbeside}{} +\long\def\@@@@captionbeside[#1]#2[#3]{% + \def\scap@move{#3}% + \kernel@ifstar + {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}} + {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}% +} +\newbox\c@pti@nb@sid@b@x +\newcommand{\c@pti@nb@sid@}{} +\long\def\c@pti@nb@sid@[#1]#2{% + \def\scap@caption{% + \if c\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \else \if t\scap@valign + \setlength{\abovecaptionskip}{-\ht\strutbox}% + \else \if b\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \fi + \fi + \fi + \setlength{\belowcaptionskip}{-\dp\strutbox}% + \captionbelow[{#1}]{#2}% + }% + \begin{lrbox}{\c@pti@nb@sid@b@x}% +} +\newenvironment*{captionbeside}{% + \@dblarg\@captionbeside +}{% + \end{lrbox}% + \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}% + \setlength{\@tempdimb}{\scap@width}% + \addtolength{\@tempdimb}{-\@tempdima}% + \addtolength{\@tempdimb}{-\columnsep}% + \ifdim \@tempdimb<2em + \ClassWarning{\KOMAClassName}{% + caption beside will be very, very small.\MessageBreak + In most cases this will result in overfull and\MessageBreak + underfull \string\hbox\space messages% + }% + \fi + \onelinecaptionsfalse + \setcapwidth[r]{\@tempdimb}% + \let\@tempa\scap@pos + \setlength{\@tempdimc}{\scap@move}% + \if i\scap@pos\def\@tempa{l}\fi + \if o\scap@pos\def\@tempa{r}\fi + \if@twoside + \Ifthispageodd{}{% + \if o\scap@pos\def\@tempa{l}\fi + \if i\scap@pos\def\@tempa{r}\fi + \ifscap@alt + \addtolength{\@tempdimc}{\scap@width}% + \addtolength{\@tempdimc}{-\linewidth}% + \setlength{\@tempdimc}{-\@tempdimc}% + \fi + }% + \fi + \hspace*{\@tempdimc}% + \if l\@tempa + \rlap{% + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + }% + \else + \rlap{% + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + }% + \fi + \par + \aftergroup\let\aftergroup\@currentlabel + \aftergroup\scap@currentlabel +} +\newcommand*\capfont{\normalfont\normalcolor} +\newcommand*\caplabelfont{\normalfont\normalcolor} +\newcommand*{\scr@fnt@caption}{\capfont} +\newcommand*{\scr@fnt@captionlabel}{\caplabelfont} +\newif\ifdofullc@p +\dofullc@ptrue +\newif\if@capbreak +\@capbreakfalse +\newcommand*{\setcapindent}{\kernel@ifstar{\@@setcapindent}{\@setcapindent}} +\newcommand*{\@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \ifdim\@tempdima>\hsize + \addtolength{\@tempdima}{-\hsize}\@capbreaktrue + \else + \@capbreakfalse + \fi + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse +} +\newcommand*{\@@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse\@capbreaktrue +} +\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse} +\newcommand{\@makecaption}[2]{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + \@@makecaption\@firstofone{#1}{#2}% + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi +} +\newcommand*{\cap@width}{\hsize} +\newcommand*{\cap@left}{\hfill} +\newcommand*{\cap@right}{\hfill} +\newcommand*{\setcapwidth}[2][]{% + \begingroup% + \setlength{\@tempdima}{#2}% + \ifdim\@tempdima <\z@ + \@tempdima\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \fi + \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}% + \@tempa + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\setcapdynwidth}[2][]{% + \def\cap@width{#2}% + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\cap@margin}{} +\let\cap@margin=\relax% +\newcommand*{\setcapmargin}{\kernel@ifstar{\@setcapmargin}{\@@setcapmargin}} +\newcommand*{\@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \noexpand\if@twoside + \noexpand\Ifthispageodd{% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }{% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}% + }% + \noexpand\else + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + \noexpand\fi + }% + \@tempa + }% +} +\newcommand*{\@@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }% + \@tempa + }% +} +\newcommand{\@@makecaption}[3]{% + \cap@margin + \begingroup + \ifonelinecaptions + \def\stepcounter##1{\advance\value{##1}\@ne}% + \let\refstepcounter\stepcounter + \let\label\@gobble + \let\@footnotetext=\@gobble + \let\hypertarget\@gobbletwo + \edef\@xnewline{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xnewline}% + }% + \edef\@xcentercr{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xcentercr}% + }% + \settowidth{\@tempdima}{\scr@@makesinglelinecaption{#1}{#2}{#3}}% + \ifdim\@tempdima>\cap@width + \aftergroup\scr@makemultilinecaption + \else + \aftergroup\scr@makesinglelinecaption + \fi + \else + \aftergroup\scr@makemultilinecaption + \fi + \endgroup + {#1}{#2}{#3}% +} +\newcommand{\scr@makesinglelinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \scr@@makesinglelinecaption{#1}{#2}{#3}% + \cap@right + }\par\kern\dp\strutbox% + }% + }\kern-\dp\strutbox +} +\newcommand{\scr@@makesinglelinecaption}[3]{% + \usekomafont{caption}{\strut\ignorespaces + #1{{\usekomafont{captionlabel}{#2\captionformat}}}% + \ignorespaces #3\unskip}% +} +\newcommand{\scr@makemultilinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \vbox{\hsize\cap@width\linewidth\hsize + \scr@ifundefinedorrelax{@captype}{% + \ClassWarning{\KOMAClassName}{% + `\string\caption' outside float.\MessageBreak + Seems you are using `\string\caption' outside a + float.\MessageBreak + Maybe you are using a package that uses + `\string\@makecaption'\MessageBreak + without setting `\string\@captype' before.\MessageBreak + Because I cannot detect the caption type, I'm using\MessageBreak + the empty one.% + }% + \let\@captype\@empty + }{}% + \scr@ifundefinedorrelax{ragged\@captype caption}{\raggedcaption}{% + \@nameuse{ragged\@captype caption}% + }% + \ifdofullc@p + \@hangfrom{% + \strut + \scr@smashdp{% + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \ifdim\cap@indent<\z@ + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent{\usekomafont{caption}{% + \hspace*{-\cap@indent}#3\scr@endstrut\par + }}% + \else + \if@capbreak + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent\@hangfrom{\hspace*{\cap@indent}}% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}% + {% + \hspace{-\cap@indent}% + \scr@smashdp{% + #1{\usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut}\par}% + }% + \fi + \fi + \fi + }% + \cap@right + }\par\kern\dp\strutbox + }% + }\kern-\dp\strutbox +} +\newcommand*\setcaptionalignment{% + \kernel@ifnextchar [%] + {\@setcaptionalignment} + {% + \scr@ifundefinedorrelax{@captype}{\@setcaptionalignment}{% + \edef\reserved@a{\noexpand\@setcaptionalignment[{\@captype}]}\reserved@a + }% + }% +}% +\newcommand*\@setcaptionalignment[2][]{% + \IfArgIsEmpty{#1}{}{% + \expandafter\ifnum + \scr@ifundefinedorrelax{#1}{0}{\scr@ifundefinedorrelax{end#1}{0}{1}}=0 + \ClassWarning{\KOMAClassName}{% + float type `#1' defined not yet,\MessageBreak + but setting ragged mode for captions of\MessageBreak + float type `#1'% + }% + \fi + }% + \def\reserved@a{#2}% + \Ifstr{\reserved@a}{j}{% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \Ifstr{\reserved@a}{l}{% + \scr@ifundefinedorrelax{LaTeXraggedright}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedright + }% + }{% + \Ifstr{\reserved@a}{r}{% + \scr@ifundefinedorrelax{LaTeXraggedleft}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedleft + }% + }{% + \Ifstr{\reserved@a}{c}{% + \scr@ifundefinedorrelax{LaTeXcentering}{% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXcentering + }% + }{% + \Ifstr{\reserved@a}{J}{% + \scr@ifundefinedorrelax{justifying}{% + \scr@caption@raggede@warning{J}{\justifying}% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \expandafter\let\csname ragged#1caption\endcsname\justifying + }% + }{% + \Ifstr{\reserved@a}{L}{% + \scr@ifundefinedorrelax{RaggedRight}{% + \scr@caption@raggede@warning{L}{\RaggedRight}% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedRight + }% + }{% + \Ifstr{\reserved@a}{R}{% + \scr@ifundefinedorrelax{RaggedLeft}{% + \scr@caption@raggede@warning{R}{\RaggedLeft}% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedLeft + }% + }{% + \Ifstr{\reserved@a}{C}{% + \scr@ifundefinedorrelax{Centering}{% + \scr@caption@raggede@warning{C}{\Centering}% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\Centering + }% + }{% + \Ifstr{\reserved@a}{}{% + \expandafter\let\csname ragged#1caption\endcsname\relax + }{% + \ClassError{\KOMAClassName}{unknown alignment char `#2'}{% + \string\setcaptionalignment\space supports + only:\MessageBreak + \space\space c - centered captions,\MessageBreak + \space\space j - justified captions,\MessageBreak + \space\space l - left align captions,\MessageBreak + \space\space r - right aligned captions,\MessageBreak + \space\space C - centered captions with + `ragged2e',\MessageBreak + \space\space J - justified captions with + `ragged2e',\MessageBreak + \space\space L - left align captions with + `ragged2e',\MessageBreak + \space\space R - right aligned captions with + `ragged2e',\MessageBreak + or an empty argument to remove special + alignment.\MessageBreak + If you'd continue, I'd not change the alignment.% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +\newcommand*{\scr@caption@raggede@warning}[2]{% + \begingroup + \lowercase{\def\reserved@a{#1}}% + \ClassWarning{\KOMAClassName}{% + `\string#2' undefined!\MessageBreak + To avoid replacing caption alignment `#1' by `\reserved@a'\MessageBreak + you should load package `ragged2e' before using\MessageBreak + `\string\setcaptionalignment'% + }% + \endgroup +} +\newcommand*\raggedcaption{} +\newcommand*{\scr@caption@before@longtable@warning}[1]{% + \ClassWarning{\KOMAClassName}{% + you've loaded package `#1' before package\MessageBreak + `longtable'!\MessageBreak + Because of this package `#1' isn't able to\MessageBreak + control `\string\caption' at longtables. \space After loading + \MessageBreak + package `#1' KOMA-Script also doesn't control\MessageBreak + `\string\caption'.\MessageBreak + I think, you should load package `caption' after\MessageBreak + package `longtable'% + }% +} +\AfterPackage{longtable}{% + \if@komalongtable + \renewcommand{\LT@makecaption}[3]{% + \noalign{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + }% + \LT@mcol\LT@cols c{% + \hbox to\z@{\hss\parbox[t]\linewidth{% + \def\@captype{table}% + \@@makecaption{#1}{#2}{#3}% + \endgraf + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi + }% + \hss + }% + }% + }% + \newcommand*{\scr@LT@array}{}% + \let\scr@LT@array=\LT@array + \renewcommand*{\LT@array}{% + \let\scr@caption=\LT@caption + \def\captionabove{\noalign{\global\@captionabovetrue}% + \scr@caption}% + \def\captionbelow{\noalign{\global\@captionabovefalse}% + \scr@caption}% + \if@tablecaptionabove + \let\LT@caption=\captionabove + \else + \let\LT@caption=\captionbelow + \fi + \scr@LT@array + }% + \ClassInfo{\KOMAClassName}{% + longtable captions redefined% + }% + \fi +} +\newcommand*{\fs@komaabove}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iftrue} +\newcommand*{\fs@komabelow}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iffalse} +\newcommand{\floatc@komascript}{\@@makecaption\@firstofone} +\setcounter{topnumber}{2} +\renewcommand*\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand*\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand*\textfraction{.2} +\renewcommand*\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand*\dbltopfraction{.7} +\renewcommand*\dblfloatpagefraction{.5} +\newcommand*{\captionof}[1]{\def\@captype{#1}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@#1captionabove\endcsname\iftrue + \@captionabovetrue + \fi + \scr@caption} +\newcommand*{\captionaboveof}{\@captionabovetrue\captionof} +\newcommand*{\captionbelowof}{\@captionabovefalse\captionof} +\BeforePackage{capt-of}{\let\captionof\relax} +\newenvironment{captionofbeside}[1]{% + \def\@captype{#1}% + \captionbeside +}{% + \endcaptionbeside +} +\newcommand*\figurename{Figure} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\figurename{Figure} +\newcommand*\tablename{Table} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\tablename{Table} +\DeclareNewTOC[% + type=figure, + float, + nonfloat, + counterwithin=chapter, + floatpos=tbp, + floattype=1, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@figurecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lof} +\expandafter\ifnum\scr@v@is@le{2.97d}% + \renewcommand*\thefigure{\thechapter.\@arabic\c@figure} +\fi +\DeclareNewTOC[% + type=table, + float, + nonfloat, + counterwithin=chapter, + floatpos=tbp, + floattype=2, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@tablecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lot} +\expandafter\ifnum\scr@v@is@le{2.97d}% + \renewcommand*\thetable{\thechapter.\@arabic\c@table} +\fi +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\renewcommand*\footnoterule{% + \normalsize\ftn@rule@test@values + \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax + \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi + {\usekomafont{footnoterule}{% + \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}% + \kern 2.6\p@} +\newcommand*{\ftn@rule@test@values}{% + \ifdim\ftn@rule@height <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + less than 0% + }% + \else + \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + greater than \the\dimexpr\skip\footins -2.6\p@\relax + }% + \fi + \fi + \ifdim\ftn@rule@width <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + less than 0pt% + }% + \else + \ifdim\ftn@rule@width >\columnwidth + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + greater than \string\columnwidth + }% + \fi + \fi +} +\newkomafont{footnoterule}{} +\newcommand*{\ftn@rule@width}{.4\columnwidth} +\newcommand*{\ftn@rule@height}{.4\p@} +\newcommand*{\setfootnoterule}[2][]{% + \IfArgIsEmpty{#1}{}{% + \renewcommand*{\ftn@rule@height}{#1}% + }% + \IfArgIsEmpty{#2}{}{% + \renewcommand*{\ftn@rule@width}{#2}% + }% + \ftn@rule@test@values +} +\@addtoreset{footnote}{chapter} +\newcommand\deffootnote[4][]{% + \expandafter\ifnum\scr@v@is@ge{3.22}\relax + \long\def\@makefntext##1{% + \ExecuteDoHook{footnote/text/begin}% + \raggedfootnote + \leftskip #2 + \l@addto@macro\@trivlist{% + \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi + }% + \parindent #3\noindent + \IfArgIsEmpty{#1}{}{% + \hskip \dimexpr #1-#2\relax + }% + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + \ExecuteDoHook{footnote/text/end}% + }% + \else + \ClassInfo{\KOMAClassName}{% + Using old \string\@makefntext\space due to compatibility + level\MessageBreak + less than 3.22}% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2}% + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1}% + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2}% + \parshape \tw@ #1 \@tempdima #2 \@tempdimb + }% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + }% + \fi + \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% +} +\newcommand*{\raggedfootnote}{} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\aliaskomafont{footnotenumber}{footnotelabel} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\aliaskomafont{footnotetext}{footnote} +\newcommand*\deffootnotemark[1]{% + \def\@makefnmark{\hbox{\ftntm@font{#1}}}% +} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\aliaskomafont{footnoteref}{footnotereference} +\aliaskomafont{footnotemark}{footnotereference} +\newcommand*{\FN@mf@check}{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern\multiplefootnoteseparator + \spacefactor\@x@sf\relax + \fi +} +\newcommand*{\scr@mf@prepare}{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax +} +\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{} +\newcommand{\scr@saved@footnotetext}{} +\let\scr@saved@footnotetext\@footnotetext +\renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname +} +\BeforePackage{footmisc}{% + \ifx\@footnotemark\scr@footnotemark + \let\@footnotemark\scr@saved@footnotemark + \fi + \let\@footnotetext\scr@saved@footnotetext +} +\BeforePackage{setspace}{% + \let\@footnotetext\scr@saved@footnotetext +} +\AfterPackage{setspace}{% + \let\scr@saved@footnotetext\@footnotetext + \renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname + }% +} +\newcommand*{\multiplefootnoteseparator}{% + \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup +} +\newcommand*{\multfootsep}{,} +\newcommand*{\multiplefootnotemarker}{3sp} +\newcommand*{\thefootnotemark}{\@thefnmark} +\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}} +\deffootnotemark{\textsuperscript{\thefootnotemark}} +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: body) +\g@addto@macro{\numberline@numberpostfix}{\autodot} +\usetocbasicnumberline[% + \ClassInfo{\KOMAClassName}{Redefining `\string\numberline'}% +] +\doforeachtocfile[float]{% + \setuptoc{\@currext}{chapteratlist}% +} +\AtAddToTocList[float]{% + \setuptoc{\@currext}{chapteratlist}% +} +\newcommand*{\scr@dottedtocline}{} +\newcommand*{\last@l@number}{} +\newcommand*{\@l@number}{} +\newcommand*{\set@l@number}[1]{% + \settowidth{\@tempdima}{#1\enskip}% + \ifdim\@tempdima >\@l@number + \xdef\@l@number{\the\@tempdima}% + \fi% + \ifdim\@tempdima >\last@l@number \else + \setlength{\@tempdima}{\last@l@number}% + \fi% +} +\newcommand*{\before@starttoc}[1]{% + \let\scr@dottedtocline=\@dottedtocline + \renewcommand*{\@dottedtocline}[3]{% + \scr@dottedtocline{##1}{\z@}{\last@l@number}}% + \renewcommand*{\numberline@box}[1]{% + \set@l@number{##1}\hb@xt@\@tempdima{##1}}% + \gdef\@l@number{\z@}% + \@ifundefined{#1@l@number}{% + \def\last@l@number{2em}% + }{% + \expandafter\ifx\csname #1@l@number\endcsname\@empty + \let\last@l@number\z@ + \else + \expandafter\let\expandafter\last@l@number + \expandafter=\csname#1@l@number\endcsname + \fi + }% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do##1{% + \scr@ifundefinedorrelax{scr@tso@##1@numwidth}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@numwidth}{\last@l@number}% + }% + }% + \scr@ifundefinedorrelax{scr@tso@##1@indent}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@indent}{\z@}% + }% + }% + }% + \@nameuse{scr@dte@donumwidth}% + \do@endgroup +} +\newcommand*{\after@starttoc}[1]{% + \protected@write\@auxout{}{% + \string\gdef\expandafter\string\csname#1@l@number\endcsname{% + \@l@number}}% +} +\g@addto@macro\tocbasic@@before@hook{% + \if@dynlist\expandafter\before@starttoc\expandafter{\@currext}\fi +} +\g@addto@macro\tocbasic@@after@hook{% + \if@dynlist\expandafter\after@starttoc\expandafter{\@currext}\fi +} +\newcommand*\contentsname{Contents} +\newcommand*\listoftocname{\contentsname} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\contentsname{Contents}% +\setcounter{tocdepth}{2} +\newcommand*\toc@heading{% + \ClassWarning{\KOMAClassName}{% + usage of deprecated \string\toc@heading!\MessageBreak + You should use the features of package `tocbasic'\MessageBreak + instead of \string\toc@heading.\MessageBreak + Definition of \string\toc@heading\space may be removed from\MessageBreak + KOMA-Script soon, so it should not be used% + }% + \chapter*{\contentsname}% + \@mkboth{\MakeMarkcase{\contentsname}}{\MakeMarkcase{\contentsname}}% +} +\newcommand*{\toc@l@number}{} +\newcommand*{\tableofcontents}{% + \begingroup + \let\if@dynlist\if@tocleft + \expandafter\listoftoc\expandafter{\ext@toc}% + \endgroup +} +\newcommand{\addtocentrydefault}[3]{% + \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}% +} +\newcommand*{\float@listhead}[1]{% + \scr@float@listhead@warning + \float@@listhead{#1}% + \@mkboth{\MakeMarkcase{#1}}{\MakeMarkcase{#1}}% + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}% + }% + \fi +} +\newcommand*{\scr@float@listhead@warning}{% + \ClassWarning{\KOMAClassName}{% + \string\float@listhead\space detected!\MessageBreak + Implementation of \string\float@listhead\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Maybe implementation of \string\float@listhead\space will\MessageBreak + be removed from KOMA-Script soon.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@listhead\space interface% + }% +} +\newcommand*{\scr@float@addtolists@warning}{% + \ClassWarningNoLine{\KOMAClassName}{% + \string\float@addtolists\space detected!\MessageBreak + Implementation of \string\float@addtolist\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Since Version 3.12 support for deprecated\MessageBreak + \string\float@addtolist\space interface has been\MessageBreak + restricted to only some of the KOMA-Script\MessageBreak + features and been removed from others.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@addtolist\space interface% + }% + \global\let\scr@float@addtolists@warning\relax +} +\renewcommand*\listfigurename{List of Figures} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listfigurename{List of Figures} +\renewcommand*\listoflofname{\listfigurename} +\renewcommand*\listoflofentryname{\figurename} +\renewcommand*\listtablename{List of Tables} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listtablename{List of Tables} +\renewcommand*\listoflotname{\listtablename} +\renewcommand*\listoflotentryname{\tablename} +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\bibname{Bibliography} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\bibname{Bibliography} +\newcommand*{\bibpreamble}{\relax} +\let\bibpreamble\relax +\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}} +\newdimen\bibindent +\bibindent=1.5em +\newenvironment{thebibliography}[1]{% + \if@bib@break@ + \bib@beginhook + \else + \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else + \setchapterpreamble{\bibpreamble}% + \fi\fi + \bib@heading + \bib@beginhook + \bib@before@hook + \fi + \renewcommand{\BreakBibliography}[1]{% + \@bib@break + \end{thebibliography}% + \begingroup ##1\endgroup + \begin{thebibliography}{#1} + }% + \list{% + \@biblabel{\@arabic\c@enumiv}% + }{% + \settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \if@bib@break@ + \edef\@tempa{% + \noexpand\usecounter{enumiv}% + \noexpand\setcounter{enumiv}{\the\c@enumiv}% + }\@tempa + \no@bib@break + \else + \usecounter{enumiv}% + \fi + \let\p@enumiv\@empty + \renewcommand*\theenumiv{\@arabic\c@enumiv}% + }% + \sloppy\clubpenalty4000 \widowpenalty4000 + \sfcode`\.=\@m +}{% + \if@bib@break@ + \def\@noitemerr{% + \@latex@warning{% + \string\BreakBibliography\space at begin of `thebibliography' + environment\MessageBreak + or following \string\BreakBibliography}% + }% + \else + \def\@noitemerr{% + \@latex@warning{% + Empty `thebibliography' environment or + \string\BreakBibliography\MessageBreak + before end of `thebibliography' environment}% + }% + \fi + \endlist + \if@bib@break@ + \else + \bib@after@hook + \let\bib@before@hook\@empty + \let\bib@after@hook\@empty + \fi + \bib@endhook +} +\newif\if@bib@break@ +\newcommand{\no@bib@break}{\global\let\if@bib@break@\iffalse} +\newcommand*{\@bib@break}{\global\let\if@bib@break@\iftrue} +\newcommand*{\bib@before@hook}{} +\newcommand*{\bib@after@hook}{} +\newcommand{\BreakBibliography}[1]{% + \ClassWarning{\KOMAClassName}{% + You've used \string\BreakBibliography\space either outside of\MessageBreak + the bibliography or `thebibliography' was redefined\MessageBreak + incompatible, e.g., using a bibliography package.\MessageBreak + \string\BreakBibliography\space ignored% + }% +} +\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook} +\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\index@preamble}{} +\let\index@preamble=\relax +\newcommand{\setindexpreamble}[1]{\def\index@preamble{#1}} +\newcommand*{\idx@heading}{% + \if@openright\cleardoublepage\else\clearpage\fi% + \twocolumn[% + \@chaptertolistsfalse + \idx@@heading{\indexname}]% + \ifidx@leveldown + \addsecmark{\indexname}% + \else + \@mkdouble{\MakeMarkcase{\indexname}}% + \fi +} +\newenvironment{theindex}{% + \if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \setchapterpreamble{\index@preamble}% + \idx@heading + \ifx\indexpagestyle\@empty\else\thispagestyle{\indexpagestyle}\fi + \parindent\z@ + \setlength{\parskip}{\z@ \@plus .3\p@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \let\item\@idxitem +}{% + \if@restonecol\onecolumn\else\clearpage\fi +} +\newcommand*\@idxitem{\par\hangindent 40\p@} +\newcommand*\subitem{\@idxitem \hspace*{20\p@}} +\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand*\indexspace{% + \par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax +} +\newcommand*\indexname{Index} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\indexname{Index} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\if@twocolumn + \setlength{\leftmargini}{2em} +\else + \setlength{\leftmargini}{2.5em} +\fi +\setlength{\leftmarginii}{2.2em} +\setlength{\leftmarginiii}{1.87em} +\setlength{\leftmarginiv}{1.7em} +\if@twocolumn + \setlength{\leftmarginv}{.5em} + \setlength{\leftmarginvi}{.5em} +\else + \setlength{\leftmarginv}{1em} + \setlength{\leftmarginvi}{1em} +\fi +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelsep}{.5em} +\setlength{\labelwidth}{\leftmargini} +\addtolength{\labelwidth}{-\labelsep} +\@beginparpenalty=-\@lowpenalty +\@endparpenalty =-\@lowpenalty +\@itempenalty =-\@lowpenalty +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\p@enumii(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\usekomafont{labelitemi}{\textbullet}} +\newcommand*\labelitemii{\usekomafont{labelitemii}{\textendash}} +\newcommand*\labelitemiii{\usekomafont{labelitemiii}{\textasteriskcentered}} +\newcommand*\labelitemiv{\usekomafont{labelitemiv}{\textperiodcentered}} +\newenvironment{description}{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}% +}{% + \endlist +} +\newcommand*{\descriptionlabel}[1]{% + \hspace{\labelsep}\usekomafont{descriptionlabel}{#1}% +} +\newenvironment{labeling}[2][]{% + \def\sc@septext{#1}% + \list{}{\settowidth{\labelwidth}{{% + \usekomafont{labelinglabel}{#2% + \usekomafont{labelingseparator}{\sc@septext}}% + }}% + \leftmargin\labelwidth \advance\leftmargin by \labelsep + \let\makelabel\labelinglabel + }% +}{% + \endlist +} +\newcommand\labelinglabel[1]{% + \usekomafont{labelinglabel}{#1\hfil + \usekomafont{labelingseparator}{\sc@septext}}% +} +\newenvironment{verse}{% + \let\\=\@centercr + \list{}{\itemsep=\z@ + \itemindent=-1.5em + \listparindent=\itemindent + \rightmargin=\leftmargin + \advance\leftmargin by1.5em + }% + \item\relax +}{% + \endlist +} +\newenvironment{quotation}{% + \list{}{\listparindent 1em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@ + }% + \item\relax +}{% + \endlist +} +\newenvironment{quote}{% + \list{}{\rightmargin\leftmargin}% + \item\relax +}{% + \endlist +} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin +}{% + \advance\@listdepth\@ne + \endlist +} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi + \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi + \@addmargin +}{% + \if@twoside + \unskip\nobreak\Ifthispageodd{}{}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else + \ClassWarning{\KOMAClassName}{% + page break inside `addmargin*' environment.\MessageBreak + A `addmargin*' environment starting on page + \scr@addmargin@startpage\MessageBreak + ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak + This will result in potential wrong margins on\MessageBreak + every other page.\MessageBreak + So maybe you should change the `addmargin*'\MessageBreak + environment, that ends% + }% + \fi + \fi + \advance\@listdepth\@ne + \endlist +} +\newcommand*{\@addmargin}[2][\@tempa]{% + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\@tempskipa}{\topsep}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\@tempskipb}{\partopsep}% + \setlength{\partopsep}{\z@}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@}% + \advance\@listdepth\m@ne + }% + \expandafter\ifnum\scr@v@is@ge{3.22}% + \setlength{\topsep}{\@tempskipa}% + \setlength{\partopsep}{\@tempskipb}% + \fi + \item\is@thispageodd@setlabel\nobreak\ignorespaces +} +\newcommand*\descfont{\@gr@gsffamily\bfseries} +\newcommand*{\scr@fnt@descriptionlabel}{\descfont} +\newcommand*{\labelitemfont}{\normalfont} +\newcommand*\scr@fnt@itemizelabel{\labelitemfont} +\newkomafont{labelitemi}{\usekomafont{itemizelabel}} +\newkomafont{labelitemii}{\usekomafont{itemizelabel}\bfseries} +\newkomafont{labelitemiii}{\usekomafont{itemizelabel}} +\newkomafont{labelitemiv}{\usekomafont{itemizelabel}} +\newkomafont{labelinglabel}{} +\newkomafont{labelingseparator}{} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrbook.cls'. diff --git a/texmf/tex/latex/koma-script/scrdate.sty b/texmf/tex/latex/koma-script/scrdate.sty new file mode 100644 index 000000000..2d7192db3 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrdate.sty @@ -0,0 +1,255 @@ +%% +%% This is file `scrdate.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,scrdate') +%% scrtime.dtx (with options: `package,scrdate,identify') +%% scrkernel-basics.dtx (with options: `load') +%% scrtime.dtx (with options: `package,scrdate,option') +%% scrtime.dtx (with options: `package,scrdate,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{scrdate}[% + 2022/07/04 v3.37 KOMA-Script + package + (day of the week)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +\newcommand*{\CenturyPart}[1]{\XdivY{#1}{100}} +\newcommand*{\DecadePart}[1]{\XmodY{#1}{100}} +\newcommand*{\@GaussYear}[3]{% + \ifcase #2 + \PackageError{scrdate}{month out of range}{% + You've asked for the Gauss year of ISO date #1-#2-#3,\MessageBreak + this means, that month hat invalid value '#2'.}% + \or + \numexpr #1 - 1\relax + \or + \numexpr #1 - 1\relax + \else + #1 + \fi +} +\newcommand*{\DayNumber}[3]{% + \XmodY{% + \numexpr #3 + + \ifcase #2 + \PackageError{scrdate}{month out of range}{% + You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak + this means, that month hat invalid value '#2'.}% + \or 28 \or 31 \or 2 \or 5 \or 7 \or 10 \or 12 \or 15 \or 18 + \or 20 \or 23 \or 25 + \else + \PackageError{scrdate}{month out of range}{% + You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak + this means, that month hat invalid value '#2'.}% + \fi + + \DecadePart{\@GaussYear{#1}{#2}{#3}} + + \XdivY{\DecadePart{\@GaussYear{#1}{#2}{#3}}}{4} + + \XdivY{\CenturyPart{\@GaussYear{#1}{#2}{#3}}}{4} + - 2 * \CenturyPart{\@GaussYear{#1}{#2}{#3}} \relax + }{7}% +} +\newcommand*{\ISODayNumber}[1]{\expandafter\@IsoDayNumber#1\@nil} +\newcommand*{\@IsoDayNumber}{} +\def\@IsoDayNumber#1-#2-#3\@nil{\DayNumber{#1}{#2}{#3}} +\newcommand*{\DayName}[3]{\@dayname{\DayNumber{#1}{#2}{#3}}} +\newcommand*{\ISODayName}[1]{\@dayname{\ISODayNumber{#1}}} +\newcommand*{\DayNameByNumber}[1]{% + \@dayname{\XmodY{#1}{7}}% +} +\newcommand*{\ISOToday}{% + \the\year-\ifnum \month<10 0\fi\the\month-\ifnum \day<10 0\fi\the\day% +} +\newcommand*{\IsoToday}{% + \the\year-\the\month-\the\day% +} +\newcommand*{\todaysname}{\DayName{\year}{\month}{\day}} +\newcommand*{\todaysnumber}{\DayNumber{\year}{\month}{\day}} +\newcommand\nameday[1]{\renewcommand*{\todaysname}{#1}} +\newcommand*\scrdate@languagenamewarning{% + \PackageWarningNoLine{scrdate} + {\string\languagename\space not + defined, using \string\language.\MessageBreak + This may result in use of wrong language!\MessageBreak + You should use a compatible language + package\MessageBreak + (e.g. `babel', `german', `french', ...)}% + \let\scrdate@languagenamewarning\relax +} +\newcommand\newdaylanguage[8]{% + \scr@ifundefinedorrelax{l@#1}{% + \PackageInfoNoLine{scrdate}{Language #1\space not defined.\MessageBreak + \protect\dayname@#1\space skipped}% + }{% + \@namedef{dayname@#1}##1{% + \ifcase\numexpr \XmodY{##1}{7}\relax + #8\or #2\or #3\or #4\or #5\or #6\or #7\fi% + }% + \AtBeginDocument{% + \scr@ifundefinedorrelax{date#1}{% + \PackageInfoNoLine{scrdate} + {\protect\date#1\space not defined.\MessageBreak + \protect\todaysname\space probably cannot use + \protect\dayname@#1}% + }{% + \expandafter\let\csname D@date#1\expandafter\endcsname + \csname date#1\endcsname + \@namedef{date#1}{% + \expandafter\let\expandafter\@dayname\csname dayname@#1\endcsname + \@nameuse{D@date#1}}% + \@ifundefined{languagename}{% + \scrdate@languagenamewarning + \ifnum\language=\@nameuse{l@#1} + \@nameuse{date#1}% + \fi + }{% + \@ifundefined{date\languagename}% + {}% + {\@nameuse{date\languagename}}% + }% + }% + }% + }% +} +\newdaylanguage{german}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{ngerman}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{naustrian}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{austrian}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{swissgerman}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{nswissgerman}{Montag}{Dienstag}{Mittwoch} + {Donnerstag}{Freitag}{Samstag}{Sonntag} +\newdaylanguage{american}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{australian}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{british}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{canadian}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{english}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{newzealand}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{UKenglish}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{ukenglish}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{USenglish}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{usenglish}{Monday}{Tuesday}{Wednesday} + {Thursday}{Friday}{Saturday}{Sunday} +\newdaylanguage{acadian}{Lundi}{Mardi}{Mercredi} + {Jeudi}{Vendredi}{Samedi}{Dimanche} +\newdaylanguage{canadien}{Lundi}{Mardi}{Mercredi} + {Jeudi}{Vendredi}{Samedi}{Dimanche} +\newdaylanguage{francais}{Lundi}{Mardi}{Mercredi} + {Jeudi}{Vendredi}{Samedi}{Dimanche} +\newdaylanguage{french}{Lundi}{Mardi}{Mercredi} + {Jeudi}{Vendredi}{Samedi}{Dimanche} +\newdaylanguage{italian}{Luned\`\i}{Marted\`\i}{Mercoled\`\i} + {Gioved\`\i}{Venerd\`\i}{Sabato}{Domenica} +\newdaylanguage{spanish}{Lunes}{Martes}{Mi\'ercoles} + {Jueves}{Viernes}{S\'abado}{Domingo} +\newdaylanguage{croatian}{Ponedjeljak}{Utorak}{Srijeda} + {\v{C}etvrtak}{Petak}{Subota}{Nedjelja} +\newdaylanguage{dutch}{Maandag}{Dinsdag}{Woensdag} + {Donderdag}{Vrijdag}{Zaterdag}{Zondag} +\newdaylanguage{finnish}{Maanantai}{Tiistai}{Keskiviikko} + {Torstai}{Perjantai}{Lauantai}{Sunnuntai} +\newdaylanguage{norsk}{Mandag}{Tirsdag}{Onsdag} + {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag} +\newdaylanguage{danish}{Mandag}{Tirsdag}{Onsdag} + {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag} +\newdaylanguage{swedish}{M\aa{}ndag}{Tisdag}{Onsdag} + {Torsdag}{Fredag}{L\"ordag}{S\"ondag} +\newdaylanguage{polish}{Poniedzia\l{}ek}{Wtorek}{\'Sroda} + {Czwartek}{Pi\aob{}tek}{Sobota}{Niedziela} +\newdaylanguage{czech}{Pond\v{e}l\'\i}{\'Uter\'y}{St\v{r}eda} + {\v{C}tvrtek}{P\'atek}{Sobota}{Ned\v{e}le} +\newdaylanguage{slovak}{Pondelok}{Utorok}{Streda} + {\v{S}tvrtok}{Piatok}{Sobota}{Nede\v{l}a} +\let\@dayname\dayname@english +\InputIfFileExists{scrdate.cfg} + {\typeout{*************************************^^J% + * Local config file scrdate.cfg used^^J% + *************************************}} + {} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrdate.sty'. diff --git a/texmf/tex/latex/koma-script/scrdoc.cls b/texmf/tex/latex/koma-script/scrdoc.cls new file mode 100644 index 000000000..c80ada607 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrdoc.cls @@ -0,0 +1,354 @@ +% ====================================================================== +% scrdoc.cls +% Copyright (c) Markus Kohm, 2002-2022 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in MANIFEST.md. +% ====================================================================== +% Note: This class was made to shrink size of dtx files. +% Do not use this class for anything because it may change +% incompatible from distribution to distribution +% ====================================================================== +% $Id: scrdoc.cls 3900 2022-06-24 08:00:42Z kohm $ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{scrdoc}[% + 2022/06/24 v0.1j KOMA-Script source documentation class (deprecated)] + +\ClassWarningNoLine{scrdoc}{% + This class is depreacted since KOMA-Script 3.36!\MessageBreak + The internal KOMA-Script source documentation class\MessageBreak + scrdoc is not used any longer for the implementation\MessageBreak + documentation of KOMA-Script.\MessageBreak + It is also not compatible with version 3 of the\MessageBreak + doc package and currently only a workaround is used to\MessageBreak + force using doc version 2 and to ignore ltxdoc.cfg.\MessageBreak + You should replace this class urgently, because it will\MessageBreak + be removed from KOMA-Script soon% +} + +% scrdoc is incompatible with doc v3. Several changes would be needed +% to improve this. However, currently a kind of emergency workaround can be +% used. +\PassOptionsToClass{nocfg,doc2}{scrdoc} + +% Replace article class by scrartcl class. +\newcommand*{\sd@saved@LoadClass}{} +\let\sd@saved@LoadClass=\LoadClass +\renewcommand*{\LoadClass}[2][]{% + \begingroup + \edef\@tempc{#2}\def\@tempb{article}% + \ifx\@tempc\@tempb + \let\LoadClass\sd@saved@LoadClass + \def\@tempc{scrartcl}% + \fi + \edef\@tempc{% + \noexpand\endgroup\noexpand\sd@saved@LoadClass[{#1}]{\@tempc}}% + \@tempc +} +\newcommand*{\sd@saved@PassOptionsToClass}{} +\let\sd@saved@PassOptionsToClass=\PassOptionsToClass +\renewcommand*{\PassOptionsToClass}[2]{% + \begingroup + \edef\@tempc{#2}\def\@tempb{article}% + \ifx\@tempc\@tempb + \def\@tempc{scrartcl}% + \fi + \edef\@tempc{% + \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{#1}{% + \@tempc}}% + \@tempc +} +\LoadClassWithOptions{ltxdoc}[2022/06/14] +\@ifundefined{cs}{\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}}{} + +% Use two columns at index +\setcounter{IndexColumns}{2} + +% If \EnableCrossrefs is used, we don't want following macros to be +% indexed: + +\DoNotIndex{\.,\\,\ ,\@Alph,\@M} +\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading} +\DoNotIndex{\@afterindentfalse,\@alph,\@arabic} +\DoNotIndex{\@beginparpenalty} +\DoNotIndex{\@car,\@cdr,\@centercr} +\DoNotIndex{\@dblfloat,\@dotsep} +\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty} +\DoNotIndex{\@float,\@fontswitch} +\DoNotIndex{\@gobbletwo} +\DoNotIndex{\@hangfrom,\@highpenalty} +\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty} +\DoNotIndex{\@latex@warning} +\DoNotIndex{\@m,\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse} +\DoNotIndex{\@mparswitchtrue} +\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath} +\DoNotIndex{\@plus} +\DoNotIndex{\@tempa,\@tempcnta,\@tempdima,\@tempskipka} +\DoNotIndex{\@tempswafalse,\@tempswatrue} +\DoNotIndex{\@tempb,\@tempcntb,\@tempdimb,\@tempskipkb} +\DoNotIndex{\@tempswbfalse,\@tempswbtrue} +\DoNotIndex{\@tempc,\@tempcntc,\@tempdimc,\@tempskipkc} +\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum,\@twocolumnfalse} +\DoNotIndex{\@twocolumntrue,\@twosidefalse,\@twosidetrue} +\DoNotIndex{\@whiledim,\@whilenum} +\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength} +\DoNotIndex{\addvspace,\advance} +\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet} +\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth} +\DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage} +\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\cs} +\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction} +\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs} +\DoNotIndex{\divide,\DoNotIndex} +\DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end} +\DoNotIndex{\end@dblfloat} +\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage} +\DoNotIndex{\everypar,\ExecuteOptions,\expandafter} +\DoNotIndex{\fboxrule,\fboxsep} +\DoNotIndex{\gdef,\global} +\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss} +\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi} +\DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi} +\DoNotIndex{\include,\input,\InputIfFileExists,\item,\itshape} +\DoNotIndex{\kern,\kernel@ifnextchar} +\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip} +\DoNotIndex{\list,\long} +\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal} +\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak} +\DoNotIndex{\month} +\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen} +\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent} +\DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number} +\DoNotIndex{\numberline,\normalcolor} +\DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule} +\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} +\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox} +\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges} +\DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand} +\DoNotIndex{\ProvidesClass} +\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax} +\DoNotIndex{\renewcommand,\RequirePackage,\reset@font} +\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\@Roman,\@roman} +\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength} +\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space} +\DoNotIndex{\string} +\DoNotIndex{\the,\thispagestyle,\triangleright,\ttfamily} +\DoNotIndex{\twocolumn,\typeout} +\DoNotIndex{\undefined,\usecounter} +\DoNotIndex{\vfil,\vfill,\vspace} +\DoNotIndex{\wd,\xdef,\year,\z@} +% More may be set by the source files. + +% Redefine some defaults to handle not only macros and environments +% but also options, Length, Counters, KOMAvars. Also define some new. +\def\macro{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{0}} +\def\environment{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{1}} +\def\option{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{2}} +\def\Length{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{3}} +\def\Counter{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{4}} +\def\KOMAvar{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{5}} +\def\KOMAfont{\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@{6}} +\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist + \edef\saved@macroname{\string#2}% + \ifcase #1 + \edef\saved@indexname{\expandafter\@gobble\string#2}% + \else + \let\saved@indexname\saved@macroname + \fi + \def\makelabel##1{\llap{##1}}% + \if@inlabel + \let\@tempa\@empty \count@\macro@cnt + \loop \ifnum\count@>\z@ + \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne + \repeat + \edef\makelabel##1{\llap{\vtop to\baselineskip + {\@tempa\hbox{##1}\vss}}}% + \advance \macro@cnt \@ne + \else \macro@cnt\@ne \fi + \edef\@tempa{\noexpand\item[% + \ifcase #1 + \noexpand\PrintMacroName + \or + \noexpand\PrintEnvName + \or + \noexpand\PrintOptionName + \or + \noexpand\PrintLengthName + \or + \noexpand\PrintCounterName + \or + \noexpand\PrintKOMAvarName + \or + \noexpand\PrintKOMAfontName + \fi + {\string#2}]}% + \@tempa + \global\advance\c@CodelineNo\@ne + \ifcase #1 + \SpecialMainIndex{#2}\nobreak + \DoNotIndex{#2}% + \or + \SpecialMainEnvIndex{#2}\nobreak + \or + \SpecialMainOptionIndex{#2}\nobreak + \or + \SpecialMainLengthIndex{#2}\nobreak + \DoNotIndex{#2}% + \or + \SpecialMainCounterIndex{#2}\nobreak + \or + \SpecialMainKOMAvarIndex{#2}\nobreak + \or + \SpecialMainKOMAfontIndex{#2}\nobreak + \fi + \global\advance\c@CodelineNo\m@ne + \ignorespaces} +\let\endoption\endmacro +\let\endLength\endmacro +\let\endCounter\endmacro +\let\endKOMAvar\endmacro + +% Some new command +\newcommand*{\File}[1]{\texttt{\mbox{#1}}} +\newcommand*{\Class}{\File} +\newcommand*{\Package}{\File} +\newcommand*{\Macro}{\cs} +\newcommand*{\Option}{\File} + +% The new names we need +\providecommand*{\EnvName}{Umgebung}% This is german +\providecommand*{\EnvsName}{Umgebungen}% This is german +\providecommand*{\OptionName}{Option}% This is german +\providecommand*{\OptionsName}{Optionen}% This is german +\providecommand*{\PrintOptionName}[1]{\strut \MacroFont #1\ } +\providecommand*{\PrintDescribeOption}[1]{\strut \MacroFont #1\ } +\providecommand*{\LengthName}{L\"ange}% This is german +\providecommand*{\LengthsName}{L\"angen}% This is german +\providecommand*{\PrintLengthName}[1]{\strut \MacroFont \string #1\ } +\providecommand*{\PrintDescribeLength}[1]{\strut \MacroFont \string #1\ } +\providecommand*{\CounterName}{Z\"ahler}% This is german +\providecommand*{\CountersName}{Z\"ahler}% This is german +\providecommand*{\PrintCounterName}[1]{\strut \MacroFont #1\ } +\providecommand*{\PrintDescribeCounter}[1]{\strut \MacroFont #1\ } +\providecommand*{\KOMAvarName}{Variable}% This is german +\providecommand*{\KOMAvarsName}{Variablen}% This is german +\providecommand*{\PrintKOMAvarName}[1]{\strut \MacroFont #1\ } +\providecommand*{\PrintDescribeKOMAvar}[1]{\strut \MacroFont #1\ } +\providecommand*{\KOMAfontName}{Element mit Schrift}% This is german +\providecommand*{\KOMAfontsName}{Elemente mit Schrift}% This is german +\providecommand*{\PrintKOMAfontName}[1]{\strut \MacroFont #1\ } +\providecommand*{\PrintDescribeKOMAfont}[1]{\strut \MacroFont #1\ } + +% Defining new main index commands +\newcommand*{\SpecialMainIndex@Type}[3]{% + \@bsphack\special@index{% + #1\actualchar + {\string\ttfamily\space#1} + (\string #2)% + \encapchar main}% + \special@index{% + #3:\levelchar{% + \string\ttfamily\space#1}\encapchar + main}\@esphack} +\renewcommand*{\SpecialMainEnvIndex}[1]{% + \SpecialMainIndex@Type{#1}{\EnvName}{\EnvsName}} +\newcommand*{\SpecialMainOptionIndex}[1]{% + \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}} +\newcommand*{\SpecialMainLengthIndex}[1]{% + \@bsphack\SpecialIndex@{#1}{(\string\LengthName )\encapchar main}% + \@esphack} +\newcommand*{\SpecialMainCounterIndex}[1]{% + \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}} +\newcommand*{\SpecialMainKOMAvarIndex}[1]{% + \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}} +\newcommand*{\SpecialMainKOMAfontIndex}[1]{% + \SpecialMainIndex@Type{#1}{\KOMAfontName}{\KOMAfontsName}} + +% Defining new usage index commands +\newcommand*{\SpecialIndex@Type}[3]{% + \@bsphack + \index{#1\actualchar{\protect\ttfamily#1} + (#2)\encapchar usage}% + \index{#3:\levelchar{\protect\ttfamily#1}\encapchar + usage}\@esphack} +\renewcommand{\SpecialEnvIndex}[1]{% + \SpecialIndex@Type{#1}{\EnvName}{\EnvsName}} +\newcommand*{\SpecialOptionIndex}[1]{% + \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}} +\newcommand*{\SpecialLengthIndex}[1]{\@bsphack% + {\let\special@index\index + \SpecialIndex@{#1}{(\string\LengthName )\encapchar usage}}% + \@esphack} +\newcommand*{\SpecialCounterIndex}[1]{% + \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}} +\newcommand*{\SpecialKOMAvarIndex}[1]{% + \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}} + +% Define new describe commands +\newcommand*{\newDescribe}[1]{% + \expandafter\newcommand\expandafter*\csname Describe#1\endcsname{% + \leavevmode\@bsphack\begingroup\MakePrivateLetters + \csname Describe@#1\endcsname}% + \expandafter\newcommand\expandafter*\csname Describe@#1\endcsname[1]{% + \endgroup + \marginpar{\raggedleft\csname PrintDescribe#1\endcsname{##1}}% + \csname Special#1Index\endcsname{##1}\@esphack\ignorespaces}% +} +\newDescribe{Option} + +% We use left margin very much, so shift everything to the right +\if@twoside +\else +\addtolength{\oddsidemargin}{1in} +\setlength{\oddsidemargin}{1.5\oddsidemargin} +\addtolength{\oddsidemargin}{-1in} +\fi + +% We need some logos: +\providecommand*{\eTeX}{$\m@th\varepsilon$-\TeX} + +% Terms for other languages: +\AtBeginDocument{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname addto\endcsname\relax + \ClassWarning{scrdoc}{Package babel not loaded}% + \else + \addto\captionsenglish{% + \def\partname{File}% + }% + \addto\captionsngerman{% + \def\partname{Datei}% + }% + \ClassInfo{scrdoc}{Select language \languagename}% + \expandafter\selectlanguage\expandafter{\languagename}% + \fi +} + +\endinput +% end of ``scrdoc.cls'' diff --git a/texmf/tex/latex/koma-script/scrextend.sty b/texmf/tex/latex/koma-script/scrextend.sty new file mode 100644 index 000000000..d515c1e26 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrextend.sty @@ -0,0 +1,1754 @@ +%% +%% This is file `scrextend.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrextend.dtx (with options: `package,extend,preidentify') +%% scrkernel-version.dtx (with options: `package,extend') +%% scrextend.dtx (with options: `package,extend,identify,prepare') +%% scrkernel-basics.dtx (with options: `package,load') +%% scrkernel-sections.dtx (with options: `package,extend,prepare') +%% scrkernel-compatibility.dtx (with options: `package,extend,init') +%% scrextend.dtx (with options: `package,extend,option') +%% scrkernel-compatibility.dtx (with options: `package,extend,option') +%% scrkernel-miscellaneous.dtx (with options: `package,extend,option') +%% scrkernel-fonts.dtx (with options: `package,extend,option') +%% scrkernel-title.dtx (with options: `package,extend,option') +%% scrkernel-sections.dtx (with options: `package,extend,option') +%% scrkernel-pagestyles.dtx (with options: `package,extend,option') +%% scrkernel-floats.dtx (with options: `package,extend,option') +%% scrkernel-footnotes.dtx (with options: `package,extend,option') +%% scrkernel-listsandtabulars.dtx (with options: `package,extend,option') +%% scrkernel-sections.dtx (with options: `package,extend,execoption') +%% scrkernel-miscellaneous.dtx (with options: `package,extend,execoption') +%% scrkernel-compatibility.dtx (with options: `package,extend,body') +%% scrkernel-fonts.dtx (with options: `package,extend,body') +%% scrkernel-title.dtx (with options: `package,extend,body') +%% scrkernel-sections.dtx (with options: `package,extend,body') +%% scrkernel-miscellaneous.dtx (with options: `package,extend,body') +%% scrkernel-pagestyles.dtx (with options: `package,extend,body') +%% scrkernel-floats.dtx (with options: `package,extend,body') +%% scrkernel-footnotes.dtx (with options: `package,extend,body') +%% scrkernel-listsandtabulars.dtx (with options: `package,extend,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrextend.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: preidentify) +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname KOMAClassName\endcsname\relax\else + \PackageWarningNoLine{scrextend}{% + This package was made to extend other classes but\MessageBreak + KOMA-Script classes by some features of the\MessageBreak + KOMA-Script classes.\MessageBreak + It should never be used with a KOMA-Script class.\MessageBreak + Loading of the package will be aborted% + }% + \expandafter\endinput +\fi +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrextend.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +\ProvidesPackage{scrextend}[% + 2022/07/04 v3.37 KOMA-Script + package (extend other classes with features of KOMA-Script classes)% +] +\newcommand*{\scr@ext@activate}[1]{% + \scr@ifundefinedorrelax{scr@ext@activate@#1}{% + \@namedef{scr@ext@immediate@#1}{% + \expandafter\let\csname scr@ext@immediate@#1\endcsname\relax + \csname scr@ext@activate@#1\endcsname + }% + }{% + \csname scr@ext@activate@#1\endcsname + \expandafter\let\csname scr@ext@activate@#1\endcsname\relax + }% +} +\newcommand*{\scr@ext@activateable}[1]{% + \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname +} +\newcommand*{\scr@ext@addto@activateable}[1]{% + \scr@ifundefinedorrelax{scr@ext@activate@#1}{% + \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname + }{% + \expandafter\g@addto@macro\csname scr@ext@activate@#1\endcsname + }% +} +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries} +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\providecommand* + {\scr@compatibility}{\scr@v@last} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrextend.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{extendedfeature}{% + \scr@ext@activate{#1}% + \AtEndOfPackage{% + \scr@ifundefinedorrelax{scr@ext@immediate@#1}{}{% + \PackageWarningNoLine{unkown extended feature `#1'\MessageBreak + You have used option `extendedfeature' to\MessageBreak + activate an extended feature `#1',\MessageBreak + but there is no such extended feature.\MessageBreak + See the KOMA-Script manual for more\MessageBreak + information about known activatable\MessageBreak + extended features% + }% + }% + }% + \FamilyKeyStateProcessed + \KOMA@kav@xadd{.scrextend.sty}{extendedfeature}{#1}% +} +\AtEndOfPackage{% + \KOMA@key{extendedfeature}{% + \def\FamilyKeyState{Option `extendedfeature' too late}% + }% +} +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \PackageWarningNoLine{% + scrextend% + }{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + scrextend.\scr@pkgextension + }{version}{first}% + }{% + \PackageInfoNoLine{% + scrextend% + }{% + Switching compatibility level to `#1'% + }% + \edef\scr@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrextend.\scr@pkgextension + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \PackageWarningNoLine{% + scrextend% + }{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\AtEndOfPackage{% + \KOMA@key{version}[]{% + \PackageError{% + scrextend% + }{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + package.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@v@is@lt}[1]{% + \scr@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@gt}[1]{% + \scr@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@le}[1]{% + \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@ge}[1]{% + \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{draft}{% + \ifdim\overfullrule>\z@ true\else false\fi +} +\KOMA@DeclareStandardOption +[scrextend] +{final}{draft=false} +\KOMA@key{overfullrule}[true]{% + \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{overfullrule}{% + \ifdim\overfullrule>\z@ true\else false\fi +} +\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles} +\newcommand*{\@gr@gsffamily}{% + \if@egregdoesnotlikesansseriftitles\else\sffamily\fi +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\providecommand*{\@fontsizefilebase}{scrsize} +\KOMA@key{fontsize}{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\PackageInfo{scrextend}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \noexpand\PackageInfo{scrextend}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \scr@ifundefinedorrelax{changefontsizes}{% + \expandafter\AtEndOfPackage\expandafter{\@tempa}% + }{% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrextend.\scr@pkgextension + }{fontsize}{#1}% +} +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\scr@ext@activateable{title}{% + \scr@ifundefinedorrelax{if@titlepage}{% + \expandafter\newif\csname if@titlepage\endcsname + \@titlepagefalse + }{}% + \scr@ifundefinedorrelax{if@titlepageiscoverpage}{% + \expandafter\newif\csname if@titlepageiscoverpage\endcsname + \@titlepageiscoverpagefalse + }{}% +\KOMA@key{titlepage}[true]{% + \Ifstr{##1}{firstiscover}{% + \@titlepagetrue + \@titlepageiscoverpagetrue + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + scrextend.\scr@pkgextension + }{titlepage}{firstiscover}% + }{% + \def\FamilyElseValue{, `firstiscover'}% + \KOMA@set@ifkey{titlepage}{@titlepage}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@remove{.% + scrextend.\scr@pkgextension + }{titlepage}{firstiscover}% + \KOMA@kav@replacebool{.% + scrextend.\scr@pkgextension + }{titlepage}{@titlepage}% + \@titlepageiscoverpagefalse + \fi + }% +} +\KOMA@kav@xadd{.% + scrextend.\scr@pkgextension +}{titlepage}{\if@titlepage true\else false\fi} + \def\scr@ext@immediate@title{% + \scr@ext@activate{title}% + \let\scr@ext@immediate@title\relax + }% +} +\KOMA@DeclareStandardOption% + [scrextend]% + {notitlepage}{titlepage=false} +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{cleardoublepage}{% + \begingroup + \def\@tempc{% + \endgroup + \KOMA@unknown@keyval{cleardoublepage}{#1}{% + 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% + }% + \Ifstr{#1}{current}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublestandardpage}% + \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% + \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + scrextend.\scr@pkgextension + }{cleardoublepage}{current}% + }% + }{% + \Ifnotundefined{ps@#1}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrextend.\scr@pkgextension + }{cleardoublepage}{#1}% + }% + }{% + }% + }% + \@tempc +} +\newcommand*{\cleardoubleoddstandardpage}{} +\let\cleardoubleoddstandardpage=\cleardoublepage +\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleoddstandardpage}} +\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} +\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} +\newcommand*{\cleardoubleevenstandardpage}{% + \clearpage + \if@twoside\ifodd\c@page + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi + \fi\fi +} +\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleevenstandardpage}} +\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} +\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} +\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} +\renewcommand*{\cleardoublepage}{% + \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax + \cleardoubleemptypage + \else + \cleardoublestandardpage + \fi +} +\KOMA@kav@add{.% + scrextend.\scr@pkgextension +}{cleardoublepage}{% + \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi +} +\AtEndOfPackage{% + \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% + {% + scrextend.\scr@pkgextension + }{cleardoublepage}% + \KOMA@kav@removekey{.% + scrextend.\scr@pkgextension + }{cleardoublepage}% + \KOMA@kav@xadd{.% + scrextend.\scr@pkgextension + }{cleardoublepage}{\@tempa}% +} +\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} +\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} +\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoublestandardpage}} +\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} +\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{footnotes}{% + \ifx\@footnotemark\scr@saved@footnotemark + \else + \ifx\@footnotemark\scr@footnotemark + \else + \PackageWarning{scrextend}{% + Change of `\string\@footnotemark' detected!\MessageBreak + Use of `footnotes=#1' may break\MessageBreak + another package!\MessageBreak + Maybe you should remove the usage of\MessageBreak + option `footnotes=#1'}% + \fi + \fi + \Ifstr{#1}{multiple}{% + \let\@footnotemark\scr@footnotemark + \def\FN@mf@prepare{\scr@mf@prepare}% + \def\scr@footmisc@options{multiple}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + scrextend.\scr@pkgextension + }{footnotes}{multiple}% + }{% + \Ifstr{#1}{nomultiple}{% + \let\@footnotemark\scr@saved@footnotemark + \let\FN@mf@prepare\relax + \let\scr@footmisc@options\@empty + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + scrextend.\scr@pkgextension + }{footnotes}{nomultiple}% + }{% + \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% + }% + }% +} +\AtBeginDocument{% + \ifx\@footnotemark\scr@saved@footnotemark + \KOMA@kav@removekey{.% + scrextend.\scr@pkgextension + }{footnotes}% + \KOMA@kav@add{.% + scrextend.\scr@pkgextension + }{footnotes}{nomultiple}% + \else\ifx\@footnotemark\scr@footnotemark + \KOMA@kav@removekey{.% + scrextend.\scr@pkgextension + }{footnotes}% + \KOMA@kav@add{.% + scrextend.\scr@pkgextension + }{footnotes}{multiple}% + \fi\fi +} +\newcommand*{\scr@footmisc@options}{} +\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} +\newcommand*{\scr@saved@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark +\expandafter{\scr@saved@footnotemark} +\newcommand*{\scr@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi + \@makefnmark + \csname FN@mf@prepare\endcsname + \ifhmode\spacefactor\@x@sf\fi + \relax} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +\AtBeginDocument{% + \begingroup + \def\reserved@a#1/#2/#3 #4\@nil{\@tempcnta=#1\relax\@tempcntb=#2\relax}% + \expandafter\reserved@a\KOMAScriptVersion\@nil + \edef\reserved@a{\the\numexpr\@tempcnta+2\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{% + \PackageWarningNoLine{scrextend}{% + Your are using a KOMA-Script version, that has not\MessageBreak + been tested with your more than one year newer\MessageBreak + LaTeX release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + this could result in a lot of issues.\MessageBreak + Please have a look at\MessageBreak + and if this\MessageBreak + shows a newer KOMA-Script version than\MessageBreak + `\KOMAScriptVersion', we suggest to do\MessageBreak + an update of KOMA-Script or maybe even the whole\MessageBreak + TeX distribution% + }% + }{% + \edef\reserved@a{\the\numexpr\@tempcnta-4\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{}{% + \PackageWarningNoLine{scrextend}{% + You are using a KOMA-Script version, that has not been\MessageBreak + tested with your more than four years older LaTeX\MessageBreak + release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + KOMA-Script releases cannot be tested with all past\MessageBreak + LaTeX releases.\MessageBreak + \ifnum\scr@compatibility<\scr@v@last + So even if you are using option `version' implicitly\MessageBreak + or explicitly, this + \else + So this + \fi + could result in a lot of issues.\MessageBreak + We recommend, to update the whole TeX distribution.\MessageBreak + If this could not be done, we suggest to use at\MessageBreak + least an older KOMA-Script release, e.g., from\MessageBreak + % + }% + }% + }% + \endgroup +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% + scrextend.\scr@pkgextension + }{fontsize}% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\footnotesep}{.7\@tempdimc}% + \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus + .6\@tempdimc}% + \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{0\p@ \@plus 1fil}% + \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{0\p@ \@plus 1fil}% + \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@dblfpbot}{\@fptop}% + \fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% + \PackageWarning{scrextend}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\scr@ext@addto@activateable{title}{% +\newcommand*{\@extratitle}{}% +\newcommand{\extratitle}[1]{\gdef\@extratitle{% + ##1% +}}% +\newcommand*{\@frontispiece}{}% +\newcommand{\frontispiece}[1]{\gdef\@frontispiece{% + ##1% +}}% +\newcommand*{\@titlehead}{}% +\newcommand{\titlehead}[1]{\gdef\@titlehead{% + ##1% +}}% +\newcommand*{\@subject}{}% +\newcommand*{\subject}[1]{\gdef\@subject{% + ##1% +}}% +\newcommand*{\subtitle}[1]{\gdef\@subtitle{% + ##1% +}}% +\newcommand*{\@subtitle}{}% +\newcommand*{\@publishers}{}% +\newcommand{\publishers}[1]{\gdef\@publishers{% + ##1% +}}% +\newcommand*{\@uppertitleback}{}% +\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{% + ##1% +}}% +\newcommand*{\@lowertitleback}{}% +\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{% + ##1% +}}% +\newcommand*{\@dedication}{}% +\newcommand{\dedication}[1]{\gdef\@dedication{% + ##1% +}}% +\newcommand*{\next@tpage}{% + \@thanks\global\let\@thanks\@empty + \clearpage + \csname titlepage@restore\endcsname + \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil + \thispagestyle{empty}% + \let\footnote\thanks + \setcounter{footnote}{0}% +} +\newcommand*{\next@tdpage}{% + \next@tpage\if@twoside \ifodd\value{page}\else\null\next@tpage\fi\fi +} +\let\maketitle\relax\let\@maketitle\relax +\newcommand*\maketitle[1][1]{% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular}% + \hskip 1em \@plus.17fil% + \begin{tabular}[t]{c}% + }% + \fi + \if@titlepage + \begin{titlepage} + \setcounter{page}{% + ##1% + }% + \if@titlepageiscoverpage + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty + \else + \if@twoside\mbox{}\next@tpage\fi + \noindent\@frontispiece\next@tdpage + \fi + \else + \noindent\@extratitle + \ifx\@frontispiece\@empty + \else + \next@tpage + \noindent\@frontispiece + \fi + \next@tdpage + \fi + \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth}% + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null\vfill + \begin{center} + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject\par}}% + \vskip 3em + \fi + {\usekomafont{title}{\huge \@title\par}}% + \vskip 1em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + \vskip 2em + {% + \usekomafont{author}{% + \lineskip 0.75em + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1.5em + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus3fill + {\usekomafont{publishers}{\@publishers \par}}% + \vskip 3em + \end{center}\par + \@thanks\global\let\@thanks\@empty + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\global\let\@thanks\@empty + \fi + \else + \ifx\@uppertitleback\@empty\else + \PackageWarning{scrextend}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \PackageWarning{scrextend}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\global\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \else + \par + \@tempcnta=% + ##1% + \relax\ifnum\@tempcnta=1\else + \PackageWarning{scrextend}{% + Optional argument of \string\maketitle\space ignored\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@uppertitleback\@empty\else + \PackageWarning{scrextend}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \PackageWarning{scrextend}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \begingroup + \let\titlepage@restore\relax + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \next@tdpage + \if@twocolumn + \ifnum \col@number=\@ne + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \twocolumn[\@makeextratitle]% + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \twocolumn[\@makefrontispiece]% + \next@tdpage + \fi + \twocolumn[\@maketitle]% + \fi + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \fi + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \@thanks\global\let\@thanks\@empty + \endgroup + \fi + \setcounter{footnote}{0}% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \fi + \global\let\and\relax +}% +\newcommand*{\@makeextratitle}{% + \ifx\@extratitle\@empty \else + \noindent\@extratitle\par + \fi +} +\newcommand*{\@makefrontispiece}{% + \ifx\@frontispiece\@empty \else + \noindent\@frontispiece\par + \fi +} +\newcommand*{\@maketitle}{% + \global\@topnum=\z@ + \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth} + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null + \vskip 2em% + \begin{center}% + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject \par}}% + \vskip 1.5em + \fi + {\usekomafont{title}{\huge \@title \par}}% + \vskip .5em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% + \vskip 1em + {% + \usekomafont{author}{% + \lineskip .5em% + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1em% + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus 1em + {\usekomafont{publishers}{\@publishers \par}}% + \ifx\@dedication\@empty \else + \vskip 2em + {\usekomafont{dedication}{\@dedication \par}}% + \fi + \end{center}% + \par + \vskip 2em +}% +\newcommand*{\coverpagetopmargin}{% + \dimexpr \topmargin+1in\relax +} +\newcommand*{\coverpagebottommargin}{% + 2\dimexpr\coverpagetopmargin\relax +} +\newcommand*{\coverpageleftmargin}{% + \dimexpr \evensidemargin+1in\relax +} +\newcommand*{\coverpagerightmargin}{\coverpageleftmargin} +\scr@ifundefinedorrelax{titlepage}{% +\newenvironment{titlepage}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0}% + \fi +}{% + \if@restonecol\twocolumn \else \newpage \fi +}% +}{}% +}\csname scr@ext@immediate@title\endcsname +\newkomafont{subtitle}{\usekomafont{title}\large}% +\newkomafont{titlehead}{}% +\newkomafont{author}{\Large} +\newkomafont{date}{\Large} +\newkomafont{publishers}{\Large} +\newkomafont{dedication}{\Large} +\newcommand*\titlefont{\sectfont}% +\newcommand*{\scr@fnt@title}{\titlefont}% +\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}% +\newcommand*{\scr@fnt@subject}{\subject@font}% +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\scr@ifundefinedorrelax{if@restonecol}{% + \expandafter\newif\csname if@restonecol\endcsname + \@restonecolfalse +}{} +\newcommand{\dictum}[2][]{\par% + \begingroup + \raggeddictum\parbox{\dictumwidth}{% + {\@dictumfont{\raggeddictumtext #2\strut\par}% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + {\raggeddictumtext\dictumrule}% + \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}% + \strut\par% + \fi% + }% + }\par% + \endgroup +} +\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}% +\newcommand*{\dictumwidth}{.3333\textwidth} +\newcommand*{\raggeddictum}{\raggedleft} +\newcommand*{\dictumauthorformat}[1]{(#1)} +\newcommand*{\raggeddictumtext}{\raggedright} +\newcommand*{\raggeddictumauthor}{\raggedleft} +\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small} +\newkomafont{dictumauthor}{\itshape} +\aliaskomafont{dictumtext}{dictum} +\newcommand*{\new@tpo@label}{\@newl@bel{tpo}} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\new@tpo@label[2]{}% + }% + \fi +} +\newcommand*{\scr@tpo}{0} +\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{% + \@bsphack + \begingroup + \@tempcnta=\scr@tpo + \advance\@tempcnta by\@ne + \xdef\scr@tpo{\the\@tempcnta}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax + \protect\G@refundefinedtrue + \PackageWarning{scrextend}{% + odd/even page label number \scr@tpo\space undefined}% + \edef\@tempa{\the\value{page}}% + \else + \edef\@tempa{\csname tpo@\scr@tpo\endcsname}% + \fi + \ifodd\number\@tempa + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup + \edef\is@thispageodd@setlabel{% + \if@filesw + \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{% + \noexpand\string + \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}% + \fi + \noexpand\def\noexpand\is@thispageodd@setlabel + {\unexpanded\expandafter{\is@thispageodd@setlabel}}% + }% + #1% + \@esphack +} +\newcommand*{\is@thispageodd@setlabel}{} +\newif\ifthispagewasodd +\providecommand*{\ifthispageodd}{% + \PackageWarning{scrextend}{% + Usage of deprecated command + `\string\ifthispageodd'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'% + }% + \Ifthispageodd +} +\newcommand{\Ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand\marginline[1]{% + \marginpar[\raggedleft{#1}]{\raggedright #1}% +} +\scr@ifundefinedorrelax{textsubscript}{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% +}{% + \scr@ifundefinedorrelax{textsubscript }{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% + }{}% +} +\providecommand*{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% +} +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand\deffootnote[4][]{% + \expandafter\ifnum\scr@v@is@ge{3.22}\relax + \long\def\@makefntext##1{% + \ExecuteDoHook{footnote/text/begin}% + \raggedfootnote + \leftskip #2 + \l@addto@macro\@trivlist{% + \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi + }% + \parindent #3\noindent + \IfArgIsEmpty{#1}{}{% + \hskip \dimexpr #1-#2\relax + }% + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + \ExecuteDoHook{footnote/text/end}% + }% + \else + \PackageInfo{scrextend}{% + Using old \string\@makefntext\space due to compatibility + level\MessageBreak + less than 3.22}% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2}% + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1}% + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2}% + \parshape \tw@ #1 \@tempdima #2 \@tempdimb + }% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + }% + \fi + \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% +} +\newcommand*{\raggedfootnote}{} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\aliaskomafont{footnotenumber}{footnotelabel} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\aliaskomafont{footnotetext}{footnote} +\newcommand*\deffootnotemark[1]{% + \def\@makefnmark{\hbox{\ftntm@font{#1}}}% +} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\aliaskomafont{footnoteref}{footnotereference} +\aliaskomafont{footnotemark}{footnotereference} +\providecommand*{\FN@mf@check}{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern\multiplefootnoteseparator + \spacefactor\@x@sf\relax + \fi +} +\newcommand*{\scr@mf@prepare}{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax +} +\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{} +\newcommand{\scr@saved@footnotetext}{} +\let\scr@saved@footnotetext\@footnotetext +\renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname +} +\BeforePackage{footmisc}{% + \ifx\@footnotemark\scr@footnotemark + \let\@footnotemark\scr@saved@footnotemark + \fi + \let\@footnotetext\scr@saved@footnotetext +} +\BeforePackage{setspace}{% + \let\@footnotetext\scr@saved@footnotetext +} +\AfterPackage{setspace}{% + \let\scr@saved@footnotetext\@footnotetext + \renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname + }% +} +\newcommand*{\multiplefootnoteseparator}{% + \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup +} +\providecommand*{\multfootsep}{,} +\providecommand*{\multiplefootnotemarker}{3sp} +\providecommand*{\thefootnotemark}{\@thefnmark} +\def\reserved@a{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} +\ifx\reserved@a\@makefnmark +\deffootnotemark{\textsuperscript{\thefootnotemark}} +\else + \IfFileExists{etoolbox.\@pkgextension}{% + \PackageInfo{scrextend}{% + unexpected definition of `\string\@makefnmark'.\MessageBreak + Trying to patch it% + }% + \RequirePackage{etoolbox}% + \patchcmd{\@makefnmark}{\@thefnmark}{\thefootnotemark}{% + \PackageInfo{scrextend}{patch seems to be successfull}% + }{% + \PackageWarning{scrextend}{% + patching `\string\@makefnmark' failed.\MessageBreak + Using hard coded redefinition% + }% + \deffootnotemark{\textsuperscript{\thefootnotemark}}% + }% + }{% + \PackageWarning{scrextend}{% + unexpected definition of `\string\@makefnmark'.\MessageBreak + Using hard coded redefintion% + }% + \deffootnotemark{\textsuperscript{\thefootnotemark}}% + }% +\fi +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newenvironment{labeling}[2][]{% + \def\sc@septext{#1}% + \list{}{\settowidth{\labelwidth}{{% + \usekomafont{labelinglabel}{#2% + \usekomafont{labelingseparator}{\sc@septext}}% + }}% + \leftmargin\labelwidth \advance\leftmargin by \labelsep + \let\makelabel\labelinglabel + }% +}{% + \endlist +} +\newcommand\labelinglabel[1]{% + \usekomafont{labelinglabel}{#1\hfil + \usekomafont{labelingseparator}{\sc@septext}}% +} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin +}{% + \advance\@listdepth\@ne + \endlist +} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi + \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi + \@addmargin +}{% + \if@twoside + \unskip\nobreak\Ifthispageodd{}{}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else + \PackageWarning{scrextend}{% + page break inside `addmargin*' environment.\MessageBreak + A `addmargin*' environment starting on page + \scr@addmargin@startpage\MessageBreak + ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak + This will result in potential wrong margins on\MessageBreak + every other page.\MessageBreak + So maybe you should change the `addmargin*'\MessageBreak + environment, that ends% + }% + \fi + \fi + \advance\@listdepth\@ne + \endlist +} +\newcommand*{\@addmargin}[2][\@tempa]{% + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\@tempskipa}{\topsep}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\@tempskipb}{\partopsep}% + \setlength{\partopsep}{\z@}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@}% + \advance\@listdepth\m@ne + }% + \expandafter\ifnum\scr@v@is@ge{3.22}% + \setlength{\topsep}{\@tempskipa}% + \setlength{\partopsep}{\@tempskipb}% + \fi + \item\is@thispageodd@setlabel\nobreak\ignorespaces +} +\newkomafont{labelinglabel}{} +\newkomafont{labelingseparator}{} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrextend.sty'. diff --git a/texmf/tex/latex/koma-script/scrfontsizes.sty b/texmf/tex/latex/koma-script/scrfontsizes.sty new file mode 100644 index 000000000..f5eb56d2e --- /dev/null +++ b/texmf/tex/latex/koma-script/scrfontsizes.sty @@ -0,0 +1,373 @@ +%% +%% This is file `scrfontsizes.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package') +%% scrkernel-fonts.dtx (with options: `package,generator,identify') +%% scrkernel-fonts.dtx (with options: `package,generator,option') +%% scrkernel-fonts.dtx (with options: `package,generator,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: identify) +\ProvidesPackage{scrfontsizes}[% + 2022/07/04 v3.37 KOMA-Script + package (font size file generator)] +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\ProcessOptions\relax +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@ifundefined{changefontsizes}{\RequirePackage{scrextend}}{} +\newcommand*{\generatefontfile}[1]{% + \Ifstr{#1}{scrsize}{% + \ClassError{\KOMAClassName}{% + Font file name `scrsize' not allowed% + }{% + Font files with name `scrsize.clo' are reserved for + KOMA-Script.\MessageBreak + You should use another prefix and rename \string\@fontsizefilebase\space + either before\MessageBreak + loading a KOMA-Script class using one of \string\documentclass, + \string\LoadClass,\MessageBreak + or \string\LoadClassWithOptions\space or before loading package + `scrextend' using another\MessageBreak + class.}% + \@@@generatefontfile + }{% + \kernel@ifnextchar [{\@generatefontfile{#1}}{\@@generatefontfile{#1}}% + }% +} +\newcommand*{\@generatefontfile}{} +\def\@generatefontfile#1[#2]#3{% + \begingroup + \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}% + {\setparsizes{0pt}{0pt}{0pt}}% + \changefontsizes[{#2}]{#3}% + \generate@fontfile{#1}{#3}% + \endgroup +} +\newcommand\@@generatefontfile[2]{% + \begingroup + \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}% + {\setparsizes{0pt}{0pt}{0pt}}% + \changefontsizes{#2}% + \generate@fontfile{#1}{#2}% + \endgroup +} +\newcommand*{\@@@generatefontfile}[2][]{} +\newcommand*{\@fontfile}{} +\let\@fontfile\@mainaux +\newcommand*{\generate@fontfile}[2]{% + \def\@ind{\space\space}% + \immediate\openout\@fontfile #1#2.clo + \immediate\write\@fontfile{\@percentchar^^J% + \@percentchar\space This is file `#1#2.clo', generated with^^J% + \@percentchar\space scrfontsizes + \csname ver@scrfontsizes.\scr@pkgextension\endcsname,^^J% + \@percentchar\space Copyright (c) Markus Kohm.^^J% + \@percentchar^^J% + \string\ProvidesFile{#1#2.clo}[% + \the\year/\ifnum\month<10 0\fi\the\month/\ifnum\day<10 0\fi\the\day% + \space generated font size class option (#2)]}% + \immediate\write\@fontfile{% + \string\def\string\normalsize{\@percentchar^^J% + \@ind\string\@setfontsize\string\normalsize{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\let\string\@listi\string\@listI^^J% + }\@percentchar% + }% + \begingroup\small\@listi + \immediate\write\@fontfile{% + \string\def\string\small{\@percentchar^^J% + \@ind\string\@setfontsize\string\small{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\def\string\@listi{\@percentchar^^J% + \@ind\@ind\string\leftmargin\string\leftmargini^^J% + \@ind\@ind\string\topsep \the\topsep^^J% + \@ind\@ind\string\parsep \the\parsep^^J% + \@ind\@ind\string\itemsep \string\parsep^^J% + \@ind}\@percentchar^^J% + }\@percentchar% + }% + \endgroup + \begingroup\footnotesize\@listi + \immediate\write\@fontfile{% + \string\def\string\footnotesize{\@percentchar^^J% + \@ind\string\@setfontsize\string\footnotesize{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\def\string\@listi{\@percentchar^^J% + \@ind\@ind\string\leftmargin\string\leftmargini^^J% + \@ind\@ind\string\topsep \the\topsep^^J% + \@ind\@ind\string\parsep \the\parsep^^J% + \@ind\@ind\string\itemsep \string\parsep^^J% + \@ind}\@percentchar^^J% + }\@percentchar% + }% + \endgroup + \begingroup\scriptsize + \immediate\write\@fontfile{% + \string\def\string\scriptsize{% + \string\@setfontsize\string\scriptsize{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\tiny + \immediate\write\@fontfile{% + \string\def\string\tiny{% + \string\@setfontsize\string\tiny{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\large + \immediate\write\@fontfile{% + \string\def\string\large{% + \string\@setfontsize\string\large{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\Large + \immediate\write\@fontfile{% + \string\def\string\Large{% + \string\@setfontsize\string\Large{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\LARGE + \immediate\write\@fontfile{% + \string\def\string\LARGE{% + \string\@setfontsize\string\LARGE{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\huge + \immediate\write\@fontfile{% + \string\def\string\huge{% + \string\@setfontsize\string\huge{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\Huge + \immediate\write\@fontfile{% + \string\def\string\Huge{% + \string\@setfontsize\string\Huge{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \immediate\write\@fontfile{\string\normalsize}% + \immediate\write\@fontfile{% + \string\setlength{\string\footnotesep}{\the\footnotesep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\skip\string\footins}{\the\skip\footins}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\floatsep}{\the\floatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\textfloatsep}{\the\textfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\intextsep}{\the\intextsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\dblfloatsep}{\the\dblfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\dbltextfloatsep}{\the\dbltextfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fptop}{\the\@fptop}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fpsep}{\the\@fpsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fpbot}{\the\@fpbot}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfptop}{\the\@dblfptop}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfpsep}{\the\@dblfpsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfpbot}{\the\@dblfpbot}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\partopsep}{\the\partopsep}\@percentchar + }% + \begingroup + \@listi + \immediate\write\@fontfile{% + \string\def\string\@listi{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmargini^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\itemsep \string\parsep^^J% + }\@percentchar + }% + \endgroup + \immediate\write\@fontfile{% + \string\let\string\@listI\string\@listi + }% + \begingroup + \@listii + \immediate\write\@fontfile{% + \string\def\string\@listii{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginii^^J% + \@ind\string\labelwidth\string\leftmarginii^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\itemsep \string\parsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listiii + \immediate\write\@fontfile{% + \string\def\string\@listiii{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginiii^^J% + \@ind\string\labelwidth\string\leftmarginiii^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\partopsep \the\partopsep^^J% + \@ind\string\itemsep \string\topsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listiv + \immediate\write\@fontfile{% + \string\def\string\@listiv{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginiv^^J% + \@ind\string\labelwidth\string\leftmarginiv^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listv + \immediate\write\@fontfile{% + \string\def\string\@listv{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginv^^J% + \@ind\string\labelwidth\string\leftmarginv^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listvi + \immediate\write\@fontfile{% + \string\def\string\@listvi{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginvi^^J% + \@ind\string\labelwidth\string\leftmarginvi^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \immediate\write\@fontfile{% + \string\@ifundefined{@list@extra}{}{\@percentchar^^J% + \string\expandafter\string\ifnum\string\scr@v@is@ge{3.17}% + \string\par@updaterelative\string\fi^^J% + \@ind\string\l@addto@macro{\string\@listi}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\let\string\@listI=\string\@listi^^J% + \@ind\string\l@addto@macro{\string\@listii}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\l@addto@macro{\string\@listiii}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\l@addto@macro{\string\footnotesize}{\string\protect + \string\add@extra@listi{ftns}}\@percentchar^^J% + \@ind\string\l@addto@macro{\string\small}{\string\protect + \string\add@extra@listi{sml}}\@percentchar^^J% + }\@percentchar^^J% + \string\@listi^^J% + \string\endinput^^J% + \@percentchar^^J% + \@percentchar\space End of file `#1#2.clo'. + } + \immediate\closeout\@fontfile +} +\@onlypreamble\generatefontfile +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrfontsizes.sty'. diff --git a/texmf/tex/latex/koma-script/scrhack.sty b/texmf/tex/latex/koma-script/scrhack.sty new file mode 100644 index 000000000..51aefbcd8 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrhack.sty @@ -0,0 +1,218 @@ +%% +%% This is file `scrhack.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,scrhack') +%% scrhack.dtx (with options: `package,identify') +%% scrkernel-basics.dtx (with options: `load') +%% scrhack.dtx (with options: `package,option') +%% scrhack.dtx (with options: `package,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% using: package,identify +\ProvidesPackage{scrhack}[% + 2022/07/04 v3.37 KOMA-Script + package (hacking other packages)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% using: package,option +\KOMA@ifkey{hyperref}{@scrhack@hyperref}% +\KOMAExecuteOptions{hyperref=true}% +\KOMA@ifkey{floatrow}{@scrhack@floatrow} +\KOMAExecuteOptions{floatrow=true} +\KOMA@ifkey{float}{@scrhack@float}% +\KOMAExecuteOptions{float=true}% +\KOMA@ifkey{listings}{@scrhack@listings} +\KOMAExecuteOptions{listings=true} +\RequirePackage{xpatch}% +\KOMA@ifkey{nomencl}{@scrhack@nomencl} +\KOMAExecuteOptions{nomencl=true} +\KOMA@ifkey{setspace}{@scrhack@setspace} +\KOMAExecuteOptions{setspace=true} +\RequirePackage{xpatch}% +\KOMA@ifkey{lscape}{@scrhack@lscape}% +\KOMAExecuteOptions{lscape=true}% +\KOMA@ifkey{standardsections}{@scrhack@standardsections} +\KOMAExecuteOptions{standardsections=false} +\KOMAProcessOptions\relax +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% using: package,body +\newcommand{\scr@ifexpected}[2]{% + \begingroup + \let\@tempa#1 + #2 + \ifx\@tempa#1 + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup +} +\newcommand*{\scr@hack@load}[2]{% + \expandafter\ifx\csname ver@#2.#1\endcsname\relax + \expandafter\@secondoftwo + \else + \expandafter\ifx\csname ver@#2.hak\endcsname\relax + \expandafter\expandafter\expandafter\@firstoftwo + \else + \expandafter\expandafter\expandafter\@secondoftwo + \fi + \fi + {% + \PackageInfo{scrhack}{loading #2 hack}% + \edef\reserved@a{% + \noexpand\makeatletter\noexpand\input{#2.hak}% + \noexpand\catcode`\noexpand\@\the\catcode`\@\relax + }\reserved@a + }{% + \PackageInfo{scrhack}{ignorring #2 hack}% + }% +} +\BeforePackage{hyperref}{% + \scr@ifundefinedorrelax{hy@insteadofrefstepcounter}{}{% + \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak + detection of KOMA-Script class, that doesn't\MessageBreak + need that hack,}% + \KOMAExecuteOptions[.scrhack.sty]{hyperref=false}% + }% +} +\AfterPackage*{hyperref}{% + \if@scrhack@hyperref + \@ifpackagelater{hyperref}{2009/11/24}{% + \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak + detection of hyperref version, that doesn't\MessageBreak + need that hack,}% + \KOMAExecuteOptions[.scrhack.sty]{hyperref=false}% + }{% + \AtEndOfPackage{% + \KOMA@key[.scrhack.sty]{hyperref}{% + \PackageWarning{scrhack}{option `hyperref=#1' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@hyperref\scr@hack@load\@pkgextension{hyperref}\fi + }% + }% + \fi +} +\AfterPackage*{floatrow}{% + \KOMAoptions{float=false}% + \PackageInfo{scrhack}{option `float' deactivated}% + \KOMA@key[.scrhack.sty]{floatrow}{% + \PackageWarning{scrhack}{option `floatrow' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@floatrow\scr@hack@load\@pkgextension{floatrow}\fi +} +\AfterPackage*{float}{% + \KOMA@key[.scrhack.sty]{float}{% + \PackageWarning{scrhack}{option `float' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@float\scr@hack@load\@pkgextension{float}\fi +} +\AfterPackage*{listings}{% + \KOMA@key[.scrhack.sty]{listings}{% + \PackageWarning{scrhack}{option `listings' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@listings\scr@hack@load\@pkgextension{listings}\fi +} +\AfterPackage*{nomencl}{% + \KOMA@key[.scrhack.sty]{nomencl}{% + \PackageWarning{scrhack}{option `nomencl' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@nomencl\scr@hack@load\@pkgextension{nomencl}\fi +} +\AfterPackage*{setspace}{% + \KOMA@key[.scrhack.sty]{setspace}{% + \PackageWarning{scrhack}{option `setspace' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@setspace\scr@hack@load\@pkgextension{setspace}\fi +} +\AfterPackage*{lscape}{% + \if@scrhack@lscape\scr@hack@load\@pkgextension{lscape}\else + \KOMA@key[.scrhack.sty]{lscape}{% + \PackageWarning{scrhack}{option `lscape' ignored}% + \FamilyKeyStateProcessed + }% + \fi +} +\AtEndOfPackage{% + \if@scrhack@standardsections + \PackageInfo{scrhack}{loading standard classes sections hack}% + \input{standardsections.hak}% + \fi +} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrhack.sty'. diff --git a/texmf/tex/latex/koma-script/scrjura.sty b/texmf/tex/latex/koma-script/scrjura.sty new file mode 100644 index 000000000..9fce1b5dc --- /dev/null +++ b/texmf/tex/latex/koma-script/scrjura.sty @@ -0,0 +1,1124 @@ +%% +%% This is file `scrjura.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrjura.dtx (with options: `package,identify') +%% scrjura.dtx (with options: `package,init') +%% scrjura.dtx (with options: `package,options') +%% scrjura.dtx (with options: `package,postoptions') +%% scrjura.dtx (with options: `package,body') +%% scrjura.dtx (with options: `package,final') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2007-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{scrjura}[% + 2022/07/04 v3.37 KOMA-Script + package + (for jurists) +] +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: init) +\@ifpackageloaded{hyperref}{% + \PackageError{scrjura}{Package hyperref already loaded}{% + If you want to use package scrjura with package hyperref, you have + to\MessageBreak + load package scrjura before package hyperref.\MessageBreak + To solve the problem, you just should move the loading of package + hyperref\MessageBreak + behind the loading of package scrjura.}% +} +\RequirePackage{scrkbase}[2013/03/26] +\RequirePackage{tocbasic} +\DeclareTOCStyleEntry[% + indent=1.5em, + numwidth=2em, + level=\maxdimen +]{default}{cpar} +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: options) +\KOMA@ifkey{contract}{@documentcontract} +\IfLTXAtLeastTF{2020/10/01}{% + \AddToHook{begindocument/end}{% + \RelaxFamilyKey[.scrjura.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +}{% + \g@addto@macro\document{% + \RelaxFamilyKey[.scrjura.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +} +\KOMA@key{juratotoc}[true]{% + \KOMA@set@ifkey{juratotoc}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \DeclareTOCStyleEntry[level=2]{default}{cpar}% + \else + \DeclareTOCStyleEntry[level=\maxdimen]{default}{cpar}% + \fi + \else + \DeclareTOCStyleEntry[level=#1]{default}{cpar}% + \fi + \KOMA@kav@xreplacevalue{.scrjura.sty}{juratotoc}{\cpartocdepth}% +} +\KOMA@kav@xadd{.scrjura.sty}{juratotoc}{\cpartocdepth}% +\KOMA@key{juratocnumberwidth}{% + \DeclareTOCStyleEntry[numwidth=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.scrjura.sty}{juratocnumberwidth}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{juratocnumberwidth}{2em} +\KOMA@key{juratocindent}{% + \DeclareTOCStyleEntry[indent=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.scrjura.sty}{juratocindent}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{juratocindent}{1.5em}% +\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak} +\newif\ifparnumber +\KOMA@key{parnumber}[true]{% + \Ifstr{#1}{auto}{% + \AutoPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}% + \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}% + \KOMA@kav@add{.scrjura.sty}{parnumber}{auto}% + }{% + \Ifstr{#1}{manual}{% + \ManualPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}% + \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}% + \KOMA@kav@add{.scrjura.sty}{parnumber}{manual}% + }{% + \KOMA@set@ifkey{parnumber}{parnumber}{#1}% + \KOMA@kav@replacebool{.scrjura.sty}{parnumber}{parnumber}% + }% + }% +} +\KOMA@kav@add{.scrjura.sty}{parnumber}{true} +\KOMA@kav@add{.scrjura.sty}{parnumber}{auto} +\newcommand*{\Clausemark}[1]{} +\KOMA@key{clausemark}{% + \begingroup + \KOMA@set@ncmdkey{clausemark}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {forceright}{1},% + {forceboth}{2},% + {right}{3},% + {both}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase\number\@tempa + \endgroup + \let\Clausemark\@gobble + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \markright{\csname MakeMarkcase\endcsname{##1}}}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \markboth{\csname MakeMarkcase\endcsname{##1}}% + {\csname MakeMarkcase\endcsname{##1}}}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \ifx + \@mkboth\@gobbletwo + \else + \markright{\csname MakeMarkcase\endcsname{##1}}% + \fi}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \@mkboth{\csname MakeMarkcase\endcsname{##1}}% + {\csname MakeMarkcase\endcsname{##1}}}% + \else + \endgroup + \fi + \FamilyKeyStateProcessed + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi + \KOMA@kav@xreplacevalue{.scrjura.sty}{clausemark}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{clausemark}{false} +\KOMA@DeclareDeprecatedOption[scrjura]{markright}{clausemark=forceright} +\KOMA@DeclareDeprecatedOption[scrjura]{markboth}{clausemark=forceboth} +\KOMA@key{paragraphmark}{% + \PackageWarningNoLine{scrjura}{% + You've used obsolete option `paragraphmark'.\MessageBreak + Usage of this option is deprecated.\MessageBreak + You should simply replace `paragraphmark'\MessageBreak + by `clausemark'% + }% + \KOMAExecuteOptions[.scrjura.sty]{clausemark=#1}% +} +\newcommand*{\parcite@format}{0} +\newcommand*{\sentencecite@format}{0} +\KOMA@key{ref}{% + \begingroup + \KOMA@set@ncmdkey{ref}{@tempa}{% + {parlong}{1},{longpar}{1},{ParL}{1},% + {parshort}{2},{shortpar}{2},{ParS}{2},% + {parnumeric}{3},{numericpar}{3},{ParN}{3},% + {paroff}{4},{nopar}{4},% + {sentencelong}{10},{longsentence}{10},{SentenceL}{10},% + {sentenceshort}{20},{shortsentence}{20},{SentenceS}{20},% + {sentencenumeric}{30},{numericsentence}{30},{SentenceN}{30},% + {sentenceoff}{40},{nosentence}{40},% + {long}{11},% + {short}{22},% + {numeric}{33},% + {paragraphonly}{44},{onlyparagraph}{44},% + {ParagraphOnly}{44},{OnlyParagraph}{44}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \@tempcnta=\@tempa\relax + \@tempcntb=\z@ + \@whilenum \@tempcnta>9 \do{% + \advance\@tempcnta -10\relax + \advance\@tempcntb \@ne\relax + }% + \ifcase \@tempcnta + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup0\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup1\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup2\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup-\aftergroup1\aftergroup}% + \fi + \ifcase \@tempcntb + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup0\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup1\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup2\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup-\aftergroup1\aftergroup}% + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrjura.sty}{ref}% + \ifcase\parcite@format + \KOMA@kav@add{.scrjura.sty}{ref}{parlong}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{parshort}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{parnumeric}% + \or + \KOMAQkav@add{.scrjura.sty}{ref}{paroff}% + \fi + \ifcase\sentencecite@format + \KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentenceshort}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentencenumeric}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentenceoff}% + \fi + \fi +} +\KOMA@kav@add{.scrjura.sty}{ref}{parlong}% +\KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}% +\KOMA@DeclareDeprecatedOption[scrjura]{parcitename}{ref=parlong} +\KOMA@DeclareDeprecatedOption[scrjura]{sentencecitename}{ref=sentencelong} +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: postoptions) +\KOMAProcessOptions\relax +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\providecommand*{\DeprecatedParagraph}{% + \PackageError{scrjura}{modification of old document needed}{% + It seem that this document was made for scrjura up to version + 0.7a.\MessageBreak + Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all + depending\MessageBreak + commands, options, and counters have been renamed.\MessageBreak + You should replace the terms `Paragraph' and `paragraph` by `Clause` + and\MessageBreak + `clause` if they are part of the name of a scrjura feature, otherwise + this\MessageBreak + document may produce severall additional error messages and maybe the + wrong\MessageBreak + result. Sorry for the inconvenience.% + }% + \ParagraphCompatibilityHacks +} +\newcommand*{\ParagraphCompatibilityHacks}{% + \PackageWarning{scrjura}{compatibility hacks for `\string\Paragraph' + executed.\MessageBreak + There is no support for documents using these hacks!\MessageBreak + There is no warranty for real compatibility!\MessageBreak + Even if the LaTeX run of the document doesn't report\MessageBreak + any error, the result may be completely wrong.\MessageBreak + Therefore it is recommended to solve the problem,\MessageBreak + instead of trying to work around using the\MessageBreak + compatibility hacks% + }% + \gdef\Paragraph{\Clause}% + \gdef\SubParagraph{\SubClause}% + \gdef\c@Paragraph{\c@Clause}% + \gdef\cl@Paragraph{\cl@Clause}% + \gdef\c@SubParagraph{\c@SubClause}% + \gdef\cl@SubParagraph{\cl@SubClause}% + \gdef\theParagraph{\theClause}% + \gdef\theSubParagraph{\theSubClause}% + \gdef\refParagraph{\refClause}% + \gdef\refParagraphN{\refClauseN}% + \aliaskomafont{Paragraph}{Clause}% + \scr@ifundefinedorrelax{Paragraphmark}{}{% + \global\let\Clausemark\Paragraphmark + }% +} +\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph} +\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph} +\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph} +\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN} +\newcommand*{\scrjura@env@type}{} +\newcommand*{\ellipsispar}[1][1]{% + \begingroup + \KOMAoptions{parnumber=manual}\parellipsis\par + \addtocounter{par}{#1}% + \if@filesw + \protected@write\@auxout{}{% + \string\newmaxpar{\scrjura@env@type}% + {\csname the\scrjura@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \endgroup + \addtocounter{par}{-1}\refstepcounter{par}% + \ignorespaces +} +\newcommand*{\parellipsis}{% + \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}% +} +\newenvironment{contract}{% + \ifx\scrjura@env@type\@empty + \let\@doendpe\scrjura@doendpe + \let\Clause\contract@paragraph + \let\c@Clause\c@contractClause + \edef\cl@Clause{\cl@Clause\cl@contractClause}% + \let\SubClause\contract@subparagraph + \let\c@SubClause\c@contractSubClause + \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}% + \let\Sentence\contract@sentence + \renewcommand*{\scrjura@env@type}{contract}% + \aliaskomafont{Clause}{contract.Clause}% + \else + \PackageError{scrjura}{nested `contract` detected}{% + You may not use a `contract' environment inside\MessageBreak + a `\scrjura@env@type' environment or after loading\MessageBreak + package `scrjura' with option `\scrjura@env@type'!}% + \fi +}{} +\let\if@scrjura@skiphyperref\iftrue +\let\cl@Clause\@empty +\let\cl@SubClause\@empty +\newcounter{contractClause} +\renewcommand*{\thecontractClause}{% + {\contract@Clauseformat{\arabic{Clause}}}} +\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}} +\newcommand*{\Clauseformat}[1]{\S~#1} +\newcounter{contractSubClause} +\@addtoreset{SubClause}{Clause} +\renewcommand*{\thecontractSubClause}{% + {\theClause\alph{SubClause}}} +\newcounter{contractAbsoluteClause} +\newcommand*{\DeclareNewJuraEnvironment}[1]{% + \@ifundefined{#1}{\expandafter\let\csname #1\expandafter\endcsname + \csname end#1\endcsname}{}% + \@ifundefined{#1}{\let\reserved@defjuraenvironment\@defjuraenvironment}{% + \PackageError{scrjura}{ignorring declaration of `#1'}{% + You've tried to declare jura environment `#1', but + environment\MessageBreak + `#1' or command + \expandafter\string\csname #1\endcsname\space or + \expandafter\string\csname end#1\endcsname\MessageBreak + already exists.\MessageBreak + Declaration will be ignored}% + \long\def\reserved@defjuraenvironment##1[##2]##3##4{}% + }% + \kernel@ifnextchar [%] + {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}% +} +\@onlypreamble\DeclareNewJuraEnvironment +\DefineFamily{KOMAarg} +\DefineFamilyMember{KOMAarg} +\newcommand{\@defjuraenvironment}{} +\long\def\@defjuraenvironment#1[#2]#3#4{% + \let\reserved@defjuraenvironment\relax + \newcounter{#1Clause}% + \newcounter{#1AbsoluteClause}% + \newcounter{#1SubClause}% + \FamilyCSKey[.scrjura.sty]{KOMAarg}{Clause}{#1@Clause}% + \FamilyCSKey[.scrjura.sty]{KOMAarg}{SubClause}{#1@SubClause}% + \FamilyCSKey[.scrjura.sty]{KOMAarg}{Sentence}{#1@Sentence}% + \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}{% + \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}% + \expandafter\edef\csname #1@Clauseformat\endcsname{% + \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname + }% + \FamilyKeyStateProcessed + } + \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}{% + \IfExistskomafont{#1.Clause}{% + \IfIsAliaskomafont{#1.Clause}{% + \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax + \newkomafont{#1.Clause}{##1}% + }{\setkomafont{#1.Clause}{##1}}% + }{% + \newkomafont{#1.Clause}{##1}% + }% + } + \FamilyExecuteOptions[.scrjura.sty]{KOMAarg}{#2}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Sentence}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{SubClause}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Clause}% + \@ifundefined{#1@Clauseformat}{% + \expandafter\DeclareRobustCommand\expandafter*% + \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}% + }{}% + \expandafter\renewcommand\expandafter*\csname the#1Clause\endcsname{% + \protect\@nameuse{#1@Clauseformat}{\arabic{#1Clause}}}% + \newenvironment{#1}{% + \par + \ifx\scrjura@env@type\@empty + \edef\scrjura@env@type{#1}% + \let\@doendpe\scrjura@doendpe + \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname + \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}% + \expandafter\let\expandafter\c@SubClause + \csname c@#1SubClause\endcsname + \edef\cl@SubClause{\cl@SubClause + \csname cl@#1SubClause\endcsname}% + \@ifundefined{#1@Clause}{% + \let\Clause\contract@paragraph + }{% + \expandafter\let\expandafter\Clause + \csname #1@Clause\endcsname + }% + \@ifundefined{#1@SubClause}{% + \let\SubClause\contract@subparagraph + }{% + \expandafter\let\expandafter\SubClause + \csname #1@SubClause\endcsname + }% + \@ifundefined{#1@Sentence}{% + \let\Sentence\contract@sentence + }{% + \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname + }% + \@ifundefined{\scrjura@env@type @everypar}{% + \expandafter\let + \csname \scrjura@env@type @everypar\endcsname + \contract@everypar + }{}% + \IfExistskomafont{#1.Clause}{% + \IfIsAliaskomafont{#1.Clause}{% + \aliaskomafont{Clause}{\csname scr@fnt@instead@#1.Clause\endcsname}% + }{% + \aliaskomafont{Clause}{#1.Clause}% + }% + }{% + \aliaskomafont{Clause}{contract.Clause}% + }% + #3% + \else + \PackageError{scrjura}{nested scrjura environments detected}{% + You must not use a `#1' environment inside\MessageBreak + a `\scrjura@env@type' environment or after loading\MessageBreak + package `scrjura' with option `\scrjura@env@type'!}% + \fi + }{% + #4% + \par + }% +} +\define@key{contract}{title}{% + \def\contract@title{#1}% + \ifx\contract@entry\relax\def\contract@entry{\contract@title}\fi + \ifx\contract@head\relax\def\contract@head{\contract@title}\fi +} +\define@key{contract}{entry}{% + \PackageWarning{scrjura}{deprecated option `entry'.\MessageBreak + You should use option `tocentry' instead of\MessageBreak + option `entry'% + }% + \def\contract@entry{#1}} +\define@key{contract}{tocentry}{\def\contract@entry{#1}} +\define@key{contract}{noentry}[]{% + \PackageWarning{scrjura}{deprecated option `noentry'.\MessageBreak + You should use option `notocentry' instead of\MessageBreak + option `noentry'% + }% + \let\contract@entry\relax} +\define@key{contract}{notocentry}[]{\let\contract@entry\relax} +\define@key{contract}{head}{\def\contract@head{#1}} +\define@key{contract}{nohead}[]{\let\contract@head\relax} +\define@key{contract}{number}{\def\contract@number{#1}} +\newcommand*{\contract@preskip}{2\baselineskip} +\newcommand*{\contract@postskip}{\baselineskip} +\define@key{contract}{preskip}{\def\contract@preskip{#1}} +\define@key{contract}{postskip}{\def\contract@postskip{#1}} +\newif\ifcontract@dummy +\define@key{contract}{dummy}[true]{\csname contract@dummy#1\endcsname} +\newkomafont{contract.Clause}{\sffamily\bfseries\large} +\newcommand*{\contract@paragraph@font}{\usekomafont{Clause}% + \@hangfrom} +\newcounter{@AbsClause} +\newcommand*{\theH@AbsClause}{P-\arabic{@AbsClause}} +\newcommand*{\theHClause}{\theH@AbsClause} +\newcommand*{\theHSubClause}{\theH@AbsClause} +\newcommand*{\contract@paragraph}[1]{% + \stepcounter{\scrjura@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi + \ifcontract@dummy\else + \par + \@afterindentfalse + \addvspace{\contract@preskip}% + \fi + \ifx\contract@number\relax + \let\p@Clause\@empty + \expandafter\let\expandafter\theClause + \csname the\scrjura@env@type Clause\endcsname + \refstepcounter{Clause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@Clause + \endgroup + \protected@edef\theClause{% + \protect\@nameuse{\scrjura@env@type @Clauseformat}{\contract@number}% + }% + \protected@edef\@currentlabel{\theClause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@scrjura@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% + \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi + \let\theSubClause\theClause + \ifcontract@dummy\else + \begingroup + \if@juratitlepagebreak\else\interlinepenalty\@M\fi + \contract@paragraph@font{\theClause + \ifx\contract@title\relax\else\enskip\fi}% + \contract@title + \ifx\contract@entry\relax\else + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {cpar}[\theClause]\contract@entry + \addxcontentsline{cpa}{cpar}[\theClause]\contract@entry + \fi + \ifx\contract@head\relax\else + \expandafter\Clausemark\expandafter{% + \expandafter\theSubClause\expandafter\enskip\contract@head}% + \fi + \par + \endgroup\nobreak\vskip\contract@postskip + \scrjura@afterheading + \fi +} +\newcommand*{\contract@subparagraph}[1]{% + \stepcounter{\scrjura@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi + \ifcontract@dummy\else + \par + \@afterindentfalse + \vskip\contract@preskip + \fi + \ifx\contract@number\relax + \let\p@SubClause\@empty + \let\theSubClause\thecontractSubClause + \refstepcounter{SubClause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@SubClause + \endgroup + \protected@edef\theSubClause{\theClause\contract@number}% + \protected@edef\@currentlabel{\theSubClause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@scrjura@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% + \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi + \ifcontract@dummy\else + \begingroup + \if@juratitlepagebreak\else\interlinepenalty\@M\fi + \contract@paragraph@font{\theSubClause + \ifx\contract@title\relax\else\enskip\fi}% + \contract@title + \ifx\contract@entry\relax\else + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {cpar}[\theSubClause]\contract@entry + \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry + \fi + \ifx\contract@head\relax\else + \expandafter\Clausemark\expandafter{% + \expandafter\theSubClause\expandafter\enskip\contract@head}% + \fi + \par + \endgroup + \nobreak\vskip\contract@postskip + \scrjura@afterheading + \fi +} +\newcommand*{\AutoPar}{% + \expandafter\let\expandafter\scrjura@everypar + \csname \scrjura@env@type @everypar\endcsname +} +\newcommand*{\ManualPar}{% + \let\scrjura@everypar\relax +} +\CheckCommand*{\@afterheading}{% + \@nobreaktrue + \everypar{% + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \if@afterindent \else + {\setbox\z@\lastbox}% + \fi + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% +} +\newcommand*{\scrjura@afterheading}{% + \@nobreaktrue + \everypar{% + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \if@afterindent \else + {\setbox\z@\lastbox}% + \fi + \else + \clubpenalty \@clubpenalty + \everypar{% + \scrjura@everypar + }% + \fi + \scrjura@everypar + }% + \AutoPar +} +\newcommand*{\scrjura@everypar}{} +\providecommand*{\IncludeInRelease}[3]{% + \PackageInfo{scrjura}{temporary definition of \string\IncludeInRelease}% + \Ifstr{#1}{0000/00/00}{% + \let\IncludeInRelease\@undefined + \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}% + }{% + \let\EndIncludeInRelease\relax + \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{% + \let\@gobble@IncludeInRelease\@undefined + }% + \expandafter\@gobble@IncludeInRelease + }% +} +\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar + \clubpenalty\@clubpenalty + \everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}% + \everypar{}\@endpefalse}} +\newcommand*{\scrjura@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar + \clubpenalty\@clubpenalty + \everypar{% + \csname scrjura@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname scrjura@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}\everypar{}\@endpefalse}} +\newcommand*{\scrjura@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar\everypar{% + \csname scrjura@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname scrjura@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +\DeclareRobustCommand*{\scrjura@separator}[1]{#1} +\DeclareRobustCommand*{\scrjura@usetype}[1]{\scrjura@@usetype{#1}} +\newcommand*{\scrjura@@usetype}[1]{} +\newcounter{par} +\renewcommand*{\thepar}{\arabic{par}} +\newcommand*{\theHpar}{\theH@AbsClause-\Roman{par}} +\newcommand*{\parformat}{(\thepar)} +\newcommand*{\parformatseparation}{\nobreakspace} +\newkomafont{parnumber}{} +\renewcommand*\p@par{{\scrjura@usetype{\scrjura@env@type}\theSubClause\scrjura@separator{\nobreakspace}}} +\@addtoreset{par}{Clause} +\@addtoreset{par}{SubClause} +\newcommand*{\withoutparnumber}{} +\newcommand*{\contract@everypar}{% + \ifparnumber + \ifx\scrjura@special@par\relax + \ifx\scrjura@special@reset@par\relax\else + \global\let\thepar\scrjura@special@reset@par + \global\let\scrjura@special@reset@par\relax + \fi + \refstepcounter{par}% + \refstepcounter{sentence}% + \else + \ifx\scrjura@special@reset@par\relax + \global\let\scrjura@special@reset@par\thepar + \fi + \global\let\thepar\scrjura@special@par + \global\let\scrjura@special@par\relax + \setcounter{sentence}{0}\refstepcounter{sentence}% + \fi + \begingroup + \if@filesw + \protected@write\@auxout{% + \expandafter\let\csname \scrjura@env@type @Clauseformat\endcsname + \@firstofone + }{% + \string\newmaxpar{\scrjura@env@type}% + {\csname the\scrjura@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \getmaxpar\@tempa{\scrjura@env@type}% + {\csname the\scrjura@env@type AbsoluteClause\endcsname}% + \typeout{Stored max is \@tempa}% + \def\reserved@a##1\@nnil{\def\@tempa{##1}}% + \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil + \ifnum \@tempcnta>\@ne + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \else + \def\reserved@a{\relax}% + \ifx\@tempa\reserved@a + \withoutparnumber + \else + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \fi + \fi + \endgroup + \else + \begingroup\withoutparnumber\endgroup + \setcounter{sentence}{-1}\refstepcounter{sentence}% + \fi +} +\newcommand*{\thisparnumber}[1]{% + \def\scrjura@special@par{#1}% +} +\newcommand*{\scrjura@special@par}{} +\let\scrjura@special@par\relax +\newcommand*{\scrjura@special@reset@par}{} +\let\scrjura@special@reset@par\relax +\newcommand*{\refL}{\kernel@ifstar {\ref@L*}{\ref@L{}}} +\newcommand*{\ref@L}[2]{% + \begingroup + \def\parcite@format{0}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +\newcommand*{\refS}{\kernel@ifstar {\ref@S*}{\ref@S{}}} +\newcommand*{\ref@S}[2]{% + \begingroup + \def\parcite@format{1}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +\newcommand*{\refN}{\kernel@ifstar {\ref@N*}{\ref@N{}}} +\newcommand*{\ref@N}[2]{% + \begingroup + \def\parcite@format{2}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +\newcommand*{\refClause}{% + \kernel@ifstar {\ref@Clause*}{\ref@Clause{}} +} +\newcommand*{\ref@Clause}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% + \def\@tempc##1##2\@nil{##1}% + \let\scrjura@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +\newcommand*{\refClauseN}{% + \kernel@ifstar {\ref@ClauseN*}{\ref@ClauseN{}} +} +\newcommand*{\ref@ClauseN}[2]{% + \begingroup + \let\Clauseformat\relax + \ref@Clause{#1}{#2}% + \endgroup +} +\newcommand*{\refPar}{% + \kernel@ifstar {\ref@Par*}{\ref@Par{}} +} +\newcommand*{\ref@Par}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% + \def\@tempc##1##2\@nil{##1}% + \let\scrjura@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% + \def\@tempc##1##2##3\@nil{##2}% + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa{% + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space + with undefined par number}% + }\noexpand\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +\newcommand*{\refParL}{% + \kernel@ifstar {\ref@ParX0*}{\ref@ParX0{}} +} +\newcommand*{\ref@ParX}[3]{% + \begingroup + \def\parcite@format{#1}% + \let\sentencecite@format\parcite@format + \ref@Par{#2}{#3}% + \endgroup +} +\newcommand*{\refParS}{% + \kernel@ifstar {\ref@ParX1*}{\ref@ParX1{}} +} +\newcommand*{\refParN}{% + \kernel@ifstar {\ref@ParN2*}{\ref@ParN2{}} +} +\newcommand*{\ref@ParN}[2]{% + \kernel@ifnextchar [%] + {\ref@@ParN{#1}{#2}}% + {\ref@ParX{#1}{#2}}% +} +\newcommand*{\ref@@ParN}{} +\def\ref@@ParN#1#2[#3]#4{% + \begingroup + \renewcommand*{\parnumericformat}[1]{% + \csname @#3\endcsname{\number ##1\relax}% + }% + \ref@ParX{#1}{#2}{#4}% + \endgroup +} +\newcommand*{\refSentence}{% + \kernel@ifstar {\ref@Sentence*}{\ref@Sentence{}} +} +\newcommand*{\ref@Sentence}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% + \def\@tempc##1##2\@nil{##1}% + \let\scrjura@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% + \def\@tempc##1##2##3##4\@nil{##3}% + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa{}{% + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space + with undefined sentence number}% + }\noexpand\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +\newcommand*{\refSentenceL}{% + \kernel@ifstar {\ref@SentenceX0*}{\ref@SentenceX0{}} +} +\newcommand*{\ref@SentenceX}[3]{% + \begingroup + \def\parcite@format{#1}% + \let\sentencecite@format\parcite@format + \ref@Sentence{#2}{#3}% + \endgroup +} +\newcommand*{\refSentenceS}{% + \kernel@ifstar {\ref@SentenceX1*}{\ref@SentenceX1{}} +} +\newcommand*{\refSentenceN}{% + \kernel@ifstar {\ref@SentenceX2*}{\ref@SentenceX2{}} +} +\newcounter{sentence}[par] +\renewcommand*{\thesentence}{\arabic{sentence}} +\newcommand*{\theHsentence}{\theHpar-\arabic{sentence}} +\scr@ifundefinedorrelax{labelformat}{% + \renewcommand*{\p@sentence}{\expandafter\p@@sentence} + \newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}% + \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}% +}{% + \labelformat{sentence}{\p@par{{\par@cite{\thepar}}% + \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}% +} +\newcommand*{\contract@sentence}{% + \ifvmode + \if@endpe + \refstepcounter{sentence}% + \else + \leavevmode + \fi + \else + \refstepcounter{sentence}% + \fi + {\usekomafont{sentencenumber}{\sentencenumberformat}}% + \nobreak\hskip\z@ +} +\newkomafont{sentencenumber}{} +\newcommand*{\sentencenumberformat}{\textsuperscript{\thesentence}} +\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}} +\newcommand*{\parciteformat}[1]{% + \ifcase \parcite@format + \expandafter\parlongformat + \or + \expandafter\parshortformat + \or + \expandafter\parnumericformat + \else + \unskip\expandafter\@gobble + \fi + {#1}% +} +\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}} +\newcommand*{\sentenceciteformat}[1]{% + \ifcase \sentencecite@format + \expandafter\sentencelongformat + \or + \expandafter\sentenceshortformat + \or + \expandafter\sentencenumericformat + \else + \unskip\expandafter\@gobble + \fi + {#1}% +} +\newcommand*{\parlongformat}[1]{\parname~#1} +\newcommand*{\parshortformat}[1]{\parshortname~#1} +\newcommand*{\parnumericformat}[1]{\@Roman{\number #1\relax}} +\newcommand*{\sentencelongformat}[1]{\sentencename~#1} +\newcommand*{\sentenceshortformat}[1]{\sentenceshortname~#1} +\newcommand*{\sentencenumericformat}[1]{\@arabic{\number #1\relax}.} +\newcommand*{\parname}{Paragraph} +\AtBeginDocument{% + \providecaptionname{german,ngerman,austrian,naustrian}\parname{Absatz}% + \providecaptionname{german,ngerman,austrian,naustrian}\parshortname{Abs.}% + \providecaptionname{german,ngerman,austrian,naustrian}\sentencename{Satz}% + \providecaptionname{german,ngerman,austrian,naustrian}\sentenceshortname{S.}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\parname{paragraph}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\parshortname{par.}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\sentencename{sentence}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\sentenceshortname{sent.}% +} +\providecommand*{\parname}{\scrjura@lang@error{\parname}} +\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}} +\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}} +\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}} +\newcommand*{\scrjura@lang@error}[1]{% + \PackageError{scrjura}{% + current language not supported% + }{% + Currently scrjura only supports languages `german', `ngerman', + `austrian',\MessageBreak + `naustrian', `english', `american', `british', `canadian', + `USenglish',\MessageBreak + `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak + It seems, that you are using another language (maybe `\languagename') or + that\MessageBreak + your language selection isn't compatible to package `babel'.\MessageBreak + Because of this you have to define `\string#1' by yourself!\MessageBreak + It would be nice if you'll send your definitions to the author.% + }% + \textbf{??}% +} +\newcommand*{\newmaxpar}[3]{% + \begingroup + \expandafter\let\csname #1@Clauseformat\endcsname\@firstofone + \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa + \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}% + \endgroup +} +\newcommand*{\getmaxpar}[3]{% + \begingroup + \expandafter\let\csname #2@Clauseformat\endcsname\@firstofone + \protected@edef\@tempa{#3}% + \@onelevel@sanitize\@tempa + \expandafter\ifx \csname max@#2@\@tempa\endcsname\relax + \edef\@tempa{\endgroup\edef\noexpand#1{\expandafter\the\value{par}}}% + \else + \edef\@tempa{\endgroup + \edef\noexpand#1{\csname max@#2@\@tempa\endcsname}}% + \fi + \@tempa +} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\newmaxpar[3]{} + }% + \fi +} +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: final) +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrjura.sty'. diff --git a/texmf/tex/latex/koma-script/scrkbase.sty b/texmf/tex/latex/koma-script/scrkbase.sty new file mode 100644 index 000000000..184bfa2e9 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrkbase.sty @@ -0,0 +1,642 @@ +%% +%% This is file `scrkbase.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,scrkbase') +%% scrkernel-basics.dtx (with options: `package,prepare,koma') +%% scrkernel-basics.dtx (with options: `package,option,koma') +%% scrkernel-fonts.dtx (with options: `package,option,scrkbase') +%% scrkernel-basics.dtx (with options: `package,body,koma') +%% scrkernel-fonts.dtx (with options: `package,body,scrkbase') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: prepare) +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{% + scrkbase% +}[% + 2022/07/04 v3.37 KOMA-Script + package + (% + KOMA-Script-dependent + basics and keyval usage)] +\RequirePackage{scrbase}[\KOMAScriptVersion] +\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{% + \DefineFamilyMember[{#1}]{KOMA}% + \@ifundefined{scr@kav@KOMA#1}{\@namedef{scr@kav@KOMA#1}{}}{}% + \DefineFamilyKey[{#1}]{KOMA}% +} +\newcommand*{\KOMA@kav@add}[3]{% + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@add{#1}% + }{% + \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{\do{{#2}{#3}}}% + }% +} +\newcommand*{\KOMA@kav@xadd}[3]{% + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@xadd{#1}% + }{% + \protected@edef\reserved@a{{#2}{#3}}% + \expandafter\l@addto@macro\csname scr@kav@KOMA#1\expandafter\endcsname + \expandafter{\expandafter\do\expandafter{\reserved@a}}% + }% +} +\newcommand*{\KOMA@kav@remove}[3]{% + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@remove{#1}% + }{% + \begingroup + \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}% + \edef\reserved@b{\detokenize{{#2}{#3}}}% + \def\do##1{% + \edef\reserved@c{\detokenize{##1}}% + \ifx\reserved@b\reserved@c\else + \l@addto@macro\reserved@a{% + \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{% + \do{##1}% + }% + }% + \fi + }% + \@nameuse{scr@kav@KOMA#1}% + \reserved@a + }% +} +\newcommand*{\KOMA@kav@removekey}[2]{% + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@removekey{#1}% + }{% + \begingroup + \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}% + \edef\reserved@b{\detokenize{#2}}% + \def\reserved@d##1##2{\edef\reserved@c{\detokenize{##1}}}% + \def\do##1{% + \reserved@d##1\relax + \ifx\reserved@b\reserved@c\else + \l@addto@macro\reserved@a{% + \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{% + \do{##1}% + }% + }% + \fi + }% + \@nameuse{scr@kav@KOMA#1}% + \reserved@a + }% +} +\newcommand*{\KOMA@kav@replacevalue}[3]{% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@replacevalue{#1}% + }{% + \KOMA@kav@removekey{#1}{#2}% + \KOMA@kav@add{#1}{#2}{#3}% + }% + \fi +} +\newcommand*{\KOMA@kav@xreplacevalue}[3]{% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@replacevalue{#1}% + }{% + \KOMA@kav@removekey{#1}{#2}% + \KOMA@kav@xadd{#1}{#2}{#3}% + }% + \fi +} +\newcommand*{\KOMA@kav@replacebool}[3]{% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \@ifundefined{scr@kav@KOMA#1}{% + \KOMA@internal@error\KOMA@kav@replacebool{#1}% + }{% + \KOMA@kav@remove{#1}{#2}{false}% + \KOMA@kav@remove{#1}{#2}{true}% + \expandafter\ifx\csname if#3\expandafter\endcsname + \csname iftrue\endcsname + \KOMA@kav@xadd{#1}{#2}{true}% + \else + \KOMA@kav@xadd{#1}{#2}{false}% + \fi + }% + \fi +} +\newcommand*{\KOMA@kav@defall}[2]{% + \@ifundefined{scr@kav@KOMA#2}{% + \KOMA@internal@error\KOMA@kav@defall{#1}% + }{% + \begingroup + \let\reserved@a\@empty + \def\reserved@b##1##2{\l@addto@macro\reserved@a{,{##1=##2}}}% + \def\do##1{\reserved@b##1}% + \@nameuse{scr@kav@KOMA#2}% + \ifx\reserved@a\@empty + \def\reserved@b{\endgroup\let#1\@empty}% + \else + \edef\reserved@b{% + \unexpanded{\endgroup\def#1}{% + \unexpanded + \expandafter\expandafter\expandafter{% + \expandafter\@gobble\reserved@a}}}% + \fi + \reserved@b + }% +} +\newcommand*{\KOMA@kav@defone}[3]{% + \@ifundefined{scr@kav@KOMA#2}{% + \KOMA@internal@error\KOMA@kav@defall{#1}% + }{% + \begingroup + \let\reserved@a\@empty + \def\reserved@b##1##2{% + \Ifstr{##1}{#3}{\l@addto@macro\reserved@a{,{##2}}}{}% + }% + \def\do##1{\reserved@b##1}% + \@nameuse{scr@kav@KOMA#2}% + \ifx\reserved@a\@empty + \def\reserved@b{\endgroup\let#1\@empty}% + \else + \edef\reserved@b{% + \unexpanded{\endgroup\def#1}{% + \unexpanded + \expandafter\expandafter\expandafter{% + \expandafter\@gobble\reserved@a}}}% + \fi + \reserved@b + }% +} +\newcommand*{\KOMA@internal@error}[2]{% + \PackageError{scrkbase}{internal error using \string#1{#2}}{% + You've found an internal error either in KOMA-Script or a third + party\MessageBreak + definition, that uses KOMA-Script internal macros.\MessageBreak + Please send a bug report with a minimal but complete example, + that\MessageBreak + shows this error, to komascript at gmx dot info or report it + at\MessageBreak + (you need an account to do so).% + }% +} +\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}} +\@onlypreamble\KOMAProcessOptions +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: option) +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: body) +\newcommand*{\KOMAExecuteOptions}[1][.\@currname.\@currext]{% + \FamilyExecuteOptions[#1]{KOMA}% +} +\newcommand*{\KOMAoptions}{\FamilyOptions{KOMA}} +\newcommand*{\KOMAoptionsOf}[2][\@firstofone]{% + \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{% + \PackageError{scrkbase}{\string\KOMAoptionsOf\space not supported}{% + #2 is not the name of a KOMA-Script package or\MessageBreak + KOMA-Script class, that supports \string\KOMAoptionsOf.}% + }{% + \begingroup + \def\reserved@a{#1}% + \KOMA@kav@defall\reserved@b{.#2}% + \expandafter\expandafter\expandafter\endgroup + \expandafter\reserved@a\expandafter{\reserved@b}% + }% +} +\newcommand*{\KOMAoptionOf}[3][\@firstofone]{% + \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{% + \PackageError{scrkbase}{\string\KOMAoptionOf\space not supported}{% + #2 is not the name of a KOMA-Script package or\MessageBreak + KOMA-Script class, that supports \string\KOMAoptionOf.}% + }{% + \begingroup + \def\reserved@a{#1}% + \KOMA@kav@defone\reserved@b{.#2}{#3}% + \ifx\reserved@b\@empty + \PackageWarning{scrkbase}{option `#3' for `#2' unset}% + \endgroup + \else + \expandafter\expandafter\expandafter\endgroup + \expandafter\reserved@a\expandafter{\reserved@b}% + \fi + }% +} +\newcommand*{\AfterKOMAoptions}{\AtEndOfFamilyOptions} +\newcommand*{\KOMAoption}{\FamilyOption{KOMA}} +\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}} +\newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{% + \begingroup\edef\reserved@a{\noexpand\KOMA@@ifkey{#1}{#2}}% + \expandafter\endgroup\reserved@a +} +\newcommand*{\KOMA@@ifkey}[3]{% + \@ifundefined{if#3}{% + \expandafter\newif\csname if#3\endcsname + }{}% + \KOMA@key[{#1}]{#2}[true]{% + \KOMA@set@ifkey{#2}{#3}{##1}% + \KOMA@kav@replacebool{#1}{#2}{#3}% + }% + \csname if#3\endcsname + \KOMA@kav@xadd{#1}{#2}{true}% + \else + \KOMA@kav@xadd{#1}{#2}{false}% + \fi +} +\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}} +\newcommand*{\KOMA@ncmdkey}[2][.\@currname.\@currext]{% + \begingroup\edef\reserved@a{\noexpand\KOMA@@ncmdkey{#1}{#2}}% + \expandafter\endgroup\reserved@a +} +\newcommand*{\KOMA@@ncmdkey}[2]{% + \kernel@ifnextchar [%] + {\KOMA@@@ncmdkey{#1}{#2}}{\KOMA@@@ncmdkey{#1}{#2}[]} +} +\newcommand*{\KOMA@@@ncmdkey}{} +\def\KOMA@@@ncmdkey#1#2[#3]#4#5{% + \@ifundefined{#4}{\@namedef{#4}{0}}{}% + \ifx\relax#3\relax + \KOMA@key[{#1}]{#2}{% + \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}% + \KOMA@kav@replacevalue{#1}{#2}{##1}% + }% + \else + \KOMA@key[{#1}]{#2}[{#3}]{% + \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}% + \KOMA@kav@replacevalue{#1}{#2}{##1}% + }% + \fi +} +\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}} +\newcommand*{\KOMA@DeclareDeprecatedOption}{% + \kernel@ifnextchar [%] + {\KOMA@@DeclareDeprecatedOption}% + {\KOMA@@@DeclareDeprecatedOption{\ClassWarningNoLine{\KOMAClassName}}}% +} +\newcommand*{\KOMA@@DeclareDeprecatedOption}[1][]{% + \KOMA@@@DeclareDeprecatedOption{\PackageWarningNoLine{#1}}% +} +\newcommand*{\KOMA@@@DeclareDeprecatedOption}[3]{% + \DeclareOption{#2}{\KOMA@UseDeprecatedOption{#1}{#2}{#3}}% +} +\newcommand*{\KOMA@UseDeprecatedOption}[3]{% + \begingroup + \scr@ifundefinedorrelax{KV@KOMA.\@currname.\@currext @version}{% + \edef\reserved@a{\noexpand\endgroup + \noexpand#1{% + You've used deprecated option `\detokenize{#2}'.\noexpand\MessageBreak + Usage of this option is deprecated.\noexpand\MessageBreak + You should simply replace `\detokenize{#2}'\noexpand\MessageBreak + by `\detokenize{#3}'% + }% + \noexpand\KOMAExecuteOptions{#3}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}% + }% + }{% + \edef\reserved@a{\noexpand\endgroup + \noexpand#1{% + You've used deprecated option `\detokenize{#2}'.\noexpand\MessageBreak + Usage of this option indicates an old document\noexpand\MessageBreak + and changes compatibility level using\noexpand\MessageBreak + `\detokenize{#3},version=first,\noexpand\MessageBreak + enabledeprecatedfontcommands' that may result\noexpand\MessageBreak + in further warnings.\noexpand\MessageBreak + If you don't want this, you should simply\noexpand\MessageBreak + replace option `\detokenize{#2}' by `\detokenize{#3}'% + }% + \noexpand\KOMAExecuteOptions{% + #3,version=first}% + \noexpand\ExecuteOptions{enabledeprecatedfontcommands}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}% + }% + }% + \reserved@a +} +\newcommand*{\KOMA@DeclareStandardOption}{% + \kernel@ifnextchar [%] + {\KOMA@@DeclareStandardOption}% + {\KOMA@@@DeclareStandardOption{\ClassInfoNoLine{\KOMAClassName}}}% +} +\newcommand*{\KOMA@@DeclareStandardOption}[1][]{% + \KOMA@@@DeclareStandardOption{\PackageInfoNoLine{#1}}% +} +\newcommand*{\KOMA@@@DeclareStandardOption}[3]{% + \DeclareOption{#2}{\KOMA@UseStandardOption{#1}{#2}{#3}}% +} +\newcommand*{\KOMA@UseStandardOption}[3]{% + \begingroup + \edef\reserved@a{\noexpand\endgroup + \noexpand#1{% + You've used standard option `#2'.\noexpand\MessageBreak + This is correct!\noexpand\MessageBreak + Internally I'm using `#3'.\noexpand\MessageBreak + If you'd like to set the option with \string\KOMAoptions,% + \noexpand\MessageBreak + you'd have to use `#3' there\noexpand\MessageBreak + instead of `#2', too% + }% + \noexpand\KOMAExecuteOptions{#3}% + \noexpand\def\noexpand\CurrentOption{\CurrentOption}% + }% + \reserved@a +} +\newcommand*{\KOMA@newdeprecatedcommand}[3][\@gobbletwo]{% + \newcommand*{#2}{\KOMA@UseDeprecatedCommand{#1}{\string#2}{#3}}% +} +\newcommand*{\KOMA@UseDeprecatedCommand}[3]{% + #1{% + scrkbase% + }{% + You've used deprecated command `#2'.\MessageBreak + \protect\KOMAoptions{#3} will be used instead.\MessageBreak + You should also replace `#2' by `\protect\KOMAoptions{#3}'% + }% + \KOMAoptions{#3}% +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\IfExistskomafont}[1]{% + \scr@ifundefinedorrelax{scr@fnt@#1}{% + \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}% + }{% + \@firstoftwo + }% +} +\newcommand*{\IfIsAliaskomafont}[1]{% + \scr@ifundefinedorrelax{scr@fnt@#1}{% + \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}% + }{% + \@secondoftwo + }% +} +\newcommand*{\setkomafont}[2]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \PackageError{scrkbase}{% + font of element `#1' can't be set}{% + You've told me to redefine the font selection of the + element,\MessageBreak% + but either no such element is known by + KOMA-Script\MessageBreak% + or the element does not use a special font selection% + }% + }{% + \PackageInfo{scrkbase}{% + You've told me to redefine the font selection of the\MessageBreak + element `#1' that is an alias of element\MessageBreak + `\csname scr@fnt@instead@#1\endcsname'% + }% + \expandafter\setkomafont\expandafter{% + \csname scr@fnt@instead@#1\endcsname}{#2}% + }% + }{% + \expandafter\expandafter\expandafter\def\csname scr@fnt@#1\endcsname{#2}% + }% + \@ifundefined{scr@fnt@wrn@#1}{}{% + \PackageWarning{scrkbase}{% + \csname scr@fnt@wrn@#1\endcsname{#1}% + }% + }% +} +\newcommand*{\addtokomafont}[2]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \PackageError{scrkbase}{% + font of element `#1' can't be extended% + }{% + You've told me to extend the font selection of the + element,\MessageBreak + but either no such element is known by + KOMA-Script\MessageBreak + or the element does not use a special font selection% + }% + }{% + \PackageInfo{scrkbase}{% + You've told me to extend the font selection of the\MessageBreak + element `#1' that is an alias of element\MessageBreak + `\csname scr@fnt@instead@#1\endcsname'% + }% + \expandafter\addtokomafont\expandafter{% + \csname scr@fnt@instead@#1\endcsname}{#2}% + }% + }{% + \expandafter\expandafter\expandafter\l@addto@macro + \csname scr@fnt@#1\endcsname{#2}% + }% + \@ifundefined{scr@fnt@wrn@#1}{}{% + \PackageWarning{scrkbase}{% + \csname scr@fnt@wrn@#1\endcsname{#1}% + }% + }% +} +\newcommand*{\usekomafont}[1]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \PackageError{scrkbase}{% + font of element `#1' can't be used% + }{% + You've told me to use the font selection of the + element,\MessageBreak + but either no such element is known by + KOMA-Script\MessageBreak + or the element does not use a special font selection% + }% + }{% + \PackageInfo{scrkbase}{% + You've told me to use the font selection of the + element\MessageBreak + `#1' that is an alias of element `\csname + scr@fnt@instead@#1\endcsname'\MessageBreak + }% + \expandafter\expandafter\expandafter\usekomafont + \expandafter\expandafter\expandafter{% + \csname scr@fnt@instead@#1\endcsname}% + }% + }{% + \@nameuse{scr@fnt@#1}% + }% +} +\newcommand*{\usesizeofkomafont}[1]{% + \begingroup + \scr@prepareforkomafont + \sbox\@tempboxa{% + \usekomafont{#1}{% + \selectfont + \global\let\g@scr@f@size\f@size + \global\let\g@scr@f@baselineskip\f@baselineskip + \global\let\g@scr@f@linespread\f@linespread + }% + }% + \endgroup + \linespread{\g@scr@f@linespread}% + \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}% + \selectfont +} +\newcommand*{\usefamilyofkomafont}{\use@ofkomafont{family}} +\newcommand*{\useseriesofkomafont}{\use@ofkomafont{series}} +\newcommand*{\useshapeofkomafont}{\use@ofkomafont{shape}} +\newcommand*{\useencodingofkomafont}{\use@ofkomafont{encoding}} +\newcommand*{\usefontofkomafont}[1]{% + \begingroup + \scr@prepareforkomafont + \sbox\@tempboxa{% + \usekomafont{#1}{% + \selectfont + \global\let\g@scr@f@encoding\f@encoding + \global\let\g@scr@f@family\f@family + \global\let\g@scr@f@series\f@series + \global\let\g@scr@f@shape\f@shape + \global\let\g@scr@f@size\f@size + \global\let\g@scr@f@baselineskip\f@baselineskip + \global\let\g@scr@f@linespread\f@linespread + }% + }% + \endgroup + \linespread{\g@scr@f@linespread}% + \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}% + \usefont{\g@scr@f@encoding}{\g@scr@f@family}{\g@scr@f@series}{\g@scr@f@shape}% +}% +\newcommand*{\use@ofkomafont}[2]{% + \begingroup + \scr@prepareforkomafont + \sbox\@tempboxa{% + \usekomafont{#2}{% + \selectfont + \global\expandafter\let\csname g@scr@f@#1\expandafter\endcsname + \csname f@#1\endcsname + }% + }% + \endgroup + \@nameuse{font#1}{\csname g@scr@f@#1\endcsname}% + \selectfont +} +\newcommand*{\g@scr@f@encoding}{}\let\g@scr@f@encoding\f@encoding +\newcommand*{\g@scr@f@family}{}\let\g@scr@f@family\f@family +\newcommand*{\g@scr@f@series}{}\let\g@scr@f@series\f@series +\newcommand*{\g@scr@f@shape}{}\let\g@scr@f@shape\f@shape +\newcommand*{\g@scr@f@size}{}\let\g@scr@f@size\f@size +\newcommand*{\g@scr@f@baselineskip}{}\let\g@scr@f@baselineskip\f@baselineskip +\newcommand*{\g@scr@f@linespread}{}\let\g@scr@f@linespread\f@linespread +\newcommand*{\scr@komafontrelaxlist}{% + \do\normalcolor +} +\newcommand*{\scr@komafontgobblelist}{% + \do\color +} +\newcommand*{\scr@komafontonearglist}{% + \do\MakeUppercase \do\MakeLowercase +} +\newcommand*{\scr@prepareforkomafont}{% + \long\def\do##1{\let##1\relax}\scr@komafontrelaxlist + \long\def\do##1{\let##1\@gobble}\scr@komafontgobblelist + \long\def\do##1{\let##1\@firstofone}\scr@komafontonearglist +} +\newcommand*{\addtokomafontrelaxlist}[1]{% + \l@addto@macro\scr@komafontrelaxlist{\do#1}% +} +\newcommand*{\addtokomafontgobblelist}[1]{% + \l@addto@macro\scr@komafontgobblelist{\do#1}% +} +\newcommand*{\addtokomafontonearglist}[1]{% + \l@addto@macro\scr@komafontonearglist{\do#1}% +} +\newcommand*{\newkomafont}[3][\relax]{% + \scr@ifundefinedorrelax{scr@fnt@instead@#2}{}{% + \PackageWarning{scrkbase}{% + Making stand-alone element `#2' from\MessageBreak + alias to `\@nameuse{scr@fnt@instead@#2}' + }% + \expandafter\let\csname scr@fnt@instead@#2\endcsname\relax + }% + \expandafter\newcommand\expandafter*\csname @#2font\endcsname{#3}% + \expandafter\expandafter\expandafter\newcommand + \expandafter\expandafter\expandafter*% + \expandafter\csname scr@fnt@#2\expandafter\endcsname\expandafter{% + \csname @#2font\endcsname% + }% + \ifx\relax#1\relax\else + \expandafter\newcommand\expandafter*\csname scr@fnt@wrn@#2\endcsname[1]{#1}% + \fi +} +\newcommand*{\aliaskomafont}[2]{% + \scr@ifundefinedorrelax{scr@fnt@#1}{}{% + \PackageWarning{scrkbase}{% + Redefining stand alone element `#1' as\MessageBreak + alias to `#2'% + } + \expandafter\let\csname scr@fnt@#1\endcsname\relax + }% + \scr@ifundefinedorrelax{scr@fnt@wrn@#1}{}{% + \expandafter\let\csname scr@fnt@wrn@#1\encsname\relax + } + \expandafter\newcommand\expandafter*\csname scr@fnt@instead@#1\endcsname{% + #2% + }% +} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrkbase.sty'. diff --git a/texmf/tex/latex/koma-script/scrlayer-notecolumn.sty b/texmf/tex/latex/koma-script/scrlayer-notecolumn.sty new file mode 100644 index 000000000..b43fb9b45 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlayer-notecolumn.sty @@ -0,0 +1,1288 @@ +\expandafter\ifx\csname scrWMSG\endcsname\relax + \def\scrWMSG{\immediate\write17} +\fi +\scrWMSG{^^J% ++----------------------------------------------------------------------^^J% +| WARNING (`scrlayer-notecolumn.sty'):^^J%| ++----------------------------------------------------------------------^^J% +| YOU SHOULD NOTE, THAT THIS IS NOT AN OFFICIAL RELEASE!^^J%| +| THIS VERSION IS INTENDED TO BE USED FOR TESTING ONLY!^^J%| +| USAGE FOR PURPOSES OTHER THAN INTENDED IS DANGEROUS!^^J%| +| DON'T EXPECT ANY SUPPORT FOR THIS VERSION!^^J%| ++----------------------------------------------------------------------^^J% +} +%% +%% This is file `scrlayer-notecolumn.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlayer-notecolumn.dtx (with options: `interface,notecolumn,identify') +%% scrlayer.dtx (with options: `interface,notecolumn,init') +%% scrlayer-notecolumn.dtx (with options: `interface,notecolumn,init') +%% scrlayer.dtx (with options: `interface,notecolumn,options') +%% scrlayer-notecolumn.dtx (with options: `interface,notecolumn,options') +%% scrlayer.dtx (with options: `interface,notecolumn,body') +%% scrlayer-notecolumn.dtx (with options: `interface,notecolumn,body') +%% scrlayer-notecolumn.dtx (with options: `interface,notecolumn,final') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2013-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlayer-notecolumn.dtx 3915 2022-06-29 07:09:48Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{scrlayer-notecolumn}[% + 2022/06/29 v0.3.3915 KOMA-Script + package + (end user interface for scrlayer)] +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: init) +\RequirePackage{scrlayer} +\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{% + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% +}{% + \ifx\scrlayer@AtEndOfPackage\@firstofone + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% + \fi +} +\let\scrlayer@AtEndOfPackage\AtEndOfPackage +%%% From File: $Id: scrlayer-notecolumn.dtx 3915 2022-06-29 07:09:48Z kohm $ +%%% (run: init) +\@tempswatrue +\scr@ifundefinedorrelax{pdfsavepos}{% + \scr@ifundefinedorrelax{savepos}{% + \expandafter\@tempswafalse + }{% + \let\scr@savepos\savepos + }% +}{% + \let\scr@savepos\pdfsavepos +} +\scr@ifundefinedorrelax{pdflastypos}{% + \scr@ifundefinedorrelax{lastypos}{% + \expandafter\@tempswafalse + }{% + \let\scr@lastypos\lastypos + }% +}{% + \let\scr@lastypos\pdflastypos +}% +\if@tempswa\else + \PackageError{scrlayer-notecolumn}{missing pdfTeX/luaTeX features}{% + This package needs \string\pdfsavepos\space or \string\savepos\space + and\MessageBreak + \string\pdflastypos\space or \string\lastypos.\MessageBreak + This error is fatal, because usage of the package without these + features\MessageBreak + cannot work!\MessageBreak + You shouldn't continue, but if you'd try, I'll try to abort the LaTeX run + }% + \batchmode\csname @@end\endcsname\end +\fi +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: options) +\KOMA@key{markcase}{% + \begingroup + \KOMA@set@ncmdkey{markcase}{reserved@a}{% + {upper}{0},{lower}{1},{used}{2},% + {ignoreuppercase}{3},{nouppercase}{3},% + {ignoreupper}{3},{noupper}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifnum \reserved@a>\m@ne + \aftergroup\let\aftergroup\MakeMarkcase + \ifcase \reserved@a + \aftergroup\MakeUppercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\MakeLowercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\@firstofone + \aftergroup\scrlayer@forceignoreuppercasefalse + \else + \aftergroup\scrlayer@ignoreuppercase + \aftergroup\scrlayer@forceignoreuppercasetrue + \fi + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{markcase}% + \KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}% + \fi +} +\KOMA@key{autooneside}[true]{% + \KOMA@set@ifkey{autooneside}{scrlayer@autooneside}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}% +} +\KOMA@key{automark}[]{% + \scrlayer@testunexpectedarg{automark}{#1}% + \scrlayer@AtEndOfPackage{% + \if@chapter + \scr@ifundefinedorrelax{section}{% + \automark{chapter}% + }{% + \automark[section]{chapter}% + }% + \else + \scr@ifundefinedorrelax{section}{% + \automark{}% + }{% + \scr@ifundefinedorrelax{subsection}{% + \automark{section}% + }{% + \automark[subsection]{section}% + } + }% + \fi + }% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{automark}{}% +} +\KOMA@key{manualmark}[]{% + \scrlayer@testunexpectedarg{manualmark}{#1}% + \scrlayer@AtEndOfPackage{\manualmark}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{manualmark}{}% +} +\KOMA@key{onpsselect}{% + \l@addto@macro{\@ps@initialhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}% +} +\KOMA@key{onpsinit}{% + \l@addto@macro{\@ps@hook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}% +} +\KOMA@key{onpsoneside}{% + \l@addto@macro{\@ps@onesidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}% +} +\KOMA@key{onpstwoside}{% + \l@addto@macro{\@ps@twosidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}% +} +\KOMA@key{onpsoddpage}{% + \l@addto@macro{\@ps@oddpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}% +} +\KOMA@key{onpsevenpage}{% + \l@addto@macro{\@ps@evenpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}% +} +\KOMA@key{onpsfloatpage}{% + \l@addto@macro{\@ps@floatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}% +} +\KOMA@key{onpsnonfloatpage}{% + \l@addto@macro{\@ps@nonfloatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}% +} +\KOMA@key{onpsbackground}{% + \l@addto@macro{\@ps@backgroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}% +} +\KOMA@key{onpsforeground}{% + \l@addto@macro{\@ps@foregroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}% +} +\KOMA@ifkey{singlespacing}{@ps@singlespacing} +\KOMA@key{deactivatepagestylelayers}[true]{% + \KOMA@set@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{deactivatepagestylelayers} + {scrlayer@deactivate@layers}% +} +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{scrlayer@draft}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{draft}{scrlayer@draft}% +} +\KOMA@key{forceoverwrite}[true]{% + \KOMA@set@ifkey{forceoverwrite}{scrlayer@forceoverwrite}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{forceoverwrite}{scrlayer@forceoverwrite}% +} +\KOMA@key{autoremoveinterfaces}[true]{% + \scrlayer@report@deprecated{#1}{autoremoveinterface}% + \KOMA@set@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{autoremoveinterfaces} + {scrlayer@autoremoveinterfaces}% +} +%%% From File: $Id: scrlayer-notecolumn.dtx 3915 2022-06-29 07:09:48Z kohm $ +%%% (run: options) +\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns} +\slnc@autoclearnotecolumnstrue +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\KOMAProcessOptions\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @markcase\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autooneside\endcsname\relax +\expandafter\let\csname KV@KOMA.\@currname.\@currext @automark\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @automark@default\endcsname\relax +\expandafter\let\csname KV@KOMA.\@currname.\@currext @manualmark\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @manualmark@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsselect\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsselect@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsinit\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsinit@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoneside\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoneside@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpstwoside\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpstwoside@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoddpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoddpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsevenpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsevenpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsfloatpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsfloatpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsbackground\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsbackground@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsforeground\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsforeground@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers\endcsname + \relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers@default\endcsname + \relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @draft\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @draft@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @forceoverwrite\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @forceoverwrite@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces@default\endcsname + \relax +%%% From File: $Id: scrlayer-notecolumn.dtx 3915 2022-06-29 07:09:48Z kohm $ +%%% (run: body) +\newcommand*{\DeclareNoteColumn}[2][]{% + \@ifundefined{slnc@#2@box}{% + \expandafter\newsavebox\csname slnc@#2@box\endcsname + }{}% + \@ifundefined{slnc@#2@unprocessed}{% + \@namedef{slnc@#2@unprocessed}{}% + }{}% + \@ifundefined{slnc@#2@colorstack}{% + \scr@ifundefinedorrelax{pdfcolorstackinit}{% + \scr@ifundefinedorrelax{pdffeedback}{}{% + \expandafter\chardef\csname slnc@#2@colorstack\endcsname= + \pdffeedback colorstackinit direct {\slnc@initial@black}% + }% + }{% + \expandafter\chardef\csname slnc@#2@colorstack\endcsname= + \pdfcolorstackinit direct {\slnc@initial@black}% + }% + }{}% + \@ifundefined{scr@fnt@notecolumn.#2}{% + \@ifundefined{@notecolumn.#2font}{}{% + \PackageInfo{scrlayer-notecolumn}{using already defined + macro\MessageBreak + `\expandafter\string\csname @notecolumn.#2font\endcsname' for font + element\MessageBreak + `notecolumn.#2'% + }% + }% + \newkomafont{notecolumn.#2}{}% + }{% + \PackageInfo{scrlayer-notecolumn}{using already defined font + element\MessageBreak + `notecolumn.#2'% + }% + }% + \newcommand*{\slnc@name}{}% + \edef\slnc@name{#2}% + \FamilyExecuteOptions[.definenotecolumn]{KOMAarg}{marginpar,#1}% + \let\slnc@name\relax + \DeclareLayer[% + foreground,% + align=tl,% + voffset=1in+\topmargin+\headheight+\headsep,% + height=\dimexpr\textheight+\topskip\relax,% + hoffset=\csname slnc@#2@pos\endcsname,% + width=\csname slnc@#2@width\endcsname,% + contents=\slnc@processnotes{#2}% + ]{notecolumn.#2} + \IfLayerAtPageStyle{@everystyle@}{notecolumn.#2}{}{% + \AddLayersToPageStyle{@everystyle@}{notecolumn.#2}% + }% + \@cons\slnc@processnotecolumns{{#2}}% +} +\newcommand*{\slnc@initial@black}{0 g 0 G}% +\AfterPackage*{color}{% + \let\slnc@initial@black\current@color + \AtBeginDocument{\let\slnc@initial@black\default@color}% +}% +\AfterPackage*{xcolor}{% + \let\slnc@initial@black\current@color + \AtBeginDocument{\let\slnc@initial@black\default@color}% +}% +\newcommand*{\slnc@processnotecolumns}{}% +\newcommand*{\slnc@testforpagestylewarning}{% + \IfLayerPageStyleExists{\currentpagestyle}{}{% + \PackageWarning{scrlayer-notecolumn}{% + output of note columns delayed,\MessageBreak + because with `\currentpagestyle'\MessageBreak + a page style has been selected, that\MessageBreak + isn't a layer page style,% + }% + }% +}% +\AfterSelectAnyPageStyle{\slnc@testforpagestylewarning} +\DefineFamilyMember[.definenotecolumn]{KOMAarg} +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{position}{% + \@namedef{slnc@\slnc@name @pos}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{width}{% + \@namedef{slnc@\slnc@name @width}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{font}{% + \setkomafont{notecolumn.\slnc@name}{#1}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{marginpar}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{marginpar}{#1}% + \edef\reserved@a{\noexpand\slnc@defpos{\slnc@name}}\reserved@a + \@namedef{slnc@\slnc@name @width}{\marginparwidth}% +} +\newcommand*\slnc@defpos[1]{% + \@namedef{slnc@#1@pos}{% + \ifodd\value{page} + \if@reversemargin + \dimexpr \oddsidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \else + \dimexpr \oddsidemargin+1in + +\textwidth+\marginparsep\relax + \fi + \else + \if@twoside + \if@reversemargin + \dimexpr \evensidemargin+1in + +\textwidth+\marginparsep\relax + \else + \dimexpr \evensidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \fi + \else + \if@reversemargin + \dimexpr \oddsidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \else + \dimexpr \oddsidemargin+1in + +\textwidth+\marginparsep\relax + \fi + \fi + \fi + }% +}% +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{normalmarginpar}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{normalmarginpar}{#1}% + \edef\reserved@a{\noexpand\slnc@defnormalpos{\slnc@name}}\reserved@a + \@namedef{slnc@\slnc@name @width}{\marginparwidth}% +} +\newcommand*\slnc@defnormalpos[1]{% + \@namedef{slnc@#1@pos}{% + \ifodd\value{page} + \dimexpr \oddsidemargin+1in + +\textwidth+\marginparsep\relax + \else + \if@twoside + \dimexpr \evensidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \else + \dimexpr \oddsidemargin+1in + +\textwidth+\marginparsep\relax + \fi + \fi + }% +}% +\DefineFamilyKey[.definenotecolumn]{KOMAarg}{reversemarginpar}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{reversemarginpar}{#1}% + \edef\reserved@a{\noexpand\slnc@defreversepos{\slnc@name}}\reserved@a + \@namedef{slnc@\slnc@name @width}{\marginparwidth}% +} +\newcommand*\slnc@defreversepos[1]{% + \@namedef{slnc@#1@pos}{% + \ifodd\value{page} + \dimexpr \oddsidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \else + \if@twoside + \dimexpr \evensidemargin+1in + +\textwidth+\marginparsep\relax + \else + \dimexpr \oddsidemargin+1in + -\marginparsep-\csname slnc@#1@width\endcsname\relax + \fi + \fi + }% +}% +\newcommand*{\DeclareNewNoteColumn}[2][]{% + \scr@ifundefinedorrelax{slnc@#2@box}{}{% + \PackageError{scrlayer-notecolumn}{note column `#2' already defined}{% + You may declare only note columns, that haven't been declared + previously using\MessageBreak + \string\DeclareNewNoteColumn. See also the alternatives + \string\RedeclareNoteColumn,\MessageBreak + \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak + Nevertheless, if you'll continue, declaration will be done.% + }% + }% + \DeclareNoteColumn[{#1}]{#2}% +}% +\newcommand*{\ProvideNoteColumn}[2][]{% + \scr@ifundefinedorrelax{slnc@#2@box}{}{% + \PackageInfo{scrlayer-notecolumn}{\string\ProvideNoteColumn{#2} + ignored,\MessageBreak + because of already defined\MessageBreak + not column}% + }{% + \DeclareNoteColumn[{#1}]{#2}% + }% +}% +\newcommand*{\RedeclareNoteColumn}[2][]{% + \scr@ifundefinedorrelax{slnc@#2@box}{% + \PackageError{scrlayer-notecolumn}{note column `#2' undefined}{% + You may declare only note columns, that have been declared + previously using\MessageBreak + \string\RedeclareNoteColumn. See also the alternatives + \string\DeclareNewNoteColumn,\MessageBreak + \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak + Nevertheless, if you'll continue, declaration will be done.% + }% + }{}% + \DeclareNoteColumn[{#1}]{#2}% +}% +\newwrite\tf@slnc +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \noexpand\csname slnc@initwrite\noexpand\endcsname + }% + \fi +}% +\AtEndDocument{\let\slnc@initwrite\slnc@openwrite}% +\newcommand*{\slnc@initwrite}{}% +\newcommand*{\slnc@openwrite}{% + \immediate\closein\slnc@file + \immediate\openout\tf@slnc\jobname.slnc +} +\AfterReadingMainAux{% + \immediate\closeout\tf@slnc + \begingroup + \scr@ifundefinedorrelax{pdfmdfivesum}{% + \scr@ifundefinedorrelax{mdfivesum}{% + \ifdefined\directlua + \edef\reserved@a{\directlua{slnc.mdfivesum(slnc.slncfile)}}% + \else + \let\reserved@a\relax + \fi + }{% + \edef\reserved@a{\mdfivesum file {\jobname.slnc}}% + }% + }{% + \edef\reserved@a{\pdfmdfivesum file {\jobname.slnc}}% + }% + \ifx\reserved@a\relax + \PackageWarningNoLine{scrlayer-notecolumn}{% + \string\pdfmdfivesum\space unavailable.\MessageBreak + The package needs \string\pdfmdfivesum,\MessageBreak + \string\mdfivesum, or LuaTeX to test whether\MessageBreak + or not one more LaTeX run is needed to place the\MessageBreak + note columns correctly. If these are unavailable\MessageBreak + you have to do the decision without the help\MessageBreak + of the package% + }% + \else + \ifx \slnc@mdfivesum\reserved@a + \else + \aftergroup\@tempswatrue + \fi + \fi + \endgroup +} +\AfterPackage*{scrwfile}{% + \@ifundefined{scrwfile@never}{\def}{\g@addto@macro}% + \scrwfile@never{slnc}% +} +\newcommand*{\slnc@unexpanded}{} +\let\slnc@unexpanded\detokenize +\newcommand*{\makenote}{% + \kernel@ifstar{\let\slnc@unexpanded\detokenize\slnc@makenote}% + {\let\slnc@unexpanded\@firstofone\slnc@makenote}% +}% +\newcommand{\slnc@makenote}[2][marginpar]{% + \@bsphack + \scr@savepos + \addtocontents{slnc}{% + \string\slnc@note{#1}% + {\noexpand\number\value{slncpage}}% + {\noexpand\number\scr@lastypos}% + {\slnc@unexpanded{#2}}% + }% + \@esphack +}% +\@ifundefined{c@slncpage}{% + \newcounter{slncpage}% + \AddToLayerPageStyleOptions{@everystyle@}{% + onbackground=\stepcounter{slncpage}% + }% +}{} +\newcommand*{\slnc@processnotes}[1]{% + \begingroup + \slnc@readnotes{\value{slncpage}}% + \expandafter\let\expandafter\reserved@a + \csname slnc@#1@unprocessed\endcsname + \expandafter\global + \expandafter\let\csname slnc@#1@unprocessed\endcsname\@empty + \def\slnc@notesyncfonttest##1{% + \ifhmode + \PackageError{scrlayer-notecolumn}{% + illegal font setting for `notecolumn.##1'% + }{% + Current setting of font for `notecolumn.##1' switches + from\MessageBreak + vertical mode to horizontal mode. This is + illegal!\MessageBreak + You have to change the font setting to fix + this.\MessageBreak + If you'll continue vertical alignment of notes may fail% + }% + \par\vskip-\dimexpr \baselineskip+\parskip\relax + \fi + }% + \long\def\slnc@note##1##2##3##4{% + \ifnum ##2>\value{slncpage}\relax + \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{% + \slnc@note{##1}{##2}{##3}{##4}% + }% + \else + \ifnum ##2<\value{slncpage}\relax + \PackageWarning{scrlayer-notecolumn}{note of type `#1' delayed}% + \fi + \boxmaxdepth\maxdepth + \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{% + \expandafter\hsize\csname slnc@#1@width\endcsname + \normalfont\normalsize + \slnc@switchcolorstack{#1}% + {% + \usekomafont{notecolumn.#1}{% + \slnc@notesyncfonttest{#1}% + \expandafter\ifvoid\csname slnc@#1@box\endcsname + \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{% + \kern\dimexpr\topskip-\baselineskip\relax + }% + \fi + \scr@ifundefinedorrelax{pdfpageheight}{% + \scr@ifundefinedorrelax{pageheight}{% + \@tempdima=\paperheight + }{% + \@tempdima=\pageheight + }% + }{% + \@tempdima=\pdfpageheight + }% + \@tempdima=\dimexpr \@tempdima-##3sp + -1in-\topmargin + -\headheight-\headsep + -\baselineskip + \relax + \@tempdimb=\dimexpr \expandafter\ht\csname slnc@#1@box\endcsname + +\expandafter\dp\csname slnc@#1@box\endcsname + \relax + \ifdim\@tempdima<\@tempdimb + \else + \ifdim\@tempdima>\@tempdimb + \expandafter\setbox\csname slnc@#1@box\endcsname + \vbox {% + \expandafter\unvbox\csname slnc@#1@box\endcsname + \kern\dimexpr\@tempdima-\@tempdimb\relax + }% + \fi + \fi + \expandafter\ifvoid\expandafter\csname slnc@#1@box\endcsname + \else + \@tempdima\dimexpr + \dp\strutbox + -\dp\csname slnc@#1@box\endcsname + \relax + \expandafter\unvbox\csname slnc@#1@box\endcsname + \ifdim\@tempdima>\z@ \kern\@tempdima\fi + \fi + \slnc@restoreinnote + \strut\ignorespaces ##4\par + }% + }% + }% + \fi + }% + \def\slnc@sync##1##2##3##4{% + \ifnum ##2>\value{slncpage}\relax + \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{% + \slnc@sync{##1}{##2}{##3}{}% + }% + \else + \if@filesw + \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{% + \expandafter\unvbox\csname slnc@#1@box\endcsname + \scr@savepos + \protected@write\@auxout{}{% + \string\newlabel{notecolumn.##1.##3.syncnote.label}{% + {% + \noexpand\number\scr@lastypos + }{\thepage}% + }% + }% + }% + \fi + \fi + }% + \reserved@a + \expandafter\ifvoid\csname slnc@#1@box\endcsname + \else + \ifdim \dimexpr \expandafter\ht\csname slnc@#1@box\endcsname + +\expandafter\dp\csname slnc@#1@box\endcsname + \relax >\textheight\relax + \splittopskip\topskip + \splitmaxdepth\baselineskip + \usekomafont{notecolumn.#1}{% + \expandafter\vsplit\csname slnc@#1@box\endcsname to + \textheight\relax + }% + \expandafter\ifvoid\csname slnc@#1@box\endcsname + \else + \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{% + \slnc@switchcolorstack{#1}% + \expandafter\unvbox\csname slnc@#1@box\endcsname + }% + \fi + \else + \usekomafont{notecolumn.#1}{% + \slnc@switchcolorstack{#1}% + \expandafter\box\csname slnc@#1@box\endcsname% + }% + \fi + \fi + \expandafter\global + \expandafter\setbox\csname slnc@#1@box\expandafter\endcsname + \expandafter\box\csname slnc@#1@box\endcsname + \endgroup +} +\newcommand*{\slnc@switchcolorstack}[1]{% + \scr@ifundefinedorrelax{slnc@#1@colorstack}{% + \def\set@color{% + \PackageWarningNoLine{scrlayer-notecolumn}{% + unsupported change of color!\MessageBreak + It seems you are using a TeX engine,\MessageBreak + that does not support switching the\MessageBreak + color stack like pdfTeX or luaTeX do.\MessageBreak + Because of this, usage of \string\color,\MessageBreak + \string\textcolor\space etc. inside a note + column\MessageBreak + is not supported% + }% + }% + }{% + \scr@ifundefinedorrelax{@pdfcolorstack}{% + }{% + \expandafter\let\expandafter\@pdfcolorstack + \csname slnc@#1@colorstack\endcsname + }% + \scr@ifundefinedorrelax{pdfcolorstack}{% + \scr@ifundefinedorrelax{pdfextension}{% + \PackageError{scrlayer-notecolumm}{% + color stack defined but not usable% + }{% + \expandafter\string + \csname slnc@#1@colorstack\endcsname\space defined + \MessageBreak + but neither \string\pdfcolorstack\space nor + \string\pdfextension.\MessageBreak + This should never happen!% + }% + }{% + \pdfextension colorstack + \csname slnc@#1@colorstack\endcsname current\relax + }% + }{% + \pdfcolorstack + \csname slnc@#1@colorstack\endcsname current\relax + }% + }% +}% +\newcommand*{\slnc@restoreinnote}{} +\let\slnc@restoreinnote\@empty +\newcommand*\restoreinnote[1]{% + \AtBeginDocument{% + \expandafter\newcommand\expandafter*\csname slnc\string#1\endcsname{}% + \expandafter\let\csname slnc\string#1\endcsname#1% + \g@addto@macro\slnc@restoreinnote{% + \expandafter\let\expandafter#1\csname slnc\string#1\endcsname + }% + }% +} +\@onlypreamble\restoreinnote +\restoreinnote\label +\restoreinnote\index +\restoreinnote\glossary +\newcommand*{\slnc@catcodes}{}% +\AtBeginDocument{% + \begingroup + \def\do#1{% + \protected@xdef\slnc@catcodes{\slnc@catcodes + \catcode`\protect#1=\the\catcode`#1\relax + }% + }% + \dospecials + \let\protect\noexpand + \xdef\slnc@catcodes{\slnc@catcodes\catcode`\protect\@=11\relax}% + \endgroup +} +\newcommand*\slnc@readnotes[1]{% + \ifeof\slnc@file\else + \ifnum \number #1<\slnc@unprocessed\relax + \@tempswafalse + \else + \@tempswatrue + \fi + \@whilesw\if@tempswa\fi{% + \begingroup + \slnc@catcodes + \endlinechar\m@ne + \read\slnc@file to\reserved@a + \edef\reserved@a{% + \endgroup + \noexpand\def\noexpand\reserved@a{% + \unexpanded\expandafter{\reserved@a}% + }% + }% + \reserved@a + \expandafter\slnc@iofv\expandafter\reserved@b\reserved@a + \@empty\@empty\@empty\@empty\@empty + \@tempswafalse + \@for\reserved@c :={\slnc@note },{\slnc@sync }\do{% + \ifx\reserved@b\reserved@c \@tempswatrue\fi + }% + \if@tempswa + \@tempswafalse + \expandafter\slnc@iiiofv\expandafter\reserved@b\reserved@a + \@empty\@empty\@empty\@empty\@empty + \ifx\reserved@b\@empty + \PackageError{scrlayer-notecolumn}{internal syntax error}{% + Unexpected syntax of file `\jobname.slnc'.\MessageBreak + Second argument should be a number.\MessageBreak + I don't know what to do with\MessageBreak + \expandafter\detokenize\expandafter{\reserved@a}% + }% + \@tempswatrue + \else + \global\let\slnc@unprocessed\reserved@b + \expandafter\slnc@iiofv\expandafter\reserved@b\reserved@a + \@empty\@empty\@empty\@empty\@empty + \@ifundefined{slnc@\reserved@b @unprocessed}{% + \PackageWarning{scrlayer-notecolumn}{% + column `\reserved@b' undefined.\MessageBreak + You should declare the column before the usage.\MessageBreak + Notes will be lost% + }% + }{% + \expandafter\g@addto@macro + \csname slnc@\reserved@b @unprocessed\expandafter\endcsname + \expandafter{% + \reserved@a + }% + }% + \ifnum \number #1<\slnc@unprocessed\relax + \@tempswafalse + \else + \@tempswatrue + \fi + \fi + \else + \@tempswatrue + \fi + \ifeof\slnc@file\@tempswafalse\fi + }% + \fi +}% +\newcommand\slnc@iofv[6]{\def#1{#2}}% +\newcommand\slnc@iiofv[6]{\def#1{#3}}% +\newcommand\slnc@iiiofv[6]{\def#1{#4}}% +\newcommand*{\slnc@unprocessed}{0}% +\newcommand*{\slnc@mdfivesum}{} +\let\slnc@mdfivesum\@empty +\scr@ifundefinedorrelax{pdfmdfivesum}{% + \scr@ifundefinedorrelax{mdfivesum}{% + \ifdefined\directlua + \directlua{% + slnc = slnc or {} + function slnc.mdfivesum(filename) + local fh = io.open(filename,"rb") + if fh then + local sum=md5.sumhexa(fh:read("*a")) + tex.sprint(sum) + fh:close() + end + end + if (string.sub(tex.jobname,1,1) == '"') + and (string.sub(tex.jobname,string.len(tex.jobname),-1) == '"') + then + slnc.slncfile = string.sub(tex.jobname,2,-2) + else + slnc.slncfile = tex.jobname + end + slnc.slncfile = slnc.slncfile .. '.slnc' + }% + \xdef\slnc@mdfivesum{\directlua{slnc.mdfivesum(slnc.slncfile)}}% + \fi + }{% + \xdef\slnc@mdfivesum{\mdfivesum file {\jobname.slnc}}% + }% +}{% + \xdef\slnc@mdfivesum{\pdfmdfivesum file {\jobname.slnc}}% +}% +\newread\slnc@file +\immediate\openin\slnc@file \jobname.slnc +\newcounter{slnc@clearnote@label}% +\newcommand*\clearnotecolumn[1][marginpar]{% + \begingroup + \slnc@autoclearnotecolumnsfalse + \stepcounter{slnc@clearnote@label}% + \if@filesw + \protected@write\@auxout{% + \let\theslncpage\relax + \let\slnc@voidtest\relax + }{% + \string\newlabel{notecolumn.\theslnc@clearnote@label}% + {{\theslncpage}{\slnc@voidtest{#1}}}% + }% + \fi + \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{% + \PackageInfo{scrlayer-notecolumn}{% + Using estimated to low value for clearing\MessageBreak + note colum `#1'% + } + \edef\slnc@cmp@value{\the\value{slncpage}}% + \let\reserved@a\z@ + }{% + \edef\reserved@a{% + \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty + }% + \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}% + \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}% + }% + \ifvmode\ifdim \pagetotal<\topskip + \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}% + \fi\fi + \ifnum \reserved@a=\z@ + \ifvmode + \ifdim \pagetotal<\topskip + \else + \slnc@readnotes{\slnc@cmp@value}% + \fi + \else + \slnc@readnotes{\slnc@cmp@value}% + \fi + \begingroup + \aftergroup\@tempswafalse + \long\def\slnc@note##1##2##3##4{% + \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi + }% + \let\slnc@sync\slnc@note + \csname slnc@#1@unprocessed\endcsname + \endgroup + \else + \PackageInfo{scrlayer-notecolumn}{% + box of note column `#1'\MessageBreak + not empty after page of \string\clearnotecolumn}% + \@tempswatrue + \fi + \if@tempswa + \IfLayerPageStyleExists{\currentpagestyle}{}{% + \PackageWarning{scrlayer-notecolumn}{% + \string\clearnotecolumn\space while active non-layer page + style.\MessageBreak + Activate empty page style until note column\MessageBreak + has been cleared% + }% + \pagestyle{empty}% + }% + \@tempswatrue + \fi + \@whilesw\if@tempswa\fi{% + \clearpage + \expandafter\ifcase \slnc@voidtest{#1}% + \begingroup + \aftergroup\@tempswafalse + \long\def\slnc@note##1##2##3##4{% + \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi + }% + \let\slnc@sync\slnc@note + \csname slnc@#1@unprocessed\endcsname + \endgroup + \else + \@tempswatrue + \fi + \if@tempswa + \null + \fi + }% + \endgroup +} +\newcommand*{\slnc@firstof}{} +\def\slnc@firstof#1#2\@nil{#1}% +\newcommand*{\slnc@secondof}{} +\def\slnc@secondof#1#2#3\@nil{#2}% +\newcommand*{\slnc@voidtest}[1]{% + \expandafter\ifvoid \csname slnc@#1@box\endcsname \z@\else \@ne\fi +} +\newcommand*\clearnotecolumns[1][\relax]{% + \begingroup + \slnc@autoclearnotecolumnsfalse + \ifx\relax#1\relax\else + \let\slnc@processnotecolumns\@empty + \edef\reserved@a{#1}% + \@for\reserved@a:=\reserved@a\do {% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns + \expandafter{\expandafter\@elt\expandafter{\reserved@a}}% + \fi + }% + \fi + \stepcounter{slnc@clearnote@label}% + \if@filesw + \begingroup + \def\@elt##1{+\slnc@voidtest{##1}}% + \protected@write\@auxout{% + \let\theslncpage\relax + \let\slnc@voidtest\relax + }{% + \string\newlabel{notecolumn.\theslnc@clearnote@label}% + {{\theslncpage}{\numexpr \slnc@processnotecolumns\relax}}% + }% + \endgroup + \fi + \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{% + \begingroup + \def\@elt##1{, `##1'}% + \PackageInfo{scrlayer-notecolumn}{% + Using estimated to low value for\MessageBreak + clearing note colums\MessageBreak + \expandafter\@gobble\slnc@processnotecolumns + }% + \endgroup + \edef\slnc@cmp@value{\the\value{slncpage}}% + \let\reserved@a\z@ + }{% + \edef\reserved@a{% + \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty + }% + \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}% + \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}% + }% + \ifvmode\ifdim \pagetotal<\topskip + \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}% + \fi\fi + \ifnum \reserved@a=\z@ + \ifvmode + \ifdim \pagetotal<\topskip + \else + \slnc@readnotes{\slnc@cmp@value}% + \fi + \else + \slnc@readnotes{\slnc@cmp@value}% + \fi + \begingroup + \aftergroup\@tempswafalse + \long\def\slnc@note##1##2##3##4{% + \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi + }% + \let\slnc@sync\slnc@note + \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}% + \slnc@processnotecolumns + \endgroup + \else + \PackageInfo{scrlayer-notecolumn}{% + box of at least one note column\MessageBreak + not empty after page of \string\clearnotecolumns}% + \@tempswatrue + \fi + \if@tempswa + \IfLayerPageStyleExists{\currentpagestyle}{}{% + \PackageWarning{scrlayer-notecolumn}{% + \string\clearnotecolumns\space while active non-layer page + style.\MessageBreak + Activate empty page style until note column\MessageBreak + has been cleared% + }% + \pagestyle{empty}% + }% + \@tempswatrue + \fi + \@whilesw\if@tempswa\fi{% + \clearpage + \begingroup + \def\@elt##1{+\slnc@voidtest{##1}}% + \ifcase \numexpr \slnc@processnotecolumns\relax + \aftergroup\@tempswafalse + \long\def\slnc@note##1##2##3##4{% + \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi + }% + \let\slnc@sync\slnc@note + \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}% + \slnc@processnotecolumns + \else + \aftergroup\@tempswatrue + \fi + \endgroup + \if@tempswa + \null + \fi + }% + \endgroup +} +\newcounter{slnc@syncpoint}% +\newcommand*{\syncwithnotecolumn}[1][marginpar]{% + \begingroup + \edef\reserved@a{\endgroup\noexpand\syncwithnotecolumns[{#1}]}% + \reserved@a +} +\newcommand*{\syncwithnotecolumns}[1][\relax]{% + \begingroup + \ifx\relax#1\relax\else + \let\slnc@processnotecolumns\@empty + \edef\reserved@a{#1}% + \@for\reserved@a:=\reserved@a\do {% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns + \expandafter{\expandafter\@elt\expandafter{\reserved@a}}% + \fi + }% + \fi + \stepcounter{slnc@syncpoint}% + \def\@elt##1{% + \addtocontents{slnc}{% + \string\slnc@sync{##1}% + {\noexpand\number\value{slncpage}}% + {\theslnc@syncpoint}% + {}% + }% + }% + \slnc@processnotecolumns + \ifvmode + \let\slnc@voffset\@empty% + \expandafter\@firstofone + \else + \PackageWarning{scrlayer-notecolumn}{% + \string\syncwithnotecolumn\space in hmode.\MessageBreak + Using \string\syncwithnotecolumn\space in horizontal\MessageBreak + mode may result in unwanted vertical\MessageBreak + space inside paragraphs and may lost\MessageBreak + colors of text of notes. \space So perhaps you\MessageBreak + should move \string\syncwithnotecolumn\space before\MessageBreak + or after the paragraph% + }% + \let\slnc@voffset\@empty%\def\slnc@voffset{-\number\baselineskip}% + \expandafter\slnc@vadjust + \fi + {% + \if@filesw + \scr@savepos + \protected@write\@auxout{}{% + \string\newlabel{notecolumn.\theslnc@syncpoint.synctext.label}{% + {% + \noexpand\number + \numexpr \scr@lastypos\slnc@voffset\relax + }{\thepage}% + }% + }% + \fi + \@ifundefined{r@notecolumn.\theslnc@syncpoint.synctext.label}{% + \PackageInfo{scrlayer-notecolumn}{% + No text label for \string\syncwithnotecolumn.\MessageBreak + Need rerun to sync position}% + }{% + \edef\reserved@a{% + \@nameuse{r@notecolumn.\theslnc@syncpoint.synctext.label}% + \@empty\@empty + }% + \edef\slnc@textpos{\expandafter\slnc@firstof\reserved@a\@nil}% + \edef\slnc@textpage{\expandafter\slnc@secondof\reserved@a\@nil}% + \let\slnc@notepos\slnc@textpos + \let\slnc@notepage\slnc@textpage + \def\@elt##1{% + \@ifundefined{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}{% + \PackageInfo{scrlayer-notecolumn}{% + No note label for sync with note column\MessageBreak + `##1'.\MessageBreak + Need rerun to sync position}% + \G@refundefinedtrue + }{% + \edef\reserved@a{% + \@nameuse{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}% + \@empty\@empty + }% + \edef\reserved@b{\expandafter\slnc@firstof\reserved@a\@nil}% + \edef\reserved@c{\expandafter\slnc@secondof\reserved@a\@nil}% + \ifnum \slnc@notepage<\reserved@c\relax + \let\slnc@notepos=\reserved@b + \let\slnc@notepage=\reserved@c + \else + \ifnum \slnc@notepage=\reserved@c\relax + \ifnum \slnc@notepos>\reserved@b + \let\slnc@notepos=\reserved@b + \let\slnc@notepage=\reserved@c + \fi + \fi + \fi + }% + }% + \slnc@processnotecolumns + \ifnum\slnc@textpage>\slnc@notepage\relax + \PackageInfo{scrlayer-notecolumn}{% + Last note page before last text page.\MessageBreak + Need rerun to sync position}% + \else + \ifnum\slnc@textpage<\slnc@notepage\relax + \@whilenum \slnc@textpage<\slnc@notepage\do {% + \newpage\null\vskip-\dimexpr \baselineskip+\parskip\relax + \edef\slnc@textpage{\the\numexpr\slnc@textpage+1\relax}% + }% + \scr@ifundefinedorrelax{pdfpageheight}{% + \scr@ifundefinedorrelax{pageheight}{% + \@tempdima=\paperheight + }{% + \@tempdima=\pageheight + }% + }{% + \@tempdima=\pdfpageheight + }% + \@tempdima=\dimexpr \@tempdima + -\topmargin-1in + -\headheight-\headsep + -\topskip+\baselineskip + \relax + \edef\slnc@textpos{\number\@tempdima}% + \fi + \ifnum\slnc@notepos>\slnc@textpos\relax + \PackageInfo{scrlayer-notecolumn}{% + Last note position before last text\MessageBreak + position.\MessageBreak + Need rerun to sync position% + }% + \else + \ifnum\slnc@notepos<\slnc@textpos\relax + \@tempdima=\numexpr \slnc@textpos-\slnc@notepos\relax sp + \PackageInfo{scrlayer-notecolumn}{% + skipping \the\@tempdima\space to sync% + }% + \vskip\@tempdima + \fi + \fi + \fi + }% + }% + \endgroup +} +\newcommand{\slnc@vadjust}[1]{% + \@bsphack + \vadjust{#1}% + \@esphack +} +%%% From File: $Id: scrlayer-notecolumn.dtx 3915 2022-06-29 07:09:48Z kohm $ +%%% (run: final) +\DeclareNoteColumn{marginpar} +\let\reserved@a\clearpage +\def\clearpage{% + \ifslnc@autoclearnotecolumns\clearnotecolumns\relax\fi +}% +\expandafter\g@addto@macro\expandafter\clearpage\expandafter{\reserved@a} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlayer-notecolumn.sty'. diff --git a/texmf/tex/latex/koma-script/scrlayer-scrpage.sty b/texmf/tex/latex/koma-script/scrlayer-scrpage.sty new file mode 100644 index 000000000..5ecf5d75a --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlayer-scrpage.sty @@ -0,0 +1,1660 @@ +%% +%% This is file `scrlayer-scrpage.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlayer-scrpage.dtx (with options: `interface,scrpage,identify') +%% scrlayer.dtx (with options: `interface,scrpage,init') +%% scrlayer-scrpage.dtx (with options: `interface,scrpage,init') +%% scrlayer.dtx (with options: `interface,scrpage,options') +%% scrlayer-scrpage.dtx (with options: `interface,scrpage,options') +%% scrlayer.dtx (with options: `interface,scrpage,body') +%% scrlayer-scrpage.dtx (with options: `interface,scrpage,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2012-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlayer-scrpage.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{scrlayer-scrpage}[% + 2022/07/04 v3.37 KOMA-Script + package + (end user interface for scrlayer)] +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: init) +\RequirePackage{scrlayer} +\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{% + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% +}{% + \ifx\scrlayer@AtEndOfPackage\@firstofone + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% + \fi +} +\let\scrlayer@AtEndOfPackage\AtEndOfPackage +%%% From File: $Id: scrlayer-scrpage.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +\AtEndOfPackage{% + \sls@auto@pagestyleset% +} +\newcommand*{\sls@auto@pagestyleset}{% + \scr@ifundefinedorrelax{KOMAClassName}{% + \FamilyExecuteOptions[.scrlayer-scrpage.sty]{KOMA}{pagestyleset=standard}% + }{% + \FamilyExecuteOptions[.scrlayer-scrpage.sty]{KOMA}% + {pagestyleset=KOMA-Script}% + }% +} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: options) +\KOMA@key{markcase}{% +\scrlayer@AtEndOfPackage{% + \begingroup + \KOMA@set@ncmdkey{markcase}{reserved@a}{% + {upper}{0},{lower}{1},{used}{2},% + {ignoreuppercase}{3},{nouppercase}{3},% + {ignoreupper}{3},{noupper}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifnum \reserved@a>\m@ne + \aftergroup\let\aftergroup\MakeMarkcase + \ifcase \reserved@a + \aftergroup\MakeUppercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\MakeLowercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\@firstofone + \aftergroup\scrlayer@forceignoreuppercasefalse + \else + \aftergroup\scrlayer@ignoreuppercase + \aftergroup\scrlayer@forceignoreuppercasetrue + \fi + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{markcase}% + \KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}% + \fi +}% +} +\KOMA@key{autooneside}[true]{% + \KOMA@set@ifkey{autooneside}{scrlayer@autooneside}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}% +} +\KOMA@key{automark}[]{% + \scrlayer@testunexpectedarg{automark}{#1}% + \scrlayer@AtEndOfPackage{% + \if@chapter + \scr@ifundefinedorrelax{section}{% + \automark{chapter}% + }{% + \automark[section]{chapter}% + }% + \else + \scr@ifundefinedorrelax{section}{% + \automark{}% + }{% + \scr@ifundefinedorrelax{subsection}{% + \automark{section}% + }{% + \automark[subsection]{section}% + } + }% + \fi + }% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{automark}{}% +} +\KOMA@key{manualmark}[]{% + \scrlayer@testunexpectedarg{manualmark}{#1}% + \scrlayer@AtEndOfPackage{\manualmark}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{manualmark}{}% +} +\KOMA@key{onpsselect}{% + \l@addto@macro{\@ps@initialhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}% +} +\KOMA@key{onpsinit}{% + \l@addto@macro{\@ps@hook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}% +} +\KOMA@key{onpsoneside}{% + \l@addto@macro{\@ps@onesidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}% +} +\KOMA@key{onpstwoside}{% + \l@addto@macro{\@ps@twosidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}% +} +\KOMA@key{onpsoddpage}{% + \l@addto@macro{\@ps@oddpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}% +} +\KOMA@key{onpsevenpage}{% + \l@addto@macro{\@ps@evenpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}% +} +\KOMA@key{onpsfloatpage}{% + \l@addto@macro{\@ps@floatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}% +} +\KOMA@key{onpsnonfloatpage}{% + \l@addto@macro{\@ps@nonfloatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}% +} +\KOMA@key{onpsbackground}{% + \l@addto@macro{\@ps@backgroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}% +} +\KOMA@key{onpsforeground}{% + \l@addto@macro{\@ps@foregroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}% +} +\KOMA@ifkey{singlespacing}{@ps@singlespacing} +\KOMA@key{deactivatepagestylelayers}[true]{% + \KOMA@set@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{deactivatepagestylelayers} + {scrlayer@deactivate@layers}% +} +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{scrlayer@draft}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{draft}{scrlayer@draft}% +} +\KOMA@key{forceoverwrite}[true]{% + \KOMA@set@ifkey{forceoverwrite}{scrlayer@forceoverwrite}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{forceoverwrite}{scrlayer@forceoverwrite}% +} +\KOMA@key{autoremoveinterfaces}[true]{% + \scrlayer@report@deprecated{#1}{autoremoveinterface}% + \KOMA@set@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}{#1}% + \KOMA@kav@replacebool{.scrlayer.sty}{autoremoveinterfaces} + {scrlayer@autoremoveinterfaces}% +} +%%% From File: $Id: scrlayer-scrpage.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\KOMA@key{headwidth}{% + \begingroup + \sls@split@at@iicolons#1:::\@nil + \ifx\reserved@a\@empty \let\reserved@a\sls@headwidth\fi + \edef\reserved@a{% + \noexpand\endgroup + \noexpand\sls@set@hf@width{head}{\reserved@b}{\reserved@c}{\reserved@a}% + \noexpand\FamilyKeyStateProcessed + \noexpand\KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{headwidth}{% + \reserved@a:\reserved@b:\reserved@c + }% + }% + \reserved@a +} +\KOMA@key{footwidth}{% + \begingroup + \sls@split@at@iicolons#1:::\@nil + \ifx\reserved@a\@empty \let\reserved@a\sls@footwidth\fi + \edef\reserved@a{% + \noexpand\endgroup + \noexpand\sls@set@hf@width{foot}{\reserved@b}{\reserved@c}{\reserved@a}% + \noexpand\FamilyKeyStateProcessed + \noexpand\KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{footwidth}{% + \reserved@a:\reserved@b:\reserved@c + }% + }% + \reserved@a +} +\newcommand\sls@split@at@iicolons{} +\def\sls@split@at@iicolons#1:#2:#3:#4\@nil{% + \Ifstr{#4}{}{}{% + \Ifstr{#4}{:}{}{% + \Ifstr{#4}{::}{}{% + \PackageWarning{scrlayer}{extra `:' found!\MessageBreak + You've used more than two colons at the argument\MessageBreak + of a two value option.\MessageBreak + The extra value(s) will be ignored% + }% + }% + }% + }% + \def\reserved@a{#1}% + \def\reserved@b{#2}% + \def\reserved@c{#3}% +}% +\newcommand*{\sls@set@hf@width}[4]{% + \sls@settowidthof{\@tempdima}{#4}% + \ifdim\@tempdima>\paperwidth + \PackageWarning + {scrlayer-scrpage}% + {You've set width of #1 to a value\MessageBreak + greater than width of page!\MessageBreak% + I'll reduce width of #1 to width of page}% + \setlength{\@tempdima}{\paperwidth}% + \else + \ifdim\@tempdima<\z@ + \PackageWarning + {scrlayer-scrpage}% + {You've set width of #1 to negative value!\MessageBreak% + I'll set it to 0pt}% + \setlength{\@tempdima}{\z@}% + \fi + \fi + \expandafter\edef\csname sls@#1width\endcsname{\the\@tempdima}% + \setlength{\@tempdima}{\textwidth}% + \addtolength{\@tempdima}{-\csname sls@#1width\endcsname}% + \Ifstr{#2}{}{% + \ifdim \csname sls@#1width\endcsname + = \dimexpr \textwidth+\marginparwidth+\marginparsep\relax + \setlength{\@tempdimb}{\z@} + \else + \if@twoside + \setlength{\@tempdimb}{.3333333333\@tempdima}% + \else + \setlength{\@tempdimb}{.5\@tempdima}% + \fi + \fi + }{% + \sls@settowidthof{\@tempdimb}{#2}% + }% + \Ifstr{#3}{}{% + \addtolength{\@tempdima}{-\@tempdimb}% + }{% + \sls@settowidthof{\@tempdima}{#3}% + \setlength{\@tempdima}{-\@tempdima}% + }% + \ifdim\@tempdimb<\z@ + \setlength{\@tempdimb}{-\@tempdimb}% + \expandafter\edef\csname sls@odd#1shift\endcsname{-\the\@tempdimb}% + \else + \expandafter\edef\csname sls@odd#1shift\endcsname{\the\@tempdimb}% + \fi + \ifdim\@tempdima<\z@ + \setlength{\@tempdima}{-\@tempdima}% + \expandafter\edef\csname sls@even#1shift\endcsname{-\the\@tempdima}% + \else + \expandafter\edef\csname sls@even#1shift\endcsname{\the\@tempdima}% + \fi +}% +\scr@ifundefinedorrelax{@headwidth}{% + \newcommand*{\sls@headwidth}{\textwidth}% + \KOMA@kav@add{.scrlayer-scrpage.sty}{headwidth}{\textwidth:0pt:0pt}% +}{% + \newcommand*{\sls@headwidth}{\@headwidth}% + \KOMA@kav@xadd{.scrlayer-scrpage.sty}{headwidth}{\@headwidth:0pt:0pt}% +}% +\newcommand*{\sls@oddheadshift}{0pt} +\newcommand*{\sls@evenheadshift}{0pt} +\scr@ifundefinedorrelax{@footwidth}{% + \newcommand*{\sls@footwidth}{\textwidth}% + \KOMA@kav@add{.scrlayer-scrpage.sty}{footwidth}{\textwidth:0pt:0pt} +}{% + \newcommand*{\sls@footwidth}{\@footwidth}% + \KOMA@kav@xadd{.scrlayer-scrpage.sty}{footwidth}{\@footwidth:0pt:0pt} +}% +\newcommand*{\sls@oddfootshift}{0pt} +\newcommand*{\sls@evenfootshift}{0pt} +\newcommand*{\sls@settowidthof}[2]{% + \Ifstr{#2}{paper}{% + \setlength{#1}{\paperwidth}% + }{% + \Ifstr{#2}{text}{% + \setlength{#1}{\textwidth}% + }{% + \Ifstr{#2}{marginpar}{% + \setlength{#1}{\dimexpr \marginparwidth+\marginparsep\relax}% + }{% + \Ifstr{#2}{textwithmarginpar}{% + \setlength{#1}{\dimexpr\textwidth + +\marginparwidth + +\marginparsep\relax}% + }{% + \Ifstr{#2}{head}{% + \setlength{#1}{\sls@headwidth}% + }{% + \Ifstr{#2}{foot}{% + \setlength{#1}{\sls@footwidth}% + }{% + \Ifstr{#2}{headtopline}{% + \setlength{#1}{\sls@headabove@linelength}% + }{% + \Ifstr{#2}{headsepline}{% + \setlength{#1}{\sls@headbelow@linelength}% + }{% + \Ifstr{#2}{footsepline}{% + \setlength{#1}{\sls@footabove@linelength}% + }{% + \Ifstr{#2}{footbotline}{% + \setlength{#1}{\sls@footbelow@linelength}% + }{% + \Ifstr{#2}{page}{% + \setlength{#1}{\paperwidth}% + \begingroup + \expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ta@bcor\endcsname\relax\else + \addtolength{#1}{-\ta@bcor}% + \fi + }{% + \setlength{#1}{\dimexpr #2\relax}% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +}% +\newcommand*{\sls@deftowidthof}[2]{% + \Ifstr{#2}{autohead}{% + \expandafter\def\csname #1\endcsname{\sls@headwidth}% + }{% + \Ifstr{#2}{autofoot}{% + \expandafter\def\csname #1\endcsname{\sls@footwidth}% + }{% + \sls@settowidthof{\@tempdima}{#2}% + \expandafter\edef\csname #1\endcsname{\the\@tempdima}% + }% + }% +}% +\KOMA@key{headtopline}[:]{% + \sls@set@values[headtopline]{head}{above}{#1}% +} +\KOMA@key{headsepline}[:]{% + \sls@set@values[headsepline]{head}{below}{#1}% +} +\KOMA@key{footsepline}[:]{% + \sls@set@values[footsepline]{foot}{above}{#1}% +} +\KOMA@key{footbotline}[:]{% + \sls@set@values[footbotline]{foot}{below}{#1}% +} +\newcommand*{\sls@set@values}[4][]{% + \begingroup + \Ifstr{#1}{}{% + \FamilyKeyStateUnknown + }{% + \KOMA@set@ifkey{#1}{@tempswa}{#4}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \edef\reserved@b{% + \noexpand\endgroup + \noexpand\@namedef{sls@#2#3@linethickness}{.4pt}% + \noexpand\@namedef{sls@#2#3@linelength}{% + \expandafter\noexpand\csname sls@#2width\endcsname + }% + }% + \else + \def\reserved@b{% + \endgroup + \@namedef{sls@#2#3@linethickness}{0pt}% + \@namedef{sls@#2#3@linelength}{0pt}% + }% + \fi + \else + \let\reserved@a\@empty + \let\reserved@b\@empty + \sls@split@at@colon#4::\@nil + \ifx\reserved@a\@empty + \def\reserved@a{\endgroup\@namedef{sls@#2#3@linethickness}{.4pt}}% + \else + \setlength{\@tempdima}{\dimexpr\reserved@a\relax}% + \edef\reserved@a{% + \noexpand\endgroup + \noexpand\@namedef{sls@#2#3@linethickness}{\the\@tempdima}% + }% + \fi + \ifx\reserved@b\@empty + \def\reserved@b{% + \reserved@a + \@namedef{sls@#2#3@linelength}{\@nameuse{sls@#2width}}% + }% + \else + \edef\reserved@b{% + \noexpand\reserved@a + \noexpand\sls@deftowidthof{sls@#2#3@linelength}{\reserved@b}% + }% + \fi + \fi + \reserved@b + \FamilyKeyStateProcessed + \Ifstr{#1}{}{}{% + \KOMA@kav@xreplacevalue{.scrlayer-scrpage.sty}{#1}{% + \csname sls@#2#3@linethickness\endcsname + :\csname sls@#2#3@linelength\endcsname + }% + }% +}% +\newcommand*{\sls@split@at@colon}{} +\def\sls@split@at@colon#1:#2:#3\@nil{% + \Ifstr{#3}{}{}{% + \Ifstr{#3}{:}{}{% + \PackageWarning{scrlayer}{extra `:' found!\MessageBreak + You've used more than one colon at the argument\MessageBreak + of a two value option.\MessageBreak + The extra value(s) will be ignored% + }% + }% + }% + \def\reserved@a{#1}% + \def\reserved@b{#2}% +}% +\newcommand*{\sls@headabove@linelength}{\sls@headwidth}% +\newcommand*{\sls@headabove@linethickness}{0pt}% +\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headtopline}{% + \expandafter\noexpand\sls@headabove@linethickness:% + \expandafter\noexpand\sls@headabove@linelength +} +\newcommand*{\sls@headbelow@linelength}{\sls@headwidth}% +\newcommand*{\sls@headbelow@linethickness}{0pt}% +\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headsepline}{% + \expandafter\noexpand\sls@headbelow@linethickness:% + \expandafter\noexpand\sls@headbelow@linelength +} +\newcommand*{\sls@footabove@linelength}{\sls@footwidth}% +\newcommand*{\sls@footabove@linethickness}{0pt}% +\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footsepline}{% + \expandafter\noexpand\sls@footabove@linethickness:% + \expandafter\noexpand\sls@footabove@linelength +} +\newcommand*{\sls@footbelow@linelength}{\sls@footwidth}% +\newcommand*{\sls@footbelow@linethickness}{0pt}% +\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footbotline}{% + \expandafter\noexpand\sls@footbelow@linethickness:% + \expandafter\noexpand\sls@footbelow@linelength +} +\KOMA@ifkey{plainheadtopline}{sls@plain@head@above@line}% +\KOMA@ifkey{plainheadsepline}{sls@plain@head@below@line}% +\KOMA@ifkey{plainfootsepline}{sls@plain@foot@above@line}% +\KOMA@ifkey{plainfootbotline}{sls@plain@foot@below@line}% +\newcommand*{\sls@hfline@adjust}{0}% +\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{} +\KOMA@key{ilines}[]{% + \ifx\relax#1\relax + \renewcommand*{\sls@hfline@adjust}{0}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}% + \KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}% + \else + \def\FamilyKeyStateProcessed{unexpected value}% + \fi +} +\KOMA@key{clines}[]{% + \ifx\relax#1\relax + \renewcommand*{\sls@hfline@adjust}{1}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}% + \KOMA@kav@add{.scrlayer-scrpage.sty}{clines}{}% + \else + \def\FamilyKeyStateProcessed{unexpected value}% + \fi +} +\KOMA@key{olines}[]{% + \ifx\relax#1\relax + \renewcommand*{\sls@hfline@adjust}{2}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}% + \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}% + \KOMA@kav@add{.scrlayer-scrpage.sty}{olines}{}% + \else + \def\FamilyKeyStateProcessed{unexpected value}% + \fi +} +\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{} +\KOMA@key{pagestyleset}{% + \scr@ifundefinedorrelax{sls@ps@style@#1}{% + \FamilyKeyStateUnknownValue + }{% + \let\sls@auto@pagestyleset\relax + \@nameuse{sls@ps@style@#1}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{pagestyleset}{#1}% + }% +} +\newcommand*{\sls@ps@style@standard}{% + \let\MakeMarkcase\MakeUppercase + \scrlayer@AtEndOfPackage{% + \pagestyle{scrheadings}% + \clearpairofpagestyles + \ihead{\headmark}% + \ohead{\pagemark}% + \cfoot[\if@twoside\else\pagemark\fi]{}% + }% +}% +\expandafter\newcommand\expandafter*\csname sls@ps@style@KOMA-Script\endcsname{% + \let\MakeMarkcase\@firstofone + \scrlayer@AtEndOfPackage{% + \pagestyle{scrheadings}% + \clearpairofpagestyles + \ohead{\if@twoside\headmark\fi}% + \chead{\if@twoside\else\headmark\fi}% + \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}% + \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}% + \scr@ifundefinedorrelax{KOMAClassName}{}{% + \Ifstr{\KOMAClassName}{scrlttr2}{% + \clearpairofpagestyles + \lehead[\ifnum\@pageat=\z@\pagemark\fi] + {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}% + \lohead[\ifnum\@pageat=\z@\pagemark\fi] + {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}% + \chead[\ifnum\@pageat=\@ne\pagemark\fi] + {\ifcase\@pageat \rightmark\or \pagemark\or \rightmark\fi}% + \rehead[\ifnum\@pageat=\tw@\pagemark\fi] + {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark + \else \rightmark\fi}% + \rohead[\ifnum\@pageat=\tw@\pagemark\fi] + {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark + \else \rightmark\fi}% + \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi] + {\ifnum\@pageat=\thr@@\pagemark\fi}% + \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi] + {\ifnum\@pageat=\thr@@\pagemark\fi}% + \cfoot[\ifnum\@pageat=4 \pagemark\fi] + {\ifnum\@pageat=4 \pagemark\fi}% + \refoot[\ifnum\@pageat=5 \pagemark\fi] + {\ifnum\@pageat=5 \pagemark\fi}% + \rofoot[\ifnum\@pageat=5 \pagemark\fi] + {\ifnum\@pageat=5 \pagemark\fi}% + }{}% + }% + }% +}% +\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{komastyle}{% + pagestyleset=KOMA-Script} +\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{standardstyle}{% + pagestyleset=standard} +\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{markuppercase}{markcase=upper} +\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{markusedcase}{markcase=used} +\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{nouppercase}{% + markcase=ignoreuppercase% +} +\KOMA@ifkey{hmode}{sls@leavevmode} +\KOMA@ifkey{autoenlargeheadfoot}{sls@autoenlarge} +\KOMAExecuteOptions{autoenlargeheadfoot=true} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\KOMAProcessOptions\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @markcase\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autooneside\endcsname\relax +\expandafter\let\csname KV@KOMA.\@currname.\@currext @automark\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @automark@default\endcsname\relax +\expandafter\let\csname KV@KOMA.\@currname.\@currext @manualmark\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @manualmark@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsselect\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsselect@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsinit\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsinit@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoneside\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoneside@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpstwoside\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpstwoside@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoddpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsoddpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsevenpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsevenpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsfloatpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsfloatpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsbackground\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsbackground@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsforeground\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @onpsforeground@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers\endcsname + \relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers@default\endcsname + \relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @draft\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @draft@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @forceoverwrite\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @forceoverwrite@default\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces\endcsname\relax +\expandafter\let + \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces@default\endcsname + \relax +%%% From File: $Id: scrlayer-scrpage.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\newcommand*{\setheadwidth}[2][]{% + \PackageWarning{scrlayer-scrpage}{% + Command `\string\setheadwidth' is deprecated.\MessageBreak + I'm using \detokenize{\KOMAoptions{headwidth=#2:#1}} instead,\MessageBreak + and so should you do}% + \KOMAoptions{headwidth=#2:#1}% +}% +\newcommand*{\setfootwidth}[2][]{% + \PackageWarning{scrlayer-scrpage}{% + Command `\string\setfootwidth' is deprecated.\MessageBreak + I'm using \detokenize{\KOMAoptions{footwidth=#2:#1}} instead,\MessageBreak + and so should you do}% + \KOMAoptions{footwidth=#2:#1}% +}% +\newcommand*{\setheadtopline}{\sls@setline{head}{above}}% +\newcommand*{\setheadsepline}{\sls@setline{head}{below}}% +\newcommand*{\setfootsepline}{\sls@setline{foot}{above}}% +\newcommand*{\setfootbotline}{\sls@setline{foot}{below}}% +\newcommand*\sls@setline[2]{% + \kernel@ifnextchar[%] + {\sls@@setline{#1}{#2}}{\sls@@@setline{#1#2}}% +}% +\newcommand*{\sls@@setline}{} +\def\sls@@setline#1#2[#3]{% + \Ifstr{#3}{auto}{% + \sls@deftowidthof{sls@#1#2@linelength}{#3#1}% + }{% + \sls@deftowidthof{sls@#1#2@linelength}{#3}% + }% + \sls@@@setline{#1#2}% +}% +\newcommand*{\sls@@@setline}[2]{% + \edef\@tempa{#2}\edef\@tempb{current}% + \Ifstr{#2}{}{}{% + \Ifstr{#2}{current}{}{% + \setlength{\@tempdima}{#2}% + \Ifstr{#1}{headabove}{% + \KOMAExecuteOptions[.scrlayer-scrpage.sty]% + {headtopline=\@tempdima:\csname sls@#1@linelength\endcsname}% + }{\Ifstr{#1}{headbelow}{% + \KOMAExecuteOptions[.scrlayer-scrpage.sty]% + {headsepline=\@tempdima:\csname sls@#1@linelength\endcsname}% + }{% + \Ifstr{#1}{footabove}{% + \KOMAExecuteOptions[.scrlayer-scrpage.sty]% + {footsepline=\@tempdima:\csname sls@#1@linelength\endcsname}% + }{% + \KOMAExecuteOptions[.scrlayer-scrpage.sty]% + {footbotline=\@tempdima:\csname sls@#1@linelength\endcsname}% + }% + }% + }% + }% + }% + \PackageWarning{scrlayer-scrpage}{% + Command deprecated!\MessageBreak + Usage of `\string\setheadtopline', + `\string\setheadsepline',\MessageBreak + `\string\setfootsepline', and `\string\setfootbotline'\MessageBreak + became deprecated with scrlayer-scrpage.\MessageBreak + You should use KOMA-Script options\MessageBreak + `headsepline', `headtopline', `footsepline',\MessageBreak + or `footbotline' with values\MessageBreak + `:' to setup\MessageBreak + the line length and thickness, and\MessageBreak + `\string\setkomafont' or `\string\addtokomafont' to\MessageBreak + setup the colour% + }% + \kernel@ifnextchar[%] + {% + \sls@@@@setline{#1}% + }{% + }% +}% +\newcommand*{\sls@@@@setline}{} +\def\sls@@@@setline#1[#2]{% + \Ifstr{#1}{headabove}{\setkomafont{headtopline}{#2}}{% + \Ifstr{#1}{headbelow}{\setkomafont{headsepline}{#2}}{% + \Ifstr{#1}{footabove}{\setkomafont{footsepline}{#2}}{% + \setkomafont{footbotline}{#2}% + }% + }% + }% +}% +\@ifundefined{scr@fnt@headtopline}{% + \newkomafont{headtopline}{}% +}{} +\@ifundefined{scr@fnt@headsepline}{% + \newkomafont{headsepline}{}% +}{} +\@ifundefined{scr@fnt@footsepline}{% + \newkomafont{footsepline}{}% +}{} +\@ifundefined{scr@fnt@footbotline}{% + \newkomafont{footbotline}{}% +}{} +\AtBeginDocument{% + \ifdim \headheight + <\if@ps@singlespacing\f@baselineskip\else\baselineskip\fi\relax + \PackageWarningNoLine{scrlayer-scrpage}{Very small head height + detected!\MessageBreak + Using scrlayer-scrpage the head height\MessageBreak + should be at least \string\baselineskip, which is\MessageBreak + \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi\space + currently.\MessageBreak + But head height is currently + \the\headheight\space only.\MessageBreak + You may use\MessageBreak + \@ifpackageloaded{geometry}{% + geometry option + `head=\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'% + }{% + \@ifpackageloaded{typearea}{% + typearea option `headheight=% + \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'% + }{% + \string\setlength{\string\headheight}% + {\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi}% + }% + }\MessageBreak + \if@ps@singlespacing\else\ifdim \headheight<\f@baselineskip\else + or load package `scrlayer-scrpage' with\MessageBreak + option `singlespacing=true'\MessageBreak + \fi\fi + to avoid this warning% + }% + \else + \ifdim \footheight + <\if@ps@singlespacing\f@baselineskip\else\baselineskip\fi\relax + \PackageWarningNoLine{scrlayer-scrpage}{Very small foot height + detected!\MessageBreak + Using scrlayer-scrpage the foot height\MessageBreak + should be at least \string\baselineskip, which is\MessageBreak + \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi\space + currently.\MessageBreak + But foot height is currently + \the\footheight\space only.\MessageBreak + You may use\MessageBreak + \@ifpackageloaded{typearea}{% + typearea option `footheight=% + \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'% + }{% + \string\setlength{\string\footheight}% + {\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi}% + }% + \MessageBreak + \if@ps@singlespacing\else\ifdim \footheight<\f@baselineskip\else + or load package `scrlayer-scrpage' with\MessageBreak + option `singlespacing=true'\MessageBreak + \fi\fi + to avoid this warning% + }% + \fi + \fi +} +\@ifundefined{LaTeXcentering}{\let\LaTeXcentering\centering}{} +\@ifundefined{LaTeXraggedleft}{\let\LaTeXraggedleft\raggedleft}{} +\@ifundefined{LaTeXraggedright}{\let\LaTeXraggedright\raggedright}{} +\newcommand*{\defpagestyle}[3]{% + \sls@defhead{#1}#2\@empty\@empty\@empty + \sls@deffoot{#1}#3\@empty\@empty\@empty + \DeclarePageStyleByLayers{#1}{% + #1.head.odd,#1.head.even,#1.head.oneside,% + #1.head.above.line,#1.head.below.line,% + #1.foot.odd,#1.foot.even,#1.foot.oneside,% + #1.foot.above.line,#1.foot.below.line% + }% +}% +\newcommand*\sls@defhead[1]{% + \kernel@ifnextchar(%) + {\sls@@defhead{#1}}% + {\sls@@defhead{#1}(\sls@headabove@linelength,\sls@headabove@linethickness)}% +}% +\newcommand*{\sls@@defhead}{} +\def\sls@@defhead#1(#2,#3)#4#5#6{% + \kernel@ifnextchar(%) + {\sls@@@defhead{#1}({#2},{#3}){#4}{#5}{#6}}% + {\sls@@@defhead{#1}% + ({#2},{#3})% + {#4}{#5}{#6}% + (\sls@headbelow@linelength,\sls@headbelow@linethickness)}% +}% +\newcommand*{\sls@@@defhead}{} +\def\sls@@@defhead#1(#2,#3)#4#5#6(#7,#8){% + \DeclareLayer[% + background,% + hoffset=\sls@leftmargin{head},% + voffset=\sls@topmargin+\dp\strutbox,% + width=\sls@headwidth,% + height=0pt,% + align=bl,% + contents={% + {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{% + \sls@hf@rule{headtop}{#2}{#3}}}}% + }% + ]{#1.head.above.line}% + \DeclareLayer[% + background,% + hoffset=\sls@leftmargin{head},% + voffset=\sls@topmargin+\headheight-\ht\strutbox+#8,% + width=\sls@headwidth,% + height=0pt,% + align=tl,% + contents={% + {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{% + \sls@hf@rule{headsep}{#7}{#8}}}}% + }% + ]{#1.head.below.line}% + \DeclareLayer[% + background,evenpage,twoside,% + head,% + hoffset=\sls@leftmargin{head},% + width=\sls@headwidth,% + contents={% + \sls@secure@box\headheight{% + \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#4}}}}}% + ]{#1.head.even}% + \DeclareLayer[% + background,oddpage,twoside,% + head,% + hoffset=\sls@leftmargin{head},% + width=\sls@headwidth,% + contents={% + \sls@secure@box\headheight{% + \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#5}}}}}% + ]{#1.head.odd}% + \DeclareLayer[% + background,oddpage,oneside,% + head,% + hoffset=\sls@leftmargin{head},% + width=\sls@headwidth,% + contents={% + \sls@secure@box\headheight{% + \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#6}}}}}% + ]{#1.head.oneside}% +}% +\newcommand*\sls@deffoot[1]{% + \kernel@ifnextchar(%) + {\sls@@deffoot{#1}}% + {\sls@@deffoot{#1}(\sls@footabove@linelength,\sls@footabove@linethickness)}% +}% +\newcommand*{\sls@@deffoot}{} +\def\sls@@deffoot#1(#2,#3)#4#5#6{% + \kernel@ifnextchar(%) + {\sls@@@deffoot{#1}({#2},{#3}){#4}{#5}{#6}}% + {\sls@@@deffoot{#1}% + ({#2},{#3})% + {#4}{#5}{#6}% + (\sls@footbelow@linelength,\sls@footbelow@linethickness)}% +}% +\newcommand*{\sls@@@deffoot}{} +\def\sls@@@deffoot#1(#2,#3)#4#5#6(#7,#8){% + \DeclareLayer[% + foreground,% + hoffset=\sls@leftmargin{foot},% + voffset=\sls@topmargin + +\headheight+\headsep + +\textheight + +\footskip-\footheight + +2\dp\strutbox,% + width=\sls@footwidth,% + height=0pt,% + align=bl,% + contents={% + {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{% + \sls@hf@rule{footsep}{#2}{#3}}}}% + }% + ]{#1.foot.above.line}% + \DeclareLayer[% + foreground,% + hoffset=\sls@leftmargin{foot},% + voffset=\sls@topmargin + +\headheight+\headsep + +\textheight + +\footskip + +2\dp\strutbox + +#8,% + width=\sls@footwidth,% + height=0pt,% + align=bl,% + contents={% + {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{% + \sls@hf@rule{footbot}{#7}{#8}}}}% + }% + ]{#1.foot.below.line}% + \DeclareLayer[% + foreground,evenpage,twoside,% + foot,% + hoffset=\sls@leftmargin{foot},% + width=\sls@footwidth,% + contents={% + \sls@secure@box\footheight{% + \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#4}}}}% + ]{#1.foot.even}% + \DeclareLayer[% + foreground,oddpage,twoside,% + foot,% + hoffset=\sls@leftmargin{foot},% + width=\sls@footwidth,% + contents={% + \sls@secure@box\footheight{% + \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#5}}}}% + ]{#1.foot.odd}% + \DeclareLayer[% + foreground,oddpage,oneside,% + foot,% + hoffset=\sls@leftmargin{foot},% + width=\sls@footwidth,% + contents={% + \sls@secure@box\footheight{% + \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#6}}}}% + ]{#1.foot.oneside}% +}% +\newcommand*{\sls@secure@box}[2]{% + \begingroup + \setbox\z@\vbox{% + \ifsls@leavevmode\leavevmode\expandafter\ignorespaces\fi + #2\par + }% + \ifdim #1<\dimexpr \ht\z@+\dp\z@\relax + \PackageWarning{scrlayer-scrpage}{% + \string#1 to low.\MessageBreak + At least \the\dimexpr \ht\z@+\dp\z@\relax\space needed,\MessageBreak + but only \the#1 found.\MessageBreak + \ifsls@autoenlarge + I'll enlarge \string#1, for further\MessageBreak + processing, but you should do this yourself,\MessageBreak + \else + You should enlarge \string#1,\MessageBreak + \fi + e.g., + \scr@ifundefinedorrelax{geometry}{% + \scr@ifundefinedorrelax{typearea}{% + using\MessageBreak + \space\space\string\setlength{\string#1}{% + \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak + in your preamble% + }{% + setting typearea's option\MessageBreak + `\expandafter\@gobble\string#1=\the\dimexpr \ht\z@+\dp\z@\relax'% + }% + }{% + \ifx #1\headheight + setting geometry's option\MessageBreak + `head=\the\dimexpr \ht\z@+\dp\z@\relax'% + \else + using\MessageBreak + \space\space\string\setlength{\string#1}{% + \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak + in your preamble% + \fi + }% + \ifsls@autoenlarge + .\MessageBreak + I'll also + \ifx #1\headheight decrease \string\topmargin + \else increase \string\footskip\fi + \fi + }% + \ifsls@autoenlarge + \@tempdima\dimexpr \ht\z@+\dp\z@\relax + \ifx #1\headheight + \global\advance\topmargin by \dimexpr #1-(\ht\z@+\dp\z@)\relax + \dp\z@\dimexpr \dp\z@+\ht\z@+\dp\z@-\headheight\relax + \else + \global\advance\footskip by \dimexpr \ht\z@+\dp\z@-#1\relax + \fi + \global#1\@tempdima + \fi + \fi + \usebox\z@ + \endgroup +}% +\@ifundefined{scr@fnt@pagehead}{% + \scr@ifundefinedorrelax{scr@fnt@instead@pagehead}{}{% + \PackageInfo{scrlayer-scrpage}{% + Makeing stand-alone element `pagehead' from\MessageBreak + alias to `pageheadfoot'% + }% + \let\scr@fnt@instead@pagehead\relax + }% + \@ifundefined{@pageheadfont}{% + \newcommand*{\@pageheadfont}{}% + }{}% + \newcommand*{\scr@fnt@pagehead}{\@pageheadfont}% +}{} +\@ifundefined{scr@fnt@pageheadfoot}{% + \newcommand*{\scr@fnt@pageheadfoot}{\headfont}% + \@ifundefined{headfont}{% + \newcommand*{\headfont}{\normalcolor\slshape}% + }{} +}{} +\scr@ifundefinedorrelax{scr@fnt@wrn@pagehead}{}{% + \let\scr@fnt@wrn@pagehead\relax +} +\@ifundefined{scr@fnt@pagefoot}{% + \def\scr@fnt@pagefoot{\footfont}% + \@ifundefined{footfont}{% + \newcommand*{\footfont}{}% + }{}% +}{} +\scr@ifundefinedorrelax{scr@fnt@wrn@pagefoot}{}{% + \let\scr@fnt@wrn@pagefoot\relax +} +\newcommand*\sls@hf@rule[3]{% + \begingroup + \normalfont\usekomafont{#1line}{% + \vbox to \z@{% + \kern -\dimexpr #3\relax + \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi + \if@twoside\ifodd\value{page}\else + \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi + \fi\fi + \if@tempswa + \hskip \z@\@plus 1fill\@minus \paperwidth + \fi + \vrule \@width\dimexpr #2\relax \@height\dimexpr #3\relax \@depth\z@ + \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi + \if@twoside\ifodd\value{page}\else + \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi + \fi\fi + \if@tempswa + \hskip \z@\@plus 1fill\@minus \paperwidth\null + \fi + \par + }% + }% + \endgroup +}% +\newcommand*{\sls@topmargin}{\dimexpr\topmargin+1in\relax}% +\newcommand*{\sls@leftmargin}[1]{% + \dimexpr + \if@twoside + \ifodd\value{page} + \oddsidemargin+\csname sls@odd#1shift\endcsname + \else + \evensidemargin+\csname sls@even#1shift\endcsname + \fi + \else + \oddsidemargin+\csname sls@odd#1shift\endcsname + \fi + +1in\relax +}% +\@ifpackageloaded{titlesec}{% + \@ifundefined{newpagestyle}{}{% + \@ifpackageloaded{titleps}{}{% + \PackageWarningNoLine{scrlayer-scrpage}{% + it seems that package `titlesec' is used\MessageBreak + and has already defined `\string\newpagestyle'.\MessageBreak + To avoid this warning message, you should\MessageBreak + load package `titlesec' not before package\MessageBreak + `scrlayer-scrpage'. If you need `titlesec'\MessageBreak + you could load it after `scrlayer-scrpage',\MessageBreak + but you still would not be able to use\MessageBreak + the `titlesec' implemenation of\MessageBreak + `\string\newpagestyle'% + }% + \let\newpagestyle\relax + }% + }% +}{} +\newcommand*\newpagestyle[3]{% + \@ifundefined{ps@#1}{\defpagestyle{#1}{#2}{#3}}{% + \PackageError{scrlayer-scrpage}{Page style `#1' already defined}{% + Only not yet defined page style may be defined using + \string\newpagestyle.\MessageBreak + You may use either \string\renewpagestyle, \string\providepagestyle, + or \string\defpagestyle\MessageBreak + with already defined page styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }% +}% +\@ifpackageloaded{titlesec}{% + \@ifundefined{renewpagestyle}{}{% + \@ifpackageloaded{titleps}{}{% + \PackageWarningNoLine{scrlayer-scrpage}{% + It seems that package `titlesec' is used\MessageBreak + and has already defined `\string\renewpagestyle'.\MessageBreak + To avoid this warning message, you should\MessageBreak + load package `titlesec' not before package\MessageBreak + `scrlayer-scrpage'. If you need `titlesec'\MessageBreak + you could load it after `scrlayer-scrpage',\MessageBreak + but you still would not be able to use\MessageBreak + the `titlesec' implemenation of\MessageBreak + `\string\renewpagestyle'% + }% + \let\renewpagestyle\relax + }% + }% +}{} +\newcommand*\renewpagestyle[3]{% + \@ifundefined{ps@#1}{% + \PackageError{scrlayer-scrpage}{Undefined page style `#1'}{% + Only already defined page style may be re-defined using + \string\renewpagestyle.\MessageBreak + You may use either \string\newpagestyle, \string\providepagestyle, + or \string\defpagestyle\MessageBreak + with not yet defined page styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }{% + \defpagestyle{#1}{#2}{#3}% + }% +}% +\newcommand*\providepagestyle[3]{% + \@ifundefined{ps@#1}{% + \defpagestyle{#1}{#2}{#3}% + }{% + }% +} +\newcommand*{\deftriplepagestyle}[1]{% + \let\@tempa\defpagestyle + \scrlayer@triplestyle{#1}% +}% +\newcommand*{\newtriplepagestyle}[1]{% + \let\@tempa\newpagestyle + \scrlayer@triplestyle{#1}% +}% +\newcommand*{\renewtriplepagestyle}[1]{% + \let\@tempa\renewpagestyle + \scrlayer@triplestyle{#1}% +}% +\newcommand*{\providetriplepagestyle}[1]{% + \let\@tempa\providepagestyle + \scrlayer@triplestyle{#1}% +}% +\newcommand*{\scrlayer@triplestyle}[1]{% + \kernel@ifnextchar[%] + {\scrlayer@@triplestyle{#1}}% + {\scrlayer@@triplestyle{#1}[\z@]}% +} +\newcommand*{\scrlayer@@triplestyle}{} +\def\scrlayer@@triplestyle#1[#2]{% + \kernel@ifnextchar[%] + {\scrlayer@@@triplestyle{#1}[#2]}% + {\scrlayer@@@triplestyle{#1}[\z@][#2]}% +}% +\newcommand*{\scrlayer@@@triplestyle}{} +\def\scrlayer@@@triplestyle#1[#2][#3]#4#5#6#7#8#9{% + \@tempa{#1}{% + (\sls@headwidth,#2)% + {% + \makebox[\z@][l]{#6}\hfill + \makebox[\z@][c]{#5}\hfill + \makebox[\z@][r]{#4}% + }{% + \makebox[\z@][l]{#4}\hfill + \makebox[\z@][c]{#5}\hfill + \makebox[\z@][r]{#6}% + }{% + \makebox[\z@][l]{#4}\hfill + \makebox[\z@][c]{#5}\hfill + \makebox[\z@][r]{#6}% + }% + (\sls@headwidth,#3)% + }{% + (\sls@footwidth,#3)% + {% + \makebox[\z@][l]{#9}\hfill + \makebox[\z@][c]{#8}\hfill + \makebox[\z@][r]{#7}% + }{% + \makebox[\z@][l]{#7}\hfill + \makebox[\z@][c]{#8}\hfill + \makebox[\z@][r]{#9}% + }{% + \makebox[\z@][l]{#7}\hfill + \makebox[\z@][c]{#8}\hfill + \makebox[\z@][r]{#9}% + }% + (\sls@footwidth,#2)% + }% +}% +\newcommand*{\deftripstyle}{% + \PackageWarning{scrlayer-scrpage}{% + Command \string\deftripstyle\space is deprecate.\MessageBreak + You should replace it by \string\deftriplepagestyle,\MessageBreak + e.g.,% + }% + \let\deftripstyle\deftriplepagestyle + \deftripstyle +}% +\newcommand*{\defpairofpagestyles}[3][]{% + \def\reserved@a##1##2##3##4##5##6##7\@nil{##1##2##3##4##5##6}% + \edef\reserved@a{\expandafter\reserved@a #2xxxxxx\@nil}% + \Ifstr\reserved@a{plain.}{% + \PackageError{scrlayer-scrpage}{plain page style `#2' not allowed}{% + You may not define a plain page style using + \string\defpairofpagestyles, \string\newpairofpagestyles, + \string\renewpairofpagestyles, or\MessageBreak + \string\providepairofpagestyles. I'd suggest to simply define the + corresponding\MessageBreak + non-plain page style to also define the plain one.\MessageBreak + If you'll continue, your command will be ignored.}% + }{% + \sls@init@pair@page@style*{#2}% + \sls@init@pair@page@style*{plain.#2}% + \ifx\relax #1\relax\else + \scr@ifundefinedorrelax{sls@ps@#1@even@left@head}{% + \PackageError{scrlayer-scrpage}{`#1' not a pair page style}{% + Only pair page styles may be used to initialise new pairs of page + styles. So\MessageBreak + optional argument of \string\defpairofpagestyles, + \string\newpairofpagestyles,\MessageBreak + \string\renewpairofpagestyles, or \string\providepairofpagestyle has + to be a pair\MessageBreak + page style or should be unused.\MessageBreak + If you'll continue, the initialisation will be ignored.}% + }{% + \sls@init@pair@page@style{#2}{#1}% + \scr@ifundefinedorrelax{sls@ps@plain.#1@even@left@head}{% + \sls@init@pair@page@style{plain.#2}{#1}% + }{% + \sls@init@pair@page@style{plain.#2}{plain.#1}% + }% + }% + \fi + \sls@def@pair@page@style@member{#2}% + \AddToLayerPageStyleOptions{#2}{% + onselect={% + \DeclarePageStyleAlias{plain}{plain.#2}% + \DeclarePageStyleAlias{headings}{#2}% + \def\sls@currentheadings{#2}% + \def\sls@currentplain{plain.#2}% + #3% + }% + }% + \sls@def@pair@page@style@member{plain.#2}% + \AddToLayerPageStyleOptions{plain.#2}{% + onselect={% + \DeclarePageStyleAlias{plain}{plain.#2}% + \DeclarePageStyleAlias{headings}{#2}% + \def\sls@currentheadings{#2}% + \def\sls@currentplain{plain.#2}% + #3% + },% + oninit={% + \expandafter + \ifx\csname ifsls@plain@head@above@line\expandafter\endcsname + \csname iftrue\endcsname\else + \let\sls@headabove@linelength\z@ + \let\sls@headabove@linethickness\z@ + \fi + \expandafter + \ifx\csname ifsls@plain@head@below@line\expandafter\endcsname + \csname iftrue\endcsname\else + \let\sls@headbelow@linelength\z@ + \let\sls@headbelow@linethickness\z@ + \fi + \expandafter + \ifx\csname ifsls@plain@foot@above@line\expandafter\endcsname + \csname iftrue\endcsname\else + \let\sls@footabove@linelength\z@ + \let\sls@footabove@linethickness\z@ + \fi + \expandafter + \ifx\csname ifsls@plain@foot@below@line\expandafter\endcsname + \csname iftrue\endcsname\else + \let\sls@footbelow@linelength\z@ + \let\sls@footbelow@linethickness\z@ + \fi + }% + }% + }% +}% +\newcommand*\sls@currentheadings{scrheadings}% +\newcommand*\sls@currentplain{plain.scrheadings}% +\newcommand*{\sls@init@pair@page@style}{% + \kernel@ifstar {% + \kernel@ifstar {% + \sls@let@pair@page@style\relax + }{% + \sls@let@pair@page@style\@empty + } + }{% + \sls@init@@pair@page@style + }% +}% +\newcommand*{\sls@init@@pair@page@style}[2]{% + \expandafter\let\csname sls@ps@#1@even@left@head\expandafter\endcsname + \csname sls@ps@#2@even@left@head\endcsname + \expandafter\let\csname sls@ps@#1@even@middle@head\expandafter\endcsname + \csname sls@ps@#2@even@middle@head\endcsname + \expandafter\let\csname sls@ps@#1@even@right@head\expandafter\endcsname + \csname sls@ps@#2@even@right@head\endcsname + \expandafter\let\csname sls@ps@#1@odd@left@head\expandafter\endcsname + \csname sls@ps@#2@odd@left@head\endcsname + \expandafter\let\csname sls@ps@#1@odd@middle@head\expandafter\endcsname + \csname sls@ps@#2@odd@middle@head\endcsname + \expandafter\let\csname sls@ps@#1@odd@right@head\expandafter\endcsname + \csname sls@ps@#2@odd@right@head\endcsname + \expandafter\let\csname sls@ps@#1@even@left@foot\expandafter\endcsname + \csname sls@ps@#2@even@left@foot\endcsname + \expandafter\let\csname sls@ps@#1@even@middle@foot\expandafter\endcsname + \csname sls@ps@#2@even@middle@foot\endcsname + \expandafter\let\csname sls@ps@#1@even@right@foot\expandafter\endcsname + \csname sls@ps@#2@even@right@foot\endcsname + \expandafter\let\csname sls@ps@#1@odd@left@foot\expandafter\endcsname + \csname sls@ps@#2@odd@left@foot\endcsname + \expandafter\let\csname sls@ps@#1@odd@middle@foot\expandafter\endcsname + \csname sls@ps@#2@odd@middle@foot\endcsname + \expandafter\let\csname sls@ps@#1@odd@right@foot\expandafter\endcsname + \csname sls@ps@#2@odd@right@foot\endcsname +}% +\newcommand*{\sls@let@pair@page@style}[2]{% + \expandafter\let\csname sls@ps@#2@even@left@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@even@middle@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@even@right@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@left@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@middle@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@right@head\endcsname #1% + \expandafter\let\csname sls@ps@#2@even@left@foot\endcsname #1% + \expandafter\let\csname sls@ps@#2@even@middle@foot\endcsname #1% + \expandafter\let\csname sls@ps@#2@even@right@foot\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@left@foot\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@middle@foot\endcsname #1% + \expandafter\let\csname sls@ps@#2@odd@right@foot\endcsname #1% +}% +\newcommand*{\sls@def@pair@page@style@member}[1]{% + \defpagestyle{#1}{% + {% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@even@left@head}\strut}}% + \parbox{\sls@headwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@even@middle@head}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@even@right@head}\strut}}% + }{% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}% + \parbox{\sls@headwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}% + }{% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}% + \parbox{\sls@headwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}% + }% + }{% + {% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@even@left@foot}\strut}}% + \parbox{\sls@footwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@even@middle@foot}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@even@right@foot}\strut}}% + }{% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}% + \parbox{\sls@footwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}% + }{% + \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright + \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}% + \parbox{\sls@footwidth}{\LaTeXcentering + \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}% + \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft + \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}% + }% + }% +}% +\newcommand*{\newpairofpagestyles}[3][]{% + \scr@ifundefinedorrelax{ps@#2}{% + \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{% + \PackageError{scrlayer-scrpage}{% + Plain page style of `#2' already defined}{% + You may only define a new pair of page styles, if neither the style + itself\MessageBreak + nor it's plain page style has already been defined.\MessageBreak + You may use only \string\defpairofpagestyles\space or + \string\providepairofpagestyles\space with partly\MessageBreak + already defined page styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }% + }{% + \PackageError{scrlayer-scrpage}{% + Page style `#2' already defined}{% + You may only define a new pair of page styles, if neither the style + itself\MessageBreak + nor it's plain page style has already been defined.\MessageBreak + You may use either \string\renewpairsofpagestyles, + \string\defpairofpagestyles, or\MessageBreak + \string\providepairofpagestyles\space with already defined page + styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }% +}% +\newcommand*{\renewpairofpagestyles}[3][]{% + \scr@ifundefinedorrelax{ps@#2}{% + \PackageError{scrlayer-scrpage}{% + Undefined page style `#2'}{% + You may only redefine existing pairs of page styles. You may use + either\MessageBreak + \string\newpairsofpagestyles, \string\defpairofpagestyles, or + \string\providepairofpagestyles\MessageBreak + with not yet defined page styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }{% + \@ifundefined{ps@plain.#2}{% + \PackageError{scrlayer-scrpage}{% + Undefined plain page style of `#2'}{% + You may only redefine existing pairs of page styles. You may use + either\MessageBreak + \string\defpairofpagestyles\space or + \string\providepairofpagestyles\space with partly already + defined\MessageBreak + page styles.\MessageBreak + If you'll continue, your command will be ignored.% + }% + }{\defpairofpagestyles[#1]{#2}{#3}}% + }% +}% +\newcommand*{\providepairofpagestyles}[3][]{% + \scr@ifundefinedorrelax{ps@#2}{% + \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{% + }% + }{% + }% +}% +\newpairofpagestyles{scrheadings}{}% +\DeclarePageStyleAlias{scrplain}{plain.scrheadings} +\newcommand*{\ihead}{\kernel@ifstar {\@dblarg\@@@ihead}{\@ihead}}% +\newcommand*{\@ihead}{\kernel@ifnextchar[{\@@@ihead}{\@@ihead}}% +\newcommand{\@@ihead}[1]{\rehead{#1}\lohead{#1}}% +\newcommand{\@@@ihead}[2][]{\rehead[{#1}]{#2}\lohead[{#1}]{#2}}% +\newcommand*{\ohead}{\kernel@ifstar {\@dblarg\@@@ohead}{\@ohead}}% +\newcommand*{\@ohead}{\kernel@ifnextchar[{\@@@ohead}{\@@ohead}}% +\newcommand{\@@ohead}[1]{\lehead{#1}\rohead{#1}}% +\newcommand{\@@@ohead}[2][]{\lehead[{#1}]{#2}\rohead[{#1}]{#2}}% +\newcommand*{\chead}{\kernel@ifstar {\@dblarg\@@@chead}{\@chead}}% +\newcommand*{\@chead}{\kernel@ifnextchar[{\@@@chead}{\@@chead}}% +\newcommand{\@@chead}[1]{\cehead{#1}\cohead{#1}}% +\newcommand{\@@@chead}[2][]{\cehead[{#1}]{#2}\cohead[{#1}]{#2}}% +\newcommand*{\lehead}{\sls@renewelement{even}{left}{head}}% +\newcommand*{\lohead}{\sls@renewelement{odd}{left}{head}}% +\newcommand*{\rehead}{\sls@renewelement{even}{right}{head}}% +\newcommand*{\rohead}{\sls@renewelement{odd}{right}{head}}% +\newcommand*{\cehead}{\sls@renewelement{even}{middle}{head}}% +\newcommand*{\cohead}{\sls@renewelement{odd}{middle}{head}}% +\newcommand*{\ifoot}{\kernel@ifstar {\@dblarg\@@@ifoot}{\@ifoot}}% +\newcommand*{\@ifoot}{\kernel@ifnextchar[{\@@@ifoot}{\@@ifoot}}% +\newcommand{\@@ifoot}[1]{\refoot{#1}\lofoot{#1}}% +\newcommand{\@@@ifoot}[2][]{\refoot[{#1}]{#2}\lofoot[{#1}]{#2}}% +\newcommand*{\ofoot}{\kernel@ifstar {\@dblarg\@@@ofoot}{\@ofoot}}% +\newcommand*{\@ofoot}{\kernel@ifnextchar[{\@@@ofoot}{\@@ofoot}}% +\newcommand{\@@ofoot}[1]{\lefoot{#1}\rofoot{#1}}% +\newcommand{\@@@ofoot}[2][]{\lefoot[{#1}]{#2}\rofoot[{#1}]{#2}}% +\newcommand*{\cfoot}{\kernel@ifstar {\@dblarg\@@@cfoot}{\@cfoot}}% +\newcommand*{\@cfoot}{\kernel@ifnextchar[{\@@@cfoot}{\@@cfoot}}% +\newcommand{\@@cfoot}[1]{\cefoot{#1}\cofoot{#1}}% +\newcommand{\@@@cfoot}[2][]{\cefoot[{#1}]{#2}\cofoot[{#1}]{#2}}% +\newcommand*{\lefoot}{\sls@renewelement{even}{left}{foot}}% +\newcommand*{\lofoot}{\sls@renewelement{odd}{left}{foot}}% +\newcommand*{\refoot}{\sls@renewelement{even}{right}{foot}}% +\newcommand*{\rofoot}{\sls@renewelement{odd}{right}{foot}}% +\newcommand*{\cefoot}{\sls@renewelement{even}{middle}{foot}}% +\newcommand*{\cofoot}{\sls@renewelement{odd}{middle}{foot}}% +\newcommand*{\sls@renewelement}[3]{% + \kernel@ifstar{\@dblarg{\sls@@@@renewelement{#1}{#2}{#3}}}% + {\sls@@renewelement{#1}{#2}{#3}}% +}% +\newcommand*{\sls@@renewelement}[3]{% + \kernel@ifnextchar[%] + {\sls@@@@renewelement{#1}{#2}{#3}}% + {\sls@@@renewelement{#1}{#2}{#3}}% +}% +\newcommand{\sls@@@renewelement}[4]{% + \scr@ifundefinedorrelax{sls@ps@\sls@currentheadings @#1@#2@#3}{% + \@namedef{sls@ps@scrheadings@#1@#2@#3}{#4}% + }{% + \@namedef{sls@ps@\sls@currentheadings @#1@#2@#3}{#4}% + }% +}% +\newcommand*{\sls@@@@renewelement}{} +\long\def\sls@@@@renewelement#1#2#3[#4]#5{% + \sls@@renewplainelement{#1}{#2}{#3}{#4}% + \sls@@@renewelement{#1}{#2}{#3}{#5}% +}% +\newcommand{\sls@@renewplainelement}[4]{% + \scr@ifundefinedorrelax{sls@ps@\sls@currentplain @#1@#2@#3}{% + \@namedef{sls@ps@plain.scrheadings@#1@#2@#3}{#4}% + }{% + \@namedef{sls@ps@\sls@currentplain @#1@#2@#3}{#4}% + }% +}% +\newcommand*{\clearmainofpairofpagestyles}{% + \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}% +}% +\newcommand*{\clearscrheadings}{% + \PackageWarning{scrlayer-scrpage}{% + replacing deprecated \string\clearscrheading\space by\MessageBreak + \string\clearmainofpairofpagestyles + }% + \clearmainofpairofpagestyles +} +\newcommand*{\clearplainofpairofpagestyles}{% + \sls@@renewplainelement{odd}{left}{head}{}% + \sls@@renewplainelement{odd}{right}{head}{}% + \sls@@renewplainelement{odd}{middle}{head}{}% + \sls@@renewplainelement{even}{left}{head}{}% + \sls@@renewplainelement{even}{right}{head}{}% + \sls@@renewplainelement{even}{middle}{head}{}% + \sls@@renewplainelement{odd}{left}{foot}{}% + \sls@@renewplainelement{odd}{right}{foot}{}% + \sls@@renewplainelement{odd}{middle}{foot}{}% + \sls@@renewplainelement{even}{left}{foot}{}% + \sls@@renewplainelement{even}{right}{foot}{}% + \sls@@renewplainelement{even}{middle}{foot}{}% +}% +\newcommand*{\clearscrplain}{% + \PackageWarning{scrlayer-scrpage}{% + replacing deprecated \string\clearscrplain\space by\MessageBreak + \string\clearplainofpairofpagestyles + }% + \clearplainofpairofpagestyles +} +\newcommand*{\clearpairofpagestyles}{% + \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}% +}% +\newcommand*{\clearscrheadfoot}{% + \PackageWarning{scrlayer-scrpage}{% + replacing deprecated \string\clearscrheadfoot\space by\MessageBreak + \string\clearpairofpagestyles + }% + \clearpairofpagestyles +} +\newcommand*\ps@useheadings{% + \PackageWarning{scrlayer-scrpage}{incompatible page style!\MessageBreak + Page styles like `headings' and `plain'\MessageBreak + are incompatible with the page styles\MessageBreak + of scrlayer-scrpage. You shouldn't mix\MessageBreak + them up. Therefore page style\MessageBreak + `useheadings' is not longer provided.\MessageBreak + Usage is deprecated and will be replaced\MessageBreak + by `scrheadings'% + }% + \let\ps@useheadings\ps@scrheadings + \ps@useheadings +}% +\expandafter\newcommand\expandafter*\csname ps@plain.useheadings\endcsname{% + \@nameuse{ps@plain.scrheadings}% +}% +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlayer-scrpage.sty'. diff --git a/texmf/tex/latex/koma-script/scrlayer.sty b/texmf/tex/latex/koma-script/scrlayer.sty new file mode 100644 index 000000000..63b95bfbd --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlayer.sty @@ -0,0 +1,2346 @@ +%% +%% This is file `scrlayer.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlayer.dtx (with options: `package,scrlayer,identify') +%% scrlayer.dtx (with options: `package,scrlayer,init') +%% scrlayer.dtx (with options: `package,scrlayer,options') +%% scrlayer.dtx (with options: `package,scrlayer,body') +%% scrlayer.dtx (with options: `package,scrlayer,final') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2012-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{scrlayer}[% + 2022/07/04 v3.37 KOMA-Script + package + (defining layers and page styles)] +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: init) +\newcommand*{\scrlayer@@inherited@options@cslist}{} +\newcommand*{\scrlayer@@add@inherited@option}[1]{% + \ifx\scrlayer@@inherited@options@cslist\@empty + \g@addto@macro\scrlayer@@inherited@options@cslist{#1}% + \else + \g@addto@macro\scrlayer@@inherited@options@cslist{,#1}% + \fi +} +\newcommand*{\scrlayer@do@inherited@options}[2][.\@currname.\@currext]{% + \@for \reserved@a:=\scrlayer@@inherited@options@cslist \do {% + \edef\reserved@a{\unexpanded{#2}{#1}{\reserved@a}}% + \reserved@a + }% +} +\newcommand*{\scrlayer@inherit@option}[2]{% + \DefineFamilyMember[#1]{KOMA}% + \expandafter\let\csname KV@KOMA#1@#2\expandafter\endcsname + \csname KV@KOMA.scrlayer.sty@#2\endcsname + \expandafter\let\csname KV@KOMA#1@#2@default\expandafter\endcsname + \csname KV@KOMA.scrlayer.sty@#2@default\expandafter\endcsname + \AtEndOfPackage{% + \RelaxFamilyKey[{#1}]{KOMA}{#2}% + }% +} +\@onlypreamble\scr@do@inherited@options +\@onlypreamble\scr@inherit@option +\RequirePackage{scrkbase}[2013/03/05] +\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{% + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% +}{% + \ifx\scrlayer@AtEndOfPackage\@firstofone + \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}% + \fi +} +\let\scrlayer@AtEndOfPackage\AtEndOfPackage +\newcommand*{\scrlayer@testunexpectedarg}[2]{% + \ifx\relax#2\relax\else + \PackageError{scrlayer}{unexpected value to `#1'}{% + Option `#1' doesn't expect any value.\MessageBreak + If you'll continue, the value `#2' will be ignored.% + }% + \fi +} +\scr@ifundefinedorrelax{if@chapter}{% + \newif\if@chapter + \scr@ifundefinedorrelax{chapter}{\@chapterfalse}{\@chaptertrue}% +}{} +\scr@ifundefinedorrelax{if@mainmatter}{% + \scr@ifundefinedorrelax{mainmatter}{% + \newif\if@mainmatter\@mainmattertrue + }{% + \PackageWarningNoLine{scrlayer}{% + \string\mainmatter\space defined without + \string\if@mainmatter!\MessageBreak + Note, that several packages need + \string\if@mainmatter\space\MessageBreak + to detect whether or no the main matter has been\MessageBreak + entered. So does scrlayer. Because of this\MessageBreak + it will extend \string\mainmatter, now% + }% + \newif\if@mainmatter\@mainmattertrue + \expandafter\def\expandafter\mainmatter\expandafter{% + \expandafter\@mainmattertrue\mainmatter}% + \scr@ifundefinedorrelax{frontmatter}{}{% + \expandafter\def\expandafter\frontmatter\expandafter{% + \expandafter\@mainmatterfalse\frontmatter} + }% + \scr@ifundefinedorrelax{backmatter}{}{% + \expandafter\def\expandafter\backmatter{% + \expandafter\@mainmatterfalse\backmattter}% + }% + }% +}{} +\@ifundefined{footheight}{% + \newlength{\footheight}% + \setlength{\footheight}{-12345sp}% +}{% +} +\AtBeginDocument{% + \ifdim\footheight=-12345sp + \setlength{\footheight}{\baselineskip} + \fi +} +\newcommand*{\scrlayer@report@deprecated}[2]{% + \@ifundefined{scrlayer@deprecated@reported@for@#1}{% + \PackageWarning{scrlayer}{% + Deprecated interface detected for `#1'.\MessageBreak + There isn't any support for using, e.g.,\MessageBreak + `\string #2'% + }% + \@namedef{scrlayer@deprecated@reported@for@#1}{\string #2}% + }{}% +} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: options) +\KOMA@key{markcase}{% + \begingroup + \KOMA@set@ncmdkey{markcase}{reserved@a}{% + {upper}{0},{lower}{1},{used}{2},% + {ignoreuppercase}{3},{nouppercase}{3},% + {ignoreupper}{3},{noupper}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifnum \reserved@a>\m@ne + \aftergroup\let\aftergroup\MakeMarkcase + \ifcase \reserved@a + \aftergroup\MakeUppercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\MakeLowercase + \aftergroup\scrlayer@forceignoreuppercasefalse + \or + \aftergroup\@firstofone + \aftergroup\scrlayer@forceignoreuppercasefalse + \else + \aftergroup\scrlayer@ignoreuppercase + \aftergroup\scrlayer@forceignoreuppercasetrue + \fi + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{markcase}% + \KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}% + \fi +} +\scrlayer@@add@inherited@option{markcase} +\@ifundefined{MakeMarkcase}{\let\MakeMarkcase\@firstofone}{} +\ifx\MakeMarkcase\@firstofone + \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{used}% +\else\ifx\MakeMarkcase\MakeUppercase + \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{upper}% + \else\ifx\MakeMarkcase\MakeLowercase + \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{lower}% + \else\ifx\MakeMarkcase\scr@ignoreuppercase + \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{ignoreuppercase}% +\fi\fi\fi\fi +\DeclareRobustCommand*{\scrlayer@ignoreuppercase}[1]{% + \begingroup + \let\uppercase\@firstofone + \let\MakeUppercase\@firstofone + \expandafter\let\csname MakeUppercase \endcsname\@firstofone + #1% + \endgroup +} +\newif\ifscrlayer@forceignoreuppercase +\KOMA@ifkey{autooneside}{scrlayer@autooneside}\scrlayer@autoonesidetrue +\scrlayer@@add@inherited@option{autooneside} +\KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside} +\KOMA@key{automark}[]{% + \scrlayer@testunexpectedarg{automark}{#1}% + \scrlayer@AtEndOfPackage{% + \if@chapter + \scr@ifundefinedorrelax{section}{% + \automark{chapter}% + }{% + \automark[section]{chapter}% + }% + \else + \scr@ifundefinedorrelax{section}{% + \automark{}% + }{% + \scr@ifundefinedorrelax{subsection}{% + \automark{section}% + }{% + \automark[subsection]{section}% + } + }% + \fi + }% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{automark}{}% +} +\scrlayer@@add@inherited@option{automark} +\KOMA@key{manualmark}[]{% + \scrlayer@testunexpectedarg{manualmark}{#1}% + \scrlayer@AtEndOfPackage{\manualmark}% + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.scrlayer.sty}{automark}% + \KOMA@kav@removekey{.scrlayer.sty}{manualmark}% + \KOMA@kav@add{.scrlayer.sty}{manualmark}{}% +} +\scrlayer@@add@inherited@option{manualmark} +\KOMA@key{onpsselect}{% + \l@addto@macro{\@ps@initialhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}% +} +\scrlayer@@add@inherited@option{onpsselect} +\newcommand*{\@ps@initialhook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsselect}{} +\KOMA@key{onpsinit}{% + \l@addto@macro{\@ps@hook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}% +} +\scrlayer@@add@inherited@option{onpsinit} +\newcommand*{\@ps@hook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsinit}{} +\KOMA@key{onpsoneside}{% + \l@addto@macro{\@ps@onesidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}% +} +\scrlayer@@add@inherited@option{onpsoneside} +\newcommand*{\@ps@onesidehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsoneside}{} +\KOMA@key{onpstwoside}{% + \l@addto@macro{\@ps@twosidehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}% +} +\scrlayer@@add@inherited@option{onpstwoside} +\newcommand*{\@ps@twosidehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpstwoside}{} +\KOMA@key{onpsoddpage}{% + \l@addto@macro{\@ps@oddpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}% +} +\scrlayer@@add@inherited@option{onpsoddpage} +\newcommand*{\@ps@oddpagehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{} +\KOMA@key{onpsevenpage}{% + \l@addto@macro{\@ps@evenpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}% +} +\scrlayer@@add@inherited@option{onpsevenpage} +\newcommand*{\@ps@evenpagehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{} +\KOMA@key{onpsfloatpage}{% + \l@addto@macro{\@ps@floatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}% +} +\scrlayer@@add@inherited@option{onpsfloatpage} +\newcommand*{\@ps@floatpagehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{} +\KOMA@key{onpsnonfloatpage}{% + \l@addto@macro{\@ps@nonfloatpagehook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}% +} +\scrlayer@@add@inherited@option{onpsnonfloatpage} +\newcommand*{\@ps@nonfloatpagehook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{} +\KOMA@key{onpsbackground}{% + \l@addto@macro{\@ps@backgroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}% +} +\scrlayer@@add@inherited@option{onpsbackground} +\newcommand*{\@ps@backgroundhook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsbackground}{} +\KOMA@key{onpsforeground}{% + \l@addto@macro{\@ps@foregroundhook}{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}% +} +\scrlayer@@add@inherited@option{onpsforeground} +\newcommand*{\@ps@foregroundhook}{} +\KOMA@kav@add{.scrlayer.sty}{onpsforeground}{} +\KOMA@ifkey{singlespacing}{@ps@singlespacing} +\scrlayer@@add@inherited@option{singlespacing} +\KOMA@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers} +\scrlayer@@add@inherited@option{deactivatepagestylelayers} +\KOMA@ifkey{draft}{scrlayer@draft} +\scrlayer@@add@inherited@option{draft} +\KOMA@ifkey{forceoverwrite}{scrlayer@forceoverwrite} +\scrlayer@@add@inherited@option{forceoverwrite} +\KOMA@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces} +\scrlayer@@add@inherited@option{autoremoveinterfaces} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\KOMAProcessOptions\relax +\newcommand*{\rightfirstmark}{\expandafter\@rightmark\firstmark\@empty\@empty} +\newcommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty} +\newcommand*{\righttopmark}{\expandafter\@rightmark\topmark\@empty\@empty} +\newcommand*{\leftfirstmark}{\expandafter\@leftmark\firstmark\@empty\@empty} +\newcommand*{\leftbotmark}{\expandafter\@leftmark\botmark\@empty\@empty} +\newcommand*{\lefttopmark}{\expandafter\@leftmark\topmark\@empty\@empty} +\@ifundefined{headmark}{}{% + \PackageWarningNoLine{scrlayer}{% + \string\headmark\space detected!\MessageBreak + \string\headmark\space will either be set to + \string\rightmark\MessageBreak + or \string\leftmark inside of page styles.\MessageBreak + This means, that \string\headmark\space will be overwritten\MessageBreak + at every page layer usage!\MessageBreak + Nevertheless it will stay unchanged outside\MessageBreak + of page layers.\MessageBreak + I hope, this won't break your document% + }% +} +\@ifundefined{pagemark}{% + \DeclareRobustCommand\pagemark{{\pnumfont{\thepage}}}% +}{}% +\@ifundefined{pnumfont}{% + \newcommand{\pnumfont}{\normalfont}% +}{} +\@ifundefined{scr@fnt@pagenumber}{% + \newcommand{\scr@fnt@pagenumber}{\pnumfont}% +}{} +\providecommand*{\partmarkformat}{\partname\ \thepart. \ }% +\if@chapter + \providecommand*{\@chapapp}{\chaptername}% + \providecommand*{\chaptermarkformat}{\@chapapp\ \thechapter. \ }% + \providecommand*{\sectionmarkformat}{\thesection. \ }% +\else + \providecommand*{\sectionmarkformat}{\GenericMarkFormat{section}}% +\fi +\scr@ifundefinedorrelax{@seccntmarkformat}{% + \providecommand*{\GenericMarkFormat}{\@seccntformat}% +}{% + \providecommand*{\GenericMarkFormat}[1]{\@seccntmarkformat{#1}}% +} +\providecommand*{\@mkleft}{% + \IfActiveMkBoth{\markleft}{\@gobble}% +}% +\providecommand*{\@mkright}{% + \IfActiveMkBoth{\markright}{\@gobble}% +}% +\providecommand{\@mkdouble}[1]{% + \@mkboth{#1}{#1}% +} +\csname ExplSyntaxOn\endcsname +\IfLTXAtLeastTF{2022/06/01}{% + \@ifundefined{markleft}{% + \DeclareRobustCommand{\markleft}[1]{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markleft\@themark {#1}% + \@temptokena \expandafter{\@themark}% + \mark_insert:nn{2e-left}{#1}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + }% + \providecommand{\@markleft}[3]{% + \@temptokena {#2}% + \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}% + }% + }{}% +}{% + \@ifundefined{markleft}{% + \DeclareRobustCommand{\markleft}[1]{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markleft\@themark {#1}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + }% + \providecommand{\@markleft}[3]{% + \@temptokena {#2}% + \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}% + }% + }{}% +} +\csname ExplSyntaxOff\endcsname +\providecommand{\markdouble}[1]{\markboth{#1}{#1}} +\newcommand*{\manualmark}{% + \begingroup + \def\@elt##1{% + \aftergroup\let\expandafter\aftergroup\csname ##1mark\endcsname + \aftergroup\@gobble + }% + \scrlayer@level@list + \endgroup + \let\@mkleft\@gobble + \let\@mkright\@gobble + \let\@mkdouble\@gobble + \let\@mkboth\@gobbletwo +} +\newcommand*{\automark}{% + \kernel@ifstar{\@automark}{\manualmark\@automark}% +} +\newcommand*{\@automark}[2][]{% + \Ifstr{#2}{}{% + \Ifstr{#1}{}{% + \automark@basics + }{% + \automark@basics + \automark@righthigh{#1}% + }% + }{% + \Ifstr{#1}{}{% + \automark@basics + \automark@leftlow{#2}% + }{% + \automark@basics + \automark@both{#1}{#2}% + }% + }% +} +\newcommand*{\automark@basics}{% + \let\@mkleft\markleft + \let\@mkright\markright + \let\@mkboth\markboth + \def\@mkdouble##1{\@mkboth{##1}{##1}}% +} +\newcommand*{\automark@righthigh}[1]{% + \ifscrlayer@level@prepared{#1}{% + \expandafter\def\csname #1mark\endcsname##1{% + \begingroup + \@tempswafalse + \if@twoside\@tempswatrue + \else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi + \expandafter\endgroup + \if@tempswa + \@mkright{% + \MakeMarkcase{% + \ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax + \else\if@mainmatter \csname #1markformat\endcsname\fi\fi + ##1% + }% + }% + \fi + }% + }{}% +} +\newcommand*{\automark@leftlow}[1]{% + \ifscrlayer@level@prepared{#1}{% + \expandafter\def\csname #1mark\endcsname ##1{% + \if@twoside + \expandafter\@mkboth + \else + \expandafter\@mkdouble + \fi + {% + \MakeMarkcase{% + \ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax + \else\if@mainmatter \csname #1markformat\endcsname\fi\fi + ##1% + }% + }{}% + }% + }{}% +} +\newcommand*{\automark@both}[2]{% + \ifscrlayer@level@prepared{#1}{% + \ifscrlayer@level@prepared{#2}{% + \ifnum \numexpr \csname #1numdepth\endcsname +0\relax + > \numexpr \csname #2numdepth\endcsname +0\relax + \automark@leftlow{#2}% + \automark@righthigh{#1}% + \else \ifnum \numexpr \csname #1numdepth\endcsname +0\relax + = \numexpr \csname #2numdepth\endcsname +0\relax + \expandafter\def\csname #2mark\endcsname##1{% + \@mkdouble{% + \MakeMarkcase{% + \ifnum \c@secnumdepth<\numexpr + \csname #2numdepth\endcsname +0\relax + \else + \if@mainmatter \csname #2markformat\endcsname\fi + \fi + ##1% + }% + }% + }% + \else + \expandafter\def\csname #1mark\endcsname##1{% + \begingroup + \@tempswafalse + \if@twoside\@tempswatrue + \else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi + \expandafter\endgroup + \if@tempswa + \@mkleft{% + \MakeMarkcase{% + \ifnum \c@secnumdepth + < \numexpr\csname #1numdepth\endcsname +0\relax + \else + \if@mainmatter \csname #1markformat\endcsname\fi + \fi + ##1% + }% + }% + \fi + }% + \expandafter\def\csname #2mark\endcsname##1{% + \@mkboth{}{% + \MakeMarkcase{% + \ifnum \c@secnumdepth + < \numexpr \csname #2numdepth\endcsname +0\relax + \else\if@mainmatter \csname #2markformat\endcsname\fi\fi + ##1% + }% + }% + }% + \fi + \fi + }{}% + }{}% +} +\newcommand*{\ifscrlayer@level@prepared}[1]{% + \typeout{1: \detokenize{#1}}% + \scr@ifundefinedorrelax{#1numdepth}{% + \PackageError{scrlayer}{numbering depth of `#1' unknown}{% + Someone told me to use a section mark for level `#1',\MessageBreak + but the numbering depth hasn't been declared before. You may solve this + using\MessageBreak + \string\DeclareSectionNumberDepth{#1}{NUMBER}.% + }% + \@secondoftwo + }{% + \@firstoftwo + }% +} +\newcommand*{\DeclareSectionNumberDepth}[2]{% + \expandafter\edef\csname #1numdepth\endcsname{\the\numexpr #2\relax}% + \@ifundefined{#1mark}{% + \expandafter\let\csname #1mark\endcsname\@gobble + }{}% + \@ifundefined{#1markformat}{% + \@namedef{#1markformat}{\GenericMarkFormat{#1}}% + }{}% + \begingroup + \@tempswatrue + \def\@elt##1{\Ifstr{#1}{##1}{\@tempswafalse}{}}% + \scrlayer@level@list + \if@tempswa + \aftergroup\@firstofone + \else + \aftergroup\@gobble + \fi + \endgroup + {% + \l@addto@macro\scrlayer@level@list{\@elt{#1}}% + }% +} +\newcommand*{\scrlayer@level@list}{} +\scr@ifundefinedorrelax{part}{}{% + \DeclareSectionNumberDepth{part}{-1}% +} +\if@chapter + \DeclareSectionNumberDepth{chapter}{0}% +\fi +\newcommand*{\scrlayer@level@init}{% + \@tempcnta=1 + \def\reserved@b##1{% + \@tempswatrue + \def\reserved@a{##1}% + \@whilesw \if@tempswa \fi {% + \scr@ifundefinedorrelax{\reserved@a}{% + \@tempswafalse + }{% + \@ifundefined{\reserved@a numdepth}{% + \expandafter\DeclareSectionNumberDepth + \expandafter{\reserved@a}{\@tempcnta}% + }{% + \expandafter\DeclareSectionNumberDepth + \expandafter{\reserved@a}{\csname \reserved@a numdepth\endcsname}% + }% + \advance \@tempcnta by \@ne + \edef\reserved@a{sub\reserved@a}% + }% + }% + }% + \reserved@b{section}% + \reserved@b{paragraph}% + \reserved@b{minisec}% +} +\scrlayer@level@init +\AtBeginDocument{% + \scrlayer@level@init +} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.definelayer]{KOMAarg} +\newcommand*{\def@scr@l@pos}[4]{% + \@namedef{scr@l@\scr@current@layer @x}{#1}% + \@namedef{scr@l@\scr@current@layer @y}{#2}% + \@namedef{scr@l@\scr@current@layer @w}{#3}% + \@namedef{scr@l@\scr@current@layer @h}{#4}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{mode}{% + \scr@ifundefinedorrelax{layer#1mode}{\FamilyKeyStateUnknownValue}{% + \@namedef{scr@l@\scr@current@layer @mode}{#1}% + \FamilyKeyStateProcessed + }% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{hoffset}{% + \@namedef{scr@l@\scr@current@layer @x}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{voffset}{% + \@namedef{scr@l@\scr@current@layer @y}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{width}{% + \@namedef{scr@l@\scr@current@layer @w}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{height}{% + \@namedef{scr@l@\scr@current@layer @h}{\dimexpr #1\relax}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{align}{% + \@namedef{scr@l@\scr@current@layer @align}{#1}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{contents}{% + \long\@namedef{scr@l@\scr@current@layer @contents}{#1}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{background}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{background}{#1}% + \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname + \csname @scr@l@\scr@current@layer @foregroundfalse\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{foreground}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{foreground}{#1}% + \csname @scr@l@\scr@current@layer @backgroundfalse\endcsname + \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{backandforeground}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{backandforeground}{#1}% + \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname + \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{oddpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{oddpage}{#1}% + \csname @scr@l@\scr@current@layer @oddtrue\endcsname + \csname @scr@l@\scr@current@layer @evenfalse\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{evenpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{evenpage}{#1}% + \csname @scr@l@\scr@current@layer @oddfalse\endcsname + \csname @scr@l@\scr@current@layer @eventrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{oddorevenpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{oddorevenpage}{#1}% + \csname @scr@l@\scr@current@layer @oddtrue\endcsname + \csname @scr@l@\scr@current@layer @eventrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{evenoroddpage}[\relax]{% + \PackageWarning{scrlayer}{Option `evenoroddpage' unknown.\MessageBreak + Using `oddorevenpage' instead}% + \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1} +} +\DefineFamilyKey[.definelayer]{KOMAarg}{oddandevenpages}[\relax]{% + \PackageWarning{scrlayer}{Option `oddandevenpages' unknown.\MessageBreak + Using `oddorevenpage' instead}% + \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1} +} +\DefineFamilyKey[.definelayer]{KOMAarg}{evenandoddpages}[\relax]{% + \PackageWarning{scrlayer}{Option `evenandoddpages' unknown.\MessageBreak + Using `oddorevenpage' instead}% + \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1} +} +\DefineFamilyKey[.definelayer]{KOMAarg}{floatpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{floatpage}{#1}% + \csname @scr@l@\scr@current@layer @nonfloatpagefalse\endcsname + \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{nonfloatpage}{#1}% + \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname + \csname @scr@l@\scr@current@layer @floatpagefalse\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{floatornonfloatpage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{floatornonfloatpage}{#1}% + \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname + \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatorfloatpage}[\relax]{% + \PackageWarning{scrlayer}{Option `nonfloatorfloatpage' unknown.\MessageBreak + Using `floatornonfloatpage' instead}% + \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{floatandnonfloatpages}[\relax]{% + \PackageWarning{scrlayer}{Option `floatandnonfloatpages' unknown.\MessageBreak + Using `floatornonfloatpage' instead}% + \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatandfloatpages}[\relax]{% + \PackageWarning{scrlayer}{Option `nonfloatandfloatpages' unknown.\MessageBreak + Using `floatornonfloatpage' instead}% + \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{everypage}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{everypage}{#1}% + \csname @scr@l@\scr@current@layer @oddtrue\endcsname + \csname @scr@l@\scr@current@layer @eventrue\endcsname + \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname + \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{oneside}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{oneside}{#1}% + \csname @scr@l@\scr@current@layer @twosidefalse\endcsname + \csname @scr@l@\scr@current@layer @onesidetrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{twoside}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{twoside}{#1}% + \csname @scr@l@\scr@current@layer @twosidetrue\endcsname + \csname @scr@l@\scr@current@layer @onesidefalse\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{everyside}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{everyside}{#1}% + \csname @scr@l@\scr@current@layer @twosidetrue\endcsname + \csname @scr@l@\scr@current@layer @onesidetrue\endcsname +} +\DefineFamilyKey[.definelayer]{KOMAarg}{unrestricted}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{unrestricted}{#1}% + \csname @scr@l@\scr@current@layer @oddtrue\endcsname + \csname @scr@l@\scr@current@layer @eventrue\endcsname + \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname + \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname + \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname + \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname + \csname @scr@l@\scr@current@layer @twosidetrue\endcsname + \csname @scr@l@\scr@current@layer @onesidetrue\endcsname +} +\FamilyCSKey[.definelayer]{KOMAarg}{beforecontents} + {scr@l@\scr@current@layer @precontents@hook} +\FamilyCSKey[.definelayer]{KOMAarg}{aftercontents} + {scr@l@\scr@current@layer @postcontents@hook} +\DefineFamilyKey[.definelayer]{KOMAarg}{artifact}[true]{% + \FamilySetBool{KOMAarg}{artifact}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname + \@empty + \else + \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname + \relax + \fi + \else + \FamilyKeyStateProcessed + \@namedef{scr@l@\scr@current@layer @artifact}{#1}% + \fi +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addhoffset}{% + \expandafter\edef\csname scr@l@\scr@current@layer @x\endcsname{% + \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @x\endcsname + (#1)\relax}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addvoffset}{% + \expandafter\edef\csname scr@l@\scr@current@layer @y\endcsname{% + \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @y\endcsname + (#1)\relax}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addwidth}{% + \expandafter\edef\csname scr@l@\scr@current@layer @w\endcsname{% + \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @w\endcsname + (#1)\relax}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addheight}{% + \expandafter\edef\csname scr@l@\scr@current@layer @h\endcsname{% + \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @h\endcsname + (#1)\relax}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addcontents}{% + \expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{% + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @contents\endcsname #1}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{pretocontents}{% + \expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{% + \unexpanded{#1}\unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @contents\endcsname}}% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addbeforecontents}{% + \scr@ifundefinedorrelax{scr@l@\scr@current@layer @precontents@hook}{% + \expandafter\def + \csname scr@l@\scr@current@layer @precontents@hook\endcsname{#1}% + }{% + \expandafter\edef + \csname scr@l@\scr@current@layer @precontents@hook\endcsname{% + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @precontents@hook\endcsname}% + \unexpanded{#1} + }% + }% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{addaftercontents}{% + \scr@ifundefinedorrelax{scr@l@\scr@current@layer @postcontents@hook}{% + \expandafter\def + \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{#1}% + }{% + \expandafter\edef + \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{% + \unexpanded{#1}% + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@l@\scr@current@layer @postcontents@hook\endcsname}% + }% + }% + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{page}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{page}{#1}% + \def@scr@l@pos{\z@}{\z@}{\paperwidth}{\paperheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{topmargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{topmargin}{#1}% + \def@scr@l@pos{\z@}{\z@}{\paperwidth}{\dimexpr \topmargin+1in\relax}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{head}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{head}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{% + \dimexpr \topmargin+1in+\headheight\relax + }{\textwidth}{\headheight}% + \@namedef{scr@l@\scr@current@layer @align}{bl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{headsep}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{head}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{% + \dimexpr \topmargin+1in+\headheight\relax + }{\textwidth}{\headsep}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{textarea}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{textarea}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{% + \dimexpr \topmargin+1in+\headheight+\headsep\relax + }{\textwidth}{\textheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{foot}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{foot}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{% + \dimexpr \topmargin+1in+\headheight+\headsep+\textheight + +\footskip+\dp\strutbox-\footheight\relax + }{\textwidth}{\footheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{footskip}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{foot}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{% + \dimexpr \topmargin+1in+\headheight+\headsep+\textheight\relax + }{\textwidth}{\dimexpr\footskip+\dp\strutbox-\footheight\relax}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{bottommargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{bottommargin}{#1}% + \def@scr@l@pos{\z@}{% + \dimexpr \topmargin+1in+\headheight+\headsep + +\textheight + +\footskip+\dp\strutbox\relax + }{\paperwidth}{\dimexpr\paperheight-\layeryoffset\relax}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{leftmargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{leftmargin}{#1}% + \def@scr@l@pos{\z@}{\z@}{% + \dimexpr + \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi + +1in + \relax + }{\paperheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{rightmargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{rightmargin}{#1}% + \def@scr@l@pos{\paperwidth}{\z@}{% + \dimexpr \paperwidth-1in-\textwidth + -\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + \else\oddsidemargin\fi\relax + }{\paperheight}% + \@namedef{scr@l@\scr@current@layer @align}{tr}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{innermargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{innermargin}{#1}% + \def@scr@l@pos{% + \if@twoside + \ifodd\value{page} \z@ + \else \dimexpr \evensidemargin+1in+\textwidth\relax + \fi + \else \z@\fi + }{\z@}{% + \dimexpr + \if@twoside\ifodd\value{page} \oddsidemargin+1in + \else \paperwidth-\layerxoffset\fi + \else \oddsidemargin+1in\fi + \relax + }{\paperheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{outermargin}[\relax]{% + \FamilyKeyStateProcessed + \scrlayer@testunexpectedarg{outermargin}{#1}% + \def@scr@l@pos{% + \dimexpr + \if@twoside\ifodd\value{page} \oddsidemargin+1in+\textwidth + \else \z@\fi + \else \oddsidemargin+1in+\textwidth\fi + \relax + }{\z@}{% + \dimexpr + \if@twoside\ifodd\value{page}\paperwidth-\layerxoffset + \else \evensidemargin+1in\fi + \else \paperwidth-\layerxoffset\fi + \relax + }{\paperheight}% + \@namedef{scr@l@\scr@current@layer @align}{tl}% +} +\DefineFamilyKey[.definelayer]{KOMAarg}{area}{% + \def@scr@l@pos#1 + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayer]{KOMAarg}{clone}{% + \scr@ifundefinedorrelax{scr@l@#1@x}{% + \FamilyKeyStateUnknownValue + \PackageError{scrlayer}{layer `#1' undefined}{% + You can clone only already defined layers.\MessageBreak + If you'll continue, `clone=#1' will be ignored.% + }% + }{% + \FamilyKeyStateProcessed + \scrlayer@clone@attribute{\scr@current@layer}{#1}{mode}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{x}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{y}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{w}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{h}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{align}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{contents}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{background}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{foreground}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{odd}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{even}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{oneside}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{twoside}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{floatpage}% + \scrlayer@clone@switch{\scr@current@layer}{#1}{nonfloatpage}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{precontents@hook}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{postcontents@hook}% + \scrlayer@clone@attribute{\scr@current@layer}{#1}{artifact}% + }% +} +\newcommand*{\scrlayer@clone@attribute}[3]{% + \expandafter\let\csname scr@l@#1@#3\expandafter\endcsname + \csname scr@l@#2@#3\expandafter\endcsname +} +\newcommand*{\scrlayer@clone@switch}[3]{% + \expandafter\let\csname if@scr@l@#1@#3\expandafter\endcsname + \csname if@scr@l@#2@#3\expandafter\endcsname +} +\newcommand{\DeclareLayer}[2][]{% + \def\scr@current@layer{#2}% + \@namedef{scr@l@#2@mode}{text}% + \@namedef{scr@l@#2@x}{\z@}% + \@namedef{scr@l@#2@y}{\z@}% + \@namedef{scr@l@#2@w}{\paperwidth}% + \@namedef{scr@l@#2@h}{\paperheight}% + \@namedef{scr@l@#2@align}{tl}% + \@namedef{scr@l@#2@contents}{}% + \expandafter\newif\csname if@scr@l@#2@background\endcsname + \csname @scr@l@#2@backgroundtrue\endcsname + \expandafter\newif\csname if@scr@l@#2@foreground\endcsname + \csname @scr@l@#2@foregroundtrue\endcsname + \expandafter\newif\csname if@scr@l@#2@odd\endcsname + \csname @scr@l@#2@oddtrue\endcsname + \expandafter\newif\csname if@scr@l@#2@even\endcsname + \csname @scr@l@#2@eventrue\endcsname + \expandafter\newif\csname if@scr@l@#2@oneside\endcsname + \csname @scr@l@#2@onesidetrue\endcsname + \expandafter\newif\csname if@scr@l@#2@twoside\endcsname + \csname @scr@l@#2@twosidetrue\endcsname + \expandafter\newif\csname if@scr@l@#2@floatpage\endcsname + \csname @scr@l@#2@floatpagetrue\endcsname + \expandafter\newif\csname if@scr@l@#2@nonfloatpage\endcsname + \csname @scr@l@#2@nonfloatpagetrue\endcsname + \FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}% + \let\scr@current@layer\@empty +} +\newcommand*{\scr@current@layer}{} +\newcommand*{\IfLayerExists}[1]{% + \scr@ifundefinedorrelax{scr@l@#1@mode}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% +} +\newcommand{\DeclareNewLayer}[2][]{% + \IfLayerExists{#2}{% + \PackageError{scrlayer}{layer `#2' already defined}{% + You may declare only layer, that haven't been declared previously + using\MessageBreak + \string\DeclareNewLayer. See also the alternatives + \string\RedeclareLayer,\MessageBreak + \string\ModifyLayer\space and \string\ProvideLayer.\MessageBreak + If you'll continue, declaration will be ignored.}% + }{\DeclareLayer[{#1}]{#2}}% +} +\newcommand{\ProvideLayer}[2][]{% + \IfLayerExists{#2}{% + }{\DeclareNewLayer[{#1}]{#2}}% +} +\newcommand{\RedeclareLayer}[2][]{% + \IfLayerExists{#2}{}{% + \PackageError{scrlayer}{layer `#2' not yet defined}{% + You may declare only already declared layers using + \string\RedeclareLayer.\MessageBreak + See also the alternatives + \string\DeclareLayer and \string\ProvideLayer.\MessageBreak + Nevertheless, if you'll continue, declaration will be done.}% + }% + \DeclareLayer[{#1}]{#2}% +} +\newcommand{\ModifyLayer}[2][]{% + \IfLayerExists{#2}{% + \def\scr@current@layer{#2}% + \edef\reserved@a{% + \unexpanded{% + \FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}% + \Ifstr{\csname scr@l@#2@mode\endcsname}% + }{\csname scr@l@#2@mode\endcsname}% + }\reserved@a{}{% + \PackageWarning{scrlayer}{% + change of layer mode could result in unexpected\MessageBreak + output and errors% + }% + }% + \let\scr@current@layer\@empty + }{% + \PackageError{scrlayer}{layer `#2' not yet defined}{% + You may modify only already declared layers using + \string\ModifyLayer.\MessageBreak + See also the alternatives + \string\DeclareLayer and \string\ProvideLayer.\MessageBreak + Nevertheless, if you'll continue, declaration will be done.}% + \DeclareLayer[{#1}]{#2}% + }% +} +\newcommand{\ModifyLayers}[2][]{% + \edef\scr@current@layer{#2}% + \@for\scr@current@layer:=\scr@current@layer\do{% + \scr@trim@spaces\scr@current@layer + \ifx\scr@current@layer\@emtpy\else + \edef\scr@current@layer{% + \unexpanded{\ModifyLayer[{#1}]}{\scr@current@layer}% + }% + \scr@current@layer + \fi + }% + \let\scr@current@layer\@empty +} +\newcommand*{\GetLayerContents}[1]{% + \IfLayerExists{#1}{\@nameuse{scr@l@#1@contents}}{% + \PackageError{scrlayer}{unknown layer `#1'}{% + You can ask only for the contents of an existing layer.}% + }% +} +\newcommand*{\DestroyLayer}[1]{% + \IfLayerExists{#1}{% + \expandafter\let\csname scr@l@#1@mode\endcsname\relax + \expandafter\let\csname scr@l@#1@x\endcsname\relax + \expandafter\let\csname scr@l@#1@y\endcsname\relax + \expandafter\let\csname scr@l@#1@w\endcsname\relax + \expandafter\let\csname scr@l@#1@h\endcsname\relax + \expandafter\let\csname scr@l@#1@align\endcsname\relax + \expandafter\let\csname scr@l@#1@contents\endcsname\relax + \expandafter\let\csname if@scr@l@#1@background\endcsname\relax + \expandafter\let\csname @scr@l@#1@backgroundfalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@backgroundtrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@foreground\endcsname\relax + \expandafter\let\csname @scr@l@#1@foregroundfalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@foregroundtrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@odd\endcsname\relax + \expandafter\let\csname @scr@l@#1@oddfalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@oddtrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@even\endcsname\relax + \expandafter\let\csname @scr@l@#1@evenfalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@eventrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@oneside\endcsname\relax + \expandafter\let\csname @scr@l@#1@onesidefalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@onesidetrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@twoside\endcsname\relax + \expandafter\let\csname @scr@l@#1@twosidefalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@twosidetrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@floatpage\endcsname\relax + \expandafter\let\csname @scr@l@#1@floatpagefalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@floatpagetrue\endcsname\relax + \expandafter\let\csname if@scr@l@#1@nonfloatpage\endcsname\relax + \expandafter\let\csname @scr@l@#1@nonfloatpagefalse\endcsname\relax + \expandafter\let\csname @scr@l@#1@nonfloatpagetrue\endcsname\relax + \expandafter\let\csname scr@l@#1@precontents@hook\relax + \expandafter\let\csname scr@l@#1@postcontents@hook\relax + \expandafter\let\csname scr@l@#1@artifact\relax + }{% + }% +} +\newcommand*{\layercontentsmeasure}{% + \smash{\begin{picture}(0,0) + (0,\LenToUnit{% + \if t\layervalign -\ht\strutbox + \else + \if b\layervalign -\dimexpr\layerheight-\dp\strutbox\relax + \else -.5\dimexpr\layerheight+\ht\strutbox-\dp\strutbox\relax + \fi + \fi}) + \setlength{\unitlength}{1mm}% + \put(0,0){\line(1,0){\LenToUnit{\layerwidth}}}% + \@tempcnta=\numexpr \dimexpr\layerwidth + .5mm\relax/\dimexpr 1mm\relax\relax + \multiput(0,0)(1,0){\@tempcnta}{% + \line(0,-1){1}% + }% + \@tempcnta=\numexpr \dimexpr\layerwidth + 2.5mm\relax/\dimexpr 5mm\relax\relax + \multiput(0,0)(5,0){\@tempcnta}{% + \line(0,-1){2}% + }% + \@tempcnta=\numexpr \dimexpr\layerwidth + .5cm\relax/\dimexpr 1cm\relax\relax + \multiput(0,0)(10,0){\@tempcnta}{% + \put(0,0){\line(0,-1){3}}% + \put(0,-3.5){% + \makebox(0,0)[ct]{\the\numexpr\@tempcnta-\@multicnt\relax}}% + }% + \put(0,\LenToUnit{-\layerheight}){\line(1,0){\LenToUnit{\layerwidth}}}% + \@tempcnta=\numexpr \dimexpr\layerwidth + .05in\relax/\dimexpr .1in\relax\relax + \multiput(0,\LenToUnit{-\layerheight})(2.54,0){\@tempcnta}{% + \line(0,1){1}% + }% + \@tempcnta=\numexpr \dimexpr\layerwidth + .25in\relax/\dimexpr .5in\relax\relax + \multiput(0,\LenToUnit{-\layerheight})(12.7,0){\@tempcnta}{% + \line(0,1){2}% + }% + \@tempcnta=\numexpr \dimexpr\layerwidth + .5in\relax/\dimexpr 1in\relax\relax + \multiput(0,\LenToUnit{-\layerheight})(25.4,0){\@tempcnta}{% + \put(0,0){\line(0,1){3}}% + \put(0,3.5){% + \makebox(0,0)[cb]{\the\numexpr\@tempcnta-\@multicnt\relax}}% + }% + \put(0,0){\line(0,-1){\LenToUnit{\layerheight}}}% + \@tempcnta\numexpr \dimexpr\layerheight + .5mm\relax/\dimexpr 1mm\relax\relax + \multiput(0,0)(0,-1){\@tempcnta}{% + \line(1,0){1}% + }% + \@tempcnta\numexpr \dimexpr\layerheight + 2.5mm\relax/\dimexpr 5mm\relax\relax + \multiput(0,0)(0,-5){\@tempcnta}{% + \line(1,0){2}% + }% + \@tempcnta\numexpr \dimexpr\layerheight + .5cm\relax/\dimexpr 1cm\relax\relax + \multiput(0,0)(0,-10){\@tempcnta}{% + \put(0,0){\line(1,0){3}}% + \put(3.5,0){% + \makebox(0,0)[cl]{\the\numexpr\@tempcnta-\@multicnt\relax}}% + }% + \put(\LenToUnit{\layerwidth},0){\line(0,-1){\LenToUnit{\layerheight}}}% + \@tempcnta\numexpr \dimexpr\layerheight + .05in\relax/\dimexpr .1in\relax\relax + \multiput(\LenToUnit{\layerwidth},0)(0,-2.54){\@tempcnta}{% + \line(-1,0){1}% + }% + \@tempcnta\numexpr \dimexpr\layerheight + .25in\relax/\dimexpr .5in\relax\relax + \multiput(\LenToUnit{\layerwidth},0)(0,-12.7){\@tempcnta}{% + \line(-1,0){2}% + }% + \@tempcnta\numexpr \dimexpr\layerheight + .5in\relax/\dimexpr 1in\relax\relax + \multiput(\LenToUnit{\layerwidth},0)(0,-25.4){\@tempcnta}{% + \put(0,0){\line(-1,0){3}}% + \put(-3.5,0){% + \makebox(0,0)[cr]{\the\numexpr\@tempcnta-\@multicnt\relax}}% + }% + \end{picture}}% +} +\providecommand*{\LenToUnit}[1]{\strip@pt\dimexpr#1*\p@/\unitlength} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.definelayerpagestyle]{KOMAarg} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onselect}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @initialhook\endcsname + {#1}% + \let\scr@opt@marker@initialhook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{oninit}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @hook\endcsname + {#1}% + \let\scr@opt@marker@hook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ononeside}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @onesidehook\endcsname + {#1}% + \let\scr@opt@marker@onesidehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ontwoside}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @twosidehook\endcsname + {#1}% + \let\scr@opt@marker@twosidehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onoddpage}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @oddpagehook\endcsname + {#1}% + \let\scr@opt@marker@oddpagehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onevenpage}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @evenpagehook\endcsname + {#1}% + \let\scr@opt@marker@evenpagehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onfloatpage}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @floatpagehook\endcsname + {#1}% + \let\scr@opt@marker@floatpagehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onnonfloatpage}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @nonfloatpagehook\endcsname + {#1}% + \let\scr@opt@marker@nonfloatpagehook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onbackground}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @backgroundhook\endcsname + {#1}% + \let\scr@opt@marker@backgroundhook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onforeground}{% + \expandafter\l@addto@macro + \csname @ps@\scrlayer@current@pagestyle @foregroundhook\endcsname + {#1}% + \let\scr@opt@marker@foregroundhook\FamilyKeyStateProcssed + \FamilyKeyStateProcessed +} +\newcommand*{\DeclarePageStyleByLayers}[3][]{% + \edef\scrlayer@current@pagestyle{\GetRealPageStyle{#2}}% + \expandafter\scrlayer@declare@ps@by@layers\expandafter{% + \scrlayer@current@pagestyle + }{#1}{#3}% +} +\newcommand*{\scrlayer@declare@ps@by@layers}[3]{% + \@namedef{@ps@#1@initialhook}{\@ps@initialhook}% + \@namedef{@ps@#1@hook}{\@ps@hook}% + \@namedef{@ps@#1@backgroundhook}{\@ps@backgroundhook}% + \@namedef{@ps@#1@foregroundhook}{\@ps@foregroundhook}% + \@namedef{@ps@#1@oddpagehook}{\@ps@oddpagehook}% + \@namedef{@ps@#1@evenpagehook}{\@ps@evenpagehook}% + \@namedef{@ps@#1@onesidehook}{\@ps@onesidehook}% + \@namedef{@ps@#1@twosidehook}{\@ps@twosidehook}% + \@namedef{@ps@#1@floatpagehook}{\@ps@floatpagehook}% + \@namedef{@ps@#1@nonfloatpagehook}{\@ps@nonfloatpagehook}% + \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}% + \@namedef{ps@#1}{% + \renewcommand*{\currentpagestyle}{#1}% + \@nameuse{@ps@@everystyle@@initialhook}% + \@nameuse{@ps@#1@initialhook}% + \renewcommand*{\currentpagestyle}{#1}% + \renewcommand*{\@oddhead}{% + \begingroup + \let\headmark\rightmark + \if@ps@singlespacing\linespread{1}\selectfont\fi + \@nameuse{@ps@@everystyle@@hook}% + \@nameuse{@ps@#1@hook}% + \@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}% + \@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}% + \@nameuse{@ps@@everystyle@@oddpagehook}% + \@nameuse{@ps@#1@oddpagehook}% + \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@@everystyle@@backgroundhook}% + \@nameuse{@ps@#1@backgroundhook}% + \parbox[b][\headheight][t]{\textwidth}{% + \vskip \dimexpr -\topmargin-1in + -\ht\strutbox\relax + \hskip \dimexpr -\oddsidemargin-1in\relax + \strut\makebox[\z@][l]{% + \ForEachLayerOfPageStyle{@everystyle@}{% + \scrlayer@do@page@style@element@layer{background}{odd}% + {########1}% + }% + \ForEachLayerOfPageStyle{#1}{% + \scrlayer@do@page@style@element@layer{background}{odd}% + {########1}% + }% + }% + }% + \endgroup + }% + \renewcommand*{\@evenhead}{% + \begingroup + \let\headmark\leftmark + \if@ps@singlespacing\linespread{1}\selectfont\fi + \@nameuse{@ps@@everystyle@@hook}% + \@nameuse{@ps@#1@hook}% + \@nameuse{@ps@@everystyle@@twosidehook}% + \@nameuse{@ps@#1@twosidehook}% + \@nameuse{@ps@@everystyle@@evenpagehook}% + \@nameuse{@ps@#1@evenpagehook}% + \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@@everystyle@@backgroundhook}% + \@nameuse{@ps@#1@backgroundhook}% + \parbox[b][\headheight][t]{\textwidth}{% + \vskip \dimexpr -\topmargin-1in + -\ht\strutbox\relax + \hskip \dimexpr-\evensidemargin-1in\relax + \strut\makebox[\z@][l]{% + \ForEachLayerOfPageStyle{@everystyle@}{% + \scrlayer@do@page@style@element@layer{background}{even}% + {########1}% + }% + \ForEachLayerOfPageStyle{#1}{% + \scrlayer@do@page@style@element@layer{background}{even}% + {########1}% + }% + }% + }% + \endgroup + }% + \renewcommand*{\@oddfoot}{% + \begingroup + \let\headmark\rightmark + \if@ps@singlespacing\linespread{1}\selectfont\fi + \@nameuse{@ps@@everystyle@@hook}% + \@nameuse{@ps@#1@hook}% + \@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}% + \@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}% + \@nameuse{@ps@@everystyle@@oddpagehook}% + \@nameuse{@ps@#1@oddpagehook}% + \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@@everystyle@@foregroundhook}% + \@nameuse{@ps@#1@foregroundhook}% + \parbox[t][\headheight][t]{\textwidth}{% + \vskip \dimexpr -\topmargin-1in + -\headheight + -\headsep + -\textheight + -\footskip + -\ht\strutbox\relax + \hskip \dimexpr -\oddsidemargin-1in\relax + \strut\makebox[\z@][l]{% + \ForEachLayerOfPageStyle{@everystyle@}{% + \scrlayer@do@page@style@element@layer{foreground}{odd}% + {########1}% + }% + \ForEachLayerOfPageStyle{#1}{% + \scrlayer@do@page@style@element@layer{foreground}{odd}% + {########1}% + }% + }% + }% + \endgroup + }% + \renewcommand*{\@evenfoot}{% + \begingroup + \let\headmark\leftmark + \if@ps@singlespacing\linespread{1}\selectfont\fi + \@nameuse{@ps@@everystyle@@hook}% + \@nameuse{@ps@#1@hook}% + \@nameuse{@ps@@everystyle@@twosidehook}% + \@nameuse{@ps@#1@twosidehook}% + \@nameuse{@ps@@everystyle@@evenpagehook}% + \@nameuse{@ps@#1@evenpagehook}% + \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}% + \@nameuse{@ps@@everystyle@@foregroundhook}% + \@nameuse{@ps@#1@foregroundhook}% + \parbox[t][\headheight][t]{\textwidth}{% + \vskip \dimexpr -\topmargin-1in + -\headheight + -\headsep + -\textheight + -\footskip + -\ht\strutbox\relax + \hskip \dimexpr-\evensidemargin-1in\relax + \strut\makebox[\z@][l]{% + \ForEachLayerOfPageStyle{@everystyle@}{% + \scrlayer@do@page@style@element@layer{foreground}{even}% + {########1}% + }% + \ForEachLayerOfPageStyle{#1}{% + \scrlayer@do@page@style@element@layer{foreground}{even}% + {########1}% + }% + }% + }% + \endgroup + }% + }% + \@namedef{@ps@#1@layers}{}% + \@for \reserved@a:=#3\do {% + \scr@trim@spaces\reserved@a + \Ifstr\reserved@a\@empty{}{% + \expandafter\@cons\csname @ps@#1@layers\endcsname{{\reserved@a}}% + }% + }% +} +\newcommand*{\ForEachLayerOfPageStyle}{% + \kernel@ifstar {\@s@ForEachLayerOfPageStyle}{\@ForEachLayerOfPageStyle}% +} +\newcommand*{\@ForEachLayerOfPageStyle}[2]{% + \begingroup + \edef\reserved@a{\GetRealPageStyle{#1}}% + \def\@elt##1{\ifscrlayer@deactivate@layers\else #2\fi}% + \@nameuse{@ps@\reserved@a @layers}% + \endgroup +} +\newcommand*{\@s@ForEachLayerOfPageStyle}[2]{% + \begingroup + \edef\reserved@a{\GetRealPageStyle{#1}}% + \def\reserved@b{\endgroup}% + \def\@elt##1{% + \l@addto@macro\reserved@b{% + \ifscrlayer@deactivate@layers\else #2\fi + }% + }% + \@nameuse{@ps@\reserved@a @layers}% + \reserved@b +} +\newcommand*{\scrlayer@do@page@style@element@layer}[3]{% + \begingroup + \expandafter\ifx\csname if@scr@l@#3@\if@fcolmade\else non\fi floatpage% + \expandafter\endcsname\csname iftrue\endcsname + \expandafter\ifx\csname if@scr@l@#3@\if@twoside two\else one\fi side% + \expandafter\endcsname\csname iftrue\endcsname + \expandafter + \ifx\csname if@scr@l@#3@#1\expandafter\endcsname + \csname iftrue\endcsname + \expandafter + \ifx\csname if@scr@l@#3@#2\expandafter\endcsname + \csname iftrue\endcsname + \ifscrlayer@draft + \scr@layerbox(\csname scr@l@#3@x\endcsname,% + \csname scr@l@#3@y\endcsname)% + (\csname scr@l@#3@w\endcsname,% + \csname scr@l@#3@h\endcsname)% + [\csname scr@l@#3@align\endcsname]% + {% + \scrlayer@predraftmeasure@hook + \scrlayer@beginartifact{}% + \layercontentsmeasure + \scrlayer@endartifact{}% + \scrlayer@postdraftmeasure@hook + }% + \fi + \scr@layerbox(\csname scr@l@#3@x\endcsname,% + \csname scr@l@#3@y\endcsname)% + (\csname scr@l@#3@w\endcsname,% + \csname scr@l@#3@h\endcsname)% + [\csname scr@l@#3@align\endcsname]% + {\csname layer\csname scr@l@#3@mode\endcsname + mode\expandafter\endcsname{% + \csname scr@l@#3@precontents@hook\endcsname + \scr@ifundefinedorrelax{scr@l@#3@artifact}{}{% + \expandafter\expandafter\expandafter + \scrlayer@beginartifact + \expandafter\expandafter\expandafter{% + \csname scr@l@#3@artifact\endcsname + }% + \csname scr@l@#3@contents\endcsname + \expandafter\expandafter\expandafter + \scrlayer@endartifact + \expandafter\expandafter\expandafter{% + \csname scr@l@#3@artifact\endcsname + }% + }{% + \csname scr@l@#3@contents\endcsname + }% + \csname scr@l@#3@postcontents@hook\endcsname + }% + }% + \fi + \fi + \fi + \fi + \endgroup +} +\newcommand*{\scrlayer@predraftmeasure@hook}{} +\newcommand*{\BeforeDraftMeasuringLayer}[1]{% + \edef\scrlayer@predraftmeasure@hook{% + \unexpanded{#1}\unexpanded\expandafter{\scrlayer@predraftmeasure@hook}% + }% +} +\newcommand*{\scrlayer@postdraftmeasure@hook}{} +\newcommand*{\AfterDraftMeasuringLayer}[1]{% + \expandafter\def\expandafter\scrlayer@postdraftmeasure@hook\expandafter{% + \scrlayer@postdraftmeasure@hook #1% + }% +} +\def\scr@layerbox(#1,#2)(#3,#4){% + \kernel@ifnextchar [%] + {\scr@@layerbox(#1,#2)(#3,#4)}{\scr@@layerbox(#1,#2)(#3,#4)[]}% +} +\def\scr@@layerbox(#1,#2)(#3,#4)[#5]#6{% + \begingroup + \protected@edef\layerxoffset{\noexpand\dimexpr #1\relax}% + \protected@edef\layeryoffset{\noexpand\dimexpr #2\relax}% + \protected@edef\layerwidth{\noexpand\dimexpr #3\relax}% + \protected@edef\layerheight{\noexpand\dimexpr #4\relax}% + \def\layervalign{t}% + \def\layerhalign{l}% + \edef\reserved@b{#5}% + \expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=% + \reserved@b\do{% + \if t\reserved@a + \def\layervalign{t}% + \else + \if c\reserved@a + \def\layervalign{c}% + \def\layerhalign{c}% + \else + \if b\reserved@a + \def\layervalign{b}% + \else + \if l\reserved@a + \def\layerhalign{l}% + \else + \if r\reserved@a + \def\layerhalign{r}% + \else + \PackageWarning{scrlayer}{% + Unknown alignment `\reserved@a' ignored}% + \fi + \fi + \fi + \fi + \fi + }% + \parbox[t][\z@][t]{\z@}{% + \vskip\layeryoffset + \if b\layervalign\vskip-\layerheight\fi + \if c\layervalign\vskip-.5\layerheight\fi + \makebox[\z@][\IfRTL{r}{l}]{% + \hskip\layerxoffset + \IfRTL{\hskip\layerwidth}{}% + \makebox[\z@][\layerhalign]{% + \parbox[\layervalign][\layerheight][\layervalign]{\layerwidth}{% + \vskip\z@\strut{% + \ifscrlayer@forceignoreuppercase + \expandafter\let\csname MakeUppercase \endcsname\@firstofone + \let\MakeUppercase\@firstofone + \let\uppercase\@firstofone + \fi + #6% + }\strut\vskip\z@ + }% + }% + }% + }% + \endgroup +} +\newcommand{\layerrawmode}[1]{#1} +\newcommand{\layertextmode}[1]{#1} +\newcommand{\layerpicturemode}[1]{% + \begin{picture}(0,0) + (0,\LenToUnit{% + \if t\layervalign \dimexpr\layerheight-\ht\strutbox\relax + \else + \if b\layervalign \dp\strutbox + \else .5\dimexpr\layerheight-\ht\strutbox+\dp\strutbox\relax + \fi + \fi}) + \long\def\putLL##1{\put(0,0){##1}}% + \long\def\putUL##1{\put(0,\LenToUnit{\layerheight}){##1}}% + \long\def\putLR##1{\put(\LenToUnit{\layerwidth},0){##1}}% + \long\def\putUR##1{\put(\LenToUnit{\layerwidth},% + \LenToUnit{\layerheight}){##1}}% + \long\def\putC##1{\put(\LenToUnit{.5\layerwidth},% + \LenToUnit{.5\layerheight}){##1}}% + #1% + \end{picture}% +} +\newcommand*{\DeclareNewPageStyleByLayers}[2][]{% + \@ifundefined{ps@#2}{}{% + \PackageError{scrlayer}{% + Page style `#2' already defined% + }{% + You may use \string\DeclareNewPageStyleByLayers\space to declare a new + page style only\MessageBreak + if that page style hasn't been declared or defined before.\MessageBreak + You may use either \string\ProvidePageStyleByLayers\space to declare the + page style only\MessageBreak + if it hasn't been declared or defined before, or + \string\RedeclarePageStyleByLayers\MessageBreak + to overwrite the former + declaration or definition of the page style% + \@ifundefined{@ps@#2@layers}{}{,\MessageBreak + or \string\AddLayersToPageStyle\space to add further layers to the + already declared\MessageBreak + page style, or \string\RemoveLayersFromPageStyle\space to remove + layers from the\MessageBreak + already declared page style}.\MessageBreak + Nevertheless, if you'll continue, the page style will be + overwritten\MessageBreak + by the new declaration.% + }% + }% + \DeclarePageStyleByLayers[{#1}]{#2}% +} +\newcommand*{\ProvidePageStyleByLayers}[3][]{% + \@ifundefined{ps@#2}{% + \DeclarePageStyleByLayers[{#1}]{#2}{#3}% + }{% + }% +} +\newcommand*{\RedeclarePageStyleByLayers}[2][]{% + \@ifundefined{ps@#2}{% + \PackageError{scrlayer}{% + Page style `#2' not yet defined% + }{% + You may use \string\RedeclarePageStyleByLayers\space to declare a page + style only\MessageBreak + if that page style has already been declared or defined.\MessageBreak + You may use either \string\DeclareNewPageStyleByLayers, + \string\DeclarePageStyleByLayers,\MessageBreak + or \string\ProvidePageStyleByLayers\space to declare that not yet + defined page style.\MessageBreak + Nevertheless, if you'll continue, the page style will be declared.% + }% + }{}% + \DeclarePageStyleByLayers[{#1}]{#2}% +} +\newcommand*{\AddLayersToPageStyle}[2]{% + \edef\reserved@b{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{\reserved@b}{% + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \Ifstr\reserved@a\@empty{}{% + \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname + {{\reserved@a}}% + }% + }% + }{% + \scrlayer@lpm@error{#1}{adding layers}% + }% +} +\newcommand*{\AddLayersAtEndOfPageStyle}{% + \AddLayersToPageStyle +} +\newcommand*{\AddLayersAtBeginOfPageStyle}[2]{% + \begingroup + \let\@cons\@snoc + \AddLayersToPageStyle{#1}{#2}% + \endgroup +} +\newcommand*{\@snoc}[2]{% + \begingroup\let\@elt\relax\xdef#1{\@elt #2#1}\endgroup +} +\newcommand*{\RemoveLayersFromPageStyle}[2]{% + \edef\reserved@b{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{#1}{% + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \Ifstr\reserved@a\@empty{}{% + \expandafter\remove@layer@from@page@style\expandafter{\reserved@a}% + {\reserved@b}% + }% + }% + }{% + \scrlayer@lpm@error{#1}{removing layers}% + }% +} +\newcommand*{\remove@layer@from@page@style}[2]{% + \begingroup + \expandafter\let\expandafter\reserved@a\csname @ps@#2@layers\endcsname + \expandafter\global\expandafter\let\csname @ps@#2@layers\endcsname\@empty + \def\@elt##1{% + \Ifstr{#1}{##1}{}{% + \expandafter\@cons\csname @ps@#2@layers\endcsname{{##1}}% + }% + }\reserved@a + \endgroup +} +\newcommand*{\scrlayer@lpm@error}[2]{% + \PackageError{scrlayer}{`#1' is not a layer page style}{% + \scr@ifundefinedorrelax{ps@#1}{% + Page style `#1' is not defined, + }{% + Page style `#1' is not a layer page style, + }% + but #2\MessageBreak + may be used only for layer page styles declared using\MessageBreak + \string\DeclarePageStyleByLayers, + \string\DeclareNewPageStyleByLayers,\MessageBreak + of \string\ProvidePageStyleByLayers.\MessageBreak + If you'll continue, your operation will be ignored.% + }% +} +\newcommand*{\AddLayersToPageStyleAfterLayer}[3]{% + \edef\reserved@b{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{\reserved@b}{% + \begingroup + \expandafter\let\expandafter\reserved@a + \csname @ps@\reserved@b @layers\endcsname + \@namedef{@ps@\reserved@b @layers}{}% + \def\@elt##1{% + \Ifstr{##1}\@empty{}{% + \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}% + \Ifstr{##1}{#3}{% + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \Ifstr\reserved@a\@empty{}{% + \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname + {{\reserved@a}}% + }% + }% + }{}% + }% + }% + \reserved@a + \endgroup + }{% + \scrlayer@lpm@error{#1}{adding layers}% + }% +} +\newcommand*{\AddLayersToPageStyleBeforeLayer}[3]{% + \edef\reserved@b{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{\reserved@b}{% + \begingroup + \expandafter\let\expandafter\reserved@a + \csname @ps@\reserved@b @layers\endcsname + \@namedef{@ps@\reserved@b @layers}{}% + \def\@elt##1{% + \Ifstr{##1}\@empty{}{% + \Ifstr{##1}{#3}{% + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \Ifstr\reserved@a\@empty{}{% + \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname + {{\reserved@a}}% + }% + }% + }{}% + \expandafter\@cons\csname @ps@#1@layers\endcsname{{##1}}% + }% + }% + \reserved@a + \endgroup + }{% + \scrlayer@lpm@error{#1}{adding layers}% + }% +} +\newcommand*{\UnifyLayersAtPageStyle}[1]{% + \edef\reserved@b{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{\reserved@b}{% + \expandafter\let\expandafter\reserved@a + \csname @ps@\reserved@b @layers\endcsname + \@namedef{@ps@\reserved@b @layers}{}% + \begingroup + \def\@elt##1{% + \Ifstr{##1}\@empty{}{% + \remove@layer@from@page@style{##1}{\reserved@b}% + \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}% + }% + }% + \reserved@a + \endgroup + }{% + \scrlayer@lpm@error{#1}{unifying}% + }% +} +\newcommand*{\ModifyLayerPageStyleOptions}[2]{% + \edef\reserved@a{\GetRealPageStyle{#1}}% + \IfLayerPageStyleExists{#1}{% + \expandafter\scrlayer@modify@layer@ps@options\expandafter{% + \reserved@a + }{#2}% + }{% + \scrlayer@lpm@error{#1}{modifying}% + }% +} +\newcommand*{\scrlayer@modify@layer@ps@options}[2]{% + \begingroup + \def\scrlayer@current@pagestyle{#1}% + \@namedef{@ps@#1@initialhook}{}% + \@namedef{@ps@#1@hook}{}% + \@namedef{@ps@#1@backgroundhook}{}% + \@namedef{@ps@#1@foregroundhook}{}% + \@namedef{@ps@#1@oddpagehook}{}% + \@namedef{@ps@#1@evenpagehook}{}% + \@namedef{@ps@#1@onesidehook}{}% + \@namedef{@ps@#1@twosidehook}{}% + \@namedef{@ps@#1@floatpagehook}{}% + \@namedef{@ps@#1@nonfloatpagehook}{}% + \let\scr@opt@marker@initialhook\@empty + \let\scr@opt@marker@hook\@empty + \let\scr@opt@marker@backgroundhook\@empty + \let\scr@opt@marker@foregroundhook\@empty + \let\scr@opt@marker@oddpagehook\@empty + \let\scr@opt@marker@evenpagehook\@empty + \let\scr@opt@marker@onesidehook\@empty + \let\scr@opt@marker@twosidehook\@empty + \let\scr@opt@marker@floatpagehook\@empty + \let\scr@opt@marker@nonfloatpagehook\@empty + \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}% + \def\reserved@a{\endgroup}% + \def\@sls@##1{% + \expandafter\ifx \csname scr@opt@marker@##1hook\endcsname\@empty\else + \expandafter\let\expandafter\reserved@b\csname @ps@#1@##1hook\endcsname + \l@addto@macro\reserved@a{\@namedef{@ps@#1@##1hook}}% + \expandafter\l@addto@macro\expandafter\reserved@a\expandafter{% + \expandafter{% + \reserved@b + }% + }% + \fi + }% + \@sls@{initial}% + \@sls@{}% + \@sls@{background}% + \@sls@{foreground}% + \@sls@{oddpage}% + \@sls@{evenpage}% + \@sls@{oneside}% + \@sls@{twoside}% + \@sls@{floatpage}% + \@sls@{nonfloatpage}% + \reserved@a +} +\newcommand*{\AddToLayerPageStyleOptions}[2]{% + \IfLayerPageStyleExists{#1}{% + \def\scrlayer@current@pagestyle{#1}% + \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}% + }{% + \scrlayer@lpm@error{#1}{modifying}% + }% +} +\RequirePackage{scrlfile} +\BeforePackage{tagpdf}{% + \let\scrlayer@beginartifact\relax + \let\scrlayer@endartifact\relax +} +\AfterPackage*{tagpdf}{% + \providecommand*{\scrlayer@beginartifact}[1]{% + \Ifstr{#1}{}{% + \tagmcbegin{artifact}% + }{% + \tagmcbegin{artifact=#1}% + }% + }% + \providecommand*{\scrlayer@endartifact}[1]{% + \tagmcend + }% +} +\providecommand*{\scrlayer@beginartifact}[1]{} +\providecommand*{\scrlayer@endartifact}[1]{} +\newcommand*{\DeclarePageStyleAlias}[2]{% + \edef\reserved@a{\GetRealPageStyle{#2}}% + \scr@ifundefinedorrelax{ps@\reserved@a}{% + \PackageError{scrlayer}{unknown real page style `#2'}{% + You've tried to declare an alias for page style `#2',\MessageBreak + but the real page style of `#2' is undefined.\MessageBreak + You can define aliases, only if the real page style has been + defined.\MessageBreak + If you'll continue, the declaration will be ignored.% + }% + \DestroyRealLayerPageStyle{#1}% + \DestroyLayerAlias{#1}% + }{% + \@namedef{@ps@#1@alias}{#2}% + \@namedef{ps@#1}{\pagestyle{\@nameuse{@ps@#1@alias}}}% + }% +} +\newcommand*{\DeclareNewPageStyleAlias}[1]{% + \@ifundefined{ps@#1}{}{% + \PackageError{scrlayer}{% + Page style `#1' already defined% + }{% + You may use \string\DeclareNewPageStyleAlias\space to declare a new + page style only\MessageBreak + if that page style hasn't been declared or defined before.\MessageBreak + You may use either \string\ProvidePageStyleAlias\space to declare the + page style only\MessageBreak + if it hasn't been declared or defined before, or + \string\RedeclarePageStyleAlias\MessageBreak + to overwrite the former declaration or definition of the page + style\MessageBreak + Nevertheless, if you'll continue, the page style will be + overwritten\MessageBreak + by the new alias.% + }% + }% + \DeclarePageStyleAlias{#1}% +} +\newcommand*{\ProvidePageStyleAlias}[2]{% + \@ifundefined{ps@#1}{% + \DeclarePageStyleAlias{#1}{#2}% + }{% + }% +} +\newcommand*{\RedeclarePageStyleAlias}[1]{% + \@ifundefined{ps@#1}{% + \PackageError{scrlayer}{% + Page style `#1' not yet defined% + }{% + You may use \string\RedeclarePageStyleAlias\space to declare a page + style only\MessageBreak + if that page style has already been declared or defined.\MessageBreak + You may use either \string\DeclareNewPageStyleAlias, + \string\DeclarePageStyleAlias,\MessageBreak + or \string\ProvidePageStyleAlias\space to declare that not yet + defined page style.\MessageBreak + Nevertheless, if you'll continue, the page style will be declared.% + }% + }{}% + \DeclarePageStyleAlias{#1}% +} +\newcommand*{\DestroyPageStyleAlias}[1]{% + \scr@ifundefinedorrelax{@ps@#1@alias}{}{% + \expandafter\let\csname @ps@#1@alias\endcsname\relax + \expandafter\let\csname ps@#1\endcsname\relax + }% +} +\newcommand*{\GetRealPageStyle}[1]{% + \scr@ifundefinedorrelax{@ps@#1@alias}{#1}{% + \expandafter\GetRealPageStyle\expandafter{% + \expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}% + }% +} +\newcommand*{\IfLayerPageStyleExists}[1]{% + \scr@ifundefinedorrelax{ps@#1}{% + \expandafter\@secondoftwo + }{% + \scr@ifundefinedorrelax{@ps@#1@layers}{% + \scr@ifundefinedorrelax{@ps@#1@alias}{% + \expandafter\@secondoftwo + }{% + \expandafter\IfLayerPageStyleExists\expandafter{% + \expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}% + }% + }{% + \expandafter\@firstoftwo + }% + }% +} +\newcommand*{\IfRealLayerPageStyleExists}[1]{% + \scr@ifundefinedorrelax{ps@#1}{% + \expandafter\@secondoftwo + }{% + \scr@ifundefinedorrelax{@ps@#1@layers}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% + }% +} +\newcommand*{\IfLayerAtPageStyle}[2]{% + \IfLayerPageStyleExists{#1}{% + \begingroup + \edef\reserved@a{\GetRealPageStyle{#1}}% + \@tempswafalse + \Ifstr{#2}{}{% + \expandafter\ifx\csname @ps@\reserved@a @layers\endcsname\@empty + \@tempswatrue + \fi + }{% + \expandafter\ForEachLayerOfPageStyle\expandafter{% + \reserved@a}{\Ifstr{##1}{#2}{\aftergroup\@tempswatrue}{}}% + }% + \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi + \expandafter\endgroup + }{% + \scrlayer@lpm@error{#1}{testing for layers}% + \expandafter\@gobbletwo + }% +} +\newcommand*{\IfSomeLayersAtPageStyle}[2]{% + \IfLayerPageStyleExists{#1}{% + \begingroup + \@tempswafalse + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}% + \reserved@a{\@tempswatrue}{}% + }% + \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi + \expandafter\endgroup + }{% + \scrlayer@lpm@error{#1}{testing for layers}% + \expandafter\@gobbletwo + }% +} +\newcommand*{\IfLayersAtPageStyle}[2]{% + \IfLayerPageStyleExists{#1}{% + \begingroup + \@tempswatrue + \Ifstr{#2}{}{% + \edef\reserved@a{\GetRealPageStyle{#1}}% + \expandafter\ifx\csname @scr@\reserved@a @layers\endcsname\@empty \else + \@tempswafalse + \fi + }{% + \@for \reserved@a:=#2\do {% + \scr@trim@spaces\reserved@a + \edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}% + \reserved@a{}{\@tempswafalse}% + }% + }% + \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi + \expandafter\endgroup + }{% + \scrlayer@lpm@error{#1}{testing for layers}% + \expandafter\@gobbletwo + }% +} +\newcommand*{\DestroyRealLayerPageStyle}[1]{% + \IfRealLayerPageStyleExists{#1}{% + \expandafter\let\csname @ps@#1@initialhook\endcsname\relax + \expandafter\let\csname @ps@#1@hook\endcsname\relax + \expandafter\let\csname @ps@#1@backgroundhook\endcsname\relax + \expandafter\let\csname @ps@#1@foregroundhook\endcsname\relax + \expandafter\let\csname @ps@#1@oddpagehook\endcsname\relax + \expandafter\let\csname @ps@#1@evenpagehook\endcsname\relax + \expandafter\let\csname @ps@#1@onesidehook\endcsname\relax + \expandafter\let\csname @ps@#1@twosidehook\endcsname\relax + \expandafter\let\csname @ps@#1@floatpagehook\endcsname\relax + \expandafter\let\csname @ps@#1@nonfloatpagehook\endcsname\relax + \expandafter\let\csname @ps@#1@layers\endcsname\relax + \expandafter\let\csname ps@#1\endcsname\relax + \Ifstr{\currentpagestyle}{#1}{% + \def\currentpagestyle{scrlayer@empty}% + \let\@oddhead\@empty\let\@evenhead\@empty + \let\@oddfoot\@empty\let\@evenfoot\@empty + }{}% + \if@specialpage + \Ifstr{\@specialstyle}{#1}{% + \global\let\@specialstyle\relax + \global\@specialpagefalse + }{}% + \fi + }{% + }% +} +\newcommand*{\currentpagestyle}{} +\PackageInfo{scrlayer}{patching LaTeX kernel macro \string\pagestyle} +\def\reserved@a{% + \iftoplevelpagestyle\edef\toplevelpagestyle{##1}\toplevelpagestylefalse\fi + \scrlayer@exec@before@pagestyle@hook{##1}% +} +\expandafter\expandafter\expandafter\renewcommand +\expandafter\expandafter\expandafter*% +\expandafter\expandafter\expandafter\pagestyle +\expandafter\expandafter\expandafter[% +\expandafter\expandafter\expandafter1% +\expandafter\expandafter\expandafter]% +\expandafter\expandafter\expandafter{% + \expandafter\reserved@a + \pagestyle{#1}% + \edef\currentpagestyle{\GetRealPageStyle{#1}}% + \scrlayer@exec@after@pagestyle@hook{#1}% + \toplevelpagestyletrue +} +\newif\iftoplevelpagestyle\toplevelpagestyletrue +\AtBeginDocument{% + \begingroup + \let\scrlayer@exec@before@pagestyle@hook\@gobble + \let\scrlayer@exec@after@pagestyle@hook\@gobble + \def\ps@test{}% + \pagestyle{test}% + \Ifstr{\currentpagestyle}{test}{}{% + \PackageError{scrlayer}{package incompatibility detected}{% + Another package redefines \string\pagestyle\space incompatible with + scrlayer.\MessageBreak + This disables setting of \string\currentpagestyle\space and may + be serious.\MessageBreak + Maybe you could prevent this loading package scrlayer + later.\MessageBreak + If not you should either not use scrlayer or not the other + package,\MessageBreak + that redefines \string\pagestyle.% + }% + }% + \endgroup +} +\newcommand*{\BeforeSelectAnyPageStyle}[1]{% + \expandafter\renewcommand\expandafter*% + \expandafter\scrlayer@exec@before@pagestyle@hook + \expandafter[\expandafter1\expandafter]\expandafter{% + \scrlayer@exec@before@pagestyle@hook{##1}#1}% +} +\newcommand*{\scrlayer@exec@before@pagestyle@hook}[1]{} +\newcommand*{\AfterSelectAnyPageStyle}[1]{% + \expandafter\renewcommand\expandafter*% + \expandafter\scrlayer@exec@after@pagestyle@hook + \expandafter[\expandafter1\expandafter]\expandafter{% + \scrlayer@exec@after@pagestyle@hook{##1}#1}% +} +\newcommand*{\scrlayer@exec@after@pagestyle@hook}[1]{} +\newcommand*{\scrlayerAddToInterface}[2][\@currname.\@currext]{% + \scrlayer@report@deprecated{#1}{\scrlayerAddToInterface}% + \begingroup + \edef\reserve@a{% + \noexpand\scrlayerAddCsToInterface[#1]{\expandafter\@gobble\string #2}% + }% + \expandafter\endgroup\reserve@a +} +\newcommand{\scrlayerAddCsToInterface}[3][\@currname.\@currext]{% + \scrlayer@report@deprecated{#1}{\scrlayerAddCsToInterface}% + \@ifundefined{scrlayer@#1@commandlist}{% + \PackageError{scrlayer}{unkown interface `#1'}{% + I've been told to add a command sequence to an interface, that hasn't + been\MessageBreak + defined yet. Please initialise every interface using + \string\InitInterface\space before\MessageBreak + trying to add command sequences to it.\MessageBreak + If you'll continue, the command will be ignored.% + }% + }{% + \@ifundefined{#2}{% + \scrlayer@AddCsToInterface[#1]{#2}#3% + }{% + \@ifundefined{scrlayer@command@#2}{% + \ifscrlayer@forceoverwrite + \PackageWarning{scrlayer}{% + Overloading `\@backslashchar#2'!\MessageBreak + scrlayer detected, that the given command\MessageBreak + has been defined already, when\MessageBreak + `#1' tried to define it again.\MessageBreak + Nevertheless, while scrlayer is in force overwrite\MessageBreak + mode currently, the original definition will be\MessageBreak + removed% + }% + \expandafter\let\csname #2\endcsname\relax + \scrlayer@AddCsToInterface[#1]{#2}#3% + \else + \PackageError{scrlayer}{cannot define `\@backslashchar#2'}{% + scrlayer interface `#1' has tried to + define command\MessageBreak + `\@backslashchar#2', but this has already been defined\MessageBreak + and is not part of another interface. So it cannot be + defined.\MessageBreak + Before continuing you should solve this conflict.\MessageBreak + Nevertheless, you may use option `forceoverwrite' to get only a + warning instead\MessageBreak + of an error. But this wouldn't solve the problem at + all!\MessageBreak + This error is almost fatal, so you should abort the LaTeX + run.% + }% + \fi + }{% + \ifscrlayer@autoremoveinterfaces + \PackageInfo{scrlayer}{% + already define interface command\MessageBreak + `\@backslashchar#2' detected.\MessageBreak + Command has been defined by interface\MessageBreak + `\@nameuse{scrlayer@command@#2}'.\MessageBreak + To continue installation of interface\MessageBreak + `#1', interface\MessageBreak + `\@nameuse{scrlayer@command@#2}' will\MessageBreak + be removed% + }% + \@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@onremove}% + \begingroup + \def\@elt##1{% + \aftergroup\let\aftergroup##1\aftergroup\relax + }% + \@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@commandlist}% + \endgroup + \expandafter\let\csname + scrlayer@\@nameuse{scrlayer@command@#2}@commandlist\endcsname\relax + \expandafter\let\csname + scrlayer@\@nameuse{scrlayer@command@#2}@onremove\endcsname\relax + \expandafter\let\csname #2\endcsname\relax + \scrlayer@AddCsToInterface[#1]{#2}#3% + \else + \PackageError{scrlayer}{cannot define `\@backslashchar#2'}{% + Interface command `\@backslashchar#2' has already + been\MessageBreak + defined by interface + `\@nameuse{scrlayer@command@#2}'.\MessageBreak + So it cannot be defined again.\MessageBreak + You may try scrlayer option `autoremoveinterfaces' to + automatically remove\MessageBreak + older interfaces in such conflict situations.\MessageBreak + For now, it's recommended so solve the problem before you'll + continue.% + }% + \fi + }% + }% + }% +}% +\newcommand*\scrlayer@AddCsToInterface[2][\@currname.\@currext]{% + \scrlayer@report@deprecated{#1}{\scrlayer@AddCsToInterface}% + \expandafter\expandafter\expandafter\def\expandafter + \csname scrlayer@#1@commandlist\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter{% + \csname scrlayer@#1@commandlist\expandafter\endcsname + \expandafter\@elt\csname #2\endcsname + }% + \@namedef{scrlayer@command@#2}{#1}% +} +\newcommand*{\scrlayerInitInterface}[1][\@currname.\@currext]{% + \scrlayer@report@deprecated{#1}{\scrlayerInitInterface}% + \@ifundefined{scrlayer@#1@commandlist}{% + \@namedef{scrlayer@#1@commandlist}{}% + }{% + \begingroup + \def\@elt##1{\space\space\string##1\MessageBreak}% + \PackageError{scrlayer}{interface `#1' already initialised}{% + You've tried to initialise scrlayer interface `#1',\MessageBreak + but an interface of this name has been initialised + already.\MessageBreak + Here's a list of all macros of the already initialised + interface:\MessageBreak + \@nameuse{scrlayer@#1@commandlist}.% + If you'll continue, this re-initialisation will be ignored.% + }% + \endgroup + }% +} +\newcommand*{\scrlayerOnAutoRemoveInterface}[2][\@currname.\@currext]{% + \scrlayer@report@deprecated{#1}{\scrlayerOnAutoRemoveInterface}% + \@ifundefined{scrlayer@#1@onremove}{\@namedef{scrlayer@#1@onremove}{}}{}% + \expandafter\l@addto@macro\csname scrlayer@#1@onremove\endcsname{#2}% +} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: final) +\DeclareNewPageStyleByLayers{@everystyle@}{} +\RedeclarePageStyleByLayers{empty}{} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlayer.sty'. diff --git a/texmf/tex/latex/koma-script/scrletter.cls b/texmf/tex/latex/koma-script/scrletter.cls new file mode 100644 index 000000000..d8db339a9 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrletter.cls @@ -0,0 +1,90 @@ +%% +%% This is file `scrletter.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,letter,long') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrartcl% +} +\newcommand*{\ClassName}{% + article% +} +\newcommand*{\KOMALongClassName}{} +\def\KOMALongClassName{scrletter} +\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension} +\edef\KOMALongClassFileName{\KOMALongClassFileName} +\ProvidesClass{\KOMALongClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +\let\ClassName\relax +\providecommand*{\@ptsize}{12} +\expandafter\let\expandafter\KOMAClassName\expandafter\relax +\expandafter\LoadClassWithOptions\expandafter{\KOMAClassName} +\RequirePackage{scrletter} +\endinput +%% +%% End of file `scrletter.cls'. diff --git a/texmf/tex/latex/koma-script/scrletter.sty b/texmf/tex/latex/koma-script/scrletter.sty new file mode 100644 index 000000000..a4c6bf010 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrletter.sty @@ -0,0 +1,3111 @@ +%% +%% This is file `scrletter.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,letter') +%% scrkernel-basics.dtx (with options: `package,load') +%% scrkernel-miscellaneous.dtx (with options: `package,letter,init') +%% scrkernel-typearea.dtx (with options: `package,letter,init') +%% scrkernel-miscellaneous.dtx (with options: `package,letter,option') +%% scrkernel-letterclassoptions.dtx (with options: `package,letter,option') +%% scrkernel-language.dtx (with options: `package,letter,option') +%% scrkernel-fonts.dtx (with options: `package,letter,option') +%% scrkernel-variables.dtx (with options: `package,letter,option') +%% scrkernel-pseudolengths.dtx (with options: `package,letter,option') +%% scrkernel-pagestyles.dtx (with options: `package,letter,option') +%% scrkernel-notepaper.dtx (with options: `package,letter,option') +%% scrkernel-addressfiles.dtx (with options: `package,letter,option') +%% scrkernel-miscellaneous.dtx (with options: `package,letter,execoption') +%% scrkernel-fonts.dtx (with options: `package,letter,body') +%% scrkernel-miscellaneous.dtx (with options: `package,letter,body') +%% scrkernel-letterclassoptions.dtx (with options: `package,letter,body') +%% scrkernel-language.dtx (with options: `package,letter,body') +%% scrkernel-variables.dtx (with options: `package,letter,body') +%% scrkernel-pseudolengths.dtx (with options: `package,letter,body') +%% scrkernel-pagestyles.dtx (with options: `package,letter,body') +%% scrkernel-notepaper.dtx (with options: `package,letter,body') +%% scrkernel-addressfiles.dtx (with options: `package,letter,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +\ProvidesPackage{scrletter}[% + 2022/07/04 v3.37 KOMA-Script + letter package extending any KOMA-Script class% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: init) +\scr@ifundefinedorrelax{KOMAClassName}{% + \PackageWarningNoLine{scrletter}{% + Cannot detect any KOMA-Script class.\MessageBreak + Package `scrletter' is an extension to\MessageBreak + KOMA-Script classes.\MessageBreak + Usage with another class is not recommended% + \@ifclassloaded{article}{}{% + \@ifclassloaded{report}{}{% + \@ifclassloaded{book}{}{% + \MessageBreak and can result in several errors% + }% + }% + }% + }% + \RequirePackage{scrextend}% + \providecommand*{\setparsizes}[3]{% + \setlength{\parindent}{#1}% + \setlength{\parskip}{#2}% + \setlength{\parfillskip}{#3}% + } + \providecommand*{\par@updaterelative}{} +}{} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\AtEndOfPackage + {\LoadLetterOption{DIN}} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@orgdate\@orgdatetrue +\KOMA@key{numericaldate}[true]{% + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi + \KOMA@set@ifkey{numericaldate}{@orgdate}{#1}% + \KOMA@kav@replacebool{.% + scrletter.\scr@pkgextension + }{numericaldate}{@orgdate}% + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{numericaldate}{true} +\KOMA@DeclareDeprecatedOption{scrdate}{numericaldate=true} +\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-variables.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-pseudolengths.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{firsthead}{@firsthead} +\KOMAExecuteOptions{firsthead=true} +\newcommand*{\@alignfrom}{0} +\KOMA@key{fromalign}{% + \KOMA@set@ncmdkey{fromalign}{@alignfrom}{% + {left}{0},% + {center}{1},{centered}{1},{middle}{1},% + {right}{2},% + {locationleft}{3},{leftlocation}{3},% + {locationright}{4},{rightlocation}{4},{location}{4},% + {no}{10000},{false}{10000},{off}{10000}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrletter.\scr@pkgextension + }{fromalign}{#1}% + \ifcase\@alignfrom\or\or\or\@firstheadfalse\or\@firstheadfalse\fi + \fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{fromalign}{left} +\KOMA@ncmdkey{fromrule}[below]{@rulefrom}{% + {false}{0},{no}{0},{off}{0},{aftername}{1},% + {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}% +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{fromrule}{false} +\KOMA@ifkey{fromphone}{@phone} +\KOMA@ifkey{frommobilephone}{@mobilephone} +\KOMA@ifkey{fromfax}{@fax} +\KOMA@ifkey{fromemail}{@email} +\KOMA@ifkey{fromurl}{@www} +\KOMA@ifkey{fromlogo}{@logo} +\newcommand*{\@afieldmode}{\@ne} +\KOMA@ncmdkey{addrfield}[true]{@afieldmode}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {PP}{2},{pp}{2},% + {PPexplicite}{2},{PPExplicite}{2},% + {ppexplicite}{2},{ppExplicite}{2},% + {backgroundimage}{3},% + {PPbackgroundimage}{3},{PPBackgroundImage}{3},{PPBackGroundImage}{3},% + {ppbackgroundimage}{3},{ppBackgroundImage}{3},{ppBackGroundImage}{3},% + {image}{4},{Image}{4},% + {PPimage}{4},{PPImage}{4},% + {ppimage}{4},{ppImage}{4},% + {topaligned}{5},{alignedtop}{5}% +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{addrfield}{true} +\KOMA@ncmdkey{priority}[A]{ltr@priority}{% + {no}{0},{off}{0},{false}{0},{manual}{0},% + {B}{1},{b}{1},% + {economy}{1},{Economy}{1},{ECONOMY}{1},% + {B-ECONOMY}{1},{B-Economy}{1},{b-economy}{1},% + {A}{2},{a}{2},% + {priority}{2},{Priority}{2},{PRIORITY}{2},% + {A-PRIORITY}{2},{A-Priority}{2},{a-priority}{2}% +}% +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{priority}{false} +\newcommand{\backaddr@format}[1]{} +\let\backaddr@format\underline +\newif\if@baddr\@baddrtrue +\KOMA@key{backaddress}[true]{% + \begingroup + \KOMA@set@ncmdkey{backaddress}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {underlined}{2},% + {plain}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa + \endgroup + \@baddrfalse + \or + \endgroup + \@baddrtrue + \or + \endgroup + \@baddrtrue + \let\backaddr@format\underline + \or + \endgroup + \@baddrtrue + \let\backaddr@format\@firstofone + \else + \endgroup + \fi + \if@baddr + \ifx\backaddr@format\underline + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{backaddress}{underlined}% + \else + \ifx\backaddr@format\@firstofone + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{backaddress}{plain}% + \else + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{backaddress}{true}% + \fi + \fi + \else + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{backaddress}{false}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\newif\if@bigloc +\KOMA@key{locfield}[wide]{% + \begingroup + \KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase\@tempa + \endgroup + \@bigloctrue + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{locfield}{wide}% + \else + \endgroup + \@biglocfalse + \KOMA@kav@replacevalue{.% + scrletter.\scr@pkgextension + }{locfield}{narrow}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{locfield}{narrow} +\KOMA@DeclareDeprecatedOption{wlocfield}{locfield=wide} +\KOMA@DeclareDeprecatedOption{slocfield}{locfield=narrow} + +\newif\if@fold\@foldtrue +\newcommand*{\@usefolds}{TMBPL} +\KOMA@key{foldmarks}[true]{% + \begingroup + \KOMA@set@ifkey\@empty{@fold}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@fold\aftergroup\@foldtrue\else\aftergroup\@foldfalse\fi + \aftergroup\FamilyKeyStateProcessed + \else + \aftergroup\FamilyKeyStateProcessed + \def\sc@nf@ldch@rs##1{% + \ifx ##1\@nil\else + \if ##1T\g@addto@macro\@usefolds{##1}\else + \if ##1M\g@addto@macro\@usefolds{##1}\else + \if ##1B\g@addto@macro\@usefolds{##1}\else + \if ##1P\g@addto@macro\@usefolds{##1}\else + \if ##1L\g@addto@macro\@usefolds{##1}\else + \if ##1V\g@addto@macro\@usefolds{L}\else + \if ##1H\g@addto@macro\@usefolds{TMBP}\else + \if ##1t\scr@removechar\@usefolds{T}\else + \if ##1m\scr@removechar\@usefolds{M}\else + \if ##1b\scr@removechar\@usefolds{B}\else + \if ##1p\scr@removechar\@usefolds{P}\else + \if ##1l\scr@removechar\@usefolds{L}\else + \if ##1v% + \scr@removechar\@usefolds{L}% + \else + \if ##1h% + \scr@removechar\@usefolds{T}% + \scr@removechar\@usefolds{M}% + \scr@removechar\@usefolds{B}% + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \expandafter\sc@nf@ldch@rs + \fi + }% + \expandafter\sc@nf@ldch@rs#1\@nil + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrletter.\scr@pkgextension + }{foldmarks}{\@usefolds}% + \KOMA@kav@xadd{.% + scrletter.\scr@pkgextension + }{foldmarks}{\if@fold true\else false\fi}% + \fi +} +\KOMA@kav@xadd{.% + scrletter.\scr@pkgextension +}{foldmarks}{\@usefolds}% +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{foldmarks}{true}% +\newcommand*{\scr@removechar}[2]{% + \def\in@@##1#2##2##3\in@@{% + \ifx\in@##2\else + \def\in@@####1#2\in@{\gdef#1{##1####1}}% + \in@@##2##3% + \fi}% + \expandafter\in@@#1#2\in@\in@@ +} +\newif\if@refwide +\newif\if@refline\@reflinetrue +\newcommand*{\@datepos}{1} +\KOMA@key{refline}[wide]{% + \begingroup + \KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1},% + {dateleft}{2},{leftdate}{2},% + {dateright}{3},{rightdate}{3},% + {nodate}{4}% + ,{no}{5},{off}{5},{false}{5}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa% wide + \endgroup + \@refwidetrue + \@reflinetrue + \KOMA@kav@remove{.scrletter.\scr@pkgextension}{refline}{false}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{wide}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{narrow}% + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{refline}{wide}% + \or% narrow + \endgroup + \@refwidefalse + \@reflinetrue + \KOMA@kav@remove{.scrletter.\scr@pkgextension}{refline}{false}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{wide}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{narrow}% + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{refline}{narrow}% + \or% dateleft + \endgroup + \def\@datepos{2}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateleft}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateright}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{nodate}% + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{refline}{dateleft}% + \or% dateright + \endgroup + \def\@datepos{1}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateleft}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateright}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{nodate}% + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{refline}{dateright}% + \or% nodate + \endgroup + \def\@datepos{0}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateleft}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{dateright}% + \KOMA@kav@remove{.% + scrletter.\scr@pkgextension + }{refline}{nodate}% + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{refline}{nodate}% + \or% false + \endgroup + \@reflinefalse + \KOMA@kav@remove{.scrletter.\scr@pkgextension}{refline}{wide}% + \KOMA@kav@remove{.scrletter.\scr@pkgextension}{reline}{narrow}% + \KOMA@kav@add{.scrletter.\scr@pkgextension}{refline}{false}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{refline}{dateright}% +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{refline}{narrow}% +\newcommand{\subject@format}[1]{#1} +\newcommand*{\raggedsubject}{} +\newif\if@subj +\newif\if@subjafter +\KOMA@key{subject}{% + \begingroup + \KOMA@set@ncmdkey{subject}{@tempa}{% + {titled}{0},% + {untitled}{1},% + {afteropening}{2},% + {beforeopening}{3},% + {underlined}{4},% + {left}{5},% + {right}{6},% + {centered}{7}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa + \aftergroup\@subjtrue + \or + \aftergroup\@subjfalse + \or + \aftergroup\@subjaftertrue + \or + \aftergroup\@subjafterfalse + \or + \aftergroup\let\aftergroup\subject@format\aftergroup\underline + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedright + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedleft + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\centering + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrletter.\scr@pkgextension + }{subject}{\if@subj titled\else untitled\fi}% + \KOMA@kav@xadd{.% + scrletter.\scr@pkgextension + }{subject}{\if@subjafter after\else before\fi opening}% + \ifx\subject@format\underline + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{subject}{underlined}% + \fi + \ifx\raggedsubject\raggedright + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{subject}{left}% + \else + \ifx\raggedsubject\raggedleft + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{subject}{right}% + \else + \ifx\raggedsubject\centering + \KOMA@kav@add{.% + scrletter.\scr@pkgextension + }{subject}{centered}% + \fi + \fi + \fi + \fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{subject}{untitled}% +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{subject}{beforeopening}% +\KOMA@ifkey{enlargefirstpage}{@enlargefp} +\KOMA@ifkey{firstfoot}{@firstfoot}\@firstfoottrue +\newcommand*{\@pageat}{4} +\KOMA@key{pagenumber}{% + \begingroup + \KOMA@set@ncmdkey{pagenumber}{@tempa}{% + {no}{-1},{off}{-1},{false}{-1},% + {topleft}{0},{headleft}{0},% + {topmiddle}{1},{topcenter}{1},{topcentered}{1},% + {headmiddle}{1},{headcenter}{1},{headcentered}{1},% + {topright}{2},{headright}{2},% + {botleft}{3},{footleft}{3},% + {botmiddle}{4},{botcenter}{4},{botcentered}{4},% + {footmiddle}{4},{footcenter}{4},{footcentered}{4},% + {botright}{5},{footright}{5},% + {top}{10},{head}{10},{bot}{11},{foot}{11},% + {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifnum\@tempa<10 + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}% + \else + \ifnum\@tempa<20 + \@tempcnta\@pageat\relax + \ifnum\@tempcnta>2 + \advance\@tempcnta by -3 + \fi + \ifnum\@tempa=11 + \advance\@tempcnta by 3 + \fi + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \else + \ifnum\@pageat>2 + \edef\@pageat{3}% + \else + \edef\@pageat{0}% + \fi + \@tempcnta\@tempa + \advance\@tempcnta by -20 + \advance\@tempcnta by\@pageat + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \fi + \fi + \else + \def\@tempa{\endgroup\FamilyKeyStateUnknownValue}% + \fi + \@tempa + \KOMA@kav@xreplacevalue{.% + scrletter.\scr@pkgextension + }{pagenumber}{% + \ifcase \@pageat + topleft% + \or + topmiddle% + \or + topright% + \or + botleft% + \or + botmiddle% + \or + botright% + \else + false% + \fi + }% +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{pagenumber}{botmiddle} +\newif\if@scrsymbols +\KOMA@key{symbolicnames}[true]{% + \KOMA@set@ifkey{symbolicnames}{@scrsymbols}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \def\scr@symbols@font{marvosym}% + \else + \KOMA@set@ncmdkey{symbolicnames}{reserved@a}{% + {marvosym}{0},% + {fontawesome}{1},{awesome}{1},% + }{#1}% + \ifx \FamilyKeyState\FamilyKeyStateProcessed + \@scrsymbolstrue + \ifcase \number\reserved@a + \def\scr@symbols@font{marvosym}% + \else + \def\scr@symbols@font{fontawesome}% + \fi + \fi + \fi + \ifx \FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + scrletter.\scr@pkgextension + }{symbolicnames}{#1}% + \if@scrsymbols + \Ifstr{\scr@symbols@font}{marvosym}{% + \def\scr@symbol@phone{\Telefon}% + \def\scr@symbol@fax{\FAX}% + \def\scr@symbol@email{\Email}% + \def\scr@symbol@mobilephone{\Mobilefone}% + \def\scr@symbol@www{\@empty}% + }{% + \def\scr@symbol@phone{\faPhone}% + \def\scr@symbol@fax{\faFax}% + \def\scr@symbol@email{\faEnvelopeO}% + \def\scr@symbol@mobilephone{\faMobilePhone}% + \def\scr@symbol@www{\faGlobe}% + }% + \if@atdocument + \begingroup + \@tempswafalse + \expandafter\ifdefined\scr@symbol@phone\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@fax\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@email\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@mobilephone\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@www\else\@tempswatrue\fi + \if@tempswa + \aftergroup\@scrsymbolsfalse + \PackageWarning{scrletter}{% + Option `symbolicnames=#1' + ignorred.\MessageBreak + You've tried to set option `symbolicnames'\MessageBreak + after \string\begin{document}, but without\MessageBreak + loading package `\scr@symbols@font' before.\MessageBreak + You should either switch on option\MessageBreak + `symbolicnames' before \string\begin{document}\MessageBreak + or load package `\scr@letter@symbols@font' in the + document\MessageBreak + preamble to avoid this warning% + }% + \fi + \endgroup + \else + \ifx\@fileswith@pti@ns\@badrequireerror + \Ifstr{\@currext}{\@clsextension}{% + \expandafter\AtEndOfClass + }{% + \Ifstr{\@currext}{\@pkgextension}{% + \expandafter\AtEndOfPackage + }{% + \expandafter\AtBeginDocument + }% + }% + \else + \expandafter\@firstofone + \fi + {\RequirePackage{\scr@symbols@font}}% + \fi + \fi + \fi +} +\KOMA@kav@add{.% + scrletter.\scr@pkgextension +}{symbolicnames}{false}% +\newcommand*{\scr@symbols@font}{} +\newcommand*{\scr@symbol@phone}{\undefined} +\newcommand*{\scr@symbol@fax}{\undefined} +\newcommand*{\scr@symbol@email}{\undefined} +\newcommand*{\scr@symbol@mobilephone}{\undefined} +\newcommand*{\scr@symbol@www}{\undefined} +%%% From File: $Id: scrkernel-addressfiles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\LoadLetterOption}[1]{% + \@ifundefined{@restore@catcode@level}% + {\let\@restore@catcode@level=\z@}{}% + \ifnum\@restore@catcode@level =\z@ + \ifnum\catcode`\@=11 + \let\@restore@catcode\relax + \else + \@tempcnta=\catcode`\@ + \edef\@restore@catcode{% + \noexpand\catcode`\noexpand\@=\the\@tempcnta}% + \makeatletter + \fi + \fi + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta}% + \scr@sp@def\reserved@a{#1}% + \edef\reserved@a{% + \noexpand\edef\noexpand\scr@currentlco{\reserved@a}% + \noexpand\InputIfFileExists{\reserved@a.lco}{% + \noexpand\PackageInfo{scrletter% + }{Letter-Class-Option `#1' loaded}% + }{% + \noexpand\PackageError{scrletter% + }{% + Letter-Class-Option file `#1.lco' not found% + }{% + You've told me to load the Letter-Class-Option `#1'. So I have + to load\noexpand\MessageBreak + the file `#1.lco'. But the file isn't available.}% + }% + \scr@ifundefinedorrelax{scr@currentlco}{% + \unexpanded{\let\scr@currentlco\relax}% + }{% + \noexpand\def\noexpand\scr@currentlco{\scr@currentlco}% + }% + }% + \if@atdocument + \edef\reserved@a{% + \unexpanded\expandafter{\reserved@a}% + \ifx\RequirePackage\@notprerr + \unexpanded{\let\RequirePackage\@notprerr}% + \else + \noexpand\def\noexpand\RequirePackage{% + \unexpanded\expandafter{\RequirePackage}% + }% + \fi + \ifx\usepackage\@notprerr + \unexpanded{\let\usepackage\@notprerr}% + \else + \noexpand\def\noexpand\usepackage{% + \unexpanded\expandafter{\usepackage}% + }% + \fi + }% + \let\RequirePackage\lco@RequirePackage + \let\usepackage\lco@RequirePackage + \expandafter\reserved@a + \else \expandafter\reserved@a + \fi + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \m@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta}% + \ifnum\@tempcnta =\z@ + \@restore@catcode + \fi +} +\newcommand*{\lco@RequirePackage}[2][]{% + \begingroup + \@for\reserved@a:=#2\do{% + \scr@trim@spaces\reserved@a + \scr@ifundefinedorrelax{ver@\reserved@a.\scr@pkgextension}{% + \PackageError{scrletter}{% + lco-file `\scr@currentlco' can be used only in preamble% + }{% + The lco-file `\scr@currentlco' uses \string\RequirePackage\space or + \string\usepackage\space to load\MessageBreak + package `\reserved@a'. This means you have to either load + `\reserved@a'\MessageBreak + or lco-file `\scr@currentlco' in the document preamble. + }% + }{}% + }% + \endgroup + \scr@gobbleopt +} +\newcommand*{\LoadLetterOptions}[1]{% + \begingroup + \def\reserved@a{\endgroup}% + \@for\reserved@b:=#1\do{% + \scr@trim@spaces\reserved@b + \ifx\reserved@b\@empty\else + \edef\reserved@a{\expandafter\unexpanded\expandafter{\reserved@a + \LoadLetterOption}{\reserved@b}\relax}% + \fi + }% + \reserved@a +} +\newcommand*{\LOPNP@option}{} +\newcommand*{\LOPNP@size}{} +\newcommand*{\@PapersizeWarning}{% + \begingroup% + \edef\@tempc{\noexpand\@tempswafalse + \noexpand\ifdim\paperwidth<\the\dimexpr\paperwidth-.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperwidth>\the\dimexpr\paperwidth+.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperheight<\the\dimexpr\paperheight-.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperheight>\the\dimexpr\paperheight+.1mm\relax + \relax + \noexpand\else + \noexpand\@tempswatrue + \noexpand\fi + \noexpand\fi + \noexpand\fi + \noexpand\fi + \noexpand\@@PapersizeWarning + }% + \def\@tempb{letter}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{legal}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{executive}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}% + \else% + \PaperNameToSize[letter]{\LOPNP@size}% + \fi + \fi + \fi + \@tempc + \endgroup% +} +\ProvideUnknownPaperSizeError{letter}{% + \PackageError{scrletter}{% + papersize `\LOPNP@size' undefined}{% + You've told me to check for paper size + `\LOPNP@size'\MessageBreak + at letter option file `\LOPNP@option.lco',\MessageBreak + but this paper size is not supported.\MessageBreak + See the KOMA-Script manual for informations about known + paper sizes.}% +} +\newcommand*{\@@PapersizeWarning}{% + \if@tempswa\else% + \PackageWarningNoLine{scrletter% + }{% + Letter option file `\LOPNP@option.lco'\MessageBreak + needs paper size `\LOPNP@size'.\MessageBreak + Current paper size is not `\LOPNP@size'!\MessageBreak + \scr@ifundefinedorrelax{KOMAClassName}{% + You should load package `typearea' either\MessageBreak + with option `paper=\LOPNP@size,paper=portrait' or + additionally\MessageBreak + }{% + You should add `paper=\LOPNP@size,paper=portrait' at the\MessageBreak + option list of `\string\documentclass' or\MessageBreak + }% + add `\string\KOMAoptions{paper=\LOPNP@size,paper=portrait}'\MessageBreak + before starting this letter!\MessageBreak + Maybe you know what you are doing,\MessageBreak + so I do not change this myself}% + \fi + } +\newcommand*{\LetterOptionNeedsPapersize}[2]{% + \edef\LOPNP@size{#2}\edef\LOPNP@option{#1}% +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\g@addnumerical@date}[2]{% + \@ifundefined{date#1}{% + \PackageInfo{scrletter% + }{% + no date found for language `#1'\MessageBreak + --> skipped% + }% + }{% + \expandafter\g@addto@macro\csname date#1\endcsname{% + \let\sym@date=\today% + \def\num@date{#2}% + \def\today{\if@orgdate\sym@date\else\num@date\fi}% + }% + }% +} +\AtBeginDocument{% + \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}% + \@ifundefined{dateenglish}{\def\dateenglish{% + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year}% + }% + }{}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\yourrefname{Your ref.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\yourmailname{Your letter of}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\myrefname{Our ref.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\customername{Customer no.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\invoicename{Invoice no.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\subjectname{Subject}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\ccname{cc}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\enclname{encl}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\headtoname{To}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\headfromname{From}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\datename{Date}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\pagename{Page}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\phonename{Phone}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\mobilephonename{Mobile phone}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\faxname{Fax}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\emailname{Email}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\wwwname{Url}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\bankname{Bank account}% + \g@addnumerical@date{american}{\number\month/\number\day/\number\year}% + \g@addnumerical@date{australian}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{british}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{canadian}{\number\year/\number\month/\number\day}% + \g@addnumerical@date{english}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{newzealand}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{UKenglish}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{ukenglish}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{USenglish}{\number\month/\number\day/\number\year}% + \g@addnumerical@date{usenglish}{\number\month/\number\day/\number\year}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\yourrefname{Ihr Zeichen}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\yourmailname{Ihr Schreiben vom}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\myrefname{Unser Zeichen}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\customername{Kundennummer}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\invoicename{Rechnungsnummer}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\subjectname{Betrifft}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\ccname{Kopien an}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\enclname{Anlage}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\headtoname{An}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\headfromname{Von}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\datename{Datum}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\pagename{Seite}% + \providecaptionname{german}\phonename{Telephon}% + \providecaptionname{ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\phonename{Telefon}% + \providecaptionname{german}\mobilephonename{Mobiltelephon}% + \providecaptionname{ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\mobilephonename{Mobiltelefon}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\faxname{Fax}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\emailname{E-Mail}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\wwwname{URL}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\bankname{Bankverbindung}% + \g@addnumerical@date{german}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{ngerman}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{austrian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{naustrian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{swissgerman}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{nswissgerman}{% + \number\day.\,\number\month.\,\number\year}% + \providecaptionname{% + acadian,canadien,francais,french}\yourrefname{Vos r\'ef\'erences}% + \providecaptionname{% + acadian,canadien,francais,french}\yourmailname{Votre lettre du}% + \providecaptionname{% + acadian,canadien,francais,french}\myrefname{Nos r\'ef\'erences}% + \providecaptionname{% + acadian,canadien,francais,french}\customername{Num\'ero de client}% + \providecaptionname{% + acadian,canadien,francais,french}\invoicename{Num\'ero de facture}% + \providecaptionname{% + acadian,canadien,francais,french}\subjectname{Concernant}% + \providecaptionname{% + acadian,canadien,francais,french}\ccname{Copie \`a}% + \providecaptionname{% + acadian,canadien,francais,french}\enclname{Annexes}% + \providecaptionname{% + acadian,canadien,francais,french}\headtoname{A}% + \providecaptionname{% + acadian,canadien,francais,french}\headfromname{De}% + \providecaptionname{% + acadian,canadien,francais,french}\datename{Date}% + \providecaptionname{% + acadian,canadien,francais,french}\pagename{Page}% + \providecaptionname{% + acadian,canadien,francais,french}\phonename{T\'el\'ephone}% + \providecaptionname{% + acadian,canadien,francais,french}\mobilephonename{Portable}% + \providecaptionname{% + acadian,canadien,francais,french}\faxname{T\'el\'efax}% + \providecaptionname{% + acadian,canadien,francais,french}\emailname{E-mail}% + \providecaptionname{% + acadian,canadien,francais,french}\wwwname{URL}% + \providecaptionname{% + acadian,canadien,francais,french}\bankname{Compte en banque}% + \g@addnumerical@date{acadian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{canadien}{\number\year/\number\month/\number\day}% + \g@addnumerical@date{francais}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{french}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{italian}\yourrefname{Vs./Rif.}% or Vostro Riferimento + \providecaptionname{italian}\yourmailname{Vs.~lettera del}% or Vostra + % lettera del + \providecaptionname{italian}\myrefname{Ns./Rif.}% or Nostro Riferimento + \providecaptionname{italian}\customername{Nr.~cliente}% or Cliente num. + \providecaptionname{italian}\invoicename{Nr.~fattura}% or Fattura num. + \providecaptionname{italian}\subjectname{Oggetto}% + \providecaptionname{italian}\ccname{Per conoscenza}% or Copia a + \providecaptionname{italian}\enclname{Allegato}% or (plural) Allegati + \providecaptionname{italian}\headtoname{A}% + \providecaptionname{italian}\headfromname{Da}% + \providecaptionname{italian}\datename{Data}% + \providecaptionname{italian}\pagename{Pagina}% + \providecaptionname{italian}\phonename{Telefono}% + \providecaptionname{italian}\mobilephonename{Telefonino}% + \providecaptionname{italian}\faxname{Fax}% + \providecaptionname{italian}\emailname{Email}% + \providecaptionname{italian}\wwwname{Sito Web}% + \providecaptionname{italian}\bankname{Conto bancario}% + \g@addnumerical@date{italian}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{spanish}\yourrefname{Su ref.}% + \providecaptionname{spanish}\yourmailname{Su carta de}% + \providecaptionname{spanish}\myrefname{Nuestra ref.}% + \providecaptionname{spanish}\customername{No. de cliente}% + \providecaptionname{spanish}\invoicename{No. de factura}% + \providecaptionname{spanish}\subjectname{Asunto}% + \providecaptionname{spanish}\ccname{Copias}% + \providecaptionname{spanish}\enclname{Adjunto}% + \providecaptionname{spanish}\headtoname{A}% + \providecaptionname{spanish}\headfromname{De}% + \providecaptionname{spanish}\datename{Fecha}% + \providecaptionname{spanish}\pagename{P\'agina}% + \providecaptionname{spanish}\phonename{Tel\'efono}% + \providecaptionname{spanish}\mobilephonename{M\'ovil}% + \providecaptionname{spanish}\faxname{Fax}% + \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico + \providecaptionname{spanish}\wwwname{URL}% or P\`agina web + \providecaptionname{spanish}\bankname{Cuenta bancaria}% + \g@addnumerical@date{spanish}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{croatian}\yourrefname{Va\v{s} znak}% + \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}% + \providecaptionname{croatian}\myrefname{Na\v{s} znak}% + \providecaptionname{croatian}\customername{Broj kupca}% + \providecaptionname{croatian}\invoicename{Broj fakture}% + \providecaptionname{croatian}\subjectname{Predmet}% + \providecaptionname{croatian}\ccname{Kopija}% + \providecaptionname{croatian}\enclname{Privitak}% + \providecaptionname{croatian}\headtoname{Prima}% + \providecaptionname{croatian}\headfromname{\v{S}alje}% + \providecaptionname{croatian}\datename{Nadnevak}% + \providecaptionname{croatian}\pagename{Stranica}% + \providecaptionname{croatian}\phonename{Telefon}% + \providecaptionname{croatian}\mobilphonename{Mobitel}% + \providecaptionname{croatian}\faxname{Fax}% + \providecaptionname{croatian}\emailname{E-Mail}% + \providecaptionname{croatian}\wwwname{URL}% + \providecaptionname{croatian}\bankname{Bankovna veza}% + \g@addnumerical@date{croatian}{\number\day.\,\number\month.\,\number\year.}% + \providecaptionname{dutch}\yourrefname{Uw kenmerk}% + \providecaptionname{dutch}\yourmailname{Uw brief van}% + \providecaptionname{dutch}\myrefname{Ons kenmerk}% + \providecaptionname{dutch}\customername{Klant No.}% + \providecaptionname{dutch}\invoicename{Rekening No.}% + \providecaptionname{dutch}\subjectname{Onderwerp}% + \providecaptionname{dutch}\ccname{Kopie aan}% + \providecaptionname{dutch}\enclname{Bijlage(n)}% + \providecaptionname{dutch}\headtoname{Aan}% + \providecaptionname{dutch}\headfromname{Van}% + \providecaptionname{dutch}\datename{Datum}% + \providecaptionname{dutch}\pagename{Pagina}% + \providecaptionname{dutch}\phonename{Telefoon}% + \providecaptionname{dutch}\mobilephonename{Mobieltje}% + \providecaptionname{dutch}\faxname{Fax}% + \providecaptionname{dutch}\emailname{E--mail}% + \providecaptionname{dutch}\wwwname{URL}% + \providecaptionname{dutch}\bankname{Bankrekening}% + \g@addnumerical@date{dutch}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{finnish}\yourrefname{Viitteenne}% + \providecaptionname{finnish}\yourmailname{Kirjeenne}% + \providecaptionname{finnish}\myrefname{Viitteemme}% + \providecaptionname{finnish}\customername{Asiakasnumero}% + \providecaptionname{finnish}\invoicename{Laskun numero}% + \providecaptionname{finnish}\subjectname{Asia}% + \providecaptionname{finnish}\ccname{Jakelu}% + \providecaptionname{finnish}\enclname{Liitteet}% + \providecaptionname{finnish}\headtoname{Vastaanottaja}% + \providecaptionname{finnish}\headfromname{L\"ahett\"aj\"a}% + \providecaptionname{finnish}\datename{P\"aiv\"a}% + \providecaptionname{finnish}\pagename{Sivu}% + \providecaptionname{finnish}\phonename{Puhelin}% + \providecaptionname{finnish}\mobilephonename{Matkapuhelin}% + \providecaptionname{finnish}\faxname{Faksi}% + \providecaptionname{finnish}\emailname{S\"ahk\"oposti}% + \providecaptionname{finnish}\wwwname{URL}% + \providecaptionname{finnish}\bankname{Pankkitilin numero}% + \g@addnumerical@date{finnish}{\number\day.\number\month.\number\year}% + \providecaptionname{norsk}\yourrefname{Deres ref.}% + \providecaptionname{norsk}\yourmailname{Deres brev av:}% + \providecaptionname{norsk}\myrefname{V\aa{}r ref:}% + \providecaptionname{norsk}\customername{Kundenummer}% + \providecaptionname{norsk}\invoicename{Fakturanummer}% + \providecaptionname{norsk}\subjectname{Emne}% + \providecaptionname{norsk}\ccname{Kopi til}% + \providecaptionname{norsk}\enclname{Vedlegg}% + \providecaptionname{norsk}\headtoname{Til}% + \providecaptionname{norsk}\headfromname{Fra}% + \providecaptionname{norsk}\datename{Dato}% + \providecaptionname{norsk}\pagename{Side}% + \providecaptionname{norsk}\phonename{Telefon}% + \providecaptionname{norsk}\mobilephonename{Mobiltelefon}% + \providecaptionname{norsk}\faxname{Telefaks}% + \providecaptionname{norsk}\emailname{E-post}% + \providecaptionname{norsk}\wwwname{Url}% + \providecaptionname{norsk}\bankname{Bankkontonummer}% + \g@addnumerical@date{norsk}{\number\day.\number\month.\number\year}% + \providecaptionname{swedish}\yourrefname{Er ref}% + \providecaptionname{swedish}\yourmailname{Ert brev av}% + \providecaptionname{swedish}\myrefname{V\aa{}r ref}% + \providecaptionname{swedish}\customername{Kundnummer}% + \providecaptionname{swedish}\invoicename{Fakturanummer}% + \providecaptionname{swedish}\subjectname{\"Amne}% + \providecaptionname{swedish}\ccname{Kopia till}% + \providecaptionname{swedish}\enclname{Bilagor}% Singular: Bilaga + \providecaptionname{swedish}\headtoname{Till}% + \providecaptionname{swedish}\headfromname{Fr\aa{}n}% + \providecaptionname{swedish}\datename{Datum}% + \providecaptionname{swedish}\pagename{Sida}% + \providecaptionname{swedish}\phonename{Telefon}% + \providecaptionname{swedish}\mobilephonename{Mobiltelefon}% + \providecaptionname{swedish}\faxname{Telefax}% + \providecaptionname{swedish}\emailname{E-post}% + \providecaptionname{swedish}\wwwname{Hemsida}% + \providecaptionname{swedish}\bankname{Bankgiro}% PlusGiro + \g@addnumerical@date{swedish}{\number\day/\number\month~\number\year}% + \providecaptionname{polish}\yourrefname{Wasz znak}% + \providecaptionname{polish}\yourmailname{Wasze pismo z dnia}% + \providecaptionname{polish}\myrefname{Nasz znak}% + \providecaptionname{polish}\customername{Numer klienta}% + \providecaptionname{polish}\invoicename{Numer rachunku}% + \providecaptionname{polish}\subjectname{Dotyczy}% + \providecaptionname{polish}\ccname{Rozdzielnik}% + \providecaptionname{polish}\enclname{Za\l\aob{}czniki}% + \providecaptionname{polish}\headtoname{Do}% + \providecaptionname{polish}\headfromname{Od}% + \providecaptionname{polish}\datename{Data}% + \providecaptionname{polish}\pagename{Strona}% + \providecaptionname{polish}\phonename{Telefon}% + \providecaptionname{polish}\mobilephonename{Numer mobilny}% + \providecaptionname{polish}\faxname{Fax}% + \providecaptionname{polish}\emailname{E-mail}% + \providecaptionname{polish}\wwwname{URL}% + \providecaptionname{polish}\bankname{Konto}% + \g@addnumerical@date{polish}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{czech}\yourrefname{Va\v{s}e zna\v{c}ka}% + \providecaptionname{czech}\yourmailname{V\'{a}\v{s} dopis ze dne}% + \providecaptionname{czech}\myrefname{Na\v{s}e zna\v{c}ka}% + \providecaptionname{czech}\customername{Z\'akaznick\'e \v{c}\'{\i}slo}% + \providecaptionname{czech}\invoicename{Fakura\v{c}n\'{\i} \v{c}\'{\i}slo}% + \providecaptionname{czech}\subjectname{Pr\v{e}dm\v{e}t}% + \providecaptionname{czech}\ccname{Kopie}% + \providecaptionname{czech}\enclname{P\v{r}\'{\i}loha}% + \providecaptionname{czech}\headtoname{Komu}% + \providecaptionname{czech}\headfromname{Od}% + \providecaptionname{czech}\datename{Datum}% + \providecaptionname{czech}\pagename{Strana}% + \providecaptionname{czech}\phonename{Telefon}% + \providecaptionname{czech}\mobilephonename{Mobil}% + \providecaptionname{czech}\faxname{Fax}% + \providecaptionname{czech}\emailname{E-Mail}% + \providecaptionname{czech}\wwwname{URL}% + \providecaptionname{czech}\bankname{Bankovn\'{\i} spojen\'{\i}}% + \g@addnumerical@date{czech}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{slovak}\yourrefname{Va\v{s}a zna\v{c}ka}% + \providecaptionname{slovak}\yourmailname{V\'{a}\v{s} list zo d\v{n}a}% + \providecaptionname{slovak}\myrefname{Na\v{s}a zna\v{c}ka}% + \providecaptionname{slovak}\customername{Z\'akazn\'{\i}cke \v{c}\'{\i}slo}% + \providecaptionname{slovak}\invoicename{\'{C}\'{\i}slo fakt\'ury}% + \providecaptionname{slovak}\subjectname{Predmet}% + \providecaptionname{slovak}\ccname{K\'{o}pia pre koho}% + \providecaptionname{slovak}\enclname{Pr\'{\i}loha}% + \providecaptionname{slovak}\headtoname{Komu}% + \providecaptionname{slovak}\headfromname{Od}% + \providecaptionname{slovak}\datename{D\'{a}tum}% + \providecaptionname{slovak}\pagename{Strana}% + \providecaptionname{slovak}\phonename{Telef\'{o}n}% + \providecaptionname{slovak}\mobilephonename{Mobil}% + \providecaptionname{slovak}\faxname{Fax}% + \providecaptionname{slovak}\emailname{E-Mail}% + \providecaptionname{slovak}\wwwname{URL}% + \providecaptionname{slovak}\bankname{Bankov\'{e} spojenie}% + \g@addnumerical@date{slovak}{\number\day.\,\number\month.\,\number\year}% + \captionsenglish + \dateenglish + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname date\languagename\endcsname\relax + \PackageWarningNoLine{scrletter% + }{% + \string\language\space is \the\language, \string\languagename\space is + `\languagename'\MessageBreak + but \expandafter\string\csname + date\languagename\endcsname\space not defined!\MessageBreak + This seems to be a bug at you're `hyphen.cfg'.\MessageBreak + Undefining macro \string\languagename\space to avoid errors% + }% + \let\languagename=\undefined + \fi + \ifx\languagename\undefined + \PackageWarningNoLine{scrletter% + }{\string\languagename\space not + defined, using \string\language.\MessageBreak + This may result in use of wrong language!\MessageBreak + You should use a compatible language + package\MessageBreak + (e.g. `Babel', `german', `ngerman', ...)}% + \ifx\l@american\undefined\else\ifnum\language=\l@american + \@nameuse{captionsamerican}% + \@nameuse{extrasamerican}% + \@nameuse{dateamerican}% + \fi\fi + \ifx\l@australian\undefined\else\ifnum\language=\l@australian + \@nameuse{captionsaustralian}% + \@nameuse{extrasaustralian}% + \@nameuse{dateaustralian}% + \fi\fi + \ifx\l@british\undefined\else\ifnum\language=\l@british + \@nameuse{captionsbritish}% + \@nameuse{extrasbritish}% + \@nameuse{datebritish}% + \fi\fi + \ifx\l@canadian\undefined\else\ifnum\language=\l@canadian + \@nameuse{captionscanadian}% + \@nameuse{extrascanadian}% + \@nameuse{datecanadian}% + \fi\fi + \ifx\l@newzealand\undefined\else\ifnum\language=\l@newzealand + \@nameuse{captionsnewzealand}% + \@nameuse{extrasnewzealand}% + \@nameuse{datenewzealand}% + \fi\fi + \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish + \@nameuse{captionsUKenglish}% + \@nameuse{extrasUKenglish}% + \@nameuse{dateUKenglish}% + \fi\fi + \ifx\l@ukenglish\undefined\else\ifnum\language=\l@ukenglish + \@nameuse{captionsukenglish}% + \@nameuse{extrasukenglish}% + \@nameuse{dateukenglish}% + \fi\fi + \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish + \@nameuse{captionsUSenglish}% + \@nameuse{extrasUSenglish}% + \@nameuse{dateUSenglish}% + \fi\fi + \ifx\l@usenglish\undefined\else\ifnum\language=\l@usenglish + \@nameuse{captionsusenglish}% + \@nameuse{extrasusenglish}% + \@nameuse{dateusenglish}% + \fi\fi + \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian + \@nameuse{captionsaustrian}% + \@nameuse{extrasaustrian}% + \@nameuse{dateaustrian}% + \fi\fi + \ifx\l@naustrian\undefined\else\ifnum\language=\l@naustrian + \@nameuse{captionsnaustrian}% + \@nameuse{extrasnaustrian}% + \@nameuse{datenaustrian}% + \fi\fi + \ifx\l@german\undefined\else\ifnum\language=\l@german + \@nameuse{captionsgerman}% + \@nameuse{extrasgerman}% + \@nameuse{dategerman}% + \fi\fi + \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman + \@nameuse{captionsngerman}% + \@nameuse{extrasngerman}% + \@nameuse{datengerman}% + \fi\fi + \ifx\l@swissgerman\undefined\else\ifnum\language=\l@swissgerman + \@nameuse{captionsswissgerman}% + \@nameuse{extrasswissgerman}% + \@nameuse{dateswissgerman}% + \fi\fi + \ifx\l@nswissgerman\undefined\else\ifnum\language=\l@nswissgerman + \@nameuse{captionsnswissgerman}% + \@nameuse{extrasnswissgerman}% + \@nameuse{datenswissgerman}% + \fi\fi + \ifx\l@acadian\undefined\else\ifnum\language=\l@acadian + \@nameuse{captionsacadian}% + \@nameuse{extrasacadian}% + \@nameuse{dateacadian}% + \fi\fi + \ifx\l@canadien\undefined\else\ifnum\language=\l@canadien + \@nameuse{captionscanadien}% + \@nameuse{extrascanadien}% + \@nameuse{datecanadien}% + \fi\fi + \ifx\l@francais\undefined\else\ifnum\language=\l@francais + \@nameuse{captionsfrancais}% + \@nameuse{extrasfrancais}% + \@nameuse{datefrancais}% + \fi\fi + \ifx\l@french\undefined\else\ifnum\language=\l@french + \@nameuse{captionsfrench}% + \@nameuse{extrasfrench}% + \@nameuse{datefrench}% + \fi\fi + \ifx\l@italian\undefined\else\ifnum\language=\l@italian + \@nameuse{captionsitalian}% + \@nameuse{extrasitalian}% + \@nameuse{dateitalian}% + \fi\fi + \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish + \@nameuse{captionsspanish}% + \@nameuse{extrasspanish}% + \@nameuse{datespanish}% + \fi\fi + \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian + \@nameuse{captionscroatian}% + \@nameuse{extrascroatian}% + \@nameuse{datecroatian}% + \fi\fi + \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch + \@nameuse{captionsdutch}% + \@nameuse{extrasdutch}% + \@nameuse{datedutch}% + \fi\fi + \ifx\l@finnish\undefined\else\ifnum\language=\l@finnish + \@nameuse{captionsfinnish}% + \@nameuse{extrasfinnish}% + \@nameuse{datefinnish}% + \fi\fi + \ifx\l@norsk\undefined\else\ifnum\language=\l@norsk + \@nameuse{captionsnorsk}% + \@nameuse{extrasnorsk}% + \@nameuse{datenorsk}% + \fi\fi + \ifx\l@swedish\undefined\else\ifnum\language=\l@swedish + \@nameuse{captionsswedish}% + \@nameuse{extrasswedish}% + \@nameuse{dateswedish}% + \fi\fi + \ifx\l@polish\undefined\else\ifnum\language=\l@polish + \@nameuse{captionspolish}% + \@nameuse{extraspolish}% + \@nameuse{datepolish}% + \fi\fi + \ifx\l@czech\undefined\else\ifnum\language=\l@czech + \@nameuse{captionsczech}% + \@nameuse{extrasczech}% + \@nameuse{dateczech}% + \fi\fi + \ifx\l@slovak\undefined\else\ifnum\language=\l@slovak + \@nameuse{captionsslovak}% + \@nameuse{extrasslovak}% + \@nameuse{dateslovak}% + \fi\fi + \else + \edef\@tempa{nohyphenation}% + \ifx\languagename\@tempa + \PackageWarningNoLine{scrletter% + }{% + You've selected language `\languagename'.\MessageBreak + Maybe your LaTeX format contains Babel extension\MessageBreak + but you have not selected a language using\MessageBreak + Babel package.\MessageBreak + Please select another language!\MessageBreak + Only as a workaround english captions and date\MessageBreak + will be used% + }% + \else + \PackageInfo{scrletter% + }{% + trying to activate captions and date\MessageBreak + of language `\languagename'% + }% + \csname date\languagename\endcsname + \csname captions\languagename\endcsname + \PackageInfo{scrletter% + }{% + used language is `\languagename'.\MessageBreak + Supported languages are: `english', `UKenglish',\MessageBreak + `ukenglish', `british', `american', `USenglish',\MessageBreak + `usenglish', `australian`,`canadian', `newzealand',\MessageBreak + `german', `ngerman', `austrian', `naustrian',\MessageBreak + `swissgerman', `nswissgermsn',\MessageBreak + `acadian', `canadien', `francais', `french', \MessageBreak + `dutch', `italian', `spanish', `polish',\MessageBreak + `croatian', `finnish', `norsk', `swedish',\MessageBreak + `czech', `slovak'% + }% + \fi + \fi +} +%%% From File: $Id: scrkernel-variables.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\newkomavar}{% + \kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}} +\newcommand*{\@newkomavar}[2][\relax]{% + \@ifundefined{scr@#2@name}{% + \@ifundefined{scr@#2@var}{% + \begingroup + \def\@tempa{#1}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#2@name}{#1}% + \fi% + \expandafter\let\csname scr@#2@var\endcsname=\@empty + \if@tempswa\addtoreffields{#2}\fi + }{% + \PackageError{scrletter% + }{% + This should never happen% + }{% + The contents of the KOMA-Script variable `#2'\MessageBreak + is undefined, but the name of the variable is + defined.\MessageBreak + This should never happen. So someone crashs me!% + }% + }% + }{% + \PackageError{scrletter% + }{% + Variable `#2' already defined% + }{% + I'll ignore this command, if you'll continue.% + }% + }% +} +\newcommand*{\setkomavar}{% + \kernel@ifstar {\@setkomaname}{\@setkomavar}} +\newcommand*{\@setkomavar}[1]{% + \kernel@ifnextchar [%] + {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}} +\newcommand*{\@setkomaname}[2]{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@name}{#2}% + \csname scr@#1@postsetname\endcsname + }% +} +\newcommand*{\@@setkomavar}{} +\long\def\@@setkomavar#1[#2]#3{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@var}{#3}% + \csname scr@#1@postsetvar\endcsname + \begingroup + \def\@tempa{#2}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#1@name}{#2}% + \csname scr@#1@postsetname\endcsname + \fi + }% +} +\newcommand*{\@komavar@err}[2]{% + \PackageError{scrletter% + }{% + KOMA-Script variable not defined% + }{% + You've tried to #1 the not defined KOMA-Script variable + `#2'.\MessageBreak + You have to define the variable using \string\newkomavar\space + before\MessageBreak + you do this.% + }% +} +\DeclareRobustCommand*{\usekomavar}{% + \kernel@ifstar {\@usekomaname}{\@usekomavar}} +\newcommand*{\@usekomavar}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@var}}% + }% +} +\newcommand*{\@usekomaname}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@name}}% + }% +} +\newcommand*{\ifkomavar}{% + \PackageWarning{scrletter}{% + Usage of deprecated command `\string\ifkomavar'.\MessageBreak + The command has been renamed to because of a\MessageBreak + recommendation of LaTeX3 team members.\MessageBreak + Please replace `\string\ifkomavar' by `\string\Ifkomavar'% + }% + \Ifkomavar +} +\DeclareRobustCommand*{\Ifkomavar}[1]{% + \scr@ifundefinedorrelax{scr@#1@var}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% +} +\newcommand*{\ifkomavarempty}{% + \PackageWarning{scrletter}{% + Usage of deprecated command `\string\ifkomavarempty'.\MessageBreak + The command has been renamed to because of a\MessageBreak + recommendation of LaTeX3 team members.\MessageBreak + Please replace `\string\ifkomavarempty' by `\string\Ifkomavarempty'% + }% + \Ifkomavarempty +} +\DeclareRobustCommand*{\Ifkomavarempty}{% + \begingroup + \kernel@ifstar {\@tempswatrue\@ifkomavarempty}% + {\@tempswafalse\@ifkomavarempty}% +} +\newcommand{\@ifkomavarempty}[1]{% + \Ifkomavar{#1}{% + \if@tempswa + \@ifundefined{scr@#1@name}{% + \aftergroup\@firstoftwo + }{% + \expandafter\ifx\csname scr@#1@name\endcsname\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + }% + \else + \expandafter\ifx\csname scr@#1@var\endcsname\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \fi + }{% + \@komavar@err{use}{#1}% + \aftergroup\@gobbletwo + }% + \endgroup +} +\newcommand*{\foreachkomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{\unexpanded{#2}{\reserved@a}}\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachkomavarifempty}[3]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}% + {\unexpanded{#2}{\reserved@a}}% + {\unexpanded{#3}{\reserved@a}}% + }\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachemptykomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}{\unexpanded{#2}{\reserved@a}}{}% + }\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachnonemptykomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}{}{\unexpanded{#2}{\reserved@a}}% + }\expandafter\reserved@a + \fi + }% +} +%%% From File: $Id: scrkernel-pseudolengths.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\Ifplength}[1]{% + \@ifundefined{ltr@len@#1}{\@secondoftwo}{\@firstoftwo}% +} +\newcommand*{\if@plength}{% + \PackageWarning{scrletter}{% + Internal macro `\string\if@plength' is deprecated.\MessageBreak + Please use `\string\Ifplength' instead}% + \Ifplength +} +\newcommand*{\newplength}[1]{% + \@ifundefined{ltr@len@#1}{% + \expandafter\let\csname ltr@len@#1\endcsname=\z@% + }{% + \PackageError{scrletter% + }{% + pseudo-length \expandafter\string\csname ltr@len@#1\endcsname + already defined% + }{% + You've tried to define a new pseudo-length using\MessageBreak + \string\@newplength\space + or \string\newplength.\MessageBreak + Please, try another name% + }% + }% +} +\newcommand*{\@newplength}{% + \PackageWarning{scrletter}{% + Internal macro `\string\@newplength' is deprecated.\MessageBreak + Please use `\string\newplength' instead}% + \newplength +} +\newcommand*{\useplength}[1]{% + \glueexpr \csname ltr@len@#1\endcsname\relax}% +\newcommand*{\setlengthtoplength}[3][]{% + \setlength{#2}{\useplength{#3}}% + \setlength{#2}{#1#2}} +\newcommand*{\setplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{\glueexpr #3\relax}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa +} +\newcommand*{\@setplength}{% + \PackageWarning{scrletter}{% + Internal macro `\string\@setplength' is deprecated.\MessageBreak + Please use `\string\setplength' instead}% + \setplength +} +\newcommand*{\setplengthtowidth}[3][]{% + \begingroup + \settowidth{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtoheight}[3][]{% + \begingroup + \settoheight{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtodepth}[3][]{% + \begingroup + \settodepth{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtototalheight}[3][]{% + \begingroup + \settoheight{\@tempdima}{#3}% + \settodepth{\@tempdimb}{#3}% + \addtolength{\@tempdima}{\@tempdimb}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\addtolengthplength}[3][]{% + \begingroup% + \setlengthtoplength[{#1}]{\@tempskipa}{#3}% + \edef\@tempa{\endgroup% + \noexpand\addtolength{#2}{\the\@tempskipa}}% + \@tempa% +} +\newcommand*{\addtoplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{\glueexpr #3\relax}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \addtolengthplength{\@tempskipa}{#2}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa% +} +\newcommand*{\@addtoplength}{% + \PackageWarning{scrletter}{% + Internal macro `\string\@addtoplength' is deprecated.\MessageBreak + Please use `\string\addtoplength' instead}% + \addtoplength} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{% + \letterpagemark +}{% + {\usekomafont{pagenumber}{% + \pagename\nobreakspace + \thepage}}} +\RequirePackage{scrlayer-scrpage} +\newpairofpagestyles{letter}{% + \clearpairofpagestyles + \lehead[\ifnum\@pageat=\z@\pagemark\fi]% + {\usekomavar{nexthead}}% + \lohead[\ifnum\@pageat=\z@\pagemark\fi]% + {\usekomavar{nexthead}}% + \chead[\ifnum\@pageat=\@ne\pagemark\fi]% + {}% + \rehead[\ifnum\@pageat=\tw@\pagemark\fi]% + {}% + \rohead[\ifnum\@pageat=\tw@\pagemark\fi]% + {}% + \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]% + {\usekomavar{nextfoot}}% + \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]% + {\usekomavar{nextfoot}}% + \cfoot[\ifnum\@pageat=4 \pagemark\fi]% + {}% + \refoot[\ifnum\@pageat=5 \pagemark\fi]% + {}% + \rofoot[\ifnum\@pageat=5 \pagemark\fi]% + {}% +} +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: body) + +\newkomavar{firsthead} +\setkomavar{firsthead}{% + \parbox[b]{\useplength{firstheadwidth}}% + {\centering\usekomafont{fromaddress}{% + \Ifkomavarempty{fromname}{}{% + {\usekomafont{fromname}% + {\ignorespaces\usekomavar{fromname}}\\[-8pt]} + {\usekomafont{fromrule}{\rule{\useplength{firstheadwidth}}{.4pt}}}\\ + }% + \Ifkomavarempty{fromaddress}{}{% + \ignorespaces\usekomavar{fromaddress}% + }% + }% + }% +} +\newcommand*{\scr@firsthead@postsetvar}{% + \KOMAExecuteOptions[.% + scrletter.\scr@pkgextension + ]{fromalign=no}% +} +\newcommand*{\@gen@firsthead}{% + \ifcase\@alignfrom + \setkomavar{firsthead}{% + \parbox[b]{\textwidth}{\raggedright + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + \if@logo + \llap{\usekomavar{fromlogo}}% + \fi + }% + \renewcommand*{\@alignfrom}{0}% + \or + \setkomavar{firsthead}{% + \parbox[b]{\textwidth}{\centering + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + }% + \renewcommand*{\@alignfrom}{1}% + \or + \setkomavar{firsthead}{% + \if@logo + \rlap{\usekomavar{fromlogo}}% + \fi + \parbox[b]{\textwidth}{\raggedleft + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + }% + \renewcommand*{\@alignfrom}{2}% + \fi +} +\newkomafont{foldmark}{} +\newkomafont{fromname}{} +\newkomafont{fromaddress}{} +\newkomafont{fromrule}{} +\newkomafont{backaddress}{\@gr@gsffamily} +\newkomafont{specialmail}{} +\newkomafont{priority}{\fontsize{10pt}{10pt}\sffamily\bfseries} +\newkomafont{prioritykey}{\fontsize{24.88pt}{24.88pt}\selectfont} +\newkomafont{PPlogo}{\sffamily\bfseries} +\newkomafont{PPdata}{\sffamily} +\newkomafont{addressee}{} +\newkomafont{toname}{} +\newkomafont{toaddress}{} +\newkomafont{refname}{\@gr@gsffamily\scriptsize} + \newkomafont{refvalue}{} +\newkomafont{placeanddate}{} +\newkomafont{lettertitle}{\normalcolor\@gr@gsffamily\bfseries} +\scr@ifundefinedorrelax{scr@fnt@title}{% + \aliaskomafont{title}{lettertitle}% +}{} +\newkomafont{lettersubject}{\normalfont\bfseries} +\scr@ifundefinedorrelax{scr@fnt@subject}{% + \aliaskomafont{subject}{lettersubject}% +}{} +\newplength{foldmarkhpos} +\newplength{foldmarkvpos} +\newplength{tfoldmarkvpos} +\newplength{mfoldmarkvpos} +\newplength{bfoldmarkvpos} +\newplength{lfoldmarkhpos} +\newplength{pfoldmarklength} +\newplength{tfoldmarklength} +\newplength{mfoldmarklength} +\newplength{bfoldmarklength} +\newplength{lfoldmarklength} +\newplength{foldmarkthickness} +\setplength{foldmarkthickness}{.2pt} +\newplength{toaddrvpos} +\newplength{backaddrheight} +\newplength{toaddrhpos} +\newplength{specialmailindent} +\newplength{specialmailrightindent} +\newplength{toaddrindent} +\newplength{PPheadheight} +\newplength{PPheadwidth} +\newplength{PPdatamatrixvskip} +\newplength{toaddrwidth} +\newplength{toaddrheight} +\newplength{locvpos} +\newplength{locwidth} +\newplength{lochpos} +\newplength{locheight} +\newplength{refvpos} +\newplength{refwidth} +\newplength{refhpos} +\newplength{refaftervskip} +\newplength{sigbeforevskip} +\newplength{sigindent} +\newplength{firstfootvpos} +\newplength{firstfootwidth} +\newplength{firstfoothpos} +\setplength{firstfoothpos}{\maxdimen} +\newplength{firstheadvpos} +\newplength{firstheadwidth} +\newplength{firstheadhpos} +\setplength{firstheadhpos}{\maxdimen} +\newplength{fromrulewidth} +\setplength{fromrulewidth}{0pt} +\newplength{fromrulethickness} +\setplength{fromrulethickness}{.4pt} +\newkomavar{firstfoot} +\newcommand*{\move@topt}{% + \null\vskip -1in\vskip -\topmargin% + \vskip -\headheight\vskip -\headsep% + \vskip -\topskip% + \ignorespaces% +} +\newcommand*{\move@frompt}{% + \vskip 1in\vskip \topmargin% + \vskip \headheight\vskip \headsep% + \vskip \topskip% + \vskip -\baselineskip% + \ignorespaces% +} +\newcommand*{\move@topl}{% + \null\hskip -1in% + \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi + \ignorespaces% +} +\newcommand*{\move@frompl}{% + \hskip 1in% + \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi% + \ignorespaces% +} +\newcommand{\vb@t@z}[1]{{% + \setbox\z@\vbox to\z@{\color@begingroup #1\color@endgroup\vss}% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \setlength{\baselineskip}{\z@}% + \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}% + \box\z@\vskip-\@tempdima% + }% +} +\newcommand*{\@foldmark}[2]{% + \vb@t@z{\setlength{\@tempdima}{#1}% + \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}% + \vskip \@tempdima + \rlap{\move@topl\hskip\useplength{foldmarkhpos}% + \usekomafont{foldmark}{% + \rule{#2}{\useplength{foldmarkthickness}}}}}% + \ignorespaces +} +\newcommand*{\@hfoldmark}[1]{% + \begingroup + \@expandtwoargs\in@{#1}{\@usefolds}% + \ifin@ + \lowercase{% + \edef\@tempa{% + \noexpand\ifdim \noexpand\useplength{#1foldmarkvpos}=\noexpand\z@ + \noexpand\else + \noexpand\@foldmark{% + \noexpand\useplength{#1foldmarkvpos}% + }{% + \noexpand\useplength{#1foldmarklength}% + }% + \noexpand\fi + }% + }% + \@tempa + \fi + \endgroup +} +\newcommand*{\@vfoldmark}[1]{% + \begingroup + \ifdim \useplength{lfoldmarkhpos}=\z@\else + \@expandtwoargs\in@{#1}{\@usefolds}% + \ifin@ + \fi + \fi + \endgroup +} +\newcommand*{\@foldmarks}{% + \if@fold% + \typeout{Foldmarks: yes}% + \move@topt + \ifdim \useplength{pfoldmarklength}=\z@ + \setplength{pfoldmarklength}{4mm}% + \fi + \ifdim \useplength{tfoldmarklength}=\z@ + \setplength{tfoldmarklength}{2mm}% + \fi + \ifdim \useplength{mfoldmarklength}=\z@ + \setplength{mfoldmarklength}{2mm}% + \fi + \ifdim \useplength{bfoldmarklength}=\z@ + \setplength{bfoldmarklength}{2mm}% + \fi + \ifdim \useplength{lfoldmarklength}=\z@ + \setplength{lfoldmarklength}{4mm}% + \fi + \begingroup + \@expandtwoargs\in@{P}{\@usefolds}% + \ifin@ + \@foldmark{.5\paperheight}{\useplength{pfoldmarklength}}% + \fi + \endgroup + \@hfoldmark{T}% + \@hfoldmark{M}% + \@hfoldmark{B}% + \@vfoldmark{L}% + \move@frompt + \else + \typeout{Foldmarks: no}% + \fi% +} +\newif\if@savevbox@warning\@savevbox@warningtrue +\newcommand{\@savevbox}[6][]{% + \begingroup% + \vbox to #2{#1#3}% + \if@savevbox@warning\@savevbox@warningfalse% + \setbox\z@\vbox{\color@begingroup #3\color@endgroup}% + \setlength{\@tempdima}{#2}% + \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}% + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \PackageWarning{scrletter}{% + #4 is \the\@tempdimb\space too high.\MessageBreak + You have to change `\string#5'\MessageBreak + or you have to define a smaller\MessageBreak + #4 using \string#6.\MessageBreak + Because of this too high #4\MessageBreak + you've got an overfull \string\vbox\space message% + }% + \fi% + \fi% + \endgroup% +} +\newcommand*{\@firstheadfootfield}{% + \if@firsthead + \typeout{Head of first page}% + \move@topt\vskip\useplength{firstheadvpos}% + \vb@t@z{% + \rlap{\move@topl + \ifdim\useplength{firstheadhpos}<\paperwidth + \ifdim \useplength{firstheadhpos}>-\paperwidth + \ifdim \useplength{firstheadhpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstheadhpos}% + \addtolengthplength[-]{\@tempskipa}{firstheadwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstheadhpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% + \fi + \hskip\@tempskipa + \vbox{\hsize\useplength{firstheadwidth}% + \setlength{\@tempskipa}{\useplength{toaddrvpos}}% + \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}% + \addtolength{\@tempskipa}{-\baselineskip}% + \setlength{\textwidth}{\useplength{firstheadwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \@savevbox{\@tempskipa}{\noindent\usekomavar{firsthead}% + \vskip \z@ \@plus .00001fil}% + {head of first page}{firstheadvpos}{\setkomavar}% + }% + }% + }% + \vskip-\useplength{firstheadvpos}\move@frompt + \else + \typeout{No head at first page}% + \fi + \move@topt + \if@firstfoot + \typeout{Foot of first page}% + \vb@t@z{% + \rlap{\move@topl + \ifdim\useplength{firstfoothpos}<\paperwidth + \ifdim \useplength{firstfoothpos}>-\paperwidth + \ifdim \useplength{firstfoothpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstfoothpos}% + \addtolengthplength[-]{\@tempskipa}{firstfootwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstfoothpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% + \fi + \hskip\@tempskipa + \vbox{\hsize\useplength{firstfootwidth}% + \vskip\useplength{firstfootvpos}% + \setlength{\textwidth}{\useplength{firstfootwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \vbox{\hsize\useplength{firstfootwidth}\noindent + \usekomavar{firstfoot}}% + }% + }% + }% + \else + \typeout{No foot at first page}% + \fi + \move@frompt% + {% + \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}% + \addtolength{\@tempdima}{\headheight}% + \addtolength{\@tempdima}{\headsep}% + \addtolength{\@tempdima}{\textheight}% + \addtolength{\@tempdima}{\footskip}% + \if@firstfoot + \addtolengthplength[-1]{\@tempdima}{firstfootvpos}% + \else + \addtolength{\@tempdima}{-\paperheight}% + \fi + \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}% + \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi + }% +} +\newcommand*{\@addrfield}{% + \ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax + \typeout{Address: No}% + \or + \begingroup% + \if@baddr + \Ifkomavarempty{backaddress}{% + \let\@tempa\@empty\let\@tempb\@empty + }{% + \def\@tempa{backaddress}\def\@tempb{,\space}% + }% + \else + \let\@tempa\@empty\let\@tempb\@empty + \fi + \ifcase \ltr@priority + \Ifkomavarempty{specialmail}{}{% + \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}% + }% + \or + \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% + \or + \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% + \fi + \typeout{Address (\@tempa\@tempb addressee)}% + \endgroup% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \rlap{\move@topl + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \hskip\@tempskipa + \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% + \@savevbox[\vss]{\useplength{backaddrheight}}{% + \hsize\useplength{toaddrwidth}% + \if@baddr + \Ifkomavarempty{backaddress}{}{{% + \noindent% + \backaddr@format{\scriptsize + {% + \def\\{\usekomavar{backaddressseparator}\@ogobble}% + \usekomafont{backaddress}% + {\usekomavar{backaddress}}% + }}}}% + \fi + }{backaddress}{backaddrheight}{\setkomavar}% + \ifcase \ltr@priority + \or + \setkomavar{specialmail}{% + {\usekomafont{priority}{% + {\usekomafont{prioritykey}{B}}% + -ECONOMY}}% + }% + \or + \setkomavar{specialmail}{% + {\usekomafont{priority}{% + {\usekomafont{prioritykey}{A}}% + -PRIORITY}}% + }% + \fi + \Ifkomavarempty{specialmail}{}{% + \vbox{\hsize\useplength{toaddrwidth}% + \noindent\hspace*{\useplength{specialmailindent}}% + \specialmail@format{% + \usekomafont{specialmail}\usekomavar{specialmail}}% + \hspace*{\useplength{specialmailrightindent}}}% + }% + \ifnum\@afieldmode=\@ne\vfil\fi% + \noindent\hskip\useplength{toaddrindent}% + \setlength{\@tempdima}{\useplength{toaddrwidth}}% + \addtolengthplength[-2]{\@tempdima}{toaddrindent}% + \vbox{\hsize\@tempdima\raggedright + \usekomafont{addressee}{% + {\usekomafont{toname}{\usekomavar{toname}\\}}% + {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% + \vfil\null\vskip-\baselineskip}% + {address field}{toaddrheight}% + {\begin{letter} or you\MessageBreak + have to define a smaller special purpose using\MessageBreak + \string\specialmail}% + }}}% + \vskip-\useplength{toaddrvpos}\move@frompt + \else + \begingroup% + \if@baddr + \let\@tempa\@empty\let\@tempb\@empty + \ifcase \@afieldmode\relax\or\or + \def\@tempa{PP-mode}\def\@tempb{,\space}% + \or + \def\@tempa{backgroundimage-mode}\def\@tempb{,\space}% + \or + \def\@tempa{image-mode}\def\@tempb{,\space}% + \fi + \Ifkomavarempty{backaddress}{}{% + \edef\@tempa{\@tempa\@tempb backaddress ignored}\def\@tempb{,\space}% + }% + \else + \let\@tempa\@empty\let\@tempb\@empty + \fi + \ifcase \ltr@priority + \Ifkomavarempty{specialmail}{}{% + \edef\@tempa{\@tempa\@tempb specialmail ignored}\def\@tempb{,\space}% + }% + \or + \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% + \or + \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% + \fi + \typeout{Address (\@tempa\@tempb addressee)}% + \endgroup% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \ifdim \useplength{toaddrindent}=\z@ + \setplength{toaddrindent}{8mm}% + \fi + \ifdim \useplength{PPheadheight}=\z@ + \setplength{PPheadheight}{20.74pt}% + \fi + \ifdim \useplength{PPheadwidth}=\z@ + \setplength{PPheadwidth}{42mm}% + \fi + \ifdim \useplength{PPdatamatrixvskip}=\z@ + \setplength{PPdatamatrixvskip}{9mm}% + \fi + \rlap{\move@topl + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \hskip\@tempskipa + \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% + \ifnum\@afieldmode=\tw@ + \vskip 2pt\relax + \hskip \useplength{toaddrindent}\relax + \fbox{% + \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% + \setlength{\parindent}{0pt}% + \hsize \dimexpr \useplength{PPheadwidth}-2\fboxsep\relax + \sbox\@tempboxa{% + {\fontsize{20.74pt}{20.74pt}\selectfont + \usekomafont{PPlogo}{P.P.}}\hskip 2mm% + }% + \dp\@tempboxa\z@ + \setlength{\@tempdima}{\hsize}% + \addtolength{\@tempdima}{-\wd\@tempboxa}% + \hbox{\box\@tempboxa + \vbox to \dimexpr + \useplength{PPheadheight}-2\fboxsep\relax{% + \vss\hsize\@tempdima + \raggedright + \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% + \usekomavar*{fromzipcode}\usekomavar{zipcodeseparator}% + \usekomavar{fromzipcode}\scr@endstrut\\ + \usekomavar{place}\scr@endstrut + \hfill + }% + }% + \vss + }% + }% + \hskip 1mm + \mbox{% + \vbox to \useplength{PPheadheight}{% + \addtolengthplength[-]{\hsize}{PPheadwidth}% + \addtolength{\hsize}{-1mm}% + \addtolengthplength[-2]{\hsize}{toaddrindent}% + \setlength{\parindent}{0pt}% + \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% + \hfill\usekomavar{PPcode} + \vss + \ifcase \ltr@priority + \or + \usekomafont{priority}{% + {\usekomafont{prioritykey}{B}}% + -ECONOMY\hss\vskip-\dp\strutbox + }% + \or + \usekomafont{priority}{% + {\usekomafont{prioritykey}{A}}% + -PRIORITY\hss\vskip-\dp\strutbox + }% + \fi + \vss + }% + }% + \vskip 1mm + \vskip-\ht\strutbox + \noindent\hskip\useplength{toaddrindent}% + \hrulefill% + \hskip\useplength{toaddrindent}% + \vbox to\z@{\hsize\z@ + \vskip \useplength{PPdatamatrixvskip}\relax + \llap{\usekomavar{PPdatamatrix}\hskip\useplength{toaddrindent}}% + \vss + }% + \else + \vskip 1mm + \noindent\expandafter\hskip\useplength{toaddrindent}% + \vbox to \useplength{PPheadheight}{% + \addtolengthplength[-2]{\hsize}{toaddrindent}% + \setlength{\parindent}{0pt}% + \usekomavar{addresseeimage}% + \vss + }% + \vskip 1mm + \vskip\dp\strutbox + \fi + \ifnum \@afieldmode=4 \else + \vfil% + \noindent\hskip\useplength{toaddrindent}% + \setlength{\@tempdima}{\useplength{toaddrwidth}}% + \addtolengthplength[-2]{\@tempdima}{toaddrindent}% + \vbox{\hsize\@tempdima + \Ifkomavarempty{PPdatamatrix}{}{% + \addtolength{\hsize}{-2mm}% + \settowidth\@tempdima{\usekomavar{PPdatamatrix}}% + \addtolength{\hsize}{-\@tempdima}% + }% + \raggedright + \usekomafont{addressee}{% + {\usekomafont{toname}{\usekomavar{toname}\\}}% + {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% + \fi + \vss\null}% + {address field}{toaddrheight}% + {\string\begin{letter}}% + }}}% + \vskip-\useplength{toaddrvpos}\move@frompt + \fi +} +\newcommand*{\specialmail@format}[1]{} +\let\specialmail@format\underline +\newcommand*{\@ogobble}[1][]{} +\newcommand*{\@locfield}{% + \ifdim \useplength{locwidth}=\z@% + \setplength{locwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% + \else + \addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% + \if@bigloc% + \setplength[.66667]{locwidth}{\useplength{locwidth}}% + \else% + \setplength[.5]{locwidth}{\useplength{locwidth}}% + \fi% + \fi% + \ifcase\@alignfrom + \or + \if@logo + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \fi + \or + \or + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \or + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \fi + \Ifkomavarempty{location}{% + \typeout{Location field: empty}% + }{% + \typeout{Location field: yes}% + \ifdim \useplength{lochpos}=\z@% + \setplength{lochpos}{\useplength{toaddrhpos}}% + \fi + \ifdim \useplength{locvpos}=\z@% + \setplength{locvpos}{\useplength{toaddrvpos}}% + \fi + \ifdim \useplength{locheight}=\z@% + \setplength{locheight}{\useplength{toaddrheight}}% + \fi + \move@topt\vskip\useplength{locvpos}% + \vb@t@z{\noindent\makebox[0pt][l]{% + \move@topl + \setlengthtoplength[-]{\@tempskipa}{lochpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \else + \addtolengthplength{\@tempskipa}{locwidth}% + \fi + \hskip\@tempskipa + \makebox[0pt][r]{% + \@savevbox{\useplength{locheight}}{% + \noindent\hsize\useplength{locwidth}% + \ifcase\@alignfrom + \or + \if@logo + \Ifkomavarempty{fromlogo}{\null}{% + {\raggedleft\noindent\usekomavar{fromlogo}\\ + \vskip\parskip}\noindent}% + \fi + \or + \or + \if@logo + \Ifkomavarempty{fromlogo}{}{% + \raggedleft\usekomavar{fromlogo}\par}% + \fi + \raggedright + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}% + }% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + \or + \raggedleft + \if@logo + \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\par}% + \fi + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}% + }% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone% + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + \fi + \usekomavar{location}% + \vskip \z@ \@plus .00001fil}% + {location field}{locheight}{\setkomavar}% + }}% + }% + \vskip-\useplength{locvpos}\move@frompt + }% +} +\newcommand*{\do@set@reffield}{} +\newcommand*{\@set@reffield}[1]{% + \Ifkomavarempty{#1}{}{% + \settowidth{\@tempdima}{\strut\usekomafont{refvalue}\usekomavar{#1}}% + \sbox\z@{\strut\usekomafont{refname}\usekomavar*{#1}}% + \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi + \if@tempswa\enskip\hfill\fi + \parbox[t]{\@tempdima}{\noindent\raggedright + \strut\box\z@\\\usekomafont{refvalue}\strut\usekomavar{#1}}% + \@tempswatrue + }% +} +\newcommand*{\@test@reffield}[1]{% + \Ifkomavarempty{#1}{}{% + \@tempswatrue + }% +} +\newcommand*{\@set@reffields}{}% +\newcommand*{\addtoreffields}[1]{% + \l@addto@macro{\@set@reffields}{\do@set@reffield{#1}}% +} +\newcommand*{\removereffields}{% + \renewcommand*{\@set@reffields}{}% +} +\newcommand*{\defaultreffields}{% + \removereffields + \addtoreffields{yourref}% + \addtoreffields{yourmail}% + \addtoreffields{myref}% + \addtoreffields{customer}% + \addtoreffields{invoice}% +} +\defaultreffields +\newcommand*{\@datefield}{% + {% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \ifdim\useplength{refwidth}=\z@ + \if@refwide + \setplength{refwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \setplength{refhpos}{\useplength{toaddrhpos}}% + \else + \setplength[-]{refhpos}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-2]{refwidth}{\useplength{refhpos}}% + \else + \setplength{refwidth}{\textwidth}% + \setplength{refhpos}{\oddsidemargin}% + \addtoplength{refhpos}{1in}% + \fi + \else + \ifdim\useplength{refhpos}=\z@ + \begingroup + \setlength\@tempdima{\textwidth}% + \addtolengthplength[-]{\@tempdima}{refwidth}% + \setlength\@tempdimb{\oddsidemargin}% + \addtolength\@tempdimb{1in}% + \setlength{\@tempdimc}{\paperwidth}% + \addtolength{\@tempdimc}{-\textwidth}% + \divide\@tempdimb by 32768\relax + \divide\@tempdimc by 32768\relax + \ifdim\@tempdimc=\z@\else + \multiply\@tempdima by\@tempdimb + \divide\@tempdima by\@tempdimc + \fi + \edef\@tempa{\noexpand\endgroup + \noexpand\setplength{refhpos}{\the\@tempdima}}% + \@tempa + \fi\fi + \@tempswafalse + \move@topt\vskip\useplength{refvpos}% + \@tempswafalse + \let\do@set@reffield\@test@reffield + \@set@reffields + \ifcase \@datepos\else\@test@reffield{date}\fi + \if@tempswa + \@tempswafalse + \rlap{\noindent\move@topl\hskip\useplength{refhpos}% + \vbox{\hsize\useplength{refwidth}% + \noindent + \ifnum \@datepos=2 + \@set@reffields + \if@tempswa + \@tempswafalse + \@set@reffield{date}% + \fi + \fi + \let\do@set@reffield\@set@reffield + \@set@reffields% + \if@tempswa + \ifnum \@datepos=1 \@set@reffield{date}\fi% + \sbox\z@{\usekomafont{refname}\strutbox}% + \ifdim\ht\z@>\ht\strutbox + \PackageWarningNoLine{scrletter}{% + Font element `refname' should not be larger than + \string\normalsize!}% + \fi + \sbox\z@{\usekomafont{refvalue}\strutbox}% + \ifdim\ht\z@>\ht\strutbox + \PackageWarningNoLine{scrletter}{% + Font element `refvalue' should not be larger than + \string\normalsize!}% + \fi + \else + \ifcase \@datepos\else + \ifnum \@datepos=1 \enskip\hfill\fi + {\usekomafont{placeanddate}{\Ifkomavarempty{place}{}{% + \usekomavar{place}\usekomavar{placeseparator}}% + \usekomavar{date}}}% + \fi + \fi + }% + }% + \fi + \vskip\useplength{refaftervskip}% + }% +} +\newcommand*{\@makelettertitle}{% + \Ifkomavarempty{title}{% + \typeout{Title: no}% + }{% + \typeout{Title: yes}% + {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}% + \vskip\baselineskip% + }% +} +\newcommand*{\@subjfield}{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \Ifkomavarempty{subject}{% + \typeout{Subject: no}% + }{% + \ifx\raggedsubject\@empty + \ifdim\useplength{subjectvpos}=\z@ + \if@subjafter% + \typeout{Subject: after opening}% + \let\raggedsubject\centering% + \else + \typeout{Subject: before opening}% + \def\raggedsubject{\noindent\@hangfrom}% + \fi + \else + \typeout{Subject: at absolute vertical position}% + \def\raggedsubject{\noindent\@hangfrom}% + \fi + \fi + \ifdim\useplength{subjectvpos}=\z@ + \vskip\useplength{subjectbeforevskip}% + \begingroup + \else + \move@topt\vskip\useplength{subjectvpos}% + \expandafter\vb@t@z\expandafter{% + \fi + \usekomafont{lettersubject}% + \raggedsubject{\if@subj \subject@format{\strut\ignorespaces + \usekomavar*{subject}}\fi}% + \subject@format{\strut\ignorespaces\usekomavar{subject}}\par + \ifdim\useplength{subjectvpos}=\z@ + \endgroup + \vskip\useplength{subjectaftervskip}% + \else + }% + \vskip-\useplength{subjectvpos}\move@frompt + \fi + }% + }% +} +\newplength{subjectvpos} +\setplength{subjectvpos}{0pt} +\newplength{subjectaftervskip} +\setplength{subjectaftervskip}{2\baselineskip} +\newplength{subjectbeforevskip} +\setplength{subjectbeforevskip}{0pt} +\newkomavar{nexthead} +\setkomavar{nexthead}{% + \rlap{\parbox[c]{\textwidth}{\raggedright\strut + \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}% + \parbox[c]{\textwidth}{% + \centering\strut + \ifcase\@pageat + \rightmark + \or + \pagemark + \or + \rightmark + \fi\strut}% + \llap{\parbox[c]{\textwidth}{\raggedleft\strut + \ifcase\@pageat + \leftmark + \or + \rightmark + \or + \pagemark + \else + \rightmark + \fi\strut}}% +}% +\newkomavar{nextfoot} +\setkomavar{nextfoot}{% + \ifnum\@pageat>2 + \parbox[c]{\textwidth}{% + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark% + }% + \fi +} +\newenvironment{letter}[2][]{% + \if@twocolumn + \PackageWarning{scrletter}{% + twocolumn mode not supported.\MessageBreak + If you really want a twocolumned letter, you should\MessageBreak + use package `multicol' and add a `multicols'\MessageBreak + environment inside your letter.\MessageBreak + Switching back to oneside% + }% + \letter@restonecoltrue + \expandafter\onecolumn + \else + \letter@restonecolfalse + \fi + \cleardoubleoddemptypage + \raggedbottom + \scr@ifundefinedorrelax{letterpagestyle}{}{% + \ifx\letterpagestyle\@empty\else + \pagestyle{\letterpagestyle}% + \fi + }% + \let\pagemark\letterpagemark + \refstepcounter{letter}% + \let\thisletter\@currentlabel + \setcounter{page}{\@ne}% + \setcounter{footnote}{0}% + \interlinepenalty=200\@processto{#2}% + \KOMAoptions{#1}% + \@beginletterhook +}{% + \stopletter + \let\@currentlabel\thisletter + \label{\thisletter.lastpage}% + \@@par\pagebreak\@@par% + \ifletter@restonecol\twocolumn\fi +} +\newif\ifletter@restonecol +\newcommand*{\thisletter}{outside.letter.undefined} +\newcommand*{\letterlastpage}{\pageref{\thisletter.lastpage}} +\newcommand*{\stopletter}{} +\newcommand{\@processto}[1]{% + \IfArgIsEmpty{#1}{% + }{% + \expandafter\@xproc#1\\\@nil + \ifx\reserved@b\@empty\else\expandafter\@xproc#1\@nil\fi + \edef\reserved@a{% + \noexpand\setkomavar{toname}{\unexpanded\expandafter{\reserved@a}}% + \noexpand\setkomavar{toaddress}{\unexpanded\expandafter{\reserved@b}}% + }\reserved@a + }% +} +\newcommand*{\@xproc}{} +\long\def\@xproc#1\\#2\@nil{% + \def\reserved@a{#1}\def\reserved@b{#2}% +} +\g@addto@macro\flushbottom{% + \AtEndLetter{\vskip \z@\@plus.0001fil\relax}% +} +\newcounter{letter} +\newcommand*{\letterpagestyle}{% + plain.letter% +} +\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook} +\newcommand{\@beginletterhook}{} +\newcommand{\AtEndLetter}{\g@addto@macro\stopletter} +\newcommand*{\stopbreaks}{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +\DeclareRobustCommand*{\@nobreakvspace}{% + \kernel@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\newcommand*{\@nobreakcr}{\kernel@ifstar{\@normalcr*}{\@normalcr*}} +\newcommand*{\startbreaks}{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200\relax}} +\newcommand{\opening}[1]{% + \@PapersizeWarning + \@gen@firsthead + \@mkboth{\scr@fromname@var}{\scr@subject@var}% + \thispagestyle{empty}% + \noindent + \@foldmarks\@firstheadfootfield + \@addrfield\@locfield + \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi + \@datefield + \@makelettertitle + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi + {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% + {\setlength{\@tempdima}{\baselineskip}% + \addtolength{\@tempdima}{-\parskip}% + \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi + \@afterindentfalse\@afterheading +} +\newcommand*{\closing}[1]{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par + \nobreak\vskip\baselineskip + \stopbreaks\noindent + \settowidth{\@tempdima}{% + \begin{tabular}{@{}l@{}} + #1\tabularnewline + \usekomavar{signature}\tabularnewline + \end{tabular}% + }% + \setlength{\@tempdimb}{\hsize}% + \addtolength{\@tempdimb}{-\useplength{sigindent}}% + \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi + \hspace{\useplength{sigindent}}% + \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces + #1\ifhmode\scr@endstrut\\[\useplength{sigbeforevskip}] + \else\vskip \useplength{sigbeforevskip}\fi + \strut\ignorespaces + \usekomavar{signature}\ifhmode\scr@endstrut\fi}}\par + \nobreak\vskip\baselineskip +} +\newcommand\ps{\par% + \ifdim\parskip=\z@ + \vskip\baselineskip + \fi\startbreaks\noindent\ignorespaces +} +\newcommand*{\cc}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \Ifkomavarempty*{ccseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +\newcommand*{\encl}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \Ifkomavarempty*{enclseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +\newkomavar{place} +\newkomavar{location} +\newkomavar{specialmail} +\newkomavar{title} +\newkomavar{fromlogo} +\newkomavar{fromzipcode} +\newkomavar{PPcode} +\newkomavar{PPdatamatrix} +\newkomavar{addresseeimage} +\newkomavar{signature} +\setkomavar{signature}{\usekomavar{fromname}} +\newkomavar{backaddress} +\setkomavar{backaddress}{% + \Ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \Ifkomavarempty{fromaddress}{}{\\}}% + \Ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% + } +\newkomavar[\usekomavar{place}]{placeseparator} +\setkomavar{placeseparator}{,\nobreakspace} +\newkomavar[\subjectname]{subjectseparator} +\setkomavar{subjectseparator}{: } +\newkomavar[\ccname]{ccseparator} +\setkomavar{ccseparator}{: } +\newkomavar[\enclname]{enclseparator} +\setkomavar{enclseparator}{: } +\newkomavar{backaddressseparator} +\setkomavar{backaddressseparator}{,\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@phone\else\phonename\fi]{phoneseparator} +\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[% + \if@scrsymbols\scr@symbol@mobilephone\else\mobilephonename\fi +]{mobilephoneseparator} +\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}} +\newkomavar[\if@scrsymbols\scr@symbol@fax\else\faxname\fi]{faxseparator} +\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@email\else\emailname\fi]{emailseparator} +\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@www\else\wwwname\fi]{urlseparator} +\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi} +\newkomavar{zipcodeseparator} +\setkomavar{zipcodeseparator}{\,--\,} +\newkomavar[\headfromname]{fromname} +\newkomavar[\usekomavar{fromname}]{fromaddress} +\newkomavar[\headtoname]{toname} +\newkomavar[\usekomavar{toname}]{toaddress} +\newkomavar[\usekomavar*{phoneseparator}% + \usekomavar{phoneseparator}]{fromphone} +\newkomavar[\usekomavar*{mobilephoneseparator}% + \usekomavar{mobilephoneseparator}]{frommobilephone} +\newkomavar[\usekomavar*{faxseparator}% + \usekomavar{faxseparator}]{fromfax} +\newkomavar[\usekomavar*{emailseparator}% + \usekomavar{emailseparator}]{fromemail} +\newkomavar[\usekomavar*{urlseparator}% + \usekomavar{urlseparator}]{fromurl} +\newkomavar[\bankname]{frombank} +\newkomavar[\yourrefname]{yourref} +\newkomavar[\yourmailname]{yourmail} +\newkomavar[\myrefname]{myref} +\newkomavar[\customername]{customer} +\newkomavar[\invoicename]{invoice} +\newkomavar[\usekomavar*{subjectseparator}% + \usekomavar{subjectseparator}]{subject} +\newkomavar[\datename]{date} +\setkomavar{date}{\@date} +\newcommand*{\scr@saved@date}{} +\let\scr@saved@date\date +\renewcommand*{\date}[1]{% + \PackageWarning{scrletter}{% + \string\date\space changes the internal \string\LaTeX\space date + only.\MessageBreak + You should note that this changes the default\MessageBreak + value of variable `date' only as long as nobody\MessageBreak + uses `\string\setkomavar` to change the content of\MessageBreak + variable `date'.\MessageBreak + Therefore, usage of `\string\setkomavar' is recommended\MessageBreak + to change the letter's date% + }% + \scr@saved@date{#1}% +} +%%% From File: $Id: scrkernel-addressfiles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\adrentry}[7]{% + \PackageWarning{scrletter}{% + command `\string\adrentry' is deprecated.\MessageBreak + You should use `\string\addrentry' with additional\MessageBreak + empty 8th argument}% + \addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}} +\newcommand*{\addrentry}[9]{\def\@tempa{#1}\ifx \@tempa\@empty \else + \def\@tempa{#2}\ifx \@tempa\@empty + \expandafter\def\csname #9\endcsname{#1\\#3}% + \else + \expandafter\def\csname #9\endcsname{#2 #1\\#3}% + \fi \fi} +\newcommand*{\adrchar}{% + \PackageWarning{scrletter}{% + command `\string\adrchar' is deprecated.\MessageBreak + You should use `\string\addrchar'} + \addrchar} +\newcommand*{\addrchar}[1]{} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrletter.sty'. diff --git a/texmf/tex/latex/koma-script/scrlfile-hook-3.34.sty b/texmf/tex/latex/koma-script/scrlfile-hook-3.34.sty new file mode 100644 index 000000000..2a36f5d55 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlfile-hook-3.34.sty @@ -0,0 +1,329 @@ +%% +%% This is file `scrlfile-hook-3.34.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlfile-hook.dtx (with options: `package,3.34') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlfile-hook.dtx$ +\ProvidesPackage{scrlfile-hook-3.34}[% + 2022/07/04 v3.37 KOMA-Script + package + (using LaTeX hooks)] +\@ifundefined{IfFormatAtLeastTF}{% + \PackageError{scrlfile-hook}{not recommended usage of package}{% + It seems this package has been loaded directly using a LaTeX + version\MessageBreak + prior to 2020-10-01. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook.\MessageBreak + If you would continue, I will try to load scrlfile-patcholdlatex% + }% + \RequirePackage{scrlfile-patcholdlatex}\endinput +}{% + \IfFormatAtLeastTF{2020/10/01}{% + \IfFormatAtLeastTF{2021/11/15}{% + \PackageError{scrlfile-hook-3.34}{LaTeX too new for this package}{% + It seems this package has ben loaded directly using a LaTeX + version\MessageBreak + newer than 2021-06-01. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook-3.34.\MessageBreak + If you would continue, I will try to load scrlfile-hook% + }% + \RequirePackage{scrlfile-hook}\endinput + }{% + }% + }{% + \PackageError{scrlfile-hook}{LaTeX too old for this package}{% + It seems this package has been loaded directly using a LaTeX + version\MessageBreak + prior to 2020-10-01. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook.\MessageBreak + If you would continue, I will try to load scrlfile-patcholdlatex% + }% + \RequirePackage{scrlfile-patcholdlatex}\endinput + }% +} +\ExplSyntaxOn +\NewDocumentCommand \BeforeFile { m } + { + \AddToHook { file / before / #1 } + } +\NewDocumentCommand \AfterFile { m } + { + \AddToHook { file / after / #1 } + } +\NewDocumentCommand \BeforeClass { m } + { + \BeforeFile { #1.\@clsextension } + } +\NewDocumentCommand \BeforePackage { m } + { + \BeforeFile { #1.\@pkgextension } + } +\NewDocumentCommand \AfterAtEndOfClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \scrlfile_if_class_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { class / after / #2 } { #3 } { #4 } } + } + { \hook_gput_code:nnn { class / after / #2 } { #3 } { #4 } } + } +\NewDocumentCommand \AfterAtEndOfPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \scrlfile_if_package_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { package / after / #2 } { #3 } { #4 } } + } + { \hook_gput_code:nnn { package / after / #2 } { #3 } { #4 } } + } +\seq_new:N \g__scrlfile_input_file_seq +\hook_gput_code:nnn { file / before } { . } + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } } +\msg_new:nnn { scrlfile-hook } { too-many-pops } + { + More~file~names~popped~from~stack~than~put~to.~ + This~should~never~happen.~ + However,~it~could~happen~if~scrlfile-hook~is~loaded~by~another~ + package~or~class.~In~this~case~some~packages~or~classes~are~not~ + recognised~correctly. + } +\hook_gput_code:nnn { file / after } { . } + { + \seq_gpop:NNF \g__scrlfile_input_file_seq \l_tmpa_seq + { + \msg_warning:nn { scrlfile-hook } { too-many-pops } + } + } +\cs_if_exist:NTF \g__filehook_input_file_seq + { + \seq_map_inline:Nn \g__filehook_input_file_seq + { + \seq_gput_right:Nx \g__scrlfile_input_file_seq + { \tl_item:nn { #1 } { 2 } } + } + } + { + \seq_gpush:Nx \g__scrlfile_input_file_seq { } + \cs_if_exist:NTF \CurrentFileUsed + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFileUsed } } + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } } + } +\prg_new_protected_conditional:Npnn \__scrlfile_if_loading:n #1 { T, F, TF } + { + \str_set:Nx \l_tmpa_str { #1 } + \seq_if_in:NxTF \g__scrlfile_input_file_seq { \str_use:N \l_tmpa_str } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_new_protected_conditional:Npnn \scrlfile_if_class_loaded:n #1 { T, F, TF } + { + \@ifclassloaded { #1 } + { + \__scrlfile_if_loading:nTF { #1.\@clsextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } +\prg_new_protected_conditional:Npnn \scrlfile_if_package_loaded:n #1 { T, F, TF } + { + \@ifpackageloaded { #1 } + { + \__scrlfile_if_loading:nTF { #1.\@pkgextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } +\NewDocumentCommand \scrlfile@AfterClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifclassloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / after / #2.\@clsextension } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / after / #2.\@clsextension } { #3 } { #4 } + } + } +\NewDocumentCommand \AfterClass { } { \scrlfile@AfterClass } +\NewDocumentCommand \scrlfile@AfterPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifpackageloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / after / #2.\@pkgextension } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / after / #2.\@pkgextension } { #3 } { #4 } + } + } +\NewDocumentCommand \AfterPackage { } { \scrlfile@AfterPackage } +\NewDocumentCommand{\ReplaceInput}{}{\declare@file@substitution} +\NewDocumentCommand\ReplaceClass{mm}{% + \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}% +} +\NewDocumentCommand\ReplacePackage{mm}{% + \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}% +} +\NewDocumentCommand{\UnReplaceInput}{}{\undeclare@file@substitution} +\NewDocumentCommand\UnReplaceClass{m}{% + \undeclare@file@substitution{#1.\@clsextension}% +} +\NewDocumentCommand\UnReplacePackage{mm}{% + \undeclare@file@substitution{#1.\@pkgextension}% +} +\clist_new:N \g__scrlfile_prevent_clist +\NewDocumentCommand \PreventPackageFromLoading { s +o m } + { + \clist_set:Nx \l__scrlfile_package_clist { #3 } + \clist_map_inline:Nn \l__scrlfile_package_clist + { + \@ifpackageloaded { ##1 } + { + \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn } + { scrlfile } { no-prevent-for-already-loaded } { ##1 } + } + { + \clist_if_in:NnF \g__scrlfile_prevent_clist { ##1 } + { \clist_gput_right:Nn \g__scrlfile_prevent_clist { ##1 } } + \tl_if_exist:cF { g__scrlfile_exclude_package_##1_tl } + { + \tl_new:c { g__scrlfile_exclude_package_##1_tl } + } + \IfValueT { #2 } + { + \tl_gput_right:cn { g__scrlfile_exclude_package_##1_tl } { #2 } + } + \disable@package@load { ##1 } + { \tl_use:c { g__scrlfile_exclude_package_##1_tl } } + } + } + \clist_clear:N \l__scrlfile_package_clist + } +\clist_new:N \l__scrlfile_package_clist +\msg_new:nnn { scrlfile } { no-prevent-for-already-loaded } + { + Cannot~prevent~package~`#1'~from~being~loaded,~ + because~it~has~been~loaded~already~before~line~\msg_line_number: + } +\NewDocumentCommand \StorePreventPackageFromLoading { m } + { \edef #1 { \clist_use:Nn \g__scrlfile_prevent_clist { , } } } +\NewDocumentCommand \ResetPreventPackageFromLoading {} + { + \clist_map_function:NN \g__scrlfile_prevent_clist \reenable@package@load + \clist_gclear:N \g__scrlfile_prevent_clist + } +\NewDocumentCommand \UnPreventPackageFromLoading { s m } + { + \clist_set:Nx \l__scrlfile_package_clist { #2 } + \clist_map_inline:Nn \l__scrlfile_package_clist + { + \clist_if_in:NnT \g__scrlfile_prevent_clist { ##1 } + { + \clist_gremove_all:Nn \g__scrlfile_prevent_clist { ##1 } + \reenable@package@load { ##1 } + \IfBooleanT { #1 } + { \cs_undefine:c { g__scrlfile_exclude_package_##1_tl } } + } + } + } +\NewDocumentCommand \BeforeClosingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afterlastpage } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \BeforeClosingMainAux { m } { ##1 } + \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn + \debug_resume: + } + } +\NewDocumentCommand \AfterReadingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afteraux } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \AfterReadingMainAux { m } { ##1 } + \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn + \debug_resume: + } + } +\ExplSyntaxOff +\ProvideDocumentCommand\protected@immediate@write{m+m+m} + {% + \begingroup + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\immediate\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + } +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlfile-hook-3.34.sty'. diff --git a/texmf/tex/latex/koma-script/scrlfile-hook.sty b/texmf/tex/latex/koma-script/scrlfile-hook.sty new file mode 100644 index 000000000..25a41f0c4 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlfile-hook.sty @@ -0,0 +1,337 @@ +%% +%% This is file `scrlfile-hook.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlfile-hook.dtx (with options: `package,current') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlfile-hook.dtx$ +\ProvidesPackage{scrlfile-hook}[% + 2022/07/04 v3.37 KOMA-Script + package + (using LaTeX hooks)] +\@ifundefined{IfFormatAtLeastTF}{% + \PackageError{scrlfile-hook}{not recommended usage of package}{% + It seems this package has been loaded directly using a LaTeX + version\MessageBreak + prior to 2020-10-01. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook.\MessageBreak + If you would continue, I will try to load scrlfile-patcholdlatex% + }% + \RequirePackage{scrlfile-patcholdlatex}\endinput +}{% + \IfFormatAtLeastTF{2020/10/01}{% + \IfFormatAtLeastTF{2021/11/15}{% + }{% + \PackageError{scrlfile-hook}{LaTeX too old for this package}{% + It seems this package has been loaded directly using LaTeX + version\MessageBreak + prior to 2021-11-15. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook.\MessageBreak + If you would continue, I will try to load scrlfile-hook-3.34% + }% + \RequirePackage{scrlfile-hook-3.34}\endinput + }% + }{% + \PackageError{scrlfile-hook}{LaTeX too old for this package}{% + It seems this package has been loaded directly using a LaTeX + version\MessageBreak + prior to 2020-10-01. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-hook.\MessageBreak + If you would continue, I will try to load scrlfile-patcholdlatex% + }% + \RequirePackage{scrlfile-patcholdlatex}\endinput + }% +} +\ExplSyntaxOn +\NewDocumentCommand \BeforeFile { m } + { + \AddToHook { file / #1 / before } + } +\NewDocumentCommand \AfterFile { m } + { + \AddToHook { file / #1 / after } + } +\NewDocumentCommand \BeforeClass { m } + { + \BeforeFile { #1.\@clsextension } + } +\NewDocumentCommand \BeforePackage { m } + { + \BeforeFile { #1.\@pkgextension } + } +\NewDocumentCommand \AfterAtEndOfClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \scrlfile_if_class_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + { + \scrlfile_if_class_loaded:nF + { #2 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + } +\NewDocumentCommand \AfterAtEndOfPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \scrlfile_if_package_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + { + \scrlfile_if_package_loaded:nF + { #2 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + } +\seq_new:N \g__scrlfile_input_file_seq +\hook_gput_code:nnn { file / before } { . } + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } } +\msg_new:nnn { scrlfile-hook } { too-many-pops } + { + More~file~names~popped~from~stack~than~put~to.~ + This~should~never~happen.~ + However,~it~could~happen~if~scrlfile-hook~is~loaded~by~another~ + package~or~class.~In~this~case~some~packages~or~classes~are~not~ + recognised~correctly. + } +\hook_gput_code:nnn { file / after } { . } + { + \seq_gpop:NNF \g__scrlfile_input_file_seq \l_tmpa_seq + { + \msg_warning:nn { scrlfile-hook } { too-many-pops } + } + } +\cs_if_exist:NTF \g__filehook_input_file_seq + { + \seq_map_inline:Nn \g__filehook_input_file_seq + { + \seq_gput_right:Nx \g__scrlfile_input_file_seq + { \tl_item:nn { #1 } { 2 } } + } + } + { + \seq_gpush:Nx \g__scrlfile_input_file_seq { } + \cs_if_exist:NTF \CurrentFileUsed + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFileUsed } } + { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } } + } +\prg_new_protected_conditional:Npnn \__scrlfile_if_loading:n #1 { T, F, TF } + { + \str_set:Nx \l_tmpa_str { #1 } + \seq_if_in:NxTF \g__scrlfile_input_file_seq { \str_use:N \l_tmpa_str } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_new_protected_conditional:Npnn \scrlfile_if_class_loaded:n #1 { T, F, TF } + { + \@ifclassloaded { #1 } + { + \__scrlfile_if_loading:nTF { #1.\@clsextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } +\prg_new_protected_conditional:Npnn \scrlfile_if_package_loaded:n #1 { T, F, TF } + { + \@ifpackageloaded { #1 } + { + \__scrlfile_if_loading:nTF { #1.\@pkgextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } +\NewDocumentCommand \scrlfile@AfterClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifclassloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@clsextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@clsextension / after } { #3 } { #4 } + } + } +\NewDocumentCommand \AfterClass { } { \scrlfile@AfterClass } +\NewDocumentCommand \scrlfile@AfterPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifpackageloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@pkgextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@pkgextension / after } { #3 } { #4 } + } + } +\NewDocumentCommand \AfterPackage { } { \scrlfile@AfterPackage } +\NewDocumentCommand{\ReplaceInput}{}{\declare@file@substitution} +\NewDocumentCommand\ReplaceClass{mm}{% + \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}% +} +\NewDocumentCommand\ReplacePackage{mm}{% + \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}% +} +\NewDocumentCommand{\UnReplaceInput}{}{\undeclare@file@substitution} +\NewDocumentCommand\UnReplaceClass{m}{% + \undeclare@file@substitution{#1.\@clsextension}% +} +\NewDocumentCommand\UnReplacePackage{mm}{% + \undeclare@file@substitution{#1.\@pkgextension}% +} +\clist_new:N \g__scrlfile_prevent_clist +\NewDocumentCommand \PreventPackageFromLoading { s +o m } + { + \clist_set:Nx \l__scrlfile_package_clist { #3 } + \clist_map_inline:Nn \l__scrlfile_package_clist + { + \@ifpackageloaded { ##1 } + { + \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn } + { scrlfile } { no-prevent-for-already-loaded } { ##1 } + } + { + \clist_if_in:NnF \g__scrlfile_prevent_clist { ##1 } + { \clist_gput_right:Nn \g__scrlfile_prevent_clist { ##1 } } + \tl_if_exist:cF { g__scrlfile_exclude_package_##1_tl } + { + \tl_new:c { g__scrlfile_exclude_package_##1_tl } + } + \IfValueT { #2 } + { + \tl_gput_right:cn { g__scrlfile_exclude_package_##1_tl } { #2 } + } + \disable@package@load { ##1 } + { \tl_use:c { g__scrlfile_exclude_package_##1_tl } } + } + } + \clist_clear:N \l__scrlfile_package_clist + } +\clist_new:N \l__scrlfile_package_clist +\msg_new:nnn { scrlfile } { no-prevent-for-already-loaded } + { + Cannot~prevent~package~`#1'~from~being~loaded,~ + because~it~has~been~loaded~already~before~line~\msg_line_number: + } +\NewDocumentCommand \StorePreventPackageFromLoading { m } + { \edef #1 { \clist_use:Nn \g__scrlfile_prevent_clist { , } } } +\NewDocumentCommand \ResetPreventPackageFromLoading {} + { + \clist_map_function:NN \g__scrlfile_prevent_clist \reenable@package@load + \clist_gclear:N \g__scrlfile_prevent_clist + } +\NewDocumentCommand \UnPreventPackageFromLoading { s m } + { + \clist_set:Nx \l__scrlfile_package_clist { #2 } + \clist_map_inline:Nn \l__scrlfile_package_clist + { + \clist_if_in:NnT \g__scrlfile_prevent_clist { ##1 } + { + \clist_gremove_all:Nn \g__scrlfile_prevent_clist { ##1 } + \reenable@package@load { ##1 } + \IfBooleanT { #1 } + { \cs_undefine:c { g__scrlfile_exclude_package_##1_tl } } + } + } + } +\NewDocumentCommand \BeforeClosingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afterlastpage } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \BeforeClosingMainAux { m } { ##1 } + \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn + \debug_resume: + } + } +\NewDocumentCommand \AfterReadingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afteraux } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \AfterReadingMainAux { m } { ##1 } + \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn + \debug_resume: + } + } +\ExplSyntaxOff +\ProvideDocumentCommand\protected@immediate@write{m+m+m} + {% + \begingroup + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\immediate\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + } +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlfile-hook.sty'. diff --git a/texmf/tex/latex/koma-script/scrlfile-patcholdlatex.sty b/texmf/tex/latex/koma-script/scrlfile-patcholdlatex.sty new file mode 100644 index 000000000..94c19fc4f --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlfile-patcholdlatex.sty @@ -0,0 +1,576 @@ +%% +%% This is file `scrlfile-patcholdlatex.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlfile-patcholdlatex.dtx (with options: `package') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlfile-patcholdlatex.dtx 3874 2022-06-05 10:38:02Z kohm $ +\ProvidesPackage{scrlfile-patcholdlatex}[% + 2022/07/04 v3.37 KOMA-Script + package + (patching old LaTeX kernels)] +\@ifundefined{IfFormatAtLeastTF}{}{% + \IfFormatAtLeastTF{2020/10/01}{% + \PackageError{scrlfile-hook}{LaTeX too young for this package}{% + It seems this package has been loaded directly using a LaTeX + version\MessageBreak + 2020-10-01 or newer. This is not recommended. Please always load + package\MessageBreak + scrlfile instead of scrlfile-patcholdlatex.\MessageBreak + If you would continue, I will try to load scrlfile-hook% + \IfFormatAtLeast{2021/11/15}{}{-3.34}% + }% + \IfFormatAtLeastTF{2021/11/15}{% + \RequirePackage{scrlfile-hook}% + }{% + \RequirePackage{scrlfile-hook-3.34}% + }% + \endinput + }{}% +} +\@ifclassloaded{memoir}{% + \PackageInfo{scrlfile}{class `memoir' detected.\MessageBreak + Using a compatible redefinition of \string\InputIfFileExists,\MessageBreak + but always robust and with the fix of the\MessageBreak + argument order bug even for old versions of the\MessageBreak + LaTeX kernel% + }% +}{% + \long\def\reserved@a#1#2{% + \IfFileExists{#1}% + {#2\@addtofilelist{#1}\@@input \@filef@und}}% + \ifx\reserved@a\InputIfFileExists\else + \expandafter\CheckCommand\expandafter*\expandafter\InputIfFileExists + \expandafter{% + \expandafter\protect\csname InputIfFileExists \endcsname + }% + \expandafter\CheckCommand \csname InputIfFileExists \endcsname[2]{% + \IfFileExists {#1}{% + \expandafter \@swaptwoargs \expandafter {\@filef@und }% + {#2\@addtofilelist {#1}\@@input }% + }% + }% + \fi +} +\expandafter\renewcommand\expandafter*\expandafter\InputIfFileExists +\expandafter{\expandafter + \protect\csname InputIfFileExists \endcsname}% +\expandafter\long\expandafter\def\csname InputIfFileExists \endcsname#1#2{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #1-@alias\endcsname\relax + \expandafter\@secondoftwo + \else + \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}% + \expandafter\@firstoftwo + \fi + {% + \expandafter\InputIfFileExists\expandafter{\csname + #1-@alias\endcsname}{#2}% + }% + {\IfFileExists{#1}{% + \expandafter\scr@input@withhook\expandafter{\@filef@und}{#1}{#2}% + }}% +} +\@ifclassloaded{memoir}{% + \newcommand{\scr@input@withhook}[3]{% + \scr@load@hook{before}{#2}% + #3\@addtofilelist{#2}% + \@ifundefined{m@matbeginf}{}{\m@matbeginf{#2}}% + \@@input #1% + \@ifundefined{m@matendf}{}{\m@matendf{#2}}% + \@ifundefined{killm@matf}{}{\killm@matf{#2}}% + \scr@load@hook{after}{#2}% + }% +}{% + \newcommand{\scr@input@withhook}[3]{% + \scr@load@hook{before}{#2}% + #3\@addtofilelist{#2}% + \@@input #1% + \scr@load@hook{after}{#2}% + }% +} +\newcommand*{\scr@@loadwithoptions}{} +\newcommand*{\scr@loadwithoptions}{} +\let\scr@loadwithoptions\@loadwithoptions +\renewcommand*{\@loadwithoptions}[3]{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #3.#1-@aliasname\endcsname\relax + \def\scr@@loadwithoptions{\scr@loadwithoptions{#1}{#2}{#3}}% + \else + \scr@replacefile@msg{\csname #3.#1-@aliasname\endcsname.#1}{#3.#1}% + \def\scr@@loadwithoptions{% + \@loadwithoptions{#1}{#2}{\csname #3.#1-@aliasname\endcsname}% + }% + \fi + \scr@@loadwithoptions +} +\newcommand*{\scr@onefilewithoptions}{} +\let\scr@onefilewithoptions\@onefilewithoptions +\def\@onefilewithoptions#1[#2][#3]#4{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #1.#4-@aliasname\endcsname\relax + \def\scr@@onefilewithoptions{\scr@onefilewithoptions{#1}}% + \else + \scr@replacefile@msg{\csname #1.#4-@aliasname\endcsname.#4}{#1.#4}% + \edef\scr@@onefilewithoptions{% + \noexpand\@onefilewithoptions{\csname #1.#4-@aliasname\endcsname}}% + \fi + \scr@@onefilewithoptions[{#2}][{#3}]{#4}% + \scr@load@hook{lateafter}{#1.#4}% +} +\newcommand*{\scr@replacefile@msg}[2]{% + \PackageInfo{scrlfile}{inputing `#1' instead of `#2'}% +} +\newcommand*{\scr@load@hook}[2]{% + \ifx\@begindocumenthook\@undefined\else + \edef\scrlfile@hookname{#1}% + \def\scrlfile@cmp@hook{before}% + \ifx\scrlfile@hookname\scrlfile@cmp@hook + \expandafter\def\csname #2-l@ading\endcsname{#2}% + \fi + \let\scrlfile@cmp@hook\@undefined + \fi + \@ifundefined{#2-@#1}{}{% + \@nameuse{#2-@#1}% + \expandafter\let\csname #2-@#1\endcsname\relax + }% + \ifx\@begindocumenthook\@undefined\else + \edef\scrlfile@hookname{#1}% + \def\scrlfile@cmp@hook{after}% + \ifx\scrlfile@hookname\scrlfile@cmp@hook + \expandafter\let\csname #2-l@ading\endcsname\@undefined + \fi + \let\scrlfile@cmp@hook\@undefined + \let\scrlfile@hookname\@undefined + \fi +} +\newcommand*{\scr@set@load@hook}[2]{% + \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}% + \expandafter\g@addto@macro\csname #2-@#1\endcsname +} +\newcommand*{\BeforeFile}{\scr@set@load@hook{before}} +\newcommand*{\AfterFile}{\scr@set@load@hook{after}} +\newcommand*{\BeforeClass}[1]{% + \scr@set@load@hook{before}{#1.\@clsextension}% +} +\newcommand*{\scrlfile@AfterClass}{% + \kernel@ifstar \@sAfterClass\@AfterClass +} +\newcommand*{\AfterClass}{\scrlfile@AfterClass} +\newcommand*{\@AfterClass}[1]{% + \scr@set@load@hook{after}{#1.\@clsextension}% +} +\newcommand*{\@sAfterClass}[1]{% + \@ifclassloaded{#1}{% + \@secondoftwo + }{% + \@AfterClass + }% + {#1}% +} +\newcommand*{\AfterAtEndOfClass}{% + \kernel@ifstar \@sAfterAtEndOfClass\@AfterAtEndOfClass +} +\newcommand*{\@AfterAtEndOfClass}[1]{% + \scr@set@load@hook{lateafter}{#1.\@clsextension}% +} +\newcommand*{\@sAfterAtEndOfClass}[1]{% + \@ifundefined{#1.\@clsextension-l@ading}{% + \@ifclassloaded{#1}{% + \@secondoftwo + }{% + \@AfterAtEndOfClass + }% + }{% + \@AfterAtEndOfClass + }% + {#1}% +} +\newcommand*{\BeforePackage}[1]{% + \scr@set@load@hook{before}{#1.\@pkgextension}% +} +\newcommand*{\scrlfile@AfterPackage}{% + \kernel@ifstar \@sAfterPackage\@AfterPackage +} +\newcommand*{\AfterPackage}{\scrlfile@AfterPackage} +\newcommand*{\@AfterPackage}[1]{% + \scr@set@load@hook{after}{#1.\@pkgextension}% +} +\newcommand*{\@sAfterPackage}[1]{% + \@ifpackageloaded{#1}{% + \@secondoftwo + }{% + \@AfterPackage + }% + {#1}% +} +\newcommand*{\AfterAtEndOfPackage}{% + \kernel@ifstar \@sAfterAtEndOfPackage\@AfterAtEndOfPackage +} +\newcommand*{\@sAfterAtEndOfPackage}[1]{% + \@ifundefined{#1.\@pkgextension-l@ading}{% + \@ifpackageloaded{#1}{% + \@secondoftwo + }{% + \@@AfterAtEndOfPackage + }% + }{% + \@@AfterAtEndOfPackage + }% + {#1}% +} +\newcommand*{\@AfterAtEndOfPackage}[1]{% + \@ifpackageloaded{#1}{% + \@ifundefined{#1.\@pkgextension-l@ading}{% + \@gobbletwo + }{% + \@@AfterAtEndOfPackage + }% + }{% + \@@AfterAtEndOfPackage + }% + {#1}% +} +\newcommand*{\@@AfterAtEndOfPackage}[1]{% + \scr@set@load@hook{lateafter}{#1.\@pkgextension}% +} +\newcommand*{\ReplaceInput}[2]{% + \expandafter\edef\csname #1-@alias\endcsname{#2}% +} +\newcommand*{\ReplaceFile}{% + \PackageError{scrlfile}{% + usage of not documented command `\string\ReplaceFile'% + }{% + Command `\string\ReplaceFile' has been implemented accidentally in + KOMA-Script 2.96\MessageBreak + and replaced by `\string\ReplaceInput' in KOMA-Script 3.12.\MessageBreak + You should replace `\string\ReplaceFile' by `\string\ReplaceInput' to + avoid this error\MessageBreak + message% + }% + \ReplaceInput +} +\newcommand*{\UnReplaceInput}[1]{% + \ifcsname #1-@alias\endcsname + \expandafter\let\csname #1-@alias\endcsname\relax + \fi +} +\newcommand*{\@replacefilewithext}[3]{% + \expandafter\xdef\csname #1.#3-@aliasname\endcsname{#2}% +} +\newcommand*{\ReplacePackage}[2]{% + \@replacefilewithext{#1}{#2}\@pkgextension +} +\newcommand*{\ReplaceClass}[2]{% + \@replacefilewithext{#1}{#2}\@clsextension +} +\newcommand*{\@unreplacefilewithext}[2]{% + \ifcsname #1.#2-@aliasname\endcsname + \expandafter\global\expandafter\let\csname #1.#2-@aliasname\endcsname\relax + \fi +} +\newcommand*{\UnReplacePackage}[1]{% + \@unreplacefilewithext{#1}\@pkgextension +} +\newcommand*{\UnReplaceClass}[1]{% + \@unreplacefilewithext{#1}\@clsextension +} +\newcommand*{\scrlfile@excludedpackages}{} +\let\scrlfile@excludedpackages\@empty +\newcommand*{\scrlfile@saved@RequirePackage}{} +\newcommand*{\PreventPackageFromLoading}{% + \kernel@ifstar{\@PreventPackageFromLoading\PackageInfo}% + {\@PreventPackageFromLoading\PackageWarning}% +} +\newcommand*{\@PreventPackageFromLoading}[1]{% + \kernel@ifnextchar [%] + {\@@PreventPackageFromLoading#1}{\@@PreventPackageFromLoading#1[]}% +} +\newcommand*{\@@PreventPackageFromLoading}{} +\def\@@PreventPackageFromLoading#1[#2]#3{% + \edef\reserved@b{\zap@space#3 \@empty}% + \ifx \reserved@b\@empty + #1{scrlfile}{% + \string\PreventPackageFromLoading\space with empty packages\MessageBreak + argument ignored% + }% + \else + \ifx\scrlfile@excludedpackages\@empty + \global\let\scrlfile@saved@RequirePackage\RequirePackage + \global\let\RequirePackage\scrlfile@RequirePackage + \def\reserved@a##1##{% + \@latex@error + {\noexpand \usepackage before \string\documentclass}% + {\noexpand \usepackage may only appear in the document + preamble, i.e.,\MessageBreak + between \noexpand\documentclass and + \string\begin{document}.}% + \@gobble}% + \ifx\reserved@a\usepackage\else + \ifx\usepackage\scrlfile@saved@RequirePackage\else + \PackageWarning{scrlfile}{% + Maybe serious problem: unexpected definition of\MessageBreak + \string\usepackage + }% + \fi + \global\let\usepackage\RequirePackage + \fi + \fi + \@for\reserved@a:=\reserved@b\do {% + \ifx\reserved@a\@empty + #1{scrlfile}{% + empty package argument for + \string\PreventPackageFromLoading\MessageBreak + ignored% + }% + \else + \expandafter\@ifpackageloaded\expandafter{\reserved@a}{% + #1{scrlfile}{% + package `\reserved@a' already loaded.\MessageBreak + Cannot prevent it from beeing loaded% + }% + }{% + \ifx\scrlfile@excludedpackages\@empty + \global\let\scrlfile@excludedpackages\reserved@a + \else + \xdef\scrlfile@excludedpackages{\scrlfile@excludedpackages,% + \reserved@a}% + \fi + \if\relax\detokenize{#2}\relax\else + \@ifundefined{scrlfile@exclude@package@\reserved@a @do}{% + \@namedef{scrlfile@exclude@package@\reserved@a @do}{}% + }{}% + \expandafter\gdef + \csname scrlfile@exclude@package@\reserved@a + @do\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter{% + \csname scrlfile@exclude@package@\reserved@a @do\endcsname + #2% + }% + \fi + }% + \fi + }% + \ifx\scrlfile@excludedpackages\@empty + \ResetPreventPackageFromLoading + \fi + \fi +} +\@onlypreamble\PreventPackageFromLoading +\newcommand*{\ResetPreventPackageFromLoading}{% + \global\let\scrlfile@excludedpackages\@empty + \ifx\RequirePackage\scrlfile@RequirePackage + \ifx\usepackage\RequirePackage + \global\let\usepackage\scrlfile@saved@RequirePackage + \fi + \global\let\RequirePackage\scrlfile@saved@RequirePackage + \fi +} +\@onlypreamble\ResetPreventPackageFromLoading +\newcommand*{\StorePreventPackageFromLoading}[1]{% + \let#1\scrlfile@excludedpackages +} +\@onlypreamble\StorePreventPackageFromLoading +\newcommand*{\UnPreventPackageFromLoading}{% + \kernel@ifstar {\@tempswatrue\@UnPreventPackageFromLoading}% + {\@tempswafalse\@UnPreventPackageFromLoading}% +} +\newcommand*{\@UnPreventPackageFromLoading}[1]{% + \edef\reserved@b{\zap@space#1 \@empty}% + \if@tempswa + \@for\reserved@a:=\reserved@b\do {% + \ifx\reserved@a\@empty \else + \ifcsname scrlfile@exclude@package@\reserved@a @do\endcsname + \expandafter\let + \csname scrlfile@exclude@package@\reserved@a @do\endcsname + \undefined + \fi + \fi + }% + \fi + \ifcsname scrlfile@excludedpackages\endcsname + \let\reserved@a\scrlfile@excludedpackages + \let\scrlfile@excludedpackages\@empty + \expandafter\@for\expandafter\reserved@c + \expandafter:\expandafter=\reserved@a + \do{% + \ifx\reserved@c\@empty\else + \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}% + \ifin@ + \else + \ifx\scrlfile@excludepackages\@empty + \global\let\scrlfile@excludepackages\reserved@c + \else + \xdef\scrlfile@excludedpackages{% + \scrlfile@excludedpackages,\reserved@c + }% + \fi + \fi + \fi + }% + \ifx\scrlfile@excludedpackages\@empty\ResetPreventPackageFromLoading\fi + \fi +} +\newcommand*{\scrlfile@RequirePackage}[2][]{% + \let\reserved@c\@empty + \let\reserved@d\@empty + \edef\reserved@b{\zap@space#2 \@empty}% + \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b + \do {% + \begingroup + \@tempswatrue + \@for\reserved@a:=\scrlfile@excludedpackages\do {% + \ifx\reserved@a\reserved@b + \@tempswafalse + \fi + }% + \if@tempswa + \xdef\reserved@c{\reserved@c,\reserved@b}% + \else + \ifx\reserved@b\@empty\else + \PackageInfo{scrlfile}{Excluding package `\reserved@b'\MessageBreak + from loading}% + \@ifundefined{scrlfile@exclude@package@\reserved@b @do}{% + }{% + \expandafter\g@addto@macro\expandafter\reserved@d + \csname scrlfile@exclude@package@\reserved@b @do\endcsname + }% + \fi + \fi + \endgroup + }% + \ifx\reserved@c\@empty + \let\reserved@a\scr@gobbleopt + \else + \edef\reserved@a{\noexpand\scrlfile@saved@RequirePackage[#1]{% + \expandafter\@gobble\reserved@c\@empty}}% + \fi + \expandafter\reserved@d + \reserved@a +} +\providecommand{\scr@gobbleopt}[1][]{} +\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}} +\AtEndDocument{% + \let\scr@saved@checkend=\@checkend + \renewcommand*{\@checkend}[1]{% + \def\reserved@a{#1}\def\reserved@b{document}% + \scr@saved@checkend{#1}% + \ifx\reserved@a\reserved@b + \let\scr@saved@clearpage=\clearpage + \renewcommand*{\clearpage}{\scr@saved@clearpage + \scr@hook@bcma + \scr@restore@newpage + \let\clearpage=\scr@saved@clearpage}% + \fi% + \let\scr@saved@dofilelist\@dofilelist + \def\@dofilelist{% + \scr@hook@acma + \let\@dofilelist\scr@saved@dofilelist + \scr@saved@dofilelist + }% + }% +} +\newcommand*{\scr@saved@checkend}{} +\newcommand*{\scr@saved@dofilelist}{} +\newcommand*{\scr@redefine@newpage}{% + \let\scr@saved@newpage\newpage + \def\scr@restore@newpage{% + \renewcommand*{\newpage}{% + \PackageWarningNoLine{% + scrlfile% + }{% + \string\newpage\space at main aux file!\MessageBreak + You have output material at the main aux file.\MessageBreak + Note, that the \string\BeforeClosingMainAux\space commands\MessageBreak + are processed before the output from aux file% + }% + \let\newpage\scr@saved@newpage + \newpage + }% + }% + \renewcommand*{\newpage}{% + \PackageError{% + scrlfile% + }{% + \string\newpage\space at \string\BeforeClosingMainAux + }{% + You should never use \string\newpage\space or + \string\clear(double)page or other output material at the\MessageBreak + argument of \string\BeforeClosingMainAux!\MessageBreak + If you'll continue, the \string\newpage\space will be ignored to + avoid corruption of\MessageBreak + every prior use of \string\BeforeClosingMainAux. + }% + }% +} +\newcommand*{\scr@restore@newpage}{} +\newcommand*{\scr@hook@bcma}{} +\newcommand*{\scr@hook@acma}{} +\newcommand*{\BeforeClosingMainAux}{% + \ifx\scr@hook@bcma\@empty + \gdef\scr@hook@bcma{% + \renewcommand*{\BeforeClosingMainAux}[1]{####1}% + \let\protected@write\protected@immediate@write + \scr@redefine@newpage + }% + \fi + \g@addto@macro\scr@hook@bcma% +} +\newcommand*{\AfterReadingMainAux}{% + \ifx\scr@hook@acma\@empty + \gdef\scr@hook@acma{% + \renewcommand*{\AfterReadingMainAux}[1]{####1}% + \let\protected@write\protected@immediate@write + }% + \fi + \g@addto@macro\scr@hook@acma% +} +\long\def\protected@immediate@write#1#2#3{% + \begingroup + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\immediate\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi +} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlfile-patcholdlatex.sty'. diff --git a/texmf/tex/latex/koma-script/scrlfile.sty b/texmf/tex/latex/koma-script/scrlfile.sty new file mode 100644 index 000000000..a83af435b --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlfile.sty @@ -0,0 +1,100 @@ +%% +%% This is file `scrlfile.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlfile.dtx (with options: `package') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlfile.dtx 3874 2022-06-05 10:38:02Z kohm $ +\ProvidesPackage{scrlfile}[% + 2022/07/04 v3.37 KOMA-Script + package + (file load hooks)] +\@ifundefined{IfFormatAtLeastTF}{% + \RequirePackage{scrlfile-patcholdlatex}% + \RequirePackage{xparse}% + \ExplSyntaxOff +}{% + \IfFormatAtLeastTF{2020/10/01}{% + \IfFormatAtLeastTF{2021/11/15}{% + \RequirePackage{scrlfile-hook}% + }{% + \RequirePackage{scrlfile-hook-3.34}% + }% + }{% + \RequirePackage{scrlfile-patcholdlatex}% + \RequirePackage{xparse}% + \ExplSyntaxOff + }% +} +\DeclareOption{withdeprecated}{% + \RenewDocumentCommand\AfterClass{}{% + \kernel@ifnextchar +% + {\scrlfile@emulatedeprecated{Class}}% + {% + \kernel@ifnextchar !% + {\scrlfile@emulatedeprecated{Class}}% + \scrlfile@AfterClass + }% + } + \RenewDocumentCommand\AfterPackage{}{% + \kernel@ifnextchar +% + {\scrlfile@emulatedeprecated{Package}}% + {% + \kernel@ifnextchar !% + {\scrlfile@emulatedeprecated{Package}}% + \scrlfile@AfterPackage + }% + } + \newcommand*{\scrlfile@emulatedeprecated}[2]{% + \PackageWarning{scrlfile}{% + emulating deprecated \expandafter\string\csname After#1#2\endcsname + \space by\MessageBreak + \expandafter\string\csname AfterAtEndOf#1*\endcsname.\MessageBreak + Note, this may fail, so you should not use\MessageBreak + \expandafter\string\csname After#1#2\endcsname + }% + \csname AfterAtEndOf#1\endcsname*% + } +} +\ExecuteOptions{} +\ProcessOptions\relax +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlfile.sty'. diff --git a/texmf/tex/latex/koma-script/scrlogo.sty b/texmf/tex/latex/koma-script/scrlogo.sty new file mode 100644 index 000000000..fbba7a4d1 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlogo.sty @@ -0,0 +1,61 @@ +%% +%% This is file `scrlogo.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrlogo.dtx (with options: `package,logo') +%% +%% Copyright (c) 2002-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\ProvidesPackage{scrlogo}[% + 2022/07/04 v3.37 KOMA-Script + package + (logo)] +\@ifundefined{KOMAScript}{% + \DeclareRobustCommand*{\KOMAScript}{\textsf{K\kern.05em O\kern.05em% + M\kern.05em A\kern.1em-\kern.1em Script}}% + \@ifundefined{pdfstringdefPreHook}{% + \def + }{% + \g@addto@macro + }% + \pdfstringdefPreHook{% + \def\KOMAScript{KOMA-Script}% + \expandafter\def\csname KOMAScript \endcsname{KOMA-Script}% + }% +}{} +\endinput +%% +%% End of file `scrlogo.sty'. diff --git a/texmf/tex/latex/koma-script/scrlttr2.cls b/texmf/tex/latex/koma-script/scrlttr2.cls new file mode 100644 index 000000000..821106938 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrlttr2.cls @@ -0,0 +1,5184 @@ +%% +%% This is file `scrlttr2.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,letter') +%% scrkernel-basics.dtx (with options: `class,load') +%% scrkernel-compatibility.dtx (with options: `class,letter,init') +%% scrkernel-typearea.dtx (with options: `class,scrlttr2,init') +%% scrkernel-compatibility.dtx (with options: `class,letter,option') +%% scrkernel-miscellaneous.dtx (with options: `class,letter,option') +%% scrkernel-letterclassoptions.dtx (with options: `class,letter,option') +%% scrkernel-language.dtx (with options: `class,letter,option') +%% scrkernel-fonts.dtx (with options: `class,letter,option') +%% scrkernel-variables.dtx (with options: `class,letter,option') +%% scrkernel-pseudolengths.dtx (with options: `class,letter,option') +%% scrkernel-typearea.dtx (with options: `class,letter,options') +%% scrkernel-paragraphs.dtx (with options: `class,letter,option') +%% scrkernel-pagestyles.dtx (with options: `class,letter,option') +%% scrkernel-floats.dtx (with options: `class,letter,option') +%% scrkernel-footnotes.dtx (with options: `class,letter,option') +%% scrkernel-listsandtabulars.dtx (with options: `class,letter,option') +%% scrkernel-notepaper.dtx (with options: `class,letter,option') +%% scrkernel-addressfiles.dtx (with options: `class,letter,option') +%% scrkernel-miscellaneous.dtx (with options: `class,letter,execoption') +%% scrkernel-compatibility.dtx (with options: `class,letter,body') +%% scrkernel-fonts.dtx (with options: `class,letter,body') +%% scrkernel-miscellaneous.dtx (with options: `class,letter,body') +%% scrkernel-letterclassoptions.dtx (with options: `class,letter,body') +%% scrkernel-language.dtx (with options: `class,letter,body') +%% scrkernel-variables.dtx (with options: `class,letter,body') +%% scrkernel-pseudolengths.dtx (with options: `class,letter,body') +%% scrkernel-typearea.dtx (with options: `class,letter,body') +%% scrkernel-paragraphs.dtx (with options: `class,letter,body') +%% scrkernel-pagestyles.dtx (with options: `class,letter,body') +%% scrkernel-floats.dtx (with options: `class,letter,body') +%% scrkernel-footnotes.dtx (with options: `class,letter,body') +%% scrkernel-listsandtabulars.dtx (with options: `class,letter,body') +%% scrkernel-notepaper.dtx (with options: `class,letter,body') +%% scrkernel-addressfiles.dtx (with options: `class,letter,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrlttr2% +} +\newcommand*{\KOMAClassFileName}{\KOMAClassName.\@clsextension} +\edef\KOMAClassFileName{\KOMAClassFileName} +\newcommand*{\ClassName}{% + letter% +} +\ProvidesClass{\KOMAClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\newcommand* + {\scr@compatibility}{\scr@v@last} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \ClassWarningNoLine{\KOMAClassName}{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{version}{first}% + }{% + \ClassInfoNoLine{\KOMAClassName}{% + Switching compatibility level to `#1'% + }% + \edef\scr@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \ClassWarningNoLine{\KOMAClassName}{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\KOMA@kav@add{.\KOMAClassFileName}{version}{last} +\AtEndOfClass{% + \KOMA@key{version}[]{% + \ClassError{\KOMAClassName}{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + class.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@v@is@lt}[1]{% + \scr@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@gt}[1]{% + \scr@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@le}[1]{% + \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@ge}[1]{% + \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{draft}{false} +\KOMA@DeclareStandardOption +{final}{draft=false} +\KOMA@key{overfullrule}[true]{% + \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false} +\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles} +\newcommand*{\@gr@gsffamily}{% + \if@egregdoesnotlikesansseriftitles\else\sffamily\fi +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\lco@test}{% + \IfFileExists{\CurrentOption.lco}{% + \ClassWarningNoLine{\KOMAClassName}{% + loading of LCO via class option + `\CurrentOption'.\MessageBreak + Note: Loading a LCO via class option is deprecated.\MessageBreak + \space\space\space\space\space\space + You should use + `\string\LoadLetterOption\string{\CurrentOption\string}'\MessageBreak + instead% + }% + \expandafter\AtEndOfClass\expandafter{% + \expandafter\LoadLetterOption\expandafter{\CurrentOption}% + }% + \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{% + \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{% + \scr@pti@nerr@r + }% + }% + }{}% +} +\AtEndOfClass + {\LoadLetterOption{DIN}} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@orgdate\@orgdatetrue +\KOMA@key{numericaldate}[true]{% + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi + \KOMA@set@ifkey{numericaldate}{@orgdate}{#1}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{numericaldate}{@orgdate}% + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{numericaldate}{true} +\KOMA@DeclareDeprecatedOption{scrdate}{numericaldate=true} +\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\providecommand*\@ptsize{% + 12% +} +\newcommand*{\@pt@scan}{% + \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan% +} +\newcommand*{\@pt@@scan}{} +\def\@pt@@scan #1pt#2\@pt@@scan{% + \Ifstr{#2}{pt}{% + \Ifnumber{#1}{% + \Ifstr{#1}{10}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{11}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{12}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }% + }% + } + }{\@headlines}% + }{\@headlines}% +} +\providecommand*{\@fontsizefilebase}{scrsize} +\KOMA@key{fontsize}{% + \scr@ifundefinedorrelax{changefontsizes}{% + \@defaultunits\@tempdima#1pt\relax\@nnil + \edef\@ptsize{#1}% + }{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{fontsize}{#1}% +} +\DeclareOption{enabledeprecatedfontcommands}{% + \ClassWarningNoLine{\KOMAClassName}{% + deprecated option `enabledeprecatedfontcommands'.\MessageBreak + Note, that this option was already depreacted when\MessageBreak + it has been defined. Support for old font commands\MessageBreak + has been removed from KOMA-Script more than one\MessageBreak + decade ago. It is not recommended to use them any\MessageBreak + longer. Therefore usage of this class option also\MessageBreak + is not recommended% + }% + \let\scr@defineobsoletefonts\@ne +} +\scr@ifundefinedorrelax{scr@defineobsoletefonts}{% + \let\scr@defineobsoletefonts\z@ +}{} +\BeforePackage{tex4ht}{% + \let\scr@defineobsoletefonts\thr@@ +} +%%% From File: $Id: scrkernel-variables.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-pseudolengths.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\KOMA@key{twoside}[true]{% + \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi% + \Ifstr{#1}{semi}{% + \@twosidetrue + \FamilyKeyStateProcessed + }{% + \def\FamilyElseValue{, `semi'}% + \KOMA@set@ifkey{twoside}{% + @twoside% + }{#1}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twoside\flushbottom + \else + \if@twocolumn\sloppy\flushbottom\else\raggedbottom\fi + \fi + \fi + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{twoside}{#1}% + \fi +} +\KOMAExecuteOptions{twoside=false} +\KOMA@DeclareStandardOption% + {oneside}{twoside=false} +\KOMA@key{twocolumn}[true]{% + \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi% + \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{twocolumn}{@twocolumn}% + \if@atdocument\expandafter\@firstofone + \else\@ifpackageloaded{typearea}{\expandafter\@firstofone} + {\expandafter\AtEndOfClass}\fi + {\expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else + \onecolumn + \if@twoside\flushbottom\else + \raggedbottom + \fi + \fi + \fi}% + \fi +} +\AtEndOfClass{% + \expandafter\ifnum\scr@v@is@lt{3.17}% + \raggedbottom + \fi +} +\KOMAExecuteOptions{twocolumn=false} +\KOMA@DeclareStandardOption% + {onecolumn}{twocolumn=false} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{% + \Ifstr{#1}{}{% + \Ifstr{#3}{BCOR}{% + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifdimen{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifdimen{#2}{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% +} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{% + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifnumber{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifnumber{#2}{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }% + \else\scr@pti@nerr@r\fi + \else\@BCOR\fi +} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines% +} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \PassOptionsToPackage{#1headlines}{typearea} + \else\@DIV\fi +} +\newcommand*{\x@paper}{% + \expandafter\x@@paper\CurrentOption paper\x@@paper% +} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{% + \Ifstr{#3}{paper}{% + \Ifnumber{#2}{% + \Ifstr{#1}{a}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{b}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{c}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{d}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{\scr@pti@nerr@r}% + }% + }% + }% + }{\scr@pti@nerr@r}% + }{% + \@pt@scan + }% +} +\newcommand*{\scr@pti@nerr@r}{ + \OptionNotUsed +} +\DeclareOption*{% + \lco@test + \x@paper} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\setparsizes}[3]{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% + \def\scr@parindent{#1}% + \def\scr@parskip{#2}% + \def\scr@parfillskip{#3}% + \def\par@update{% + \if@atdocument\let\par@update\default@par@update\fi + \par@updaterelative + }% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{false}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{never}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full*}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half*}% +} +\newcommand*{\f@parindent}{\the\parindent} +\newcommand*{\f@parskip}{\the\parskip} +\newcommand*{\f@parfillskip}{\the\parfillskip} +\newcommand*{\scr@parindent}{1em} +\newcommand*{\scr@parskip}{\z@} +\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil} +\AtEndOfClass{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% +} +\newcommand*{\par@update}{} +\let\par@update\relax +\newcommand*{\default@par@update}{} +\let\default@par@update\relax +\AtBeginDocument{\par@update} +\KOMA@key{parskip}[true]{% + \begingroup + \KOMA@set@ncmdkey{parskip}{@tempa}{% + {never}{0},% + {false}{1},{off}{1},{no}{1},% + {full-}{2},% + {half-}{3},% + {full}{4},{true}{4},{on}{4},{yes}{4},% + {half}{5},% + {full+}{6},% + {half+}{7},% + {full*}{8},% + {half*}{9},% + {relative}{10},% + {absolute}{11}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\number\@tempa% 0 + \endgroup + \setparsizes{1em}{\z@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{never}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 1 + \endgroup + \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 2 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 3 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 4 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 5 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 6 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .3333\linewidth\@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 7 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .3333\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 8 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 9 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 10 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{relative}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\par@updaterelative + \fi + \let\default@par@update=\par@updaterelative + }% + \or%11 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\relax + \fi + \let\default@par@update=\relax + }% + \else% should never be + \endgroup + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@DeclareDeprecatedOption{parskip-}{parskip=full-} +\KOMA@DeclareDeprecatedOption{parskip+}{parskip=full+} +\KOMA@DeclareDeprecatedOption{parskip*}{parskip=full*} +\KOMA@DeclareDeprecatedOption{halfparskip}{parskip=half} +\KOMA@DeclareDeprecatedOption{halfparskip-}{parskip=half-} +\KOMA@DeclareDeprecatedOption{halfparskip+}{parskip=half+} +\KOMA@DeclareDeprecatedOption{halfparskip*}{parskip=half*} +\KOMA@DeclareDeprecatedOption{parindent}{parskip=false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{headsepline}{@hsl}% +\KOMA@kav@add{.\KOMAClassFileName}{headsepline}{false} +\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false} +\KOMA@ifkey{footsepline}{@fsl}% +\KOMA@kav@add{.\KOMAClassFileName}{footsepline}{false} +\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false} +\KOMA@key{cleardoublepage}{% + \begingroup + \def\@tempc{% + \endgroup + \KOMA@unknown@keyval{cleardoublepage}{#1}{% + 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% + }% + \Ifstr{#1}{current}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublestandardpage}% + \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% + \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{current}% + }% + }{% + \Ifnotundefined{ps@#1}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{#1}% + }% + }{% + \ifx\@currname\KOMAClassName + \ifx\@currext\@clsextension + \Ifstr{#1}{headings}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}% + {cleardoublepage}{#1}% + }% + }{}% + \fi + \fi + }% + }% + \@tempc +} +\newcommand*{\cleardoubleoddstandardpage}{} +\let\cleardoubleoddstandardpage=\cleardoublepage +\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleoddstandardpage}} +\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} +\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} +\newcommand*{\cleardoubleevenstandardpage}{% + \clearpage + \if@twoside\ifodd\c@page + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi + \fi\fi +} +\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleevenstandardpage}} +\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} +\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} +\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} +\renewcommand*{\cleardoublepage}{% + \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax + \cleardoubleemptypage + \else + \cleardoublestandardpage + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{cleardoublepage}{% + \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi +} +\AtEndOfClass{% + \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% + {% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{cleardoublepage}{\@tempa}% +} +\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} +\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} +\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoublestandardpage}} +\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} +\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} +\KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty} +\KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain} +\KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{footnotes}{% + \ifx\@footnotemark\scr@saved@footnotemark + \else + \ifx\@footnotemark\scr@footnotemark + \else + \ClassWarning{\KOMAClassName}{% + Change of `\string\@footnotemark' detected!\MessageBreak + Use of `footnotes=#1' may break\MessageBreak + another package!\MessageBreak + Maybe you should remove the usage of\MessageBreak + option `footnotes=#1'}% + \fi + \fi + \Ifstr{#1}{multiple}{% + \let\@footnotemark\scr@footnotemark + \def\FN@mf@prepare{\scr@mf@prepare}% + \def\scr@footmisc@options{multiple}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{multiple}% + }{% + \Ifstr{#1}{nomultiple}{% + \let\@footnotemark\scr@saved@footnotemark + \let\FN@mf@prepare\relax + \let\scr@footmisc@options\@empty + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + }{% + \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% + }% + }% +} +\AtBeginDocument{% + \ifx\@footnotemark\scr@saved@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + \else\ifx\@footnotemark\scr@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{multiple}% + \fi\fi +} +\newcommand*{\scr@footmisc@options}{} +\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} +\newcommand*{\scr@saved@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark +\expandafter{\scr@saved@footnotemark} +\newcommand*{\scr@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi + \@makefnmark + \csname FN@mf@prepare\endcsname + \ifhmode\spacefactor\@x@sf\fi + \relax} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{firsthead}{@firsthead} +\KOMAExecuteOptions{firsthead=true} +\newcommand*{\@alignfrom}{0} +\KOMA@key{fromalign}{% + \KOMA@set@ncmdkey{fromalign}{@alignfrom}{% + {left}{0},% + {center}{1},{centered}{1},{middle}{1},% + {right}{2},% + {locationleft}{3},{leftlocation}{3},% + {locationright}{4},{rightlocation}{4},{location}{4},% + {no}{10000},{false}{10000},{off}{10000}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{fromalign}{#1}% + \ifcase\@alignfrom\or\or\or\@firstheadfalse\or\@firstheadfalse\fi + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{fromalign}{left} +\KOMA@ncmdkey{fromrule}[below]{@rulefrom}{% + {false}{0},{no}{0},{off}{0},{aftername}{1},% + {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}% +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{fromrule}{false} +\KOMA@ifkey{fromphone}{@phone} +\KOMA@ifkey{frommobilephone}{@mobilephone} +\KOMA@ifkey{fromfax}{@fax} +\KOMA@ifkey{fromemail}{@email} +\KOMA@ifkey{fromurl}{@www} +\KOMA@ifkey{fromlogo}{@logo} +\newcommand*{\@afieldmode}{\@ne} +\KOMA@ncmdkey{addrfield}[true]{@afieldmode}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {PP}{2},{pp}{2},% + {PPexplicite}{2},{PPExplicite}{2},% + {ppexplicite}{2},{ppExplicite}{2},% + {backgroundimage}{3},% + {PPbackgroundimage}{3},{PPBackgroundImage}{3},{PPBackGroundImage}{3},% + {ppbackgroundimage}{3},{ppBackgroundImage}{3},{ppBackGroundImage}{3},% + {image}{4},{Image}{4},% + {PPimage}{4},{PPImage}{4},% + {ppimage}{4},{ppImage}{4},% + {topaligned}{5},{alignedtop}{5}% +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{addrfield}{true} +\KOMA@ncmdkey{priority}[A]{ltr@priority}{% + {no}{0},{off}{0},{false}{0},{manual}{0},% + {B}{1},{b}{1},% + {economy}{1},{Economy}{1},{ECONOMY}{1},% + {B-ECONOMY}{1},{B-Economy}{1},{b-economy}{1},% + {A}{2},{a}{2},% + {priority}{2},{Priority}{2},{PRIORITY}{2},% + {A-PRIORITY}{2},{A-Priority}{2},{a-priority}{2}% +}% +\KOMA@kav@add{.% + \KOMAClassFileName +}{priority}{false} +\newcommand{\backaddr@format}[1]{} +\let\backaddr@format\underline +\newif\if@baddr\@baddrtrue +\KOMA@key{backaddress}[true]{% + \begingroup + \KOMA@set@ncmdkey{backaddress}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {underlined}{2},% + {plain}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa + \endgroup + \@baddrfalse + \or + \endgroup + \@baddrtrue + \or + \endgroup + \@baddrtrue + \let\backaddr@format\underline + \or + \endgroup + \@baddrtrue + \let\backaddr@format\@firstofone + \else + \endgroup + \fi + \if@baddr + \ifx\backaddr@format\underline + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{backaddress}{underlined}% + \else + \ifx\backaddr@format\@firstofone + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{backaddress}{plain}% + \else + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{backaddress}{true}% + \fi + \fi + \else + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{backaddress}{false}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\newif\if@bigloc +\KOMA@key{locfield}[wide]{% + \begingroup + \KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase\@tempa + \endgroup + \@bigloctrue + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{locfield}{wide}% + \else + \endgroup + \@biglocfalse + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{locfield}{narrow}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{locfield}{narrow} +\KOMA@DeclareDeprecatedOption{wlocfield}{locfield=wide} +\KOMA@DeclareDeprecatedOption{slocfield}{locfield=narrow} + +\newif\if@fold\@foldtrue +\newcommand*{\@usefolds}{TMBPL} +\KOMA@key{foldmarks}[true]{% + \begingroup + \KOMA@set@ifkey\@empty{@fold}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@fold\aftergroup\@foldtrue\else\aftergroup\@foldfalse\fi + \aftergroup\FamilyKeyStateProcessed + \else + \aftergroup\FamilyKeyStateProcessed + \def\sc@nf@ldch@rs##1{% + \ifx ##1\@nil\else + \if ##1T\g@addto@macro\@usefolds{##1}\else + \if ##1M\g@addto@macro\@usefolds{##1}\else + \if ##1B\g@addto@macro\@usefolds{##1}\else + \if ##1P\g@addto@macro\@usefolds{##1}\else + \if ##1L\g@addto@macro\@usefolds{##1}\else + \if ##1V\g@addto@macro\@usefolds{L}\else + \if ##1H\g@addto@macro\@usefolds{TMBP}\else + \if ##1t\scr@removechar\@usefolds{T}\else + \if ##1m\scr@removechar\@usefolds{M}\else + \if ##1b\scr@removechar\@usefolds{B}\else + \if ##1p\scr@removechar\@usefolds{P}\else + \if ##1l\scr@removechar\@usefolds{L}\else + \if ##1v% + \scr@removechar\@usefolds{L}% + \else + \if ##1h% + \scr@removechar\@usefolds{T}% + \scr@removechar\@usefolds{M}% + \scr@removechar\@usefolds{B}% + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \expandafter\sc@nf@ldch@rs + \fi + }% + \expandafter\sc@nf@ldch@rs#1\@nil + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{foldmarks}{\@usefolds}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{foldmarks}{\if@fold true\else false\fi}% + \fi +} +\KOMA@kav@xadd{.% + \KOMAClassFileName +}{foldmarks}{\@usefolds}% +\KOMA@kav@add{.% + \KOMAClassFileName +}{foldmarks}{true}% +\newcommand*{\scr@removechar}[2]{% + \def\in@@##1#2##2##3\in@@{% + \ifx\in@##2\else + \def\in@@####1#2\in@{\gdef#1{##1####1}}% + \in@@##2##3% + \fi}% + \expandafter\in@@#1#2\in@\in@@ +} +\newif\if@refwide +\newcommand*{\@datepos}{1} +\KOMA@key{refline}[wide]{% + \begingroup + \KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1},% + {dateleft}{2},{leftdate}{2},% + {dateright}{3},{rightdate}{3},% + {nodate}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa% wide + \endgroup + \@refwidetrue + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{wide}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{narrow}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{refline}{wide}% + \or% narrow + \endgroup + \@refwidefalse + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{wide}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{narrow}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{refline}{narrow}% + \or% dateleft + \endgroup + \def\@datepos{2}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateleft}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateright}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{nodate}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{refline}{dateleft}% + \or% dateright + \endgroup + \def\@datepos{1}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateleft}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateright}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{nodate}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{refline}{dateright}% + \or% nodate + \endgroup + \def\@datepos{0}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateleft}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{dateright}% + \KOMA@kav@remove{.% + \KOMAClassFileName + }{refline}{nodate}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{refline}{nodate}% + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{refline}{dateright}% +\KOMA@kav@add{.% + \KOMAClassFileName +}{refline}{narrow}% +\newcommand{\subject@format}[1]{#1} +\newcommand*{\raggedsubject}{} +\newif\if@subj +\newif\if@subjafter +\KOMA@key{subject}{% + \begingroup + \KOMA@set@ncmdkey{subject}{@tempa}{% + {titled}{0},% + {untitled}{1},% + {afteropening}{2},% + {beforeopening}{3},% + {underlined}{4},% + {left}{5},% + {right}{6},% + {centered}{7}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\@tempa + \aftergroup\@subjtrue + \or + \aftergroup\@subjfalse + \or + \aftergroup\@subjaftertrue + \or + \aftergroup\@subjafterfalse + \or + \aftergroup\let\aftergroup\subject@format\aftergroup\underline + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedright + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedleft + \or + \aftergroup\let\aftergroup\raggedsubject\aftergroup\centering + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{subject}{\if@subj titled\else untitled\fi}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{subject}{\if@subjafter after\else before\fi opening}% + \ifx\subject@format\underline + \KOMA@kav@add{.% + \KOMAClassFileName + }{subject}{underlined}% + \fi + \ifx\raggedsubject\raggedright + \KOMA@kav@add{.% + \KOMAClassFileName + }{subject}{left}% + \else + \ifx\raggedsubject\raggedleft + \KOMA@kav@add{.% + \KOMAClassFileName + }{subject}{right}% + \else + \ifx\raggedsubject\centering + \KOMA@kav@add{.% + \KOMAClassFileName + }{subject}{centered}% + \fi + \fi + \fi + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{subject}{untitled}% +\KOMA@kav@add{.% + \KOMAClassFileName +}{subject}{beforeopening}% +\KOMA@ifkey{enlargefirstpage}{@enlargefp} +\KOMA@ifkey{firstfoot}{@firstfoot}\@firstfoottrue +\newcommand*{\@pageat}{4} +\KOMA@key{pagenumber}{% + \begingroup + \KOMA@set@ncmdkey{pagenumber}{@tempa}{% + {no}{-1},{off}{-1},{false}{-1},% + {topleft}{0},{headleft}{0},% + {topmiddle}{1},{topcenter}{1},{topcentered}{1},% + {headmiddle}{1},{headcenter}{1},{headcentered}{1},% + {topright}{2},{headright}{2},% + {botleft}{3},{footleft}{3},% + {botmiddle}{4},{botcenter}{4},{botcentered}{4},% + {footmiddle}{4},{footcenter}{4},{footcentered}{4},% + {botright}{5},{footright}{5},% + {top}{10},{head}{10},{bot}{11},{foot}{11},% + {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifnum\@tempa<10 + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}% + \else + \ifnum\@tempa<20 + \@tempcnta\@pageat\relax + \ifnum\@tempcnta>2 + \advance\@tempcnta by -3 + \fi + \ifnum\@tempa=11 + \advance\@tempcnta by 3 + \fi + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \else + \ifnum\@pageat>2 + \edef\@pageat{3}% + \else + \edef\@pageat{0}% + \fi + \@tempcnta\@tempa + \advance\@tempcnta by -20 + \advance\@tempcnta by\@pageat + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \fi + \fi + \else + \def\@tempa{\endgroup\FamilyKeyStateUnknownValue}% + \fi + \@tempa + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{pagenumber}{% + \ifcase \@pageat + topleft% + \or + topmiddle% + \or + topright% + \or + botleft% + \or + botmiddle% + \or + botright% + \else + false% + \fi + }% +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{pagenumber}{botmiddle} +\newif\if@scrsymbols +\KOMA@key{symbolicnames}[true]{% + \KOMA@set@ifkey{symbolicnames}{@scrsymbols}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \def\scr@symbols@font{marvosym}% + \else + \KOMA@set@ncmdkey{symbolicnames}{reserved@a}{% + {marvosym}{0},% + {fontawesome}{1},{awesome}{1},% + }{#1}% + \ifx \FamilyKeyState\FamilyKeyStateProcessed + \@scrsymbolstrue + \ifcase \number\reserved@a + \def\scr@symbols@font{marvosym}% + \else + \def\scr@symbols@font{fontawesome}% + \fi + \fi + \fi + \ifx \FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{symbolicnames}{#1}% + \if@scrsymbols + \Ifstr{\scr@symbols@font}{marvosym}{% + \def\scr@symbol@phone{\Telefon}% + \def\scr@symbol@fax{\FAX}% + \def\scr@symbol@email{\Email}% + \def\scr@symbol@mobilephone{\Mobilefone}% + \def\scr@symbol@www{\@empty}% + }{% + \def\scr@symbol@phone{\faPhone}% + \def\scr@symbol@fax{\faFax}% + \def\scr@symbol@email{\faEnvelopeO}% + \def\scr@symbol@mobilephone{\faMobilePhone}% + \def\scr@symbol@www{\faGlobe}% + }% + \if@atdocument + \begingroup + \@tempswafalse + \expandafter\ifdefined\scr@symbol@phone\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@fax\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@email\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@mobilephone\else\@tempswatrue\fi + \expandafter\ifdefined\scr@symbol@www\else\@tempswatrue\fi + \if@tempswa + \aftergroup\@scrsymbolsfalse + \ClassWarning{\KOMAClassName}{% + Option `symbolicnames=#1' + ignorred.\MessageBreak + You've tried to set option `symbolicnames'\MessageBreak + after \string\begin{document}, but without\MessageBreak + loading package `\scr@symbols@font' before.\MessageBreak + You should either switch on option\MessageBreak + `symbolicnames' before \string\begin{document}\MessageBreak + or load package `\scr@letter@symbols@font' in the + document\MessageBreak + preamble to avoid this warning% + }% + \fi + \endgroup + \else + \ifx\@fileswith@pti@ns\@badrequireerror + \Ifstr{\@currext}{\@clsextension}{% + \expandafter\AtEndOfClass + }{% + \Ifstr{\@currext}{\@pkgextension}{% + \expandafter\AtEndOfPackage + }{% + \expandafter\AtBeginDocument + }% + }% + \else + \expandafter\@firstofone + \fi + {\RequirePackage{\scr@symbols@font}}% + \fi + \fi + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{symbolicnames}{false}% +\newcommand*{\scr@symbols@font}{} +\newcommand*{\scr@symbol@phone}{\undefined} +\newcommand*{\scr@symbol@fax}{\undefined} +\newcommand*{\scr@symbol@email}{\undefined} +\newcommand*{\scr@symbol@mobilephone}{\undefined} +\newcommand*{\scr@symbol@www}{\undefined} +%%% From File: $Id: scrkernel-addressfiles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{% + parskip=false,% +} +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +\AtBeginDocument{% + \begingroup + \def\reserved@a#1/#2/#3 #4\@nil{\@tempcnta=#1\relax\@tempcntb=#2\relax}% + \expandafter\reserved@a\KOMAScriptVersion\@nil + \edef\reserved@a{\the\numexpr\@tempcnta+2\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{% + \ClassWarningNoLine{\KOMAClassName}{% + Your are using a KOMA-Script version, that has not\MessageBreak + been tested with your more than one year newer\MessageBreak + LaTeX release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + this could result in a lot of issues.\MessageBreak + Please have a look at\MessageBreak + and if this\MessageBreak + shows a newer KOMA-Script version than\MessageBreak + `\KOMAScriptVersion', we suggest to do\MessageBreak + an update of KOMA-Script or maybe even the whole\MessageBreak + TeX distribution% + }% + }{% + \edef\reserved@a{\the\numexpr\@tempcnta-4\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{}{% + \ClassWarningNoLine{\KOMAClassName}{% + You are using a KOMA-Script version, that has not been\MessageBreak + tested with your more than four years older LaTeX\MessageBreak + release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + KOMA-Script releases cannot be tested with all past\MessageBreak + LaTeX releases.\MessageBreak + \ifnum\scr@compatibility<\scr@v@last + So even if you are using option `version' implicitly\MessageBreak + or explicitly, this + \else + So this + \fi + could result in a lot of issues.\MessageBreak + We recommend, to update the whole TeX distribution.\MessageBreak + If this could not be done, we suggest to use at\MessageBreak + least an older KOMA-Script release, e.g., from\MessageBreak + % + }% + }% + }% + \endgroup +} +\expandafter\ifnum \@nameuse{scr@v@2.95}>\scr@compatibility\relax + \newcommand*{\@setif}[2][]{% + \begingroup + \edef\@tempa{#1}\ifx\@tempa\@empty + \def\@tempa{\KOMA@set@ifkey{#2}{@#2}}% + \else + \def\@tempa{\KOMA@set@ifkey{#2}{#1}}% + \fi + \expandafter\endgroup\@tempa + }% +\fi +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{fontsize}% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\footnotesep}{.7\@tempdimc}% + \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus + .6\@tempdimc}% + \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{0\p@ \@plus 1fil}% + \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{0\p@ \@plus 1fil}% + \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@dblfpbot}{\@fptop}% + \fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% + \ClassWarning{\KOMAClassName}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil +\edef\@tempa{\@ptsize}% +\setlength{\@tempdimb}{\@tempdima}% +\edef\@tempb{\strip@pt\@tempdimb}% +\addtolength{\@tempdimb}{-10\p@}% +\edef\@ptsize{\strip@pt\@tempdimb}% +\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% +}{% + \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}% + }{% + \InputIfFileExists{size\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `size\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% + \edef\@tempa{% + \noexpand\changefontsizes{\@tempa}% + \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% + }\@tempa + }% + }% +} +\newcommand*{\scr@DeclareOldFontCommand}[3]{% + \ifnum\scr@defineobsoletefonts<\z@\else + \ifnum\scr@defineobsoletefonts>\tw@ + \DeclareOldFontCommand{#1}{#2}{#3}% + \else + \DeclareOldFontCommand{#1}{% + \scr@ErrorWarningInfo{#1}{#2}#2% + }{% + \scr@ErrorWarningInfo{#1}{#3}#3% + }% + \fi + \fi +} +\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{% + \ifnum \scr@defineobsoletefonts=\z@ + \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{% + You should note that since 1994 LaTeX2e provides a new font selection + scheme\MessageBreak + called NFSS2 with several new, combinable font commands. + KOMA-Script\MessageBreak + classes had defined the old font commands like `\string#1' + only for compatibility\MessageBreak + with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, + these\MessageBreak + commands are deprecated and undocumented at least since 2003. Since + 2013\MessageBreak + KOMA-Script classes warned about soon removement of these deprecated + commands.\MessageBreak + Now, after two decades of LaTeX2e and NFSS2, these commands will not + work any\MessageBreak + more. If loading a package results in this error message, you should + contact\MessageBreak + the author of that package and ask him to replace the deprecated font + command\MessageBreak + `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should + reconfigure\MessageBreak + or replace the package. If you have used the old font command + `\string#1' yourself,\MessageBreak + you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak + To make it work for now, you can use the already also deprecated class + option\MessageBreak + `enabledeprecatedfontcommands'.% + }% + \else + \ifcase \scr@defineobsoletefonts + \or + \expandafter\ClassWarning + \or + \expandafter\ClassInfo + \else + \expandafter\@gobbletwo + \fi + {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak + You should note, that since 1994 LaTeX2e provides a\MessageBreak + new font selection scheme called NFSS2 with several\MessageBreak + new, combinable font commands. New KOMA-Script classes\MessageBreak + defined the old font commands like `\string#1' only for\MessageBreak + compatibility with LaTeX 2.09 document styles of\MessageBreak + Script 2.0. These commands are deprecated and\MessageBreak + undocumented at least since 2003. Since 2013,\MessageBreak + KOMA-Script classes warned about soon removement of\MessageBreak + these deprecated commands. Now, after two decades of\MessageBreak + LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak + not work any longer. If loading a package results in\MessageBreak + this message you should contact the author of that\MessageBreak + package and ask him to replace the depracted font\MessageBreak + command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak + Otherwise you should reconfigure or replace the\MessageBreak + package. If you have used the old font command\MessageBreak + `\string #1' yourself you should replace it, e.g., by\MessageBreak + `\detokenize{#2}'% + }% + \fi +} +\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{% + \@nomath\sfb} +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\setlength{\skip\@mpfootins}{\skip\footins} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\newcommand*{\new@tpo@label}{\@newl@bel{tpo}} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\new@tpo@label[2]{}% + }% + \fi +} +\newcommand*{\scr@tpo}{0} +\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{% + \@bsphack + \begingroup + \@tempcnta=\scr@tpo + \advance\@tempcnta by\@ne + \xdef\scr@tpo{\the\@tempcnta}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax + \protect\G@refundefinedtrue + \ClassWarning{\KOMAClassName}{% + odd/even page label number \scr@tpo\space undefined}% + \edef\@tempa{\the\value{page}}% + \else + \edef\@tempa{\csname tpo@\scr@tpo\endcsname}% + \fi + \ifodd\number\@tempa + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup + \edef\is@thispageodd@setlabel{% + \if@filesw + \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{% + \noexpand\string + \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}% + \fi + \noexpand\def\noexpand\is@thispageodd@setlabel + {\unexpanded\expandafter{\is@thispageodd@setlabel}}% + }% + #1% + \@esphack +} +\newcommand*{\is@thispageodd@setlabel}{} +\newif\ifthispagewasodd +\providecommand*{\ifthispageodd}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command + `\string\ifthispageodd'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'% + }% + \Ifthispageodd +} +\newcommand{\Ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand\marginline[1]{% + \marginpar[\raggedleft{#1}]{\raggedright #1}% +} +\scr@ifundefinedorrelax{textsubscript}{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% +}{% + \scr@ifundefinedorrelax{textsubscript }{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% + }{}% +} +\providecommand*{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% +} +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +\newcommand*{\scr@package@not@recommended}[2]{% + \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}% + \reserved@a + \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi + }{% + \BeforePackage{#1}{% + \ClassWarning{\KOMAClassName}{% + Usage of package `#1' together\MessageBreak + with a KOMA-Script class is not recommended.\MessageBreak + \if\relax\detokenize{#2}\relax\else + I'd suggest to use #2.\MessageBreak + \fi + Nevertheless, using requested\MessageBreak + package `#1'% + }% + }% + }% +}% +\scr@package@not@recommended{emptypage}{% + option\MessageBreak + `cleardoublepage' with one of it's\MessageBreak + several values} +\scr@package@not@recommended{fancyhdr}{% + \MessageBreak + package `scrlayer' or `scrlayer-scrpage', because\MessageBreak + they support KOMA-Script classes.\MessageBreak + With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak + like options `headsepline', `footsepline' or command\MessageBreak + `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak + `\string\addtokomafont' for the page style elements need\MessageBreak + explicite user intervention to work} +\scr@package@not@recommended{parskip}{% + option\MessageBreak + `parskip' with one of it's several values} +\scr@package@not@recommended{titleps}{% + package `scrlayer-scrpage'} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\LoadLetterOption}[1]{% + \@ifundefined{@restore@catcode@level}% + {\let\@restore@catcode@level=\z@}{}% + \ifnum\@restore@catcode@level =\z@ + \ifnum\catcode`\@=11 + \let\@restore@catcode\relax + \else + \@tempcnta=\catcode`\@ + \edef\@restore@catcode{% + \noexpand\catcode`\noexpand\@=\the\@tempcnta}% + \makeatletter + \fi + \fi + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta}% + \scr@sp@def\reserved@a{#1}% + \edef\reserved@a{% + \noexpand\edef\noexpand\scr@currentlco{\reserved@a}% + \noexpand\InputIfFileExists{\reserved@a.lco}{% + \noexpand\ClassInfo{scrlttr2% + }{Letter-Class-Option `#1' loaded}% + }{% + \noexpand\ClassError{scrlttr2% + }{% + Letter-Class-Option file `#1.lco' not found% + }{% + You've told me to load the Letter-Class-Option `#1'. So I have + to load\noexpand\MessageBreak + the file `#1.lco'. But the file isn't available.}% + }% + \scr@ifundefinedorrelax{scr@currentlco}{% + \unexpanded{\let\scr@currentlco\relax}% + }{% + \noexpand\def\noexpand\scr@currentlco{\scr@currentlco}% + }% + }% + \if@atdocument + \edef\reserved@a{% + \unexpanded\expandafter{\reserved@a}% + \ifx\RequirePackage\@notprerr + \unexpanded{\let\RequirePackage\@notprerr}% + \else + \noexpand\def\noexpand\RequirePackage{% + \unexpanded\expandafter{\RequirePackage}% + }% + \fi + \ifx\usepackage\@notprerr + \unexpanded{\let\usepackage\@notprerr}% + \else + \noexpand\def\noexpand\usepackage{% + \unexpanded\expandafter{\usepackage}% + }% + \fi + }% + \let\RequirePackage\lco@RequirePackage + \let\usepackage\lco@RequirePackage + \expandafter\reserved@a + \else \expandafter\reserved@a + \fi + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \m@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta}% + \ifnum\@tempcnta =\z@ + \@restore@catcode + \fi +} +\newcommand*{\lco@RequirePackage}[2][]{% + \begingroup + \@for\reserved@a:=#2\do{% + \scr@trim@spaces\reserved@a + \scr@ifundefinedorrelax{ver@\reserved@a.\scr@pkgextension}{% + \ClassError{\KOMAClassName}{% + lco-file `\scr@currentlco' can be used only in preamble% + }{% + The lco-file `\scr@currentlco' uses \string\RequirePackage\space or + \string\usepackage\space to load\MessageBreak + package `\reserved@a'. This means you have to either load + `\reserved@a'\MessageBreak + or lco-file `\scr@currentlco' in the document preamble. + }% + }{}% + }% + \endgroup + \scr@gobbleopt +} +\newcommand*{\LoadLetterOptions}[1]{% + \begingroup + \def\reserved@a{\endgroup}% + \@for\reserved@b:=#1\do{% + \scr@trim@spaces\reserved@b + \ifx\reserved@b\@empty\else + \edef\reserved@a{\expandafter\unexpanded\expandafter{\reserved@a + \LoadLetterOption}{\reserved@b}\relax}% + \fi + }% + \reserved@a +} +\newcommand*{\LOPNP@option}{} +\newcommand*{\LOPNP@size}{} +\newcommand*{\@PapersizeWarning}{% + \begingroup% + \edef\@tempc{\noexpand\@tempswafalse + \noexpand\ifdim\paperwidth<\the\dimexpr\paperwidth-.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperwidth>\the\dimexpr\paperwidth+.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperheight<\the\dimexpr\paperheight-.1mm\relax + \relax + \noexpand\else + \noexpand\ifdim\paperheight>\the\dimexpr\paperheight+.1mm\relax + \relax + \noexpand\else + \noexpand\@tempswatrue + \noexpand\fi + \noexpand\fi + \noexpand\fi + \noexpand\fi + \noexpand\@@PapersizeWarning + }% + \def\@tempb{letter}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{legal}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{executive}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}% + \else% + \PaperNameToSize[letter]{\LOPNP@size}% + \fi + \fi + \fi + \@tempc + \endgroup% +} +\AfterPackage*{typearea}{% +\ProvideUnknownPaperSizeError{letter}{% + \ClassError{scrlttr2}{% + papersize `\LOPNP@size' undefined}{% + You've told me to check for paper size + `\LOPNP@size'\MessageBreak + at letter option file `\LOPNP@option.lco',\MessageBreak + but this paper size is not supported.\MessageBreak + See the KOMA-Script manual for informations about known + paper sizes.}% +} +} +\newcommand*{\@@PapersizeWarning}{% + \if@tempswa\else% + \ClassWarningNoLine{scrlttr2% + }{% + Letter option file `\LOPNP@option.lco'\MessageBreak + needs paper size `\LOPNP@size'.\MessageBreak + Current paper size is not `\LOPNP@size'!\MessageBreak + \scr@ifundefinedorrelax{KOMAClassName}{% + You should load package `typearea' either\MessageBreak + with option `paper=\LOPNP@size,paper=portrait' or + additionally\MessageBreak + }{% + You should add `paper=\LOPNP@size,paper=portrait' at the\MessageBreak + option list of `\string\documentclass' or\MessageBreak + }% + add `\string\KOMAoptions{paper=\LOPNP@size,paper=portrait}'\MessageBreak + before starting this letter!\MessageBreak + Maybe you know what you are doing,\MessageBreak + so I do not change this myself}% + \fi + } +\newcommand*{\LetterOptionNeedsPapersize}[2]{% + \edef\LOPNP@size{#2}\edef\LOPNP@option{#1}% +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\g@addnumerical@date}[2]{% + \@ifundefined{date#1}{% + \ClassInfo{scrlttr2% + }{% + no date found for language `#1'\MessageBreak + --> skipped% + }% + }{% + \expandafter\g@addto@macro\csname date#1\endcsname{% + \let\sym@date=\today% + \def\num@date{#2}% + \def\today{\if@orgdate\sym@date\else\num@date\fi}% + }% + }% +} +\AtBeginDocument{% + \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}% + \@ifundefined{dateenglish}{\def\dateenglish{% + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year}% + }% + }{}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\yourrefname{Your ref.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\yourmailname{Your letter of}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\myrefname{Our ref.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\customername{Customer no.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\invoicename{Invoice no.}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\subjectname{Subject}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\ccname{cc}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\enclname{encl}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\headtoname{To}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\headfromname{From}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\datename{Date}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\pagename{Page}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\phonename{Phone}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\mobilephonename{Mobile phone}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\faxname{Fax}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\emailname{Email}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\wwwname{Url}% + \providecaptionname{american,australian,british,canadian,% + english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\bankname{Bank account}% + \g@addnumerical@date{american}{\number\month/\number\day/\number\year}% + \g@addnumerical@date{australian}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{british}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{canadian}{\number\year/\number\month/\number\day}% + \g@addnumerical@date{english}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{newzealand}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{UKenglish}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{ukenglish}{\number\day/\number\month/\number\year}% + \g@addnumerical@date{USenglish}{\number\month/\number\day/\number\year}% + \g@addnumerical@date{usenglish}{\number\month/\number\day/\number\year}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\yourrefname{Ihr Zeichen}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\yourmailname{Ihr Schreiben vom}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\myrefname{Unser Zeichen}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\customername{Kundennummer}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\invoicename{Rechnungsnummer}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\subjectname{Betrifft}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\ccname{Kopien an}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\enclname{Anlage}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\headtoname{An}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\headfromname{Von}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\datename{Datum}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\pagename{Seite}% + \providecaptionname{german}\phonename{Telephon}% + \providecaptionname{ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\phonename{Telefon}% + \providecaptionname{german}\mobilephonename{Mobiltelephon}% + \providecaptionname{ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\mobilephonename{Mobiltelefon}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\faxname{Fax}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\emailname{E-Mail}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\wwwname{URL}% + \providecaptionname{german,ngerman,austrian,naustrian,% + swissgerman,nswissgerman}\bankname{Bankverbindung}% + \g@addnumerical@date{german}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{ngerman}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{austrian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{naustrian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{swissgerman}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{nswissgerman}{% + \number\day.\,\number\month.\,\number\year}% + \providecaptionname{% + acadian,canadien,francais,french}\yourrefname{Vos r\'ef\'erences}% + \providecaptionname{% + acadian,canadien,francais,french}\yourmailname{Votre lettre du}% + \providecaptionname{% + acadian,canadien,francais,french}\myrefname{Nos r\'ef\'erences}% + \providecaptionname{% + acadian,canadien,francais,french}\customername{Num\'ero de client}% + \providecaptionname{% + acadian,canadien,francais,french}\invoicename{Num\'ero de facture}% + \providecaptionname{% + acadian,canadien,francais,french}\subjectname{Concernant}% + \providecaptionname{% + acadian,canadien,francais,french}\ccname{Copie \`a}% + \providecaptionname{% + acadian,canadien,francais,french}\enclname{Annexes}% + \providecaptionname{% + acadian,canadien,francais,french}\headtoname{A}% + \providecaptionname{% + acadian,canadien,francais,french}\headfromname{De}% + \providecaptionname{% + acadian,canadien,francais,french}\datename{Date}% + \providecaptionname{% + acadian,canadien,francais,french}\pagename{Page}% + \providecaptionname{% + acadian,canadien,francais,french}\phonename{T\'el\'ephone}% + \providecaptionname{% + acadian,canadien,francais,french}\mobilephonename{Portable}% + \providecaptionname{% + acadian,canadien,francais,french}\faxname{T\'el\'efax}% + \providecaptionname{% + acadian,canadien,francais,french}\emailname{E-mail}% + \providecaptionname{% + acadian,canadien,francais,french}\wwwname{URL}% + \providecaptionname{% + acadian,canadien,francais,french}\bankname{Compte en banque}% + \g@addnumerical@date{acadian}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{canadien}{\number\year/\number\month/\number\day}% + \g@addnumerical@date{francais}{\number\day.\,\number\month.\,\number\year}% + \g@addnumerical@date{french}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{italian}\yourrefname{Vs./Rif.}% or Vostro Riferimento + \providecaptionname{italian}\yourmailname{Vs.~lettera del}% or Vostra + % lettera del + \providecaptionname{italian}\myrefname{Ns./Rif.}% or Nostro Riferimento + \providecaptionname{italian}\customername{Nr.~cliente}% or Cliente num. + \providecaptionname{italian}\invoicename{Nr.~fattura}% or Fattura num. + \providecaptionname{italian}\subjectname{Oggetto}% + \providecaptionname{italian}\ccname{Per conoscenza}% or Copia a + \providecaptionname{italian}\enclname{Allegato}% or (plural) Allegati + \providecaptionname{italian}\headtoname{A}% + \providecaptionname{italian}\headfromname{Da}% + \providecaptionname{italian}\datename{Data}% + \providecaptionname{italian}\pagename{Pagina}% + \providecaptionname{italian}\phonename{Telefono}% + \providecaptionname{italian}\mobilephonename{Telefonino}% + \providecaptionname{italian}\faxname{Fax}% + \providecaptionname{italian}\emailname{Email}% + \providecaptionname{italian}\wwwname{Sito Web}% + \providecaptionname{italian}\bankname{Conto bancario}% + \g@addnumerical@date{italian}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{spanish}\yourrefname{Su ref.}% + \providecaptionname{spanish}\yourmailname{Su carta de}% + \providecaptionname{spanish}\myrefname{Nuestra ref.}% + \providecaptionname{spanish}\customername{No. de cliente}% + \providecaptionname{spanish}\invoicename{No. de factura}% + \providecaptionname{spanish}\subjectname{Asunto}% + \providecaptionname{spanish}\ccname{Copias}% + \providecaptionname{spanish}\enclname{Adjunto}% + \providecaptionname{spanish}\headtoname{A}% + \providecaptionname{spanish}\headfromname{De}% + \providecaptionname{spanish}\datename{Fecha}% + \providecaptionname{spanish}\pagename{P\'agina}% + \providecaptionname{spanish}\phonename{Tel\'efono}% + \providecaptionname{spanish}\mobilephonename{M\'ovil}% + \providecaptionname{spanish}\faxname{Fax}% + \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico + \providecaptionname{spanish}\wwwname{URL}% or P\`agina web + \providecaptionname{spanish}\bankname{Cuenta bancaria}% + \g@addnumerical@date{spanish}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{croatian}\yourrefname{Va\v{s} znak}% + \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}% + \providecaptionname{croatian}\myrefname{Na\v{s} znak}% + \providecaptionname{croatian}\customername{Broj kupca}% + \providecaptionname{croatian}\invoicename{Broj fakture}% + \providecaptionname{croatian}\subjectname{Predmet}% + \providecaptionname{croatian}\ccname{Kopija}% + \providecaptionname{croatian}\enclname{Privitak}% + \providecaptionname{croatian}\headtoname{Prima}% + \providecaptionname{croatian}\headfromname{\v{S}alje}% + \providecaptionname{croatian}\datename{Nadnevak}% + \providecaptionname{croatian}\pagename{Stranica}% + \providecaptionname{croatian}\phonename{Telefon}% + \providecaptionname{croatian}\mobilphonename{Mobitel}% + \providecaptionname{croatian}\faxname{Fax}% + \providecaptionname{croatian}\emailname{E-Mail}% + \providecaptionname{croatian}\wwwname{URL}% + \providecaptionname{croatian}\bankname{Bankovna veza}% + \g@addnumerical@date{croatian}{\number\day.\,\number\month.\,\number\year.}% + \providecaptionname{dutch}\yourrefname{Uw kenmerk}% + \providecaptionname{dutch}\yourmailname{Uw brief van}% + \providecaptionname{dutch}\myrefname{Ons kenmerk}% + \providecaptionname{dutch}\customername{Klant No.}% + \providecaptionname{dutch}\invoicename{Rekening No.}% + \providecaptionname{dutch}\subjectname{Onderwerp}% + \providecaptionname{dutch}\ccname{Kopie aan}% + \providecaptionname{dutch}\enclname{Bijlage(n)}% + \providecaptionname{dutch}\headtoname{Aan}% + \providecaptionname{dutch}\headfromname{Van}% + \providecaptionname{dutch}\datename{Datum}% + \providecaptionname{dutch}\pagename{Pagina}% + \providecaptionname{dutch}\phonename{Telefoon}% + \providecaptionname{dutch}\mobilephonename{Mobieltje}% + \providecaptionname{dutch}\faxname{Fax}% + \providecaptionname{dutch}\emailname{E--mail}% + \providecaptionname{dutch}\wwwname{URL}% + \providecaptionname{dutch}\bankname{Bankrekening}% + \g@addnumerical@date{dutch}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{finnish}\yourrefname{Viitteenne}% + \providecaptionname{finnish}\yourmailname{Kirjeenne}% + \providecaptionname{finnish}\myrefname{Viitteemme}% + \providecaptionname{finnish}\customername{Asiakasnumero}% + \providecaptionname{finnish}\invoicename{Laskun numero}% + \providecaptionname{finnish}\subjectname{Asia}% + \providecaptionname{finnish}\ccname{Jakelu}% + \providecaptionname{finnish}\enclname{Liitteet}% + \providecaptionname{finnish}\headtoname{Vastaanottaja}% + \providecaptionname{finnish}\headfromname{L\"ahett\"aj\"a}% + \providecaptionname{finnish}\datename{P\"aiv\"a}% + \providecaptionname{finnish}\pagename{Sivu}% + \providecaptionname{finnish}\phonename{Puhelin}% + \providecaptionname{finnish}\mobilephonename{Matkapuhelin}% + \providecaptionname{finnish}\faxname{Faksi}% + \providecaptionname{finnish}\emailname{S\"ahk\"oposti}% + \providecaptionname{finnish}\wwwname{URL}% + \providecaptionname{finnish}\bankname{Pankkitilin numero}% + \g@addnumerical@date{finnish}{\number\day.\number\month.\number\year}% + \providecaptionname{norsk}\yourrefname{Deres ref.}% + \providecaptionname{norsk}\yourmailname{Deres brev av:}% + \providecaptionname{norsk}\myrefname{V\aa{}r ref:}% + \providecaptionname{norsk}\customername{Kundenummer}% + \providecaptionname{norsk}\invoicename{Fakturanummer}% + \providecaptionname{norsk}\subjectname{Emne}% + \providecaptionname{norsk}\ccname{Kopi til}% + \providecaptionname{norsk}\enclname{Vedlegg}% + \providecaptionname{norsk}\headtoname{Til}% + \providecaptionname{norsk}\headfromname{Fra}% + \providecaptionname{norsk}\datename{Dato}% + \providecaptionname{norsk}\pagename{Side}% + \providecaptionname{norsk}\phonename{Telefon}% + \providecaptionname{norsk}\mobilephonename{Mobiltelefon}% + \providecaptionname{norsk}\faxname{Telefaks}% + \providecaptionname{norsk}\emailname{E-post}% + \providecaptionname{norsk}\wwwname{Url}% + \providecaptionname{norsk}\bankname{Bankkontonummer}% + \g@addnumerical@date{norsk}{\number\day.\number\month.\number\year}% + \providecaptionname{swedish}\yourrefname{Er ref}% + \providecaptionname{swedish}\yourmailname{Ert brev av}% + \providecaptionname{swedish}\myrefname{V\aa{}r ref}% + \providecaptionname{swedish}\customername{Kundnummer}% + \providecaptionname{swedish}\invoicename{Fakturanummer}% + \providecaptionname{swedish}\subjectname{\"Amne}% + \providecaptionname{swedish}\ccname{Kopia till}% + \providecaptionname{swedish}\enclname{Bilagor}% Singular: Bilaga + \providecaptionname{swedish}\headtoname{Till}% + \providecaptionname{swedish}\headfromname{Fr\aa{}n}% + \providecaptionname{swedish}\datename{Datum}% + \providecaptionname{swedish}\pagename{Sida}% + \providecaptionname{swedish}\phonename{Telefon}% + \providecaptionname{swedish}\mobilephonename{Mobiltelefon}% + \providecaptionname{swedish}\faxname{Telefax}% + \providecaptionname{swedish}\emailname{E-post}% + \providecaptionname{swedish}\wwwname{Hemsida}% + \providecaptionname{swedish}\bankname{Bankgiro}% PlusGiro + \g@addnumerical@date{swedish}{\number\day/\number\month~\number\year}% + \providecaptionname{polish}\yourrefname{Wasz znak}% + \providecaptionname{polish}\yourmailname{Wasze pismo z dnia}% + \providecaptionname{polish}\myrefname{Nasz znak}% + \providecaptionname{polish}\customername{Numer klienta}% + \providecaptionname{polish}\invoicename{Numer rachunku}% + \providecaptionname{polish}\subjectname{Dotyczy}% + \providecaptionname{polish}\ccname{Rozdzielnik}% + \providecaptionname{polish}\enclname{Za\l\aob{}czniki}% + \providecaptionname{polish}\headtoname{Do}% + \providecaptionname{polish}\headfromname{Od}% + \providecaptionname{polish}\datename{Data}% + \providecaptionname{polish}\pagename{Strona}% + \providecaptionname{polish}\phonename{Telefon}% + \providecaptionname{polish}\mobilephonename{Numer mobilny}% + \providecaptionname{polish}\faxname{Fax}% + \providecaptionname{polish}\emailname{E-mail}% + \providecaptionname{polish}\wwwname{URL}% + \providecaptionname{polish}\bankname{Konto}% + \g@addnumerical@date{polish}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{czech}\yourrefname{Va\v{s}e zna\v{c}ka}% + \providecaptionname{czech}\yourmailname{V\'{a}\v{s} dopis ze dne}% + \providecaptionname{czech}\myrefname{Na\v{s}e zna\v{c}ka}% + \providecaptionname{czech}\customername{Z\'akaznick\'e \v{c}\'{\i}slo}% + \providecaptionname{czech}\invoicename{Fakura\v{c}n\'{\i} \v{c}\'{\i}slo}% + \providecaptionname{czech}\subjectname{Pr\v{e}dm\v{e}t}% + \providecaptionname{czech}\ccname{Kopie}% + \providecaptionname{czech}\enclname{P\v{r}\'{\i}loha}% + \providecaptionname{czech}\headtoname{Komu}% + \providecaptionname{czech}\headfromname{Od}% + \providecaptionname{czech}\datename{Datum}% + \providecaptionname{czech}\pagename{Strana}% + \providecaptionname{czech}\phonename{Telefon}% + \providecaptionname{czech}\mobilephonename{Mobil}% + \providecaptionname{czech}\faxname{Fax}% + \providecaptionname{czech}\emailname{E-Mail}% + \providecaptionname{czech}\wwwname{URL}% + \providecaptionname{czech}\bankname{Bankovn\'{\i} spojen\'{\i}}% + \g@addnumerical@date{czech}{\number\day.\,\number\month.\,\number\year}% + \providecaptionname{slovak}\yourrefname{Va\v{s}a zna\v{c}ka}% + \providecaptionname{slovak}\yourmailname{V\'{a}\v{s} list zo d\v{n}a}% + \providecaptionname{slovak}\myrefname{Na\v{s}a zna\v{c}ka}% + \providecaptionname{slovak}\customername{Z\'akazn\'{\i}cke \v{c}\'{\i}slo}% + \providecaptionname{slovak}\invoicename{\'{C}\'{\i}slo fakt\'ury}% + \providecaptionname{slovak}\subjectname{Predmet}% + \providecaptionname{slovak}\ccname{K\'{o}pia pre koho}% + \providecaptionname{slovak}\enclname{Pr\'{\i}loha}% + \providecaptionname{slovak}\headtoname{Komu}% + \providecaptionname{slovak}\headfromname{Od}% + \providecaptionname{slovak}\datename{D\'{a}tum}% + \providecaptionname{slovak}\pagename{Strana}% + \providecaptionname{slovak}\phonename{Telef\'{o}n}% + \providecaptionname{slovak}\mobilephonename{Mobil}% + \providecaptionname{slovak}\faxname{Fax}% + \providecaptionname{slovak}\emailname{E-Mail}% + \providecaptionname{slovak}\wwwname{URL}% + \providecaptionname{slovak}\bankname{Bankov\'{e} spojenie}% + \g@addnumerical@date{slovak}{\number\day.\,\number\month.\,\number\year}% + \captionsenglish + \dateenglish + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname date\languagename\endcsname\relax + \ClassWarningNoLine{scrlttr2% + }{% + \string\language\space is \the\language, \string\languagename\space is + `\languagename'\MessageBreak + but \expandafter\string\csname + date\languagename\endcsname\space not defined!\MessageBreak + This seems to be a bug at you're `hyphen.cfg'.\MessageBreak + Undefining macro \string\languagename\space to avoid errors% + }% + \let\languagename=\undefined + \fi + \ifx\languagename\undefined + \ClassWarningNoLine{scrlttr2% + }{\string\languagename\space not + defined, using \string\language.\MessageBreak + This may result in use of wrong language!\MessageBreak + You should use a compatible language + package\MessageBreak + (e.g. `Babel', `german', `ngerman', ...)}% + \ifx\l@american\undefined\else\ifnum\language=\l@american + \@nameuse{captionsamerican}% + \@nameuse{extrasamerican}% + \@nameuse{dateamerican}% + \fi\fi + \ifx\l@australian\undefined\else\ifnum\language=\l@australian + \@nameuse{captionsaustralian}% + \@nameuse{extrasaustralian}% + \@nameuse{dateaustralian}% + \fi\fi + \ifx\l@british\undefined\else\ifnum\language=\l@british + \@nameuse{captionsbritish}% + \@nameuse{extrasbritish}% + \@nameuse{datebritish}% + \fi\fi + \ifx\l@canadian\undefined\else\ifnum\language=\l@canadian + \@nameuse{captionscanadian}% + \@nameuse{extrascanadian}% + \@nameuse{datecanadian}% + \fi\fi + \ifx\l@newzealand\undefined\else\ifnum\language=\l@newzealand + \@nameuse{captionsnewzealand}% + \@nameuse{extrasnewzealand}% + \@nameuse{datenewzealand}% + \fi\fi + \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish + \@nameuse{captionsUKenglish}% + \@nameuse{extrasUKenglish}% + \@nameuse{dateUKenglish}% + \fi\fi + \ifx\l@ukenglish\undefined\else\ifnum\language=\l@ukenglish + \@nameuse{captionsukenglish}% + \@nameuse{extrasukenglish}% + \@nameuse{dateukenglish}% + \fi\fi + \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish + \@nameuse{captionsUSenglish}% + \@nameuse{extrasUSenglish}% + \@nameuse{dateUSenglish}% + \fi\fi + \ifx\l@usenglish\undefined\else\ifnum\language=\l@usenglish + \@nameuse{captionsusenglish}% + \@nameuse{extrasusenglish}% + \@nameuse{dateusenglish}% + \fi\fi + \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian + \@nameuse{captionsaustrian}% + \@nameuse{extrasaustrian}% + \@nameuse{dateaustrian}% + \fi\fi + \ifx\l@naustrian\undefined\else\ifnum\language=\l@naustrian + \@nameuse{captionsnaustrian}% + \@nameuse{extrasnaustrian}% + \@nameuse{datenaustrian}% + \fi\fi + \ifx\l@german\undefined\else\ifnum\language=\l@german + \@nameuse{captionsgerman}% + \@nameuse{extrasgerman}% + \@nameuse{dategerman}% + \fi\fi + \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman + \@nameuse{captionsngerman}% + \@nameuse{extrasngerman}% + \@nameuse{datengerman}% + \fi\fi + \ifx\l@swissgerman\undefined\else\ifnum\language=\l@swissgerman + \@nameuse{captionsswissgerman}% + \@nameuse{extrasswissgerman}% + \@nameuse{dateswissgerman}% + \fi\fi + \ifx\l@nswissgerman\undefined\else\ifnum\language=\l@nswissgerman + \@nameuse{captionsnswissgerman}% + \@nameuse{extrasnswissgerman}% + \@nameuse{datenswissgerman}% + \fi\fi + \ifx\l@acadian\undefined\else\ifnum\language=\l@acadian + \@nameuse{captionsacadian}% + \@nameuse{extrasacadian}% + \@nameuse{dateacadian}% + \fi\fi + \ifx\l@canadien\undefined\else\ifnum\language=\l@canadien + \@nameuse{captionscanadien}% + \@nameuse{extrascanadien}% + \@nameuse{datecanadien}% + \fi\fi + \ifx\l@francais\undefined\else\ifnum\language=\l@francais + \@nameuse{captionsfrancais}% + \@nameuse{extrasfrancais}% + \@nameuse{datefrancais}% + \fi\fi + \ifx\l@french\undefined\else\ifnum\language=\l@french + \@nameuse{captionsfrench}% + \@nameuse{extrasfrench}% + \@nameuse{datefrench}% + \fi\fi + \ifx\l@italian\undefined\else\ifnum\language=\l@italian + \@nameuse{captionsitalian}% + \@nameuse{extrasitalian}% + \@nameuse{dateitalian}% + \fi\fi + \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish + \@nameuse{captionsspanish}% + \@nameuse{extrasspanish}% + \@nameuse{datespanish}% + \fi\fi + \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian + \@nameuse{captionscroatian}% + \@nameuse{extrascroatian}% + \@nameuse{datecroatian}% + \fi\fi + \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch + \@nameuse{captionsdutch}% + \@nameuse{extrasdutch}% + \@nameuse{datedutch}% + \fi\fi + \ifx\l@finnish\undefined\else\ifnum\language=\l@finnish + \@nameuse{captionsfinnish}% + \@nameuse{extrasfinnish}% + \@nameuse{datefinnish}% + \fi\fi + \ifx\l@norsk\undefined\else\ifnum\language=\l@norsk + \@nameuse{captionsnorsk}% + \@nameuse{extrasnorsk}% + \@nameuse{datenorsk}% + \fi\fi + \ifx\l@swedish\undefined\else\ifnum\language=\l@swedish + \@nameuse{captionsswedish}% + \@nameuse{extrasswedish}% + \@nameuse{dateswedish}% + \fi\fi + \ifx\l@polish\undefined\else\ifnum\language=\l@polish + \@nameuse{captionspolish}% + \@nameuse{extraspolish}% + \@nameuse{datepolish}% + \fi\fi + \ifx\l@czech\undefined\else\ifnum\language=\l@czech + \@nameuse{captionsczech}% + \@nameuse{extrasczech}% + \@nameuse{dateczech}% + \fi\fi + \ifx\l@slovak\undefined\else\ifnum\language=\l@slovak + \@nameuse{captionsslovak}% + \@nameuse{extrasslovak}% + \@nameuse{dateslovak}% + \fi\fi + \else + \edef\@tempa{nohyphenation}% + \ifx\languagename\@tempa + \ClassWarningNoLine{scrlttr2% + }{% + You've selected language `\languagename'.\MessageBreak + Maybe your LaTeX format contains Babel extension\MessageBreak + but you have not selected a language using\MessageBreak + Babel package.\MessageBreak + Please select another language!\MessageBreak + Only as a workaround english captions and date\MessageBreak + will be used% + }% + \else + \ClassInfo{scrlttr2% + }{% + trying to activate captions and date\MessageBreak + of language `\languagename'% + }% + \csname date\languagename\endcsname + \csname captions\languagename\endcsname + \ClassInfo{scrlttr2% + }{% + used language is `\languagename'.\MessageBreak + Supported languages are: `english', `UKenglish',\MessageBreak + `ukenglish', `british', `american', `USenglish',\MessageBreak + `usenglish', `australian`,`canadian', `newzealand',\MessageBreak + `german', `ngerman', `austrian', `naustrian',\MessageBreak + `swissgerman', `nswissgermsn',\MessageBreak + `acadian', `canadien', `francais', `french', \MessageBreak + `dutch', `italian', `spanish', `polish',\MessageBreak + `croatian', `finnish', `norsk', `swedish',\MessageBreak + `czech', `slovak'% + }% + \fi + \fi +} +%%% From File: $Id: scrkernel-variables.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\newkomavar}{% + \kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}} +\newcommand*{\@newkomavar}[2][\relax]{% + \@ifundefined{scr@#2@name}{% + \@ifundefined{scr@#2@var}{% + \begingroup + \def\@tempa{#1}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#2@name}{#1}% + \fi% + \expandafter\let\csname scr@#2@var\endcsname=\@empty + \if@tempswa\addtoreffields{#2}\fi + }{% + \ClassError{scrlttr2% + }{% + This should never happen% + }{% + The contents of the KOMA-Script variable `#2'\MessageBreak + is undefined, but the name of the variable is + defined.\MessageBreak + This should never happen. So someone crashs me!% + }% + }% + }{% + \ClassError{scrlttr2% + }{% + Variable `#2' already defined% + }{% + I'll ignore this command, if you'll continue.% + }% + }% +} +\newcommand*{\setkomavar}{% + \kernel@ifstar {\@setkomaname}{\@setkomavar}} +\newcommand*{\@setkomavar}[1]{% + \kernel@ifnextchar [%] + {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}} +\newcommand*{\@setkomaname}[2]{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@name}{#2}% + \csname scr@#1@postsetname\endcsname + }% +} +\newcommand*{\@@setkomavar}{} +\long\def\@@setkomavar#1[#2]#3{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@var}{#3}% + \csname scr@#1@postsetvar\endcsname + \begingroup + \def\@tempa{#2}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#1@name}{#2}% + \csname scr@#1@postsetname\endcsname + \fi + }% +} +\newcommand*{\@komavar@err}[2]{% + \ClassError{scrlttr2% + }{% + KOMA-Script variable not defined% + }{% + You've tried to #1 the not defined KOMA-Script variable + `#2'.\MessageBreak + You have to define the variable using \string\newkomavar\space + before\MessageBreak + you do this.% + }% +} +\DeclareRobustCommand*{\usekomavar}{% + \kernel@ifstar {\@usekomaname}{\@usekomavar}} +\newcommand*{\@usekomavar}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@var}}% + }% +} +\newcommand*{\@usekomaname}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@name}}% + }% +} +\newcommand*{\ifkomavar}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\ifkomavar'.\MessageBreak + The command has been renamed to because of a\MessageBreak + recommendation of LaTeX3 team members.\MessageBreak + Please replace `\string\ifkomavar' by `\string\Ifkomavar'% + }% + \Ifkomavar +} +\DeclareRobustCommand*{\Ifkomavar}[1]{% + \scr@ifundefinedorrelax{scr@#1@var}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% +} +\newcommand*{\ifkomavarempty}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\ifkomavarempty'.\MessageBreak + The command has been renamed to because of a\MessageBreak + recommendation of LaTeX3 team members.\MessageBreak + Please replace `\string\ifkomavarempty' by `\string\Ifkomavarempty'% + }% + \Ifkomavarempty +} +\DeclareRobustCommand*{\Ifkomavarempty}{% + \begingroup + \kernel@ifstar {\@tempswatrue\@ifkomavarempty}% + {\@tempswafalse\@ifkomavarempty}% +} +\newcommand{\@ifkomavarempty}[1]{% + \Ifkomavar{#1}{% + \if@tempswa + \@ifundefined{scr@#1@name}{% + \aftergroup\@firstoftwo + }{% + \expandafter\ifx\csname scr@#1@name\endcsname\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + }% + \else + \expandafter\ifx\csname scr@#1@var\endcsname\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \fi + }{% + \@komavar@err{use}{#1}% + \aftergroup\@gobbletwo + }% + \endgroup +} +\newcommand*{\foreachkomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{\unexpanded{#2}{\reserved@a}}\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachkomavarifempty}[3]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}% + {\unexpanded{#2}{\reserved@a}}% + {\unexpanded{#3}{\reserved@a}}% + }\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachemptykomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}{\unexpanded{#2}{\reserved@a}}{}% + }\expandafter\reserved@a + \fi + }% +} +\newcommand*{\foreachnonemptykomavar}[2]{% + \@for \reserved@a:=#1\do{% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \edef\reserved@a{% + \noexpand\Ifkomavarempty{\reserved@a}{}{\unexpanded{#2}{\reserved@a}}% + }\expandafter\reserved@a + \fi + }% +} +%%% From File: $Id: scrkernel-pseudolengths.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\Ifplength}[1]{% + \@ifundefined{ltr@len@#1}{\@secondoftwo}{\@firstoftwo}% +} +\newcommand*{\if@plength}{% + \ClassWarning{\KOMAClassName}{% + Internal macro `\string\if@plength' is deprecated.\MessageBreak + Please use `\string\Ifplength' instead}% + \Ifplength +} +\newcommand*{\newplength}[1]{% + \@ifundefined{ltr@len@#1}{% + \expandafter\let\csname ltr@len@#1\endcsname=\z@% + }{% + \ClassError{scrlttr2% + }{% + pseudo-length \expandafter\string\csname ltr@len@#1\endcsname + already defined% + }{% + You've tried to define a new pseudo-length using\MessageBreak + \string\@newplength\space + or \string\newplength.\MessageBreak + Please, try another name% + }% + }% +} +\newcommand*{\@newplength}{% + \ClassWarning{\KOMAClassName}{% + Internal macro `\string\@newplength' is deprecated.\MessageBreak + Please use `\string\newplength' instead}% + \newplength +} +\newcommand*{\useplength}[1]{% + \glueexpr \csname ltr@len@#1\endcsname\relax}% +\newcommand*{\setlengthtoplength}[3][]{% + \setlength{#2}{\useplength{#3}}% + \setlength{#2}{#1#2}} +\newcommand*{\setplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{\glueexpr #3\relax}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa +} +\newcommand*{\@setplength}{% + \ClassWarning{\KOMAClassName}{% + Internal macro `\string\@setplength' is deprecated.\MessageBreak + Please use `\string\setplength' instead}% + \setplength +} +\newcommand*{\setplengthtowidth}[3][]{% + \begingroup + \settowidth{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtoheight}[3][]{% + \begingroup + \settoheight{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtodepth}[3][]{% + \begingroup + \settodepth{\@tempdima}{#3}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\setplengthtototalheight}[3][]{% + \begingroup + \settoheight{\@tempdima}{#3}% + \settodepth{\@tempdimb}{#3}% + \addtolength{\@tempdima}{\@tempdimb}% + \setlength{\@tempdima}{#1\@tempdima}% + \edef\@tempa{\noexpand\endgroup + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}% + }% + \@tempa +} +\newcommand*{\addtolengthplength}[3][]{% + \begingroup% + \setlengthtoplength[{#1}]{\@tempskipa}{#3}% + \edef\@tempa{\endgroup% + \noexpand\addtolength{#2}{\the\@tempskipa}}% + \@tempa% +} +\newcommand*{\addtoplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{\glueexpr #3\relax}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \addtolengthplength{\@tempskipa}{#2}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa% +} +\newcommand*{\@addtoplength}{% + \ClassWarning{\KOMAClassName}{% + Internal macro `\string\@addtoplength' is deprecated.\MessageBreak + Please use `\string\addtoplength' instead}% + \addtoplength} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\let\@BCOR =\relax +\let\@@BCOR =\relax +\let\@DIV =\relax +\let\@@DIV =\relax +\let\@headlines =\relax +\let\@@headlines =\relax +\let\x@paper =\relax +\let\x@@paper =\relax +\let\scr@pti@nerr@r =\relax +\RequirePackage{typearea}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\par@updaterelative}{% + \begingroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent + \aftergroup\parindent@update + \fi + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip + \aftergroup\parskip@update + \fi + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip + \aftergroup\parfillskip@update + \fi + \endgroup +} +\newcommand*{\parindent@update}{% + \scr@defaultunits\parindent\scr@parindent + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent\else + \def\reserved@b{\endgroup\edef\f@parindent{\the\parindent}}% + \fi + \reserved@b +} +\newcommand*{\parskip@update}{% + \scr@defaultunits\parskip\scr@parskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip\else + \def\reserved@b{\endgroup\edef\f@parskip{\the\parskip}}% + \fi + \reserved@b +} +\newcommand*{\parfillskip@update}{% + \scr@defaultunits\parfillskip\scr@parfillskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip\else + \def\reserved@b{\endgroup\edef\f@parfillskip{\the\parfillskip}}% + \fi + \reserved@b +} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +\IfLTXAtLeastTF{2021/05/01}{% + \AddToHook{selectfont}{\par@update}% + \AfterPackage{everysel}{% + \IfPackageAtLeastTF{everysel}{2021/01/18}{}{% + \ClassError{\KOMAClassName}{% + incompatible `everysel' detected + }{% + You are using an old version of `everysel' in combination with a + LaTeX\MessageBreak + version >= 2021/06/01 and KOMA-Script >= 3.33. This combination + is\MessageBreak + not supported.\MessageBreak + You could switch back to an older LaTeX using package + `latexrelease'.\MessageBreak + But I recommend to update `everysel'% + }% + }% + }% + \AfterPackage{tracefnt}{% + \IfPackageAtLeastTF{tracefnt}{2020/12/22}{}{% + \ClassError{\KOMAClassName}{% + incompatible `tracefnt' detected + }{% + `tracefnt' is a LaTeX base package and therefore should be updated + together\MessageBreak + with LaTeX kernel. So this should never happen! Please check + your\MessageBreak + LaTeX installation% + }% + }% + }% +}{% + \newcommand*{\scr@selectfont}{} + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \BeforePackage{everysel}{% + \AtBeginDocument{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else + \ClassWarningNoLine{\KOMAClassName}{% + discard change of \string\selectfont}% + \fi + \expandafter\let\csname selectfont \endcsname\scr@selectfont + }% + }% + \AfterPackage{everysel}{% + \scr@ifundefinedorrelax{@EverySelectfont@Init}{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont + \ClassWarningNoLine{\KOMAClassName}{% + \string\selectfont\space already changed}% + \else + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + \fi + }{% + \g@addto@macro\@EverySelectfont@Init{% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + }% + }% + }% + \AfterPackage{tracefnt}{% + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname + }% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update} + \newcommand*{\scr@new@selectfont}{} + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname +} +\newcommand*{\scr@defaultunits}[2]{% + \begingroup + \edef\@tempa{#2}% + \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil + \edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}% + \@tempa +} +\newcommand*{\scr@@defaultunits}{} +\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{% + \ifx\relax#3\relax + \scr@@@defaultunits#1{}#2minusminus\@nnil + \else + \scr@@@defaultunits#1{#2}#3minusminus\@nnil + \fi +} +\newcommand*{\scr@@@defaultunits}{} +\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{% + \ifx\relax#2\relax + \@defaultunits\@tempskipa#3pt\relax\@nnil + #1\@tempskipa + \else + \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil + #1\@tempskipa + \@defaultunits\@tempskipa#2pt\relax\@nnil + \advance#1\@tempskipa + \fi + \ifx\relax#4\relax\else + \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil + \advance#1\@tempskipa + \fi +} +\newcommand*{\@list@extra}{% + \ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi +} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\AfterPackage{amsthm}{% + \RequirePackage{xpatch}% + \xpatchcmd{\deferred@thm@head}{\addvspace{-\parskip}}{}{% + \ClassInfoNoLine{\KOMAClassName}{% + amsthm's \string\deferred@thm@head\space patched}% + }{% + \ClassWarningNoLine{\KOMAClassName}{% + cannot patch amsthm's \string\deferred@thm@head.\MessageBreak + This could result in wrong spacing before theorem\MessageBreak + environments defined by package `amsthm'% + }% + }% +} + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\set@tempdima@hw}{% + \setlength{\@tempdima}{\textwidth}% + \if@mincl + \addtolength{\@tempdima}{\marginparsep}% + \addtolength{\@tempdima}{\marginparwidth}% + \fi +} +\newcommand*{\pnumfont}{\normalfont\normalcolor} +\newcommand*{\headfont}{\normalfont\normalcolor\slshape} +\newcommand*{\footfont}{} +\newcommand*{\scr@fnt@pagenumber}{\pnumfont} +\aliaskomafont{pagination}{pagenumber} +\newcommand*{\scr@fnt@pageheadfoot}{\headfont} +\aliaskomafont{pagehead}{pageheadfoot} +\newcommand*{\scr@fnt@wrn@pagehead}[1]{% + `pagehead' is only an alias of `pageheadfoot'.\MessageBreak + Font of page foot will also be changed% +} +\newcommand*{\scr@fnt@pagefoot}{\footfont} +\newcommand*{% + \pagemark +}{% + {\usekomafont{pagenumber}{% + \pagename\nobreakspace + \thepage}}} +\renewcommand*{\ps@plain}{% + \renewcommand*{\@oddhead}{% + \vbox{\vbox{\hsize=\textwidth\hbox to\textwidth{% + \parbox[b]{\textwidth}{\strut + \ifnum\@pageat>-1 + \ifnum\@pageat<3 + \ifcase\@pageat\raggedright\or\centering\or\raggedleft\fi + \pagemark + \else + \hfill + \fi + \else + \hfill + \fi + }% + }% + \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi + }% + }% + }% + \let\@evenhead\@oddhead% + \renewcommand*{\@oddfoot}{% + \parbox[t]{\textwidth}{% + \if@fsl + {% + \raggedright% + \vskip-\baselineskip\vskip.4pt + \hrulefill\\ + }% + \fi + \ifnum\@pageat>2 + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark + \else + \hfill + \fi + }% + }% + \let\@evenfoot\@oddfoot +} +\newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@oddhead}{% + \vbox{% + \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\noindent + \usekomavar{nexthead}}}% + \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi% + }% + }% + \let\@evenhead\@oddhead + \renewcommand*{\@oddfoot}{% + \parbox[t]{\textwidth}{% + \if@fsl + {% + \raggedright% + \vskip-\baselineskip\vskip.4pt + \hrulefill\\ + }% + \fi + \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\footfont\noindent + \usekomavar{nextfoot}}}% + }% + }% + \let\@evenfoot\@oddfoot +} +\newcommand*{\ps@myheadings}{% + \ps@headings + \let\@mkboth\@gobbletwo +} +\pagestyle{plain} +\pagenumbering{arabic} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\renewcommand*\footnoterule{% + \normalsize\ftn@rule@test@values + \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax + \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi + {\usekomafont{footnoterule}{% + \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}% + \kern 2.6\p@} +\newcommand*{\ftn@rule@test@values}{% + \ifdim\ftn@rule@height <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + less than 0% + }% + \else + \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + greater than \the\dimexpr\skip\footins -2.6\p@\relax + }% + \fi + \fi + \ifdim\ftn@rule@width <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + less than 0pt% + }% + \else + \ifdim\ftn@rule@width >\columnwidth + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + greater than \string\columnwidth + }% + \fi + \fi +} +\newkomafont{footnoterule}{} +\newcommand*{\ftn@rule@width}{.4\columnwidth} +\newcommand*{\ftn@rule@height}{.4\p@} +\newcommand*{\setfootnoterule}[2][]{% + \IfArgIsEmpty{#1}{}{% + \renewcommand*{\ftn@rule@height}{#1}% + }% + \IfArgIsEmpty{#2}{}{% + \renewcommand*{\ftn@rule@width}{#2}% + }% + \ftn@rule@test@values +} +\newcommand\deffootnote[4][]{% + \expandafter\ifnum\scr@v@is@ge{3.22}\relax + \long\def\@makefntext##1{% + \ExecuteDoHook{footnote/text/begin}% + \raggedfootnote + \leftskip #2 + \l@addto@macro\@trivlist{% + \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi + }% + \parindent #3\noindent + \IfArgIsEmpty{#1}{}{% + \hskip \dimexpr #1-#2\relax + }% + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + \ExecuteDoHook{footnote/text/end}% + }% + \else + \ClassInfo{\KOMAClassName}{% + Using old \string\@makefntext\space due to compatibility + level\MessageBreak + less than 3.22}% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2}% + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1}% + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2}% + \parshape \tw@ #1 \@tempdima #2 \@tempdimb + }% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + }% + \fi + \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% +} +\newcommand*{\raggedfootnote}{} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\aliaskomafont{footnotenumber}{footnotelabel} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\aliaskomafont{footnotetext}{footnote} +\newcommand*\deffootnotemark[1]{% + \def\@makefnmark{\hbox{\ftntm@font{#1}}}% +} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\aliaskomafont{footnoteref}{footnotereference} +\aliaskomafont{footnotemark}{footnotereference} +\newcommand*{\FN@mf@check}{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern\multiplefootnoteseparator + \spacefactor\@x@sf\relax + \fi +} +\newcommand*{\scr@mf@prepare}{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax +} +\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{} +\newcommand{\scr@saved@footnotetext}{} +\let\scr@saved@footnotetext\@footnotetext +\renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname +} +\BeforePackage{footmisc}{% + \ifx\@footnotemark\scr@footnotemark + \let\@footnotemark\scr@saved@footnotemark + \fi + \let\@footnotetext\scr@saved@footnotetext +} +\BeforePackage{setspace}{% + \let\@footnotetext\scr@saved@footnotetext +} +\AfterPackage{setspace}{% + \let\scr@saved@footnotetext\@footnotetext + \renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname + }% +} +\newcommand*{\multiplefootnoteseparator}{% + \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup +} +\newcommand*{\multfootsep}{,} +\newcommand*{\multiplefootnotemarker}{3sp} +\newcommand*{\thefootnotemark}{\@thefnmark} +\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}} +\deffootnotemark{\textsuperscript{\thefootnotemark}} +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) + \setlength{\leftmargini}{2.5em} +\setlength{\leftmarginii}{2.2em} +\setlength{\leftmarginiii}{1.87em} +\setlength{\leftmarginiv}{1.7em} + \setlength{\leftmarginv}{1em} + \setlength{\leftmarginvi}{1em} +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelsep}{.5em} +\setlength{\labelwidth}{\leftmargini} +\addtolength{\labelwidth}{-\labelsep} +\@beginparpenalty=-\@lowpenalty +\@endparpenalty =-\@lowpenalty +\@itempenalty =-\@lowpenalty +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\p@enumii(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\usekomafont{labelitemi}{\textbullet}} +\newcommand*\labelitemii{\usekomafont{labelitemii}{\textendash}} +\newcommand*\labelitemiii{\usekomafont{labelitemiii}{\textasteriskcentered}} +\newcommand*\labelitemiv{\usekomafont{labelitemiv}{\textperiodcentered}} +\newenvironment{description}{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}% +}{% + \endlist +} +\newcommand*{\descriptionlabel}[1]{% + \hspace{\labelsep}\usekomafont{descriptionlabel}{#1}% +} +\newenvironment{labeling}[2][]{% + \def\sc@septext{#1}% + \list{}{\settowidth{\labelwidth}{{% + \usekomafont{labelinglabel}{#2% + \usekomafont{labelingseparator}{\sc@septext}}% + }}% + \leftmargin\labelwidth \advance\leftmargin by \labelsep + \let\makelabel\labelinglabel + }% +}{% + \endlist +} +\newcommand\labelinglabel[1]{% + \usekomafont{labelinglabel}{#1\hfil + \usekomafont{labelingseparator}{\sc@septext}}% +} +\newenvironment{verse}{% + \let\\=\@centercr + \list{}{\itemsep=\z@ + \itemindent=-1.5em + \listparindent=\itemindent + \rightmargin=\leftmargin + \advance\leftmargin by1.5em + }% + \item\relax +}{% + \endlist +} +\newenvironment{quotation}{% + \list{}{\listparindent 1em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@ + }% + \item\relax +}{% + \endlist +} +\newenvironment{quote}{% + \list{}{\rightmargin\leftmargin}% + \item\relax +}{% + \endlist +} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin +}{% + \advance\@listdepth\@ne + \endlist +} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi + \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi + \@addmargin +}{% + \if@twoside + \unskip\nobreak\Ifthispageodd{}{}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else + \ClassWarning{\KOMAClassName}{% + page break inside `addmargin*' environment.\MessageBreak + A `addmargin*' environment starting on page + \scr@addmargin@startpage\MessageBreak + ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak + This will result in potential wrong margins on\MessageBreak + every other page.\MessageBreak + So maybe you should change the `addmargin*'\MessageBreak + environment, that ends% + }% + \fi + \fi + \advance\@listdepth\@ne + \endlist +} +\newcommand*{\@addmargin}[2][\@tempa]{% + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\@tempskipa}{\topsep}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\@tempskipb}{\partopsep}% + \setlength{\partopsep}{\z@}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@}% + \advance\@listdepth\m@ne + }% + \expandafter\ifnum\scr@v@is@ge{3.22}% + \setlength{\topsep}{\@tempskipa}% + \setlength{\partopsep}{\@tempskipb}% + \fi + \item\is@thispageodd@setlabel\nobreak\ignorespaces +} +\newcommand*\descfont{\@gr@gsffamily\bfseries} +\newcommand*{\scr@fnt@descriptionlabel}{\descfont} +\newcommand*{\labelitemfont}{\normalfont} +\newcommand*\scr@fnt@itemizelabel{\labelitemfont} +\newkomafont{labelitemi}{\usekomafont{itemizelabel}} +\newkomafont{labelitemii}{\usekomafont{itemizelabel}\bfseries} +\newkomafont{labelitemiii}{\usekomafont{itemizelabel}} +\newkomafont{labelitemiv}{\usekomafont{itemizelabel}} +\newkomafont{labelinglabel}{} +\newkomafont{labelingseparator}{} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: body) + +\newkomavar{firsthead} +\setkomavar{firsthead}{% + \parbox[b]{\useplength{firstheadwidth}}% + {\centering\usekomafont{fromaddress}{% + \Ifkomavarempty{fromname}{}{% + {\usekomafont{fromname}% + {\ignorespaces\usekomavar{fromname}}\\[-8pt]} + {\usekomafont{fromrule}{\rule{\useplength{firstheadwidth}}{.4pt}}}\\ + }% + \Ifkomavarempty{fromaddress}{}{% + \ignorespaces\usekomavar{fromaddress}% + }% + }% + }% +} +\newcommand*{\scr@firsthead@postsetvar}{% + \KOMAExecuteOptions[.% + \KOMAClassFileName + ]{fromalign=no}% +} +\newcommand*{\@gen@firsthead}{% + \ifcase\@alignfrom + \setkomavar{firsthead}{% + \parbox[b]{\textwidth}{\raggedright + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + \if@logo + \llap{\usekomavar{fromlogo}}% + \fi + }% + \renewcommand*{\@alignfrom}{0}% + \or + \setkomavar{firsthead}{% + \parbox[b]{\textwidth}{\centering + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + }% + \renewcommand*{\@alignfrom}{1}% + \or + \setkomavar{firsthead}{% + \if@logo + \rlap{\usekomavar{fromlogo}}% + \fi + \parbox[b]{\textwidth}{\raggedleft + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + }% + }% + \renewcommand*{\@alignfrom}{2}% + \fi +} +\newcommand*{\@firsthead}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\@firsthead.\MessageBreak + \string\usekomavar{firsthead} should be used\MessageBreak + instead of \string\@firsthead + }% + \usekomavar{firsthead}% +} +\newcommand{\firsthead}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\firsthead.\MessageBreak + You should use \string\setkomavar{firsthead}\MessageBreak + instead of \string\firsthead + } + \setkomavar{firsthead}% +} +\newkomafont{foldmark}{} +\newkomafont{fromname}{} +\newkomafont{fromaddress}{} +\newkomafont{fromrule}{} +\newkomafont{backaddress}{\@gr@gsffamily} +\newkomafont{specialmail}{} +\newkomafont{priority}{\fontsize{10pt}{10pt}\sffamily\bfseries} +\newkomafont{prioritykey}{\fontsize{24.88pt}{24.88pt}\selectfont} +\newkomafont{PPlogo}{\sffamily\bfseries} +\newkomafont{PPdata}{\sffamily} +\newkomafont{addressee}{} +\newkomafont{toname}{} +\newkomafont{toaddress}{} +\newkomafont{refname}{\@gr@gsffamily\scriptsize} +\ifnum\scr@compatibility=\@nameuse{scr@v@2.97}\relax + \newkomafont{refvalue}{\sffamily\scriptsize} +\else + \newkomafont{refvalue}{} +\fi +\newkomafont{placeanddate}{} +\newkomafont{lettertitle}{\normalcolor\@gr@gsffamily\bfseries} + \aliaskomafont{title}{lettertitle}% +\newkomafont{lettersubject}{\normalfont\bfseries} + \aliaskomafont{subject}{lettersubject}% +\newplength{foldmarkhpos} +\newplength{foldmarkvpos} +\newplength{tfoldmarkvpos} +\newplength{mfoldmarkvpos} +\newplength{bfoldmarkvpos} +\newplength{lfoldmarkhpos} +\newplength{pfoldmarklength} +\newplength{tfoldmarklength} +\newplength{mfoldmarklength} +\newplength{bfoldmarklength} +\newplength{lfoldmarklength} +\newplength{foldmarkthickness} +\setplength{foldmarkthickness}{.2pt} +\newplength{toaddrvpos} +\newplength{backaddrheight} +\newplength{toaddrhpos} +\newplength{specialmailindent} +\newplength{specialmailrightindent} +\newplength{toaddrindent} +\newplength{PPheadheight} +\newplength{PPheadwidth} +\newplength{PPdatamatrixvskip} +\newplength{toaddrwidth} +\newplength{toaddrheight} +\newplength{locvpos} +\newplength{locwidth} +\newplength{lochpos} +\newplength{locheight} +\newplength{refvpos} +\newplength{refwidth} +\newplength{refhpos} +\newplength{refaftervskip} +\newplength{sigbeforevskip} +\newplength{sigindent} +\newplength{firstfootvpos} +\newplength{firstfootwidth} +\newplength{firstfoothpos} +\setplength{firstfoothpos}{\maxdimen} +\newplength{firstheadvpos} +\newplength{firstheadwidth} +\newplength{firstheadhpos} +\setplength{firstheadhpos}{\maxdimen} +\newplength{fromrulewidth} +\setplength{fromrulewidth}{0pt} +\newplength{fromrulethickness} +\setplength{fromrulethickness}{.4pt} +\newkomavar{firstfoot} +\newcommand*{\@firstfoot}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\@firstfoot.\MessageBreak + \string\usekomavar{firstfoot} should be used\MessageBreak + instead of \string\@firstfoot + }% + \usekomavar{firstfoot}% +} +\newcommand{\firstfoot}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\firstfoot.\MessageBreak + You should use \string\setkomavar{firstfoot}\MessageBreak + instead of \string\firstfoot + } + \setkomavar{firstfoot}% +} +\newcommand*{\move@topt}{% + \null\vskip -1in\vskip -\topmargin% + \vskip -\headheight\vskip -\headsep% + \vskip -\topskip% + \ignorespaces% +} +\newcommand*{\move@frompt}{% + \vskip 1in\vskip \topmargin% + \vskip \headheight\vskip \headsep% + \vskip \topskip% + \vskip -\baselineskip% + \ignorespaces% +} +\newcommand*{\move@topl}{% + \null\hskip -1in% + \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi + \ignorespaces% +} +\newcommand*{\move@frompl}{% + \hskip 1in% + \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi% + \ignorespaces% +} +\newcommand{\vb@t@z}[1]{{% + \setbox\z@\vbox to\z@{\color@begingroup #1\color@endgroup\vss}% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \setlength{\baselineskip}{\z@}% + \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}% + \box\z@\vskip-\@tempdima% + }% +} +\newcommand*{\@foldmark}[2]{% + \vb@t@z{\setlength{\@tempdima}{#1}% + \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}% + \vskip \@tempdima + \rlap{\move@topl\hskip\useplength{foldmarkhpos}% + \usekomafont{foldmark}{% + \rule{#2}{\useplength{foldmarkthickness}}}}}% + \ignorespaces +} +\newcommand*{\@hfoldmark}[1]{% + \begingroup + \@expandtwoargs\in@{#1}{\@usefolds}% + \ifin@ + \lowercase{% + \edef\@tempa{% + \noexpand\ifdim \noexpand\useplength{#1foldmarkvpos}=\noexpand\z@ + \noexpand\else + \noexpand\@foldmark{% + \noexpand\useplength{#1foldmarkvpos}% + }{% + \noexpand\useplength{#1foldmarklength}% + }% + \noexpand\fi + }% + }% + \@tempa + \fi + \endgroup +} +\newcommand*{\@vfoldmark}[1]{% + \begingroup + \ifdim \useplength{lfoldmarkhpos}=\z@\else + \@expandtwoargs\in@{#1}{\@usefolds}% + \ifin@ + \vb@t@z{% + \ifdim \useplength{foldmarkvpos}<\z@ + \nobreak\vskip \paperheight\nobreak + \fi + \vskip \useplength{foldmarkvpos}% + \vskip \useplength{foldmarkthickness}% + \rlap{\move@topl + \setlength{\@tempdima}{\useplength{lfoldmarkhpos}}% + \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}% + \hskip\@tempdima + \usekomafont{foldmark}{% + \rule{\useplength{foldmarkthickness}}% + {\useplength{lfoldmarklength}}% + }% + }% + }% + \ignorespaces + \fi + \fi + \endgroup +} +\newcommand*{\@foldmarks}{% + \if@fold% + \typeout{Foldmarks: yes}% + \move@topt + \ifdim \useplength{pfoldmarklength}=\z@ + \setplength{pfoldmarklength}{4mm}% + \fi + \ifdim \useplength{tfoldmarklength}=\z@ + \setplength{tfoldmarklength}{2mm}% + \fi + \ifdim \useplength{mfoldmarklength}=\z@ + \setplength{mfoldmarklength}{2mm}% + \fi + \ifdim \useplength{bfoldmarklength}=\z@ + \setplength{bfoldmarklength}{2mm}% + \fi + \ifdim \useplength{lfoldmarklength}=\z@ + \setplength{lfoldmarklength}{4mm}% + \fi + \begingroup + \@expandtwoargs\in@{P}{\@usefolds}% + \ifin@ + \@foldmark{.5\paperheight}{\useplength{pfoldmarklength}}% + \fi + \endgroup + \@hfoldmark{T}% + \@hfoldmark{M}% + \@hfoldmark{B}% + \@vfoldmark{L}% + \move@frompt + \else + \typeout{Foldmarks: no}% + \fi% +} +\newif\if@savevbox@warning\@savevbox@warningtrue +\newcommand{\@savevbox}[6][]{% + \begingroup% + \vbox to #2{#1#3}% + \if@savevbox@warning\@savevbox@warningfalse% + \setbox\z@\vbox{\color@begingroup #3\color@endgroup}% + \setlength{\@tempdima}{#2}% + \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}% + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \ClassWarning{scrlttr2}{% + #4 is \the\@tempdimb\space too high.\MessageBreak + You have to change `\string#5'\MessageBreak + or you have to define a smaller\MessageBreak + #4 using \string#6.\MessageBreak + Because of this too high #4\MessageBreak + you've got an overfull \string\vbox\space message% + }% + \fi% + \fi% + \endgroup% +} +\newcommand*{\@firstheadfootfield}{% + \if@firsthead + \typeout{Head of first page}% + \move@topt\vskip\useplength{firstheadvpos}% + \vb@t@z{% + \rlap{\move@topl + \ifdim\useplength{firstheadhpos}<\paperwidth + \ifdim \useplength{firstheadhpos}>-\paperwidth + \ifdim \useplength{firstheadhpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstheadhpos}% + \addtolengthplength[-]{\@tempskipa}{firstheadwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstheadhpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% + \fi + \hskip\@tempskipa + \vbox{\hsize\useplength{firstheadwidth}% + \setlength{\@tempskipa}{\useplength{toaddrvpos}}% + \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}% + \addtolength{\@tempskipa}{-\baselineskip}% + \setlength{\textwidth}{\useplength{firstheadwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \@savevbox{\@tempskipa}{\noindent\usekomavar{firsthead}% + \vskip \z@ \@plus .00001fil}% + {head of first page}{firstheadvpos}{\setkomavar}% + }% + }% + }% + \vskip-\useplength{firstheadvpos}\move@frompt + \else + \typeout{No head at first page}% + \fi + \move@topt + \if@firstfoot + \typeout{Foot of first page}% + \vb@t@z{% + \rlap{\move@topl + \ifdim\useplength{firstfoothpos}<\paperwidth + \ifdim \useplength{firstfoothpos}>-\paperwidth + \ifdim \useplength{firstfoothpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstfoothpos}% + \addtolengthplength[-]{\@tempskipa}{firstfootwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstfoothpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% + \fi + \hskip\@tempskipa + \vbox{\hsize\useplength{firstfootwidth}% + \vskip\useplength{firstfootvpos}% + \setlength{\textwidth}{\useplength{firstfootwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \vbox{\hsize\useplength{firstfootwidth}\noindent + \usekomavar{firstfoot}}% + }% + }% + }% + \else + \typeout{No foot at first page}% + \fi + \move@frompt% + {% + \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}% + \addtolength{\@tempdima}{\headheight}% + \addtolength{\@tempdima}{\headsep}% + \addtolength{\@tempdima}{\textheight}% + \addtolength{\@tempdima}{\footskip}% + \if@firstfoot + \addtolengthplength[-1]{\@tempdima}{firstfootvpos}% + \else + \addtolength{\@tempdima}{-\paperheight}% + \fi + \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}% + \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi + }% +} +\newcommand*{\@addrfield}{% + \ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax + \typeout{Address: No}% + \or + \begingroup% + \if@baddr + \Ifkomavarempty{backaddress}{% + \let\@tempa\@empty\let\@tempb\@empty + }{% + \def\@tempa{backaddress}\def\@tempb{,\space}% + }% + \else + \let\@tempa\@empty\let\@tempb\@empty + \fi + \ifcase \ltr@priority + \Ifkomavarempty{specialmail}{}{% + \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}% + }% + \or + \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% + \or + \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% + \fi + \typeout{Address (\@tempa\@tempb addressee)}% + \endgroup% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \rlap{\move@topl + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \hskip\@tempskipa + \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% + \@savevbox[\vss]{\useplength{backaddrheight}}{% + \hsize\useplength{toaddrwidth}% + \if@baddr + \Ifkomavarempty{backaddress}{}{{% + \noindent% + \backaddr@format{\scriptsize + {% + \def\\{\usekomavar{backaddressseparator}\@ogobble}% + \usekomafont{backaddress}% + {\usekomavar{backaddress}}% + }}}}% + \fi + }{backaddress}{backaddrheight}{\setkomavar}% + \ifcase \ltr@priority + \or + \setkomavar{specialmail}{% + {\usekomafont{priority}{% + {\usekomafont{prioritykey}{B}}% + -ECONOMY}}% + }% + \or + \setkomavar{specialmail}{% + {\usekomafont{priority}{% + {\usekomafont{prioritykey}{A}}% + -PRIORITY}}% + }% + \fi + \Ifkomavarempty{specialmail}{}{% + \vbox{\hsize\useplength{toaddrwidth}% + \noindent\hspace*{\useplength{specialmailindent}}% + \specialmail@format{% + \usekomafont{specialmail}\usekomavar{specialmail}}% + \hspace*{\useplength{specialmailrightindent}}}% + }% + \ifnum\@afieldmode=\@ne\vfil\fi% + \noindent\hskip\useplength{toaddrindent}% + \setlength{\@tempdima}{\useplength{toaddrwidth}}% + \addtolengthplength[-2]{\@tempdima}{toaddrindent}% + \vbox{\hsize\@tempdima\raggedright + \usekomafont{addressee}{% + {\usekomafont{toname}{\usekomavar{toname}\\}}% + {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% + \vfil\null\vskip-\baselineskip}% + {address field}{toaddrheight}% + {\begin{letter} or you\MessageBreak + have to define a smaller special purpose using\MessageBreak + \string\specialmail}% + }}}% + \vskip-\useplength{toaddrvpos}\move@frompt + \else + \begingroup% + \if@baddr + \let\@tempa\@empty\let\@tempb\@empty + \ifcase \@afieldmode\relax\or\or + \def\@tempa{PP-mode}\def\@tempb{,\space}% + \or + \def\@tempa{backgroundimage-mode}\def\@tempb{,\space}% + \or + \def\@tempa{image-mode}\def\@tempb{,\space}% + \fi + \Ifkomavarempty{backaddress}{}{% + \edef\@tempa{\@tempa\@tempb backaddress ignored}\def\@tempb{,\space}% + }% + \else + \let\@tempa\@empty\let\@tempb\@empty + \fi + \ifcase \ltr@priority + \Ifkomavarempty{specialmail}{}{% + \edef\@tempa{\@tempa\@tempb specialmail ignored}\def\@tempb{,\space}% + }% + \or + \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% + \or + \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% + \fi + \typeout{Address (\@tempa\@tempb addressee)}% + \endgroup% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \ifdim \useplength{toaddrindent}=\z@ + \setplength{toaddrindent}{8mm}% + \fi + \ifdim \useplength{PPheadheight}=\z@ + \setplength{PPheadheight}{20.74pt}% + \fi + \ifdim \useplength{PPheadwidth}=\z@ + \setplength{PPheadwidth}{42mm}% + \fi + \ifdim \useplength{PPdatamatrixvskip}=\z@ + \setplength{PPdatamatrixvskip}{9mm}% + \fi + \rlap{\move@topl + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \hskip\@tempskipa + \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% + \ifnum\@afieldmode=\tw@ + \vskip 2pt\relax + \hskip \useplength{toaddrindent}\relax + \fbox{% + \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% + \setlength{\parindent}{0pt}% + \hsize \dimexpr \useplength{PPheadwidth}-2\fboxsep\relax + \sbox\@tempboxa{% + {\fontsize{20.74pt}{20.74pt}\selectfont + \usekomafont{PPlogo}{P.P.}}\hskip 2mm% + }% + \dp\@tempboxa\z@ + \setlength{\@tempdima}{\hsize}% + \addtolength{\@tempdima}{-\wd\@tempboxa}% + \hbox{\box\@tempboxa + \vbox to \dimexpr + \useplength{PPheadheight}-2\fboxsep\relax{% + \vss\hsize\@tempdima + \raggedright + \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% + \usekomavar*{fromzipcode}\usekomavar{zipcodeseparator}% + \usekomavar{fromzipcode}\scr@endstrut\\ + \usekomavar{place}\scr@endstrut + \hfill + }% + }% + \vss + }% + }% + \hskip 1mm + \mbox{% + \vbox to \useplength{PPheadheight}{% + \addtolengthplength[-]{\hsize}{PPheadwidth}% + \addtolength{\hsize}{-1mm}% + \addtolengthplength[-2]{\hsize}{toaddrindent}% + \setlength{\parindent}{0pt}% + \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% + \hfill\usekomavar{PPcode} + \vss + \ifcase \ltr@priority + \or + \usekomafont{priority}{% + {\usekomafont{prioritykey}{B}}% + -ECONOMY\hss\vskip-\dp\strutbox + }% + \or + \usekomafont{priority}{% + {\usekomafont{prioritykey}{A}}% + -PRIORITY\hss\vskip-\dp\strutbox + }% + \fi + \vss + }% + }% + \vskip 1mm + \vskip-\ht\strutbox + \noindent\hskip\useplength{toaddrindent}% + \hrulefill% + \hskip\useplength{toaddrindent}% + \vbox to\z@{\hsize\z@ + \vskip \useplength{PPdatamatrixvskip}\relax + \llap{\usekomavar{PPdatamatrix}\hskip\useplength{toaddrindent}}% + \vss + }% + \else + \vskip 1mm + \noindent\expandafter\hskip\useplength{toaddrindent}% + \vbox to \useplength{PPheadheight}{% + \addtolengthplength[-2]{\hsize}{toaddrindent}% + \setlength{\parindent}{0pt}% + \usekomavar{addresseeimage}% + \vss + }% + \vskip 1mm + \vskip\dp\strutbox + \fi + \ifnum \@afieldmode=4 \else + \vfil% + \noindent\hskip\useplength{toaddrindent}% + \setlength{\@tempdima}{\useplength{toaddrwidth}}% + \addtolengthplength[-2]{\@tempdima}{toaddrindent}% + \vbox{\hsize\@tempdima + \Ifkomavarempty{PPdatamatrix}{}{% + \addtolength{\hsize}{-2mm}% + \settowidth\@tempdima{\usekomavar{PPdatamatrix}}% + \addtolength{\hsize}{-\@tempdima}% + }% + \raggedright + \usekomafont{addressee}{% + {\usekomafont{toname}{\usekomavar{toname}\\}}% + {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% + \fi + \vss\null}% + {address field}{toaddrheight}% + {\string\begin{letter}}% + }}}% + \vskip-\useplength{toaddrvpos}\move@frompt + \fi +} +\newcommand*{\specialmail@format}[1]{} +\let\specialmail@format\underline +\newcommand*{\@ogobble}[1][]{} +\newcommand*{\@locfield}{% + \ifdim \useplength{locwidth}=\z@% + \setplength{locwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% + \else + \addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% + \if@bigloc% + \setplength[.66667]{locwidth}{\useplength{locwidth}}% + \else% + \setplength[.5]{locwidth}{\useplength{locwidth}}% + \fi% + \fi% + \ifcase\@alignfrom + \or + \if@logo + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \fi + \or + \or + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \or + \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% + \fi + \Ifkomavarempty{location}{% + \typeout{Location field: empty}% + }{% + \typeout{Location field: yes}% + \ifdim \useplength{lochpos}=\z@% + \setplength{lochpos}{\useplength{toaddrhpos}}% + \fi + \ifdim \useplength{locvpos}=\z@% + \setplength{locvpos}{\useplength{toaddrvpos}}% + \fi + \ifdim \useplength{locheight}=\z@% + \setplength{locheight}{\useplength{toaddrheight}}% + \fi + \move@topt\vskip\useplength{locvpos}% + \vb@t@z{\noindent\makebox[0pt][l]{% + \move@topl + \setlengthtoplength[-]{\@tempskipa}{lochpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \else + \addtolengthplength{\@tempskipa}{locwidth}% + \fi + \hskip\@tempskipa + \makebox[0pt][r]{% + \@savevbox{\useplength{locheight}}{% + \noindent\hsize\useplength{locwidth}% + \ifcase\@alignfrom + \or + \if@logo + \Ifkomavarempty{fromlogo}{\null}{% + {\raggedleft\noindent\usekomavar{fromlogo}\\ + \vskip\parskip}\noindent}% + \fi + \or + \or + \if@logo + \Ifkomavarempty{fromlogo}{}{% + \raggedleft\usekomavar{fromlogo}\par}% + \fi + \raggedright + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}% + }% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + \or + \raggedleft + \if@logo + \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\par}% + \fi + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}% + }% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@mobilephone% + \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% + \fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \usekomafont{fromrule}{% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\useplength{locwidth}}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{% + \useplength{fromrulethickness}}}% + \fi + \\ + }% + \fi + \usekomavar{location}% + \vskip \z@ \@plus .00001fil}% + {location field}{locheight}{\setkomavar}% + }}% + }% + \vskip-\useplength{locvpos}\move@frompt + }% +} +\newcommand*{\do@set@reffield}{} +\newcommand*{\@set@reffield}[1]{% + \Ifkomavarempty{#1}{}{% + \settowidth{\@tempdima}{\strut\usekomafont{refvalue}\usekomavar{#1}}% + \sbox\z@{\strut\usekomafont{refname}\usekomavar*{#1}}% + \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi + \if@tempswa\enskip\hfill\fi + \parbox[t]{\@tempdima}{\noindent\raggedright + \strut\box\z@\\\usekomafont{refvalue}\strut\usekomavar{#1}}% + \@tempswatrue + }% +} +\newcommand*{\@test@reffield}[1]{% + \Ifkomavarempty{#1}{}{% + \@tempswatrue + }% +} +\newcommand*{\@set@reffields}{}% +\newcommand*{\addtoreffields}[1]{% + \l@addto@macro{\@set@reffields}{\do@set@reffield{#1}}% +} +\newcommand*{\removereffields}{% + \renewcommand*{\@set@reffields}{}% +} +\newcommand*{\defaultreffields}{% + \removereffields + \addtoreffields{yourref}% + \addtoreffields{yourmail}% + \addtoreffields{myref}% + \addtoreffields{customer}% + \addtoreffields{invoice}% +} +\defaultreffields +\newcommand*{\@datefield}{% + {% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \ifdim\useplength{refwidth}=\z@ + \if@refwide + \setplength{refwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \setplength{refhpos}{\useplength{toaddrhpos}}% + \else + \setplength[-]{refhpos}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-2]{refwidth}{\useplength{refhpos}}% + \else + \setplength{refwidth}{\textwidth}% + \setplength{refhpos}{\oddsidemargin}% + \addtoplength{refhpos}{1in}% + \fi + \else + \ifdim\useplength{refhpos}=\z@ + \begingroup + \setlength\@tempdima{\textwidth}% + \addtolengthplength[-]{\@tempdima}{refwidth}% + \setlength\@tempdimb{\oddsidemargin}% + \addtolength\@tempdimb{1in}% + \setlength{\@tempdimc}{\paperwidth}% + \addtolength{\@tempdimc}{-\textwidth}% + \divide\@tempdimb by 32768\relax + \divide\@tempdimc by 32768\relax + \ifdim\@tempdimc=\z@\else + \multiply\@tempdima by\@tempdimb + \divide\@tempdima by\@tempdimc + \fi + \edef\@tempa{\noexpand\endgroup + \noexpand\setplength{refhpos}{\the\@tempdima}}% + \@tempa + \fi\fi + \@tempswafalse + \move@topt\vskip\useplength{refvpos}% + \@tempswafalse + \let\do@set@reffield\@test@reffield + \@set@reffields + \ifcase \@datepos\else\@test@reffield{date}\fi + \if@tempswa + \@tempswafalse + \rlap{\noindent\move@topl\hskip\useplength{refhpos}% + \vbox{\hsize\useplength{refwidth}% + \noindent + \ifnum \@datepos=2 + \@set@reffields + \if@tempswa + \@tempswafalse + \@set@reffield{date}% + \fi + \fi + \let\do@set@reffield\@set@reffield + \@set@reffields% + \if@tempswa + \ifnum \@datepos=1 \@set@reffield{date}\fi% + \sbox\z@{\usekomafont{refname}\strutbox}% + \ifdim\ht\z@>\ht\strutbox + \ClassWarningNoLine{scrlttr2}{% + Font element `refname' should not be larger than + \string\normalsize!}% + \fi + \sbox\z@{\usekomafont{refvalue}\strutbox}% + \ifdim\ht\z@>\ht\strutbox + \ClassWarningNoLine{scrlttr2}{% + Font element `refvalue' should not be larger than + \string\normalsize!}% + \fi + \else + \ifcase \@datepos\else + \ifnum \@datepos=1 \enskip\hfill\fi + {\usekomafont{placeanddate}{\Ifkomavarempty{place}{}{% + \usekomavar{place}\usekomavar{placeseparator}}% + \usekomavar{date}}}% + \fi + \fi + }% + }% + \fi + \vskip\useplength{refaftervskip}% + }% +} +\newcommand*{\@makelettertitle}{% + \Ifkomavarempty{title}{% + \typeout{Title: no}% + }{% + \typeout{Title: yes}% + {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}% + \vskip\baselineskip% + }% +} +\newcommand*{\@subjfield}{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative + \Ifkomavarempty{subject}{% + \typeout{Subject: no}% + }{% + \ifx\raggedsubject\@empty + \ifdim\useplength{subjectvpos}=\z@ + \if@subjafter% + \typeout{Subject: after opening}% + \let\raggedsubject\centering% + \else + \typeout{Subject: before opening}% + \def\raggedsubject{\noindent\@hangfrom}% + \fi + \else + \typeout{Subject: at absolute vertical position}% + \def\raggedsubject{\noindent\@hangfrom}% + \fi + \fi + \ifdim\useplength{subjectvpos}=\z@ + \vskip\useplength{subjectbeforevskip}% + \begingroup + \else + \move@topt\vskip\useplength{subjectvpos}% + \expandafter\vb@t@z\expandafter{% + \fi + \usekomafont{lettersubject}% + \raggedsubject{\if@subj \subject@format{\strut\ignorespaces + \usekomavar*{subject}}\fi}% + \subject@format{\strut\ignorespaces\usekomavar{subject}}\par + \ifdim\useplength{subjectvpos}=\z@ + \endgroup + \vskip\useplength{subjectaftervskip}% + \else + }% + \vskip-\useplength{subjectvpos}\move@frompt + \fi + }% + }% +} +\newplength{subjectvpos} +\setplength{subjectvpos}{0pt} +\newplength{subjectaftervskip} +\setplength{subjectaftervskip}{2\baselineskip} +\newplength{subjectbeforevskip} +\setplength{subjectbeforevskip}{0pt} +\newkomavar{nexthead} +\setkomavar{nexthead}{% + \rlap{\parbox[c]{\textwidth}{\raggedright\strut + \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}% + \parbox[c]{\textwidth}{% + \centering\strut + \ifcase\@pageat + \rightmark + \or + \pagemark + \or + \rightmark + \fi\strut}% + \llap{\parbox[c]{\textwidth}{\raggedleft\strut + \ifcase\@pageat + \leftmark + \or + \rightmark + \or + \pagemark + \else + \rightmark + \fi\strut}}% +}% +\newcommand{\nexthead}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\nexthead.\MessageBreak + You should use \string\setkomavar{nexthead}\MessageBreak + instead of \string\nexthead + } + \setkomavar{nexthead}% +} +\newcommand*{\@nexthead}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\@nexthead.\MessageBreak + \string\usekomavar{nexthead} should be used\MessageBreak + instead of \string\@nexthead + }% + \usekomavar{nexthead}% +} +\newkomavar{nextfoot} +\setkomavar{nextfoot}{% + \ifnum\@pageat>2 + \parbox[c]{\textwidth}{% + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark% + }% + \fi +} +\newcommand{\nextfoot}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\nextfoot.\MessageBreak + You should use \string\setkomavar{nextfoot}\MessageBreak + instead of \string\nextfoot + } + \setkomavar{nextfoot}% +} +\newcommand*{\@nextfoot}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\@nextfoot.\MessageBreak + \string\usekomavar{nextfoot} should be used\MessageBreak + instead of \string\@nextfoot + }% + \usekomavar{nextfoot}% +} +\newenvironment{letter}[2][]{% + \if@twocolumn + \ClassWarning{\KOMAClassName}{% + twocolumn mode not supported.\MessageBreak + If you really want a twocolumned letter, you should\MessageBreak + use package `multicol' and add a `multicols'\MessageBreak + environment inside your letter.\MessageBreak + Switching back to oneside% + }% + \letter@restonecoltrue + \expandafter\onecolumn + \else + \letter@restonecolfalse + \fi + \cleardoubleoddemptypage + \raggedbottom + \scr@ifundefinedorrelax{letterpagestyle}{}{% + \ifx\letterpagestyle\@empty\else + \pagestyle{\letterpagestyle}% + \fi + }% + \refstepcounter{letter}% + \let\thisletter\@currentlabel + \setcounter{page}{\@ne}% + \setcounter{footnote}{0}% + \interlinepenalty=200\@processto{#2}% + \KOMAoptions{#1}% + \@beginletterhook +}{% + \stopletter + \let\@currentlabel\thisletter + \label{\thisletter.lastpage}% + \@@par\pagebreak\@@par% + \ifletter@restonecol\twocolumn\fi +} +\newif\ifletter@restonecol +\newcommand*{\thisletter}{outside.letter.undefined} +\newcommand*{\letterlastpage}{\pageref{\thisletter.lastpage}} +\newcommand*{\stopletter}{} +\newcommand{\@processto}[1]{% + \IfArgIsEmpty{#1}{% + }{% + \expandafter\@xproc#1\\\@nil + \ifx\reserved@b\@empty\else\expandafter\@xproc#1\@nil\fi + \edef\reserved@a{% + \noexpand\setkomavar{toname}{\unexpanded\expandafter{\reserved@a}}% + \noexpand\setkomavar{toaddress}{\unexpanded\expandafter{\reserved@b}}% + }\reserved@a + }% +} +\newcommand*{\@xproc}{} +\long\def\@xproc#1\\#2\@nil{% + \def\reserved@a{#1}\def\reserved@b{#2}% +} +\g@addto@macro\flushbottom{% + \AtEndLetter{\vskip \z@\@plus.0001fil\relax}% +} +\newcounter{letter} +\newcommand*{\letterpagestyle}{% +} +\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook} +\newcommand{\@beginletterhook}{} +\newcommand{\AtEndLetter}{\g@addto@macro\stopletter} +\newcommand*{\stopbreaks}{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +\DeclareRobustCommand*{\@nobreakvspace}{% + \kernel@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\newcommand*{\@nobreakcr}{\kernel@ifstar{\@normalcr*}{\@normalcr*}} +\newcommand*{\startbreaks}{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200\relax}} +\newcommand{\opening}[1]{% + \@PapersizeWarning + \@gen@firsthead + \@mkboth{\scr@fromname@var}{\scr@subject@var}% + \thispagestyle{empty}% + \noindent + \@foldmarks\@firstheadfootfield + \@addrfield\@locfield + \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi + \@datefield + \@makelettertitle + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi + {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% + {\setlength{\@tempdima}{\baselineskip}% + \addtolength{\@tempdima}{-\parskip}% + \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi + \@afterindentfalse\@afterheading +} +\newcommand*{\closing}[1]{{% + \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par + \nobreak\vskip\baselineskip + \stopbreaks\noindent + \settowidth{\@tempdima}{% + \begin{tabular}{@{}l@{}} + #1\tabularnewline + \usekomavar{signature}\tabularnewline + \end{tabular}% + }% + \setlength{\@tempdimb}{\hsize}% + \addtolength{\@tempdimb}{-\useplength{sigindent}}% + \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi + \hspace{\useplength{sigindent}}% + \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces + #1\ifhmode\scr@endstrut\\[\useplength{sigbeforevskip}] + \else\vskip \useplength{sigbeforevskip}\fi + \strut\ignorespaces + \usekomavar{signature}\ifhmode\scr@endstrut\fi}}\par + \nobreak\vskip\baselineskip +} +\newcommand\ps{\par% + \ifdim\parskip=\z@ + \vskip\baselineskip + \fi\startbreaks\noindent\ignorespaces +} +\newcommand*{\cc}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \Ifkomavarempty*{ccseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +\newcommand*{\encl}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \Ifkomavarempty*{enclseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +\newkomavar{place} +\newkomavar{location} +\newkomavar{specialmail} +\newkomavar{title} +\newkomavar{fromlogo} +\newkomavar{fromzipcode} +\newkomavar{PPcode} +\newkomavar{PPdatamatrix} +\newkomavar{addresseeimage} +\newkomavar{signature} +\setkomavar{signature}{\usekomavar{fromname}} +\newkomavar{backaddress} +\setkomavar{backaddress}{% + \Ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \Ifkomavarempty{fromaddress}{}{\\}}% + \Ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% + } +\newkomavar[\usekomavar{place}]{placeseparator} +\setkomavar{placeseparator}{,\nobreakspace} +\newkomavar[\subjectname]{subjectseparator} +\setkomavar{subjectseparator}{: } +\newkomavar[\ccname]{ccseparator} +\setkomavar{ccseparator}{: } +\newkomavar[\enclname]{enclseparator} +\setkomavar{enclseparator}{: } +\newkomavar{backaddressseparator} +\setkomavar{backaddressseparator}{,\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@phone\else\phonename\fi]{phoneseparator} +\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[% + \if@scrsymbols\scr@symbol@mobilephone\else\mobilephonename\fi +]{mobilephoneseparator} +\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}} +\newkomavar[\if@scrsymbols\scr@symbol@fax\else\faxname\fi]{faxseparator} +\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@email\else\emailname\fi]{emailseparator} +\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\scr@symbol@www\else\wwwname\fi]{urlseparator} +\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi} +\newkomavar{zipcodeseparator} +\setkomavar{zipcodeseparator}{\,--\,} +\newkomavar[\headfromname]{fromname} +\newkomavar[\usekomavar{fromname}]{fromaddress} +\newkomavar[\headtoname]{toname} +\newkomavar[\usekomavar{toname}]{toaddress} +\newkomavar[\usekomavar*{phoneseparator}% + \usekomavar{phoneseparator}]{fromphone} +\newkomavar[\usekomavar*{mobilephoneseparator}% + \usekomavar{mobilephoneseparator}]{frommobilephone} +\newkomavar[\usekomavar*{faxseparator}% + \usekomavar{faxseparator}]{fromfax} +\newkomavar[\usekomavar*{emailseparator}% + \usekomavar{emailseparator}]{fromemail} +\newkomavar[\usekomavar*{urlseparator}% + \usekomavar{urlseparator}]{fromurl} +\newkomavar[\bankname]{frombank} +\newkomavar[\yourrefname]{yourref} +\newkomavar[\yourmailname]{yourmail} +\newkomavar[\myrefname]{myref} +\newkomavar[\customername]{customer} +\newkomavar[\invoicename]{invoice} +\newkomavar[\usekomavar*{subjectseparator}% + \usekomavar{subjectseparator}]{subject} +\newkomavar[\datename]{date} +\setkomavar{date}{\@date} +\newcommand*{\scr@saved@date}{} +\let\scr@saved@date\date +\renewcommand*{\date}[1]{% + \ClassWarning{\KOMAClassName}{% + \string\date\space changes the internal \string\LaTeX\space date + only.\MessageBreak + You should note that this changes the default\MessageBreak + value of variable `date' only as long as nobody\MessageBreak + uses `\string\setkomavar` to change the content of\MessageBreak + variable `date'.\MessageBreak + Therefore, usage of `\string\setkomavar' is recommended\MessageBreak + to change the letter's date% + }% + \scr@saved@date{#1}% +} +%%% From File: $Id: scrkernel-addressfiles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\adrentry}[7]{% + \ClassWarning{\KOMAClassName}{% + command `\string\adrentry' is deprecated.\MessageBreak + You should use `\string\addrentry' with additional\MessageBreak + empty 8th argument}% + \addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}} +\newcommand*{\addrentry}[9]{\def\@tempa{#1}\ifx \@tempa\@empty \else + \def\@tempa{#2}\ifx \@tempa\@empty + \expandafter\def\csname #9\endcsname{#1\\#3}% + \else + \expandafter\def\csname #9\endcsname{#2 #1\\#3}% + \fi \fi} +\newcommand*{\adrchar}{% + \ClassWarning{\KOMAClassName}{% + command `\string\adrchar' is deprecated.\MessageBreak + You should use `\string\addrchar'} + \addrchar} +\newcommand*{\addrchar}[1]{} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrlttr2.cls'. diff --git a/texmf/tex/latex/koma-script/scrreport.cls b/texmf/tex/latex/koma-script/scrreport.cls new file mode 100644 index 000000000..9a56c8759 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrreport.cls @@ -0,0 +1,88 @@ +%% +%% This is file `scrreport.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,report,long') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrreprt% +} +\newcommand*{\ClassName}{% + report% +} +\newcommand*{\KOMALongClassName}{} +\edef\KOMALongClassName{scr\ClassName} +\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension} +\edef\KOMALongClassFileName{\KOMALongClassFileName} +\ProvidesClass{\KOMALongClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +\let\ClassName\relax +\expandafter\let\expandafter\KOMAClassName\expandafter\relax +\expandafter\LoadClassWithOptions\expandafter{\KOMAClassName} +\endinput +%% +%% End of file `scrreport.cls'. diff --git a/texmf/tex/latex/koma-script/scrreprt.cls b/texmf/tex/latex/koma-script/scrreprt.cls new file mode 100644 index 000000000..22fae5e45 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrreprt.cls @@ -0,0 +1,7665 @@ +%% +%% This is file `scrreprt.cls', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `class,report') +%% scrkernel-basics.dtx (with options: `class,load') +%% scrkernel-listsof.dtx (with options: `class,report,prepare') +%% scrkernel-tocstyle.dtx (with options: `class,report,prepare') +%% scrkernel-sections.dtx (with options: `class,report,prepare') +%% scrkernel-compatibility.dtx (with options: `class,report,init') +%% scrkernel-typearea.dtx (with options: `class,report,init') +%% scrkernel-compatibility.dtx (with options: `class,report,option') +%% scrkernel-miscellaneous.dtx (with options: `class,report,option') +%% scrkernel-language.dtx (with options: `class,report,option') +%% scrkernel-fonts.dtx (with options: `class,report,option') +%% scrkernel-typearea.dtx (with options: `class,report,options') +%% scrkernel-paragraphs.dtx (with options: `class,report,option') +%% scrkernel-title.dtx (with options: `class,report,option') +%% scrkernel-tocstyle.dtx (with options: `class,report,option') +%% scrkernel-sections.dtx (with options: `class,report,option') +%% scrkernel-pagestyles.dtx (with options: `class,report,option') +%% scrkernel-floats.dtx (with options: `class,report,option') +%% scrkernel-footnotes.dtx (with options: `class,report,option') +%% scrkernel-listsof.dtx (with options: `class,report,option') +%% scrkernel-bibliography.dtx (with options: `class,report,option') +%% scrkernel-index.dtx (with options: `class,report,option') +%% scrkernel-listsandtabulars.dtx (with options: `class,report,option') +%% scrkernel-sections.dtx (with options: `class,report,execoption') +%% scrkernel-miscellaneous.dtx (with options: `class,report,execoption') +%% scrkernel-compatibility.dtx (with options: `class,report,body') +%% scrkernel-fonts.dtx (with options: `class,report,body') +%% scrkernel-language.dtx (with options: `class,report,body') +%% scrkernel-typearea.dtx (with options: `class,report,body') +%% scrkernel-paragraphs.dtx (with options: `class,report,body') +%% scrkernel-title.dtx (with options: `class,report,body') +%% scrkernel-tocstyle.dtx (with options: `class,report,body') +%% scrkernel-tocstyle.dtx (with options: `class,report,style,part') +%% scrkernel-tocstyle.dtx (with options: `class,report,style,chapter') +%% scrkernel-tocstyle.dtx (with options: `class,report,style,section') +%% scrkernel-tocstyle.dtx (with options: `class,report,style,default') +%% scrkernel-sections.dtx (with options: `class,report,body') +%% scrkernel-miscellaneous.dtx (with options: `class,report,body') +%% scrkernel-pagestyles.dtx (with options: `class,report,body') +%% scrlayer.dtx (with options: `class,report,body') +%% scrkernel-floats.dtx (with options: `class,report,body') +%% scrkernel-footnotes.dtx (with options: `class,report,body') +%% scrkernel-listsof.dtx (with options: `class,report,body') +%% scrkernel-bibliography.dtx (with options: `class,report,body') +%% scrkernel-index.dtx (with options: `class,report,body') +%% scrkernel-listsandtabulars.dtx (with options: `class,report,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@clsextension}{\@clsextension} +\AtBeginDocument{% + \let\scr@clsextension\@clsextension +} +\newcommand*{\KOMAClassName}{% + scrreprt% +} +\newcommand*{\KOMAClassFileName}{\KOMAClassName.\@clsextension} +\edef\KOMAClassFileName{\KOMAClassFileName} +\newcommand*{\ClassName}{% + report% +} +\ProvidesClass{\KOMAClassName}[% + 2022/07/04 v3.37 KOMA-Script + document class (\ClassName)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: prepare) +\RequirePackage{tocbasic}[% + 2022/07/04 v3.37 KOMA-Script +] +\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}% +\AtAddToTocList[ToC]{\setuptoc{\@currext}{onecolumn}}% +\addtotoclist[ToC]{toc} +\Ifstr{\ext@toc}{toc}{}{% + \expandafter\addtotoclist + \expandafter[\expandafter T\expandafter o\expandafter C\expandafter ]% + \expandafter{\ext@toc}% +} +\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}% +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +\newif\if@openright +\@openrightfalse +\newcommand*{\scr@dotchangeatdocument}[1]{% + \ClassError{\KOMAClassName}{% + change of end dot feature after \string\begin{document}% + }{% + You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak + but this option is only allowed at the document preamble.\MessageBreak + See KOMA-Script manual for more information about.% + }% +} +\newif\if@altsecnumformat\@altsecnumformatfalse +\newif\if@autodot +\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue} +\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse} +\@autodotfalse +\newcommand*{\scr@altsecnumhook}{} +\AtBeginDocument{\scr@altsecnumhook} +\newcommand*{\scr@altsecnumhooktrue}{% + \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue +} +\newcommand*{\scr@altsecnumhookfalse}{% + \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse +} +\newcommand*{\scr@osectarg}{0} +\newcommand*{\scr@activate@xsection}[1]{% + \renewcommand*{\scr@osectarg}{#1}% +} +\IfLTXAtLeastTF{2020/10/01}{\NewHook{\KOMAClassName/appendix}}{} +\newcommand*{\size@part}{} +\newcommand*{\scr@fnt@part}{\size@part} +\newcommand*{\size@partnumber}{} +\newcommand*{\scr@fnt@partnumber}{\size@partnumber} +\aliaskomafont{partprefix}{partnumber} +\newcommand*{\scr@part@beforeskip}{% + \z@ \@plus 1fil + \baselineskip +} +\newcommand*{\scr@part@innerskip}{20\p@} +\newcommand*{\scr@part@afterskip}{% + \z@ \@plus 1fil +} +\newcommand*{\scr@part@style}{part} +\newcommand*{\partheadstartvskip}{% + \null\vskip-\baselineskip\vskip\@tempskipa +} +\newcommand*{\partheadmidvskip}{% + \par\nobreak + \vskip\@tempskipa +} +\newcommand*{\partheadendvskip}{% + \vskip\@tempskipa\newpage +} +\newcommand*{\partheademptypage}{% + \if@twoside\if@openright + \null% + \thispagestyle{empty}% + \newpage + \fi\fi +} +\newif\if@chapterprefix +\newcommand*{\size@chapter}{} +\newcommand*{\scr@fnt@chapter}{\size@chapter} +\newcommand*{\size@chapterprefix}{\size@chapter} +\newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix} +\newcommand*{\scr@chapter@beforeskip}{\z@} +\let\scr@chapter@beforeskip\z@ +\newcommand*{\scr@chapter@afterskip}{\z@} +\let\scr@chapter@afterskip\z@ +\newcommand*{\scr@chapter@innerskip}{\z@} +\let\scr@chapter@innerskip\z@ +\newcommand*{\scr@chapter@style}{chapter} +\newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} +\newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} +\newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa} +\newcommand*{\size@section}{} +\newcommand*{\scr@fnt@section}{\size@section} +\newcommand*{\size@subsection}{} +\newcommand*{\scr@fnt@subsection}{\size@subsection} +\newcommand*{\size@subsubsection}{} +\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection} +\newcommand*{\size@paragraph}{} +\newcommand*{\scr@fnt@paragraph}{\size@paragraph} +\newcommand*{\size@subparagraph}{} +\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph} +\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries} +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\newcommand* + {\scr@compatibility}{\scr@v@last} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\newif\if@scr@emulatestandardclasses +\let\scr@emulatestandardclassestrue\relax +\let\scr@emulatestandardclassesfalse\relax +\DeclareOption{emulatestandardclasses}{% + \let\if@scr@emulatestandardclasses\iftrue + \KOMAExecuteOptions{% + fontsize=10pt,% + headings=standardclasses,% + cleardoublepage=current + }% + \newcommand*{\defaultpapersize}{letter}% + \AtEndOfClass{% + \setkomafont{descriptionlabel}{\bfseries}% + \setkomafont{dictum}{\normalfont\small}% + \setkomafont{caption}{}% + \setkomafont{captionlabel}{}% + \setcapindent{0pt}% + \RequirePackage[pagestyleset=standard,markcase=upper]{scrlayer-scrpage}% + \PreventPackageFromLoading{scrpage2}% + \setkomafont{pagenumber}{\normalfont}% + \setkomafont{pageheadfoot}{\normalfont}% + \cfoot[\pagemark]{}% + \pagestyle{plain}% + }% +} +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \ClassWarningNoLine{\KOMAClassName}{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{version}{first}% + }{% + \ClassInfoNoLine{\KOMAClassName}{% + Switching compatibility level to `#1'% + }% + \edef\scr@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \ClassWarningNoLine{\KOMAClassName}{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\KOMA@kav@add{.\KOMAClassFileName}{version}{last} +\AtEndOfClass{% + \KOMA@key{version}[]{% + \ClassError{\KOMAClassName}{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + class.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@v@is@lt}[1]{% + \scr@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@gt}[1]{% + \scr@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@le}[1]{% + \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@v@is@ge}[1]{% + \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{draft}[true]{% + \KOMA@set@ifkey{draft}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{draft}{false} +\KOMA@DeclareStandardOption +{final}{draft=false} +\KOMA@key{overfullrule}[true]{% + \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{5pt}% + \else + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{draft}{@tempswa}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{overfullrule}{@tempswa}% + \setlength{\overfullrule}{\z@}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles} +\newcommand*{\@gr@gsffamily}{% + \if@egregdoesnotlikesansseriftitles\else\sffamily\fi +} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\providecommand*\@ptsize{% + 11% +} +\newcommand*{\@pt@scan}{% + \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan% +} +\newcommand*{\@pt@@scan}{} +\def\@pt@@scan #1pt#2\@pt@@scan{% + \Ifstr{#2}{pt}{% + \Ifnumber{#1}{% + \Ifstr{#1}{10}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{11}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{12}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }% + }% + } + }{\@headlines}% + }{\@headlines}% +} +\providecommand*{\@fontsizefilebase}{scrsize} +\KOMA@key{fontsize}{% + \scr@ifundefinedorrelax{changefontsizes}{% + \@defaultunits\@tempdima#1pt\relax\@nnil + \edef\@ptsize{#1}% + }{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \noexpand\ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{fontsize}{#1}% +} +\DeclareOption{enabledeprecatedfontcommands}{% + \ClassWarningNoLine{\KOMAClassName}{% + deprecated option `enabledeprecatedfontcommands'.\MessageBreak + Note, that this option was already depreacted when\MessageBreak + it has been defined. Support for old font commands\MessageBreak + has been removed from KOMA-Script more than one\MessageBreak + decade ago. It is not recommended to use them any\MessageBreak + longer. Therefore usage of this class option also\MessageBreak + is not recommended% + }% + \let\scr@defineobsoletefonts\@ne +} +\scr@ifundefinedorrelax{scr@defineobsoletefonts}{% + \let\scr@defineobsoletefonts\z@ +}{} +\BeforePackage{tex4ht}{% + \let\scr@defineobsoletefonts\thr@@ +} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\KOMA@key{twoside}[true]{% + \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi% + \Ifstr{#1}{semi}{% + \@twosidetrue + \FamilyKeyStateProcessed + }{% + \def\FamilyElseValue{, `semi'}% + \KOMA@set@ifkey{twoside}{% + @twoside% + }{#1}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twoside\flushbottom + \else + \if@twocolumn\sloppy\flushbottom\else\raggedbottom\fi + \fi + \fi + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{twoside}{#1}% + \fi +} +\KOMAExecuteOptions{twoside=false} +\KOMA@DeclareStandardOption% + {oneside}{twoside=false} +\KOMA@key{twocolumn}[true]{% + \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi% + \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{twocolumn}{@twocolumn}% + \if@atdocument\expandafter\@firstofone + \else\@ifpackageloaded{typearea}{\expandafter\@firstofone} + {\expandafter\AtEndOfClass}\fi + {\expandafter\ifnum\scr@v@is@ge{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else + \onecolumn + \if@twoside\flushbottom\else + \raggedbottom + \fi + \fi + \fi}% + \fi +} +\AtEndOfClass{% + \expandafter\ifnum\scr@v@is@lt{3.17}% + \if@twocolumn\twocolumn\sloppy\flushbottom + \else\onecolumn\if@twoside\flushbottom\else\raggedbottom\fi\fi + \fi +} +\KOMAExecuteOptions{twocolumn=false} +\KOMA@DeclareStandardOption% + {onecolumn}{twocolumn=false} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{% + \Ifstr{#1}{}{% + \Ifstr{#3}{BCOR}{% + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifdimen{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifdimen{#2}{\PassOptionsToPackage{BCOR#2}{typearea}}{\OptionNotUsed}% + }% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% +} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{% + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \Ifstrstart{#2}{=}{% + \edef\reserved@a{\noexpand\Ifnumber{\@gobble#2}}% + \reserved@a{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }{% + \Ifnumber{#2}{\PassOptionsToPackage{DIV#2}{typearea}}{\OptionNotUsed}% + }% + \else\scr@pti@nerr@r\fi + \else\@BCOR\fi +} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines% +} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \PassOptionsToPackage{#1headlines}{typearea} + \else\@DIV\fi +} +\newcommand*{\x@paper}{% + \expandafter\x@@paper\CurrentOption paper\x@@paper% +} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{% + \Ifstr{#3}{paper}{% + \Ifnumber{#2}{% + \Ifstr{#1}{a}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{b}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{c}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{% + \Ifstr{#1}{d}{% + \PassOptionsToPackage{#3=#1#2}{typearea}% + }{\scr@pti@nerr@r}% + }% + }% + }% + }{\scr@pti@nerr@r}% + }{% + \@pt@scan + }% +} +\newcommand*{\scr@pti@nerr@r}{ + \OptionNotUsed +} +\DeclareOption*{% + \x@paper} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\setparsizes}[3]{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% + \def\scr@parindent{#1}% + \def\scr@parskip{#2}% + \def\scr@parfillskip{#3}% + \def\par@update{% + \if@atdocument\let\par@update\default@par@update\fi + \par@updaterelative + }% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{false}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{never}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full*}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half-}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half+}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half*}% +} +\newcommand*{\f@parindent}{\the\parindent} +\newcommand*{\f@parskip}{\the\parskip} +\newcommand*{\f@parfillskip}{\the\parfillskip} +\newcommand*{\scr@parindent}{1em} +\newcommand*{\scr@parskip}{\z@} +\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil} +\AtEndOfClass{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% +} +\newcommand*{\par@update}{} +\let\par@update\relax +\newcommand*{\default@par@update}{} +\let\default@par@update\relax +\AtBeginDocument{\par@update} +\KOMA@key{parskip}[true]{% + \begingroup + \KOMA@set@ncmdkey{parskip}{@tempa}{% + {never}{0},% + {false}{1},{off}{1},{no}{1},% + {full-}{2},% + {half-}{3},% + {full}{4},{true}{4},{on}{4},{yes}{4},% + {half}{5},% + {full+}{6},% + {half+}{7},% + {full*}{8},% + {half*}{9},% + {relative}{10},% + {absolute}{11}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \ifcase\number\@tempa% 0 + \endgroup + \setparsizes{1em}{\z@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{never}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 1 + \endgroup + \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 2 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 3 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + \z@ \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half-}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 4 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 5 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + 1em \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 6 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .3333\linewidth\@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 7 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .3333\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half+}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 8 + \endgroup + \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 9 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .25\linewidth \@plus 1fil}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half*}% + \if@atdocument\AfterKOMAoptions{\selectfont}\fi + \or% 10 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{relative}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\par@updaterelative + \fi + \let\default@par@update=\par@updaterelative + }% + \or%11 + \endgroup + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}% + \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}% + \KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}% + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\relax + \fi + \let\default@par@update=\relax + }% + \else% should never be + \endgroup + \fi + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi +} +\KOMA@DeclareDeprecatedOption{parskip-}{parskip=full-} +\KOMA@DeclareDeprecatedOption{parskip+}{parskip=full+} +\KOMA@DeclareDeprecatedOption{parskip*}{parskip=full*} +\KOMA@DeclareDeprecatedOption{halfparskip}{parskip=half} +\KOMA@DeclareDeprecatedOption{halfparskip-}{parskip=half-} +\KOMA@DeclareDeprecatedOption{halfparskip+}{parskip=half+} +\KOMA@DeclareDeprecatedOption{halfparskip*}{parskip=half*} +\KOMA@DeclareDeprecatedOption{parindent}{parskip=false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{false} +\KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute} +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@titlepage +\@titlepagetrue +\newif\if@titlepageiscoverpage +\KOMA@key{titlepage}[true]{% + \Ifstr{#1}{firstiscover}{% + \@titlepagetrue + \@titlepageiscoverpagetrue + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + }{% + \def\FamilyElseValue{, `firstiscover'}% + \KOMA@set@ifkey{titlepage}{@titlepage}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@remove{.% + \KOMAClassFileName + }{titlepage}{firstiscover}% + \KOMA@kav@replacebool{.% + \KOMAClassFileName + }{titlepage}{@titlepage}% + \@titlepageiscoverpagefalse + \fi + }% +} +\KOMA@kav@xadd{.% + \KOMAClassFileName +}{titlepage}{\if@titlepage true\else false\fi} +\KOMA@DeclareStandardOption% + {notitlepage}{titlepage=false} +\KOMA@ifkey{abstract}{@abstrt} +\KOMA@DeclareDeprecatedOption{abstracton}{abstract=true} +\KOMA@DeclareDeprecatedOption{abstractoff}{abstract=false} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{open}{% + \KOMA@set@ncmdkey{open}{@tempa}{% + {any}{0},% + {right}{1},% + {left}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{open}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openany}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openright}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openleft}% + \ifcase \@tempa\relax + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}% + \@openrightfalse + \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% + \or + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}% + \@openrighttrue + \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% + \or + \KOMA@kav@add{.\KOMAClassFileName}{headings}{openleft}% + \@openrighttrue + \renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}% + \fi + \fi +} +\KOMA@DeclareStandardOption{openright}{open=right} +\KOMA@DeclareStandardOption{openany}{open=any} +\KOMA@key{numbers}{% + \KOMA@set@ncmdkey{numbers}{@tempa}{% + {autoendperiod}{0},{autoenddot}{0},{auto}{0},% + {endperiod}{1},{withendperiod}{1},{periodatend}{1},% + {enddot}{1},{withenddot}{1},{dotatend}{1},% + {noendperiod}{2},{noperiodatend}{2},% + {noenddot}{2},{nodotatend}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}% + \ifcase \@tempa\relax + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\@empty + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhooktrue + \fi + \or + \if@atdocument\scr@dotchangeatdocument{#1}\else + \let\scr@altsecnumhook\scr@altsecnumhookfalse + \fi + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot} +\KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot} +\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage} +\@scr@autoloadbookmarkpackagetrue +\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true} +\AfterAtEndOfPackage{hyperref}{% + \AtBeginDocument{% + \@ifpackageloaded{bookmark}{}{% + \if@scr@autoloadbookmarkpackage + \scr@ifundefinedorrelax{Hy@driver}{% + \ClassWarning{\KOMAClassName}{% + `hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak + This should not happen!\MessageBreak + Maybe `hyperref' not loaded or unknown version?% + }% + }{% + \Ifstr{\Hy@driver}{hdvips}{% + \providecommand*{\BookmarkDriverDefault}{dvips}% + }{% + \Ifstr{\Hy@driver}{hdvipdfm}{% + \providecommand*{\BookmarkDriverDefault}{dvipdfm}% + }{% + \Ifstr{\Hy@driver}{hdvipson}{% + \providecommand*{\BookmarkDriverDefault}{dvipsone}% + }{% + \Ifstr{\Hy@driver}{htexture}{% + \providecommand*{\BookmarkDriverDefault}{textures}% + }{% + }% + }% + }% + }% + }% + \ClassInfo{\KOMAClassName}{% + loading recommended package `bookmark'.\MessageBreak + Using `bookmark' together with `hyperref' is + recommended,\MessageBreak + because of handling of possible bookmark level gaps.\MessageBreak + You can avoid loading `bookmark' with KOMA-Script + option\MessageBreak + `bookmarkpackage=false' before \string\begin{document} + and\MessageBreak + you can avoid this message adding:\MessageBreak + \space\space\string\usepackage + \scr@ifundefinedorrelax{BookmarkDriverDefault}{}{% + [\BookmarkDriverDefault]% + }{bookmark}\MessageBreak + before \string\begin{document}% + }% + \@ifundefined{es@quoting}{% + \RequirePackage{bookmark}% + }{% + \ifx\es@quoting\activatequoting + \ClassInfo{\KOMAClassName}{% + temporary deactivation of babel-spanish quoting + }% + \deactivatequoting + \RequirePackage{bookmark}% + \ClassInfo{\KOMAClassName}{% + reactivation of babel-spanish quoting + }% + \activatequoting + \else + \RequirePackage{bookmark}% + \fi + }% + \ifx\@beginmainauxhook\relax + \else + \if@filesw + \ClassWarning{\KOMAClassName}{% + seems someone has broken package `auxhook'.\MessageBreak + Usually this happens, if `auxhook' is loaded or used\MessageBreak + implicitly or explicitly by patching + \string\document% + \scr@ifundefinedorrelax{AtEndPreamble}{}{% + \MessageBreak + or via etoolbox command \string\AtEndPreamble% + }.\MessageBreak + Trying an emergency workaround.\MessageBreak + You can avoid this warning adding:\MessageBreak + \space\space\string\usepackage{auxhook}\MessageBreak + before \string\begin{document}% + }% + \@beginmainauxhook + \fi + \fi + \fi + }% + }% +} +\KOMA@key{chapterprefix}[true]{% + \KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.\KOMAClassFileName}% + {chapterprefix}{@chapterprefix}% + \KOMA@kav@remove{.\KOMAClassFileName}% + {headings}{twolinechapter}% + \KOMA@kav@remove{.\KOMAClassFileName}% + {headings}{onelinechapter}% + \KOMA@kav@xadd{.\KOMAClassFileName}% + {headings}{% + \if@chapterprefix twolinechapter\else onelinechapter\fi + }% + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}% +\KOMA@DeclareDeprecatedOption{nochapterprefix}{chapterprefix=false} +\IfLTXAtLeastTF{2020/10/01}{% + \KOMA@key{appendixprefix}[true]{% + \Ifstr{#1}{default}{% + \KOMA@kav@removekey{.\KOMAClassFileName}{appendixprefix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \IfHookEmptyTF{\KOMAClassName/appendix}{}{% + \RemoveFromHook{\KOMAClassName/appendix}[appendixprefix]% + }% + \FamilyKeyStateProcessed + }{% + \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \IfHookEmptyTF{\KOMAClassName/appendix}{}{% + \RemoveFromHook{\KOMAClassName/appendix}[appendixprefix]% + }% + \if@tempswa + \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}% + \AddToHook{\KOMAClassName/appendix}[appendixprefix]% + {\@chapterprefixtrue}% + \else + \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}% + \AddToHook{\KOMAClassName/appendix}[appendixprefix]% + {\@chapterprefixfalse}% + \fi + \fi + }% + }% +}{% + \KOMA@key{appendixprefix}[true]{% + \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% + \if@tempswa + \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}% + \@ifundefined{appendixmore}{% + \def\appendixmore{\@chapterprefixtrue}% + }{% + \l@addto@macro\appendixmore{\@chapterprefixtrue}% + }% + \else + \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}% + \@ifundefined{appendixmore}{% + \def\appendixmore{\@chapterprefixfalse}% + }{% + \l@addto@macro\appendixmore{\@chapterprefixfalse}% + }% + \fi + \fi + }% +} +\KOMA@DeclareDeprecatedOption{noappendixprefix}{appendixprefix=false} +\KOMA@ifkey{chapterentrydots}{@chapterentrywithdots} +\KOMA@key{headings}{% + \KOMA@set@ncmdkey{headings}{@tempa}{% + {big}{0},% + {normal}{1},% + {small}{2},% + {openany}{3},% + {openright}{4},% + {openleft}{5},% + {twolinechapter}{6},{chapterprefix}{6},{chapterwithprefix}{6},% + {chapterwithprefixline}{6},% + {onelinechapter}{7},{nochapterprefix}{7},{chapterwithoutprefix}{7},% + {chapterwithoutprefixline}{7},% + {twolineappendix}{8},{appendixprefix}{8},{appendixwithprefix}{8},% + {appendixwithprefixline}{8},% + {onelineappendix}{9},{noappendixprefix}{9},{appendixwithoutprefix}{9},% + {appendixwithoutprefixline}{9},% + {optiontotocandhead}{10},{optiontoheadandtoc}{10},% + {optiontotoc}{11},% + {optiontohead}{12},% + {standardclasses}{13}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax% big + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{big}% + \renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\Huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\huge}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % normal + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}% + \renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\LARGE}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % small + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{small}% + \renewcommand*{\scr@chapter@beforeskip}{-2.8\baselineskip-\parskip}% + \renewcommand*{\scr@chapter@afterskip}{% + 1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip + }% + \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{% + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa + \else\vskip\@tempskipa\fi + }% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\LARGE}% + \setkomafont{partnumber}{\LARGE}% + \setkomafont{chapter}{\Large}% + \setkomafont{chapterprefix}{\size@chapter}% + \setkomafont{section}{\large}% + \setkomafont{subsection}{\normalsize}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \or % openany + \KOMAoptions{open=any}% + \or % openright + \KOMAoptions{open=right}% + \or % openleft + \KOMAoptions{open=left}% + \or % twolinechapter + \KOMAoptions{chapterprefix=true}% + \or % onelinechapter + \KOMAoptions{chapterprefix=false}% + \or % twolineappendix + \KOMAoptions{appendixprefix=true}% + \or % onelineappendix + \KOMAoptions{appendixprefix=false}% + \or % optiontotocandhead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \scr@activate@xsection{3}% + \or % optiontotoc + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}% + \scr@activate@xsection{2}% + \or % optiontohead + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}% + \scr@activate@xsection{1}% + \or % standardclasses + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% + \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% + \KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}% + \renewcommand*{\scr@chapter@beforeskip}{-50\p@}% + \renewcommand*{\scr@chapter@afterskip}{40\p@}% + \renewcommand*{\scr@chapter@innerskip}{20\p@}% + \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% + \renewcommand*{\chapterheadendvskip}{\vskip\@tempskipa}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% + \setkomafont{part}{\Huge}% + \setkomafont{partnumber}{\huge}% + \setkomafont{chapter}{\Huge}% + \setkomafont{chapterprefix}{\huge}% + \setkomafont{section}{\Large}% + \setkomafont{subsection}{\large}% + \setkomafont{subsubsection}{\normalsize}% + \setkomafont{paragraph}{\normalsize}% + \setkomafont{subparagraph}{\normalsize}% + \renewcommand*{\sectfont}{\bfseries}% + \KOMAoptions{open=right,chapterprefix=true}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{big} +\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter} +\KOMA@DeclareDeprecatedOption{bigheadings}{headings=big} +\KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal} +\KOMA@DeclareDeprecatedOption{smallheadings}{headings=small} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@ifkey{headsepline}{@hsl}% +\KOMA@kav@add{.\KOMAClassFileName}{headsepline}{false} +\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false} +\KOMA@ifkey{footsepline}{@fsl}% +\KOMA@kav@add{.\KOMAClassFileName}{footsepline}{false} +\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false} +\KOMA@key{cleardoublepage}{% + \begingroup + \def\@tempc{% + \endgroup + \KOMA@unknown@keyval{cleardoublepage}{#1}{% + 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% + }% + \Ifstr{#1}{current}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublestandardpage}% + \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% + \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{current}% + }% + }{% + \Ifnotundefined{ps@#1}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + \KOMAClassFileName + }{cleardoublepage}{#1}% + }% + }{% + \ifx\@currname\KOMAClassName + \ifx\@currext\@clsextension + \Ifstr{#1}{headings}{% + \def\@tempc{\endgroup + \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% + \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% + \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.\KOMAClassFileName}% + {cleardoublepage}{#1}% + }% + }{}% + \fi + \fi + }% + }% + \@tempc +} +\newcommand*{\cleardoubleoddstandardpage}{} +\let\cleardoubleoddstandardpage=\cleardoublepage +\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleoddstandardpage}} +\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} +\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} +\newcommand*{\cleardoubleevenstandardpage}{% + \clearpage + \if@twoside\ifodd\c@page + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi + \fi\fi +} +\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoubleevenstandardpage}} +\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} +\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} +\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} +\renewcommand*{\cleardoublepage}{% + \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax + \cleardoubleemptypage + \else + \cleardoublestandardpage + \fi +} +\KOMA@kav@add{.% + \KOMAClassFileName +}{cleardoublepage}{% + \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi +} +\AtEndOfClass{% + \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% + {% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{cleardoublepage}% + \KOMA@kav@xadd{.% + \KOMAClassFileName + }{cleardoublepage}{\@tempa}% +} +\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} +\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} +\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage + {\pagestyle{#1}\cleardoublestandardpage}} +\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} +\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} +\KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty} +\KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain} +\KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newif\if@captionabove\@captionabovefalse +\newif\if@tablecaptionabove\@tablecaptionabovefalse +\newif\if@figurecaptionabove\@figurecaptionabovefalse +\newif\ifonelinecaptions\onelinecaptionstrue +\newcommand*{\scap@pos}{r} +\newcommand*{\scap@valign}{b} +\KOMA@key{captions}{% + \KOMA@set@ncmdkey{captions}{@tempa}{% + {heading}{0},{above}{0},{top}{0},% + {signature}{1},{below}{1},{bot}{1},{bottom}{1},% + {tableheading}{2},% + {tableabove}{2},{abovetable}{2},{abovetabular}{2},{topattable}{2},% + {tablesignature}{3},% + {tablebelow}{3},{belowtable}{3},{belowtabular}{3},{bottomattable}{3},% + {figureheading}{4},{figureabove}{4},{abovefigure}{4},{topatfigure}{4},% + {figuresignature}{5},{figurebelow}{5},{belowfigure}{5},{bottomatfigure}{5},% + {oneline}{6},% + {nooneline}{7},% + {rightbeside}{8},{besideright}{8},% + {leftbeside}{9},{besideleft}{9},% + {innerbeside}{10},{besideinner}{10},% + {outerbeside}{11},{besideouter}{11},% + {topbeside}{12},{besidetop}{12},% + {centeredbeside}{13},{besidecentered}{13},% + {middlebeside}{13},{besidemiddle}{13},% + {bottombeside}{14},{besidebottom}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % heading + \@tablecaptionabovetrue + \@figurecaptionabovetrue + \@captionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{heading}% + \or % signature + \@tablecaptionabovefalse + \@figurecaptionabovefalse + \@captionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{signature}% + \or % tableheading + \@tablecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tableheading}% + \or % tablesignature + \@tablecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature}% + \or % figureheading + \@figurecaptionabovetrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figureheading}% + \or % figuresignature + \@figurecaptionabovefalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature}% + \or % oneline + \onelinecaptionstrue + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline}% + \or % nooneline + \onelinecaptionsfalse + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{nooneline}% + \or % rightbeside + \renewcommand*{\scap@pos}{r}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside}% + \or % leftbeside + \renewcommand*{\scap@pos}{l}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{leftbeside}% + \or % innerbeside + \renewcommand*{\scap@pos}{i}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{innerbeside}% + \or % outerbeside + \renewcommand*{\scap@pos}{o}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{outerbeside}% + \or % topbeside + \renewcommand*{\scap@valign}{t}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{topbeside}% + \or % centeredbeside + \renewcommand*{\scap@valign}{c}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{centeredbeside}% + \or % bottombeside + \renewcommand*{\scap@valign}{b}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}% + \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}% + \KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{signature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside} +\KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside} +\KOMA@DeclareDeprecatedOption{tablecaptionabove}{captions=tableheading} +\KOMA@DeclareDeprecatedOption{tablecaptionbelow}{captions=tablesignature} +\newif\if@komalongtable\@komalongtabletrue +\DeclareOption{origlongtable}{\@komalongtablefalse} +\KOMA@DeclareDeprecatedOption{onelinecaption}{captions=oneline} +\KOMA@DeclareDeprecatedOption{noonelinecaption}{captions=nooneline} +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\KOMA@key{footnotes}{% + \ifx\@footnotemark\scr@saved@footnotemark + \else + \ifx\@footnotemark\scr@footnotemark + \else + \ClassWarning{\KOMAClassName}{% + Change of `\string\@footnotemark' detected!\MessageBreak + Use of `footnotes=#1' may break\MessageBreak + another package!\MessageBreak + Maybe you should remove the usage of\MessageBreak + option `footnotes=#1'}% + \fi + \fi + \Ifstr{#1}{multiple}{% + \let\@footnotemark\scr@footnotemark + \def\FN@mf@prepare{\scr@mf@prepare}% + \def\scr@footmisc@options{multiple}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{multiple}% + }{% + \Ifstr{#1}{nomultiple}{% + \let\@footnotemark\scr@saved@footnotemark + \let\FN@mf@prepare\relax + \let\scr@footmisc@options\@empty + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + }{% + \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% + }% + }% +} +\AtBeginDocument{% + \ifx\@footnotemark\scr@saved@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{nomultiple}% + \else\ifx\@footnotemark\scr@footnotemark + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{footnotes}% + \KOMA@kav@add{.% + \KOMAClassFileName + }{footnotes}{multiple}% + \fi\fi +} +\newcommand*{\scr@footmisc@options}{} +\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} +\newcommand*{\scr@saved@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark +\expandafter{\scr@saved@footnotemark} +\newcommand*{\scr@footnotemark}{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi + \@makefnmark + \csname FN@mf@prepare\endcsname + \ifhmode\spacefactor\@x@sf\fi + \relax} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: option) +\newif\if@tocleft +\KOMA@key{toc}{% + \KOMA@set@ncmdkey{toc}{@tempa}{% + {noindex}{0},{noidx}{0},% + {index}{1},{idx}{1},% + {indexnumbered}{2},{idxnumbered}{2},{numberedindex}{2},{numberedidx}{2},% + {nolistof}{3},{nolistsof}{3},% + {listof}{4},{listsof}{4},% + {listofnumbered}{5},{numberedlistof}{5},% + {listsofnumbered}{5},{numberedlistsof}{5},% + {nobibliography}{6},{nobib}{6},% + {bibliography}{7},{bib}{7},% + {bibliographynumbered}{8},{bibnumbered}{8},{numberedbibliography}{8},% + {numberedbib}{8},% + {flat}{9},{left}{9},% + {graduated}{10},{indent}{10},{indented}{10},% + {indenttextentries}{11},{indentunnumbered}{11},{numberline}{11},% + {leftaligntextentries}{12},{leftalignunnumbered}{12},{nonumberline}{12},% + {chapterentrywithdots}{13},{chapterentrydotfill}{13}, + {chapterentrywithoutdots}{14},{chapterentryfill}{14}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % noindex + \KOMAoptions{index=notoc}% + \or % index + \KOMAoptions{index=totoc}% + \or % indexnumbered + \KOMAoptions{index=numbered}% + \or % listof + \KOMAoptions{listof=notoc}% + \or % nolistof + \KOMAoptions{listof=totoc}% + \or % listofnumbered + \KOMAoptions{listof=numbered}% + \or % nobibliography + \KOMAoptions{bibliography=nottotoc}% + \or % bibliography + \KOMAoptions{bibliography=totoc}% + \or % bibliographynumbered + \KOMAoptions{bibliography=totocnumbered}% + \or % flat + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{flat}% + \@toclefttrue + \or % graduated + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{graduated}% + \@tocleftfalse + \or % indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indenttextentries}% + \expandafter\setuptoc\expandafter{\ext@toc}{numberline}% + \or % leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{leftaligntextentries}% + \expandafter\unsettoc\expandafter{\ext@toc}{numberline}% + \or % chapterentrywithdots/sectionentrywithdots + \KOMAoptions{chapterentrydots=true}% + \or % chapterentrywithoutdots/sectionentrywithoutdots + \KOMAoptions{chapterentrydots=false}% + \fi + \fi +} +\KOMA@DeclareDeprecatedOption{tocleft}{toc=flat} +\KOMA@DeclareDeprecatedOption{tocindent}{toc=graduated} +\newcommand*{\float@@listhead}{% + \chapter* +} +\newif\if@dynlist +\KOMA@key{listof}{% + \KOMA@set@ncmdkey{listof}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {flat}{3},{left}{3},% + {graduated}{4},{indent}{4},{indented}{4},% + {leveldown}{5}, + {standardlevel}{6}, + {entryprefix}{7}, + {indenttextentries}{8},{indentunnumbered}{8},{numberline}{8},% + {leftaligntextentries}{9},{leftalignunnumbered}{9},{nonumberline}{9}% + ,{chapterentry}{10},{withchapterentry}{10},% + {nochaptergap}{11},{ignorechapter}{11},% + {chaptergapsmall}{12},{smallchaptergap}{12},% + {chaptergapline}{13},{onelinechaptergap}{13}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}% + \renewcommand*{\float@@listhead}{% + \chapter* + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \unsettoc{\@currext}{totoc}% + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{totoc}% + \renewcommand*{\float@@listhead}{% + \addchap + }% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{listofnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{numbered}% + \renewcommand*{\float@@listhead}{% + \chapter + }% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numbered}% + \setuptoc{\@currext}{totoc}% + }% + \or% flat + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{flat}% + \@dynlisttrue + \or% graduated + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}% + \@dynlistfalse + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leveldown}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{leveldown}% + }% + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leveldown}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{standardlevel}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{leveldown}% + }% + \or% entryprefix + \KOMA@kav@add{.\KOMAClassFileName}{listof}{entryprefix}% + \@dynlisttrue + \doforeachtocfile[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \AtAddToTocList[float]{% + \BeforeStartingTOC[\@currext]{% + \scr@ifundefinedorrelax{listof\@currext entryname}{}{% + \expandafter\def\expandafter\numberline@prefix + \expandafter{\csname listof\@currext entryname\endcsname + \nobreakspace}% + }% + }% + }% + \or% indenttextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{indenttextentries}% + \doforeachtocfile[float]{% + \setuptoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \setuptoc{\@currext}{numberline}% + } + \or% leftaligntextentries + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}% + \doforeachtocfile[float]{% + \unsettoc{\@currext}{numberline}% + }% + \AtAddToTocList[float]{% + \unsettoc{\@currext}{numberline}% + } + \or% chapterentry + \KOMAoptions{chapteratlists=entry}% + \or% chaptergap + \KOMAoptions{chapteratlists=\z@}% + \or% chaptergapsmall + \KOMAoptions{chapteratlists=10\p@}% + \or% chaptergapline + \KOMAoptions{chapteratlists=\baselineskip}% + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated} +\KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries} +\KOMA@DeclareDeprecatedOption{liststotoc}{listof=totoc} +\KOMA@DeclareDeprecatedOption{liststotocnumbered}{listof=numbered} +\KOMA@DeclareDeprecatedOption{listsleft}{listof=flat} +\KOMA@DeclareDeprecatedOption{listsindent}{listof=graduated} +\newcommand*{\@chapterlistsgap}{10\p@} +\newif\if@chaptertolists\@chaptertolistsfalse +\KOMA@key{chapteratlists}[entry]{% + \FamilyKeyStateProcessed + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chapterentry}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergap}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapsmall}% + \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapline}% + \Ifstr{#1}{entry}{% + \@chaptertoliststrue\renewcommand*{\@chapterlistsgap}{\z@}% + \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}{entry}% + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chapterentry}% + }{% + \@chaptertolistsfalse\renewcommand*{\@chapterlistsgap}{#1}% + \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}% + {\@chapterlistsgap}% + \def\reserved@a{\z@}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergap}% + \else + \def\reserved@a{10\p@}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}% + \else + \def\reserved@a{\baselineskip}% + \ifx\@chapterlistsgap\reserved@a + \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapline}% + \fi + \fi + \fi + }% +} +\BeforeTOCHead{\@chaptertolistsfalse} +\KOMA@kav@add{.\KOMAClassFileName}{chapteratlists}{10\p@}% +\KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}% +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand{\newbibstyle}[3][]{% + \scr@ifundefinedorrelax{scr@bibstyle@#2}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \ClassError{\KOMAClassName}{% + parent bibliography style `#1' does not exist}{% + You've told me to define the new bibliography style `#2'\MessageBreak + to be a child of bibliography style `#1', but bibliography + style\MessageBreak + `#1' does not exist.\MessageBreak + You have to remove the parent declaration or use an existing parent! + See the KOMA-Script manual for more information.% + }% + }{% + \@namedef{scr@bibstyle@#2}{% + \let\@openbib@code\@empty + \let\newblock\@empty + \let\bib@beginhook\@empty + \let\bib@endhook\@empty + \@ifundefined{scr@current@bibstyle}{}{% + \Ifstr{\scr@current@bibstyle}{}{}{% + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + }% + }% + \def\scr@current@bibstyle{#2}% + \KOMA@kav@xadd{.\KOMAClassFileName}{bibliography}{#2}% + \csname scr@bibstyle@#1\endcsname + #3% + }% + \ifx\scr@bibstylelist\@empty + \edef\scr@bibstylelist{`#2'}% + \else + \edef\scr@bibstylelist{\scr@bibstylelist, `#2'}% + \fi + }% + }{% + \ClassError{\KOMAClassName}{bibliography style `#2' already exists}{% + You've told me to define the new bibliography style `#2',\MessageBreak + but this style already exists.\MessageBreak + You have to use another bibliography style name.\MessageBreak + See the KOMA-Script manual for more information.% + }% + }% +} +\newcommand*{\scr@bibstyle@}{} +\newcommand*{\bib@beginhook}{} +\newcommand*{\bib@endhook}{} +\newcommand*{\scr@bibstylelist}{} +\newcommand*{\@openbib@code}{} +\newcommand*{\newblock}{} +\newbibstyle{openstyle}{% + \renewcommand*{\@openbib@code}{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand*{\newblock}{\par}% +} +\newbibstyle{oldstyle}{% + \renewcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}% +} +\scr@bibstyle@oldstyle +\newcommand*{\bib@heading}{% + \bibliography@heading{\bibname}% +} +\newcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section*{#1}% + \addsecmark{#1}% + \else + \chapter*{#1}% + \@mkdouble{\MakeMarkcase{#1}}% + \fi +}% +\newif\ifbib@leveldown +\KOMA@key{bibliography}{% + \scr@ifundefinedorrelax{scr@bibstyle@#1}{% + \KOMA@set@ncmdkey{bibliography}{@tempa}{% + {notoc}{0},{nottotoc}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifcase \@tempa\relax % notoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{notoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section*{##1}% + \@mkright{\MakeMarkcase{##1}}% + \else + \chapter*{##1}% + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% totoc + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{totoc}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \addsec{##1}% + \else + \if@chaptertolists + \@chaptertolistsfalse\addchap{##1}\@chaptertoliststrue + \else + \addchap{##1}% + \fi + \@mkdouble{\MakeMarkcase{##1}}% + \fi + }% + \or% numbered + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliographynumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{numbered}% + \renewcommand*{\bibliography@heading}[1]{% + \ifbib@leveldown + \section{##1}% + \else + \if@chaptertolists + \@chaptertolistsfalse\chapter{##1}\@chaptertoliststrue + \else + \chapter{##1} + \fi + \@mkdouble{\MakeMarkcase{\chaptermarkformat ##1}}% + \fi + } + \or% leveldown + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{leveldown}% + \bib@leveldowntrue + \or% standardlevel + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{standardlevel}% + \bib@leveldownfalse + \fi + }{% + \FamilyKeyStateProcessed + \edef\reserved@a{% + \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}% + {\scr@current@bibstyle}% + }\reserved@a + \csname scr@bibstyle@#1\endcsname + }% +} +\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle} +\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc} +\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\newcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi*% +} +\newif\ifidx@leveldown +\KOMA@key{index}{% + \KOMA@set@ncmdkey{index}{@tempa}{% + {notoc}{0},{nottotoc}{0},{default}{0},{plainheading}{0},% + {totoc}{1},{toc}{1},{notnumbered}{1},% + {numbered}{2},{totocnumbered}{2},{numberedtotoc}{2},{tocnumbered}{2},% + {numberedtoc}{2},% + {leveldown}{3},% + {standardlevel}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase \@tempa\relax + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi*% + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{toc}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\addsec + \else + \expandafter\addchap + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}% + \KOMA@kav@add{.\KOMAClassFileName}{toc}{indexnumbered}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{numbered}% + \renewcommand*{\idx@@heading}{% + \ifidx@leveldown + \expandafter\section + \else + \expandafter\chapter + \fi + }% + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{leveldown}% + \idx@leveldowntrue + \or + \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}% + \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}% + \KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}% + \idx@leveldownfalse + \fi + \fi +} +\KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex} +\KOMA@kav@add{.\KOMAClassFileName}{index}{notoc} +\KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel} +\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{headings=openany} +\KOMAExecuteOptions{numbers=autoendperiod} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: execoption) +\KOMAExecuteOptions{% + parskip=false,% + headings=big% +} +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +\AtBeginDocument{% + \begingroup + \def\reserved@a#1/#2/#3 #4\@nil{\@tempcnta=#1\relax\@tempcntb=#2\relax}% + \expandafter\reserved@a\KOMAScriptVersion\@nil + \edef\reserved@a{\the\numexpr\@tempcnta+2\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{% + \ClassWarningNoLine{\KOMAClassName}{% + Your are using a KOMA-Script version, that has not\MessageBreak + been tested with your more than one year newer\MessageBreak + LaTeX release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + this could result in a lot of issues.\MessageBreak + Please have a look at\MessageBreak + and if this\MessageBreak + shows a newer KOMA-Script version than\MessageBreak + `\KOMAScriptVersion', we suggest to do\MessageBreak + an update of KOMA-Script or maybe even the whole\MessageBreak + TeX distribution% + }% + }{% + \edef\reserved@a{\the\numexpr\@tempcnta-4\relax/% + \ifnum\@tempcntb<10 0\fi\the\@tempcntb/01}% + \expandafter\IfLTXAtLeastTF\expandafter{\reserved@a}{}{% + \ClassWarningNoLine{\KOMAClassName}{% + You are using a KOMA-Script version, that has not been\MessageBreak + tested with your more than four years older LaTeX\MessageBreak + release `\fmtversion'.\MessageBreak + Because of the high speed of LaTeX kernel development,\MessageBreak + KOMA-Script releases cannot be tested with all past\MessageBreak + LaTeX releases.\MessageBreak + \ifnum\scr@compatibility<\scr@v@last + So even if you are using option `version' implicitly\MessageBreak + or explicitly, this + \else + So this + \fi + could result in a lot of issues.\MessageBreak + We recommend, to update the whole TeX distribution.\MessageBreak + If this could not be done, we suggest to use at\MessageBreak + least an older KOMA-Script release, e.g., from\MessageBreak + % + }% + }% + }% + \endgroup +} +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% + \KOMAClassFileName + }{fontsize}% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\footnotesep}{.7\@tempdimc}% + \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus + .6\@tempdimc}% + \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus + .3333\@tempdimc}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{0\p@ \@plus 1fil}% + \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{0\p@ \@plus 1fil}% + \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}% + \setlength{\@dblfpbot}{\@fptop}% + \fi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% + \ClassWarning{\KOMAClassName}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil +\edef\@tempa{\@ptsize}% +\setlength{\@tempdimb}{\@tempdima}% +\edef\@tempb{\strip@pt\@tempdimb}% +\addtolength{\@tempdimb}{-10\p@}% +\edef\@ptsize{\strip@pt\@tempdimb}% +\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% +}{% + \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}% + }{% + \InputIfFileExists{size\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `size\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% + \edef\@tempa{% + \noexpand\changefontsizes{\@tempa}% + \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% + }\@tempa + }% + }% +} +\newcommand*{\scr@DeclareOldFontCommand}[3]{% + \ifnum\scr@defineobsoletefonts<\z@\else + \ifnum\scr@defineobsoletefonts>\tw@ + \DeclareOldFontCommand{#1}{#2}{#3}% + \else + \DeclareOldFontCommand{#1}{% + \scr@ErrorWarningInfo{#1}{#2}#2% + }{% + \scr@ErrorWarningInfo{#1}{#3}#3% + }% + \fi + \fi +} +\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{% + \ifnum \scr@defineobsoletefonts=\z@ + \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{% + You should note that since 1994 LaTeX2e provides a new font selection + scheme\MessageBreak + called NFSS2 with several new, combinable font commands. + KOMA-Script\MessageBreak + classes had defined the old font commands like `\string#1' + only for compatibility\MessageBreak + with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, + these\MessageBreak + commands are deprecated and undocumented at least since 2003. Since + 2013\MessageBreak + KOMA-Script classes warned about soon removement of these deprecated + commands.\MessageBreak + Now, after two decades of LaTeX2e and NFSS2, these commands will not + work any\MessageBreak + more. If loading a package results in this error message, you should + contact\MessageBreak + the author of that package and ask him to replace the deprecated font + command\MessageBreak + `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should + reconfigure\MessageBreak + or replace the package. If you have used the old font command + `\string#1' yourself,\MessageBreak + you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak + To make it work for now, you can use the already also deprecated class + option\MessageBreak + `enabledeprecatedfontcommands'.% + }% + \else + \ifcase \scr@defineobsoletefonts + \or + \expandafter\ClassWarning + \or + \expandafter\ClassInfo + \else + \expandafter\@gobbletwo + \fi + {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak + You should note, that since 1994 LaTeX2e provides a\MessageBreak + new font selection scheme called NFSS2 with several\MessageBreak + new, combinable font commands. New KOMA-Script classes\MessageBreak + defined the old font commands like `\string#1' only for\MessageBreak + compatibility with LaTeX 2.09 document styles of\MessageBreak + Script 2.0. These commands are deprecated and\MessageBreak + undocumented at least since 2003. Since 2013,\MessageBreak + KOMA-Script classes warned about soon removement of\MessageBreak + these deprecated commands. Now, after two decades of\MessageBreak + LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak + not work any longer. If loading a package results in\MessageBreak + this message you should contact the author of that\MessageBreak + package and ask him to replace the depracted font\MessageBreak + command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak + Otherwise you should reconfigure or replace the\MessageBreak + package. If you have used the old font command\MessageBreak + `\string #1' yourself you should replace it, e.g., by\MessageBreak + `\detokenize{#2}'% + }% + \fi +} +\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{% + \@nomath\sfb} +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year}% +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\let\@BCOR =\relax +\let\@@BCOR =\relax +\let\@DIV =\relax +\let\@@DIV =\relax +\let\@headlines =\relax +\let\@@headlines =\relax +\let\x@paper =\relax +\let\x@@paper =\relax +\let\scr@pti@nerr@r =\relax +\RequirePackage{typearea}[\KOMAScriptVersion] +\if@scr@emulatestandardclasses + \Ifstr{\@lastdiv}{areaset}{}{% + \ifnum\@lastdiv=\z@ + \setlength{\textwidth}{\dimexpr \paperwidth-2in\relax} + \ifdim \f@size\p@<10.5\p@ + \setlength{\@tempdimb}{345\p@} + \else\ifdim \f@size\p@<11.5\p@ + \setlength{\@tempdimb}{360\p@} + \else + \setlength{\@tempdimb}{390\p@} + \fi + \fi + \if@twocolumn + \ifdim\@textwidth>2\@tempdimb\relax + \setlength{\textwidth}{2\@tempdimb} + \fi + \else + \ifdim\textwidth>\@tempdimb + \setlength{\textwidth}{\@tempdimb} + \fi + \fi + \@settopoint\textwidth + \setlength{\@tempdima}{\dimexpr \paperheight-3.5in\relax} + \divide\@tempdima\baselineskip + \@tempcnta=\@tempdima + \setlength{\textheight}{\@tempcnta\baselineskip} + \addtolength{\textheight}{\topskip} + \edef\reserved@a{% + \noexpand\@areasetadvancedtrue + \noexpand\areaset[current]{\noexpand\textwidth}{\noexpand\textheight}% + \if@areasetadvanced\else\noexpand\@areasetadvancedfalse\fi + }\reserved@a + \fi + }% +\fi +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\par@updaterelative}{% + \begingroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent + \aftergroup\parindent@update + \fi + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip + \aftergroup\parskip@update + \fi + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip + \aftergroup\parfillskip@update + \fi + \endgroup +} +\newcommand*{\parindent@update}{% + \scr@defaultunits\parindent\scr@parindent + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parindent}\ifx\reserved@a\f@parindent\else + \def\reserved@b{\endgroup\edef\f@parindent{\the\parindent}}% + \fi + \reserved@b +} +\newcommand*{\parskip@update}{% + \scr@defaultunits\parskip\scr@parskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parskip}\ifx\reserved@a\f@parskip\else + \def\reserved@b{\endgroup\edef\f@parskip{\the\parskip}}% + \fi + \reserved@b +} +\newcommand*{\parfillskip@update}{% + \scr@defaultunits\parfillskip\scr@parfillskip + \begingroup + \let\reserved@b\endgroup + \edef\reserved@a{\the\parfillskip}\ifx\reserved@a\f@parfillskip\else + \def\reserved@b{\endgroup\edef\f@parfillskip{\the\parfillskip}}% + \fi + \reserved@b +} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +\IfLTXAtLeastTF{2021/05/01}{% + \AddToHook{selectfont}{\par@update}% + \AfterPackage{everysel}{% + \IfPackageAtLeastTF{everysel}{2021/01/18}{}{% + \ClassError{\KOMAClassName}{% + incompatible `everysel' detected + }{% + You are using an old version of `everysel' in combination with a + LaTeX\MessageBreak + version >= 2021/06/01 and KOMA-Script >= 3.33. This combination + is\MessageBreak + not supported.\MessageBreak + You could switch back to an older LaTeX using package + `latexrelease'.\MessageBreak + But I recommend to update `everysel'% + }% + }% + }% + \AfterPackage{tracefnt}{% + \IfPackageAtLeastTF{tracefnt}{2020/12/22}{}{% + \ClassError{\KOMAClassName}{% + incompatible `tracefnt' detected + }{% + `tracefnt' is a LaTeX base package and therefore should be updated + together\MessageBreak + with LaTeX kernel. So this should never happen! Please check + your\MessageBreak + LaTeX installation% + }% + }% + }% +}{% + \newcommand*{\scr@selectfont}{} + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \BeforePackage{everysel}{% + \AtBeginDocument{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else + \ClassWarningNoLine{\KOMAClassName}{% + discard change of \string\selectfont}% + \fi + \expandafter\let\csname selectfont \endcsname\scr@selectfont + }% + }% + \AfterPackage{everysel}{% + \scr@ifundefinedorrelax{@EverySelectfont@Init}{% + \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont + \ClassWarningNoLine{\KOMAClassName}{% + \string\selectfont\space already changed}% + \else + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + \fi + }{% + \g@addto@macro\@EverySelectfont@Init{% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont + \csname selectfont \endcsname + }% + }% + }% + \AfterPackage{tracefnt}{% + \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}% + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname + }% + \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update} + \newcommand*{\scr@new@selectfont}{} + \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname +} +\newcommand*{\scr@defaultunits}[2]{% + \begingroup + \edef\@tempa{#2}% + \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil + \edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}% + \@tempa +} +\newcommand*{\scr@@defaultunits}{} +\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{% + \ifx\relax#3\relax + \scr@@@defaultunits#1{}#2minusminus\@nnil + \else + \scr@@@defaultunits#1{#2}#3minusminus\@nnil + \fi +} +\newcommand*{\scr@@@defaultunits}{} +\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{% + \ifx\relax#2\relax + \@defaultunits\@tempskipa#3pt\relax\@nnil + #1\@tempskipa + \else + \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil + #1\@tempskipa + \@defaultunits\@tempskipa#2pt\relax\@nnil + \advance#1\@tempskipa + \fi + \ifx\relax#4\relax\else + \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil + \advance#1\@tempskipa + \fi +} +\newcommand*{\@list@extra}{% + \ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi +} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\AfterPackage{amsthm}{% + \RequirePackage{xpatch}% + \xpatchcmd{\deferred@thm@head}{\addvspace{-\parskip}}{}{% + \ClassInfoNoLine{\KOMAClassName}{% + amsthm's \string\deferred@thm@head\space patched}% + }{% + \ClassWarningNoLine{\KOMAClassName}{% + cannot patch amsthm's \string\deferred@thm@head.\MessageBreak + This could result in wrong spacing before theorem\MessageBreak + environments defined by package `amsthm'% + }% + }% +} + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +\setlength{\columnsep}{10\p@} +\setlength{\columnseprule}{\z@} +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +%%% From File: $Id: scrkernel-title.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\@extratitle}{}% +\newcommand{\extratitle}[1]{\gdef\@extratitle{% + #1% +}}% +\newcommand*{\@frontispiece}{}% +\newcommand{\frontispiece}[1]{\gdef\@frontispiece{% + #1% +}}% +\newcommand*{\@titlehead}{}% +\newcommand{\titlehead}[1]{\gdef\@titlehead{% + #1% +}}% +\newcommand*{\@subject}{}% +\newcommand*{\subject}[1]{\gdef\@subject{% + #1% +}}% +\newcommand*{\subtitle}[1]{\gdef\@subtitle{% + #1% +}}% +\newcommand*{\@subtitle}{}% +\newcommand*{\@publishers}{}% +\newcommand{\publishers}[1]{\gdef\@publishers{% + #1% +}}% +\newcommand*{\@uppertitleback}{}% +\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{% + #1% +}}% +\newcommand*{\@lowertitleback}{}% +\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{% + #1% +}}% +\newcommand*{\@dedication}{}% +\newcommand{\dedication}[1]{\gdef\@dedication{% + #1% +}}% +\newcommand*{\next@tpage}{% + \@thanks\global\let\@thanks\@empty + \clearpage + \csname titlepage@restore\endcsname + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \thispagestyle{empty}% + \let\footnote\thanks + \setcounter{footnote}{0}% +} +\newcommand*{\next@tdpage}{% + \next@tpage\if@twoside \ifodd\value{page}\else\null\next@tpage\fi\fi +} +\newcommand*\maketitle[1][1]{% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular}% + \hskip 1em \@plus.17fil% + \begin{tabular}[t]{c}% + }% + \fi + \if@titlepage + \begin{titlepage} + \setcounter{page}{% + #1% + }% + \if@titlepageiscoverpage + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty + \else + \if@twoside\mbox{}\next@tpage\fi + \noindent\@frontispiece\next@tdpage + \fi + \else + \noindent\@extratitle + \ifx\@frontispiece\@empty + \else + \next@tpage + \noindent\@frontispiece + \fi + \next@tdpage + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth}% + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null\vfill + \begin{center} + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject\par}}% + \vskip 3em + \fi + {\usekomafont{title}{\huge \@title\par}}% + \vskip 1em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + \vskip 2em + {% + \usekomafont{author}{% + \lineskip 0.75em + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1.5em + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus3fill + {\usekomafont{publishers}{\@publishers \par}}% + \vskip 3em + \end{center}\par + \@thanks\global\let\@thanks\@empty + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\global\let\@thanks\@empty + \fi + \else + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + }% + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\global\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \else + \par + \@tempcnta=% + #1% + \relax\ifnum\@tempcnta=1\else + \ClassWarning{\KOMAClassName}{% + Optional argument of \string\maketitle\space ignored\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \begingroup + \let\titlepage@restore\relax + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \next@tdpage + \if@twocolumn + \ifnum \col@number=\@ne + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi + \else + \twocolumn[\@makeextratitle]% + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \twocolumn[\@makefrontispiece]% + \next@tdpage + \fi + \twocolumn[\@maketitle]% + \fi + \else + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \@maketitle + \fi + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \@thanks\global\let\@thanks\@empty + \endgroup + \fi + \setcounter{footnote}{0}% + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \fi + \global\let\and\relax +}% +\newcommand*{\@makeextratitle}{% + \ifx\@extratitle\@empty \else + \noindent\@extratitle\par + \fi +} +\newcommand*{\@makefrontispiece}{% + \ifx\@frontispiece\@empty \else + \noindent\@frontispiece\par + \fi +} +\newcommand*{\@maketitle}{% + \global\@topnum=\z@ + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ifx\@titlehead\@empty \else + \begin{minipage}[t]{\textwidth} + \usekomafont{titlehead}{\@titlehead\par}% + \end{minipage}\par + \fi + \null + \vskip 2em% + \begin{center}% + \ifx\@subject\@empty \else + {\usekomafont{subject}{\@subject \par}}% + \vskip 1.5em + \fi + {\usekomafont{title}{\huge \@title \par}}% + \vskip .5em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% + \vskip 1em + {% + \usekomafont{author}{% + \lineskip .5em% + \begin{tabular}[t]{c} + \@author + \end{tabular}\par + }% + }% + \vskip 1em% + {\usekomafont{date}{\@date \par}}% + \vskip \z@ \@plus 1em + {\usekomafont{publishers}{\@publishers \par}}% + \ifx\@dedication\@empty \else + \vskip 2em + {\usekomafont{dedication}{\@dedication \par}}% + \fi + \end{center}% + \par + \vskip 2em +}% +\newcommand*{\coverpagetopmargin}{% + \dimexpr \topmargin+1in\relax +} +\newcommand*{\coverpagebottommargin}{% + 2\dimexpr\coverpagetopmargin\relax +} +\newcommand*{\coverpageleftmargin}{% + \dimexpr \evensidemargin+1in\relax +} +\newcommand*{\coverpagerightmargin}{\coverpageleftmargin} +\newenvironment{titlepage}{% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0}% + \fi +}{% + \if@restonecol\twocolumn \else \newpage \fi +}% +\newkomafont{subtitle}{\usekomafont{title}\large}% +\newkomafont{titlehead}{}% +\newkomafont{author}{\Large} +\newkomafont{date}{\Large} +\newkomafont{publishers}{\Large} +\newkomafont{dedication}{\Large} +\newcommand*\titlefont{\sectfont}% +\newcommand*{\scr@fnt@title}{\titlefont}% +\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}% +\newcommand*{\scr@fnt@subject}{\subject@font}% +\newenvironment{abstract}{% + \if@titlepage + \titlepage + \null\vfil + \@beginparpenalty\@lowpenalty + \if@abstrt + \begin{center} + \normalfont\sectfont\nobreak\abstractname + \@endparpenalty\@M + \end{center} + \fi + \else + \if@twocolumn\if@abstrt + \addsec*{\abstractname} + \fi + \else + \if@abstrt + \small + \begin{center} + {\normalfont\sectfont\nobreak\abstractname + \vspace{-.5em}\vspace{\z@}}% + \end{center} + \fi + \quotation + \fi + \fi +}{% + \if@titlepage + \par\vfil\null\endtitlepage + \else + \if@twocolumn\else\endquotation\fi + \fi +} +\newcommand*\abstractname{Abstract} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\abstractname{Abstract} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\let\numberline\scr@numberline +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,part) +\CloneTOCEntryStyle{tocline}{part} +\TOCEntryStyleStartInitCode{part}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\hfill}% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\usekomafont{partentry}{##1}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \usekomafont{partentry}{\usekomafont{partentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{2.25em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,chapter) +\CloneTOCEntryStyle{tocline}{chapter} +\TOCEntryStyleStartInitCode{chapter}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{% + \if@chapterentrywithdots + {\usekomafont{chapterentrydots}{\TOCLineLeaderFill}}\relax + \else + \hfill + \fi + }% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname{\usekomafont{chapterentry}}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \usekomafont{chapterentry}{\usekomafont{chapterentrypagenumber}{##1}}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{1.0em \@plus\p@}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,section) +\CloneTOCEntryStyle{tocline}{section} +\TOCEntryStyleStartInitCode{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: class,style,default) +\CloneTOCEntryStyle{section}{default} +%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\BeforeClosingMainAux{% + \if@autodot\if@filesw\immediate\write\@mainaux{% + \string\global\string\csname\space @altsecnumformattrue\string\endcsname}% + \fi\fi} +\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup% + \expandafter\@@maybeautodot #1\@stop\endgroup\fi +} +\newcommand*{\@@maybeautodot}[1]{% + \ifx #1\@stop\let\@@maybeautodot\relax + \else + \ifx #1\Alph \@autodottrue\fi + \ifx #1\alph \@autodottrue\fi + \ifx #1\Roman \@autodottrue\fi + \ifx #1\roman \@autodottrue\fi + \ifx #1\@Alph \@autodottrue\fi + \ifx #1\@alph \@autodottrue\fi + \ifx #1\@Roman \@autodottrue\fi + \ifx #1\@roman \@autodottrue\fi + \ifx #1\romannumeral \@autodottrue\fi + \fi + \@@maybeautodot +} +\newcommand*\autodot{\if@altsecnumformat.\fi} +\setcounter{secnumdepth}{2} +\providecommand*{\ifnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifnumbered' by `\string\Ifnumbered'% + }% + \Ifnumbered +} +\newcommand*{\Ifnumbered}[1]{% + \if@currentusenumber + \scr@ifundefinedorrelax{#1numdepth}{% + \expandafter\@secondoftwo + }{% + \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth + \expandafter\expandafter\expandafter\@secondoftwo + \else + \expandafter\expandafter\expandafter\@firstoftwo + \fi + }% + \else + \expandafter\@secondoftwo + \fi +} +\providecommand*{\ifunnumbered}{% + \ClassWarning{\KOMAClassName}{Usage of deprecated command + `\string\ifunnumbered'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifunnumbered' by `\string\Ifunnumbered'% + }% + \Ifunnumbered +} +\newcommand*{\Ifunnumbered}[1]{% + \Ifnumbered{#1}{\@secondoftwo}{\@firstoftwo}% +} +\newcommand*{\scr@saved@startsection}[6]{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\def\reserved@a#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\ifcase \ifx\@startsection\scr@saved@startsection 0 + \else + \ifx\@startsection\reserved@a 0 + \else 1 + \fi + \fi + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa \glueexpr #4\relax + \@ifundefined{scr@#1@afterindent}{% + \def\startsection@afterindent##1##2##3{##3}% + }{% + \expandafter\let\expandafter\startsection@afterindent + \csname scr@#1@afterindent\endcsname + }% + \startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + }% + \def\startsection@sectionname{#1}% + \def\startsection@secnumdepth{\numexpr #2\relax}% + \def\startsection@indent{\glueexpr #3\relax}% + \let\startsection@beforeskip\@tempskipa + \@ifundefined{scr@#1@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }{% + \expandafter\let\expandafter\scr@sect@runin + \csname scr@#1@runin\endcsname + }% + \scr@sect@runin{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + }{% + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + }{% + \ifdim \glueexpr #5\relax <\z@ + \def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iftrue\endcsname + \else + \def\startsection@afterskip{\glueexpr #3\relax}% + \expandafter\let\csname if@startsection@runin\expandafter\endcsname + \csname iffalse\endcsname + \fi + }% + \ExecuteDoHook{heading/postinit/#1}% + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \kernel@ifstar {% + \ExecuteDoHook{heading/branch/star/#1}% + \def\scr@s@ct@@nn@m@{#1}% + \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}% + }{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \scr@section@dblarg{% + \@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}% + {\glueexpr #5\relax}{#6}% + }% + }% + } +\else + \ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been + changed.\MessageBreak + \KOMAClassName\space needs it's own definition of + `\string\@startsection'\MessageBreak + to provide extended features for the optional argument\MessageBreak + of `\string\section' etc.\MessageBreak + Generally it defines `\string\@startsection' completely new\MessageBreak + to achieve this. Because of the unexpected definition\MessageBreak + an alternative approach will be used.\MessageBreak + If this fails and if there isn't a new release of\MessageBreak + KOMA-Script that fixes the problem, please\MessageBreak + send a report to the KOMA-Script author.\MessageBreak + Note, that this alternative approach does not\MessageBreak + execute the elements of do-hooks:\MessageBreak + \space\space- `heading/postinit',\MessageBreak + \space\space- `heading/branch/star',\MessageBreak + \space\space- `heading/branch/nostar',\MessageBreak + and does always use `runin=bysign' and\MessageBreak + `afterindent=bysign'% + }% + \let\scr@saved@startsection\@startsection + \newcommand*{\scr@startsection}[6]{% + \ExecuteDoHook{heading/preinit/#1}% + \kernel@ifstar {% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*% + }{% + \scr@section@dblarg{% + \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% + {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}% + }% + } +\fi +\newcommand*{\scr@sect@runin}[3]{#3} +\newcommand*{\scr@startsection@ulm@error}[1]{% + \ClassError{\KOMAClassName}{% + \string#1 undefined outside of \string\scr@startsection + }{% + A KOMA-Script macro for package authors have been used outside + the\MessageBreak + specified definition scope.\MessageBreak + See `scrkernel-sections.dtx' for more information.% + }% +} +\newcommand*\startsection@sectionname{% + \scr@startsection@ulm@error\startsection@sectionname} +\newcommand*\startsection@secnumdepth{% + \scr@startsection@ulm@error\startsection@secnumdepth} +\newcommand*\startsection@indent{% + \scr@startsection@ulm@error\startsection@indent} +\newcommand*\startsection@beforeskip{% + \scr@startsection@ulm@error\startsection@beforeskip} +\newcommand*\startsection@afterskip{% + \scr@startsection@ulm@error\startsection@afterskip} +\newcommand*{\if@startsection@runin}{% + \scr@startsection@ulm@error\if@startsection@runin} +\newif\if@startsection@runin +\newcommand*\startsection@afterindent{% + \scr@startsection@ulm@error\startsection@afterindent} +\newcommand*{\At@startsection}[1]{% + \ClassInfo{\KOMAClassName}{% + Usage of deprecated command `\string\At@startsection' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/postinit} + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/postinit}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\scr@doonlyifstyleofargis}[3]{% + \IfSectionCommandStyleIs{#3}{#2}{#1}{}% +} +\newcommand*{\Before@ssect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@ssect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/star}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/star}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand*{\Before@sect}[1]{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command `\string\Before@sect' + mapped to\MessageBreak + `\string\AddtoDoHook{heading/branch/nostar}% + {...\string\@gobble}'% + }% + \AddtoDoHook{heading/branch/nostar}{\scr@doonlyifstyleofargis{#1}{section}}% +} +\newcommand{\scr@section@dblarg}[1]{% + \kernel@ifnextchar[%] + {#1}% + {\scr@section@xdblarg{#1}}% +} +\newcommand{\scr@section@xdblarg}[2]{% + \begingroup + \edef\reserved@a{% + \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}% + {\scr@osectarg}}% + \reserved@a +} +\renewcommand*{\@startsection}{% + \ifnum \scr@osectarg=\z@ + \expandafter\scr@saved@startsection + \else + \expandafter\scr@startsection + \fi +} +\newcommand*{\UseNumberUsageError}[2]{% + \ClassError{\KOMAClassName}{% + \string\IfUseNumber\space not allowed% + }{% + You cannot use \string\IfUseNumber\space outside a heading.\MessageBreak + If you'd continue, I'll ignore both arguments, because I do not + know\MessageBreak + whether to use the first or the second argument.% + }% +} +\newcommand*{\IfUseNumber}[2]{}% +\let\IfUseNumber\UseNumberUsageError +\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}} +\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}} +\let\secdef\SecDef +\def\scr@latex@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\ifx\@sect\scr@latex@sect\else + \let\scr@latex@sect\@sect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@sect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@sect}% +\fi +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#7=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#8},head={#8},reference={#8},#7}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#8},head={#7},reference={#8}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#8},reference={#7}}% + \or + \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}% + \fi + \fi + \scr@ifundefinedorrelax{scr@mt@saved@sect}{}{% + \expandafter\ifx\csname #1\endcsname\section + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + \expandafter\ifx\csname #1\endcsname\starsection\relax + \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}% + \addcontentsline{\ext@table}{xsect}{\@currenttocentry}% + \fi + }% + \let\IfUsePrefixLine\@secondoftwo + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \let\@svsec\@empty + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \hy@insteadofrefstepcounter{#1}% + \else + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@ + \begingroup + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\interlinepenalty \@M + \sectionlinesformat{#1}{\glueexpr #3\relax}\@svsec{#8}\@@par}% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \expandafter\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname##1##2{% + \addtocentrydefault{#1}{##1}{##2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \else + \def\@svsechd{% + \ifx\@svsec\@empty + \let\IfUseNumber\@secondoftwo + \else + \let\IfUseNumber\@firstoftwo + \fi + \ExecuteDoHook{heading/begingroup/#1}% + #6{\nobreak\sectioncatchphraseformat{#1}{\glueexpr #3\relax}\@svsec{#8}}% + \expandafter\csname #1mark\expandafter\endcsname + \expandafter{\@currentheadentry}% + \ifx\@currenttocentry\@empty\else + \scr@ifundefinedorrelax{add#1tocentry}{% + \expandafter\gdef\csname add#1tocentry\endcsname####1####2{% + \addtocentrydefault{#1}{####1}{####2}% + }% + }{}% + \ifcase + \if@currentusenumber + \ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi + \else + \z@ + \fi + \csname add#1tocentry\endcsname{}{\@currenttocentry}% + \else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{% + \@currenttocentry}% + \fi + \fi + \ExecuteDoHook{heading/endgroup/#1}% + }% + \fi + \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning + \@xsect{\glueexpr #5\relax}% +} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.section]{KOMAarg} +\providecommand*\@currenttocentry{} +\providecommand*\@currentheadentry{} +\providecommand*\@currentlabelname{} +\FamilyStringKey[.section]{KOMAarg}{tocentry}{\@currenttocentry} +\FamilyStringKey[.section]{KOMAarg}{head}{\@currentheadentry} +\DefineFamilyKey[.section]{KOMAarg}{reference}{% + \scr@ifundefinedorrelax{NR@gettitle}{% + \scr@ifundefinedorrelax{GetTitleString}{% + \def\@currentlabelname{#1}% + }{% + \GetTitleString{#1}% + \let\@currentlabelname\GetTitleStringResult + }% + }{% + \NR@gettitle{#1}% + }% + \scr@ifundefinedorrelax{TR@gettitle}{}{% + \expandafter\TR@gettitle\expandafter{\@currentlabelname}% + }% + \scr@ifundefinedorrelax{ztitlerefsetup}{}{% + \ztitlerefsetup{title=\@currentlabelname}% + }% + \FamilyKeyStateProcessed +} +\FamilyInverseBoolKey[.section]{KOMAarg}{nonumber}{@currentusenumber} +\newcommand*{\scr@istest}{} +\def\scr@istest#1=#2\@nil{% + \ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi +} +\newif\if@scr@tempswa +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{% + \hskip #2#3#4% +} +\def\scr@latex@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\ifx\@ssect\scr@latex@ssect +\else + \let\scr@latex@ssect\@ssect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@ssect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@ssect}% +\fi +\def\@ssect#1#2#3#4#5{% + \scr@ifundefinedorrelax{scr@s@ct@@nn@m@}{% + \ClassWarning{\KOMAClassName}{Incompatible usage of + \string\@ssect\space detected.\MessageBreak + You've used the KOMA-Script implementation of + \string\@ssect\MessageBreak + from within a non compatible caller, that does not\MessageBreak + \string\scr@s@ct@@nn@m@\space locally.\MessageBreak + This could result in several error messages}% + \def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}% + }{% + \expandafter\ifnum\scr@v@is@lt{3.31}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@\scr@s@ct@@nn@m@\endcsname + \endgroup + \fi + }% + \ifdim + \scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@ + \begingroup + \let\IfUseNumber\@secondoftwo + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + }\reserved@a + #4{\nobreak\interlinepenalty \@M + \expandafter\sectionlinesformat\expandafter{\scr@s@ct@@nn@m@}% + {\glueexpr #1\relax}\@empty{#5}\@@par}% + \edef\reserved@a{% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }\reserved@a + \endgroup + \else + \edef\@svsechd{% + \unexpanded{\let\IfUseNumber\@secondoftwo}% + \noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}% + \unexpanded{#4}{% + \noexpand\nobreak + \noexpand\sectioncatchphraseformat{\scr@s@ct@@nn@m@}% + \unexpanded{{\glueexpr #1\relax}\@empty{#5}}% + }% + \noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}% + }% + \fi + \let\scr@s@ct@@nn@m@\relax + \@xsect{\glueexpr #3\relax}% +} +\def\scr@latex@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces +} +\ifx\@xsect\scr@latex@xsect\else + \let\scr@latex@xsect\@xsect + \ClassWarning{\KOMAClassName}{% + Unexpected definition of \string\@xsect!\MessageBreak + Please send information about this to\MessageBreak + the KOMA-Script maintainer!\MessageBreak + Maybe LaTeX will be broken by the redefinition\MessageBreak + of \string\@xsect}% +\fi +\def\@xsect#1{% + \@ifundefined{scr@sect@runin}{% + \def\scr@sect@runin##1##2##3{##3}% + }% + \@tempskipa #1\relax + \ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \ifdim \@tempskipa<\z@ + \hskip -\@tempskipa + \else + \hskip \@tempskipa + \fi + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \def\scr@sect@runin##1##2##3{##3}% + \ignorespaces +} +\newcommand*{\scr@IfUsePrefixLineWarning}[2]{% + \ClassWarning{\KOMAClassName}{% + Usage of \string\IfUsePrefixLine\space outside + section command\MessageBreak + style makes no sense, because the behaviour not only\MessageBreak + depends on class options but also on the run-time\MessageBreak + section command style.\MessageBreak + Neither the then-code nor the else-code will be\MessageBreak + executed.\MessageBreak + You may change this and avoid the warning by LOCALLY\MessageBreak + setting \string\IfUsePrefixLine\space to either + \string\@firstoftwo\space or\MessageBreak + \string\@secondoftwo\space before using it% + }% +} +\newcommand*{\IfUsePrefixLine}[2]{} +\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning +\newcommand*{\raggedsection}{} +\let\raggedsection\raggedright +\DefineFamily{KOMAarg} +\DefineFamilyMember[.dsc]{KOMAarg} +\newcommand*{\DeclareSectionCommandStyleOption}[3]{% + \AddToSectionCommandOptionsDoList{#2}% + \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% + \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% + }% +} +\newcommand*{\AddToSectionCommandOptionsDoList}[1]{% + \kernel@ifnextchar [%] + {\@AddToSectionCommandOptionListWithDefault{#1}}% + {\l@addto@macro\scr@dsc@doopts{\do{#1}}}% +} +\newcommand*{\@AddToSectionCommandOptionListWithDefault}{} +\def\@AddToSectionCommandOptionListWithDefault#1[#2]{% + \l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}} +}% +\newcommand*{\scr@dsc@doopts}{} +\newcommand*{\RelaxSectionCommandOptions}{% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do{% + \kernel@ifnextchar [%] + {\@do}% + {\@do[]}% + }% + \def\@do[##1]##2{% + \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}% + }% + \scr@dsc@doopts + \do@endgroup +} +\newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}% + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dsc@expandtopt + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{% + \the\@tempskipa}% + \else + \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}% + \fi + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \protected@edef\reserved@a{% + \noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1} + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a + \fi + }% +} +\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \IfExistskomafont{#3\scr@dsc@current#4}{% + \setkomafont + }{% + \newkomafont + }{#3\scr@dsc@current#4}{##1}% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{% + \DeclareSectionCommandStyleOption{#1}{#2}{% + \FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####1}% + \else + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####2}% + \fi + \else + \Ifstr{##1}{#5}{% + \expandafter\def\csname #3\scr@dsc@current#4\endcsname + ####1####2####3{####3}% + \FamilyKeyStateProcessed + }{}% + \fi + }% +} +\newcommand*{\scr@dsc@style@section@options}{} +\DeclareSectionCommandStyleLengthOption{section} + {indent}{scr@}{@sectionindent} +\DeclareSectionCommandStyleFuzzyOption{section} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleFuzzyOption{section} + {runin}{scr@}{@runin} + {bysign} +\DeclareSectionCommandStyleLengthOption{section} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{section}{font}{}{} +\newcommand*{\scr@dsc@def@style@section@command}[1]{% + \@namedef{#1}{% + \scr@startsection{#1}% + {\csname #1numdepth\endcsname}% + {\csname scr@#1@sectionindent\endcsname}% + {\csname scr@#1@beforeskip\endcsname}% + {\csname scr@#1@afterskip\endcsname}% + {% + \ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}% + \fi + \fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{#1}% + }% + }% +} +\newcommand*{\scr@dsc@style@chapter@options}{} +\DeclareSectionCommandStyleOption{chapter}{pagestyle}{% + \@namedef{\scr@dsc@current pagestyle}{#1}% + \FamilyKeyStateProcessed +}% +\DeclareSectionCommandStyleFuzzyOption{chapter} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{chapter} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleLengthOption{chapter} + {innerskip}{scr@}{@innerskip} +\DeclareSectionCommandStyleLengthOption{chapter} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{chapter}{font}{}{} +\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix} +\newcommand*{\scr@dsc@def@style@chapter@command}[1]{% + \@namedef{#1}{\scr@startchapter{#1}}% + \@namedef{@#1}{\scr@@startchapter{#1}}% + \@namedef{@s#1}{\scr@@startschapter{#1}}% + \@namedef{@make#1head}{\scr@makechapterhead{#1}}% + \@namedef{@makes#1head}{\scr@makeschapterhead{#1}}% + \@namedef{@@make#1head}{\scr@@makechapterhead{#1}}% + \@namedef{@@makes#1head}{\scr@@makeschapterhead{#1}}% + \@namedef{set#1preamble}{\set@preamble{#1}}% +} +\newcommand*{\scr@dsc@style@chapter@subcommands}[1]{% + @#1,@s#1,@make#1head,@makes#1head,@@make#1head,@@makes#1head,set#1preamble% +} +\newcommand*{\scr@dsc@style@part@options}{} +\DeclareSectionCommandStyleOption{part}{pagestyle}{% + \@namedef{\scr@dsc@current pagestyle}{#1}% + \FamilyKeyStateProcessed +}% +\DeclareSectionCommandStyleFuzzyOption{part} + {afterindent}{scr@}{@afterindent} + {bysign} +\DeclareSectionCommandStyleLengthOption{part} + {beforeskip}{scr@}{@beforeskip} +\DeclareSectionCommandStyleLengthOption{part} + {innerskip}{scr@}{@innerskip} +\DeclareSectionCommandStyleLengthOption{part} + {afterskip}{scr@}{@afterskip} +\DeclareSectionCommandStyleFontOption{part}{font}{}{} +\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix} +\newcommand*{\scr@dsc@def@style@part@command}[1]{% + \@namedef{#1}{\scr@startpart{#1}}% + \@namedef{@#1}{\scr@@startpart{#1}}% + \@namedef{@s#1}{\scr@@startspart{#1}}% + \@namedef{@end#1}{\scr@@endpart{#1}}% + \@namedef{set#1preamble}{\set@preamble{#1}}% +} +\newcommand*{\scr@dsc@style@part@subcommands}[1]{% + @#1,@s#1,@end#1,set#1preamble% +} +\newcommand*{\scr@dsc@style@section@neededoptionstest}{% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {section indent}{indent}{0pt}% + {\@namedef{scr@\scr@dsc@current @sectionindent}{0pt}}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before section skip}{beforeskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after section skip}{afterskip}% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {font}{font}{\normalsize}% + {\newkomafont{\scr@dsc@current}{\normalsize}}% + }% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `runin=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname + ##1##2##3{##3}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `afterindent=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3{##3}% + }% + }{}% +} +\newcommand*{\scr@dsc@style@chapter@neededoptionstest}{% + \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {initial page style}{pagestyle}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {initial page style}{pagestyle}% + {\chapterpagestyle}% + {\@namedef{\scr@dsc@current pagestyle}{\chapterpagestyle}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {inner chapter skip}{innerskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {inner chapter skip}{innerskip}% + {\scr@chapter@innerskip}% + {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@chapter@innerskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before chapter skip}{beforeskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {before chapter skip}{beforeskip}% + {\scr@chapter@beforeskip}% + {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@chapter@beforeskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after chaper skip}{afterskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {after chaper skip}{afterskip}% + {\scr@chapter@afterskip}% + {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@chapter@afterskip}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {font}{font}% + {\usekomafont{chapter}}% + {\newkomafont{\scr@dsc@current}{\usekomafont{chapter}}}% + }% + }% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \Ifstr{\scr@dsc@current}{chapter}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {prefix line font}{prefixfont}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {prefix line font}{prefixfont}% + {\usekomafont{chapterprefix}}% + {\newkomafont{\scr@dsc@current prefix}{\usekomafont{chapterprefix}}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName} + {using compatibility default `afterindent=bysign'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3{##3}% + }% + }{}% +} +\newcommand*{\scr@dsc@style@part@neededoptionstest}{% + \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {initial page style}{pagestyle}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {initial page style}{pagestyle}% + {\partpagestyle}% + {\@namedef{\scr@dsc@current pagestyle}{\partpagestyle}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {inner part skip}{innerskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {inner part skip}{innerskip}% + {\scr@part@innerskip}% + {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@part@innerskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {before part skip}{beforeskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {before part skip}{beforeskip}% + {\scr@part@beforeskip}% + {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@part@beforeskip}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {after part skip}{afterskip}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {after part skip}{afterskip}% + {\scr@part@afterskip}% + {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@part@afterskip}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}{font}{font}% + {\usekomafont{part}}% + {\newkomafont{\scr@dsc@current}{\usekomafont{part}}}% + }% + }{}% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \Ifstr{\scr@dsc@current}{part}{% + \scr@declaresectioncommanderror{\scr@dsc@current}% + {number font}{prefixfont}% + }{% + \scr@declaresectioncommandwarning{\scr@dsc@current}% + {number font}{prefixfont}% + {\usekomafont{partprefix}}% + {\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{% + \l@addto@macro\local@endgroup{% + \ClassInfo{\KOMAClassName}{% + using compatibility default + `afterindent=true'\MessageBreak + for `\expandafter\string\csname \scr@dsc@current\endcsname}% + \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname + ##1##2##3% + {##1}% + }% + }{}% +} +\newif\ifscr@dsc@parametersonly +\newcommand*{\DeclareSectionCommand}[2][]{% + \edef\scr@dsc@current{#2}% + \scr@dsc@parametersonlyfalse + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \IfArgIsEmpty{##1}{% + \scr@dsc@parametersonlytrue + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{% + \IfArgIsEmpty{##1}{% + \@ifundefined{scr@dte@\scr@dsc@current @style}{}{% + \expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname + \relax + }% + \expandafter\let\csname scr@tso@\scr@dsc@current @style\endcsname + \relax + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dte@def@l@##1}{% + \FamilyKeyStateUnknownValue + }{% + \@namedef{scr@dte@\scr@dsc@current @style}{##1}% + \@namedef{scr@tso@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{% + \FamilyKeyStateProcessed + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \begingroup + \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% + \scr@declaresectioncommanderror{\scr@dsc@current} + {section command style}{style}% + }{}% + \endgroup + \@firstofone{% + \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \scr@ifundefinedorrelax{l@\scr@dsc@current}{% + \@namedef{scr@tso@\scr@dsc@current @style}{default}% + }{}% + }{}% + \let\scr@dsc@tocstyle@options\@empty + \let\scr@dsc@extra@relax@opts\@empty + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{% + \expandafter\let + \csname scr@tso@\scr@dsc@current @style\expandafter\endcsname + \csname scr@dte@\scr@dsc@current @style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{}{% + \begingroup + \def\scr@dte@current{#2}% + \edef\reserved@a{% + \noexpand\@ExecuteTOCEntryStyleInitCode{% + \@nameuse{scr@tso@\scr@dsc@current @style}% + }{\scr@dsc@current}% + }\reserved@a + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \l@addto@macro\scr@dsc@extra@relax@opts{% + \RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocentry##1}% + }% + }% + \kernel@ifnextchar[%] + {\@dodefault{##1}}% + {\@donodefault{##1}}% + }% + \def\@donodefault##1{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \def\@dodefault##1[##2]{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \scr@dte@doopts + \do@endgroup + }% + \DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}% + \FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}% + \scr@dsc@expandtoptfalse + \scr@ifundefinedorrelax{scr@local@levelincrease}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }{% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + }% + \scr@ifundefinedorrelax{scr@local@leveloffset}{% + \edef\reserved@a{% + \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}% + }\reserved@a + }{% + \edef\reserved@a{% + \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \noexpand\FamilySetCounterMacro{KOMAarg}{level}{% + \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname + }% + \unexpanded{% + {\numexpr ##1+\scr@local@leveloffset\relax}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + }% + }\reserved@a + }% + \FamilyStringKey[.dsc]{KOMAarg}{counterwithout}{\scr@local@counterwithout}% + \let\scr@local@counterwithout\relax + \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}% + \let\scr@local@counterwithin\relax + \scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{% + \scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{% + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \edef\reserved@a{% + \noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{% + level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,% + }% + }\reserved@a + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + \FamilyKeyStateProcessed + }% + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \scr@dsc@extra@relax@opts + \let\scr@dsc@extra@relax@opts\relax + \RelaxSectionCommandOptions + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}% + \scr@ifundefinedorrelax{scr@local@levelincrease}{}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}% + \begingroup + \def\local@endgroup{\endgroup}% + \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% + }{% + \expandafter\ifnum \csname #2numdepth\endcsname>-\maxdimen + \@nameuse{scr@dsc@style@% + \@nameuse{scr@\scr@dsc@current @style}% + @neededoptionstest}% + \else + \ClassError{\KOMAClassName}{% + `level' must be > -\the\numexpr\maxdimen\relax + }{% + KOMA-Script internally sets `secnumdepth' to + -\the\numexpr\maxdimen\relax\space + to locally switch of\MessageBreak + the numbering, i.e., inside running heads.\MessageBreak + Because of this, you can define section commands with\MessageBreak + `level' greater than -\the\numexpr\maxdimen\relax\space only.% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo + \fi + }% + \local@endgroup + \@firstofone{% + \@ifundefined{c@#2}{\newcounter{#2}}{}% + \ifx\scr@local@counterwithout\relax + \else\ifx\scr@local@counterwithout\@empty + \else + \@removefromreset{#2}{\scr@local@counterwithout}% + \fi + \@namedef{the#2}{\arabic{#2}}% + \fi + \ifx\scr@local@counterwithin\relax + \else\ifx\scr@local@counterwithin\@empty + \@namedef{the#2}{\arabic{#2}}% + \else + \@removefromreset{#2}{\scr@local@counterwithin}% + \@addtoreset{#2}{\scr@local@counterwithin}% + \expandafter\def\csname the#2\expandafter\endcsname\expandafter{% + \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% + \fi + \fi + \@ifundefined{#2format}{% + \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \ifscr@dsc@parametersonly + \ClassInfo{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' due + to\MessageBreak + empty section style option% + }% + \else + \scr@ifundefinedorrelax{% + scr@dsc@def@style@\@nameuse{scr@#2@style}@command% + }{% + \ClassWarning{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' + due\MessageBreak + to not yet defined section style\MessageBreak + `\@nameuse{scr@#2@style}'% + }% + }{% + \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}% + }% + \fi + \@ifundefined{DeclareSectionNumberDepth}{% + \@ifundefined{#2markformat}{% + \@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}% + }{}% + \@ifundefined{#2mark}{% + \expandafter\let\csname #2mark\endcsname\@gobble + }{}% + }{% + \DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}% + }% + \expandafter\providecommand\expandafter*% + \csname add#2tocentry\endcsname[2]{% + \addtocentrydefault{#2}{##1}{##2}% + }% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + \expandafter\let\csname scr@tso@#2@style\expandafter\endcsname + \csname scr@dte@#2@style\endcsname + }{}% + \scr@ifundefinedorrelax{scr@tso@#2@style}{% + }{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{% + \@nameuse{scr@tso@#2@style}% + }{#2}% + }% + \scr@ifundefinedorrelax{l@#2}{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}% + }{}% + \if@atdocument + \let\reserved@a\@firstofone + \else + \@ifpackageloaded{hyperref}{% + \let\reserved@a\@firstofone + }{% + \def\reserved@a##1{% + \AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}% + }% + }% + \fi + \reserved@a{% + \expandafter\let\csname toclevel@#2\expandafter\endcsname + \csname #2tocdepth\endcsname + \scr@ifundefinedorrelax{bookmarksetup}{% + \scr@ifundefinedorrelax{scr@min@toclevel}{% + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + < \numexpr \scr@min@toclevel-1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 lower than currently lowest\MessageBreak + known level (\scr@min@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@min@toclevel-1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + < \scr@min@toclevel\relax + \expandafter\let\expandafter\scr@min@toclevel + \csname toclevel@#2\endcsname + \fi + }% + \scr@ifundefinedorrelax{scr@max@toclevel}{% + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + }{% + \expandafter\ifnum \csname toclevel@#2\endcsname + > \numexpr \scr@max@toclevel+1\relax + \ClassWarning{\KOMAClassName}{% + Trying emergency fix for bookmark level gap,\MessageBreak + because toclevel of `#2' + (\csname toclevel@#2\endcsname)\MessageBreak + is more than 1 greater than currently highest\MessageBreak + known level (\scr@max@toclevel).\MessageBreak + Note: This fix can fail and you should load\MessageBreak + package `bookmark' to avoid usage of this\MessageBreak + fix% + }% + \expandafter\edef\csname toclevel@#2\endcsname{% + \the\numexpr \scr@max@toclevel+1\relax + }% + \fi + \expandafter\ifnum \csname toclevel@#2\endcsname + > \scr@max@toclevel\relax + \expandafter\let\expandafter\scr@max@toclevel + \csname toclevel@#2\endcsname + \fi + }% + }{}% + }% + }% + }% + \let\scr@dsc@current\relax +} +\newcommand*{\scr@declaresectioncommanderror}[3]{% + \ClassError{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown% + }{% + Please use option `#3' to declare the #2.\MessageBreak + If you'll continue, declaration will be ignored% + }% + \let\local@endgroup\endgroup + \aftergroup\@gobbletwo +} +\newcommand*{\scr@declaresectioncommandwarning}[5]{% + \ClassInfo{\KOMAClassName}{% + #2 of \expandafter\string\csname #1\endcsname\space unknown.\MessageBreak + You should use option `#3' if you\MessageBreak + do not want to use the default value\MessageBreak + `\detokenize{#4}'% + }% + \l@addto@macro\local@endgroup{#5}% +} +\newcommand*{\DeclareNewSectionCommand}[2][]{% + \@ifundefined{#2}{% + \@tempswatrue + \let\reserved@b\@empty + \@for \reserved@a:=the#2,#2mark,#2format,#2markformat\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{\expandafter\string\csname \reserved@a\endcsname}% + }% + }% + \if@tempswa + \expandafter\let\expandafter\scr@dsc@current + \csname scr@tso@##2@style\endcsname + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \edef\scr@dsc@current{##1}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \@tempswatrue + \@ifundefined{scr@dsc@current}{}{% + \scr@ifundefinedorrelax{scr@dsc@style@\scr@dsc@current @subcommands}{% + }{% + \edef\reserved@b{% + \csname scr@dsc@style@\scr@dsc@current @subcommands\endcsname{#2}% + }% + \expandafter\@for\expandafter\reserved@a\expandafter:\expandafter=% + \reserved@b\do{% + \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{% + \@tempswafalse + \edef\reserved@b{% + \expandafter\string\csname \reserved@a\endcsname}% + }% + }% + } + }% + \let\scr@dsc@current\relax + \fi + \if@tempswa + \DeclareSectionCommand[{#1}]{#2}% + \else + \ClassError{\KOMAClassName}{% + command `\reserved@b' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly.\MessageBreak + Such a section command needs an additional new command + `\reserved@b',\MessageBreak + but this already exists. So you cannot define + `\expandafter\string\csname #2\endcsname' newly.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + \fi + }{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' already defined% + }{% + You've tried to define the section command `\expandafter\string\csname + #2\endcsname' newly,\MessageBreak + but a command or something else with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be ignored.% + }% + }% +} +\newcommand*{\RedeclareSectionCommand}[2][]{% + \@ifundefined{#2}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname #2\endcsname' not defined% + }{% + You've tried to re-define the section command `\expandafter\string\csname + #2\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + If you'll continue, the command will be irgnored.% + }% + }{% + \DeclareSectionCommand[{#1}]{#2}% + }% +} +\newcommand*{\ProvideSectionCommand}[2][]{% + \@ifundefined{#2}{% + \DeclareSectionCommand[{#1}]{#2}% + }{% + \ClassInfo{\KOMAClassName}{% + \string\ProvideSectionCommand{#1} ignored% + }% + }% +} +\newcommand*{\DeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\DeclareNewSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' already + defined% + }{% + You've tried to define the section command + `\expandafter\string\csname\reserved@a\endcsname' newly,\MessageBreak + but a command, token, box or length with this name already + exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\RedeclareSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\RedeclareSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \ClassError{\KOMAClassName}{% + command `\expandafter\string\csname\reserved@a\endcsname' not defined% + }{% + You've tried to re-define the section command + `\expandafter\string\csname\reserved@a\endcsname',\MessageBreak + but a command with this name does not exists.\MessageBreak + Maybe you should use one of \string\DeclareSectionCommand, + \string\DeclareNewSectionCommand,\MessageBreak + or \string\ProvideSectionCommand.\MessageBreak + Nevertheless, if you'll continue, the command will be defined.% + }% + }{}% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\ProvideSectionCommands}[2][]{% + \edef\reserved@a{#2}% + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% + \@for\reserved@a:=\reserved@a\do{% + \scr@trim@spaces\reserved@a + \@ifundefined{\reserved@a}{% + \edef\reserved@a{% + \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% + }% + \reserved@a + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% + {\scr@local@levelincrease}% + \DefineFamilyKey[.dsc]{KOMAarg}{level}{% + \FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}% + \edef\scr@local@leveloffset{% + \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax + }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}% + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + }% + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + }% + }% + \let\scr@local@levelincrease\relax + \let\scr@local@leveloffset\relax + \let\scr@local@tocleveloffset\relax +} +\newcommand*{\IfSectionCommandStyleIs}[2]{% + \scr@ifundefinedorrelax{#1}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not defined}{% + You cannot compare the section command style of an undefined command.}% + }{% + \scr@ifundefinedorrelax{scr@#1@style}{% + \ClassError{\KOMAClassName}{% + \expandafter\string\csname #1\endcsname\space not a valid section + command% + }{% + You cannot detect the section command style of a command, that + has\MessageBreak + never been defined as a section command by KOMA-Script.% + }% + }% + }% + \scr@ifundefinedorrelax{scr@dsc@def@style@#2@command}{% + \ClassError{\KOMAClassName}{% + unknown section command style `#2'% + }{}% + }% + \Ifstr{\@nameuse{scr@#1@style}}{#2}% +} +\newcommand*{\use@preamble}[1]{% + \@ifundefined{#1@preamble}{}{% + \@nameuse{#1@preamble}% + \global\expandafter\let\csname#1@preamble\endcsname=\relax + }% +} +\newcommand*{\set@preamble}[1]{% + \kernel@ifnextchar [%] + {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}% +} +\newcommand*{\set@@preamble}{} +\def\set@@preamble#1[#2]{% + \kernel@ifnextchar [%] + {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}% +} +\newcommand{\set@@@preamble}{} +\long\def\set@@@preamble#1[#2][#3]#4{% + \begingroup + \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax + \expandafter \@tfor \expandafter \@tempa + \expandafter :\expandafter =\prmbl@pos + \do{% + \if \@tempa l% + \set@preamble@hpos{0}{#2}% + \fi% + \if \@tempa c% + \set@preamble@hpos{1}{#2}% + \fi% + \if \@tempa r% + \set@preamble@hpos{2}{#2}% + \fi% + \if \@tempa u% + \set@preamble@vpos{0}{#2}% + \fi% + \if \@tempa b% + \set@preamble@vpos{0}{#2}% + \fi + \if \@tempa o% + \set@preamble@vpos{1}{#2}% + \fi% + \if \@tempa t% + \set@preamble@vpos{1}{#2}% + \fi + }% + \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}% + \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}% + \ifcase\prmbl@hpos + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}% + \fi + \or + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}% + \fi + \else + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}% + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}% + \fi + \fi + \endgroup +} +\newcommand{\set@@@@preamble}[6]{% + \expandafter\gdef\csname #1@preamble\endcsname{% + \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% + }% +} +\newcommand*{\set@preamble@hpos}[2]{% + \@ifundefined{prbml@hpos}{% + \def\prmbl@hpos{#1}% + }{% + \ifnum \prmbl@hpos=0\relax\else% + \ClassError{\KOMAClassName}{% + inconsistent hpos options% + }{% + You've said `#2' as position option. But you have + to\MessageBreak + use only one of `l', `r', or `c' not two of + these.\MessageBreak + If you'll continue only first hpos option will be + used% + }% + \fi + }% +} +\newcommand*{\set@preamble@vpos}[2]{% + \@ifundefined{prbml@vpos}{% + \def\prmbl@vpos{#1}% + }{% + \ifnum \prmbl@vpos=0\relax\else% + \ClassError{\KOMAClassName}{% + inconsistent vpos options% + }{% + You've said `#2' as position option. But you have + to\MessageBreak + use only one of `t', `o', `b', or `u' not two of + these.\MessageBreak + If you'll continue only first vpos option will be + used% + }% + \fi + }% +} +\newcommand*\appendix{% + \Ifstr{\@currenvir}{appendix}{% + \ClassWarning{\KOMAClassName}{% + You are using + `\string\begin{appendix}...\string\end{appendix}'.\MessageBreak + You should note, that `\string\appendix' is a mostly + globally\MessageBreak + working command not an enviroment with only local\MessageBreak + effects. Therefore `\string\end{appendix}' will neither\MessageBreak + switch back to normal section numbering nor finish\MessageBreak + every other effect of `\string\begin{appendix}'.\MessageBreak + Nevertheless, some effects may end with\MessageBreak + `\string\end{appendix}' and the document may become\MessageBreak + inconsistent.\MessageBreak + Because of this, you should remove `\string\end{appendix}'\MessageBreak + and replace `\string\begin{appendix}' by command\MessageBreak + `\string\appendix'% + }% + }{}% + \par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \gdef\@chapapp{\appendixname}% + \gdef\thechapter{\@Alph\c@chapter}% +} +\IfLTXAtLeastTF{2020/10/01}{% + \g@addto@macro{\appendix}{\UseOneTimeHook{\KOMAClassName/appendix}}% +}{} +\g@addto@macro{\appendix}{\csname appendixmore\endcsname} +\newcommand*{\scr@startpart}[1]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@openright\cleardoublepage\else\clearpage\fi + \scr@ifundefinedorrelax{#1pagestyle}{}{% + \Ifstr{#1pagestyle}{}{}{% + \thispagestyle{\@nameuse{#1pagestyle}}% + }% + }% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax + \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{% + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \ifdim\@tempskipa<\z@ + \@tempskipa=-\@tempskipa + \@afterindentfalse + \fi + }% + }% + \ExecuteDoHook{heading/postinit/#1}% + \partheadstartvskip + \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}% + \vskip-\baselineskip\nobreak + \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname +} +\newcommand{\scr@@startpart}{} +\long\def\scr@@startpart#1[#2]#3{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#2=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \fi + \fi + \Ifnumbered{#1}{% + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \typeout{#1 \csname the#1\endcsname.}% + \ifx\@currenttocentry\@empty\else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}% + {\@currenttocentry}% + \fi + }{% + \expandafter\ifnum\scr@v@is@lt{3.18}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \typeout{#1 without number}% + \ifx\@currenttocentry\@empty\else + \hy@insteadofrefstepcounter{#1}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{}{\@currenttocentry}% + \fi + }% + \begingroup + \def\IfUseNumber{\Ifnumbered{#1}}% + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{\nobreak + \IfUseNumber{% + \partlineswithprefixformat{#1}{% + \usekomafont{#1prefix}{\nobreak\@nameuse{#1format}}% + \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}% + \partheadmidvskip + }{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + }% + }{% + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}% + } + }% + \expandafter\ifx\csname #1mark\endcsname\@gobble + \@mkboth{}{}% + \else + \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \fi + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \@nameuse{@end#1}% + \@afterheading +} +\newcommand{\scr@@startspart}[2]{% + \ExecuteDoHook{heading/branch/star/#1}% + \begingroup + \let\@mkboth\@gobbletwo + \hy@insteadofrefstepcounter{#1}% + \endgroup + \begingroup + \let\IfUseNumber\@secondoftwo + \ExecuteDoHook{heading/begingroup/#1}% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \raggedpart + \normalfont\usekomafont{disposition}{% + \nobreak + \partlineswithprefixformat{#1}{}{% + \usekomafont{#1}{\nobreak\interlinepenalty \@M#2\strut\@@par}% + }% + \@mkboth{}{}% + }% + \ExecuteDoHook{heading/endgroup/#1}% + \endgroup + \@nameuse{@end#1}% +} +\newcommand{\partlineswithprefixformat}[3]{% + #2#3% +} +\newcommand*{\scr@@endpart}[1]{% + \vbox to\z@{\use@preamble{#1@u}\vss}% + \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \partheadendvskip + \partheademptypage + \if@tempswa + \twocolumn + \fi +} +\newcommand*{\hy@insteadofrefstepcounter}[1]{} +\let\hy@insteadofrefstepcounter\@gobble +\newcommand*{\scr@chapter@before@hyperref@patch}{% + \let\scr@orig@chapter\@chapter + \let\scr@orig@schapter\@schapter + \let\scr@orig@addchap\@addchap +} +\BeforePackage{hyperref}{\scr@chapter@before@hyperref@patch} +\newcommand*{\scr@chapter@after@hyperref@patch}{% + \let\@chapter\scr@orig@chapter + \let\@schapter\scr@orig@schapter + \let\@addchap\scr@orig@addchap + \ifx\hy@insteadofrefstepcounter\@gobble + \renewcommand*{\hy@insteadofrefstepcounter}[1]{% + \Hy@MakeCurrentHrefAuto{##1*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \fi +} +\AfterAtEndOfPackage{hyperref}{\scr@chapter@after@hyperref@patch} +\newcommand*{\addparttocentry}[2]{% + \addtocentrydefault{part}{#1}{#2}% +} +\newcommand\addpart{% + \SecDef\@addpart\@saddpart +} +\newcommand*{\@addpart}{} +\long\def\@addpart[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \part[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \reserved@a +} +\newcommand{\@saddpart}[1]{% + \part*{#1}% + \addpartmark{}% +} +\newcounter{part} +\renewcommand*{\thepart}{\@Roman\c@part} +\newcommand*{\partformat}{\partname~\thepart\autodot} +\newcommand*\partname{Part} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\partname{Part} +\newcommand*{\partmark}[1]{\@mkboth{}{}} +\newcommand*\addpartmark[1]{% + \begingroup + \expandafter\let\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname + \c@secnumdepth=\numexpr \partnumdepth-1\relax + \partmark{#1}% + \endgroup +} +\newcommand*{\raggedpart}{} +\let\raggedpart\centering +\newkomafont{partentry}{\usekomafont{disposition}\large} +\newkomafont{partentrypagenumber}{} +\newcommand*{\scr@startchapter}[1]{% + \ExecuteDoHook{heading/preinit/#1}% + \if@openright\cleardoublepage\else\clearpage\fi + \scr@ifundefinedorrelax{#1pagestyle}{}{% + \Ifstr{#1pagestyle}{}{}{% + \thispagestyle{\@nameuse{#1pagestyle}}% + }% + }% + \global\@topnum\z@ + \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{% + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \@afterindenttrue + \@ifundefined{scr@#1@beforeskip}{\@afterindentfalse}{% + \ifdim\glueexpr\@nameuse{scr@#1@beforeskip}\relax<\z@ + \@afterindentfalse + \fi + }% + }% + }% + \ExecuteDoHook{heading/postinit/#1}% + \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname +} +\newcommand*{\scr@@startchapter}{} +\def\scr@@startchapter#1[#2]#3{% + \ExecuteDoHook{heading/branch/nostar/#1}% + \ifnum \scr@osectarg=\z@ + \@scr@tempswafalse + \else + \scr@istest#2=\@nil + \fi + \@currentusenumbertrue + \if@scr@tempswa + \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}% + \else + \ifcase \scr@osectarg\relax + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}% + \or + \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}% + \fi + \fi + \Ifnumbered{#1}{% + \@tempswatrue + }{\@tempswafalse}% + \if@tempswa + \refstepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname + \typeout{#1 \csname the#1\endcsname.}% + \ifx\@currenttocentry\@empty\else + \@ifundefined{#1tocformat}{% + \expandafter\gdef\csname #1tocformat\endcsname + {\csname the#1\endcsname}% + }{}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}% + {\@currenttocentry}% + \fi + \else + \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi + \typeout{#1 without number}% + \ifx\@currenttocentry\@empty\else + \hy@insteadofrefstepcounter{#1}% + \scr@ifundefinedorrelax{add#1tocentry}{% + \addtocentrydefault{#1}% + }{% + \@nameuse{add#1tocentry}% + }{}{\@currenttocentry}% + \fi + \fi + \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}% + \ifdim \@chapterlistsgap>\z@ + \doforeachtocfile{% + \Iftocfeature{\@currext}{chapteratlist}{% + \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}% + }{}% + }% + \@ifundefined{float@addtolists}{}{% + \scr@float@addtolists@warning + \float@addtolists{\protect\addvspace{\@chapterlistsgap}}% + }% + \fi + \scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d{#1}% + \if@twocolumn + \if@at@twocolumn + \@nameuse{@make#1head}{#3}% + \else + \@topnewpage[\@nameuse{@make#1head}{#3}]% + \fi + \else + \@nameuse{@make#1head}{#3}% + \fi + \@afterheading +} +\expandafter\ifnum\scr@v@is@ge{3.36}% + \newcommand*{\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d}[1]{% + \Ifstr{#1}{chapter}{% + \begingroup + \def\reserved@a{\scr@makechapterhead{chapter}}% + \ifx\@makechapterhead\reserved@a\else + \ClassWarningNoLine{\KOMAClassName}{% + Redefinition of \string\@makechapterhead\space detected.\MessageBreak + Note: KOMA-Script does use styles for commands like\MessageBreak + \string\chapter. Currently it internally still provides and\MessageBreak + uses \string\@makechapterhead, but a completely different\MessageBreak + definition compared to the standard classes.\MessageBreak + So redefining or using internal \string\@makechapterhead\MessageBreak + by users or package authors may already break\MessageBreak + KOMA-Script and will not work with a coming version,\MessageBreak + that will remove this deprecated code}% + \let\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d\@gobbble + \fi + \endgroup + }{}% + } +\else + \let\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d\@gobble +\fi +\newcommand*{\scr@@startschapter}[2]{% + \ExecuteDoHook{heading/branch/star/#1}% + \begingroup + \let\@mkboth\@gobbletwo + \hy@insteadofrefstepcounter{#1}% + \endgroup + \scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d{#1}% + \if@twocolumn + \if@at@twocolumn + \@nameuse{@makes#1head}{#2}% + \else + \@topnewpage[\@nameuse{@makes#1head}{#2}]% + \fi + \else + \@nameuse{@makes#1head}{#2}% + \fi + \@afterheading +} +\expandafter\ifnum\scr@v@is@ge{3.36}% + \newcommand*{\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d}[1]{% + \Ifstr{#1}{chapter}{% + \begingroup + \def\reserved@a{\scr@makeschapterhead{chapter}}% + \ifx\@makeschapterhead\reserved@a\else + \ClassWarningNoLine{\KOMAClassName}{% + Redefinition of \string\@makeschapterhead\space detected.\MessageBreak + Note: KOMA-Script does use styles for commands like\MessageBreak + \string\chapter. Currently it internally still provides and\MessageBreak + uses \string\@makeschapterhead, but a completely different\MessageBreak + definition compared to the standard classes.\MessageBreak + So redefining or using internal \string\@makeschapterhead\MessageBreak + by users or package authors may already break\MessageBreak + KOMA-Script and will not work with a coming version,\MessageBreak + that will remove this deprecated code}% + \let\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d\@gobble + \fi + \endgroup + }{}% + } +\else + \let\scr@t@st@nd@w@rn@m@ks@ch@pt@rh@@d\@gobble +\fi +%% \begin{macro}{\@at@twocolumntrue,\@at@twocolumnfalse,\if@at@twocolumn} +\newif\if@at@twocolumn +\newcommand*\scr@topnewpage{} +\let\scr@topnewpage\@topnewpage +\long\def\@topnewpage[#1]{% + \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse +} +\newcommand*{\scr@makechapterhead}[2]{% + \use@chapter@o@preamble{#1}% + \@nameuse{@@make#1head}{#2}% + \use@preamble{#1@u}% +} +\newcommand*{\scr@@makechapterhead}[2]{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else + \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi + \fi + }% + \chapterheadstartvskip + {% + \def\IfUseNumber{\Ifnumbered{#1}}% + \ExecuteDoHook{heading/begingroup/#1}% + \if@chapterprefix + \let\IfUsePrefixLine\@firstoftwo + \else + \let\IfUsePrefixLine\@secondoftwo + \fi + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% + \normalfont\usekomafont{disposition}{% + \usekomafont{#1}{% + \settoheight{\@tempskipa}{% + {\usekomafont{#1prefix}{% + \vrule \@width\z@ \@height\csname scr@#1@innerskip\endcsname}}% + }% + \raggedchapter + \IfUseNumber{% + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {{\usekomafont{#1prefix}{\csname #1format\endcsname% + \setlength{\@tempskipa}{\csname scr@#1@innerskip\endcsname}% + \chapterheadmidvskip}}}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {\csname #1format\endcsname}% + {\interlinepenalty \@M#2\@@par}% + }% + }{% + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }% + }% + }% + }% + \ExecuteDoHook{heading/endgroup/#1}% + }% + \nobreak\par\nobreak + \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax + \chapterheadendvskip +} +\newcommand*{\scr@makeschapterhead}[2]{% + \use@chapter@o@preamble{#1}% + \@nameuse{@@makes#1head}{#2}% + \use@preamble{#1@u}% +} +\newcommand*{\scr@@makeschapterhead}[2]{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \csname scr@#1@afterindent\endcsname + {\@afterindenttrue}{\@afterindentfalse}{% + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else + \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi + \fi + }% + \chapterheadstartvskip + {% + \let\IfUseNumber\@secondoftwo + \ExecuteDoHook{heading/begingroup/#1}% + \if@chapterprefix + \let\IfUsePrefixLine\@firstoftwo + \else + \let\IfUsePrefixLine\@secondoftwo + \fi + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% + \normalfont\usekomafont{disposition}{% + \usekomafont{#1}{% + \raggedchapter + \IfUsePrefixLine{% + \chapterlineswithprefixformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }{% + \chapterlinesformat{#1}% + {}% + {\interlinepenalty \@M#2\@@par}% + }% + }% + }% + \ExecuteDoHook{heading/endgroup/#1}% + }% + \nobreak\par\nobreak + \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax + \chapterheadendvskip +} +\newcommand{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3}% +} +\newcommand{\chapterlineswithprefixformat}[3]{% + #2#3% +} +\newcommand*{\use@chapter@o@preamble}[1]{% + {% + \settoheight{\@tempdima}{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \vbox{\chapterheadstartvskip}% + }% + \settodepth{\@tempdimb}{% + \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax + \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi + \vbox{\chapterheadstartvskip}% + }% + \addtolength{\@tempdima}{\@tempdimb}% + \setbox\z@\vbox{% + \use@preamble{#1@o}% + }% + \setlength{\@tempdimb}{\ht0}% + \addtolength{\@tempdimb}{\dp0}% + \vbox to \z@{% + \vskip-\baselineskip + \vbox to \@tempdima{% + \vfill + \box\z@ + }% + \vss + }\vskip-\parskip\vskip-\baselineskip + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \ifdim\@tempdimb<\vfuzz + \ClassInfo{\KOMAClassName}{% + preamble before #1 is \the\@tempdimb\space to high.\MessageBreak + Tolerated without warning because of\MessageBreak + \string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb + }% + \else + \ClassWarning{\KOMAClassName}{% + preamble before #1 is \the\@tempdimb\space to high.\MessageBreak + To avoid the overfull \string\vbox\space you may + change\MessageBreak + the `beforeskip' value using + \string\RedeclareSectionCommand\MessageBreak + at the preamble of your document.\MessageBreak + You may also change \string\setchapterpreamble\MessageBreak + before the command, which generates the message + about\MessageBreak + an overfull \string\vbox + }% + \fi + \fi% + }% +} +\newcommand*{\addchaptertocentry}[2]{% + \addtocentrydefault{chapter}{#1}{#2}% + \if@chaptertolists + \doforeachtocfile{% + \Iftocfeature{\@currext}{chapteratlist}{% + \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}% + }{}% + }% + \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}% + \fi +} +\newcommand\addchap{% + \SecDef\@addchap\@saddchap +}% +\newcommand*{\@addchap}{}% +\long\def\@addchap[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \chapter[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \chapternumdepth-1\relax + \reserved@a +} +\newcommand{\@saddchap}[1]{% + \chapter*{#1}% + \addchapmark{}% +}% +\newcommand*{\raggedchapterentry}{} +\newcommand*{\l@chapteratlist}{\l@chapter} +\newcounter{chapter} +\renewcommand*{\thechapter}{\@arabic\c@chapter} +\newcommand*{\chapterformat}{% + \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot + \IfUsePrefixLine{}{\enskip}}% +} +\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }% + \thechapter\autodot\enskip} +\newcommand*\chaptername{Chapter} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\chaptername{Chapter} +\newcommand*\appendixname{Appendix} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\appendixname{Appendix} +\newcommand*{\chapappifchapterprefix}[1]{% + \IfChapterUsesPrefixLine{\chapapp#1}{}% +} +\newcommand*{\IfChapterUsesPrefixLine}{% + \if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} +\newcommand*{\chapapp}{\@chapapp} +\newcommand*\@chapapp{\chaptername} +\newcommand*\chaptermark[1]{} +\newcommand*\addchapmark[1]{% + \begingroup + \expandafter\let\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname + \c@secnumdepth=\numexpr \chapternumdepth-1\relax + \chaptermark{#1}% + \endgroup +} +\newcommand*{\raggedchapter}{\raggedsection} +\newkomafont{chapterentry}{\usekomafont{disposition}} +\newkomafont{chapterentrypagenumber}{} +\newkomafont{chapterentrydots}{} +\newcommand\addsec{\SecDef\@addsec\@saddsec} +\newcommand*{\@addsec}{} +\def\@addsec[#1]#2{% + \edef\reserved@a{% + \unexpanded{% + \section[{#1}]{#2}% + \c@secnumdepth= + }\the\c@secnumdepth\relax + }% + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \reserved@a +} +\newcommand*{\@saddsec}[1]{% + \section*{#1}\addsecmark{}% +} +\newkomafont{minisec}{} +\newcommand\minisec[1]{% + \expandafter\ifnum\scr@v@is@lt{3.13a}\relax + \@afterindentfalse \vskip 1.5ex + \else + \if@noskipsec \leavevmode \fi + \par + \@afterindentfalse + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace{1.5ex}% + \fi + \fi + {\parindent \z@ + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}\fi + \raggedsection\normalfont\sectfont\nobreak + \usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}% + }\nobreak + \@afterheading +} +\newcommand*{\addsectiontocentry}[2]{% + \addtocentrydefault{section}{#1}{#2}% +} +\newcommand*{\addsubsectiontocentry}[2]{% + \addtocentrydefault{subsection}{#1}{#2}% +} +\newcommand*{\addparagraphtocentry}[2]{% + \addtocentrydefault{paragraph}{#1}{#2}% +} +\newcommand*{\addsubparagraphtocentry}[2]{% + \addtocentrydefault{subparagraph}{#1}{#2}% +} +\newcounter{section}[chapter] +\renewcommand*\thesection{% + \thechapter.% + \@arabic\c@section +} +\newcommand*\sectionmarkformat{\thesection\autodot\enskip} +\newcounter{subsection}[section] +\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection} +\newcounter{subsubsection}[subsection] +\renewcommand*{\thesubsubsection}{% + \thesubsection.\@arabic\c@subsubsection +} +\newcounter{paragraph}[subsubsection] +\renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph} +\newcounter{subparagraph}[paragraph] +\renewcommand*{\thesubparagraph}{% + \theparagraph.\@arabic\c@subparagraph +} +\newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip} +\renewcommand*{\@seccntformat}[1]{% + \expandafter\ifnum\scr@v@is@lt{3.17}\relax + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + \else + \scr@ifundefinedorrelax{#1format}{% + \protect\othersectionlevelsformat{#1}{% + \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + }{\expandafter\protect\csname #1format\endcsname}% + \fi +} +\newcommand*\addsecmark[1]{% + \begingroup + \c@secnumdepth=\numexpr \sectionnumdepth-1\relax + \sectionmark{#1}% + \endgroup +} +\DeclareSectionCommand[% + style=chapter,% + level=\z@,% + pagestyle=plain,% + tocstyle=chapter,% + tocindent=\z@,% + tocnumwidth=1.5em% +]{chapter} +\DeclareSectionCommand[% + style=section,% + level=1,% + indent=\z@,% + beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,% + afterskip=2.3ex \@plus.2ex,% + tocstyle=section,% + tocindentfollows=chapter,% + tocindent=1.5em,% + tocnumwidth=2.3em% +]{section} +\DeclareSectionCommand[% + style=part,% + level=\m@ne,% + pagestyle=plain,% + tocstyle=part,% + toclevel=\m@ne,% + tocindent=\z@,% + tocnumwidth=2em% +]{part} +\DeclareSectionCommand[% + style=section,% + level=2,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=section,% + tocindent=3.8em,% + tocnumwidth=3.2em% +]{subsection} +\DeclareSectionCommand[% + style=section,% + level=3,% + indent=\z@,% + beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% + afterskip=1.5ex \@plus .2ex,% + tocstyle=section,% + tocindent=7.0em,% + tocnumwidth=4.1em% +]{subsubsection} +\DeclareSectionCommand[% + style=section,% + level=4,% + indent=\z@,% + beforeskip=3.25ex \@plus1ex \@minus.2ex,% + afterskip=-1em,% + tocindentfollows=subsubsection,% + tocstyle=section,% + tocindent=10em,% + tocnumwidth=5em% +]{paragraph} +\DeclareSectionCommand[% + style=section,% + level=5,% + indent=\scr@parindent,% + beforeskip=3.25ex \@plus1ex \@minus .2ex,% + afterskip=-1em,% + tocstyle=section,% + tocindent=12em,% + tocnumwidth=6em% +]{subparagraph} +\expandafter\ifnum\scr@v@is@lt{3.15}\relax + \let\scr@subparagraph@sectionindent\parindent +\else + \def\scr@subparagraph@sectionindent{\scr@parindent}% +\fi +\newcommand*{\scr@fnt@disposition}{\sectfont} +\aliaskomafont{sectioning}{disposition} +%%% From File: $Id: scrkernel-miscellaneous.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\@addtoreset{equation}{chapter} +\renewcommand*{\theequation}{% + \thechapter.% + \@arabic\c@equation +} + +\newif\if@restonecol +\newcommand{\dictum}[2][]{\par% + \begingroup + \raggeddictum\parbox{\dictumwidth}{% + {\@dictumfont{\raggeddictumtext #2\strut\par}% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + {\raggeddictumtext\dictumrule}% + \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}% + \strut\par% + \fi% + }% + }\par% + \endgroup +} +\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}% +\newcommand*{\dictumwidth}{.3333\textwidth} +\newcommand*{\raggeddictum}{\raggedleft} +\newcommand*{\dictumauthorformat}[1]{(#1)} +\newcommand*{\raggeddictumtext}{\raggedright} +\newcommand*{\raggeddictumauthor}{\raggedleft} +\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small} +\newkomafont{dictumauthor}{\itshape} +\aliaskomafont{dictumtext}{dictum} +\setlength{\skip\@mpfootins}{\skip\footins} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\newcommand*{\new@tpo@label}{\@newl@bel{tpo}} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\new@tpo@label[2]{}% + }% + \fi +} +\newcommand*{\scr@tpo}{0} +\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{% + \@bsphack + \begingroup + \@tempcnta=\scr@tpo + \advance\@tempcnta by\@ne + \xdef\scr@tpo{\the\@tempcnta}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax + \protect\G@refundefinedtrue + \ClassWarning{\KOMAClassName}{% + odd/even page label number \scr@tpo\space undefined}% + \edef\@tempa{\the\value{page}}% + \else + \edef\@tempa{\csname tpo@\scr@tpo\endcsname}% + \fi + \ifodd\number\@tempa + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup + \edef\is@thispageodd@setlabel{% + \if@filesw + \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{% + \noexpand\string + \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}% + \fi + \noexpand\def\noexpand\is@thispageodd@setlabel + {\unexpanded\expandafter{\is@thispageodd@setlabel}}% + }% + #1% + \@esphack +} +\newcommand*{\is@thispageodd@setlabel}{} +\newif\ifthispagewasodd +\providecommand*{\ifthispageodd}{% + \ClassWarning{\KOMAClassName}{% + Usage of deprecated command + `\string\ifthispageodd'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'% + }% + \Ifthispageodd +} +\newcommand{\Ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand\marginline[1]{% + \marginpar[\raggedleft{#1}]{\raggedright #1}% +} +\scr@ifundefinedorrelax{textsubscript}{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% +}{% + \scr@ifundefinedorrelax{textsubscript }{% + \DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}% + }% + }{}% +} +\providecommand*{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% +} +\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi} +\newcommand*{\scr@package@not@recommended}[2]{% + \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}% + \reserved@a + \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi + }{% + \BeforePackage{#1}{% + \ClassWarning{\KOMAClassName}{% + Usage of package `#1' together\MessageBreak + with a KOMA-Script class is not recommended.\MessageBreak + \if\relax\detokenize{#2}\relax\else + I'd suggest to use #2.\MessageBreak + \fi + Nevertheless, using requested\MessageBreak + package `#1'% + }% + }% + }% +}% +\scr@package@not@recommended{emptypage}{% + option\MessageBreak + `cleardoublepage' with one of it's\MessageBreak + several values} +\scr@package@not@recommended{fancyhdr}{% + \MessageBreak + package `scrlayer' or `scrlayer-scrpage', because\MessageBreak + they support KOMA-Script classes.\MessageBreak + With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak + like options `headsepline', `footsepline' or command\MessageBreak + `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak + `\string\addtokomafont' for the page style elements need\MessageBreak + explicite user intervention to work} +\scr@package@not@recommended{minitoc}{} +\scr@package@not@recommended{multitoc}{% + package `multicol' and, e.g.:\MessageBreak + \space\space + \string\BeforeStartingTOC{\string\begin{multicols}{2}}\MessageBreak + \space\space + \string\AfterStartingTOC{\string\end{multicols}}\MessageBreak + to make all ToCs two-columned.\MessageBreak + \@ifpackagelater{2018/07/18}{}{% + Note, package `multitoc' breaks additional\MessageBreak + ToCs generated by `\string\DeclareNewTOC' or\MessageBreak + packages like `listings' or `newcaption' and\MessageBreak + even the standard table of contents,\MessageBreak + list of figures or list of tables,\MessageBreak + if you omit the corresponding options `toc',\MessageBreak + `lof' or `lot'.% + }% +} +\scr@package@not@recommended{parskip}{% + option\MessageBreak + `parskip' with one of it's several values} +\scr@package@not@recommended{titleps}{% + package `scrlayer-scrpage'} +\scr@package@not@recommended{titlesec}{% + KOMA-Script features\MessageBreak + like \string\setkomafont, \string\RedeclareSectionCommand, + \string\sectionlinesformat\MessageBreak + and several others to re-configure section\MessageBreak + headings} +\AfterPackage*{sectsty}{% + \@ifpackagelater{sectsty}{2002/02/26}{% + \ClassInfo{\KOMAClassName}{Unknown `sectsty' release.\MessageBreak + Cross your fingers, that is compatible% + }% + }{% + \ClassWarning{\KOMAClassName}{% + Incompatible package `sectsty' loaded!\MessageBreak + Package `sectsty' up to version 2.0.2 is incompatible\MessageBreak + with KOMA-Script from version 2.8e released in 2001.\MessageBreak + You should avoid that package and configure the\MessageBreak + section titles of your document using the KOMA-Script\MessageBreak + user interface, e.g., \string\chapterlinesformat,\MessageBreak + \string\RedeclareSectionCommand\space etc. or you should ask\MessageBreak + the `sectsty' maintainer for a more compatible release.\MessageBreak + Ignoring this warning could result in several error\MessageBreak + messages and formatting issues after loading package\MessageBreak + `sectsty'% + }% + }% +} +\scr@package@not@recommended{tocbibind}{% + options like `listof=totoc'\MessageBreak + or `bibliography=totoc', or commands like\MessageBreak + `\string\setuptoc{toc}{totoc}' instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables, bibliography,\MessageBreak + index and the running head% +} +\scr@package@not@recommended{tocloft}{% + options like `listof=entryprefix',\MessageBreak + commands like `\string\listoflofentryname' or\MessageBreak + `\string\listoflotentryname', + and `\string\DeclareTOCStyleEntry' or\MessageBreak + `\string\RedeclareSectionCommand' + instead of this package,\MessageBreak + because it breaks several KOMA-Script features of\MessageBreak + the list of figures, list of tables and table of\MessageBreak + contents, i.e., options like `listof=numbered',\MessageBreak + `listof=flat or `toc=flat', commands like\MessageBreak + `\string\BeforeTOCHead{...}' and + `\string\AfterTOCHead{...}',\MessageBreak + `\string\BeforeStartingTOC{...}' and + \string\AfterStartingTOC{...}',\MessageBreak + all features of `\string\DeclareTOCStyleEntry',\MessageBreak + and the ToC entry features of `\string\DeclareSecionCommand'\MessageBreak + and `\string\RedeclareSectionCommand' of levels\MessageBreak + `part', + `section', `subsection',\MessageBreak + `subsubsection', `paragraph' and `subparagraph'% +} +\BeforePackage{minitoc}{% + \let\scr@mt@saved@sect\@sect +} +\AfterPackage{minitoc}{% + \def\@tempa#1#2#3#4#5#6[#7]#8{% + \ifnum #2<1 \relax + \addtocontents{toc}{\protect\sectbegin} + \fi + \stc@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}% + }% + \ifx\@sect\@tempa + \def\@tempa#1#2#3#4#5#6[#7]#8{ + \expandafter + \ifx\csname #1\endcsname\section\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifx\csname #1\endcsname\starsection\relax + \addcontentsline{lof}{xsect}{#7}% + \addcontentsline{lot}{xsect}{#7}% + \fi + \ifnum #2>\c@secnumdepth\relax + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \edef\@svsec{\csname the#1\endcsname\hskip 1em}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}% + {\interlinepenalty \@M #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7% + }% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth\relax + \else + \protect\numberline{\csname the#1\endcsname} + \fi + #7}% + }% + \fi + \@xsect{#5}% + }% + \ifx\stc@sect\@tempa + \ClassWarning{\KOMAClassName}{% + Redefining minitoc's internal command + `\string\stc@sect'\MessageBreak + to prevent minitoc to destroy several features\MessageBreak + of KOMA-Script% + }% + \let\stc@sect\scr@mt@saved@sect + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\stc@sect'% + }% + \let\scr@mt@saved@sect\relax + \fi + \else + \ifx\@sect\scr@mt@saved@sect + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround for + `\string\@sect',\MessageBreak + because it is not needed% + }% + \else + \ClassInfo{\KOMAClassName}{% + Deactivating the `minitoc' workaround,\MessageBreak + because of unexpected definition of\MessageBreak + `\string\@sect'% + }% + \fi + \let\scr@mt@saved@sect\relax + \fi +} +%%% From File: $Id: scrkernel-pagestyles.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\set@tempdima@hw}{% + \setlength{\@tempdima}{\textwidth}% + \if@mincl + \addtolength{\@tempdima}{\marginparsep}% + \addtolength{\@tempdima}{\marginparwidth}% + \fi +} +\newcommand*{\pnumfont}{\normalfont\normalcolor} +\newcommand*{\headfont}{\normalfont\normalcolor\slshape} +\newcommand*{\footfont}{} +\newcommand*{\scr@fnt@pagenumber}{\pnumfont} +\aliaskomafont{pagination}{pagenumber} +\newcommand*{\scr@fnt@pageheadfoot}{\headfont} +\aliaskomafont{pagehead}{pageheadfoot} +\newcommand*{\scr@fnt@pagefoot}{\footfont} +\newcommand*{\scr@fnt@wrn@pagefoot}[1]{% + This class does not use font element `pagefoot'!\MessageBreak + Maybe you should load package `scrlayer-scrpage',\MessageBreak + before using this element% +} +\newcommand*{% + \pagemark +}{% + {\usekomafont{pagenumber}{% + \thepage}}} +\renewcommand*{\ps@plain}{% + \renewcommand*{\@oddhead}{}% + \let\@evenhead\@oddhead + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% +}% +\newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\chaptermark}[1]{% + \if@twoside\expandafter\markboth\else\expandafter\markright\fi + {\MakeMarkcase{\Ifnumbered{chapter}{% + \chaptermarkformat + }{}##1}% + }{}% + }% + \renewcommand*{\sectionmark}[1]{% + \if@twoside + \markright{\MakeMarkcase{\Ifnumbered{section}{\sectionmarkformat}{}% + ##1}}% + \fi + }% +}% +\newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark + \if@twoside\else\hfil\fi}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\hfil\pagemark + \if@twoside\else\hfil\fi}}}}\hss}% + \renewcommand*{\chaptermark}[1]{}% + \renewcommand*{\sectionmark}[1]{}% +} +\newcommand*{\titlepagestyle}{plain} +\newcommand*{\indexpagestyle}{plain} +\pagestyle{plain} +\pagenumbering{arabic} +%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $ +%%% (run: body) +\providecommand*{\@mkleft}{% + \IfActiveMkBoth{\markleft}{\@gobble}% +}% +\providecommand*{\@mkright}{% + \IfActiveMkBoth{\markright}{\@gobble}% +}% +\providecommand{\@mkdouble}[1]{% + \@mkboth{#1}{#1}% +} +%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newlength{\abovecaptionskip} +\newlength{\belowcaptionskip} +\setlength{\abovecaptionskip}{10\p@} +\setlength{\belowcaptionskip}{0\p@} +\newcommand*{\captionformat}{:\ } +\newcommand{\scr@caption}{} +\AtBeginDocument{\let\scr@caption\caption} +\newcommand{\captionabove}{\@captionabovetrue\scr@caption} +\newcommand{\captionbelow}{\@captionabovefalse\scr@caption} +\newcommand*{\scap@caption}{} +\newcommand*{\scap@width}{\linewidth} +\newcommand*{\scap@move}{\z@} +\newif\ifscap@alt +\newcommand*{\scap@currentlabel}{} +\newcommand*{\@captionbeside}{} +\long\def\@captionbeside[#1]#2{% + \kernel@ifnextchar [%] + {\@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@captionbeside}{} +\long\def\@@captionbeside[#1]#2[#3]{% + \def\scap@pos{#3}% + \kernel@ifnextchar [%] + {\@@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@captionbeside}{} +\long\def\@@@captionbeside[#1]#2[#3]{% + \def\scap@width{#3}% + \kernel@ifnextchar [%] + {\@@@@captionbeside[{#1}]{#2}} + {\setlength{\@tempdima}{#3}% + \addtolength{\@tempdima}{-\linewidth}% + \setlength{\@tempdima}{-.5\@tempdima}% + \edef\scap@move{\the\@tempdima}% + \c@pti@nb@sid@[{#1}]{#2}}% +} +\newcommand*{\@@@@captionbeside}{} +\long\def\@@@@captionbeside[#1]#2[#3]{% + \def\scap@move{#3}% + \kernel@ifstar + {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}} + {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}% +} +\newbox\c@pti@nb@sid@b@x +\newcommand{\c@pti@nb@sid@}{} +\long\def\c@pti@nb@sid@[#1]#2{% + \def\scap@caption{% + \if c\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \else \if t\scap@valign + \setlength{\abovecaptionskip}{-\ht\strutbox}% + \else \if b\scap@valign + \setlength{\abovecaptionskip}{\z@}% + \fi + \fi + \fi + \setlength{\belowcaptionskip}{-\dp\strutbox}% + \captionbelow[{#1}]{#2}% + }% + \begin{lrbox}{\c@pti@nb@sid@b@x}% +} +\newenvironment*{captionbeside}{% + \@dblarg\@captionbeside +}{% + \end{lrbox}% + \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}% + \setlength{\@tempdimb}{\scap@width}% + \addtolength{\@tempdimb}{-\@tempdima}% + \addtolength{\@tempdimb}{-\columnsep}% + \ifdim \@tempdimb<2em + \ClassWarning{\KOMAClassName}{% + caption beside will be very, very small.\MessageBreak + In most cases this will result in overfull and\MessageBreak + underfull \string\hbox\space messages% + }% + \fi + \onelinecaptionsfalse + \setcapwidth[r]{\@tempdimb}% + \let\@tempa\scap@pos + \setlength{\@tempdimc}{\scap@move}% + \if i\scap@pos\def\@tempa{l}\fi + \if o\scap@pos\def\@tempa{r}\fi + \if@twoside + \Ifthispageodd{}{% + \if o\scap@pos\def\@tempa{l}\fi + \if i\scap@pos\def\@tempa{r}\fi + \ifscap@alt + \addtolength{\@tempdimc}{\scap@width}% + \addtolength{\@tempdimc}{-\linewidth}% + \setlength{\@tempdimc}{-\@tempdimc}% + \fi + }% + \fi + \hspace*{\@tempdimc}% + \if l\@tempa + \rlap{% + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + }% + \else + \rlap{% + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + \nobreak\hskip\columnsep + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + }% + \fi + \par + \aftergroup\let\aftergroup\@currentlabel + \aftergroup\scap@currentlabel +} +\newcommand*\capfont{\normalfont\normalcolor} +\newcommand*\caplabelfont{\normalfont\normalcolor} +\newcommand*{\scr@fnt@caption}{\capfont} +\newcommand*{\scr@fnt@captionlabel}{\caplabelfont} +\newif\ifdofullc@p +\dofullc@ptrue +\newif\if@capbreak +\@capbreakfalse +\newcommand*{\setcapindent}{\kernel@ifstar{\@@setcapindent}{\@setcapindent}} +\newcommand*{\@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \ifdim\@tempdima>\hsize + \addtolength{\@tempdima}{-\hsize}\@capbreaktrue + \else + \@capbreakfalse + \fi + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse +} +\newcommand*{\@@setcapindent}[1]{% + \setlength{\@tempdima}{#1}% + \edef\cap@indent{\the\@tempdima}% + \dofullc@pfalse\@capbreaktrue +} +\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse} +\newcommand{\@makecaption}[2]{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + \@@makecaption\@firstofone{#1}{#2}% + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi +} +\newcommand*{\cap@width}{\hsize} +\newcommand*{\cap@left}{\hfill} +\newcommand*{\cap@right}{\hfill} +\newcommand*{\setcapwidth}[2][]{% + \begingroup% + \setlength{\@tempdima}{#2}% + \ifdim\@tempdima <\z@ + \@tempdima\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \fi + \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}% + \@tempa + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\setcapdynwidth}[2][]{% + \def\cap@width{#2}% + \begingroup + \edef\@tempa{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \ifdim \cap@width<\z@ + \ClassWarning{\KOMAClassName}{% + caption width less than 0pt not allowed.\MessageBreak + Setting caption width to 0pt% + }% + \let\cap@width\z@ + \fi + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \Ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{\KOMAClassName}{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi + \endgroup + \fi\fi\fi\fi\fi +} +\newcommand*{\cap@margin}{} +\let\cap@margin=\relax% +\newcommand*{\setcapmargin}{\kernel@ifstar{\@setcapmargin}{\@@setcapmargin}} +\newcommand*{\@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \noexpand\if@twoside + \noexpand\Ifthispageodd{% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }{% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}% + }% + \noexpand\else + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + \noexpand\fi + }% + \@tempa + }% +} +\newcommand*{\@@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse + \begingroup + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup + \def\noexpand\cap@width{\the\@tempdima}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }% + \@tempa + }% +} +\newcommand{\@@makecaption}[3]{% + \cap@margin + \begingroup + \ifonelinecaptions + \def\stepcounter##1{\advance\value{##1}\@ne}% + \let\refstepcounter\stepcounter + \let\label\@gobble + \let\@footnotetext=\@gobble + \let\hypertarget\@gobbletwo + \edef\@xnewline{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xnewline}% + }% + \edef\@xcentercr{% + \unexpanded{\ClassInfo{\KOMAClassName}{% + Workaround for not recommended usage of \string\\ or\MessageBreak + \string\newline in caption text + }% + \hspace*{\linewidth}\hspace{1sp}% + }% + \unexpanded\expandafter{\@xcentercr}% + }% + \settowidth{\@tempdima}{\scr@@makesinglelinecaption{#1}{#2}{#3}}% + \ifdim\@tempdima>\cap@width + \aftergroup\scr@makemultilinecaption + \else + \aftergroup\scr@makesinglelinecaption + \fi + \else + \aftergroup\scr@makemultilinecaption + \fi + \endgroup + {#1}{#2}{#3}% +} +\newcommand{\scr@makesinglelinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \scr@@makesinglelinecaption{#1}{#2}{#3}% + \cap@right + }\par\kern\dp\strutbox% + }% + }\kern-\dp\strutbox +} +\newcommand{\scr@@makesinglelinecaption}[3]{% + \usekomafont{caption}{\strut\ignorespaces + #1{{\usekomafont{captionlabel}{#2\captionformat}}}% + \ignorespaces #3\unskip}% +} +\newcommand{\scr@makemultilinecaption}[3]{% + {% + \usefontofkomafont{caption}{% + \hb@xt@\hsize{% + \cap@left + \vbox{\hsize\cap@width\linewidth\hsize + \scr@ifundefinedorrelax{@captype}{% + \ClassWarning{\KOMAClassName}{% + `\string\caption' outside float.\MessageBreak + Seems you are using `\string\caption' outside a + float.\MessageBreak + Maybe you are using a package that uses + `\string\@makecaption'\MessageBreak + without setting `\string\@captype' before.\MessageBreak + Because I cannot detect the caption type, I'm using\MessageBreak + the empty one.% + }% + \let\@captype\@empty + }{}% + \scr@ifundefinedorrelax{ragged\@captype caption}{\raggedcaption}{% + \@nameuse{ragged\@captype caption}% + }% + \ifdofullc@p + \@hangfrom{% + \strut + \scr@smashdp{% + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \ifdim\cap@indent<\z@ + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent{\usekomafont{caption}{% + \hspace*{-\cap@indent}#3\scr@endstrut\par + }}% + \else + \if@capbreak + \strut + #1{% + \usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat\par}% + }% + }% + \noindent\@hangfrom{\hspace*{\cap@indent}}% + {\usekomafont{caption}{#3\scr@endstrut\par}}% + \else + \@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}% + {% + \hspace{-\cap@indent}% + \scr@smashdp{% + #1{\usekomafont{caption}{% + \usekomafont{captionlabel}{#2\captionformat}% + }% + }% + }% + {\usekomafont{caption}{#3\scr@endstrut}\par}% + }% + \fi + \fi + \fi + }% + \cap@right + }\par\kern\dp\strutbox + }% + }\kern-\dp\strutbox +} +\newcommand*\setcaptionalignment{% + \kernel@ifnextchar [%] + {\@setcaptionalignment} + {% + \scr@ifundefinedorrelax{@captype}{\@setcaptionalignment}{% + \edef\reserved@a{\noexpand\@setcaptionalignment[{\@captype}]}\reserved@a + }% + }% +}% +\newcommand*\@setcaptionalignment[2][]{% + \IfArgIsEmpty{#1}{}{% + \expandafter\ifnum + \scr@ifundefinedorrelax{#1}{0}{\scr@ifundefinedorrelax{end#1}{0}{1}}=0 + \ClassWarning{\KOMAClassName}{% + float type `#1' defined not yet,\MessageBreak + but setting ragged mode for captions of\MessageBreak + float type `#1'% + }% + \fi + }% + \def\reserved@a{#2}% + \Ifstr{\reserved@a}{j}{% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \Ifstr{\reserved@a}{l}{% + \scr@ifundefinedorrelax{LaTeXraggedright}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedright + }% + }{% + \Ifstr{\reserved@a}{r}{% + \scr@ifundefinedorrelax{LaTeXraggedleft}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedleft + }% + }{% + \Ifstr{\reserved@a}{c}{% + \scr@ifundefinedorrelax{LaTeXcentering}{% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXcentering + }% + }{% + \Ifstr{\reserved@a}{J}{% + \scr@ifundefinedorrelax{justifying}{% + \scr@caption@raggede@warning{J}{\justifying}% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \expandafter\let\csname ragged#1caption\endcsname\justifying + }% + }{% + \Ifstr{\reserved@a}{L}{% + \scr@ifundefinedorrelax{RaggedRight}{% + \scr@caption@raggede@warning{L}{\RaggedRight}% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedRight + }% + }{% + \Ifstr{\reserved@a}{R}{% + \scr@ifundefinedorrelax{RaggedLeft}{% + \scr@caption@raggede@warning{R}{\RaggedLeft}% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedLeft + }% + }{% + \Ifstr{\reserved@a}{C}{% + \scr@ifundefinedorrelax{Centering}{% + \scr@caption@raggede@warning{C}{\Centering}% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\Centering + }% + }{% + \Ifstr{\reserved@a}{}{% + \expandafter\let\csname ragged#1caption\endcsname\relax + }{% + \ClassError{\KOMAClassName}{unknown alignment char `#2'}{% + \string\setcaptionalignment\space supports + only:\MessageBreak + \space\space c - centered captions,\MessageBreak + \space\space j - justified captions,\MessageBreak + \space\space l - left align captions,\MessageBreak + \space\space r - right aligned captions,\MessageBreak + \space\space C - centered captions with + `ragged2e',\MessageBreak + \space\space J - justified captions with + `ragged2e',\MessageBreak + \space\space L - left align captions with + `ragged2e',\MessageBreak + \space\space R - right aligned captions with + `ragged2e',\MessageBreak + or an empty argument to remove special + alignment.\MessageBreak + If you'd continue, I'd not change the alignment.% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +\newcommand*{\scr@caption@raggede@warning}[2]{% + \begingroup + \lowercase{\def\reserved@a{#1}}% + \ClassWarning{\KOMAClassName}{% + `\string#2' undefined!\MessageBreak + To avoid replacing caption alignment `#1' by `\reserved@a'\MessageBreak + you should load package `ragged2e' before using\MessageBreak + `\string\setcaptionalignment'% + }% + \endgroup +} +\newcommand*\raggedcaption{} +\newcommand*{\scr@caption@before@longtable@warning}[1]{% + \ClassWarning{\KOMAClassName}{% + you've loaded package `#1' before package\MessageBreak + `longtable'!\MessageBreak + Because of this package `#1' isn't able to\MessageBreak + control `\string\caption' at longtables. \space After loading + \MessageBreak + package `#1' KOMA-Script also doesn't control\MessageBreak + `\string\caption'.\MessageBreak + I think, you should load package `caption' after\MessageBreak + package `longtable'% + }% +} +\AfterPackage{longtable}{% + \if@komalongtable + \renewcommand{\LT@makecaption}[3]{% + \noalign{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + }% + \LT@mcol\LT@cols c{% + \hbox to\z@{\hss\parbox[t]\linewidth{% + \def\@captype{table}% + \@@makecaption{#1}{#2}{#3}% + \endgraf + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi + }% + \hss + }% + }% + }% + \newcommand*{\scr@LT@array}{}% + \let\scr@LT@array=\LT@array + \renewcommand*{\LT@array}{% + \let\scr@caption=\LT@caption + \def\captionabove{\noalign{\global\@captionabovetrue}% + \scr@caption}% + \def\captionbelow{\noalign{\global\@captionabovefalse}% + \scr@caption}% + \if@tablecaptionabove + \let\LT@caption=\captionabove + \else + \let\LT@caption=\captionbelow + \fi + \scr@LT@array + }% + \ClassInfo{\KOMAClassName}{% + longtable captions redefined% + }% + \fi +} +\newcommand*{\fs@komaabove}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iftrue} +\newcommand*{\fs@komabelow}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip}% + \let\@fs@post\@empty + \let\@fs@iftopcapt\iffalse} +\newcommand{\floatc@komascript}{\@@makecaption\@firstofone} +\setcounter{topnumber}{2} +\renewcommand*\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand*\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand*\textfraction{.2} +\renewcommand*\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand*\dbltopfraction{.7} +\renewcommand*\dblfloatpagefraction{.5} +\newcommand*{\captionof}[1]{\def\@captype{#1}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@#1captionabove\endcsname\iftrue + \@captionabovetrue + \fi + \scr@caption} +\newcommand*{\captionaboveof}{\@captionabovetrue\captionof} +\newcommand*{\captionbelowof}{\@captionabovefalse\captionof} +\BeforePackage{capt-of}{\let\captionof\relax} +\newenvironment{captionofbeside}[1]{% + \def\@captype{#1}% + \captionbeside +}{% + \endcaptionbeside +} +\newcommand*\figurename{Figure} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\figurename{Figure} +\newcommand*\tablename{Table} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\tablename{Table} +\DeclareNewTOC[% + type=figure, + float, + nonfloat, + counterwithin=chapter, + floatpos=tbp, + floattype=1, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@figurecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lof} +\expandafter\ifnum\scr@v@is@le{2.97d}% + \renewcommand*\thefigure{\thechapter.\@arabic\c@figure} +\fi +\DeclareNewTOC[% + type=table, + float, + nonfloat, + counterwithin=chapter, + floatpos=tbp, + floattype=2, + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@tablecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +]{lot} +\expandafter\ifnum\scr@v@is@le{2.97d}% + \renewcommand*\thetable{\thechapter.\@arabic\c@table} +\fi +%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\renewcommand*\footnoterule{% + \normalsize\ftn@rule@test@values + \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax + \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi + {\usekomafont{footnoterule}{% + \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}% + \kern 2.6\p@} +\newcommand*{\ftn@rule@test@values}{% + \ifdim\ftn@rule@height <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + less than 0% + }% + \else + \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the\MessageBreak + height of the footnote rule has a value\MessageBreak + greater than \the\dimexpr\skip\footins -2.6\p@\relax + }% + \fi + \fi + \ifdim\ftn@rule@width <\z@ + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + less than 0pt% + }% + \else + \ifdim\ftn@rule@width >\columnwidth + \ClassWarning{\KOMAClassName}{% + You might get into trouble, because the width\MessageBreak + or length of the footnote rule has a value\MessageBreak + greater than \string\columnwidth + }% + \fi + \fi +} +\newkomafont{footnoterule}{} +\newcommand*{\ftn@rule@width}{.4\columnwidth} +\newcommand*{\ftn@rule@height}{.4\p@} +\newcommand*{\setfootnoterule}[2][]{% + \IfArgIsEmpty{#1}{}{% + \renewcommand*{\ftn@rule@height}{#1}% + }% + \IfArgIsEmpty{#2}{}{% + \renewcommand*{\ftn@rule@width}{#2}% + }% + \ftn@rule@test@values +} +\@addtoreset{footnote}{chapter} +\newcommand\deffootnote[4][]{% + \expandafter\ifnum\scr@v@is@ge{3.22}\relax + \long\def\@makefntext##1{% + \ExecuteDoHook{footnote/text/begin}% + \raggedfootnote + \leftskip #2 + \l@addto@macro\@trivlist{% + \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi + }% + \parindent #3\noindent + \IfArgIsEmpty{#1}{}{% + \hskip \dimexpr #1-#2\relax + }% + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + \ExecuteDoHook{footnote/text/end}% + }% + \else + \ClassInfo{\KOMAClassName}{% + Using old \string\@makefntext\space due to compatibility + level\MessageBreak + less than 3.22}% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2}% + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1}% + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2}% + \parshape \tw@ #1 \@tempdima #2 \@tempdimb + }% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% + }% + \fi + \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% +} +\newcommand*{\raggedfootnote}{} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\aliaskomafont{footnotenumber}{footnotelabel} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\aliaskomafont{footnotetext}{footnote} +\newcommand*\deffootnotemark[1]{% + \def\@makefnmark{\hbox{\ftntm@font{#1}}}% +} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\aliaskomafont{footnoteref}{footnotereference} +\aliaskomafont{footnotemark}{footnotereference} +\newcommand*{\FN@mf@check}{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern\multiplefootnoteseparator + \spacefactor\@x@sf\relax + \fi +} +\newcommand*{\scr@mf@prepare}{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax +} +\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{} +\newcommand{\scr@saved@footnotetext}{} +\let\scr@saved@footnotetext\@footnotetext +\renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname +} +\BeforePackage{footmisc}{% + \ifx\@footnotemark\scr@footnotemark + \let\@footnotemark\scr@saved@footnotemark + \fi + \let\@footnotetext\scr@saved@footnotetext +} +\BeforePackage{setspace}{% + \let\@footnotetext\scr@saved@footnotetext +} +\AfterPackage{setspace}{% + \let\scr@saved@footnotetext\@footnotetext + \renewcommand{\@footnotetext}[1]{% + \scr@saved@footnotetext{#1}% + \csname FN@mf@prepare\endcsname + }% +} +\newcommand*{\multiplefootnoteseparator}{% + \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup +} +\newcommand*{\multfootsep}{,} +\newcommand*{\multiplefootnotemarker}{3sp} +\newcommand*{\thefootnotemark}{\@thefnmark} +\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}} +\deffootnotemark{\textsuperscript{\thefootnotemark}} +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $ +%%% (run: body) +\g@addto@macro{\numberline@numberpostfix}{\autodot} +\usetocbasicnumberline[% + \ClassInfo{\KOMAClassName}{Redefining `\string\numberline'}% +] +\doforeachtocfile[float]{% + \setuptoc{\@currext}{chapteratlist}% +} +\AtAddToTocList[float]{% + \setuptoc{\@currext}{chapteratlist}% +} +\newcommand*{\scr@dottedtocline}{} +\newcommand*{\last@l@number}{} +\newcommand*{\@l@number}{} +\newcommand*{\set@l@number}[1]{% + \settowidth{\@tempdima}{#1\enskip}% + \ifdim\@tempdima >\@l@number + \xdef\@l@number{\the\@tempdima}% + \fi% + \ifdim\@tempdima >\last@l@number \else + \setlength{\@tempdima}{\last@l@number}% + \fi% +} +\newcommand*{\before@starttoc}[1]{% + \let\scr@dottedtocline=\@dottedtocline + \renewcommand*{\@dottedtocline}[3]{% + \scr@dottedtocline{##1}{\z@}{\last@l@number}}% + \renewcommand*{\numberline@box}[1]{% + \set@l@number{##1}\hb@xt@\@tempdima{##1}}% + \gdef\@l@number{\z@}% + \@ifundefined{#1@l@number}{% + \def\last@l@number{2em}% + }{% + \expandafter\ifx\csname #1@l@number\endcsname\@empty + \let\last@l@number\z@ + \else + \expandafter\let\expandafter\last@l@number + \expandafter=\csname#1@l@number\endcsname + \fi + }% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do##1{% + \scr@ifundefinedorrelax{scr@tso@##1@numwidth}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@numwidth}{\last@l@number}% + }% + }% + \scr@ifundefinedorrelax{scr@tso@##1@indent}{}{% + \l@addto@macro\do@endgroup{% + \@namedef{scr@tso@##1@indent}{\z@}% + }% + }% + }% + \@nameuse{scr@dte@donumwidth}% + \do@endgroup +} +\newcommand*{\after@starttoc}[1]{% + \protected@write\@auxout{}{% + \string\gdef\expandafter\string\csname#1@l@number\endcsname{% + \@l@number}}% +} +\g@addto@macro\tocbasic@@before@hook{% + \if@dynlist\expandafter\before@starttoc\expandafter{\@currext}\fi +} +\g@addto@macro\tocbasic@@after@hook{% + \if@dynlist\expandafter\after@starttoc\expandafter{\@currext}\fi +} +\newcommand*\contentsname{Contents} +\newcommand*\listoftocname{\contentsname} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\contentsname{Contents}% +\setcounter{tocdepth}{2} +\newcommand*\toc@heading{% + \ClassWarning{\KOMAClassName}{% + usage of deprecated \string\toc@heading!\MessageBreak + You should use the features of package `tocbasic'\MessageBreak + instead of \string\toc@heading.\MessageBreak + Definition of \string\toc@heading\space may be removed from\MessageBreak + KOMA-Script soon, so it should not be used% + }% + \chapter*{\contentsname}% + \@mkboth{\MakeMarkcase{\contentsname}}{\MakeMarkcase{\contentsname}}% +} +\newcommand*{\toc@l@number}{} +\newcommand*{\tableofcontents}{% + \begingroup + \let\if@dynlist\if@tocleft + \expandafter\listoftoc\expandafter{\ext@toc}% + \endgroup +} +\newcommand{\addtocentrydefault}[3]{% + \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}% +} +\newcommand*{\float@listhead}[1]{% + \scr@float@listhead@warning + \float@@listhead{#1}% + \@mkboth{\MakeMarkcase{#1}}{\MakeMarkcase{#1}}% + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}% + }% + \fi +} +\newcommand*{\scr@float@listhead@warning}{% + \ClassWarning{\KOMAClassName}{% + \string\float@listhead\space detected!\MessageBreak + Implementation of \string\float@listhead\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Maybe implementation of \string\float@listhead\space will\MessageBreak + be removed from KOMA-Script soon.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@listhead\space interface% + }% +} +\newcommand*{\scr@float@addtolists@warning}{% + \ClassWarningNoLine{\KOMAClassName}{% + \string\float@addtolists\space detected!\MessageBreak + Implementation of \string\float@addtolist\space became\MessageBreak + deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak + has been replaced by several more flexible\MessageBreak + features of package `tocbasic`.\MessageBreak + Since Version 3.12 support for deprecated\MessageBreak + \string\float@addtolist\space interface has been\MessageBreak + restricted to only some of the KOMA-Script\MessageBreak + features and been removed from others.\MessageBreak + Loading of package `scrhack' may help to\MessageBreak + avoid this warning, if you are using a\MessageBreak + a package that still implements the\MessageBreak + deprecated \string\float@addtolist\space interface% + }% + \global\let\scr@float@addtolists@warning\relax +} +\renewcommand*\listfigurename{List of Figures} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listfigurename{List of Figures} +\renewcommand*\listoflofname{\listfigurename} +\renewcommand*\listoflofentryname{\figurename} +\renewcommand*\listtablename{List of Tables} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\listtablename{List of Tables} +\renewcommand*\listoflotname{\listtablename} +\renewcommand*\listoflotentryname{\tablename} +%%% From File: $Id: scrkernel-bibliography.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*\bibname{Bibliography} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\bibname{Bibliography} +\newcommand*{\bibpreamble}{\relax} +\let\bibpreamble\relax +\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}} +\newdimen\bibindent +\bibindent=1.5em +\newenvironment{thebibliography}[1]{% + \if@bib@break@ + \bib@beginhook + \else + \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else + \setchapterpreamble{\bibpreamble}% + \fi\fi + \bib@heading + \bib@beginhook + \bib@before@hook + \fi + \renewcommand{\BreakBibliography}[1]{% + \@bib@break + \end{thebibliography}% + \begingroup ##1\endgroup + \begin{thebibliography}{#1} + }% + \list{% + \@biblabel{\@arabic\c@enumiv}% + }{% + \settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \if@bib@break@ + \edef\@tempa{% + \noexpand\usecounter{enumiv}% + \noexpand\setcounter{enumiv}{\the\c@enumiv}% + }\@tempa + \no@bib@break + \else + \usecounter{enumiv}% + \fi + \let\p@enumiv\@empty + \renewcommand*\theenumiv{\@arabic\c@enumiv}% + }% + \sloppy\clubpenalty4000 \widowpenalty4000 + \sfcode`\.=\@m +}{% + \if@bib@break@ + \def\@noitemerr{% + \@latex@warning{% + \string\BreakBibliography\space at begin of `thebibliography' + environment\MessageBreak + or following \string\BreakBibliography}% + }% + \else + \def\@noitemerr{% + \@latex@warning{% + Empty `thebibliography' environment or + \string\BreakBibliography\MessageBreak + before end of `thebibliography' environment}% + }% + \fi + \endlist + \if@bib@break@ + \else + \bib@after@hook + \let\bib@before@hook\@empty + \let\bib@after@hook\@empty + \fi + \bib@endhook +} +\newif\if@bib@break@ +\newcommand{\no@bib@break}{\global\let\if@bib@break@\iffalse} +\newcommand*{\@bib@break}{\global\let\if@bib@break@\iftrue} +\newcommand*{\bib@before@hook}{} +\newcommand*{\bib@after@hook}{} +\newcommand{\BreakBibliography}[1]{% + \ClassWarning{\KOMAClassName}{% + You've used \string\BreakBibliography\space either outside of\MessageBreak + the bibliography or `thebibliography' was redefined\MessageBreak + incompatible, e.g., using a bibliography package.\MessageBreak + \string\BreakBibliography\space ignored% + }% +} +\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook} +\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook} +%%% From File: $Id: scrkernel-index.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\index@preamble}{} +\let\index@preamble=\relax +\newcommand{\setindexpreamble}[1]{\def\index@preamble{#1}} +\newcommand*{\idx@heading}{% + \if@openright\cleardoublepage\else\clearpage\fi% + \twocolumn[% + \@chaptertolistsfalse + \idx@@heading{\indexname}]% + \ifidx@leveldown + \addsecmark{\indexname}% + \else + \@mkdouble{\MakeMarkcase{\indexname}}% + \fi +} +\newenvironment{theindex}{% + \if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \setchapterpreamble{\index@preamble}% + \idx@heading + \ifx\indexpagestyle\@empty\else\thispagestyle{\indexpagestyle}\fi + \parindent\z@ + \setlength{\parskip}{\z@ \@plus .3\p@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \let\item\@idxitem +}{% + \if@restonecol\onecolumn\else\clearpage\fi +} +\newcommand*\@idxitem{\par\hangindent 40\p@} +\newcommand*\subitem{\@idxitem \hspace*{20\p@}} +\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand*\indexspace{% + \par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax +} +\newcommand*\indexname{Index} +\providecaptionname{american,australian,british,canadian,english,newzealand,% + UKenglish,ukenglish,USenglish,usenglish}\indexname{Index} +%%% From File: $Id: scrkernel-listsandtabulars.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\if@twocolumn + \setlength{\leftmargini}{2em} +\else + \setlength{\leftmargini}{2.5em} +\fi +\setlength{\leftmarginii}{2.2em} +\setlength{\leftmarginiii}{1.87em} +\setlength{\leftmarginiv}{1.7em} +\if@twocolumn + \setlength{\leftmarginv}{.5em} + \setlength{\leftmarginvi}{.5em} +\else + \setlength{\leftmarginv}{1em} + \setlength{\leftmarginvi}{1em} +\fi +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelsep}{.5em} +\setlength{\labelwidth}{\leftmargini} +\addtolength{\labelwidth}{-\labelsep} +\@beginparpenalty=-\@lowpenalty +\@endparpenalty =-\@lowpenalty +\@itempenalty =-\@lowpenalty +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\p@enumii(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\usekomafont{labelitemi}{\textbullet}} +\newcommand*\labelitemii{\usekomafont{labelitemii}{\textendash}} +\newcommand*\labelitemiii{\usekomafont{labelitemiii}{\textasteriskcentered}} +\newcommand*\labelitemiv{\usekomafont{labelitemiv}{\textperiodcentered}} +\newenvironment{description}{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}% +}{% + \endlist +} +\newcommand*{\descriptionlabel}[1]{% + \hspace{\labelsep}\usekomafont{descriptionlabel}{#1}% +} +\newenvironment{labeling}[2][]{% + \def\sc@septext{#1}% + \list{}{\settowidth{\labelwidth}{{% + \usekomafont{labelinglabel}{#2% + \usekomafont{labelingseparator}{\sc@septext}}% + }}% + \leftmargin\labelwidth \advance\leftmargin by \labelsep + \let\makelabel\labelinglabel + }% +}{% + \endlist +} +\newcommand\labelinglabel[1]{% + \usekomafont{labelinglabel}{#1\hfil + \usekomafont{labelingseparator}{\sc@septext}}% +} +\newenvironment{verse}{% + \let\\=\@centercr + \list{}{\itemsep=\z@ + \itemindent=-1.5em + \listparindent=\itemindent + \rightmargin=\leftmargin + \advance\leftmargin by1.5em + }% + \item\relax +}{% + \endlist +} +\newenvironment{quotation}{% + \list{}{\listparindent 1em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@ + }% + \item\relax +}{% + \endlist +} +\newenvironment{quote}{% + \list{}{\rightmargin\leftmargin}% + \item\relax +}{% + \endlist +} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin +}{% + \advance\@listdepth\@ne + \endlist +} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi + \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi + \@addmargin +}{% + \if@twoside + \unskip\nobreak\Ifthispageodd{}{}% + \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else + \ClassWarning{\KOMAClassName}{% + page break inside `addmargin*' environment.\MessageBreak + A `addmargin*' environment starting on page + \scr@addmargin@startpage\MessageBreak + ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak + This will result in potential wrong margins on\MessageBreak + every other page.\MessageBreak + So maybe you should change the `addmargin*'\MessageBreak + environment, that ends% + }% + \fi + \fi + \advance\@listdepth\@ne + \endlist +} +\newcommand*{\@addmargin}[2][\@tempa]{% + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\@tempskipa}{\topsep}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\@tempskipb}{\partopsep}% + \setlength{\partopsep}{\z@}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@}% + \advance\@listdepth\m@ne + }% + \expandafter\ifnum\scr@v@is@ge{3.22}% + \setlength{\topsep}{\@tempskipa}% + \setlength{\partopsep}{\@tempskipb}% + \fi + \item\is@thispageodd@setlabel\nobreak\ignorespaces +} +\newcommand*\descfont{\@gr@gsffamily\bfseries} +\newcommand*{\scr@fnt@descriptionlabel}{\descfont} +\newcommand*{\labelitemfont}{\normalfont} +\newcommand*\scr@fnt@itemizelabel{\labelitemfont} +\newkomafont{labelitemi}{\usekomafont{itemizelabel}} +\newkomafont{labelitemii}{\usekomafont{itemizelabel}\bfseries} +\newkomafont{labelitemiii}{\usekomafont{itemizelabel}} +\newkomafont{labelitemiv}{\usekomafont{itemizelabel}} +\newkomafont{labelinglabel}{} +\newkomafont{labelingseparator}{} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrreprt.cls'. diff --git a/texmf/tex/latex/koma-script/scrsize10pt.clo b/texmf/tex/latex/koma-script/scrsize10pt.clo new file mode 100644 index 000000000..2d88da1d5 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrsize10pt.clo @@ -0,0 +1,166 @@ +%% +%% This is file `scrsize10pt.clo', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `clo,10pt') +%% scrkernel-fonts.dtx (with options: `clo,10pt') +%% scrkernel-paragraphs.dtx (with options: `clo,10pt') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: 10pt) +\ProvidesFile{% + scrsize10pt.clo% +}[\KOMAScriptVersion\space font size class option % + (10pt)% +] +\def\normalsize{% + \@setfontsize\normalsize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI +} +\def\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\footnotesize{% + \@setfontsize\footnotesize\@viiipt{9.5}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\def\tiny{\@setfontsize\tiny\@vpt\@vipt} +\def\large{\@setfontsize\large\@xiipt{14}} +\def\Large{\@setfontsize\Large\@xivpt{18}} +\def\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\def\huge{\@setfontsize\huge\@xxpt{25}} +\def\Huge{\@setfontsize\Huge\@xxvpt{30}} +\normalsize +\setlength\footnotesep {6.65\p@} +\setlength{\skip\footins} {9\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {8\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {8\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +\def\@listi{\leftmargin\leftmargini + \parsep 4\p@ \@plus2\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep4\p@ \@plus2\p@ \@minus\p@} +\let\@listI\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 4\p@ \@plus2\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +\@ifundefined{@list@extra}{}{% + \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +} +\@listi +\endinput +%% +%% End of file `scrsize10pt.clo'. diff --git a/texmf/tex/latex/koma-script/scrsize11pt.clo b/texmf/tex/latex/koma-script/scrsize11pt.clo new file mode 100644 index 000000000..d13f95773 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrsize11pt.clo @@ -0,0 +1,167 @@ +%% +%% This is file `scrsize11pt.clo', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `clo,11pt') +%% scrkernel-fonts.dtx (with options: `clo,11pt') +%% scrkernel-paragraphs.dtx (with options: `clo,11pt') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: 11pt) +%%% (run: 12pt) +\ProvidesFile{% + scrsize11pt.clo% +}[\KOMAScriptVersion\space font size class option % + (11pt)% +] +\def\normalsize{% + \@setfontsize\normalsize\@xipt{13.6}% + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI +} +\def\small{% + \@setfontsize\small\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 6\p@ \@plus2\p@ \@minus2\p@ + \parsep 3\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\footnotesize{% + \@setfontsize\footnotesize\@ixpt{11}% + \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\def\tiny{\@setfontsize\tiny\@vipt\@viipt} +\def\large{\@setfontsize\large\@xiipt{14}} +\def\Large{\@setfontsize\Large\@xivpt{18}} +\def\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\def\huge{\@setfontsize\huge\@xxpt{25}} +\def\Huge{\@setfontsize\Huge\@xxvpt{30}} +\normalsize +\setlength\footnotesep {7.7\p@} +\setlength{\skip\footins} {10\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {3\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {8\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {8\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +\def\@listi{\leftmargin\leftmargini + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \itemsep4.5\p@ \@plus2\p@ \@minus\p@} +\let\@listI\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 4.5\p@ \@plus2\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +\@ifundefined{@list@extra}{}{% + \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +} +\@listi +\endinput +%% +%% End of file `scrsize11pt.clo'. diff --git a/texmf/tex/latex/koma-script/scrsize12pt.clo b/texmf/tex/latex/koma-script/scrsize12pt.clo new file mode 100644 index 000000000..7d9a0df78 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrsize12pt.clo @@ -0,0 +1,165 @@ +%% +%% This is file `scrsize12pt.clo', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `clo,12pt') +%% scrkernel-fonts.dtx (with options: `clo,12pt') +%% scrkernel-paragraphs.dtx (with options: `clo,12pt') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +\ProvidesFile{% + scrsize12pt.clo% +}[\KOMAScriptVersion\space font size class option % + (12pt)% +] +\def\normalsize{% + \@setfontsize\normalsize\@xiipt{14.5}% + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI +} +\def\small{% + \@setfontsize\small\@xipt{13.6}% + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\footnotesize{% + \@setfontsize\footnotesize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 6\p@ \@plus2\p@ \@minus2\p@ + \parsep 3\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\def\tiny{\@setfontsize\tiny\@vipt\@viipt} +\def\large{\@setfontsize\large\@xivpt{18}} +\def\Large{\@setfontsize\Large\@xviipt{22}} +\def\LARGE{\@setfontsize\LARGE\@xxpt{25}} +\def\huge{\@setfontsize\huge\@xxvpt{30}} +\let\Huge=\huge +\normalsize +\setlength\footnotesep {8.4\p@} +\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {3\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {10\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {10\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +\def\@listi{\leftmargin\leftmargini + \parsep 5\p@ \@plus2.5\p@ \@minus\p@ + \topsep 10\p@ \@plus4\p@ \@minus6\p@ + \itemsep5\p@ \@plus2.5\p@ \@minus\p@} +\let\@listI\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 5\p@ \@plus2.5\p@ \@minus\p@ + \parsep 2.5\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2.5\p@\@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +%%% From File: $Id: scrkernel-paragraphs.dtx 3874 2022-06-05 10:38:02Z kohm $ +\@ifundefined{@list@extra}{}{% + \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi + \l@addto@macro{\@listi}{\@list@extra}% + \let\@listI=\@listi + \l@addto@macro{\@listii}{\@list@extra}% + \l@addto@macro{\@listiii}{\@list@extra}% + \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}% + \l@addto@macro{\small}{\protect\add@extra@listi{sml}}% +} +\@listi +\endinput +%% +%% End of file `scrsize12pt.clo'. diff --git a/texmf/tex/latex/koma-script/scrtime.sty b/texmf/tex/latex/koma-script/scrtime.sty new file mode 100644 index 000000000..c127673f9 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrtime.sty @@ -0,0 +1,107 @@ +%% +%% This is file `scrtime.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,scrtime') +%% scrtime.dtx (with options: `package,scrtime,identify') +%% scrkernel-basics.dtx (with options: `load') +%% scrtime.dtx (with options: `package,scrtime,option') +%% scrtime.dtx (with options: `package,scrtime,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{scrtime}[% + 2022/07/04 v3.37 KOMA-Script + package + (time of LaTeX run)% +] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +\newif\if@Hxii +\KOMA@ifkey{12h}{@Hxii} +\KOMA@DeclareDeprecatedOption[scrtime]{24h}{12h=false} +\KOMAProcessOptions\relax +%%% From File: $Id: scrtime.dtx 3889 2022-06-09 12:11:14Z kohm $ +\def\thistime{% + \kernel@ifstar + {\let\@tempif\iffalse\@thistime} + {\let\@tempif\iftrue\@thistime}} +\newcommand*{\@thistime}[1][:]{% + \begingroup + \@tempcnta\time\divide\@tempcnta60\multiply\@tempcnta60 + \@tempcntb\time\advance\@tempcntb-\@tempcnta + \divide\@tempcnta60 + \if@Hxii\ifnum\@tempcnta>12 \advance\@tempcnta-12 \fi\fi + \the\@tempcnta{#1}\@tempif\ifnum\@tempcntb<10 0\fi\fi\the\@tempcntb% + \endgroup} +\newcommand*{\settime}[1]{\renewcommand*{\@thistime}[1][]{#1}} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrtime.sty'. diff --git a/texmf/tex/latex/koma-script/scrwfile.sty b/texmf/tex/latex/koma-script/scrwfile.sty new file mode 100644 index 000000000..d2f296339 --- /dev/null +++ b/texmf/tex/latex/koma-script/scrwfile.sty @@ -0,0 +1,260 @@ +%% +%% This is file `scrwfile.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrwfile.dtx (with options: `package,scrwfile,identify,option,body') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2010-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrwfile.dtx 3889 2022-06-09 12:11:14Z kohm $ +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{scrwfile} + [2021/05/30 v0.1.10 KOMA-Script package (write and clone files)] +\PackageWarningNoLine{scrwfile}{% + THIS IS AN EXPERIMENTAL PACKAGE!\MessageBreak + USAGE OF THIS PACKAGE IS ON YOUR OWN RISK!\MessageBreak + EVERYTHING MAY HAPPEN!\MessageBreak + EVERYTHING MAY CHANGE IN FUTURE!\MessageBreak + THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!\MessageBreak + Maybe, it would be better not to load this package% +} +\RequirePackage{scrbase}[2010/09/17] +\RequirePackage{scrlfile}[2010/09/30] +\RequirePackage{iftex} +\ifluatex + \PackageWarningNoLine{scrwfile}{LuaLaTeX detected.\MessageBreak + With LuaLaTeX you should never get an error message:\MessageBreak + \space\space`No room for a new \string\write'.\MessageBreak + So scrwfile could make much more harm than benefit\MessageBreak + and using it is not recommended}% +\fi +\newcommand*{\scrwfile@if@only}[1]{% + \begingroup + \scr@ifundefinedorrelax{scrwfile@only}{\@tempswatrue}{% + \@tempswafalse + \edef\reserved@b{#1}% + \@for\reserved@a:=\scrwfile@only\do + {\ifx\reserved@a\reserved@b\@tempswatrue\fi}% + }% + \if@tempswa + \scr@ifundefinedorrelax{scrwfile@never}{}{% + \edef\reserved@b{#1}% + \@for\reserved@a:=\scrwfile@never\do + {\ifx\reserved@a\reserved@b\@tempswafalse\fi}% + }% + \fi + \expandafter\endgroup + \if@tempswa + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand*{\scrwfile@starttoc}[1]{% + \scrwfile@if@only{#1}{\scrwfile@@starttoc}{\scrwfile@saved@starttoc}{#1}% +} +\newcommand*{\scrwfile@@starttoc}[1]{% + \begingroup + \if@filesw + \xdef\scrwfile@writefilelist{\scrwfile@writefilelist,#1}% + \fi + \@fileswfalse + \scrwfile@saved@starttoc{#1}% + \endgroup +} +\newcommand*{\scrwfile@writefile}[1]{% + \scrwfile@if@only{#1}{\scrwfile@@writefile}{\scrwfile@saved@writefile}{#1}% +} +\newcommand{\scrwfile@@writefile}[2]{% + \ifnum\scrwfile@wrtout>0 + \begingroup + \@temptokena{#2}% + \immediate\write\scrwfile@wrtout{% + \string\@writefile{#1}{\the\@temptokena}% + }% + \scrwfile@process@clones{#1}% + \endgroup + \fi +} +\chardef\scrwfile@wrtout\z@ +\newcommand*{\scrwfile@writefilelist}{} +\newcommand*{\scrwfile@saved@writefile}{} +\BeforeClosingMainAux{% + \ifx\scrwfile@writefilelist\@empty\else + \let\scrwfile@saved@writefile\@writefile + \let\scrwfile@wrtout\@partaux + \immediate\openout\scrwfile@wrtout \jobname.wrt + \let\@writefile\scrwfile@writefile + \fi +} +\AfterReadingMainAux{% + \ifx\scrwfile@writefilelist\@empty\else + \immediate\closeout\scrwfile@wrtout + \chardef\scrwfile@wrtout\z@ + \begingroup + \let\@writefile\scrwfile@saved@writefile + \@for\@currext:=\scrwfile@writefilelist\do{% + \begingroup + \ifx\@currext\@empty\else + \scr@ifundefinedorrelax{tf@\@currext}{% + \immediate\openout\@partaux \jobname.\@currext + \expandafter\let\csname tf@\@currext\endcsname\@partaux + \@input@{\jobname.wrt}% + \immediate\closeout\@partaux + }{}% + \fi + \endgroup + }% + \endgroup + \fi +} +\IfLTXAtLeastTF{2020/10/01}{% + \DeclareHookRule{enddocument/afteraux}% + {scrwfile}{before}{scrlayer-notecolumn}% +}{% + \@ifpackageloaded{scrlayer-notecolumn}{% + \PackageWarningNoLine{scrwfile}{% + Dangerous package order detected!\MessageBreak + As a general rule, you should load scrwfile as soon\MessageBreak + as possible, maybe even before `\string\documentclass'\MessageBreak + (using `\string\RequirePackage' instead of + `\string\usepackage').\MessageBreak + Following packages should be loaded after scrwfile:\MessageBreak + \space - scrlayer-notecolumn}% + }{}% +} +\newcommand*{\scrwfile@saved@starttoc}{} +\AtBeginDocument{% + \begingroup + \@ifpackageloaded{hyperref}{% + \scr@ifundefinedorrelax{Hy@AtBeginDocument}{% + \PackageWarning{scrwfile}{% + Incompatible `hyperref` package detected!\MessageBreak + You are using a `hyperref` version, that\MessageBreak + doesn't provide `\string\Hy@AtBeginDocument`.\MessageBreak + This may or may not work.\MessageBreak + Using immediate redefinition% + }% + \aftergroup\@firstofone + }{% + \def\reserved@a{\AtBeginDocument}% + \ifx\Hy@AtBeginDocumentHook\@undefined + \PackageInfo{scrwfile}{% + Using immediate redefinition% + }% + \aftergroup\@firstofone + \else + \PackageInfo{scrwfile}{% + Using `\string\Hy@AtBeginDocument`% + }% + \aftergroup\Hy@AtBeginDocument + \fi + }% + }{% + \aftergroup\@firstofone + }% + \endgroup + {% + \PackageInfo{scrwfile}{% + Extending `\string\@starttoc` + }% + \let\scrwfile@saved@starttoc\@starttoc + \let\@starttoc\scrwfile@starttoc + }% +} +\newcommand*{\scrwfile@process@clones}[1]{% + \scr@ifundefinedorrelax{scrwfile@clone@#1}{}{% + \begingroup + \let\@@protect\protect\let\protect\@empty\afterassignment\restore@protect + \edef\reserved@b{\csname scrwfile@clone@#1\endcsname}% + \edef\reserved@c{,#1}% + \@for \reserved@a:=\reserved@b\do {% + \@tempswatrue + \@for \reserved@d:=\reserved@c\do {% + \ifx\reserved@d\reserved@a\@tempswafalse\fi + }% + \if@tempswa + \immediate\write\scrwfile@wrtout{% + \string\@writefile{\reserved@a}{\the\@temptokena}% + }% + \edef\reserved@c{\reserved@c,\reserved@a}% + \fi + }% + \endgroup + }% +}% +\newcommand*{\TOCclone}[3][]{% + \RequirePackage{tocbasic}% + \scr@ifundefinedorrelax{scrwfile@clone@#2}{% + \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{% + #3,\protect\csname scrwfile@clone@#3\endcsname + }% + }{% + \edef\reserved@b{\csname scrwfile@clone@#2\endcsname}% + \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{% + \csname scrwfile@clone@#2\endcsname,% + #3,% + \protect\csname scrwfile@clone@#3\endcsname + }% + }% + \scr@ifundefinedorrelax{scrwfile@clone@#3}{% + \expandafter\let\csname scrwfile@clone@#3\endcsname\@empty + }{}% + \Ifattoclist{#3}{% + \PackageWarning{scrwfile}{`#3' already under control of + tocbasic.\MessageBreak + Nevertheless features will be set% + }% + }{% + \addtotoclist[TOCclone]{#3}% + }% + \setuptoc{#3}{nobabel}% + \Ifstr{#1}{}{% + }{% + \@namedef{listof#3name}{#1}% + \@namedef{listof#3}{\listoftoc{#3}}% + \Iftocfeature{#2}{leveldown}{\setuptoc{#3}{leveldown}}{}% + \Iftocfeature{#2}{numbered}{\setuptoc{#3}{numbered}}{}% + \Iftocfeature{#2}{onecolumn}{\setuptoc{#3}{leveldownonecolumn}}{}% + \Iftocfeature{#2}{totoc}{\setuptoc{#3}{totoc}}{}% + }% +} +\@onlypreamble\TOCClone +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `scrwfile.sty'. diff --git a/texmf/tex/latex/koma-script/setspace.hak b/texmf/tex/latex/koma-script/setspace.hak new file mode 100644 index 000000000..8f3f29800 --- /dev/null +++ b/texmf/tex/latex/koma-script/setspace.hak @@ -0,0 +1,121 @@ +%% +%% This is file `setspace.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,setspace.hak') +%% scrhack.dtx (with options: `hack,setspace,identify') +%% scrhack.dtx (with options: `hack,setspace,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{setspace.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (hacking package + setspace)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\scr@ifexpected{\onehalfspacing}{% + \long\def\onehalfspacing{% + \setstretch{1.25}% default + \ifcase \@ptsize \relax % 10pt + \setstretch {1.25}% + \or % 11pt + \setstretch {1.213}% + \or % 12pt + \setstretch {1.241}% + \fi + }% +}{% + \renewcommand*{\onehalfspacing}{% + \@tempdima=\dimexpr (\f@size pt)*1500/ + (\dimexpr \f@baselineskip\relax)*\p@/1000\relax + \expandafter\setstretch\expandafter{\strip@pt\@tempdima}% + }% +}{% + \PackageWarning{scrhack}{unknown \string\onehalfspacing\space + definition found!\MessageBreak + Maybe you are using a unsupported setpace version}% +} +\scr@ifexpected{\doublespacing}{% + \long\def\doublespacing{% + \setstretch{1.667}% default + \ifcase \@ptsize \relax % 10pt + \setstretch {1.667}% + \or % 11pt + \setstretch {1.618}% + \or % 12pt + \setstretch {1.655}% + \fi + }% +}{% + \renewcommand*{\doublespacing}{% + \@tempdima=\dimexpr (\f@size pt)*2000/ + (\dimexpr \f@baselineskip\relax)*\p@/1000\relax + \expandafter\setstretch\expandafter{\strip@pt\@tempdima}% + }% +}{% + \PackageWarning{scrhack}{unknown \string\doublespacing\space + definition found!\MessageBreak + Maybe you are using a unsupported setpace version}% +} +\endinput +%% +%% End of file `setspace.hak'. diff --git a/texmf/tex/latex/koma-script/standardsections.hak b/texmf/tex/latex/koma-script/standardsections.hak new file mode 100644 index 000000000..64c2203a0 --- /dev/null +++ b/texmf/tex/latex/koma-script/standardsections.hak @@ -0,0 +1,616 @@ +%% +%% This is file `standardsections.hak', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `file,standardsections.hak') +%% scrhack.dtx (with options: `hack,standardsections,identify') +%% scrhack.dtx (with options: `hack,standardsections,body') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\ProvidesFile{standardsections.hak}[% + 2022/07/04 v3.37 KOMA-Script + scrhack part + (defining standard LaTeX class section headings)% +] +%%% From File: $Id: scrhack.dtx 3889 2022-06-09 12:11:14Z kohm $ +\PackageWarningNoLine{scrhack}{% + You are loosing every kind of support because of\MessageBreak + using the dangerous standard classes sections hack!\MessageBreak + This hack can break several classes and packages.\MessageBreak + However, sometimes it is needed to make a\MessageBreak + package work% +}% +\PackageInfo{scrhack}{% + Using code from the standard LaTeX classes.\MessageBreak + For more information about this code and the\MessageBreak + license of this code, please see:\MessageBreak + https://ctan.org/tex-archive/macros/latex/base/classes.dtx +}% +\@ifpackageloaded{hyperref}{% + \PackageWarning{scrhack}{this hack should not be loaded after `hyperref'}% +}{} +\@ifpackageloaded{titlesec}{% + \PackageWarning{scrhack}{this hack should not be loaded after `titlesec'}% +}{} +\@ifpackageloaded{sectsty}{% + \PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}% +}{} +\@ifpackageloaded{sectsty}{% + \PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}% +}{} +\scr@ifundefinedorrelax{chapter}{% + \scr@ifundefinedorrelax{c@part}{\newcounter{part}}{}% + \scr@ifundefinedorrelax{c@section}{\newcounter{section}}{}% + \scr@ifundefinedorrelax{c@subsection}{\newcounter{subsection}[section]}{}% + \scr@ifundefinedorrelax{c@subsubsection}{% + \newcounter{subsubsection}[subsection]}{}% + \scr@ifundefinedorrelax{c@paragraph}{% + \newcounter{paragraph}[subsubsection]}{}% + \scr@ifundefinedorrelax{c@subparagraph}{% + \newcounter{subparagraph}[paragraph]}{}% + \renewcommand\thepart {\@Roman\c@part}% + \renewcommand\thesection {\@arabic\c@section}% + \renewcommand\thesubsection {\thesection.\@arabic\c@subsection}% + \renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}% + \renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}% + \renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}% + \def\part{% + \if@noskipsec \leavevmode \fi + \par + \addvspace{4ex}% + \@afterindentfalse + \secdef\@part\@spart}% + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >\m@ne + \Large\bfseries \partname\nobreakspace\thepart + \par\nobreak + \fi + \huge \bfseries #2% + \markboth{}{}\par}% + \nobreak + \vskip 3ex + \@afterheading}% + \def\@spart#1{% + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \huge \bfseries #1\par}% + \nobreak + \vskip 3ex + \@afterheading}% + \def\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}}% + \def\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}}% + \def\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}}% + \def\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% + \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% +}{% + \scr@ifundefinedorrelax{c@part}{\newcounter{part}}{}% + \scr@ifundefinedorrelax{c@chapter}{\newcounter{chapter}}{}% + \scr@ifundefinedorrelax{c@section}{\newcounter{section}[chapter]}{}% + \scr@ifundefinedorrelax{c@subsection}{\newcounter{subsection}[section]}{}% + \scr@ifundefinedorrelax{c@subsubsection}{% + \newcounter{subsubsection}[subsection]}{}% + \scr@ifundefinedorrelax{c@paragraph}{% + \newcounter{paragraph}[subsubsection]}{}% + \scr@ifundefinedorrelax{c@subparagraph}{% + \newcounter{subparagraph}[paragraph]}{}% + \def\@chapapp{\chaptername}% + \scr@ifundefinedorrelax{frontmatter}{% + \def\part{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname\nobreakspace\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} + \def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} + \def\@endpart{\vfil\newpage + \if@twoside + \if@openright + \null + \thispagestyle{empty}% + \newpage + \fi + \fi + \if@tempswa + \twocolumn + \fi} + \def\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} + \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \huge\bfseries \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} + \def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} + \def\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}}% + \def\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}}% + \def\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}}% + \def\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% + \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% + }{% + \scr@ifundefinedorrelax{if@mainmatter}{% + \expandafter\newif\csname if@mainmatter\endcsname + }{}% + \def\frontmatter{% + \cleardoublepage + \@mainmatterfalse + \pagenumbering{roman}}% + \def\mainmatter{% + \cleardoublepage + \@mainmattertrue + \pagenumbering{arabic}}% + \def\backmatter{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \@mainmatterfalse}% + \def\part{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart}% + + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname\nobreakspace\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart}% + \def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart}% + \def\@endpart{\vfil\newpage + \if@twoside + \if@openright + \null + \thispagestyle{empty}% + \newpage + \fi + \fi + \if@tempswa + \twocolumn + \fi}% + \def\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter}% + \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi}% + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge\bfseries \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }}% + \def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi}% + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }}% + \def\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}}% + \def\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}}% + \def\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}}% + \def\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% + \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}}% + }% +}% End of the derived code. +\scr@ifundefinedorrelax{scr@saved@startsection}{}{% + \ifx\@startsection\scr@saved@startsection\else + \PackageWarningNoLine{scrhack}{% + Resetting \string\@startsection,\MessageBreak + because of loading standard classes sections hack% + }% + \let\@startsection\scr@saved@startsection + \fi +} +\scr@ifundefinedorrelax{scr@latex@sect}{}{% + \ifx\@sect\scr@latex@sect\else + \PackageWarningNoLine{scrhack}{% + Resetting \string\@sect,\MessageBreak + because of loading standard classes sections hack% + }% + \let\@sect\scr@latex@sect + \fi +} +\scr@ifundefinedorrelax{scr@latex@ssect}{}{% + \ifx\@ssect\scr@latex@ssect\else + \PackageWarningNoLine{scrhack}{% + Resetting \string\@ssect,\MessageBreak + because of loading standard classes sections hack% + }% + \let\@sect\scr@latex@ssect + \fi +} +\scr@ifundefinedorrelax{scr@latex@xsect}{}{% + \ifx\@xsect\scr@latex@xsect\else + \PackageWarningNoLine{scrhack}{% + Resetting \string\@xsect,\MessageBreak + because of loading standard classes sections hack% + }% + \let\@sect\scr@latex@sect + \fi +} +\scr@ifundefinedorrelax{DeclareSectionCommand}{}{% + \PackageWarningNoLine{scrhack}{% + \string\DeclareSectionCommand\space + and all derivates deactivated,\MessageBreak + because of loading standard classes sections hack% + }% + \let\DeclareSectionCommand\undefined + \let\DeclareSectionCommands\undefined + \let\RedeclareSectionCommand\undefined + \let\RedeclareSectionCommands\undefined + \let\DeclareNewSectionCommand\undefined + \let\DeclareNewSectionCommands\undefined + \let\ProvideSectionCommand\undefined + \let\ProvideSectionCommands\undefined +} +\let\scr@chapter@before@hyperref@patch\relax +\let\scr@chapter@after@hyperref@patch\relax +\scr@ifundefinedorrelax{scr@osectarg}{}{% + \def\reserved@a{0}% + \ifx\scr@osectarg\reserved@a\else + \let\scr@osectarg\reserved@a + \PackageWarningNoLine{scrhack}{% + Extended option handling for section commands deactivated,\MessageBreak + because of loading standard classes sections hack% + }% + \fi +}% +\scr@ifundefinedorrelax{scr@activate@xsection}{}{% + \renewcommand*{\scr@activate@xsection}[1]{% + \edef\scr@osectarg{#1}\def\reserved@a{0}% + \ifx\scr@osectarg\reserved@a + \else + \let\scr@osectarg\reserved@a + \PackageWarning{scrhack}{% + Because of loading the standard classes\MessageBreak + sections hack, the extended option handling\MessageBreak + of section commands failed% + }% + \fi + }% +} +\scr@ifundefinedorrelax{partformat}{}{% + \PackageWarningNoLine{scrhack}{% + Usage of \string\partformat\space + deactivated,\MessageBreak + because of loading the standard classes sections hack% + }% +} +\scr@ifundefinedorrelax{chapterformat}{}{% + \PackageWarningNoLine{scrhack}{% + Usage of \string\chapterformat\space + deactivated,\MessageBreak + because of loading the standard classes sections hack% + }% +} +\scr@ifundefinedorrelax{sectionformat}{}{% + \PackageWarningNoLine{scrhack}{% + \string\sectionformat\space set to + `\string\thesection\string\quad',\MessageBreak + because of loading the standard classes sections hack% + }% + \renewcommand*{\sectionformat}{\thesection\quad}% +} +\scr@ifundefinedorrelax{subsectionformat}{}{% + \PackageWarningNoLine{scrhack}{% + \string\subsectionformat\space set to + `\string\thesubsection\string\quad'\MessageBreak + because of loading the standard classes sections hack% + }% + \renewcommand*{\subsectionformat}{\thesubsection\quad}% +} +\scr@ifundefinedorrelax{subsubsectionformat}{}{% + \PackageWarningNoLine{scrhack}{% + \string\subsubsectionformat\space set to + `\string\thesubsubsection\string\quad'\MessageBreak + because of loading the standard classes sections hack% + }% + \renewcommand*{\subsubsectionformat}{\thesubsubsection\quad}% +} +\scr@ifundefinedorrelax{paragraphformat}{}{% + \PackageWarningNoLine{scrhack}{% + \string\paragraphformat\space set to + `\string\theparagraph\string\quad'\MessageBreak + because of loading the standard classes sections hack% + }% + \renewcommand*{\paragraphformat}{\theparagraph\quad}% +} +\scr@ifundefinedorrelax{subparagraphformat}{}{% + \PackageWarningNoLine{scrhack}{% + \string\subparagraphformat\space set to + `\string\thesubparagraph\string\quad'\MessageBreak + because of loading the standard classes sections hack% + }% + \renewcommand*{\subparagraphformat}{\thesubparagraph\quad}% +} +\scr@ifundefinedorrelax{partlineswithprefixformat}{}{% + \PackageWarningNoLine{scrhack}{% + Usage of \string\partlineswithprefixformat\space deactivated,\MessageBreak + because of loading the standard classes sections hack% + }% +} +\scr@ifundefinedorrelax{chapterlineswithprefixformat}{}{% + \PackageWarningNoLine{scrhack}{% + Usage of \string\chapterlineswithprefixformat\space and\MessageBreak + \string\chapterlinesformat\space deactivated,\MessageBreak + because of using standard classes sections hack% + }% +} +\scr@ifundefinedorrelax{sectionlinesformat}{}{% + \PackageWarningNoLine{scrhack}{% + Usage of \string\sectionlinesformat\space and\MessageBreak + \string\sectioncatchphraseformat\space deactivated,\MessageBreak + because of using standard classes sections hack% + }% +} +\scr@ifundefinedorrelax{KOMAClassName}{}{% + \PackageWarningNoLine{scrhack}{% + KOMA-Script option `headings' removed,\MessageBreak + because of loading standard classes sections hack% + }% + \RelaxFamilyKey[.\KOMAClassFileName]{KOMA}{headings}% + \KOMA@kav@removekey{.\KOMAClassFileName}{headings}% +} +\def\scr@class@titlesec@warning{% + \PackageWarning{scrhack}{% + Usage of `titlesec' should work, because of\MessageBreak + loading the standard classes sections hack.\MessageBreak + However, you should know, there is not any\MessageBreak + support for this combination by the\MessageBreak + KOMA-Script author% + }% +} +\endinput +%% +%% End of file `standardsections.hak'. diff --git a/texmf/tex/latex/koma-script/tocbasic.sty b/texmf/tex/latex/koma-script/tocbasic.sty new file mode 100644 index 000000000..48aea9f03 --- /dev/null +++ b/texmf/tex/latex/koma-script/tocbasic.sty @@ -0,0 +1,2952 @@ +%% +%% This is file `tocbasic.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% tocbasic.dtx (with options: `package,identify') +%% tocbasic.dtx (with options: `package,prepare') +%% scrkernel-tocstyle.dtx (with options: `package,prepare') +%% tocbasic.dtx (with options: `package,option') +%% scrkernel-tocstyle.dtx (with options: `package,option') +%% tocbasic.dtx (with options: `package,body') +%% scrkernel-tocstyle.dtx (with options: `package,body') +%% scrkernel-tocstyle.dtx (with options: `package,style,gobble') +%% scrkernel-tocstyle.dtx (with options: `package,style,dottedtocline') +%% scrkernel-tocstyle.dtx (with options: `package,style,undottedtocline') +%% scrkernel-tocstyle.dtx (with options: `package,style,largetocline') +%% scrkernel-tocstyle.dtx (with options: `package,style,tocline') +%% scrkernel-tocstyle.dtx (with options: `package,style,toctext') +%% scrkernel-tocstyle.dtx (with options: `package,style,default') +%% tocbasic.dtx (with options: `package,exit') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 2008-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{tocbasic}[% + 2022/07/04 v3.37 KOMA-Script + package + (handling toc-files)% +] +%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: prepare) +%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +\ProcessOptions\relax +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: option) +%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\RequirePackage{scrbase} +\AfterPackage*{multitoc}{% + \@ifpackagelater{multitoc}{2022/02/10}{}{% + \PackageWarningNoLine{tocbasic}{% + Usage of package `multitoc' is not recommended!\MessageBreak + Note, this package generally results in empty ToCs\MessageBreak + for all extension but `toc', `lof' and `lot' and\MessageBreak + even for these extensions if you do not use the\MessageBreak + corresponding multitoc options.\MessageBreak + It is recommended to use:\MessageBreak + \space\space\string\usepackage{multicol}\MessageBreak + \space\space\string\BeforeStartingTOC{\string\begin{multicols}{2}}% + \MessageBreak + \space\space\string\AfterStartingTOC{\string\end{multicols}}% + \MessageBreak + instead of loading package `multitoc'.\MessageBreak + See the KOMA-Script manual for more information\MessageBreak + about using \string\BeforeStartingTOC\space and + \string\AfterStartingTOC\MessageBreak + and the multicol manual for more information\MessageBreak + about the `multicols' environment% + }% + }% +} +\newcommand*{\tb@listoftocs}{} +\providecommand*{\ifattoclist}{% + \PackageWarning{tocbasic}{Usage of deprecated command + `\string\ifattoclist'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\ifattoclist' by `\string\Ifattoclist'% + }% + \Ifattoclist +} +\newcommand{\Ifattoclist}[1]{% + \begingroup + \def\do##1##2{% + \edef\reserved@a{##1}% + \ifx\reserved@a\reserved@b\@tempswatrue\fi + }% + \edef\reserved@b{#1}\@tempswafalse\tb@listoftocs + \if@tempswa\aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi + \endgroup +} +\newcommand*{\addtotoclist}{% + \kernel@ifnextchar [%] + \scr@@addtotoclist\scr@addtotoclist +} +\newcommand*{\scr@addtotoclist}{% + \ifx\@currname\@empty + \def\reserved@a{\scr@@addtotoclist[]}% + \else + \edef\reserved@a{\noexpand\scr@@addtotoclist[\@currname.\@currext]}% + \fi + \reserved@a +} +\newcommand*{\scr@@addtotoclist}[2][]{% + \Ifattoclist{#2}{% + \PackageError{tocbasic}{% + file extension `#2' cannot be used twice + }{% + File extension `#2' is already used by a toc-file, while + \ifx\relax#1\relax someone\else #2\fi\MessageBreak + tried to use it again for a toc-file.\MessageBreak + This may be either an incompatibility of packages, an error at a + package,\MessageBreak + or a mistake by the user.\MessageBreak + }% + }{% + \begingroup + \protected@edef\reserved@a{% + \noexpand\g@addto@macro\noexpand\tb@listoftocs{% + \noexpand\do{#2}{#1}}}\reserved@a + \endgroup + \ifx\relax #1\relax\else + \@ifundefined{tb@#1@add@hook}{}{% + \edef\reserved@a{% + \noexpand\def\noexpand\@currext{#2}% + \noexpand\@nameuse{tb@#1@add@hook}% + \noexpand\def\noexpand\@currext{\@currext}% + }\reserved@a + }% + \fi + \edef\reserved@a{% + \noexpand\def\noexpand\@currext{#2}% + \noexpand\@nameuse{tb@@add@hook}% + \noexpand\def\noexpand\@currext{\@currext}% + }\reserved@a + }% +} +\newcommand*{\owneroftoc}[2][\@firstofone]{% + \begingroup + \let\reserved@a\endgroup + \def\do##1##2{\Ifstr{#2}{##1}{\def\reserved@a{\endgroup#1{##2}}}{}}% + \tb@listoftocs + \reserved@a +} +\newcommand*{\categoryoftoc}{\owneroftoc} +\newcommand*{\AtAddToTocList}{% + \kernel@ifnextchar [%] + \@@AtAddToTocList\@AtAddToTocList +} +\newcommand*{\@AtAddToTocList}{% + \ifx\@currname\@empty + \def\reserved@a{\@@AtAddToTocList[]}% + \else + \edef\reserved@a{\noexpand\@@AtAddToTocList[\@currname.\@currext]}% + \fi + \reserved@a +} +\newcommand*{\@@AtAddToTocList}[1][]{% + \@ifundefined{tb@#1@add@hook}{\@namedef{tb@#1@add@hook}{}}{}% + \expandafter\g@addto@macro\csname tb@#1@add@hook\endcsname +} +\newcommand*{\tocbasic@extend@babel}[1]{% + \scr@ifundefinedorrelax{bbl@set@language}{% + \PackageInfo{tocbasic}{babel extension for `#1' omitted\MessageBreak + because of missing \string\bbl@set@language}% + }{% + \Iftocfeature{#1}{nobabel}{% + \PackageInfo{tocbasic}{omitting babel extension for `#1'\MessageBreak + because of feature `nobabel' available\MessageBreak + for `#1'}% + }{% + \scr@ifundefinedorrelax{BabelContentsFiles}{% + \PackageInfo{tocbasic}{setting babel extension for `#1'}% + \expandafter\gdef\expandafter\bbl@set@language + \expandafter##\expandafter1% + \expandafter{% + \bbl@set@language{##1}% + \addtocontents{#1}{\xstring\select@language{\languagename}}% + }% + }{% + \@expandtwoargs\in@{,#1,}{,\BabelContentsFiles,}% + \ifin@ + \PackageInfo{tocbasic}{omitting babel extension for + `#1'\MessageBreak + because it is already in \string\BabelContentsFiles}% + \else + \PackageInfo{tocbasic}{setting babel extension for `#1'}% + \xdef\BabelContentsFiles{\BabelContentsFiles,#1}% + \fi + }% + }% + }% +} +\AtAddToTocList[]{\expandafter\tocbasic@extend@babel\expandafter{\@currext}} +\newcommand*{\removefromtoclist}{% + \kernel@ifnextchar [%] + \scr@removefromtoclist\scr@@removefromtoclist +} +\newcommand*{\scr@removefromtoclist}[2][]{% + \begingroup + \let\tb@oldlist\tb@listoftocs + \def\do##1##2{% + \edef\reserved@a{##1}% + \ifx\reserved@a\reserved@b + \begingroup + \edef\@currext{##2}% + \edef\reserved@b{#1}% + \ifx\@currext\reserved@b + \else + \g@addto@macro\tb@listoftocs{\do{##1}{##2}}% + \fi + \endgroup + \else + \g@addto@macro\tb@listoftocs{\do{##1}{##2}}% + \fi + }% + \edef\reserved@b{#2}\global\let\tb@listoftocs\@empty + \tb@oldlist + \endgroup +} +\newcommand*{\scr@@removefromtoclist}[1]{% + \begingroup + \let\tb@oldlist\tb@listoftocs + \def\do##1##2{% + \edef\reserved@a{##1}% + \ifx\reserved@a\reserved@b + \else + \g@addto@macro\tb@listoftocs{\do{##1}{##2}}% + \fi + }% + \edef\reserved@b{#1}\global\let\tb@listoftocs\@empty + \tb@oldlist + \endgroup +} +\newcommand{\doforeachtocfile}{% + \kernel@ifnextchar [%] + \@doforeachtocfile\@@doforeachtocfile +} +\newcommand{\@doforeachtocfile}[2][]{% + \def\do##1##2{% + \edef\reserved@a{#1}\edef\reserved@b{##2}\ifx\reserved@a\reserved@b + \edef\@currext{##1}#2% + \fi + }% + \edef\reserved@a{% + \noexpand\tb@listoftocs + \noexpand\def\noexpand\@currext{\@currext}% + }\reserved@a + \let\do\relax +} +\newcommand{\@@doforeachtocfile}[1]{% + \def\do##1##2{% + \edef\@currext{##1}#1% + }% + \edef\reserved@a{% + \noexpand\tb@listoftocs + \noexpand\def\noexpand\@currext{\@currext}% + }\reserved@a + \let\do\relax +} +\newcommand{\addtoeachtocfile}{% + \kernel@ifnextchar [%] + \@addtoeachtocfile\@@addtoeachtocfile +} +\newcommand{\@addtoeachtocfile}[2][]{% + \doforeachtocfile[{#1}]{\addtocontents{\@currext}{#2}}% +} +\newcommand{\@@addtoeachtocfile}[1]{% + \doforeachtocfile{\addtocontents{\@currext}{#1}}% +} +\newcommand{\addcontentslinetoeachtocfile}{% + \kernel@ifnextchar [%] + \@addcontentslinetoeachtocfile\@@addcontentslinetoeachtocfile +} +\newcommand{\@addcontentslinetoeachtocfile}[3][]{% + \doforeachtocfile[{#1}]{\addcontentsline{\@currext}{#2}{#3}}% +} +\newcommand{\@@addcontentslinetoeachtocfile}[2]{% + \doforeachtocfile{\addcontentsline{\@currext}{#1}{#2}}% +} +\newcommand*{\addxcontentsline}[2]{% + \kernel@ifnextchar [%] + {\@addxcontentsline{#1}{#2}}% + {\@addxcontentsline{#1}{#2}[]}% +} +\newcommand*{\@addxcontentsline}{} +\def\@addxcontentsline#1#2[#3]#4{% + \scr@ifundefinedorrelax{add#2#1entry}{% + \tocbasic@addxcontentsline{#1}{#2}{#3}{#4}% + }{% + \@nameuse{add#2#1entry}{#3}{#4}% + }% +} +\newcommand*{\nonumberline}{}% +\newcommand*{\tocbasic@addxcontentsline}[4]{% + \if\relax\detokenize{#3}\relax + \addcontentsline{#1}{#2}{\protect\nonumberline#4}% + \else + \addcontentsline{#1}{#2}{\protect\numberline{#3}#4}% + \fi +} +\newcommand{\addxcontentslinetoeachtocfile}{% + \kernel@ifnextchar [%] + \@addxcontentslinetoeachtocfile\@@addxcontentslinetoeachtocfile +} +\newcommand{\@addxcontentslinetoeachtocfile}[2][]{% + \kernel@ifnextchar [%] + {\@@@addxcontentslinetoeachtocfile[{#1}]{#2}}% + {\@@@addxcontentslinetoeachtocfile[{#1}]{#2}[]} +} +\newcommand*{\@@@addxcontentslinetoeachtocfile}{} +\def\@@@addxcontentslinetoeachtocfile[#1]#2[#3]#4{% + \doforeachtocfile[{#1}]{\addxcontentsline{\@currext}{#2}[#3]{#4}}% +} +\newcommand{\@@addxcontentslinetoeachtocfile}[1]{% + \kernel@ifnextchar [%] + {\@@@@addxcontentslinetoeachtocfile{#1}}% + {\@@@@addxcontentslinetoeachtocfile{#1}[]}% +} +\newcommand*{\@@@@addxcontentslinetoeachtocfile}{} +\def\@@@@addxcontentslinetoeachtocfile#1[#2]#3{% + \doforeachtocfile{\addxcontentsline{\@currext}{#1}[{#2}]{#3}}% +} +\newcommand*{\tocbasic@starttoc}[1]{% + \begingroup + \tocbasic@reentrant@warning + \def\tocbasic@reentrant@warning{% + \PackageWarning{tocbasic}{% + Loading one auxiliary file inside the setup context\MessageBreak + of another auxiliary file is not recommended.\MessageBreak + In this case settings for `\@currext' could also influence\MessageBreak + settings of `#1' and local states of `#1' can also\MessageBreak + influence local states of `\@currext'% + }% + }% + \edef\@currext{#1}% + \Iftocfeature{\@currext}{noparskipfake}{}{% + \ifvmode + \@tempskipa\lastskip + \vskip-\lastskip + \addtolength{\@tempskipa}{\parskip}% + \vskip\@tempskipa + \fi + }% + \setlength{\parskip}{\z@}% + \setlength{\parindent}{\z@}% + \setlength{\parfillskip}{\z@\@plus 1fil}% + \csname tocbasic@@before@hook\endcsname + \csname tb@#1@before@hook\endcsname + \@starttoc{#1}% + \BeforeClosingMainAux{% + \addtocontents{#1}{% + \string\providecommand\string\tocbasic@end@toc@file{}% + \string\tocbasic@end@toc@file + }% + }% + \edef\@currext{#1}% + \csname tb@#1@after@hook\endcsname + \csname tocbasic@@after@hook\endcsname + \endgroup +} +\newcommand*{\tocbasic@end@toc@file}{\par} +\newcommand*{\tocbasic@reentrant@warning}{} +\newcommand*{\tocbasic@@before@hook}{} +\newcommand*{\tocbasic@@after@hook}{} +\newcommand{\BeforeStartingTOC}[2][]{% + \ifx\relax#1\relax + \g@addto@macro\tocbasic@@before@hook{#2}% + \else + \@ifundefined{tb@#1@before@hook}{% + \expandafter\global\expandafter\let\csname tb@#1@before@hook\endcsname + \@empty + }{}% + \expandafter\g@addto@macro\csname tb@#1@before@hook\endcsname{#2}% + \fi +} +\newcommand{\AfterStartingTOC}[2][]{% + \ifx\relax#1\relax + \g@addto@macro\tocbasic@@after@hook{#2}% + \else + \@ifundefined{tb@#1@after@hook}{% + \expandafter\global\expandafter\let\csname tb@#1@after@hook\endcsname + \@empty + }{}% + \expandafter\g@addto@macro\csname tb@#1@after@hook\endcsname{#2}% + \fi +} +\newcommand*{\listoftoc}{% + \kernel@ifstar \tocbasic@starttoc\@listoftoc +} +\newcommand*{\@listoftoc}[2][]{% + \begingroup + \def\list@fname{#1}% + \@ifundefined{listof#2name}{% + \ifx\list@fname\@empty + \PackageWarning{tocbasic}{% + You should either define \expandafter\string\csname + listof#2name\endcsname\MessageBreak + or use the optional argument of \string\listoftoc\space\MessageBreak + to set the term to be used for the\MessageBreak + heading of list of #2}% + \def\list@fname{\listofname~#2}% + \fi + }{% + \expandafter\let\expandafter\list@fname\csname listof#2name\endcsname + }% + \edef\@currext{#2}% + \Iftocfeature{\@currext}{onecolumn}{% + \Iftocfeature{\@currext}{leveldown}{}{% + \if@twocolumn + \aftergroup\twocolumn\onecolumn + \fi + }% + }{}% + \Iftocfeature{\@currext}{numberline}{\def\nonumberline{\numberline{}}}{}% + \expandafter\tocbasic@listhead\expandafter{\list@fname}% + \scr@ifundefinedorrelax{microtypesetup}{}{% + \Iftocfeature{\@currext}{noprotrusion}{}{% + \microtypesetup{protrusion=false}% + \PackageInfo{tocbasic}{% + character protrusion at \@currext\space deactivated}% + }% + }% + \tocbasic@starttoc{#2}% + \endgroup +} +\@ifpackageloaded{tocbibind}{}{% + \AtBeginDocument{% + \@ifpackageloaded{tocbibind}{% + \PackageInfo{tocbasic}{usage of `tocbibind' detected}% + \newcommand*{\tb@tocbibindpatch}[3]{% + \long\def\reserved@a{\tocfile{#2}{#1} }% + \ifx #3\reserved@a + \PackageWarningNoLine{tocbasic}{% + `tocbibind' redefinition of `\string#3'\MessageBreak + detected.\MessageBreak + Note: Loading `tocbibind' without option `not#1'\MessageBreak + can break several features of `tocbasic'% + \scr@ifundefinedorrelax{KOMAClassName}{% + .\MessageBreak + Loading `tocbibind' before `tocbasic' would avoid\MessageBreak + this warning message% + }{}% + }% + \fi + }% + \tb@tocbibindpatch{toc}{\contentsname}{\tableofcontents}% + \tb@tocbibindpatch{lof}{\listfigurename}{\listoffigures}% + \tb@tocbibindpatch{lot}{\listtablename}{\listoftables}% + }{}% + }% +} +\newcommand*{\listofname}{List of} +\newcommand*{\listofeachtoc}{% + \kernel@ifnextchar [%] + \@listofeachtoc\@@listofeachtoc +} +\newcommand{\@listofeachtoc}[1][]{% + \doforeachtocfile[{#1}]{\listoftoc{\@currext}}% +} +\newcommand{\@@listofeachtoc}[1]{% + \doforeachtocfile{\listoftoc{\@currext}}% +} +\providecommand*{\ext@toc}{toc} +\newcommand*{\tocbasic@listhead}[1]{% + \@ifundefined{tocbasic@listhead@\@currext}{% + \scr@ifundefinedorrelax{chapter}{% + \expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{% + \Iftocfeature{\@currext}{leveldown}{% + \Iftocfeature{\@currext}{numbered}{% + \subsection[##1]{##1}% + }{% + \subsection*{##1}% + \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi + \begingroup + \Iftocfeature{\@currext}{totoc}{% + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {subsection}{##1}% + }{}% + \c@secnumdepth=-\maxdimen + \subsectionmark{##1}% + \endgroup + \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi + }% + }{% + \Iftocfeature{\@currext}{numbered}{% + \section[##1]{##1}% + }{% + \section*{##1}% + \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi + \begingroup + \Iftocfeature{\@currext}{totoc}{% + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {section}{##1}% + }{}% + \@ifundefined{@mkdouble}{% + \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}% + }{% + \@mkdouble{\MakeMarkcase{##1}}% + }% + \endgroup + \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi + }% + }% + }% + }{% + \expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{% + \Iftocfeature{\@currext}{leveldown}{% + \Iftocfeature{\@currext}{numbered}{% + \section{##1}% + }{% + \Iftocfeature{\@currext}{totoc}{% + \@ifundefined{addsec}{% + \section*{##1}% + \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi + \begingroup + \@ifundefined{@mkright}{% + \IfActiveMkBoth{\markright{\MakeMarkcase{##1}}}{}% + }{% + \@mkright{\MakeMarkcase{##1}}% + }% + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {section}{##1}% + \endgroup + \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi + }{% + \addsec{##1}% + }% + }{% + \section*{##1}% + \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi + \begingroup + \@ifundefined{addsecmark}{% + \c@secnumdepth=-\maxdimen + \sectionmark{##1}% + }{% + \addsecmark{##1}% + }% + \endgroup + \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi + }% + }% + }{% + \Iftocfeature{\@currext}{numbered}{% + \chapter[##1]{##1}% + }{% + \chapter*{##1}% + \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi + \begingroup + \@ifundefined{@mkdouble}{% + \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}% + }{% + \@mkdouble{\MakeMarkcase{##1}}% + }% + \Iftocfeature{\@currext}{totoc}{% + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {chapter}{##1}% + }{}% + \endgroup + \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi + }% + }% + }% + }% + }{}% + \csname tb@@beforehead@hook\endcsname + \csname tb@\@currext @beforehead@hook\endcsname + \csname tocbasic@listhead@\@currext\endcsname{#1}% + \csname tb@\@currext @afterhead@hook\endcsname + \csname tb@@afterhead@hook\endcsname +} +\newcommand{\BeforeTOCHead}[2][]{% + \@ifundefined{tb@#1@beforehead@hook}{% + \expandafter\global\expandafter\let\csname tb@#1@beforehead@hook\endcsname + \@empty + }{}% + \expandafter\g@addto@macro\csname tb@#1@beforehead@hook\endcsname{#2}% +} +\newcommand{\AfterTOCHead}[2][]{% + \@ifundefined{tb@#1@afterhead@hook}{% + \expandafter\global\expandafter\let\csname tb@#1@afterhead@hook\endcsname + \@empty + }{}% + \expandafter\g@addto@macro\csname tb@#1@afterhead@hook\endcsname{#2}% +} +\newcommand*{\deftocheading}[1]{% + \@namedef{tocbasic@listhead@#1}##1} +\newcommand*{\setuptoc}[2]{% + \@for\@tempa:=#2\do{% + \scr@trim@spaces\@tempa + \@namedef{tocbasic@#1@feature@\@tempa}{}% + }% +} +\newcommand*{\unsettoc}[2]{% + \@for\@tempa:=#2\do{% + \scr@trim@spaces\@tempa + \expandafter\let\csname tocbasic@#1@feature@\@tempa\endcsname\relax + }% +} +\setuptoc{toc}{nobabel} +\setuptoc{lof}{nobabel} +\setuptoc{lot}{nobabel} +\providecommand*{\iftocfeature}{% + \PackageWarning{tocbasic}{Usage of deprecated command + `\string\iftocfeature'.\MessageBreak + The command has been renamed because of a\MessageBreak + recommendation of The LaTeX Project Team.\MessageBreak + Please replace `\string\iftocfeature' by `\string\Iftocfeature'% + }% + \Iftocfeature +} +\newcommand*{\Iftocfeature}[2]{% + \scr@ifundefinedorrelax{tocbasic@#1@feature@#2}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% +} +\newcommand*{\tocbasicautomode}{% + \let\tb@saved@starttoc\@starttoc + \let\@starttoc\tocbasic@starttoc + \BeforeStartingTOC{% + \let\@starttoc\tb@saved@starttoc + \expandafter\Ifattoclist\expandafter{\@currext}{}{% + \addtotoclist[tocbasicautomode]{\@currext}% + }% + }% +} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.toc]{KOMAarg} +\newcommand*{\DeclareNewTOC}[2][]{% + \newif\iftb@nt@float + \newif\iftb@nt@nonfloat + \newif\iftb@nt@forcenames + \def\tb@nt@floattype{\tb@nt@autofloattype}% + \def\tb@nt@floatpos{tbp}% + \def\tb@nt@ext{#2}% + \edef\tb@nt@type{#2}% + \let\tb@nt@types\relax + \def\tb@nt@owner{float}% + \def\tb@nt@name{\expandafter\protect\expandafter\MakeUppercase\tb@nt@type}% + \let\tb@nt@listname\relax + \let\tb@nt@counterwithin\@empty + \let\tb@nt@atbegin\@empty + \let\tb@nt@atend\@empty + \def\tb@nt@tocentrystyle{default}% + \def\tb@nt@tocstyle@options{level=1}% + \IfArgIsEmpty{#1}{% + \begingroup + \let\scr@dte@current\tb@nt@type + \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}% + \def\do@endgroup{\endgroup}% + \def\do##1{% + \Ifstr{##1}{numwidth}{% + \l@addto@macro\do@endgroup{% + \l@addto@macro{\tb@nt@tocstyle@options}{,numwidth=1.5em}% + }% + }{% + \Ifstr{##1}{indent}{% + \l@addto@macro\do@endgroup{% + \l@addto@macro{\tb@nt@tocstyle@options}{,indent=1em}% + }% + }{}% + }% + \kernel@ifnextchar[%] + {\@dodefault}% + {}% + }% + \def\@dodefault[##1]{}% + \scr@dte@doopts + \do@endgroup + }{% + \let\tb@nt@extra@relax@opts\@empty + \DefineFamilyKey[.toc]{KOMAarg}{type}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@type{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}[default]{% + \IfArgIsEmpty{##1}{% + \edef\tb@nt@tocentrystyle{##1}% + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@dte@def@l@##1}{% + \FamilyKeyStateUnknownValue + }{% + \edef\tb@nt@tocentrystyle{##1}% + \FamilyKeyStateProcessed + }% + }% + }% + \DefineFamilyKey[.toc]{KOMAarg}{extension}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@ext{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{owner}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@owner{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{category}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@owner{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% + \FamilyExecuteOptions[.toc]{KOMAarg}{#1}% + \RelaxFamilyKey[.toc]{KOMAarg}{@else@}% + }% + \expandafter\newcommand\csname ext@\tb@nt@type\endcsname{}% + \expandafter\let\csname ext@\tb@nt@type\endcsname\tb@nt@ext + \addtotoclist[\tb@nt@owner]{\csname ext@\tb@nt@type\endcsname}% + \IfArgIsEmpty{#1}{}{% + \DefineFamilyKey[.toc]{KOMAarg}{type}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.toc]{KOMAarg}{extension}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.toc]{KOMAarg}{category}{\FamilyKeyStateProcessed}% + \Ifstr{\tb@nt@tocentrystyle}{}{}{% + \begingroup + \let\scr@dte@current\tb@nt@type + \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}% + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \l@addto@macro\tb@nt@extra@relax@opts{% + \RelaxFamilyKey[.toc]{KOMAarg}{toc##1}% + \RelaxFamilyKey[.toc]{KOMAarg}{tocentry##1}% + \RelaxFamilyKey[.toc]{KOMAarg}{tocentry##1:}% + }% + }% + \kernel@ifnextchar[%] + {\@dodefault{##1}}% + {\@donodefault{##1}}% + }% + \def\@donodefault##1{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.toc]{KOMAarg}{toc##1}{% + \PackageWarning{tocbasic}{you should use `tocentry##1' + instead\MessageBreak + of `toc##1'}% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1}{% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1:}{% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1:={####1}}% + }% + }% + }% + \def\@dodefault##1[##2]{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.toc]{KOMAarg}{toc##1}[##2]{% + \PackageWarning{tocbasic}{you should use `tocentry##1' + instead\MessageBreak + of `toc##1'}% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1}[##2]{% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1:}{% + \l@addto@macro{\tb@nt@tocstyle@options}{,##1:={####1}}% + }% + }% + }% + \scr@dte@doopts + \do@endgroup + }% + \FamilyStringKey[.toc]{KOMAarg}{atbegin}{\tb@nt@atbegin}% + \FamilyStringKey[.toc]{KOMAarg}{atend}{\tb@nt@atend}% + \DefineFamilyKey[.toc]{KOMAarg}{counterwithin}{% + \edef\tb@nt@counterwithin{##1}\FamilyKeyStateProcessed + }% + \FamilyBoolKey[.toc]{KOMAarg}{float}{tb@nt@float}% + \DefineFamilyKey[.toc]{KOMAarg}{floatpos}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@floatpos{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{floattype}{% + \FamilySetCounterMacro{KOMAarg}{floattype}{\reserved@d}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifnum 0= + \ifnum\reserved@d<1 0 \else\ifnum\reserved@d>31 0 \else 1 \fi\fi + \FamilyKeyStateUnknownValue + \else + \let\tb@nt@floattype\reserved@d + \fi + \fi + }% + \FamilyBoolKey[.toc]{KOMAarg}{forcenames}{tb@nt@forcenames}% + \DefineFamilyKey[.toc]{KOMAarg}{hang}{% + \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{% + \PackageWarning{tocbasic}{% + deprecated option `hang'.\MessageBreak + Option will be ignored, because toc entry style\MessageBreak + `\tb@nt@tocentrystyle' does not provide option `numwidth'% + }% + }{% + \PackageWarning{tocbasic}{% + deprecated option `hang'.\MessageBreak + You should replace option `hang' by option\MessageBreak + `tocentrynumwidth'% + }% + \l@addto@macro\tb@nt@tocstyle@options{,numwidth={##1}}% + }% + \FamilyKeyStateProcessed + }% + \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{}{% + \l@addto@macro\tb@nt@tocstyle@options{,numwidth=1.5em}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{indent}{% + \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{% + \PackageWarning{tocbasic}{% + deprecated option `indent'.\MessageBreak + Option will be ignored, because toc entry style\MessageBreak + `\tb@nt@tocentrystyle' does not provide option `indent'% + }% + }{% + \PackageWarning{tocbasic}{% + deprecated option `indent'.\MessageBreak + You should replace option `indent' by option\MessageBreak + `tocentryindent'% + }% + \l@addto@macro\tb@nt@tocstyle@options{,indent={##1}}% + }% + \FamilyKeyStateProcessed + }% + \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{}{% + \l@addto@macro\tb@nt@tocstyle@options{,indent=1em}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{level}{% + \PackageWarning{tocbasic}{% + deprecated option `level'.\MessageBreak + You should replace option `level' by option\MessageBreak + `tocentrylevel'% + }% + \l@addto@macro\tb@nt@tocstyle@options{,level={##1}}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.toc]{KOMAarg}{listname}{% + \tb@ifvalueisnotempty{##1}{\def\tb@nt@listname{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{name}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@name{##1}}% + }% + \FamilyBoolKey[.toc]{KOMAarg}{nonfloat}{tb@nt@nonfloat}% + \DefineFamilyKey[.toc]{KOMAarg}{types}{% + \tb@ifvalueisnotempty{##1}{\edef\tb@nt@types{##1}}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{setup}{% + \setuptoc\tb@nt@ext{##1}% + }% + \DefineFamilyKey[.toc]{KOMAarg}{unset}{% + \unsettoc\tb@nt@ext{##1}% + }% + \FamilyExecuteOptions[.toc]{KOMAarg}{#1}% + \RelaxFamilyKey[.toc]{KOMAarg}{unset}% + \RelaxFamilyKey[.toc]{KOMAarg}{setup}% + \RelaxFamilyKey[.toc]{KOMAarg}{types}% + \RelaxFamilyKey[.toc]{KOMAarg}{nonfloat}% + \RelaxFamilyKey[.toc]{KOMAarg}{name}% + \RelaxFamilyKey[.toc]{KOMAarg}{listname}% + \RelaxFamilyKey[.toc]{KOMAarg}{level}% + \RelaxFamilyKey[.toc]{KOMAarg}{indent}% + \RelaxFamilyKey[.toc]{KOMAarg}{hang}% + \RelaxFamilyKey[.toc]{KOMAarg}{forcenames}% + \RelaxFamilyKey[.toc]{KOMAarg}{floatpos}% + \RelaxFamilyKey[.toc]{KOMAarg}{float}% + \RelaxFamilyKey[.toc]{KOMAarg}{counterwithin}% + \RelaxFamilyKey[.toc]{KOMAarg}{atend}% + \RelaxFamilyKey[.toc]{KOMAarg}{atbegin}% + \tb@nt@extra@relax@opts + \RelaxFamilyKey[.toc]{KOMAarg}{category}% + \RelaxFamilyKey[.toc]{KOMAarg}{owner}% + \RelaxFamilyKey[.toc]{KOMAarg}{extension}% + \RelaxFamilyKey[.toc]{KOMAarg}{tocentrystyle}% + \RelaxFamilyKey[.toc]{KOMAarg}{type}% + }% + \expandafter\let\csname tb@nt@type@\tb@nt@ext\endcsname\tb@nt@type + \scr@ifundefinedorrelax{tb@nt@types}{% + \edef\tb@nt@types{\tb@nt@type s}% + }{}% + \scr@ifundefinedorrelax{tb@nt@listname}{% + \protected@edef\tb@nt@listname{List of \protect\MakeUppercase\tb@nt@types}% + }{}% + \@ifundefined{\tb@nt@type name}{% + \expandafter\protected@edef\csname \tb@nt@type name\endcsname{\tb@nt@name}% + }{% + \iftb@nt@forcenames + \expandafter\protected@edef\csname \tb@nt@type name\endcsname + {\tb@nt@name}% + \fi + }% + \@ifundefined{list\tb@nt@type name}{% + \expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname + }{% + \iftb@nt@forcenames + \expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname + \fi + }% + \expandafter\newcommand\csname listof\tb@nt@ext name\expandafter\endcsname + \expandafter{\csname list\tb@nt@type name\endcsname}% + \begingroup\edef\@tempa{\endgroup + \noexpand\newcommand*\csname listof\tb@nt@types\endcsname{% + \noexpand\listoftoc{% + \expandafter\noexpand\csname ext@\tb@nt@type\endcsname}% + }% + }\@tempa + \Ifstr{\tb@nt@tocentrystyle}{}{% + \@ifundefined{l@\tb@nt@type}{% + \PackageWarning{tocbasic}{% + \expandafter\string\csname l@\tb@nt@type\endcsname\space + undefined!\MessageBreak + I hope you know, what you are doing, but\MessageBreak + maybe it would be better to use proper\MessageBreak + `tocentrystyle' settings% + }% + }{}% + }{% + \edef\reserved@a{% + \noexpand\DeclareTOCStyleEntry[% + {\unexpanded\expandafter{\tb@nt@tocstyle@options}}% + ]{\tb@nt@tocentrystyle}{\tb@nt@type}% + }% + \reserved@a + }% + \@ifundefined{listof\tb@nt@ext entryname}{% + \expandafter\let\csname listof\tb@nt@ext entryname\endcsname\tb@nt@name + }{}% + \begingroup\edef\@tempa{\endgroup + \noexpand\newcommand*\csname setup\tb@nt@types\endcsname{% + \noexpand\setuptoc{\tb@nt@ext}% + }% + }\@tempa + \@tempswafalse + \iftb@nt@float + \expandafter\newcommand\expandafter*\csname fps@\tb@nt@type\expandafter + \endcsname\expandafter{\tb@nt@floatpos}% + \expandafter\newcommand\expandafter*\csname ftype@\tb@nt@type\expandafter + \endcsname\expandafter{\tb@nt@floattype}% + \begingroup + \edef\@tempa{% + \noexpand\endgroup + \noexpand\newenvironment{\tb@nt@type}{% + \noexpand\kernel@ifnextchar[%] + {\noexpand\tb@atbegin@after\noexpand\@float{\tb@nt@type}}% + {\noexpand\edef\noexpand\reserved@a{% + \noexpand\noexpand\noexpand\tb@atbegin@after + \noexpand\noexpand\noexpand\@float{\tb@nt@type}% + [\noexpand\csname fps@\tb@nt@type\noexpand\endcsname]}% + \noexpand\reserved@a}% + }{% + \noexpand\csname \tb@nt@type @atend\noexpand\endcsname + \noexpand\end@float + }% + \noexpand\newenvironment{\tb@nt@type*}{% + \noexpand\kernel@ifnextchar[%] + {\noexpand\tb@atbegin@after\noexpand\@dblfloat{\tb@nt@type}}% + {\noexpand\edef\noexpand\reserved@a{% + \noexpand\noexpand\noexpand\tb@atbegin@after + \noexpand\noexpand\noexpand\@dblfloat{\tb@nt@type}% + [\noexpand\csname fps@\tb@nt@type\noexpand\endcsname]}% + \noexpand\reserved@a}% + }{% + \noexpand\csname \tb@nt@type @atend\noexpand\endcsname + \noexpand\end@dblfloat + }% + }% + \@tempa + \@tempswatrue + \fi + \iftb@nt@nonfloat + \begingroup + \edef\@tempa{% + \noexpand\endgroup + \noexpand\newenvironment{\tb@nt@type-}{% + \noexpand\trivlist\noexpand\item\noexpand\relax + \noexpand\minipage{\noexpand\linewidth}% + \noexpand\def\noexpand\@captype{\tb@nt@type}% + \noexpand\csname \tb@nt@type @atbegin\noexpand\endcsname + }{% + \noexpand\csname \tb@nt@type @atend\noexpand\endcsname + \noexpand\endminipage\noexpand\endtrivlist + }% + }% + \@tempa + \@tempswatrue + \fi + \if@tempswa + \@ifundefined{c@\tb@nt@type}{% + \newcounter{\tb@nt@type}% + }{% + \PackageWarning{tocbasic}{using already defined counter `\tb@nt@type'}% + }% + \ifx\tb@nt@counterwithin\@empty\else + \@addtoreset{\tb@nt@type}{\tb@nt@counterwithin}% + \begingroup + \def\reserved@c{section}% + \@ifundefined{chapter}{}{% + \@ifundefined{c@chapter}{}{% + \@ifundefined{l@chapter}{}{% + \def\reserved@c{chapter}}}}% + \expandafter\Ifstr\expandafter{\reserved@c}{\tb@nt@counterwithin}{% + \edef\@tempa{% + \noexpand\endgroup + \noexpand\renewcommand*\expandafter\noexpand + \csname the\tb@nt@type\endcsname{% + \unexpanded{% + \expandafter\ifx\csname if@mainmatter\expandafter\endcsname + \csname iffalse\endcsname\else + }% + \noexpand\ifnum + \expandafter\noexpand\csname c@\tb@nt@counterwithin\endcsname + >\noexpand\z@ + \expandafter\noexpand\csname the\tb@nt@counterwithin\endcsname + .% + \noexpand\fi + \noexpand\fi + \noexpand\arabic{\tb@nt@type}% + }% + }% + }{% + \edef\@tempa{% + \noexpand\endgroup + \noexpand\renewcommand*\expandafter\noexpand + \csname the\tb@nt@type\endcsname{% + \expandafter\noexpand\csname the\tb@nt@counterwithin\endcsname + .% + \noexpand\arabic{\tb@nt@type}% + }% + }% + }% + \@tempa + \fi + \begingroup + \edef\@tempa{% + \noexpand\endgroup + \noexpand\newcommand*\expandafter\noexpand + \csname \tb@nt@type format\endcsname{% + \expandafter\noexpand\csname \tb@nt@type name\endcsname + \noexpand\nobreakspace + \expandafter\noexpand\csname the\tb@nt@type\endcsname + \ifx\tb@nt@counterwithin\@empty\else + \noexpand\csname autodot\endcsname + \fi + }% + \noexpand\newcommand*\expandafter\noexpand + \csname fnum@\tb@nt@type\endcsname{% + \expandafter\noexpand\csname \tb@nt@type format\endcsname + }% + }% + \@tempa + \expandafter\newcommand\expandafter*\csname \tb@nt@type @atbegin\expandafter + \endcsname\expandafter{\tb@nt@atbegin}% + \expandafter\newcommand\expandafter*\csname \tb@nt@type @atend\expandafter + \endcsname\expandafter{\tb@nt@atend}% + \fi +} +\newcommand*{\tb@atbegin@after}[3]{} +\def\tb@atbegin@after#1#2[#3]{% + #1{#2}[#3]% + \csname #2@atbegin\endcsname +} +\newcommand*{\tb@ifvalueisnotempty}[1]{% + \Ifstr{#1}{}{% + \FamilyKeyStateUnknownValue + \expandafter\@gobble + }{% + \FamilyKeyStateProcessed + \expandafter\@firstofone + }% +} +\newcommand*{\tb@nt@autofloattype}{16} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\newcommand*{\scr@numberline}[1]{% + \numberline@box{% + \numberline@prefix + \Ifstr{#1}{}{#1}{% + \numberline@numberformat{#1}% + }% + \numberline@postfix + }% +} +\newcommand*{\usetocbasicnumberline}[1][% + \PackageInfo{tocbasic}{Using my definition of `\string\numberline'}% +]{% + \@tempswatrue + \begingroup + \def\scr@numberline##1{\global\@tempswafalse}% + \@tempdima\maxdimen + \sbox\@tempboxa{\numberline{0}}% + \endgroup + \if@tempswa #1\renewcommand*{\numberline}[1]{\scr@numberline{##1}}\fi +} +\newcommand*{\numberline@prefix}{} +\newcommand*{\numberline@postfix}{\hfil} +\newcommand*{\numberline@numberformat}[1]{% + \Ifstr{#1}{}{}{\numberline@numberprefix#1\numberline@numberpostfix}% +} +\newcommand*{\numberline@numberprefix}{} +\newcommand*{\numberline@numberpostfix}{} +\newcommand*{\numberline@box}[1]{\hb@xt@\@tempdima{#1}} +\DefineFamily{KOMAarg} +\DefineFamilyMember[.dte]{KOMAarg} +\newcommand*{\@DefineTOCEntryOption}[2]{% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2}% + }% + \kernel@ifnextchar [%] + {\@DefineTOCEntryOptionWithDefault{#1}{#2}}% + {\@DefineTOCEntryOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryOptionWithoutDefault}[3]{% + \DefineFamilyKey[.dte]{KOMAarg}{#2}{#3}% +} +\newcommand*{\@DefineTOCEntryOptionWithDefault}{} +\def\@DefineTOCEntryOptionWithDefault#1#2[#3]#4{% + \l@addto@macro\scr@dte@doopts{[{#3}]}% + \DefineFamilyKey[.dte]{KOMAarg}{#2}[{#3}]{#4}% +} +\newcommand*{\@RelaxTOCEntryOptions}{% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \RelaxFamilyKey[.dte]{KOMAarg}{##1}% + }% + \scr@dte@gobbleopt + }% + \scr@dte@doopts + \do@endgroup +} +\newcommand{\scr@dte@gobbleopt}[1][]{} +\newcommand*{\@DefineTOCEntryListOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryListOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryListOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryListOptionWithoutDefault}[5]{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#5}% + \@DefineTOCEntryOption{#1}{#2}{% + \expandafter\protected@edef\csname #3\scr@dte@current#4\endcsname{##1}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #3\scr@dte@current#4\expandafter\endcsname + \csname #3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \expandafter\protected@edef\csname #2\scr@dte@current#4\endcsname{% + \csname #2\scr@dte@current#4\endcsname,##1}% + \FamilyKeyStateProcessed + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryListOptionWithDefault}{} +\def\@DefineTOCEntryListOptionWithDefault#1#2[#3]#4#5#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#6}% + \@DefineTOCEntryOption{#1}{#2}[{#3]}{% + \expandafter\protected@edef\csname #4\scr@dte@current#5\endcsname{##1}% + \FamilyKeyStateProcessed + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \expandafter\protected@edef\csname #4\scr@dte@current#5\endcsname{% + \csname #4\scr@dte@current#5\endcsname,##1}% + \FamilyKeyStateProcessed + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryLengthOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryLengthOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryLengthOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryLengthOptionWithoutDefault}[5]{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#5}% + \@DefineTOCEntryOption{#1}{#2}{% + \@DefineTOCEntryLengthOptionMacro{#2}{#3}{#4}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #3\scr@dte@current#4\expandafter\endcsname + \csname #3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \@DefineTOCEntryAddLengthOptionMacro{#2+}{#3}{#4}{##1}% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}% + \noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryLengthOptionWithDefault}{} +\def\@DefineTOCEntryLengthOptionWithDefault#1#2[#3]#4#5#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#6}% + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryLengthOptionMacro{#2}{#4}{#5}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \@DefineTOCEntryAddLengthOptionMacro{#2+}{#4}{#5}{##1}% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}% + \noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryLengthOptionMacro}[4]{% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#1}{\noexpand\@tempskipa}{#4}% + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dte@expandtopt + \expandafter\edef\csname #2\scr@dte@current#3\endcsname{% + \the\@tempskipa}% + \else + \expandafter\protected@edef\csname #2\scr@dte@current#3\endcsname{#4}% + \fi + \fi +} +\newcommand*{\@DefineTOCEntryAddLengthOptionMacro}[4]{% + \@ifundefined{#2\scr@dte@current#3}{% + \FamilyKeyStateUnknownValue + }{% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#1}{\noexpand\@tempskipa}{#4}% + }\reserved@a + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dte@expandtopt + \expandafter\edef\csname #2\scr@dte@current#3\endcsname{% + \the\glueexpr\@tempskipa + +\csname #2\scr@dte@current#3\endcsname\relax}% + \else + \expandafter\protected@edef\csname #2\scr@dte@current#3\endcsname{% + \the\glueexpr #4% + +\csname #2\scr@dte@current#3\endcsname\relax}% + \fi + \fi + }% +} +\newcommand*{\@DefineTOCEntryNumberOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryNumberOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryNumberOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryNumberOptionWithoutDefault}[5]{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#5}% + \@DefineTOCEntryOption{#1}{#2}{% + \@DefineTOCEntryNumberOptionMacro{#2}{#3}{#4}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #3\scr@dte@current#4\expandafter\endcsname + \csname #3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \@DefineTOCEntryAddNumberOptionMacro{#2+}{#3}{#4}{##1}% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}% + \noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryNumberOptionWithDefault}{} +\def\@DefineTOCEntryNumberOptionWithDefault#1#2[#3]#4#5#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#6}% + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryNumberOptionMacro{#2}{#4}{#5}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2+}{% + \@DefineTOCEntryAddNumberOptionMacro{#2+}{#4}{#5}{##1}% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}% + \noexpand\do{#2:}\noexpand\do{#2+}% + }% +} +\newcommand*{\@DefineTOCEntryNumberOptionMacro}[4]{% + \protected@edef\reserved@a{% + \noexpand\FamilySetCounterMacro{KOMAarg}{#1}{% + \expandafter\noexpand\csname #2\scr@dte@current#3\endcsname + }{#4}% + }\reserved@a +} +\newcommand*{\@DefineTOCEntryAddNumberOptionMacro}[4]{% + \@ifundefined{#2\scr@dte@current#3}{% + \FamilyKeyStateUnknownValue + }{% + \FamilySetCounterMacro{KOMAarg}{#1}{% + \reserved@a + }{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\edef\csname #2\scr@dte@current#3\endcsname{% + \the\numexpr \reserved@a+\csname #2\scr@dte@current#3\endcsname\relax + }% + \fi + }% +} +\newcommand*{\@DefineTOCEntryBooleanOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryBoolOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryBoolOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryBoolOptionWithoutDefault}[5]{% + \@TOCEntryStyleNeedsCommandByOption{#1}{if#3}{#4}{#2}{#5}% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4false}{#2}{#5}% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4false}{#2}{#5}% + \@DefineTOCEntryOption{#1}{#2}[true]{% + \@DefineTOCEntryBoolOptionMacro{#2}{#3}{#4}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{if#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname if#3\scr@dte@current#4\expandafter\endcsname + \csname if#3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% +} +\newcommand*{\@DefineTOCEntryBoolOptionWithDefault}{} +\def\@DefineTOCEntryBoolOptionWithDefault#1#2[#3]#4#5#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{if#4}{#5}{#2}{#6}% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5true}{#2}{#6}% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5false}{#2}{#6}% + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryBoolOptionMacro{#2}{#4}{#5}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{if#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname if#4\scr@dte@current#5\expandafter\endcsname + \csname if#4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% +} +\newcommand*{\@DefineTOCEntryBoolOptionMacro}[4]{% + \@ifundefined{if#2\scr@dte@current#3}{% + \expandafter\newif\csname if#2\scr@dte@current#3\endcsname + }{}% + \FamilySetBool{KOMAarg}{#1}{#2\scr@dte@current#3}{#4}% +} +\newcommand*{\@DefineTOCEntryIfOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryIfOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryIfOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryIfOptionWithoutDefault}[5]{% + \@TOCEntryStyleNeedsCommandByOption{#1}{If#3}{#4}{#2}{#5}% + \@DefineTOCEntryOption{#1}{#2}[true]{% + \@DefineTOCEntryIfOptionMacro{#2}{#3}{#4}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{If#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname If#3\scr@dte@current#4\expandafter\endcsname + \csname If#3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% +} +\newcommand*{\@DefineTOCEntryIfOptionWithDefault}{} +\def\@DefineTOCEntryIfOptionWithDefault#1#2[#3]#4#5#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{If#4}{#5}{#2}{#6}% + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryIfOptionMacro{#2}{#4}{#5}{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{If#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname If#4\scr@dte@current#5\expandafter\endcsname + \csname If#4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% +} +\newcommand*{\@DefineTOCEntryIfOptionMacro}[4]{% + \FamilySetBool{KOMAarg}{#1}{@tempswa}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\let\csname If#2\scr@dte@current#3\endcsname\@firstoftwo + \else + \expandafter\let\csname If#2\scr@dte@current#3\endcsname\@secondoftwo + \fi + \fi +} +\newcommand*{\@DefineTOCEntryCommandOption}[2]{% + \kernel@ifnextchar [%] + {\@DefineTOCEntryCommandOptionWithDefault{#1}{#2}} + {\@DefineTOCEntryCommandOptionWithoutDefault{#1}{#2}}% +} +\newcommand*{\@DefineTOCEntryCommandOptionWithoutDefault}[4]{% + \@testopt{\@@DefineTOCEntryCommandOptionWithoutDefault{#1}{#2}{#3}{#4}}0% +} +\newcommand*{\@@DefineTOCEntryCommandOptionWithoutDefault}{}% +\def\@@DefineTOCEntryCommandOptionWithoutDefault#1#2#3#4[#5]#6{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#6}% + \ifcase #5 + \@DefineTOCEntryOption{#1}{#2}{% + \@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #3\scr@dte@current#4\expandafter\endcsname + \csname #3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% + \or + \@DefineTOCEntryOption{#1}{#2}{% + \@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1{####1}}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #3\scr@dte@current#4\expandafter\endcsname + \csname #3##1#4\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% + \else + \PackageError{tocbasic}{only one argument supported}{% + \string\DefineTOCEntryCommandOption\space currently supports only + commands with\MessageBreak + at most one argument not #5}% + \fi +} +\newcommand*{\@DefineTOCEntryCommandOptionWithDefault}{} +\def\@DefineTOCEntryCommandOptionWithDefault#1#2[#3]#4#5{% + \@testopt{\@@DefineTOCEntryCommandOptionWithDefault{#1}{#2}{#3}{#4}{#5}}0% +} +\def\@@DefineTOCEntryCommandOptionWithDefault#1#2#3#4#5[#6]#7{% + \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#7}% + \ifcase #6 + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% + \or + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% + \or + \@DefineTOCEntryOption{#1}{#2}[{#3}]{% + \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}{####2}}% + }% + \DefineFamilyKey[.dte]{KOMAarg}{#2:}{% + \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{% + \expandafter\let + \csname #4\scr@dte@current#5\expandafter\endcsname + \csname #4##1#5\endcsname + \FamilyKeyStateProcessed + }% + }% + \edef\scr@dte@doopts{% + \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}% + }% + \else + \PackageError{tocbasic}{only one argument supported}{% + \string\DefineTOCEntryCommandOption\space currently supports only + commands with\MessageBreak + at most two argument not #6}% + \fi +} +\newcommand*{\@DefineTOCEntryCommandOptionMacro}[3]{% + \@testopt{\@@DefineTOCEntryCommandOptionMacro{#1}{#2}{#3}}0% +} +\newcommand*{\@@DefineTOCEntryCommandOptionMacro}{} +\long\def\@@DefineTOCEntryCommandOptionMacro#1#2#3[#4]#5{% + \let\l@ngrel@x\long + \expandafter\@yargdef\csname #2\scr@dte@current#3\endcsname\@ne{#4}{#5}% + \FamilyKeyStateProcessed +} +\newcommand{\@AddToDeclareTOCEntryStylePreCheckNeeds}[1]{% + \expandafter\providecommand\csname scr@dte@precheck\endcsname[1]{}% + \expandafter\l@addto@macro@a\csname scr@dte@precheck\endcsname +} +\newcommand{\@PreToDeclareTOCEntryStylePreCheckNeeds}[1]{% + \expandafter\providecommand\csname scr@dte@precheck\endcsname[1]{}% + \expandafter\l@preto@macro@a\csname scr@dte@precheck\endcsname +} +\newcommand*{\@TOCEntryStyleNeedsCommandByOption}[5]{% + \expandafter\providecommand\expandafter*\csname scr@dte@#1@needs\endcsname{}% + \expandafter\l@addto@macro\csname scr@dte@#1@needs\endcsname{% + \do{#2}{#3}{#4}{#5}% + }% +} +\newcommand{\TOCEntryStyleInitCode}[1]{% + \scr@ifundefinedorrelax{scr@dte@#1@init}{% + \expandafter\providecommand\expandafter*% + \csname scr@dte@#1@init\endcsname[1]% + }{% + \expandafter\l@addto@macro@a\csname scr@dte@#1@init\endcsname + }% +} +\newcommand{\TOCEntryStyleStartInitCode}[1]{% + \scr@ifundefinedorrelax{scr@dte@#1@init}{% + \expandafter\providecommand\expandafter*% + \csname scr@dte@#1@init\endcsname[1]% + }{% + \expandafter\l@preto@macro@a\csname scr@dte@#1@init\endcsname + }% +} +\newcommand*{\@ExecuteTOCEntryStyleInitCode}[2]{% + \let\scr@dte@doopts\@empty + \expandafter\let\csname scr@dte@#1@needs\endcsname\relax + \scr@ifundefinedorrelax{scr@dte@#1@init}{}{% + \def\DefineTOCEntryBooleanOption{\@DefineTOCEntryBooleanOption{#1}}% + \def\DefineTOCEntryCommandOption{\@DefineTOCEntryCommandOption{#1}}% + \def\DefineTOCEntryIfOption{\@DefineTOCEntryIfOption{#1}}% + \def\DefineTOCEntryLengthOption{\@DefineTOCEntryLengthOption{#1}}% + \def\DefineTOCEntryListOption{\@DefineTOCEntryListOption{#1}}% + \def\DefineTOCEntryNumberOption{\@DefineTOCEntryNumberOption{#1}}% + \def\DefineTOCEntryOption{\@DefineTOCEntryOption{#1}}% + \def\AddToDeclareTOCEntryStylePreCheckNeeds{% + \@AddToDeclareTOCEntryStylePreCheckNeeds{#1}}% + \def\PreToDeclareTOCEntryStylePreCheckNeeds{% + \@PreToDeclareTOCEntryStylePreCheckNeeds{#1}}% + \def\TOCEntryStyleNeedsCommandByOption{% + \@TOCEntryStyleNeedsCommandByOption{#1}}% + \@nameuse{scr@dte@#1@init}{#2}% + \let\TOCEntryStyleNeedsCommandByOption\relax + \let\PreToDeclareTOCEntryStylePreCheckNeeds\relax + \let\AddToDeclareTOCEntryStylePreCheckNeeds\relax + \let\DefineTOCEntryOption\relax + \let\DefineTOCEntryNumberOption\relax + \let\DefineTOCEntryListOption\relax + \let\DefineTOCEntryLengthOption\relax + \let\DefineTOCEntryIfOption\relax + \let\DefineTOCEntryCommandOption\relax + \let\DefineTOCEntryBooleanOption\relax + }% +} +\newcommand*{\DeclareTOCStyleEntry}[3][]{% + \scr@ifundefinedorrelax{scr@dte@def@l@#2}{% + \PackageError{tocbasic}{toc entry style `#2' undefined}{% + Somebody told me to define toc entry `#3' with style `#2',\MessageBreak + but I do not know style `#2'.\MessageBreak + You should first define the style then define the entry.\MessageBreak + If you'll continue, I'll ignore the command. This could result + in\MessageBreak + further error messages.% + }% + }{% + \let\scr@dte@precheck\@gobble + \def\scr@dte@current{#3}% + \@ExecuteTOCEntryStyleInitCode{#2}{#3}% + \IfArgIsEmpty{#1}{}{% + \FamilyBoolKey[.dte]{KOMAarg}{expandtopt}{scr@dte@expandtopt}% + \scr@dte@expandtoptfalse + \FamilyExecuteOptions[.dte]{KOMAarg}{#1}% + \RelaxFamilyKey[.dte]{KOMAarg}{expandtopt}% + }% + \@RelaxTOCEntryOptions + \let\scr@dte@doopts\relax + \let\scr@dte@current\relax + \scr@ifundefinedorrelax{#3tocdepth}{% + \expandafter\let\csname #3tocdepth\expandafter\endcsname + \csname #3numdepth\endcsname + }{}% + \scr@dte@precheck{#3}% + \let\scr@dte@precheck\relax + \begingroup + \aftergroup\@tempswatrue + \def\do##1##2##3##4{% + \scr@ifundefinedorrelax{##1#3##2}{% + \PackageError{tocbasic}{toc style `#2' needs ##4}{% + Usually the ##4 is defined using option `##3'.\MessageBreak + In some cases it may be set defining command + `\expandafter\string\csname ##1#3##2\endcsname'.\MessageBreak + If you'll continue, I'll ignore the command. This could result + in\MessageBreak + further error messages.% + }% + \aftergroup\@tempswafalse + }{}% + }% + \do{}{tocdepth}{level}{toc style level}% + \@nameuse{scr@dte@#2@needs}% + \endgroup + \if@tempswa + \@nameuse{scr@dte@def@l@#2}{#3}% + \expandafter\edef\csname scr@dte@#3@style\endcsname{#2}% + \expandafter\edef\csname scr@tso@#3@style\endcsname{#2}% + \expandafter\let\csname toclevel@#3\expandafter\endcsname + \csname #3tocdepth\endcsname + \if@atdocument\else + \scr@ifundefinedorrelax{AfterPackage}{% + \AtBeginDocument + }{% + \AfterPackage*{hyperref}% + }% + {% + \expandafter\let\csname toclevel@#3\expandafter\endcsname + \csname #3tocdepth\endcsname + }% + \fi + \fi + }% +} +\newcommand*{\DeclareTOCStyleEntries}[3][]{% + \edef\reserved@a{#3}% + \@for \reserved@a:=\reserved@a \do {% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \IfArgIsEmpty{#1}{% + \edef\reserved@a{% + \unexpanded{\DeclareTOCStyleEntry{#2}}{\reserved@a}}% + }{% + \edef\reserved@a{% + \unexpanded{\DeclareTOCStyleEntry[{#1}]{#2}}{\reserved@a}}% + }% + \reserved@a + \fi + }% +} +\newcommand*{\DeclareTOCEntryStyle}[1]{% + \kernel@ifnextchar [%] + {\@DeclareTOCEntryStyle{#1}}% + {\@DeclareTOCEntryStyle{#1}[]}% +} +\newcommand{\@DeclareTOCEntryStyle}{} +\long\def\@DeclareTOCEntryStyle#1[#2]#3{% + \@namedef{scr@dte@def@l@#1}##1{% + \@namedef{l@##1}####1####2{% + \TOC@EntryStartHook{##1}% + #3% + \TOC@EntryEndHook{##1}% + }% + }% + \TOCEntryStyleInitCode{#1}{% + \DefineTOCEntryNumberOption{level}{}{tocdepth}{toc entry level}% + #2% + }% +} +\newcommand*{\TOC@EntryStartHook}[1]{} +\newcommand*{\TOC@EntryEndHook}[1]{} +\newcommand*{\CloneTOCEntryStyle}[2]{% + \expandafter\let\csname scr@dte@def@l@#2\expandafter\endcsname + \csname scr@dte@def@l@#1\endcsname + \expandafter\let\csname scr@dte@#2@init\expandafter\endcsname + \csname scr@dte@#1@init\endcsname +} +\providecommand*\@pnumwidth{1.55em} +\providecommand*\@tocrmarg {2.55em} +\providecommand*\@dotsep {4.5} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,gobble) +\DeclareTOCEntryStyle{gobble}{}% +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,dottedtocline) +\DeclareTOCEntryStyle{dottedtocline}[{% + \DefineTOCEntryLengthOption{indent}% + {scr@tso@}{@indent}{entry indent}% + \DefineTOCEntryLengthOption{numwidth}% + {scr@tso@}{@numwidth}{entry number width}% + \@ifundefined{#1tocdepth}{% + \Ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{% + \Ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{% + \Ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{% + \Ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{% + \Ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{% + \Ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{% + \Ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{% + \expandafter\let\csname #1tocdepth\expandafter\endcsname + \csname #1numdepth\endcsname + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \@ifundefined{scr@tso@#1@indent}{% + \@ifundefined{scr@#1@tocindent}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{3.8em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{7em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{7.0em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{12em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{% + \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}% + }% + }{}% + \@ifundefined{scr@tso@#1@numwidth}{% + \@ifundefined{scr@#1@tocnumwidth}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \scr@ifundefinedorrelax{chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.2em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{4.1em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{5m}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{3.2em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.1em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{5em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{6em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{% + \@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}% + }% + }{}% +}]{% + \Iftocfeature{\@currext}{noindent}{% + \@dottedtocline{\@nameuse{#1tocdepth}}{\z@}% + {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}% + }{% + \@dottedtocline{\@nameuse{#1tocdepth}}{\@nameuse{scr@tso@#1@indent}}% + {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}% + }% +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,undottedtocline) +\DeclareTOCEntryStyle{undottedtocline}[{% + \DefineTOCEntryLengthOption{indent}% + {scr@tso@}{@indent}{entry indent}% + \DefineTOCEntryLengthOption{numwidth}% + {scr@tso@}{@numwidth}{entry number width}% + \@ifundefined{#1tocdepth}{% + \Ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{% + \Ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{% + \Ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{% + \Ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{% + \Ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{% + \Ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{% + \Ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{% + \expandafter\let\csname #1tocdepth\expandafter\endcsname + \csname #1numdepth\endcsname + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \@ifundefined{scr@tso@#1@indent}{% + \@ifundefined{scr@#1@tocindent}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{3.8em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{7em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{7.0em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{12em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{% + \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}% + }% + }{}% + \@ifundefined{scr@tso@#1@numwidth}{% + \@ifundefined{scr@#1@tocnumwidth}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \scr@ifundefinedorrelax{chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.2em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{4.1em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{5m}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{3.2em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.1em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{5em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{6em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{% + \@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}% + }% + }{}% +}]{% + \ifnum \c@tocdepth >\numexpr \@nameuse{#1tocdepth}-\@ne\relax + \ifnum \@nameuse{#1tocdepth}<\@ne + \scr@ifundefinedorrelax{chapter}{% + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + }{% + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + }% + \else + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \fi + \setlength\@tempdima{\@nameuse{scr@tso@#1@numwidth}}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode + \bfseries + \advance\leftskip\@tempdima + \Iftocfeature{\@currext}{noindent}{% + \hskip -\leftskip + }{% + \advance\leftskip\@nameuse{scr@tso@#1@indent}% + \hskip -\dimexpr \leftskip-\@nameuse{scr@tso@#1@indent}\relax + }% + ##1% + \nobreak + \hfil \nobreak\hb@xt@\@pnumwidth{\hss ##2}% + \par + \penalty\@highpenalty + \endgroup + \fi +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style, largetocline) +\DeclareTOCEntryStyle{largetocline}[{% + \DefineTOCEntryLengthOption{indent}% + {scr@tso@}{@indent}{entry indent}% + \@ifundefined{#1tocdepth}{% + \Ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{% + \Ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{% + \Ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{% + \Ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{% + \Ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{% + \Ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{% + \Ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{% + \expandafter\let\csname #1tocdepth\expandafter\endcsname + \csname #1numdepth\endcsname + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \@ifundefined{scr@tso@#1@indent}{% + \@ifundefined{scr@#1@tocindent}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{3.8em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{7em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{7.0em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{12em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{% + \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}% + }% + }{}% +}]{% + \ifnum \c@tocdepth >\numexpr \@nameuse{#1tocdepth}-\@ne\relax + \ifnum \@nameuse{#1tocdepth}<\@ne + \scr@ifundefinedorrelax{chapter}{% + \addpenalty\@secpenalty + \addvspace{2.25em \@plus\p@}% + }{% + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + }% + \else + \addpenalty\@secpenalty + \addvspace{2.25em \@plus\p@}% + \fi + \setlength\@tempdima{3em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode + \large + \bfseries + \Iftocfeature{\@currext}{noindent}{% + }{% + \advance\leftskip\@nameuse{scr@tso@#1@indent}% + }% + ##1% + \hfil \nobreak\hb@xt@\@pnumwidth{\hss ##2}% + \par + \nobreak + \ifnum 0= + \scr@ifundefinedorrelax{chapter}{\if@compatibility 1\else 0\fi}{1}\relax + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \fi + \endgroup + \fi +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,tocline) +\DeclareTOCEntryStyle{tocline}[{% + \DefineTOCEntryLengthOption{beforeskip}% + {scr@tso@}{@beforeskip}{vertical skip before the entry}% + \DefineTOCEntryIfOption{breakafternumber}% + {scr@tso@}{@breakafternumber}{line break after number flag}% + \DefineTOCEntryIfOption{dynnumwidth}% + {scr@tso@}{@dynnumwidth}{dynamic number width flag}% + \DefineTOCEntryListOption{indentfollows}% + {scr@tso@}{@indentfollows}{list of levels that define the indent}% + \DefineTOCEntryIfOption{dynindent}% + {scr@tso@}{@dynindent}{dynamic indent width flag}% + \DefineTOCEntryCommandOption{entryformat}% + {scr@tso@}{@entryformat}[1]{entry format}% + \DefineTOCEntryCommandOption{entrynumberformat}% + {scr@tso@}{@numberformat}[1]{entry number format}% + \DefineTOCEntryCommandOption{linefill}[\TOCLineLeaderFill]% + {scr@tso@}{@linefill}{filling between text and page number}% + \DefineTOCEntryLengthOption{numsep}% + {scr@tso@}{@numsep}{entry number separation}% + \DefineTOCEntryCommandOption{onstarthigherlevel}% + {scr@tso@}{@LastTOCLevelWasLower}{start higher level entry hook}% + \DefineTOCEntryCommandOption{onstartlowerlevel}% + {scr@tso@}{@LastTOCLevelWasHigher}{start lower level entry hook}% + \DefineTOCEntryCommandOption{onstartsamelevel}% + {scr@tso@}{@LastTOCLevelWasSame}{start same level entry hook}% + \DefineTOCEntryCommandOption{pagenumberbox}% + {scr@tso@}{@pagenumberbox}[1]{page number box}% + \DefineTOCEntryCommandOption{pagenumberformat}% + {scr@tso@}{@pagenumberformat}[1]{page number format}% + \DefineTOCEntryLengthOption{pagenumberwidth}% + {scr@tso@}{@pagenumberwidth}{width of page number box}% + \DefineTOCEntryLengthOption{rightindent}% + {scr@tso@}{@rightindent}{entry's text right indent}% + \DefineTOCEntryOption{raggedentrytext}[true]{% + \FamilySetBool{KOMAarg}{raggedentrytext}{@tempswa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \expandafter\let\csname ragged\scr@dte@current entry\endcsname + \raggedright + \else + \expandafter\let\csname ragged\scr@dte@current entry\endcsname + \relax + \fi + \fi + }% + \DefineTOCEntryIfOption{raggedpagenumber}% + {scr@tso@}{@raggedpage}{page number ragged flag}% + \DefineTOCEntryLengthOption{indent}% + {scr@tso@}{@indent}{entry indent}% + \DefineTOCEntryLengthOption{numwidth}% + {scr@tso@}{@numwidth}{entry number width}% + \scr@ifundefinedorrelax{#1tocdepth}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{\scr@dte@nosub{#1}tocdepth}{}{% + \expandafter\edef\csname #1tocdepth\endcsname{% + \the\numexpr \noexpand\@nameuse{\scr@dte@nosub{#1}tocdepth}+\@ne\relax + }% + }% + }{}% + }{}% + \@ifundefined{#1tocdepth}{% + \Ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{% + \Ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{% + \Ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{% + \Ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{% + \Ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{% + \Ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{% + \Ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{% + \expandafter\let\csname #1tocdepth\expandafter\endcsname + \csname #1numdepth\endcsname + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@indent}{% + \@ifundefined{scr@#1@tocindent}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@indent}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{}{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}% + \relax + }% + }% + }{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}% + \relax + }% + }{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}% + +\noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}% + \relax + }% + }% + }% + }{}% + }{% + \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@pagenumberwidth}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@pagenumberwidth}{% + \@namedef{scr@tso@#1@pagenumberwidth}{\@pnumwidth}% + }{% + \expandafter\let + \csname scr@tso@#1@pagenumberwidth\expandafter\endcsname + \csname scr@tso@\scr@dte@nosub{#1}@pagenumberwidth\endcsname + }% + }{% + \@namedef{scr@tso@#1@pagenumberwidth}{\@pnumwidth}% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@rightindent}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@rightindent}{% + \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}% + }{% + \expandafter\let + \csname scr@tso@#1@rightindent\expandafter\endcsname + \csname scr@tso@\scr@dte@nosub{#1}@rightindent\endcsname + }% + }{% + \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}% + }% + }{}% + \@ifundefined{scr@tso@#1@indent}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{3.8em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{7em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{7.0em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{12em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@numwidth}{% + \scr@ifundefinedorrelax{scr@#1@tocnumwidth}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{}{% + \expandafter\edef\csname scr@tso@#1@numwidth\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}% + +.9em% + \relax + }% + }% + }{}% + }{% + \@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}% + }% + }{}% + \@ifundefined{scr@tso@#1@numwidth}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \scr@ifundefinedorrelax{chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.2em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{4.1em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{5m}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{3.2em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@numwidth}{3.1em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@numwidth}{5em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@numwidth}{6em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \expandafter\providecommand% + \csname scr@tso@#1@LastTOCLevelWasLower\endcsname{\LastTOCLevelWasLower}% + \expandafter\providecommand% + \csname scr@tso@#1@LastTOCLevelWasSame\endcsname{\LastTOCLevelWasSame}% + \expandafter\providecommand% + \csname scr@tso@#1@LastTOCLevelWasHigher\endcsname{\LastTOCLevelWasHigher}% + \@ifundefined{scr@tso@#1@beforeskip}{% + \Ifstr{#1}{part}{% + \@namedef{scr@tso@#1@beforeskip}{\glueexpr 2.25em \@plus\p@\relax}% + }{% + \Ifstr{#1}{chapter}{% + \@namedef{scr@tso@#1@beforeskip}{\glueexpr 1.0em \@plus\p@\relax}% + }{% + \Ifstr{#1}{section}{% + \scr@ifundefinedorrelax{l@chapter}{% + \@namedef{scr@tso@#1@beforeskip}{\glueexpr 1.0em \@plus\p@\relax}% + }{}% + }{}% + }% + }% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{\glueexpr \z@ plus .2\p@\relax}% + }{}% + \@ifundefined{scr@dte@#1@maxnumwidth}{% + \expandafter\newlength\csname scr@dte@#1@maxnumwidth\endcsname + \setlength{\@nameuse{scr@dte@#1@maxnumwidth}}{\z@}% + }{}% + \providecommand*{\scr@dte@donumwidth}{}% + \g@addto@macro{\scr@dte@donumwidth}{\do{#1}}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@numsep\endcsname{.4em}% + \expandafter\providecommand% + \csname scr@tso@#1@numberformat\endcsname[1]{##1}% + \Ifstr{#1}{part}{% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\large\bfseries ##1}% + }{% + \Ifstr{#1}{chapter}{% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\bfseries ##1}% + }{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{\bfseries ##1}% + }{}% + }{}% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{##1}% + }% + }% + \expandafter\providecommand + \csname Ifscr@tso@#1@breakafternumber\endcsname[2]{##2}% + \@ifundefined{scr@tso@#1@linefill}{% + \Ifstr{#1}{part}{% + \@namedef{scr@tso@#1@linefill}{\hfill}% + }{% + \Ifstr{#1}{chapter}{% + \@namedef{scr@tso@#1@linefill}{\hfill}% + }{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{% + \@namedef{scr@tso@#1@linefill}{\hfill}% + }{}% + }{}% + \expandafter\providecommand% + \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}% + }% + }% + }{}% + \expandafter\providecommand\csname Ifscr@tso@#1@raggedpage\endcsname[2]{##2}% + \Ifstr{#1}{part}{% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{\large\bfseries ##1}% + }{% + \Ifstr{#1}{chapter}{% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{\bfseries ##1}% + }{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{\bfseries ##1}% + }{}% + }{}% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberformat\endcsname[1]{% + \normalfont\normalcolor ##1}% + }% + }% + \expandafter\providecommand% + \csname scr@tso@#1@pagenumberbox\endcsname[1]{% + \hb@xt@\@nameuse{scr@dte@pagenumberwidth}{\hfil ##1}}% + \expandafter\providecommand\csname Ifscr@tso@#1@dynnumwidth\endcsname[2]{##2}% + \expandafter\providecommand\csname Ifscr@tso@#1@dynindent\endcsname[2]{##2}% + \scr@ifundefinedorrelax{scr@tso@#1@indentfollows}{% + \Ifstrstart{#1}{sub}{% + \expandafter\edef\csname scr@tso@#1@indentfollows\endcsname{% + \scr@dte@nosub{#1}% + }% + }{% + \expandafter\let\csname scr@tso@#1@indentfollows\endcsname\@empty + }% + }{}% +}]{% + \scr@dte@tocline{#1}{##1}{##2}% +} +\AtBeginDocument{% + \BeforeClosingMainAux{% + \begingroup + \def\do#1{% + \relax + \scr@ifundefinedorrelax{scr@dte@#1@maxnumwidth}{}{% + \ifdim \@nameuse{scr@dte@#1@maxnumwidth}>\z@ + \if@filesw + \protected@write\@mainaux{}{% + \string\global\string\@namedef{scr@dte@#1@lastmaxnumwidth}% + {\the\@nameuse{scr@dte@#1@maxnumwidth}}% + }% + \fi + \@nameuse{scr@dte@#1@maxnumwidth}\z@ + \fi + }% + }% + \@nameuse{scr@dte@donumwidth}% + \endgroup + }% +} +\newcommand*{\scr@dte@nosub}[1]{\@scr@dte@nosub #1\relax} +\newcommand*{\@scr@dte@nosub}{} +\def\@scr@dte@nosub sub#1\relax{#1} +\newlength\scr@dte@tocline@numberwidth +\newcommand*{\scr@dte@tocline}[3]{% + \ifnum \@nameuse{#1tocdepth}>\c@tocdepth + \else + \tocbasic@DependOnPenaltyAndTOCLevel{#1}% + \addvspace{\@nameuse{scr@tso@#1@beforeskip}}\relax + \@nameuse{Ifscr@tso@#1@dynindent}{% + \expandafter\ifx\csname scr@tso@#1@indentfollows\endcsname\@empty + \PackageWarning{tocbasic}{`dynindent' for `#1' not available}% + \else + \edef\reserved@a{\@nameuse{scr@tso@#1@indentfollows}}% + \@for \reserved@a:=\reserved@a\do {% + \scr@trim@spaces\reserved@a + \ifx\reserved@a\@empty\else + \scr@ifundefinedorrelax{\reserved@a tocdepth}{% + }{% + \ifnum \@nameuse{\reserved@a tocdepth}<\@nameuse{#1tocdepth}% + \@tempdima\@nameuse{scr@tso@\reserved@a @indent}\relax + \@nameuse{Ifscr@tso@\reserved@a @dynnumwidth}{% + \scr@ifundefinedorrelax + {scr@dte@\reserved@a @lastmaxnumwidth}{% + \advance\@tempdima + \@nameuse{scr@tso@\reserved@a @numwidth}\relax + }{% + \advance\@tempdima + \@nameuse{scr@dte@\reserved@a @lastmaxnumwidth}\relax + }% + }{% + \advance\@tempdima + \@nameuse{scr@tso@\reserved@a @numwidth}\relax + }% + \ifdim \@tempdima>\@nameuse{scr@tso@#1@indent}\relax + \expandafter\edef\csname scr@tso@#1@indent\endcsname + {\the\@tempdima}% + \fi + \fi + }% + \fi + }% + \fi + }{}% + {% + \Iftocfeature{\@currext}{noindent}{% + \leftskip \z@ + }{% + \leftskip \@nameuse{scr@tso@#1@indent}\relax + }% + \rightskip \@nameuse{scr@tso@#1@rightindent}\relax + \parfillskip -\rightskip + \@nameuse{Ifscr@tso@#1@raggedpage}{% + \addtolength{\parfillskip}{\z@ \@plus 1fil}% + }{}% + \Iftocfeature{\@currext}{noindent}{% + \parindent \z@ + }{% + \parindent \@nameuse{scr@tso@#1@indent}\relax + }% + \@afterindenttrue + \interlinepenalty\@M + \expandafter\ifx\csname ragged#1entry\endcsname\raggedright + \addtolength\rightskip\@flushglue + \else + \def\reserved@a{\raggedright}% + \expandafter\ifx\csname ragged#1entry\endcsname\reserved@a + \addtolength\rightskip\@flushglue + \else + \renewcommand\reserved@a{\raggedright}% + \expandafter\ifx\csname ragged#1entry\endcsname\reserved@a + \addtolength\rightskip\@flushglue + \fi + \fi + \fi + \leavevmode + \@tempdima \@nameuse{scr@tso@#1@numwidth}\relax + \@nameuse{Ifscr@tso@#1@dynnumwidth}{% + \scr@ifundefinedorrelax{scr@dte@#1@lastmaxnumwidth}{}{% + \ifdim \@nameuse{scr@dte@#1@lastmaxnumwidth}>\@tempdima + \@tempdima\@nameuse{scr@dte@#1@lastmaxnumwidth}\relax + \fi + }% + }{}% + \advance\leftskip \@tempdima + \null\nobreak\hskip -\leftskip + {% + \usetocbasicnumberline + \let\scr@dte@numberline@box\numberline@box + \def\numberline@box##1{% + \sbox\scr@dte@tocline@numbox{\@nameuse{scr@tso@#1@numberformat}{##1}}% + \global\scr@dte@tocline@numberwidth + \dimexpr\wd\scr@dte@tocline@numbox+\@nameuse{scr@tso@#1@numsep}\relax + \relax + \ifdim \scr@dte@tocline@numberwidth + >\@nameuse{scr@dte@#1@maxnumwidth}\relax + \global\@nameuse{scr@dte@#1@maxnumwidth}\scr@dte@tocline@numberwidth + \fi + \@nameuse{Ifscr@tso@#1@dynnumwidth}{}{% + \ifdim \scr@dte@tocline@numberwidth + >\dimexpr \@nameuse{scr@tso@#1@numwidth}% + +\@nameuse{scr@tso@#1@numsep}\relax\relax + \PackageWarning{tocbasic}{% + number width of #1 toc entries should be + increased!\MessageBreak + Currently used number width = + \the\wd\scr@dte@tocline@numbox,\MessageBreak + Wanted number separation + \space\space\space = + \the\dimexpr\@nameuse{scr@tso@#1@numsep}\relax,\MessageBreak + Reserved number width \space\space\space\space\space\space = + \the\dimexpr\@nameuse{scr@tso@#1@numwidth}\relax% + }% + \fi + }% + \scr@dte@numberline@box{\@nameuse{scr@tso@#1@numberformat}{##1}}% + \@nameuse{Ifscr@tso@#1@breakafternumber}{% + {\parfillskip\@flushglue\par}\nobreak\hskip-\leftskip + }{}% + }% + \@nameuse{scr@tso@#1@entryformat}{% + #2% + \nobreak + {% + \normalfont\normalsize\@nameuse{scr@tso@#1@linefill}% + \nobreak + \expandafter\let\expandafter\scr@dte@pagenumberwidth + \csname scr@tso@#1@pagenumberwidth\endcsname + \@nameuse{scr@tso@#1@pagenumberbox}{% + \@nameuse{scr@tso@#1@pagenumberformat}{#3}% + }% + }% + \@par + }% + }% + }% + \tocbasic@SetPenaltyByTOCLevel{#1}% + \fi +} +\newsavebox\scr@dte@tocline@numbox +\newcommand*{\tocbasic@DependOnPenaltyAndTOCLevel}[1]{% + \ifnum \lastpenalty<\numexpr 20009-\@nameuse{#1tocdepth}\relax + \@nameuse{scr@tso@#1@LastTOCLevelWasHigher}% + \else\ifnum \lastpenalty=\numexpr 20009-\@nameuse{#1tocdepth}\relax + \@nameuse{scr@tso@#1@LastTOCLevelWasSame}% + \else + \@nameuse{scr@tso@#1@LastTOCLevelWasLower}% + \fi + \fi +} +\newcommand*{\tocbasic@SetPenaltyByTOCLevel}[1]{% + \penalty \numexpr 20009-\@nameuse{#1tocdepth}\relax +} +\newcommand*{\LastTOCLevelWasHigher}{\ifvmode\addpenalty{\@lowpenalty}\fi} +\newcommand*{\LastTOCLevelWasSame}{\ifvmode\addpenalty{\@lowpenalty}\fi} +\newcommand*{\LastTOCLevelWasLower}{} +\newcommand*{\TOCLineLeaderFill}[1][.]{% + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{#1}\mkern \@dotsep + mu$}\hfill +} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,toctext) +\DeclareTOCEntryStyle{toctext}[{% + \DefineTOCEntryLengthOption{beforeskip}% + {scr@tso@}{@beforeskip}{vertical skip before the entry}% + \DefineTOCEntryCommandOption{entryformat}% + {scr@tso@}{@entryformat}[1]{entry format}% + \DefineTOCEntryCommandOption{entrynumberformat}% + {scr@tso@}{@numberformat}[1]{entry number format}% + \DefineTOCEntryCommandOption{prepagenumber}% + {scr@tso@}{@prepagenumber}{separator between text and page number}% + \DefineTOCEntryLengthOption{numsep}% + {scr@tso@}{@numsep}{entry number separation}% + \DefineTOCEntryCommandOption{onstartfirstentry}% + {scr@tso@}{@onstartfirstentry}{output at start of paragraph}% + \DefineTOCEntryCommandOption{onstartentry}% + {scr@tso@}{@onstartentry}{output at start of all entries but the first}% + \DefineTOCEntryCommandOption{onendlastentry}% + {scr@tso@}{@onendlastentry}{output at end of paragraph}% + \DefineTOCEntryCommandOption{afterpar}% + {scr@tso@}{@afterpar}{settings after end of paragraph}% + \DefineTOCEntryCommandOption{onendentry}% + {scr@tso@}{@onendentry}{output at end of all entries but the last}% + \DefineTOCEntryCommandOption{pagenumberformat}% + {scr@tso@}{@pagenumberformat}[1]{page number format}% + \DefineTOCEntryLengthOption{rightindent}% + {scr@tso@}{@rightindent}{entry's text right indent}% + \DefineTOCEntryIfOption{raggedright}% + {scr@tso@}{@raggedright}{use raggedright for the whole paragraph}% + \DefineTOCEntryLengthOption{indent}% + {scr@tso@}{@indent}{entry indent}% + \scr@ifundefinedorrelax{#1tocdepth}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{\scr@dte@nosub{#1}tocdepth}{}{% + \expandafter\edef\csname #1tocdepth\endcsname{% + \the\numexpr \noexpand\@nameuse{\scr@dte@nosub{#1}tocdepth}+\@ne\relax + }% + }% + }{}% + }{}% + \@ifundefined{#1tocdepth}{% + \Ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{% + \Ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{% + \Ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{% + \Ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{% + \Ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{% + \Ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{% + \Ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{% + \Ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{% + \expandafter\let\csname #1tocdepth\expandafter\endcsname + \csname #1numdepth\endcsname + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@indent}{% + \@ifundefined{scr@#1@tocindent}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@indent}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{}{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}% + \relax + }% + }% + }{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}% + \relax + }% + }{% + \expandafter\edef\csname scr@tso@#1@indent\endcsname{% + \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}% + +\noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}% + \relax + }% + }% + }% + }{}% + }{% + \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}% + }% + }{}% + \scr@ifundefinedorrelax{scr@tso@#1@rightindent}{% + \Ifstrstart{#1}{sub}{% + \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@rightindent}{% + \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}% + }{% + \expandafter\let + \csname scr@tso@#1@rightindent\expandafter\endcsname + \csname scr@tso@\scr@dte@nosub{#1}@rightindent\endcsname + }% + }{% + \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}% + }% + }{}% + \@ifundefined{scr@tso@#1@indent}{% + \Ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{% + \Ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{% + \scr@ifundefinedorrelax{l@chapter}{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{3.8em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{7em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + }% + }% + }% + }% + }% + }{% + \Ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{% + \Ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{% + \Ifstr{#1}{subsubsection}{% + \@namedef{scr@tso@#1@indent}{7.0em}% + }{% + \Ifstr{#1}{paragraph}{% + \@namedef{scr@tso@#1@indent}{10em}% + }{% + \Ifstr{#1}{subparagraph}{% + \@namedef{scr@tso@#1@indent}{12em}% + }{% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }{}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@beforeskip\endcsname{\z@}% + \expandafter\providecommand\expandafter*% + \csname scr@tso@#1@numsep\endcsname{.4em}% + \expandafter\providecommand% + \csname scr@tso@#1@onstartfirstentry\endcsname{}% + \expandafter\providecommand% + \csname scr@tso@#1@onstartentry\endcsname{}% + \expandafter\providecommand% + \csname scr@tso@#1@onendlastentry\endcsname{}% + \expandafter\providecommand% + \csname scr@tso@#1@onendentry\endcsname{\quad}% + \expandafter\providecommand% + \csname scr@tso@#1@afterpar\endcsname{}% + \expandafter\providecommand% + \csname scr@tso@#1@numberformat\endcsname[1]{##1}% + \expandafter\providecommand% + \csname scr@tso@#1@entryformat\endcsname[1]{##1}% + \expandafter\providecommand% + \csname Ifscr@tso@#1@raggedright\endcsname[2]{##2}% + \expandafter\providecommand% + \csname scr@tso@#1@prepagenumber\endcsname{\nobreakspace}% +}]{% + \scr@dte@toctext{#1}{##1}{##2}% +} +\newcommand*{\scr@dte@toctext}[3]{% + \ifnum \@nameuse{#1tocdepth}>\c@tocdepth + \else + \ifhmode + \scr@dte@toctext@lastend + \@nameuse{scr@tso@#1@onstartentry}% + \else + \addvspace{\@nameuse{scr@tso@#1@beforeskip}}% + \leavevmode + \def\par{% + \scr@dte@toctext@raggedright + \scr@dte@toctext@parend + \@par + \scr@dte@toctext@afterpar + \global\let\scr@dte@toctext@afterpar\relax + \global\let\scr@dte@toctext@parend\relax + \global\let\scr@dte@toctext@raggedright\relax + }% + \global\let\scr@dte@toctext@afterpar\@empty + \Iftocfeature{\@currext}{noindent}{% + \leftskip \z@ + }{% + \leftskip \@nameuse{scr@tso@#1@indent}\relax + }% + \rightskip \@nameuse{scr@tso@#1@rightindent}\relax + \parfillskip \z@ \@plus 1fill\relax + \ifx\addvspace\scr@dte@xaddvspace\else + \let\scr@dte@saddvspace\addvspace + \def\scr@dte@xaddvspace{% + \let\addvspace\scr@dte@saddvspace\par\addvspace}% + \let\addvspace\scr@dte@xaddvspace + \fi + \ifx\addpenalty\scr@dte@xaddpenalty\else + \let\scr@dte@saddpenalty\addpenalty + \def\scr@dte@xaddpenalty{% + \let\addpenalty\scr@dte@saddpenalty\par\addpenalty}% + \fi + \@nameuse{scr@tso@#1@onstartfirstentry}% + \fi + \@nameuse{Ifscr@tso@#1@raggedright}{% + \let\\\@centercr + \gdef\scr@dte@toctext@raggedright{% + \@rightskip\@flushglue + \addtolength\rightskip\@rightskip + }% + }{}% + \l@addto@macro\scr@dte@toctext@afterpar{\@nameuse{scr@tso@#1@afterpar}}% + \expandafter\global\expandafter\let\expandafter\scr@dte@toctext@lastend + \csname scr@tso@#1@onendentry\endcsname + \expandafter\global\expandafter\let\expandafter\scr@dte@toctext@parend + \csname scr@tso@#1@onendlastentry\endcsname + {% + \usetocbasicnumberline + \def\numberline@box##1{% + \mbox{% + \@nameuse{scr@tso@#1@numberformat}{\ignorespaces ##1\unskip}% + \hskip\@nameuse{scr@tso@#1@numsep}\relax + }% + }% + \@nameuse{scr@tso@#1@entryformat}{% + \ignorespaces#2\unskip + \@nameuse{scr@tso@#1@prepagenumber}% + \@nameuse{scr@tso@#1@pagenumberformat}{\ignorespaces #3\unskip}% + }% + }% + \fi +} +\newcommand*{\scr@dte@toctext@raggedright}{} +\newcommand*{\scr@dte@toctext@parend}{} +\newcommand*{\scr@dte@toctext@lastend}{} +%%% From File: $Id: scrkernel-tocstyle.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: style,dottedtocline) +\CloneTOCEntryStyle{dottedtocline}{default} +%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: exit) +\AtBeginDocument{% + \@ifundefined{MakeMarkcase}{% + \scr@ifundefinedorrelax{KOMAClassName}{% + \let\MakeMarkcase\MakeUppercase + }{% + \let\MakeMarkcase\@firstofone + }% + }{}% +} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `tocbasic.sty'. diff --git a/texmf/tex/latex/koma-script/typearea.sty b/texmf/tex/latex/koma-script/typearea.sty new file mode 100644 index 000000000..a4a105ce1 --- /dev/null +++ b/texmf/tex/latex/koma-script/typearea.sty @@ -0,0 +1,1771 @@ +%% +%% This is file `typearea.sty', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `package,typearea') +%% scrkernel-typearea.dtx (with options: `package,typearea,identify') +%% scrkernel-basics.dtx (with options: `load') +%% scrkernel-compatibility.dtx (with options: `package,typearea,init') +%% scrkernel-typearea.dtx (with options: `package,typearea,init') +%% scrkernel-compatibility.dtx (with options: `package,typearea,option') +%% scrkernel-typearea.dtx (with options: `package,typearea,options') +%% scrkernel-compatibility.dtx (with options: `package,typearea,body') +%% scrkernel-typearea.dtx (with options: `package,typearea,body') +%% scrkernel-typearea.dtx (with options: `package,typearea,final') +%% scrlogo.dtx (with options: `logo') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +\providecommand*{\scr@pkgextension}{\@pkgextension} +\AtBeginDocument{% + \let\scr@pkgextension\@pkgextension +} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: identify) +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{typearea}[% + 2022/07/04 v3.37 KOMA-Script + package + (type area)] +%%% From File: $Id: scrkernel-basics.dtx 3913 2022-06-28 07:45:49Z kohm $ +%%% (run: load) +\RequirePackage{scrkbase}[\KOMAScriptVersion] +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: init) +\providecommand* + {\scr@compatibility}{\scr@v@last} +\newcommand*{\scr@ta@compatibility}{\scr@compatibility} +\@namedef{scr@v@first}{0} +\@namedef{scr@v@2.9}{0} +\@namedef{scr@v@2.9t}{0} +\@namedef{scr@v@2.9u}{1} +\@namedef{scr@v@2.95}{2} +\@namedef{scr@v@2.95a}{2} +\@namedef{scr@v@2.95b}{2} +\@namedef{scr@v@2.96}{2} +\@namedef{scr@v@2.96a}{3} +\@namedef{scr@v@2.97}{3} +\@namedef{scr@v@2.97a}{3} +\@namedef{scr@v@2.97b}{3} +\@namedef{scr@v@2.97c}{4} +\@namedef{scr@v@2.97d}{5} +\@namedef{scr@v@2.97e}{6} +\@namedef{scr@v@2.98}{6} +\@namedef{scr@v@2.98a}{6} +\@namedef{scr@v@2.98b}{6} +\@namedef{scr@v@2.98c}{7} +\@namedef{scr@v@3.00}{8} +\@namedef{scr@v@3.01}{8} +\@namedef{scr@v@3.01a}{8} +\@namedef{scr@v@3.01b}{9} +\@namedef{scr@v@3.01c}{9} +\@namedef{scr@v@3.02}{9} +\@namedef{scr@v@3.02b}{9} +\@namedef{scr@v@3.02c}{10} +\@namedef{scr@v@3.03}{10} +\@namedef{scr@v@3.03a}{10} +\@namedef{scr@v@3.03b}{10} +\@namedef{scr@v@3.04}{10} +\@namedef{scr@v@3.04a}{10} +\@namedef{scr@v@3.05}{10} +\@namedef{scr@v@3.05a}{10} +\@namedef{scr@v@3.06}{10} +\@namedef{scr@v@3.07}{10} +\@namedef{scr@v@3.08}{10} +\@namedef{scr@v@3.08a}{10} +\@namedef{scr@v@3.08b}{10} +\@namedef{scr@v@3.09}{10} +\@namedef{scr@v@3.09a}{10} +\@namedef{scr@v@3.10}{10} +\@namedef{scr@v@3.10a}{10} +\@namedef{scr@v@3.10b}{10} +\@namedef{scr@v@3.11}{10} +\@namedef{scr@v@3.11a}{10} +\@namedef{scr@v@3.11b}{10} +\@namedef{scr@v@3.12}{11} +\@namedef{scr@v@3.13}{12} +\@namedef{scr@v@3.13a}{13} +\@namedef{scr@v@3.14}{13} +\@namedef{scr@v@3.15}{14} +\@namedef{scr@v@3.16}{14} +\@namedef{scr@v@3.17}{15} +\@namedef{scr@v@3.17a}{15} +\@namedef{scr@v@3.17c}{15} +\@namedef{scr@v@3.18}{15} +\@namedef{scr@v@3.18a}{15} +\@namedef{scr@v@3.19}{15} +\@namedef{scr@v@3.19a}{15} +\@namedef{scr@v@3.20}{15} +\@namedef{scr@v@3.21}{15} +\@namedef{scr@v@3.22}{16} +\@namedef{scr@v@3.23}{16} +\@namedef{scr@v@3.24}{16} +\@namedef{scr@v@3.25}{17} +\@namedef{scr@v@3.26}{17} +\@namedef{scr@v@3.26a}{17} +\@namedef{scr@v@3.26b}{17} +\@namedef{scr@v@3.27}{17} +\@namedef{scr@v@3.27a}{17} +\@namedef{scr@v@3.28}{17} +\@namedef{scr@v@3.29}{17} +\@namedef{scr@v@3.30}{17} +\@namedef{scr@v@3.31}{18} +\@namedef{scr@v@3.32}{18} +\@namedef{scr@v@3.33}{18} +\@namedef{scr@v@3.34}{18} +\@namedef{scr@v@3.35}{19} +\@namedef{scr@v@3.36}{20} +\@namedef{scr@v@3.37 BETA}{20} +\@namedef{scr@v@last}{20} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: init) +\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}} +\providecommand\ta@divlistelse{1} +\newcommand*{\@lastdiv}{\z@}\let\@lastdiv\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: option) +\KOMA@key{version}[last]{% + \scr@ifundefinedorrelax{scr@v@#1}{% + \def\scr@compatibility{0}% + \PackageWarningNoLine{% + typearea% + }{% + You have set option `version' to value `#1', but\MessageBreak + this value of version is not supported.\MessageBreak + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.% + typearea.\scr@pkgextension + }{version}{first}% + }{% + \PackageInfoNoLine{% + typearea% + }{% + Switching compatibility level to `#1'% + }% + \edef\scr@ta@compatibility{\@nameuse{scr@v@#1}}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + typearea.\scr@pkgextension + }{version}{#1}% + \ifnum\scr@compatibility<\scr@v@last + \PackageWarningNoLine{% + typearea% + }{% + Switching back to an old KOMA-Script release does\MessageBreak + not mean, that KOMA-Script is fully compatible with\MessageBreak + the old release. If you need full compatibility\MessageBreak + to an old KOMA-Script release, you should use that\MessageBreak + old KOMA-Script release. However, in that case you\MessageBreak + could also need old releases of other packages and\MessageBreak + even of the LaTeX kernel.\MessageBreak + You should also note, that the KOMA-Script developers\MessageBreak + refuse support for documents using `version=#1'.\MessageBreak + We recommend to eliminate all deprecated options\MessageBreak + and commands. We also recommend to not use option\MessageBreak + `version', i.e., with other values than `last'% + }% + \fi + }% +} +\AtEndOfPackage{% + \KOMA@key{version}[]{% + \PackageError{% + typearea% + }{% + Option `version' too late% + }{% + Option `version' may be set only while loading the + package.\MessageBreak + But you've tried to set it up later.% + }% + \FamilyKeyStateProcessed + }% +} +\newcommand*{\scr@ta@v@is@lt}[1]{% + \scr@ta@compatibility<\@nameuse{scr@v@#1} +} +\newcommand*{\scr@ta@v@is@gt}[1]{% + \scr@ta@compatibility>\@nameuse{scr@v@#1} +} +\newcommand*{\scr@ta@v@is@le}[1]{% + \numexpr\scr@ta@compatibility-\@ne <\@nameuse{scr@v@#1} +} +\newcommand*{\scr@ta@v@is@ge}[1]{% + \numexpr\scr@ta@compatibility+\@ne >\@nameuse{scr@v@#1} +} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: options) +\providecommand*{\PaperNameToSize}[2][warning]{% + \Ifstr{#2}{letter}{% + \setlength\paperheight{11in}% + \setlength\paperwidth {8.5in}% + }{% + \Ifstr{#2}{legal}{% + \setlength\paperheight{14in}% + \setlength\paperwidth {8.5in}% + }{% + \Ifstr{#2}{executive}{% + \setlength\paperheight{10.5in}% + \setlength\paperwidth {7.25in}% + }{% + \Ifstr{#2}{}{% + \ISO@PaperNameToSize[#1]{}{}\@nil + }{% + \edef\reserved@a{\noexpand\ISO@PaperNameToSize[#1]#2 \noexpand\@nil}% + \reserved@a + }% + }% + }% + }% +} +\scr@ifundefinedorrelax{ISO@PaperNameToSize}{% + \def\ISO@PaperNameToSize[#1]#2#3\@nil{% + \lowercase{\edef\reserved@a{#2}}% + \@tempswafalse + \if \reserved@a a% + \Ifnumber{#3}{% + \setlength{\paperwidth}{841sp}% + \setlength{\paperheight}{1189sp}% + \@tempswatrue + }{}% + \else + \if \reserved@a b% + \Ifnumber{#3}{% + \setlength{\paperwidth}{1000sp}% + \setlength{\paperheight}{1414sp}% + \@tempswatrue + }{}% + \else + \if \reserved@a c% + \Ifnumber{#3}{% + \setlength{\paperwidth}{917sp}% + \setlength{\paperheight}{1297sp}% + \@tempswatrue + }{}% + \else + \if \reserved@a d% + \Ifnumber{#3}{% + \setlength{\paperwidth}{771sp}% + \setlength{\paperheight}{1090sp}% + \@tempswatrue + }{}% + \fi + \fi + \fi + \fi + \if@tempswa + \@tempcnta=#3\relax + \@whilenum\@tempcnta>\z@ + \do{\setlength{\@tempdima}{\paperwidth}% + \setlength{\paperwidth}{.5\paperheight}% + \setlength{\paperheight}{\@tempdima}% + \advance\@tempcnta by\m@ne + }% + \multiply\paperwidth by186468 + \multiply\paperheight by186468 + \else + \scr@ifundefinedorrelax{scr@UnknownPaperSize@#1}{% + \scr@UnknownPaperSize@error{#2#3}% + }{% + \@nameuse{scr@UnknownPaperSize@#1}{#2#3}% + }% + \fi + }% +}{} +\providecommand*{\ProvideUnknownPaperSizeError}[1]{% + \expandafter\providecommand\expandafter*% + \csname scr@UnknownPaperSize@#1\endcsname[1]% +} +\ProvideUnknownPaperSizeError{error}{% + \PackageError{% + typearea% + }{Unknown paper size #1}{% + \string\paperwidth\space and \string\paperheight\space stay unchanged, + because of unknown paper size.% + }% +} +\ProvideUnknownPaperSizeError{warning}{% + \PackageWarning{% + typearea% + }{% + \string\paperwidth\space and \string\paperheight\space stay + unchanged, because\MessageBreak + of unknown paper size #1% + }% +} +\ProvideUnknownPaperSizeError{info}{% + \PackageInfo{% + typearea + }{% + \string\paperwidth\space and \string\paperheight\space stay + unchanged, because\MessageBreak + of unknown paper size #1% + }% +} +\ProvideUnknownPaperSizeError{ignore}{} +\KOMA@DeclareStandardOption[typearea]{a4paper}{paper=a4} +\KOMA@DeclareStandardOption[typearea]{a5paper}{paper=a5} +\KOMA@DeclareStandardOption[typearea]{b5paper}{paper=b5} +\KOMA@DeclareStandardOption[typearea]{letterpaper}{paper=letter} +\KOMA@DeclareStandardOption[typearea]{legalpaper}{paper=legal} +\KOMA@DeclareStandardOption[typearea]{executivepaper}{paper=executive} +\KOMA@DeclareStandardOption[typearea]{landscape}{paper=landscape} +\KOMA@DeclareStandardOption[typearea]{portrait}{paper=portrait} +\KOMA@key{paper}{% + \Ifstr{#1}{seascape}{% + \@seascapetrue + \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax + \@landscapetrue + \scr@setpaperorientation + \else + \if@landscape\else\scr@switchpapersizes\@landscapetrue\fi + \fi + \FamilyKeyStateProcessed + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{seascape}% + }{% + \Ifstr{#1}{landscape}{% + \@seascapefalse + \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax + \@landscapetrue + \scr@setpaperorientation + \else + \if@landscape\else\scr@switchpapersizes\@landscapetrue\fi + \fi + \FamilyKeyStateProcessed + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{landscape}% + }{% + \Ifstr{#1}{portrait}{% + \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax + \@landscapefalse + \scr@setpaperorientation + \else + \if@landscape\scr@switchpapersizes\@landscapefalse\fi + \fi + \FamilyKeyStateProcessed + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}% + \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{portrait}% + }{% + \Ifstr{#1}{letter}{% + \if@landscape + \setlength\paperheight{8.5in}% + \setlength\paperwidth {11in}% + \else + \setlength\paperheight{11in}% + \setlength\paperwidth {8.5in}% + \fi + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{letter}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \if@seascape seascape\else + \if@landscape landscape\else portrait\fi\fi + }% + }{% + \Ifstr{#1}{legal}{% + \if@landscape + \setlength\paperheight{8.5in}% + \setlength\paperwidth {14in}% + \else + \setlength\paperheight{14in}% + \setlength\paperwidth {8.5in}% + \fi + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{legal}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \if@seascape seascape\else + \if@landscape landscape\else portrait\fi\fi + }% + }{% + \Ifstr{#1}{executive}{% + \if@landscape + \setlength\paperheight{7.25in}% + \setlength\paperwidth {10.5in}% + \else + \setlength\paperheight{10.5in}% + \setlength\paperwidth {7.25in}% + \fi + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{executive}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \if@seascape seascape\else + \if@landscape landscape\else portrait\fi\fi + }% + }{% + \iso@paper{#1}% + \if@tempswa + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{#1}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \if@seascape seascape\else + \if@landscape landscape\else portrait\fi\fi + }% + \else + \expandafter\maybe@pair#1::\@nil + \if@tempswa + \FamilyKeyStateProcessed + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}% + \expandafter\ifnum \scr@ta@v@is@lt{3.01b}\relax + \PackageWarningNoLine{typearea}{% + You may have to exchange height and width!\MessageBreak + Until KOMA-Script version 3.01b the semantic\MessageBreak + of option `paper' was `paper=height:width'\MessageBreak + instead of `paper=width:height'.\MessageBreak + I've switched back to that old interpretation\MessageBreak + because of the given compatiblity settings}% + \setlength\paperwidth{\@tempb}% + \setlength\paperheight{\@tempa}% + \else + \setlength\paperwidth{\@tempa}% + \setlength\paperheight{\@tempb}% + \fi + \expandafter\ifnum \scr@ta@v@is@lt{3.22}\relax + \if@landscape + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{\@tempa:\@tempb}% + \else + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{\@tempb:\@tempa}% + \fi + \else + \scr@setpaperorientation + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \the\paperwidth:\the\paperheight}% + \fi + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{% + \if@seascape seascape\else + \if@landscape landscape\else portrait\fi\fi + }% + \else + \KOMA@unknown@keyval{paper}{#1}{% + `letter', `legal', `executive', `a', `b', + `c', `d',\MessageBreak + `:', `landscape' and `portrait'% + }% + \fi + \fi + }% + }% + }% + }% + }% + }% +} +\newif\if@seascape +\newif\if@landscape +\newcommand*{\maybe@pair}{} +\def\maybe@pair#1:#2:#3\@nil{% + \edef\@tempa{#1}\edef\@tempb{#2}% + \ifx\@tempa\@empty\@tempswafalse\else + \ifx\@tempb\@empty\@tempswafalse\else\@tempswatrue\fi + \fi +} +\KOMA@ifkey{usegeometry}{@ta@usegeometry} +\KOMA@key{pagesize}[auto]{% + \KOMA@set@ncmdkey{pagesize}{@pagesizelast}{% + {off}{-1},{no}{-1},{false}{-1},% + {auto}{0},{automedia}{1},{dvips}{2},{pdftex}{3},{luatex}{3},{dvipdfmx}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase\number\@pagesizelast\relax + \edef\@pagesizelast{auto}% + \if@atdocument + \set@pdftexpagesize + \set@dvipspagesize + \fi + \or + \edef\@pagesizelast{automedia}% + \if@atdocument + \set@pdftexpagesize + \set@vtexpagesize + \set@dvipspagesize + \fi + \or + \edef\@pagesizelast{dvips}% + \if@atdocument + \set@dvipspagesize + \fi + \or + \edef\@pagesizelast{pdftex}% + \if@atdocument + \set@pdftexpagesize + \fi + \or + \edef\@pagesizelast{dvipdfmx}% + \if@atdocument + \set@dvipdfmxpagesize + \fi + \else + \edef\@pagesizelast{false}% + \fi + \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}% + {pagesize}{\@pagesizelast}% + \fi +} +\newcommand\@pagesizelast{auto} +\AtBeginDocument{% + \KOMAExecuteOptions[.typearea.\scr@pkgextension]{pagesize=\@pagesizelast}% + \expandafter\ifnum\scr@ta@v@is@gt{3.02b}\relax + \renewcommand*{\set@dvipspagesize}{% + \begingroup + \@tempswafalse + \scr@ifdvioutput{\@tempswatrue}{% + \Ifnotundefined{if@dvips}{% + \expandafter\let\csname if@tempswa\expandafter\endcsname + \csname if@dvips\endcsname + }{}% + }% + \if@tempswa + \endgroup + \scr@ifundefinedorrelax{AtNextShipout}{% + \scr@ifundefinedorrelax{AtBeginShipoutNext}{% + \begingroup + \protected@edef\reserved@a{\endgroup + \scr@updatedvipspagesize}% + \reserved@a + }{% + \begingroup + \protected@edef\reserved@a{\endgroup + \protect\AtBeginShipoutNext{% + \protect\bgroup + \protect\global\protect\setbox\AtBeginShipoutBox + \protect\vbox{% + \scr@updatedvipspagesize + \protect\box\AtBeginShipoutBox + }% + \protect\egroup + }}% + \reserved@a + }% + }{% + \begingroup + \protected@edef\reserved@a{\endgroup + \protect\AtNextShipout{% + \protect\bgroup + \protect\global\protect\setbox\protect\@cclv\protect\vbox{% + \scr@updatedvipspagesize + \protect\box\protect\@cclv + }% + \protect\egroup + }}% + \reserved@a + }% + \else + \endgroup + \fi + }% + \else + \let\set@dvipspagesize=\setnot@dvipspagesize + \fi + \renewcommand*{\set@dvipdfmxpagesize}{% + \scr@ifdvioutput{% + \special{papersize=\the\paperwidth,\the\paperheight}% + }{}% + }% +} +\newcommand*{\set@pdftexpagesize}{% + \scr@ifundefinedorrelax{pdfpagewidth}{% + \scr@ifundefinedorrelax{pagewidth}{}{\pagewidth=\paperwidth}% + }{\pdfpagewidth=\paperwidth}% + \scr@ifundefinedorrelax{pdfpageheight}{% + \scr@ifundefinedorrelax{pageheight}{}{\pageheight=\paperheight}% + }{\pdfpageheight=\paperheight}% +} +\newcommand*{\set@dvipspagesize}{% + \begingroup + \@tempswafalse + \scr@ifdvioutput{\@tempswatrue}{% + \Ifnotundefined{if@dvips}{% + \expandafter\let\csname if@tempswa\expandafter\endcsname + \csname if@dvips\endcsname + }{}% + }{}% + \scr@ifundefinedorrelax{pr@nextbb}{}{% + \expandafter\ifx\csname ifPreview\expandafter\endcsname + \csname iftrue\endcsname + \PackageInfo{typearea}{% + package `preview' with option `tightpage' detected.\MessageBreak + initial page size special deactivated% + }% + \@tempswafalse + \fi + }% + \if@tempswa + \endgroup + \AtBeginDvi{% + \special{papersize=\the\paperwidth,\the\paperheight}% + \if@seascape\special{! TeXDict begin /landplus90{true}store end }\fi + }% + \expandafter\ifnum\scr@ta@v@is@gt{3.02b}\relax + \let\set@dvipspagesize=\@empty + \else + \let\set@dvipspagesize=\setnot@dvipspagesize + \fi + \else + \endgroup + \fi +} +\newcommand*{\setnot@dvipspagesize}{% + \scr@ifdvioutput{% + \PackageWarning{% + typearea% + }{% + With dvi output option `pagesize=auto',\MessageBreak + `pagesize=automedia' or `pagesize=dvips'\MessageBreak + may be used only once at preamble.\MessageBreak + Option ignored% + }% + }{}% +} +\newcommand*{\set@dvipdfmxpagesize}{% + \scr@ifdvioutput{% + \AtBeginDvi{% + \special{papersize=\the\paperwidth,\the\paperheight}% + }% + }{}% +} +\newcommand*{\set@vtexpagesize}{% + \Ifnotundefined{mediawith}{\mediawidth=\paperwidth}{}% + \Ifnotundefined{mediaheight}{\mediaheight=\paperheight}{}% +} +\newcommand*{\scr@updatedvipspagesize}{% + \scr@ifundefinedorrelax{XeTeXversion}{% + \special{ps::\@percentchar\@percentchar + PageBoundingBox: 0 0 \the\numexpr\paperwidth/\dimexpr 1bp\relax\relax + \space \the\numexpr\paperheight/\dimexpr 1bp\relax\relax^^J% + \@percentchar\@percentchar BeginPageSetup^^J% + << /PageSize [\the\numexpr\paperwidth/\dimexpr 1bp\relax\relax\space + \the\numexpr\paperheight/\dimexpr 1bp\relax\relax] + >> setpagedevice^^J%<< + 0 0 bop^^J% + \@percentchar\@percentchar EndPageSetup}% + }{}% +} +\KOMA@DeclareStandardOption[typearea]{dvips}{% + pagesize=automedia% +} +\KOMA@DeclareStandardOption[typearea]{pdftex}{% + pagesize=pdftex% +} +\newif\if@semitwoside +\g@addto@macro\@twosidetrue\@semitwosidefalse +\g@addto@macro\@twosidefalse\@semitwosidefalse +\KOMA@key{twoside}[true]{% + \if@atdocument\if@twoside + \scr@ifundefinedorrelax{cleardoubleoddpage}{% + \cleardoublepage + }{% + \cleardoubleoddpage + }% + \else\clearpage\fi\fi + \Ifstr{#1}{semi}{% + \@twosidetrue + \@semitwosidetrue + \FamilyKeyStateProcessed + }{% + \def\FamilyElseValue{, `semi'}% + \KOMA@set@ifkey{twoside}{% + @twoside% + }{#1}% + }% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% + typearea.\scr@pkgextension + }{twoside}{#1}% + \if@twoside + \if@semitwoside + \@mparswitchfalse + \else + \@mparswitchtrue + \fi + \else + \@mparswitchfalse + \fi% + \csname recalctypearea\endcsname + \fi +} +\KOMA@kav@xadd{.typearea.\scr@pkgextension}{twoside}{% + \if@twoside true\else false\fi +} +\KOMA@DeclareStandardOption% + [typearea]% + {oneside}{twoside=false} +\KOMA@key{twocolumn}[true]{% + \if@atdocument\clearpage\fi + \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.% + typearea.\scr@pkgextension + }{twocolumn}{@twocolumn}% + \csname recalctypearea\endcsname + \fi +} +\KOMA@kav@xadd{.typearea.\scr@pkgextension}{twocolumn}{% + \if@twocolumn true\else false\fi +} +\KOMA@DeclareStandardOption% + [typearea]% + {onecolumn}{twocolumn=false} +\KOMA@key{headlines}{% + \begingroup + \setlength{\@tempdima}{#1\baselineskip}% + \endgroup + \def\ta@hh{#1\baselineskip}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headlines}{#1}% + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headheight}{#1\baselineskip}% +} +\KOMA@key{footlines}{% + \begingroup + \setlength{\@tempdima}{#1\baselineskip}% + \endgroup + \def\ta@fh{#1\baselineskip}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footlines}{#1}% + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footheight}{#1\baselineskip}% +} +\KOMA@key{headheight}{% + \begingroup + \setlength{\@tempdima}{#1}% + \endgroup + \def\ta@hh{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headheight}{#1}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{headlines}% +} +\KOMA@key{footheight}{% + \begingroup + \setlength{\@tempdima}{#1}% + \endgroup + \def\ta@fh{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footheight}{#1}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{footlines}% +} +\newif\if@hincl\@ifundefined{if@hsl}{}{\let\if@hincl\if@hsl} +\KOMA@ifkey{headinclude}{@hincl} +\KOMA@DeclareDeprecatedOption[typearea]{headexclude}{headinclude=false} +\KOMA@key{headsepline}[true]{% + \KOMA@set@ifkey{headinclude}{@hincl}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.typearea.\scr@pkgextension}{headinclude}{@hincl}% + \fi +} +\newif\if@fincl\@ifundefined{if@fsl}{}{\let\if@fincl\if@fsl} +\KOMA@ifkey{footinclude}{@fincl} +\KOMA@DeclareDeprecatedOption[typearea]{footexclude}{footinclude=false} +\KOMA@key{footsepline}[true]{% + \KOMA@set@ifkey{footinclude}{@fincl}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@replacebool{.typearea.\scr@pkgextension}{footinclude}{@fincl}% + \fi +} +\KOMA@ifkey{mpinclude}{@mincl} +\KOMA@DeclareDeprecatedOption[typearea]{mpexclude}{mpinclude=false} +\newlength{\ta@bcor} +\newcount\ta@div +\KOMA@key{BCOR}{% + \Ifstr{#1}{current}{}{% + \setlength{\ta@bcor}{#1}% + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{BCOR}{#1}% +} +\AtEndOfPackage{% + \KOMA@key{BCOR}{% + \typearea[{#1}]{last} + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{BCOR}{#1}% + }% +} +\def\movet@reserved@a@to@nnil#1\@nnil{\def\reserved@a{#1}}% +\KOMA@key{DIV}[calc]{% + \edef\@tempa{#1}% + \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv + \ifx\@tempa\relax\def\@tempa{current}\fi + \fi + \def\@tempb{current}\ifx\@tempa\@tempb\else + \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else + \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else + \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else + \expandafter\def\expandafter\@tempa\expandafter{\expandafter0\@tempa}% + \afterassignment\movet@reserved@a@to@nnil + \@tempcnta=\@tempa\relax\@nnil + \def\@tempb{\relax}\ifx\reserved@a\@tempb + \ta@div=\@tempcnta + \edef\@tempa{\the\ta@div}% + \else + \let\@tempa\relax + \fi + \fi + \fi + \fi + \fi + \ifx\@tempa\relax + \FamilyKeyStateUnknownValue + \else + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{DIV}{\@tempa}% + \fi +} +\AtEndOfPackage{% + \KOMA@key{DIV}{% + \typearea[current]{#1}% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{DIV}{#1}% + }% +} +\KOMA@ifkey{areasetadvanced}{@areasetadvanced} +\KOMA@DeclareDeprecatedOption[typearea]{DIVcalc}{DIV=calc} +\KOMA@DeclareDeprecatedOption[typearea]{DIVclassic}{DIV=classic} +\newcommand\isopaper[2][a]{% + \ISO@PaperNameToSize[typearea]#1#2\@nil + \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax + \scr@setpaperorientation + \else + \if@landscape\scr@switchpapersizes\fi + \fi +} +\ProvideUnknownPaperSizeError{typearea}{% + \PackageError{typearea}{% + Unknown ISO/DIN-papersize-letter #1% + }{% + There are only four defined paper scalings:\MessageBreak + a = ISO/DIN-A, b = ISO/DIN-B, c = ISO/DIN-C, + d = ISO/DIN-D\MessageBreak + Read KOMA-Script-documentation for further information.% + }% + \setlength{\paperwidth}{841sp}% + \setlength{\paperheight}{1189sp}% +} +\newcommand*\scr@setpaperorientation{% + \ifdim\paperheight>\paperwidth + \if@landscape\scr@switchpapersizes\fi + \else + \if@landscape\else\scr@switchpapersizes\fi + \fi +} +\newcommand*\scr@switchpapersizes{% + \@tempdima\paperwidth\paperwidth\paperheight\paperheight\@tempdima +} +\newcommand*{\iso@paper}[1]{\expandafter\iso@@paper#1\@nil} +\newcommand*{\iso@@paper}{} +\def\iso@@paper#1#2\@nil{% + \@tempswafalse + \if #1a\@tempswatrue + \else\if #1A\@tempswatrue + \else\if #1b\@tempswatrue + \else\if #1B\@tempswatrue + \else\if #1c\@tempswatrue + \else\if #1C\@tempswatrue + \else\if #1d\@tempswatrue + \else\if #1D\@tempswatrue + \fi\fi\fi\fi\fi\fi\fi\fi + \if@tempswa + \Ifnumber{#2}{\isopaper[#1]{#2}}{\@tempswafalse}% + \fi +} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{% + \Ifstr{#1}{}{% + \Ifstr{#3}{BCOR}{% + \Ifdimen{#2}{% + \KOMA@UseDeprecatedOption{% + \PackageWarningNoLine{typearea}}{BCOR#2}{BCOR=#2}% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% + }{\scr@pti@nerr@r}% +} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{% + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \Ifnumber{#2}{% + \KOMA@UseDeprecatedOption{% + \PackageWarningNoLine{typearea}}{DIV#2}{DIV=#2}% + }{\scr@pti@nerr@r}% + \else\scr@pti@nerr@r\fi + \else\@BCOR\fi +} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines% +} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \setlength{\@tempdima}{#1\baselineskip}% + \def\ta@hh{#1\baselineskip}% + \else\@DIV\fi +} +\newcommand*{\x@paper}{% + \expandafter\x@@paper\CurrentOption paper\x@@paper% +} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{% + \Ifstr{#3}{paper}{% + \Ifnumber{#2}{% + \Ifstr{#1}{a}{% + \isopaper[a]{#2}% + }{% + \Ifstr{#1}{b}{% + \isopaper[b]{#2}% + }{% + \Ifstr{#1}{c}{% + \isopaper[c]{#2}% + }{% + \Ifstr{#1}{d}{% + \isopaper[d]{#2}% + }{\scr@pti@nerr@r}% + }% + }% + }% + }{\scr@pti@nerr@r}% + }{% + \@headlines + }% +} +\newcommand*{\scr@pti@nerr@r}{ + \@unknownoptionerror +} +\DeclareOption*{% + \x@paper} +\InputIfFileExists{typearea.cfg}{% + \typeout{% + ***************************************^^J% + * Local config file typearea.cfg used^^J% + ***************************************% + } +}{} +\providecommand*{\defaultpapersize}{A4} +\KOMAExecuteOptions{paper=\defaultpapersize,pagesize} +\if@twoside + \if@semitwoside + \KOMAExecuteOptions{twoside=semi} + \else + \KOMAExecuteOptions{twoside} + \fi +\else + \KOMAExecuteOptions{twoside=false} +\fi +\KOMAProcessOptions\relax +%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $ +%%% (run: body) +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: body) +\newcommand*{\ta@divfor}[1]{% + \ta@div=\z@ + \expandafter\ifnum\scr@ta@v@is@ge{3.25}\relax + \ifnum \z@=\ifdim \paperwidth<207mm \z@\else\ifdim \paperwidth>213mm \z@ + \else\ifdim \paperheight<294mm \z@\else + \ifdim \paperheight>300mm \z@\else \@ne\fi\fi\fi\fi + \PackageInfoNoLine{typearea}{% + With paper sizes other than (almost) `A4' predefined\MessageBreak + DIV values do not exist. Using DIV calculation for good\MessageBreak + line width (unless using `version=3.24` or prior)% + }% + \ta@div=\tw@ + \fi + \fi + \if@mincl + \PackageInfo{typearea}{% + With option `mpinclude' there are no predefined\MessageBreak + DIV values. Using DIV calculation for good line\MessageBreak + width% + }% + \ta@div=\tw@ + \fi + \ifnum \ta@div=\z@ + \xdef\@tempa{\ta@divlist{}}% + \@tempdima=#1pt + \addtolength{\@tempdima}{.5\p@}% + \divide\@tempdima by\p@ + \setlength{\@tempdimb}{\@tempdima}% + \multiply\@tempdimb by\p@ + \ifdim \@tempdimb=#1pt + \ta@div=#1\relax + \@whilenum \ta@div >-9 \do {% + \ifx\@tempa\empty + \else \xdef\@tempa{\expandafter\@cdr\@tempa\@nil}\fi + \advance\ta@div by-1 + }% + \else + \let\@tempa\empty + \fi + \ifx\@tempa\empty + \setlength{\@tempdima}{#1\p@}% + \addtolength{\@tempdima}{10\p@}% + \PackageWarningNoLine{typearea}{% + DIV for \the\@tempdima\space and used papersize\MessageBreak + not defined!\MessageBreak + Using DIV=\ifnum\number\ta@divlistelse>\m@ne + \ifcase \ta@divlistelse default% + \or calc% + \or calc% + \or classic% + \else\ta@divlistelse\fi\else\ta@divlistelse\fi + }% + \ta@div=\ta@divlistelse\relax + \else + \xdef\@tempa{\expandafter\@car\@tempa\@nil}% + \ifx\@tempa\empty + \ta@div=\ta@divlistelse\relax + \else + \ta@div=\@tempa\relax + \fi + \fi + \fi +} +\newcommand*\SetDIVList[1]{% + \PackageWarning{typearea}{\string\SetDIVList\space is + deprecated!\MessageBreak + This command supports only integer font sizes\MessageBreak + in pt equal or greater than 10pt.\MessageBreak + Since version 2.6 the command is implemented\MessageBreak + for compatibility only. You should not use it\MessageBreak + any longer}% + \def\ta@divlist{{}{}{}{}{}{}{}{}{}#1}} +\newcommand*\SetXDIVList[1]{% + \PackageWarning{typearea}{\string\SetXDIVList\space is + deprecated!\MessageBreak + This command supports only integer font sizes\MessageBreak + in pt equal or greater than 10pt.\MessageBreak + Since version 3.0 the command is implemented\MessageBreak + for compatibility only. You should not use it\MessageBreak + any longer}% + \def\ta@divlist{#1}} +\newlength{\ta@hblk} +\newlength{\ta@vblk} +\newlength{\ta@temp} +\newcommand*\@typearea{% + \selectfont + \ta@hblk=\paperwidth + \advance \ta@hblk by-\ta@bcor + \divide\ta@hblk by\ta@div + \if@mincl + \marginparwidth=\ta@hblk + \advance\marginparwidth by-\marginparsep + \else + \if@twoside + \if@semitwoside + \marginparwidth=\ta@hblk + \else + \marginparwidth=1.5\ta@hblk + \fi + \else + \marginparwidth=\ta@hblk + \fi + \fi + \oddsidemargin=-1in + \evensidemargin=-1in + \if@twoside + \if@semitwoside + \advance\oddsidemargin by1.5\ta@hblk + \advance\oddsidemargin by\ta@bcor + \expandafter\ifnum\scr@ta@v@is@lt{3.12}\relax + \evensidemargin=\oddsidemargin + \else + \advance\evensidemargin by1.5\ta@hblk + \fi + \else + \advance\oddsidemargin by\ta@hblk + \advance\oddsidemargin by\ta@bcor + \advance\evensidemargin by2\ta@hblk + \if@mincl + \advance\evensidemargin by\marginparwidth + \advance\evensidemargin by\marginparsep + \fi + \fi + \else + \advance\oddsidemargin by1.5\ta@hblk + \advance\oddsidemargin by\ta@bcor + \evensidemargin=\oddsidemargin + \fi + \textwidth=\paperwidth + \advance\textwidth by-\ta@bcor + \advance\textwidth by-3\ta@hblk + \if@mincl + \advance\textwidth by-\marginparwidth + \advance\textwidth by-\marginparsep + \ifdim\textwidth <\marginparwidth + \PackageWarningNoLine{typearea}{% + Width of text (\the\textwidth) less than width of\MessageBreak + marginpar (\the\marginparwidth) while using option\MessageBreak + `mpinclude'.\MessageBreak + Because of this, I'm exchanging the values.\MessageBreak + You should increase DIV to avoid such problems% + }% + \@tempskipa=\marginparwidth + \marginparwidth=\textwidth + \textwidth=\@tempskipa + \fi + \fi + \ta@vblk=\paperheight + \divide\ta@vblk by\ta@div + \topmargin=-1in + \advance\topmargin by\ta@vblk + \if@hincl \else + \advance\topmargin by-\headheight + \advance\topmargin by-\headsep + \fi + \ta@temp=\paperheight + \advance\ta@temp by-3\ta@vblk + \if@hincl + \advance\ta@temp by-\headheight + \advance\ta@temp by-\headsep + \fi + \if@fincl + \advance\ta@temp by-\footskip + \fi + \scr@ifundefinedorrelax{@ptsize}{% + \topskip=\f@size\p@ + }{% + \topskip=\@ptsize\p@ + \advance\topskip by 10\p@ + }% + \maxdepth=.5\topskip + \textheight=\topskip + \@whiledim\textheight <\ta@temp + \do{\advance\textheight by\baselineskip}% +} +\newcommand*\ta@modiv[2]{ + \setlength{\@tempdima}{#1} + \divide\@tempdima by#2 + \ta@div\@tempdima + \ifnum \ta@div<4 + \ta@div=4 + \else + \setlength{\@tempdimb}{#1}% + \divide\@tempdimb by\ta@div + \addtolength{\@tempdima}{\@tempdima}% + \addtolength{\@tempdima}{-\@tempdimb}% + \advance\ta@div by\@ne + \setlength{\@tempdimb}{#1}% + \divide\@tempdimb by\ta@div + \ifdim \@tempdima<\@tempdimb + \advance\ta@div by\m@ne + \fi + \fi +} +\newcommand*\ta@temp@goodwidth{% + \settowidth{\ta@temp}{\normalfont\normalsize + abcdefghijklmnopqrstuvwxyz}% + \ifdim\ta@temp >200\p@ + \setlength{\ta@temp}{2.53846\ta@temp}% + \settowidth{\@tempdima}{\normalfont\normalsize + ABCDEFGHIJKLMNOPQRSTUVWXYZ}% + \setlength{\@tempdima}{.11538\@tempdima}% + \addtolength{\ta@temp}{\@tempdima}% + \else + \multiply\ta@temp by66 + \settowidth{\@tempdima}{\normalfont\normalsize + ABCDEFGHIJKLMNOPQRSTUVWXYZ}% + \multiply\@tempdima by3 + \addtolength{\ta@temp}{\@tempdima}% + \divide\ta@temp by26 + \fi +} +\newcommand*{\AfterCalculatingTypearea}{% + \kernel@ifstar \l@addto@macro \g@addto@macro \@typearea@end +} +\newcommand*{\@typearea@end}{} +\newcommand*{\activateareas}{% + \if@atdocument + \PackageInfo{typearea}{% + Using dirty hack to recalculate internal output\MessageBreak + dimensions of LaTeX% + }% + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \if@twocolumn + \advance\columnwidth by-\columnsep + \divide\columnwidth by\tw@ + \hsize=\columnwidth + \@firstcolumntrue + \fi + \hsize=\columnwidth + \linewidth\hsize + \scr@ifundefinedorrelax{@pagesizelast}{}{% + \KOMAoptions{pagesize=\@pagesizelast}% + }% + \expandafter\ifnum\scr@ta@v@is@ge{3.17}% + \csname par@updaterelative\endcsname + \fi + \fi + \edef\scr@geometryargs{% + bindingoffset=\the\ta@bcor, + lmargin=\the\dimexpr 1in+\oddsidemargin-\ta@bcor\relax, + textwidth=\the\textwidth, + \if@hincl + includehead,% + top=\the\dimexpr 1in+\topmargin\relax, + \else + includehead=false,% + top=\the\dimexpr 1in+\topmargin+\headheight+\headsep\relax, + \fi + headheight=\the\headheight, + headsep=\the\headsep, + textheight=\the\textheight, + \if@fincl + includefoot, + \else + includefoot=false, + \fi + footskip=\the\footskip, + \if@mincl + includemp, + \else + includemp=false, + \fi + marginparwidth=\the\marginparwidth, + marginparsep=\the\marginparsep + }% + \if@ta@usegeometry + \@ifundefined{Gm@save}{% + \if@atdocument\else + \edef\scr@geometryargs{% + paperwidth=\the\paperwidth,paperheight=\the\paperheight,% + \scr@geometryargs + }% + \PassOptionsToPackage{\scr@geometryargs}{geometry}% + \fi + }{% + \edef\Gm@restore@org{\Gm@restore}% + \if@atdocument + \expandafter\newgeometry\expandafter{\scr@geometryargs}% + \else + \edef\scr@geometryargs{% + paperwidth=\the\paperwidth,paperheight=\the\paperheight,% + \scr@geometryargs + }% + \expandafter\geometry\expandafter{\scr@geometryargs}% + \fi + }% + \fi +} +\newcommand*{\scr@geometryargs}{} +\newcommand*\typearea[2][\z@]{% + \scr@grouplevel@test\typearea + \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else + \setlength{\ta@bcor}{#1}% + \fi + \edef\@tempa{#2}% + \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv + \ifx\@tempa\relax \def\@tempa{current}\fi + \fi + \Ifstr{\@tempa}{current}{% + \Ifstr{\@lastdiv}{areaset}{\let\@tempa\@lastdiv}{}% + }{}% + \def\@tempb{areaset}\ifx\@tempa\@tempb + \areaset[current]{\textwidth}{\textheight}% + \else + \def\@tempb{current}\ifx\@tempa\@tempb + \else + \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else + \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else + \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else + \ta@div=\@tempa + \fi + \fi + \fi + \fi + \edef\@lastdiv{\the\ta@div}% + \if@atdocument + \newpage + \if@twocolumn\ifnum\@colnum=\z@\else\null\newpage\fi\fi + \fi + \normalsize + \@ifundefined{ta@hh}{% + \headheight=1.25\baselineskip + }{% + \headheight=\ta@hh + }% + \headsep=1.5\baselineskip + \@ifundefined{footheight}{% + \newlength\footheight + }{}% + \@ifundefined{ta@fh}{% + \footheight=1.25\baselineskip + }{% + \footheight=\ta@fh + }% + \footskip=\dimexpr\footheight+2.25\baselineskip + \marginparsep=1cc + \marginparpush=0.45\baselineskip + \ifnum\ta@div=\z@ + \@ifundefined{@ptsize}{% + \@tempdima=\f@size\p@ + \advance\@tempdima by.5pt + \ta@div=\@tempdima + \divide\ta@div by65536 + \advance\ta@div by-10 + \xdef\@ptsize{\the\ta@div}% + \PackageWarningNoLine{typearea}{% + \string\@ptsize\space not defined!\MessageBreak + Fontsize is \f@size pt.\MessageBreak + Defining \string\@ptsize\space to \@ptsize% + }% + }{}% + \ta@divfor{\@ptsize}% + \fi + \ifnum\ta@div=3 + \typeout{DIV calculation for classic typearea.}% + \setlength{\ta@temp}{\paperwidth}% + \addtolength{\ta@temp}{-\ta@bcor}% + \if@hincl\else + \addtolength{\ta@temp}{\headheight}% + \addtolength{\ta@temp}{\headsep}% + \fi + \if@fincl\else + \addtolength{\ta@temp}{\footskip}% + \fi + \ifdim \ta@temp >\paperheight + \PackageWarningNoLine{typearea}{% + No classic typearea with this papersize!\MessageBreak + Using calculated DIV% + }% + \ta@div=\@ne + \else + \setlength{\ta@temp}{\paperheight}% + \addtolength{\ta@temp}{-\paperwidth}% + \addtolength{\ta@temp}{\ta@bcor}% + \divide\ta@temp by3 + \ta@modiv{\paperheight}{\ta@temp}% + \fi + \fi + \ifnum\ta@div <4 + \typeout{DIV calculation for typearea with good linewidth.}% + \setlength{\textwidth}{\paperwidth}% + \addtolength{\textwidth}{-\ta@bcor}% + \ta@temp@goodwidth + \if@twocolumn + \addtolength{\ta@temp}{\ta@temp}% + \addtolength{\ta@temp}{\columnsep}% + \fi + \setlength{\ta@hblk}{\paperwidth}% + \addtolength{\ta@hblk}{-\ta@temp}% + \divide\ta@hblk by3 + \ifdim \ta@hblk <\z@ + \setlength{\ta@hblk}{5mm}% + \fi + \if@mincl + \setlength{\ta@temp}{.75\ta@hblk}% + \else + \setlength{\ta@temp}{\ta@hblk}% + \fi + \ta@modiv{\paperwidth}{\ta@temp}% + \@typearea + \setlength{\ta@temp}{-1in}% + \addtolength{\ta@temp}{5mm}% + \ifdim\topmargin <\ta@temp + \setlength{\ta@temp}{15mm}% + \if@hincl\else + \addtolength{\ta@temp}{\headheight}% + \addtolength{\ta@temp}{\headsep}% + \fi + \if@fincl\else + \addtolength{\ta@temp}{\footskip}% + \fi + \divide\ta@temp by3 + \ta@modiv{\paperheight}{\ta@temp}% + \fi + \fi + \@typearea + \ta@temp@goodwidth + \if@twocolumn + \addtolength{\ta@temp}{\ta@temp}% + \addtolength{\ta@temp}{\columnsep}% + \fi + \setlength{\@tempdima}{\ta@temp}% + \addtolength{\ta@temp}{-\textwidth}% + \divide\@tempdima by100 + \divide\ta@temp by\@tempdima + \@tempcnta=\ta@temp + \ifnum\@tempcnta <5 + \ifnum\@tempcnta >-5 + \@tempcnta=0 + \else + \advance\@tempcnta by4 + \fi + \else + \advance\@tempcnta by-4 + \fi + \ifnum\@tempcnta <-15 + \@tempcnta=-\@tempcnta + \PackageWarningNoLine{typearea}{% + Bad type area settings!\MessageBreak + The detected line width is about + \the\@tempcnta\@percentchar\MessageBreak + larger than the heuristically estimated maximum\MessageBreak + limit of typographical good line width.\MessageBreak + You should e.g. + \ifnum\ta@div >6 decrease DIV, \fi + \ifdim\f@size\p@<\@xiipt\p@ increase fontsize\else + (increase fontsize)\fi\MessageBreak + or change papersize% + }% + \@tempcnta=-\@tempcnta + \else + \ifnum\@tempcnta>15 + \PackageInfoNoLine{typearea}{% + Maybe no optimal type area settings!\MessageBreak + The detected line width is about + \the\@tempcnta\@percentchar\MessageBreak + smaller than the heuristically estimated maximum\MessageBreak + limit of typographical good line width.\MessageBreak + You could e.g. increase DIV% + \ifdim\f@size\p@>\@xpt\p@, decrease fontsize\fi\MessageBreak + or change the papersize% + }% + \fi\fi + \ifnum\ta@div <6 + \PackageWarningNoLine{typearea}{% + Very low DIV value!\MessageBreak + DIV values less than 6 result in textwidth/-height\MessageBreak + smaller than total marginwidth/-height.\MessageBreak + You should e.g. increase DIV, increase fontsize or\MessageBreak + change papersize% + } + \fi + \ta@layoutinfo{\number\ta@div}{\the\@tempcnta}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{DIV}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{DIV}{\@lastdiv}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{BCOR}% + \KOMA@kav@xadd{.typearea.\scr@pkgextension}{BCOR}{\the\ta@bcor}% + \@typearea@end + \activateareas + \ifdim \dimexpr 1in+\topmargin + +\headheight+\headsep + +\textheight + +\footskip+\dp\strutbox\relax + >\paperheight + \PackageWarningNoLine{typearea}{% + page content and margins higher than paper.\MessageBreak + This may result in page footer out of paper.\MessageBreak + You should decrease DIV, decrease foot height,\MessageBreak + or include footer into type area% + }% + \fi + \fi +} +\newcommand*{\ta@layoutinfo}[2]{% + \PackageInfo{typearea}{% + These are the values describing the layout:\MessageBreak + DIV\space\space=\space#1\MessageBreak + BCOR\space=\space\the\ta@bcor\MessageBreak + \string\paperwidth\space\space\space\space\space\space=% + \space\the\paperwidth\MessageBreak + \space\string\textwidth\space\space\space\space\space\space=% + \space\the\textwidth\MessageBreak + \ifx\relax#2\relax\else + \space DIV departure\space\space\space=% + \space#2\@percentchar\MessageBreak + \fi + \space\string\evensidemargin\space=% + \space\the\evensidemargin\MessageBreak + \space\string\oddsidemargin\space\space=% + \space\the\oddsidemargin\MessageBreak + \string\paperheight\space\space\space\space\space=% + \space\the\paperheight\MessageBreak + \space\string\textheight\space\space\space\space\space=% + \space\the\textheight\MessageBreak + \space\string\topmargin\space\space\space\space\space\space=% + \space\the\topmargin\MessageBreak + \space\string\headheight\space\space\space\space\space=% + \space\the\headheight\MessageBreak + \space\string\headsep\space\space\space\space\space\space\space\space=% + \space\the\headsep\MessageBreak + \space\string\topskip\space\space\space\space\space\space\space\space=% + \space\the\topskip\MessageBreak + \space\string\footskip\space\space\space\space\space\space\space=% + \space\the\footskip\MessageBreak + \space\string\baselineskip\space\space\space=% + \space\the\baselineskip\MessageBreak + }% +} +\AtEndOfPackage{\newcommand*{\recalctypearea}{\typearea[current]{last}}} +\newcommand*{\scr@grouplevel@test}[1]{% + \ifcase\currentgrouptype\else + \PackageWarning{typearea}{% + \string#1\space used at group level + \the\currentgrouplevel.\MessageBreak + Using \string#1\space inside any group, e.g.\MessageBreak + environments, math mode, boxes, etc. may result in\MessageBreak + many type setting problems.\MessageBreak + You should move the command \string#1\MessageBreak + outside all groups% + }% + \fi +} +\newcommand*{\storeareas}[1]{% + \edef\reserved@a{% + \noexpand\newcommand*{\unexpanded{#1}}{% + \noexpand\scr@grouplevel@test\unexpanded{#1}% + \noexpand\csname scr@storeareas@before@hook\noexpand\endcsname + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@storeareas@before@current@hook\endcsname}% + \noexpand\paperheight=\the\paperheight\space + \noexpand\paperwidth=\the\paperwidth\space + \noexpand\topmargin=\the\topmargin\space + \noexpand\headheight=\the\headheight\space + \noexpand\headsep=\the\headsep\space + \noexpand\textheight=\the\textheight\space + \noexpand\vsize=\the\vsize\space + \noexpand\footskip=\the\footskip\space + \noexpand\@colht=\the\@colht\space + \noexpand\@colroom=\the\@colroom\space + \noexpand\textwidth=\the\textwidth\space + \noexpand\columnwidth=\the\columnwidth\space + \noexpand\hsize=\the\hsize\space + \noexpand\oddsidemargin=\the\oddsidemargin\space + \noexpand\evensidemargin=\if@twoside + \the\evensidemargin + \else + \the\oddsidemargin + \fi\space + \noexpand\linewidth=\the\linewidth\space + \noexpand\maxdepth=\the\maxdepth\space + \scr@ifundefinedorrelax{@pagesizelast}{}{% + \noexpand\KOMAoptions{pagesize=\@pagesizelast}}% + \noexpand\ta@div=\the\ta@div\space + \noexpand\ta@bcor=\the\ta@bcor\space + \noexpand\def\noexpand\@lastdiv{\@lastdiv}% + \noexpand\marginparsep=\the\marginparsep\space + \noexpand\marginparwidth=\the\marginparwidth\space + \noexpand\def + \expandafter\noexpand\csname scr@kav@KOMA.typearea.\scr@pkgextension\endcsname{% + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@kav@KOMA.typearea.\scr@pkgextension\endcsname}% + }% + \unexpanded\expandafter\expandafter\expandafter{% + \csname scr@storeareas@after@current@hook\endcsname}% + \noexpand\csname scr@storeareas@after@hook\noexpand\endcsname + }% + }% + \reserved@a +} +\newcommand*{\BeforeRestoreareas}{% + \kernel@ifstar{\scr@storeareashook{before@current}}% + {\scr@storeareashook{before}}% +} +\newcommand*{\AfterRestoreareas}{% + \kernel@ifstar{\scr@storeareashook{after@current}}% + {\scr@storeareashook{after}}% +} +\newcommand*{\scr@storeareashook}[2]{% + \expandafter\l@addto@macro\csname scr@storeareas@#1@hook\endcsname{#2}% +} +\newcommand*{\scr@storeareas@before@hook}{} +\newcommand*{\scr@storeareas@before@current@hook}{} +\newcommand*{\scr@storeareas@after@hook}{} +\newcommand*{\scr@storeareas@after@current@hook}{} +\newcommand*\areaset[3][\z@]{% + \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else + \setlength{\ta@bcor}{#1}% + \fi + \if@atdocument\newpage\fi + \setlength{\textwidth}{#2}% + \setlength{\textheight}{#3}% + \def\@lastdiv{areaset}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{DIV}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{DIV}{areaset}% + \KOMA@kav@removekey{.typearea.\scr@pkgextension}{BCOR}% + \KOMA@kav@add{.typearea.\scr@pkgextension}{BCOR}{\the\ta@bcor}% + \ta@hblk=\paperwidth + \advance\ta@hblk by-\ta@bcor + \advance\ta@hblk by-\textwidth + \if@areasetadvanced + \if@mincl + \divide\ta@hblk by4 + \else + \divide\ta@hblk by3 + \fi + \else + \divide\ta@hblk by3 + \fi + \oddsidemargin=-1in + \evensidemargin=-1in + \if@twoside + \if@semitwoside + \advance\oddsidemargin by1.5\ta@hblk + \advance\oddsidemargin by\ta@bcor + \expandafter\ifnum\scr@ta@v@is@lt{3.12}\relax + \evensidemargin=\oddsidemargin + \else + \advance\evensidemargin by1.5\ta@hblk + \fi + \else + \advance\oddsidemargin by\ta@hblk + \advance\oddsidemargin by\ta@bcor + \advance\evensidemargin by2\ta@hblk + \fi + \else + \advance\oddsidemargin by1.5\ta@hblk + \advance\oddsidemargin by\ta@bcor + \evensidemargin\oddsidemargin + \fi + \scr@ifundefinedorrelax{@ptsize}{% + \topskip=\f@size\p@ + }{% + \topskip=\@ptsize\p@ + \advance\topskip by 10\p@ + }% + \if@areasetadvanced + \normalsize + \@ifundefined{ta@hh}{% + \headheight=1.25\baselineskip + }{% + \headheight=\ta@hh + }% + \else + \headheight=15\p@ + \advance\headheight by\f@size\p@ + \advance\headheight by-10\p@ + \fi + \headsep=1.5\baselineskip + \@ifundefined{footheight}{\newlength\footheight}{} + \if@areasetadvanced + \@ifundefined{ta@fh}{% + \footheight=1.25\baselineskip + \footskip=3.5\baselineskip + }{% + \footheight=\ta@fh + \footskip=\dimexpr \footheight+2.25\baselineskip\relax + }% + \else + \footheight=1.25\baselineskip + \footskip=3.5\baselineskip + \fi + \ta@vblk=\paperheight + \advance\ta@vblk by-\textheight + \divide\ta@vblk by3 + \if@hincl + \advance\textheight by-\headheight + \advance\textheight by-\headsep + \fi + \if@fincl + \advance\textheight by-\footskip + \fi + \topmargin=-1in + \advance\topmargin by\ta@vblk + \if@hincl \else + \advance\topmargin by-\headheight + \advance\topmargin by-\headsep + \fi + \if@twoside + \if@semitwoside + \marginparwidth=\ta@hblk + \else + \marginparwidth=1.5\ta@hblk + \fi + \else + \marginparwidth=\ta@hblk + \fi + \marginparsep=1cc + \if@areasetadvanced + \if@mincl + \marginparwidth=\ta@hblk + \if@twoside\if@semitwoside\else + \advance\evensidemargin by\marginparwidth + \fi\fi + \advance\marginparwidth by-\marginparsep + \fi + \fi + \marginparpush=0.45\baselineskip + \ta@layoutinfo{areaset}{}% + \@areaset@end + \activateareas + \ifdim \dimexpr 1in+\topmargin + +\headheight+\headsep + +\textheight + +\footskip+\footheight-\ht\strutbox\relax + >\paperheight + \PackageWarningNoLine{typearea}{% + page content and margins higher than paper.\MessageBreak + This may result in page footer out of paper.\MessageBreak + You should decrease DIV, decrease foot height,\MessageBreak + or decreate height of text area% + }% + \fi +} +\newcommand*{\AfterSettingArea}{% + \kernel@ifstar \l@addto@macro \g@addto@macro \@areaset@end +} +\newcommand*{\@areaset@end}{} +%%% From File: $Id: scrkernel-typearea.dtx 3889 2022-06-09 12:11:14Z kohm $ +%%% (run: final) +\typearea[current]{current} +%%% From File: $Id: scrlogo.dtx 3688 2022-02-10 08:26:37Z kohm $ +\RequirePackage{scrlogo} +\endinput +%% +%% End of file `typearea.sty'. diff --git a/texmf/tex/latex/koma-script/visualize.lco b/texmf/tex/latex/koma-script/visualize.lco new file mode 100644 index 000000000..ed1077ba4 --- /dev/null +++ b/texmf/tex/latex/koma-script/visualize.lco @@ -0,0 +1,584 @@ +%% +%% This is file `visualize.lco', +%% generated with the docstrip utility, extended by scrdocstrip. +%% +%% The original source files were: +%% +%% scrkernel-version.dtx (with options: `trace') +%% scrkernel-letterclassoptions.dtx (with options: `lco,visualize,head') +%% scrkernel-letterclassoptions.dtx (with options: `lco,visualize,body') +%% scrkernel-notepaper.dtx (with options: `lco,visualize,body') +%% +%% Copyright (c) 1994-2021 Markus Kohm [komascript at gmx info] +%% +%% This file was generated from file(s) of the KOMA-Script bundle. +%% --------------------------------------------------------------- +%% +%% It may be distributed under the conditions of the +%% LaTeX Project Public License in the version distributed together +%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'. +%% +%% This file may only be distributed together with a copy of the +%% KOMA-Script bundle. You may however distribute the +%% KOMA-Script bundle without all such generated files. See also +%% `lppl.txt' or `lppl-de.txt' for additional information. +%% +%% The list of files belonging to KOMA-Script distribution is given in +%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for +%% additional information. +%% +%% If this file is a beta version, you may not be allowed to distribute +%% it. Look at the comments below to see if this is the case. +%% +%% English and German manuals are part of KOMA-Script bundle. +%% ---------------------------------------------------------- +%% +%% See `README'. +%% +%% The KOMA-Script bundle (but maybe not this file) was based upon the +%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e +%% standard classes created by The LaTeX3 Project 1994-1996. You can +%% find a complete unmodified copy of LaTeX2e at +%% . +%% +%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $ +\begingroup + \catcode`\@11\relax + \ifx\KOMAScriptVersion\undefined + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \gdef\KOMAScriptVersion{#1}% + }% + \else + \newcommand*{\@CheckKOMAScriptVersion}[1]{% + \def\@tempa{#1}% + \ifx\KOMAScriptVersion\@tempa\else + \@latex@warning@no@line{% + \noexpand\KOMAScriptVersion\space is + `\KOMAScriptVersion',\MessageBreak + but `#1' was expected!\MessageBreak + You should not use classes, packages or files + from\MessageBreak + different KOMA-Script versions% + }% + \fi + } + \fi + \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}% +\endgroup +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: head) +\ProvidesFile{% + visualize% + .lco}[\KOMAScriptVersion\space letter-class-option] +\providecommand*\LCOWarningNoLine[2]{% + \LCOWarning{#1}{#2\@gobble}% +} +\providecommand*\LCOWarning[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces + }{% + Letter configuration option #1 Warning: #2% + }% +} +%%% From File: $Id: scrkernel-letterclassoptions.dtx 3874 2022-06-05 10:38:02Z kohm $ +%%% (run: body) +\RequirePackage{eso-pic} +\newcommand*{\showfields}[1]{% + \AtBeginLetter{% + \begingroup + \@for \@tempa:=#1\do{% + \scr@trim@spaces\@tempa + \ifx\@tempa\@empty\else + \@ifundefined{showfield@\@tempa}{% + \LCOWarning{visualize}{Unknown field `\@tempa' ignored}% + }{% + \edef\@tempa{% + \noexpand\AddToShipoutPicture*{% + \noexpand\AtPageUpperLeft{% + \noexpand\usekomafont{field}% + \noexpand\@nameuse{showfield@\@tempa}% + }% + }% + }\@tempa + }% + \fi + }% + \endgroup + }% +} +\newkomafont{field}{\normalcolor} +\newcommand*{\showfield@by@frame}[4]{% + \thinlines + \ifdim #4<\z@ + \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}% + \setlength{\@tempdima}{\dimexpr #1+#3\relax}% + \setlength{\@tempdimb}{#4} + \put(\LenToUnit{#1},-\LenToUnit{#2}){% + \vector(0,-1){\LenToUnit{-\@tempdimb}}}% + \put(\LenToUnit\@tempdima,-\LenToUnit{#2}){% + \vector(0,-1){\LenToUnit{-\@tempdimb}}}% + \else + \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}% + \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{#4}}}% + \setlength{\@tempdima}{\dimexpr #1+#3\relax}% + \setlength{\@tempdimb}{\dimexpr #2+#4\relax}% + \put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){% + \line(-1,0){\LenToUnit{#3}}}% + \put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){% + \line(0,1){\LenToUnit{#4}}}% + \fi +} +\newcommand*{\showfield@by@edges}[4]{% + \thinlines + \setlength{\@tempdima}{\dimexpr #1+#3\relax}% + \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(-1,0){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}% + \ifdim #4<\z@\else + \setlength{\@tempdimb}{\dimexpr #2+#4\relax}% + \put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(1,0){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(-1,0){\LenToUnit{\edgesize}}}% + \put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}% + \fi +} +\newcommand*{\edgesize}{1ex} +\newcommand*{\showfield@by@rule}[4]{% + \ifdim #4<\z@ + \put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[#4]{#3}{-#4}}% + \else + \put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[-#4]{#3}{#4}}% + \fi +} +\newcommand*{\showfield}{} +\let\showfield\showfield@by@frame +\newcommand*{\setshowstyle}[1]{% + \@ifundefined{showfield@by@#1}{% + \LCOWarning{visualize}{Unknown show type `#1'.\MessageBreak + You should simply set one of the supported\MessageBreak + show types `frame', `edges', `rule'.\MessageBreak + Style `frame' will be used instead}% + \let\showfield\showfield@by@frame + }{% + \expandafter\let\expandafter\showfield\csname showfield@by@#1\endcsname + }% +} +\newcommand*{\showfield@test}{% + \showfield{1cm}{1cm}{10cm}{15cm}% +} +\newcommand*{\showfield@head}{% + \ifdim\useplength{firstheadhpos}<\paperwidth + \ifdim \useplength{firstheadhpos}>-\paperwidth + \ifdim \useplength{firstheadhpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstheadhpos}% + \addtolengthplength[-]{\@tempskipa}{firstheadwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstheadhpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% + \fi + \showfield{\@tempskipa}% + {\useplength{firstheadvpos}}% + {\useplength{firstheadwidth}}% + {-\headheight}% +} +\newcommand*{\showfield@foot}{% + \ifdim\useplength{firstfoothpos}<\paperwidth + \ifdim \useplength{firstfoothpos}>-\paperwidth + \ifdim \useplength{firstfoothpos}<\z@ + \setlength\@tempskipa{\paperwidth}% + \addtolengthplength{\@tempskipa}{firstfoothpos}% + \addtolengthplength[-]{\@tempskipa}{firstfootwidth}% + \else + \setlength{\@tempskipa}{\useplength{firstfoothpos}}% + \fi + \else + \setlength\@tempskipa{\oddsidemargin}% + \addtolength\@tempskipa{1in}% + \fi + \else + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% + \fi + \showfield{\@tempskipa}% + {\useplength{firstfootvpos}}% + {\useplength{firstfootwidth}}% + {-\baselineskip}% +} +\newcommand*{\showfield@address}{% + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \showfield{\@tempskipa}{\useplength{toaddrvpos}}% + {\useplength{toaddrwidth}}% + {\dimexpr\useplength{toaddrheight}\relax}% +} +\newcommand*{\showfield@location}{% + \begingroup + \ifdim \useplength{locwidth}=\z@% + \setplength{locwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% + \else + \addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% + \if@bigloc% + \setplength[.66667]{locwidth}{\useplength{locwidth}}% + \else% + \setplength[.5]{locwidth}{\useplength{locwidth}}% + \fi% + \fi% + \ifdim \useplength{lochpos}=\z@% + \setplength{lochpos}{\useplength{toaddrhpos}}% + \fi + \ifdim \useplength{locvpos}=\z@% + \setplength{locvpos}{\useplength{toaddrvpos}}% + \fi + \ifdim \useplength{locheight}=\z@% + \setplength{locheight}{\useplength{toaddrheight}}% + \fi + \setlengthtoplength[-]{\@tempskipa}{lochpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \else + \addtolengthplength{\@tempskipa}{locwidth}% + \fi + \addtolengthplength[-]{\@tempskipa}{locwidth}% + \showfield{\@tempskipa}{\useplength{locvpos}}% + {\useplength{locwidth}}{\useplength{locheight}}% + \endgroup +} +\newcommand*{\showfield@refline}{% + \begingroup + \ifdim\useplength{refwidth}=\z@ + \if@refwide + \setplength{refwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \setplength{refhpos}{\useplength{toaddrhpos}}% + \else + \setplength[-]{refhpos}{\useplength{toaddrhpos}}% + \fi + \addtoplength[-2]{refwidth}{\useplength{refhpos}}% + \else + \setplength{refwidth}{\textwidth}% + \setplength{refhpos}{\oddsidemargin}% + \addtoplength{refhpos}{1in}% + \fi + \else\ifdim\useplength{refhpos}=\z@ + \begingroup + \setlength\@tempdima{\textwidth}% + \addtolengthplength[-]{\@tempdima}{refwidth}% + \setlength\@tempdimb{\oddsidemargin}% + \addtolength\@tempdimb{1in}% + \setlength{\@tempdimc}{\paperwidth}% + \addtolength{\@tempdimc}{-\textwidth}% + \divide\@tempdimb by 32768\relax + \divide\@tempdimc by 32768\relax + \ifdim\@tempdimc=\z@\else + \multiply\@tempdima by\@tempdimb + \divide\@tempdima by\@tempdimc + \fi + \edef\@tempa{\noexpand\endgroup + \noexpand\setplength{refhpos}{\the\@tempdima}}% + \@tempa + \fi\fi + \showfield{\useplength{refhpos}}{\useplength{refvpos}}% + {\useplength{refwidth}}{-1.5\baselineskip}% + \endgroup +} +\RequirePackage{graphicx} +\newcommand*{\showenvelope}{} +\newcommand*{\@@showenvelope}{} +\newcommand*{\@@@showenvelope}{} +\def\showenvelope(#1,#2){% + \kernel@ifnextchar (%) + {\@showenvelope({#1},{#2})}% + {\@@@showenvelope({#1},{#2})}% +} +\def\@@@showenvelope(#1,#2){% + \begingroup + \def\@tempa{\endgroup}% + \ifdim \paperwidth>#1\relax + \LCOWarning{visualize}{% + \string\paperwidth\space > envelope width not supported}% + \else + \ifdim \paperheight>#2\relax + \ifdim .5\paperheight>#2\relax + \expandafter\ifdim \useplength{tfoldmarkvpos}>#2\relax + \LCOWarning{visualize}{% + tfoldmarkvpos > envelope height not supported}% + \else + \def\@tempa{\endgroup + \@showenvelope({#1},{#2})% + ({\dimexpr (#1-\paperwidth)/2\relax},% + {\dimexpr (#2-\expandafter\dimexpr + \useplength{tfoldmarkvpos}\relax)% + /2\relax})% + }% + \fi + \else + \def\@tempa{\endgroup + \@showenvelope({#1},{#2})% + ({\dimexpr (#1-\paperwidth)/2\relax},% + {\dimexpr (#2-.5\paperheight)/2\relax})% + }% + \fi + \else + \def\@tempa{\endgroup + \@showenvelope({#1},{#2})% + ({\dimexpr (#1-\paperwidth)/2\relax},% + {\dimexpr (#2-\paperheight)/2\relax})% + }% + \fi + \fi + \@tempa +} +\def\@showenvelope(#1,#2)(#3,#4){% + \kernel@ifnextchar [%] + {\@@showenvelope({#1},{#2})({#3},{#4})}% + {\@@showenvelope({#1},{#2})({#3},{#4})[]}% +} +\def\@@showenvelope(#1,#2)(#3,#4)[#5]{% + \newpage + \vspace*{\fill} + \rotatebox{90}{% + \begin{picture}(0,0) + \begin{picture}(\LenToUnit{#1},\LenToUnit{#2})(0,\LenToUnit{#2}) + \newcommand*{\PlusHOffset}[1]{% + \dimexpr \expandafter\dimexpr ##1\relax + #3\relax + }% + \newcommand*{\MinusHOffset}[1]{% + \dimexpr \expandafter\dimexpr ##1\relax - #3\relax + }% + \newcommand*{\PlusVOffset}[1]{% + \dimexpr \expandafter\dimexpr ##1\relax + #4\relax + }% + \newcommand*{\MinusVOffset}[1]{% + \dimexpr \expandafter\dimexpr ##1\relax - #4\relax + }% + \newcommand{\AtEnvelopeUpperLeft}[1]{% + \put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\MinusVOffset{#2}}){##1}% + }% + \newcommand{\AtEnvelopeLowerLeft}[1]{% + \put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\PlusVOffset\z@}){##1}% + }% + \newcommand{\AtEnvelopeUpperRight}[1]{% + \put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\MinusVOffset{#2}}){##1}% + }% + \newcommand{\AtEnvelopeLowerRight}[1]{% + \put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\PlusVOffset\z@}){##1}% + }% + \newcommand*{\measuredIFrame}{}% + \def\measuredIFrame(##1,##2)(##3,##4){% + \put(\LenToUnit{##1},\LenToUnit{##2}){% + \measuredFrameLB({##3},{##4})% + }% + \put(\LenToUnit{\MinusHOffset\z@},% + \LenToUnit{\dimexpr ##2-.5mm\relax}){% + \measureLineHB{\PlusHOffset{##1}}% + }% + \put(\LenToUnit{\dimexpr ##1+##3\relax},% + \LenToUnit{\dimexpr ##2-.5mm\relax}){% + \measureLineHB{\dimexpr #1-% + \PlusHOffset{\dimexpr ##1+##3\relax}\relax}% + }% + \put(\LenToUnit{\dimexpr ##1-.5mm\relax},% + \LenToUnit{\dimexpr ##2+##4\relax}){% + \measureLineVL{\PlusVOffset{\dimexpr -##2-##4\relax}}% + }% + \put(\LenToUnit{\dimexpr ##1-.5mm\relax},% + \LenToUnit{\PlusVOffset{-#2}}){% + \measureLineVL{\dimexpr #2-% + \PlusVOffset{\dimexpr -##2\relax}\relax}% + }% + }% + \put(0,0){% + \thicklines + \usekomafont{envelope}% + \measuredFrameLB({#1},{#2})% + }% + \AtEnvelopeLowerLeft{% + \usekomafont{letter}% + \dashbox{\LenToUnit{1mm}}% + (\LenToUnit{\MinusHOffset{\MinusHOffset{#1}}},% + \LenToUnit{\MinusVOffset{\MinusVOffset{#2}}}){}% + }% + \expandafter\ifdim \useplength{toaddrhpos}<\z@ + \AtEnvelopeUpperLeft{% + \thicklines + \usekomafont{envelope}% + \measuredIFrame(\expandafter\dimexpr \useplength{toaddrhpos}+ + \MinusHOffset{\MinusHOffset{#1}}\relax,% + -\dimexpr % + \expandafter\dimexpr\useplength{toaddrvpos}\relax + + + \expandafter + \dimexpr\useplength{toaddrheight}\relax + \relax)% + (\useplength{toaddrwidth},\useplength{toaddrheight})% + }% + \else + \AtEnvelopeUpperLeft{% + \thicklines + \usekomafont{envelope}% + \measuredIFrame(\useplength{toaddrhpos},% + -\dimexpr % + \expandafter\dimexpr\useplength{toaddrvpos}\relax + + + \expandafter + \dimexpr\useplength{toaddrheight}\relax + \relax)% + (\useplength{toaddrwidth},\useplength{toaddrheight})% + }% + \fi + \AtEnvelopeUpperLeft{#5}% + \end{picture} + \end{picture} + }% + \newpage +} +\newkomafont{envelope}{\normalcolor} +\newkomafont{letter}{\normalcolor} +\newcommand*{\unmeasuredFrame}{} +\def\unmeasuredFrame(#1,#2){% + \put(0,0){\line(1,0){\LenToUnit{#1}}}% + \put(\LenToUnit{#1},0){\line(0,1){\LenToUnit{#2}}}% + \put(\LenToUnit{#1},\LenToUnit{#2}){\line(-1,0){\LenToUnit{#1}}}% + \put(0,\LenToUnit{#2}){\line(0,-1){\LenToUnit{#2}}}% +} +\newcommand*{\measuredFrameLB}{} +\def\measuredFrameLB(#1,#2){% + \unmeasuredFrame({#1},{#2})% + \put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}% + \put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}% +} +\newcommand*{\measuredFrameLT}{} +\def\measuredFrameLT(#1,#2){% + \unmeasuredFrame({#1},{#2})% + \put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}% + \put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}% +} +\newcommand*{\measuredFrameRB}{} +\def\measuredFrameRB(#1,#2){% + \unmeasuredFrame({#1},{#2})% + \put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}% + \put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}% +} +\newcommand*{\measuredFrameRT}{} +\def\measuredFrameRT(#1,#2){% + \unmeasuredFrame({#1},{#2})% + \put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}% + \put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}% +} +\newcommand*{\measureLineV}[1]{% + \begin{picture}(0,0) + \thinlines + \usekomafont{measure}% + \put(0,0){\vector(0,1){\LenToUnit{#1}}}% + \put(0,\LenToUnit{#1}){\vector(0,-1){\LenToUnit{#1}}}% + \end{picture} +} +\newcommand*{\measureLineVL}[1]{% + \begin{picture}(0,0) + \usekomafont{measure}% + \put(0,0){\measureLineV{#1}}% + \put(0,0){\makebox(0,\LenToUnit{#1})[r]{\ValPerUnit{#1}}}% + \end{picture} +} +\newcommand*{\measureLineVR}[1]{% + \begin{picture}(0,0) + \usekomafont{measure}% + \put(0,0){\measureLineV{#1}}% + \put(0,0){\makebox(0,\LenToUnit{#1})[l]{\ValPerUnit{#1}}}% + \end{picture} +} +\newcommand*{\ValPerUnit}[1]{% + \begingroup + \setlength{\@tempdima}{% + \dimexpr #1/(\unitlength/\unitfactor)*\p@/\unitfactor\relax + }% + \strip@pt\@tempdima + \endgroup +} +\newcommand*{\unitfactor}{1} +\newcommand*{\measureLineH}[1]{% + \begin{picture}(0,0) + \usekomafont{measure}% + \put(0,0){\vector(1,0){\LenToUnit{#1}}}% + \put(\LenToUnit{#1},0){\vector(-1,0){\LenToUnit{#1}}}% + \end{picture} +} +\newcommand*{\measureLineHB}[1]{% + \begin{picture}(0,0) + \usekomafont{measure}% + \put(0,0){\measureLineH{#1}}% + \put(0,\LenToUnit{\dimexpr -\ht\strutbox-.5mm\relax}){% + \makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}% + \end{picture} +} +\newcommand*{\measureLineHT}[1]{% + \begin{picture}(0,0) + \usekomafont{measure}% + \put(0,0){\measureLineH{#1}}% + \put(0,0){% + \makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}% + \end{picture} +} +\newkomafont{measure}{\normalcolor} +\newcommand*{\showISOenvelope}[1]{% + \Ifstr{#1}{C4}{% + \showenvelope(324mm,229mm)% + }{% + \Ifstr{#1}{C5}{% + \showenvelope(229mm,162mm)% + }{% + \Ifstr{#1}{C5/6}{% + \showenvelope(220mm,110mm)% + }{% + \Ifstr{#1}{DL}{% + \showenvelope(220mm,110mm)% + }{% + \Ifstr{#1}{C6/5}{% + \showenvelope(229mm,114mm)% + }{% + \Ifstr{#1}{C6}{% + \showenvelope(162mm,114mm)% + }{% + \LCOWarning{visualize}{envelope size `ISO #1' unsupported}% + }% + }% + }% + }% + }% + }% +} +\newcommand*{\showUScommercial}[1]{% + \Ifstr{#1}{9}{% + \showenvelope(8.875in,3.875in)% + }{% + \Ifstr{#1}{10}{% + \showenvelope(9.5in,4.125in)% + }{% + \LCOWarning{visualize}{envelope size `US commercial #1' unsupported}% + }% + }% +} +\newcommand*{\showUScheck}{% + \showenvelope(8.625in,3.625in)% +} +%%% From File: $Id: scrkernel-notepaper.dtx 3895 2022-06-20 10:37:02Z kohm $ +%%% (run: body) +\endinput +%% +%% End of file `visualize.lco'. From 497883db075a15ab159b5b852b753fd736fed36d Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Wed, 28 Sep 2022 18:59:57 +0100 Subject: [PATCH 11/13] Update l3kernel and l3backend to 2022-09-28 --- .../latex/l3backend/l3backend-dvipdfmx.def | 18 +++++++- texmf/tex/latex/l3backend/l3backend-dvips.def | 16 ++++++- .../tex/latex/l3backend/l3backend-dvisvgm.def | 3 +- .../tex/latex/l3backend/l3backend-luatex.def | 7 ++- .../tex/latex/l3backend/l3backend-pdftex.def | 7 ++- texmf/tex/latex/l3backend/l3backend-xetex.def | 9 +++- texmf/tex/latex/l3kernel/expl3-code.tex | 43 ++++++++++++++++++- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 10 files changed, 97 insertions(+), 12 deletions(-) diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def index 67f92072d..992a5da4e 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2022-08-30}{} + {l3backend-dvipdfmx.def}{2022-09-28}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -512,7 +512,7 @@ \__graphics_backend_loaded:n { \seq_set_from_clist:Nn \l_graphics_search_ext_seq - { .pdf , .eps , .ps , .png , .jpg ., jpeg , .bmp } + { .pdf , .eps , .ps , .png , .jpg , .jpeg , .bmp } } \__graphics_backend_loaded:n { @@ -799,6 +799,20 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 + { + \__kernel_backend_first_shipout:n + { + \__kernel_backend_literal:e + { + pdf:pagesize ~ + width ~ \__pdf_backend_pagesize_set:n {#1} ~ + height ~ \__pdf_backend_pagesize_set:n {#2} + } + } + } +\cs_new:Npn \__pdf_backend_pagesize_set:n #1 + { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } } %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def index c20decfc8..a84536ec4 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvips.def +++ b/texmf/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2022-08-30}{} + {l3backend-dvips.def}{2022-09-28}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -1028,6 +1028,20 @@ { \__pdf_backend_pdfmark:n { /#1 ~ #2 /BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__pdf_backend_pdfmark:n { /EMC } } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 + { + \__kernel_backend_first_shipout:n + { + \__kernel_backend_literal:e + { + papersize = + \__pdf_backend_pagesize_set:n {#1} , + \__pdf_backend_pagesize_set:n {#2} + } + } + } +\cs_new:Npn \__pdf_backend_pagesize_set:n #1 + { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } } %% File: l3backend-opacity.dtx \cs_new_protected:Npn \__opacity_backend_select:n #1 { diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def index a471691ce..c34ba5b6a 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2022-08-30}{} + {l3backend-dvisvgm.def}{2022-09-28}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -673,6 +673,7 @@ \cs_new:Npn \__pdf_backend_version_minor: { -1 } \cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_emc: { } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 { } %% File: l3backend-opacity.dtx \cs_new_protected:Npn \__opacity_backend_select:n #1 { \__opacity_backend:nn {#1} { } } diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def index 82de7e197..ec2560fb7 100644 --- a/texmf/tex/latex/l3backend/l3backend-luatex.def +++ b/texmf/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2022-08-30}{} + {l3backend-luatex.def}{2022-09-28}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -840,6 +840,11 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 + { + \dim_set:Nn \tex_pagewidth:D {#1} + \dim_set:Nn \tex_pageheight:D {#2} + } %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def index ef45c2677..b92249d3b 100644 --- a/texmf/tex/latex/l3backend/l3backend-pdftex.def +++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2022-08-30}{} + {l3backend-pdftex.def}{2022-09-28}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -840,6 +840,11 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 + { + \dim_set:Nn \tex_pagewidth:D {#1} + \dim_set:Nn \tex_pageheight:D {#2} + } %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def index d171fc435..e6005f616 100644 --- a/texmf/tex/latex/l3backend/l3backend-xetex.def +++ b/texmf/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2022-08-30}{} + {l3backend-xetex.def}{2022-09-28}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -512,7 +512,7 @@ \__graphics_backend_loaded:n { \seq_set_from_clist:Nn \l_graphics_search_ext_seq - { .pdf , .eps , .ps , .png , .jpg ., jpeg , .bmp } + { .pdf , .eps , .ps , .png , .jpg , .jpeg , .bmp } } \__graphics_backend_loaded:n { @@ -853,6 +853,11 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +\cs_new_protected:Npn \__pdf_backend_pagesize_set:nn #1#2 + { + \dim_set:Nn \tex_pagewidth:D {#1} + \dim_set:Nn \tex_pageheight:D {#2} + } %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index b5ee93def..d49f9dc82 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -71,7 +71,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-30}% +\def\ExplFileDate{2022-09-28}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -30388,6 +30388,42 @@ \hbox_to_zero:n { \__pdf_backend_destination:nnnn {#1} {#2} {#3} {#4} } } +\cs_if_exist:NT \@kernel@before@begindocument + { + \tl_gput_right:Nn \@kernel@before@begindocument + { + \bool_lazy_all:nT + { + { \cs_if_exist_p:N \stockheight } + { \cs_if_exist_p:N \stockwidth } + { \cs_if_exist_p:N \IfDocumentMetadataTF } + { \IfDocumentMetadataTF { \c_true_bool } { \c_false_bool } } + } + { + \bool_lazy_and:nnTF + { \dim_compare_p:nNn \stockheight > { 0pt } } + { \dim_compare_p:nNn \stockwidth > { 0pt } } + { + \__pdf_backend_pagesize_set:nn + \stockwidth \stockheight + } + { + \bool_lazy_or:nnF + { \dim_compare_p:nNn \stockheight < { 0pt } } + { \dim_compare_p:nNn \stockwidth < { 0pt } } + { + \bool_lazy_and:nnT + { \dim_compare_p:nNn \paperheight > { 0pt } } + { \dim_compare_p:nNn \paperwidth > { 0pt } } + { + \__pdf_backend_pagesize_set:nn + \paperwidth \paperheight + } + } + } + } + } + } \prop_new:N \g__pdf_object_prop \cs_new_protected:Npn \pdf_object_new:nn #1#2 { @@ -32920,6 +32956,11 @@ \__text_change_case_store:n {#7} \__text_change_case_loop:nnw {#1} {#2} } +\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7 + { + \__text_change_case_store:n {#7} + \__text_change_case_break:w + } \cs_new:Npn \__text_change_case_letterlike_lower:nnN #1#2#3 { \__text_change_case_letterlike:nnnnN {#1} {#1} {#1} {#2} #3 } \cs_new_eq:NN \__text_change_case_letterlike_upper:nnN diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 7e1fdd7a0..80a276777 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-30}% +\def\ExplFileDate{2022-09-28}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index c01f3175b..915b8c10d 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-30}% +\def\ExplFileDate{2022-09-28}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index d5a770381..3a5c3d76e 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-08-30}% +\def\ExplFileDate{2022-09-28}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From 049df79ca316f20a88cc9e5f0e2144bd82b61d32 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Wed, 26 Oct 2022 21:05:49 +0100 Subject: [PATCH 12/13] Update l3backend and l3kernel to 2022-10-26 --- .../latex/l3backend/l3backend-dvipdfmx.def | 8 +- texmf/tex/latex/l3backend/l3backend-dvips.def | 8 +- .../tex/latex/l3backend/l3backend-dvisvgm.def | 2 +- .../tex/latex/l3backend/l3backend-luatex.def | 2 +- .../tex/latex/l3backend/l3backend-pdftex.def | 2 +- texmf/tex/latex/l3backend/l3backend-xetex.def | 2 +- texmf/tex/latex/l3kernel/expl3-code.tex | 186 +++++++++++------- texmf/tex/latex/l3kernel/expl3-generic.tex | 2 +- texmf/tex/latex/l3kernel/expl3.ltx | 2 +- texmf/tex/latex/l3kernel/expl3.sty | 2 +- 10 files changed, 127 insertions(+), 89 deletions(-) diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def index 992a5da4e..4abeab389 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2022-09-28}{} + {l3backend-dvipdfmx.def}{2022-10-26}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -806,13 +806,11 @@ \__kernel_backend_literal:e { pdf:pagesize ~ - width ~ \__pdf_backend_pagesize_set:n {#1} ~ - height ~ \__pdf_backend_pagesize_set:n {#2} + width ~ \dim_eval:n {#1} ~ + height ~ \dim_eval:n {#2} } } } -\cs_new:Npn \__pdf_backend_pagesize_set:n #1 - { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } } %% File: l3backend-opacity.dtx \bool_lazy_and:nnT { \cs_if_exist_p:N \pdfmanagement_if_active_p: } diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def index a84536ec4..656d07d07 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvips.def +++ b/texmf/tex/latex/l3backend/l3backend-dvips.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2022-09-28}{} + {l3backend-dvips.def}{2022-10-26}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -1034,14 +1034,10 @@ { \__kernel_backend_literal:e { - papersize = - \__pdf_backend_pagesize_set:n {#1} , - \__pdf_backend_pagesize_set:n {#2} + papersize = \dim_eval:n {#1} , \dim_eval:n {#2} } } } -\cs_new:Npn \__pdf_backend_pagesize_set:n #1 - { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } } %% File: l3backend-opacity.dtx \cs_new_protected:Npn \__opacity_backend_select:n #1 { diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def index c34ba5b6a..7fcb631be 100644 --- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2022-09-28}{} + {l3backend-dvisvgm.def}{2022-10-26}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def index ec2560fb7..71ddaedd8 100644 --- a/texmf/tex/latex/l3backend/l3backend-luatex.def +++ b/texmf/tex/latex/l3backend/l3backend-luatex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2022-09-28}{} + {l3backend-luatex.def}{2022-10-26}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def index b92249d3b..c87dd5282 100644 --- a/texmf/tex/latex/l3backend/l3backend-pdftex.def +++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2022-09-28}{} + {l3backend-pdftex.def}{2022-10-26}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def index e6005f616..346b6650d 100644 --- a/texmf/tex/latex/l3backend/l3backend-xetex.def +++ b/texmf/tex/latex/l3backend/l3backend-xetex.def @@ -26,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2022-09-28}{} + {l3backend-xetex.def}{2022-10-26}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex index d49f9dc82..258d04764 100644 --- a/texmf/tex/latex/l3kernel/expl3-code.tex +++ b/texmf/tex/latex/l3kernel/expl3-code.tex @@ -71,7 +71,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-09-28}% +\def\ExplFileDate{2022-10-26}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -248,24 +248,16 @@ \protected\def\noexpand\ExplSyntaxOff{}% \catcode 9 = \the\catcode 9\relax \catcode 32 = \the\catcode 32\relax - \catcode 34 = \the\catcode 34\relax - \catcode 38 = \the\catcode 38\relax \catcode 58 = \the\catcode 58\relax - \catcode 94 = \the\catcode 94\relax \catcode 95 = \the\catcode 95\relax - \catcode 124 = \the\catcode 124\relax \catcode 126 = \the\catcode 126\relax \endlinechar = \the\endlinechar\relax \chardef\csname\detokenize{l__kernel_expl_bool}\endcsname = 0\relax }% -\catcode 9 = 9\relax -\catcode 32 = 9\relax -\catcode 34 = 12\relax -\catcode 38 = 4\relax -\catcode 58 = 11\relax -\catcode 94 = 7\relax -\catcode 95 = 11\relax -\catcode 124 = 12\relax +\catcode 9 = 9\relax +\catcode 32 = 9\relax +\catcode 58 = 11\relax +\catcode 95 = 11\relax \catcode 126 = 10\relax \endlinechar = 32\relax \chardef\l__kernel_expl_bool = 1\relax @@ -275,14 +267,10 @@ { \cs_set_protected:Npx \ExplSyntaxOff { - \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } } - \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } } - \char_set_catcode:nn { 34 } { \char_value_catcode:n { 34 } } - \char_set_catcode:nn { 38 } { \char_value_catcode:n { 38 } } - \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } } - \char_set_catcode:nn { 94 } { \char_value_catcode:n { 94 } } - \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } } - \char_set_catcode:nn { 124 } { \char_value_catcode:n { 124 } } + \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } } + \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } } + \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } } + \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } } \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } } \tex_endlinechar:D = \tex_the:D \tex_endlinechar:D \scan_stop: @@ -290,14 +278,10 @@ \cs_set_protected:Npn \ExplSyntaxOff { } } } - \char_set_catcode_ignore:n { 9 } % tab - \char_set_catcode_ignore:n { 32 } % space - \char_set_catcode_other:n { 34 } % double quote - \char_set_catcode_alignment:n { 38 } % ampersand - \char_set_catcode_letter:n { 58 } % colon - \char_set_catcode_math_superscript:n { 94 } % circumflex - \char_set_catcode_letter:n { 95 } % underscore - \char_set_catcode_other:n { 124 } % pipe + \char_set_catcode_ignore:n { 9 } % tab + \char_set_catcode_ignore:n { 32 } % space + \char_set_catcode_letter:n { 58 } % colon + \char_set_catcode_letter:n { 95 } % underscore \char_set_catcode_space:n { 126 } % tilde \tex_endlinechar:D = 32 \scan_stop: \bool_set_true:N \l__kernel_expl_bool @@ -7785,9 +7769,6 @@ { \int_value:w \tex_elapsedtime:D } } { - \msg_new:nnnn { kernel } { no-elapsed-time } - { No~clock~detected~for~#1. } - { The~current~engine~provides~no~way~to~access~the~system~time. } \cs_new:Npn \sys_timer: { \int_value:w @@ -10617,6 +10598,12 @@ LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~ would~lead~to~an~infinite~loop! } +\cs_if_exist:NF \tex_elapsedtime:D + { + \msg_new:nnnn { kernel } { no-elapsed-time } + { No~clock~detected~for~#1. } + { The~current~engine~provides~no~way~to~access~the~system~time. } + } \msg_new:nnnn { kernel } { non-base-function } { Function~'#1'~is~not~a~base~function } { @@ -23221,7 +23208,6 @@ { \char_generate:nn { 32 } { 3 } 3 \char_generate:nn { 32 } { 4 } 4 - # \char_generate:nn { 32 } { 6 } 6 \char_generate:nn { 32 } { 7 } 7 \char_generate:nn { 32 } { 8 } 8 \c_space_tl \token_to_str:N A @@ -23451,35 +23437,40 @@ \scan_stop: \exp_after:wN \use_none:n \token_to_str:N #3 \prg_do_nothing: \scan_stop: - \exp_after:wN \__tl_analysis_b_char:Nww + \exp_after:wN \__tl_analysis_b_char:Nn + \exp_after:wN \__tl_analysis_b_char_aux:nww \else: \exp_after:wN \__tl_analysis_b_cs:Nww \fi: #3 #1; #2; } -\cs_new:Npx \__tl_analysis_b_char:Nww #1 +\cs_new:Npx \__tl_analysis_b_char:Nn #1#2 { - \exp_not:N \if_meaning:w #1 \exp_not:N \tex_undefined:D + \exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D \token_to_str:N D \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_catcode_other_token + \exp_not:N \if_catcode:w #2 \c_catcode_other_token \token_to_str:N C \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_catcode_letter_token + \exp_not:N \if_catcode:w #2 \c_catcode_letter_token \token_to_str:N B \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_math_toggle_token 3 + \exp_not:N \if_catcode:w #2 \c_math_toggle_token 3 \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_alignment_token 4 + \exp_not:N \if_catcode:w #2 \c_alignment_token 4 \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_math_superscript_token 7 + \exp_not:N \if_catcode:w #2 \c_math_superscript_token 7 \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_math_subscript_token 8 + \exp_not:N \if_catcode:w #2 \c_math_subscript_token 8 \exp_not:N \else: - \exp_not:N \if_catcode:w #1 \c_space_token + \exp_not:N \if_catcode:w #2 \c_space_token \token_to_str:N A \exp_not:N \else: 6 \exp_not:n { \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: } - \exp_not:N \int_value:w `#1 \s__tl - \exp_not:N \exp_after:wN \exp_not:N \__tl_analysis_b_normals:ww - \exp_not:N \int_value:w \exp_not:N \int_eval:w - 1 + + #1 {#2} + } +\cs_new:Npn \__tl_analysis_b_char_aux:nww #1 + { + \int_value:w `#1 \s__tl + \exp_after:wN \__tl_analysis_b_normals:ww + \int_value:w \int_eval:w - 1 + } \cs_new:Npn \__tl_analysis_b_cs:Nww #1 { @@ -23693,49 +23684,96 @@ } \cs_new_protected:Npn \__tl_peek_analysis_test: { - \if_int_odd:w - \if_catcode:w \exp_not:N \l_peek_token { \c_zero_int \fi: - \if_catcode:w \exp_not:N \l_peek_token } \c_zero_int \fi: - \if_meaning:w \l_peek_token \c_space_token \c_zero_int \fi: - \c_one_int + \if_case:w + \if_catcode:w \exp_not:N \l_peek_token { \c_max_int \fi: + \if_catcode:w \exp_not:N \l_peek_token } \c_max_int \fi: + \if_meaning:w \l_peek_token \c_space_token \c_max_int \fi: + \exp_after:wN \if_meaning:w \exp_not:N \l_peek_token \l_peek_token + \c_one_int + \fi: + \c_zero_int \exp_after:wN \exp_after:wN - \exp_after:wN \__tl_peek_analysis_normal:N + \exp_after:wN \__tl_peek_analysis_exp:N \exp_after:wN \exp_not:N + \or: + \exp_after:wN \__tl_peek_analysis_nonexp:N \else: \exp_after:wN \__tl_peek_analysis_special: \fi: } -\cs_new_protected:Npn \__tl_peek_analysis_normal:N #1 +\cs_new_protected:Npn \__tl_peek_analysis_exp:N #1 + { + \cs_set_nopar:Npx \l__tl_peek_code_tl + { + \tex_let:D \exp_not:N #1 \scan_stop: + \exp_not:o \l__tl_peek_code_tl + { + \exp_not:n { \__kernel_exp_not:w \exp_after:wN } + { \exp_not:N \exp_not:N \exp_not:N #1 } + } + \if:w \scan_stop: + \exp_after:wN \use_none:n \token_to_str:N #1 \prg_do_nothing: + \scan_stop: + \exp_after:wN \exp_after:wN + \exp_after:wN \__tl_peek_analysis_exp_active:N + \else: + { -1 } 0 + \exp_after:wN \exp_after:wN + \exp_after:wN \use_none:n + \fi: + \exp_not:N #1 + } + \l__tl_peek_code_tl + } +\cs_new:Npx \__tl_peek_analysis_exp_active:N #1 + { { \exp_not:N \int_value:w `#1 } \token_to_str:N D } +\cs_new_protected:Npn \__tl_peek_analysis_nonexp:N #1 { - \exp_after:wN \reverse_if:N \exp_after:wN \if_meaning:w - \exp_not:N #1 #1 - \tex_let:D #1 \scan_stop: - \tl_put_right:Nn \l__tl_peek_code_tl { { \exp_not:N #1 } } - \else: - \tl_put_right:Nn \l__tl_peek_code_tl { { \exp_not:n {#1} } } - \fi: \if_charcode:w \scan_stop: \exp_after:wN \use_none:n \token_to_str:N #1 \prg_do_nothing: \scan_stop: \exp_after:wN \__tl_peek_analysis_char:N - \exp_after:wN #1 \else: - \exp_after:wN \__tl_peek_analysis_cs: + \exp_after:wN \__tl_peek_analysis_cs:N \fi: + #1 } -\cs_new_protected:Npn \__tl_peek_analysis_cs: - { \l__tl_peek_code_tl { -1 } 0 } -\cs_new_protected:Npn \__tl_peek_analysis_char:N #1 +\cs_new_protected:Npn \__tl_peek_analysis_cs:N #1 + { \l__tl_peek_code_tl { \exp_not:n {#1} } { -1 } 0 } +\group_begin: +\char_set_active_eq:NN \ \scan_stop: +\cs_new_protected:Npx \__tl_peek_analysis_char:N #1 { - \char_set_lccode:nn { `#1 } { 32 } - \tex_lowercase:D { \__tl_peek_analysis_char:nN {#1} } #1 + \cs_set_eq:NN + \char_generate:nn { 32 } { 13 } + \exp_not:N \tex_undefined:D + \tex_lccode:D `#1 = 32 \exp_stop_f: + \tex_lowercase:D + { + \tl_put_right:Nx \exp_not:N \l__tl_peek_code_tl + { \exp_not:n { \__tl_analysis_b_char:Nn \use_none:n } {#1} } + } + \exp_not:n + { + \exp_after:wN \__tl_peek_analysis_char:w + \int_value:w + } + `#1 + \exp_not:n { \exp_after:wN \s__tl \l__tl_peek_code_tl } + #1 } -\cs_new_protected:Npn \__tl_peek_analysis_char:nN #1#2 +\group_end: +\cs_new_protected:Npn \__tl_peek_analysis_char:w #1 \s__tl #2#3#4 { - \cs_set_protected:Npn \__tl_tmp:w ##1 #1 ##2 ##3 \scan_stop: - { \exp_args:No \l__tl_peek_code_tl { \int_value:w `#2 } ##2 } - \exp_after:wN \__tl_tmp:w \c__tl_peek_catcodes_tl \scan_stop: + \if_charcode:w 6 #3 + \else: + \if_charcode:w D #3 + \else: + \exp_args:NNNo + \fi: + \fi: + #2 { \exp_not:n {#4} } {#1} #3 } \cs_new_protected:Npn \__tl_peek_analysis_special: { @@ -23763,6 +23801,11 @@ { \tl_if_empty:oT { \tex_the:D \tex_everyeof:D } { \tex_everyeof:D { \scan_stop: } } + \tex_afterassignment:D \__tl_peek_analysis_nextii: + \tex_futurelet:D \l__tl_analysis_next_token + } +\cs_new_protected:Npn \__tl_peek_analysis_nextii: + { \tex_afterassignment:D \__tl_peek_analysis_str: \tex_futurelet:D \l__tl_analysis_next_token } @@ -30398,6 +30441,7 @@ { \cs_if_exist_p:N \stockwidth } { \cs_if_exist_p:N \IfDocumentMetadataTF } { \IfDocumentMetadataTF { \c_true_bool } { \c_false_bool } } + { \int_compare_p:nNn \tex_mag:D = { 1000 } } } { \bool_lazy_and:nnTF diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex index 80a276777..e8f06e686 100644 --- a/texmf/tex/latex/l3kernel/expl3-generic.tex +++ b/texmf/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-09-28}% +\def\ExplFileDate{2022-10-26}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx index 915b8c10d..0d2454e44 100644 --- a/texmf/tex/latex/l3kernel/expl3.ltx +++ b/texmf/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-09-28}% +\def\ExplFileDate{2022-10-26}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \catcode`\_=11 diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty index 3a5c3d76e..8518152bd 100644 --- a/texmf/tex/latex/l3kernel/expl3.sty +++ b/texmf/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2022-09-28}% +\def\ExplFileDate{2022-10-26}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% From db76b37c877d8d15ecdc6e93b2745e0d484a5f05 Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Mon, 31 Oct 2022 18:10:31 +0000 Subject: [PATCH 13/13] Step release tag --- base/README.md | 2 +- base/changes.txt | 12 ++++++++---- base/ltvers.dtx | 4 ++-- required/graphics/README.md | 2 +- required/graphics/changes.txt | 4 ++++ required/latex-lab/README.md | 2 +- required/tools/README.md | 2 +- required/tools/changes.txt | 12 ++++++++---- 8 files changed, 26 insertions(+), 14 deletions(-) diff --git a/base/README.md b/base/README.md index 9bd568802..18b3a5fcc 100644 --- a/base/README.md +++ b/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2022-06-01 patch level 5 +Release 2022-11-01 Overview -------- diff --git a/base/changes.txt b/base/changes.txt index ebdf5aa4e..0ae9b55c0 100644 --- a/base/changes.txt +++ b/base/changes.txt @@ -6,6 +6,14 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ================================================================================ +================================================================================ +All changes above are only part of the development branch for the next release. +================================================================================ + +######################### +# 2022-11-01 Release +######################### + 2022-10-26 Joseph Wright * ltfinal.dtx: @@ -124,10 +132,6 @@ are not part of the distribution. * cmfonts.fdd Add font definitions for slanted small caps (gh/782) -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2022-06-01 PL5 Release ######################### diff --git a/base/ltvers.dtx b/base/ltvers.dtx index 37b91d223..e1282139e 100644 --- a/base/ltvers.dtx +++ b/base/ltvers.dtx @@ -112,10 +112,10 @@ % %\edef\latexreleaseversion %<*2ekernel|latexrelease> - {2022-06-01} + {2022-11-01} % %<*2ekernel> -\def\patch@level{5} +\def\patch@level{0} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/required/graphics/README.md b/required/graphics/README.md index 5ccff78a3..8c89a0611 100644 --- a/required/graphics/README.md +++ b/required/graphics/README.md @@ -1,7 +1,7 @@ The LaTeX `graphics` bundle =========================== -Release 2022-06-01 +Release 2022-11-01 Overview -------- diff --git a/required/graphics/changes.txt b/required/graphics/changes.txt index 313d3d429..55dde0358 100644 --- a/required/graphics/changes.txt +++ b/required/graphics/changes.txt @@ -8,6 +8,10 @@ are not part of the distribution. All changes above are only part of the development branch for the next release. ================================================================================ +######################### +# 2022-11-01 Release +######################### + 2022-07-25 Frank Mittelbach * mathcolor.dtx (section{The Implementation}): diff --git a/required/latex-lab/README.md b/required/latex-lab/README.md index 410292cda..7f1a27579 100644 --- a/required/latex-lab/README.md +++ b/required/latex-lab/README.md @@ -1,6 +1,6 @@ # LaTeX laboratory -Release 2022-06-01 pre-release 4 +Release 2022-11-01 ## Overview diff --git a/required/tools/README.md b/required/tools/README.md index 5c8ee4cc3..5dba58d23 100644 --- a/required/tools/README.md +++ b/required/tools/README.md @@ -1,7 +1,7 @@ The LaTeX `tools` bundle ======================== -Release 2022-06-01 +Release 2022-11-01 Overview -------- diff --git a/required/tools/changes.txt b/required/tools/changes.txt index a92d26ad5..7b3e63dca 100644 --- a/required/tools/changes.txt +++ b/required/tools/changes.txt @@ -5,16 +5,20 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +================================================================================ +All changes above are only part of the development branch for the next release. +================================================================================ + +######################### +# 2022-11-01 Release +######################### + 2022-09-04 Frank Mittelbach * array.dtx (section{The macros \texttt{\textbackslash @classz}): Test against \strutbox height to determine if an m-cell contains only a single line (gh/766) -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2022-06-01 Release #########################