diff options
author | Karl Berry <karl@freefriends.org> | 2022-03-10 21:24:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-03-10 21:24:58 +0000 |
commit | c99fbd6f5717513c4b6b7e37ad3a3d676e08b49c (patch) | |
tree | 24f4c5f8bb91c9a93b4937909ee8cad3199aec44 /Master/texmf-dist/doc/latex | |
parent | 356136ce175be2673f9fec40d48937ae6d494605 (diff) |
projlib (10mar22)
git-svn-id: svn://tug.org/texlive/trunk@62600 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
9 files changed, 8 insertions, 3187 deletions
diff --git a/Master/texmf-dist/doc/latex/projlib/README.md b/Master/texmf-dist/doc/latex/projlib/README.md index 91c7d4dcfe0..3b5a6fbcf87 100644 --- a/Master/texmf-dist/doc/latex/projlib/README.md +++ b/Master/texmf-dist/doc/latex/projlib/README.md @@ -2,15 +2,17 @@ # ProjLib Toolkit -The bundle is dated 2022/02/27 +The bundle is dated 2022/03/09 Old modules are still dated 2021/12/16 and will *not* be modified. When all the new modules are finished, old files shall be removed from this bundle. ## **Important note** -The whole project is being rewritten with `expl3`. New modules have the name with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Some basically finished new modules are included in the bundle but are not yet documented. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc. +The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc. -The newly added modules include: +The current `ProjLib.sty` is the new `expl3` version, the old one has been renamed to `PJLtoolkit.sty`. + +The new modules are: - projlib-author - projlib-datetime - projlib-draft @@ -19,9 +21,12 @@ The newly added modules include: - projlib-logo - projlib-math - projlib-paper +- projlib-theorem When all these modules are finished, the documentation will be updated accordingly. +Below are the old README. + --- > **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French). diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-author.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-author.sty deleted file mode 100644 index ef0906d249f..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-author.sty +++ /dev/null @@ -1,312 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-author} - {2022/02/24} {} - {Enhanced author information block} - -\keys_define:nn { projlib-author } - { - , amsfashion .bool_set:N = \l__projlib_author_amsfashion_bool - , amsfashion .initial:n = { false } - , ams-fashion .bool_set:N = \l__projlib_author_amsfashion_bool - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-author } - -\cs_if_exist:NT \subjclass { \endinput } - -\tl_new:N \g__projlib_author_font_author_tl -\tl_new:N \g__projlib_author_font_address_tl -\tl_new:N \g__projlib_author_font_curraddr_tl -\tl_new:N \g__projlib_author_font_email_tl - -\tl_gset:Nn \g__projlib_author_font_author_tl { \normalsize \normalfont \scshape } -\tl_gset:Nn \g__projlib_author_font_address_tl { \small \normalfont \itshape } -\tl_gset:Nn \g__projlib_author_font_curraddr_tl { \small \normalfont \itshape } -\tl_gset:Nn \g__projlib_author_font_email_tl { \small \normalfont \ttfamily } - -\dim_new:N \g__projlib_author_length_innersep_dim -\dim_new:N \g__projlib_author_length_sep_dim -\dim_new:N \g__projlib_author_length_aftersep_dim - -\dim_set:Nn \g__projlib_author_length_innersep_dim { 0.3 \baselineskip } -\dim_set:Nn \g__projlib_author_length_sep_dim { 0.5 \baselineskip } -\dim_set:Nn \g__projlib_author_length_aftersep_dim { 0.3 \baselineskip } - - -\bool_new:N \g__projlib_author_affil_already_exist_bool - -\NewCommandCopy \projlib_author_backup_author:w \author -\RenewDocumentCommand \author { m } - { - \hook_gput_code:nnn { cmd/@author/after } { projlib-author } - { - \phantom {A} \\[-\baselineskip] - \skip_vertical:n { \g__projlib_author_length_sep_dim } - { \g__projlib_author_font_author_tl #1 } - \bool_set_false:N \g__projlib_author_affil_already_exist_bool - \\ \phantom {} - } - } - -\ProvideDocumentCommand \address { m } - { - \hook_gput_code:nnn { cmd/@author/after } { projlib-author } - { - \phantom {A} \\[-\baselineskip] - \bool_if:NF \g__projlib_author_affil_already_exist_bool - { - \skip_vertical:n { \g__projlib_author_length_innersep_dim } - } - \bool_set_true:N \g__projlib_author_affil_already_exist_bool - { \g__projlib_author_font_address_tl #1 } - \\ \phantom {} - } - } - -\ProvideDocumentCommand \curraddr { m } - { - \hook_gput_code:nnn { cmd/@author/after } { projlib-author } - { - \phantom {A} \\[-\baselineskip] - \bool_if:NF \g__projlib_author_affil_already_exist_bool - { - \skip_vertical:n { \g__projlib_author_length_innersep_dim } - } - \bool_set_true:N \g__projlib_author_affil_already_exist_bool - { \g__projlib_author_font_curraddr_tl #1 } - \\ \phantom {} - } - } - -\ProvideDocumentCommand \email { m } - { - \hook_gput_code:nnn { cmd/@author/after } { projlib-author } - { - \phantom {A} \\[-\baselineskip] - \bool_if:NF \g__projlib_author_affil_already_exist_bool - { - \skip_vertical:n { \g__projlib_author_length_innersep_dim } - } - \bool_set_true:N \g__projlib_author_affil_already_exist_bool - { \g__projlib_author_font_email_tl #1 } - \\ \phantom {} - } - } - -\RequirePackage { regexpatch } - -\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {} { \FAIL } -\xpatchcmd { \@maketitle } { \end{tabular} } {} {} { \FAIL } - -\tl_set:cn {@author} {} - -\hook_gput_code:nnn { cmd/@maketitle/before } { projlib-author } - { - \hook_gput_code:nnn { cmd/@author/before } { projlib-author } - { - \skip_vertical:n { - \g__projlib_author_length_sep_dim } - } - \hook_gput_code:nnn { cmd/@author/after } { projlib-author } - { - \skip_vertical:n { - \baselineskip } - \bool_if:NT \g__projlib_author_affil_already_exist_bool - { - \skip_vertical:n { \g__projlib_author_length_aftersep_dim } - } - } - } - -\bool_if:NT \l__projlib_author_amsfashion_bool - { - \RequirePackage{ projlib-language } - - \tl_new:N \g_projlib_author_keywordsname_style_tl - \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {} - - \projlib_langauge_define_multilingual_text:Nn \keywordsname - { - EN = \textsc{Key~words~and~phrases} , - FR = \textsc{Mots~et~phrases~clés} , - DE = \textsc{Schlüsselwörter~und~Phrasen} , - IT = \textsc{Parole~e~frasi~chiave} , - PT = \textsc{Palavras~e~frases~chave} , - BR = \textsc{Palavras~e~frases~chave} , - ES = \textsc{Palabras~y~frases~clave} , - CN = 关键词 , - TC = 關鍵詞 , - JP = キーワード , - RU = Ключевые~слова~и~фразы , - } - - \tl_new:N \g__projlib_author_keywords_tl - \NewDocumentCommand \keywords { m } - { - \tl_gset:Nn \g__projlib_author_keywords_tl { #1 } - } - - \tl_new:N \g__projlib_author_dedicatory_tl - \NewDocumentCommand \dedicatory { m } - { - \tl_gset:Nn \g__projlib_author_dedicatory_tl { #1 } - } - - \hook_gput_code:nnn { begindocument/before } { projlib-author } - { - \NewCommandCopy \projlib_author_backup_footnotemark: \footnotemark - \tl_gset:Nn \footnotemark {} - - \NewCommandCopy \projlib_author_backup_thanks:w \thanks - \cs_undefine:N \thanks - - % measure the width of "*" - \hbox_set:Nn \l_tmpa_box { * } - \dim_const:Nn \c__projlib_author_length_width_of_asterisk_dim { \box_wd:N \l_tmpa_box } - - \cs_new_nopar:Nn \projlib_author_pre_thanks:n - { - \projlib_author_backup_thanks:w - { - \skip_horizontal:n { - \c__projlib_author_length_width_of_asterisk_dim } - #1 - } - } - - \NewDocumentCommand \thanks { m } - { - \tl_if_blank:eF { #1 } - { - \hook_gput_code:nnn { cmd/@title/after } { projlib-author } - { - \projlib_author_pre_thanks:n { #1 } - } - } - } - - \NewCommandCopy \projlib_author_backup_my_author:w \author - \RenewDocumentCommand \author { m } - { - \projlib_author_backup_my_author:w - { - \RenewCommandCopy \footnotemark \projlib_author_backup_footnotemark: - \RenewCommandCopy \thanks \projlib_author_backup_thanks:w - #1 - \cs_undefine:N \footnotemark - } - } - } - - \NewCommandCopy \projlib_author_backup_abstract: \abstract - \NewCommandCopy \projlib_author_backup_endabstract: \endabstract - \cs_undefine:N \abstract - \cs_undefine:N \endabstract - - \bool_new:N \g__projlib_author_already_maketitle_bool - \bool_gset_false:N \g__projlib_author_already_maketitle_bool - \bool_new:N \g__projlib_author_abstract_before_maketitle_bool - \bool_gset_false:N \g__projlib_author_abstract_before_maketitle_bool - - \RequirePackage{ scontents } - \newenvsc{abstract}[store-env=projlib-author-abstract,print-env=false] - - \hook_gput_code:nnn { env/abstract/after } { projlib-author } - { - \bool_if:NTF \g__projlib_author_already_maketitle_bool - { - \projlib_author_backup_abstract: - \getstored{projlib-author-abstract} - \projlib_author_backup_endabstract: - } - { - \bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool - } - } - - \hook_gput_code:nnn { begindocument/before } { projlib-author } - { - \makeatletter - \xpatchcmd { \@maketitle } { \@date } - { - \tl_if_blank:eTF { \@date } { \skip_vertical:n { -2 \baselineskip } } { \@date } - \tl_if_blank:eF { \g__projlib_author_dedicatory_tl } - { - \tl_if_blank:eT { \@date } { \skip_vertical:n { 2 \baselineskip } } - \par - \skip_vertical:n { -\parskip } - \skip_vertical:n { \baselineskip } - \textit{ \g__projlib_author_dedicatory_tl } - \tl_if_blank:eT { \@date } - { - \skip_vertical:n { -\parskip } - \skip_vertical:n { \dim_eval:n { -1.7 \baselineskip } } - } - } - } {} { \FAIL } - \makeatother - - \hook_gput_code:nnn { cmd/maketitle/before } { projlib-author } - { - \tl_if_blank:eF { \g__projlib_author_keywords_tl } - { - \projlib_author_pre_thanks:n - { - \group_begin: - \g_projlib_author_keywordsname_style_tl - \keywordsname . - \group_end: - \c_space_tl - \g__projlib_author_keywords_tl - } - } - } - - \hook_gput_code:nnn { cmd/maketitle/after } { projlib-author } - { - \bool_if:NT \g__projlib_author_abstract_before_maketitle_bool - { - \projlib_author_backup_abstract: - \getstored{projlib-author-abstract} - \projlib_author_backup_endabstract: - } - \cs_undefine:N \address - \cs_undefine:N \curraddr - \cs_undefine:N \email - \cs_undefine:N \dedicatory - \cs_undefine:N \keywords - \bool_gset_true:N \g__projlib_author_already_maketitle_bool - } - } - - \tl_new:N \l_projlib_author_subjclassname_tl - \tl_new:N \l_projlib_author_subjclass_tl - \msg_new:nnn { projlib-author } - { unknown-msc-edition } - { Unknown~edition~(#1)~of~Mathematics~Subject~Classification;~using~'2020' } - \NewDocumentCommand \subjclass { O{2020} m } - { - \tl_set:Nn \l_projlib_author_subjclass_tl { #2 } - \tl_if_exist:cTF { subjclassname_#1 } - { - \tl_set:Nn \l_projlib_author_subjclassname_tl { \tl_use:c { subjclassname_#1 } } - } - { - \msg_warning:nnn { projlib-author } { unknown-msc-edition } { #1 } - \tl_set:Nn \l_projlib_author_subjclassname_tl { \tl_use:c { subjclassname_2020 } } - } - \projlib_author_pre_thanks:n - { - \textit{ \l_projlib_author_subjclassname_tl . } - \enspace - \l_projlib_author_subjclass_tl . - } - } - \tl_const:cn { subjclassname_1991 } { \textup{1991}~Mathematics~Subject~Classification } - \tl_const:cn { subjclassname_2000 } { \textup{2000}~Mathematics~Subject~Classification } - \tl_const:cn { subjclassname_2010 } { \textup{2010}~Mathematics~Subject~Classification } - \tl_const:cn { subjclassname_2020 } { \textup{2020}~Mathematics~Subject~Classification } - } - -\endinput -%% -%% End of file `projlib-author.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-datetime.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-datetime.sty deleted file mode 100644 index d96d31d93b3..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-datetime.sty +++ /dev/null @@ -1,1645 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-datetime} - {2022/02/24} {} - {Convert numeric date-time string to natural language} - -\tl_new:N \g__projlib_datetime_input_format_tl -\tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } - -\keys_define:nn { projlib-datetime } - { - , plain .bool_set:N = \l__projlib_datetime_plain_bool - , plain .initial:n = { false } - , year-month-day .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-day-year .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { month-day-year } } - , day-month-year .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , year-month .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-day .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-year .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , day-month .code:n = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-datetime } - -\bool_if:NT \l__projlib_datetime_plain_bool - { - \hook_gput_code:nnn { begindocument/before } { projlib-datetime } - { - \cs_set:Nn \projlib_datetime_text_superscript:n { #1 } - } - } - -\tl_new:N \l__projlib_datetime_output_format_tl -\keys_define:nn { projlib-datetime-command } - { - , year-month-day .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-day-year .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { month-day-year } } - , day-month-year .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , year-month .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-day .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - , month-year .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , day-month .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - , only-year-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year-month } } - , only-month-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } } - , only-year .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } } - , only-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } } - , only-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } } - , unknown .code:n = {} - } - -\msg_new:nnnn { projlib-datetime } - { non-supported-date-format } - { The~date~format~"#1"~is~not~supported. } - { The~only~formats~available~are~"year-month-day",~ "month-day-year"~and~"day-month-year". } - -\cs_new:Nn \projlib_datetime_set_input_format:n - { - \str_case:nnF { #1 } - { - { year-month-day } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } } - { month-day-year } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { month-day-year } } - { day-month-year } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } } - } - { - \msg_error:nnn { projlib-datetime } { non-supported-date-format } { #1 } - } - } - -\NewDocumentCommand \ProjLibSetDatetimeInputFormat { m } - { - \projlib_datetime_set_input_format:n { #1 } - } - - -\seq_new:N \l__projlib_datetime_date_seq - -\cs_new_protected:Nn \projlib_datetime_text_superscript:n - { - \group_begin: - \small - \textsuperscript { #1 } - \group_end: - } - - -\cs_new:Nn \__projlib_datetime_today:n - { - \str_case_e:nnF { \l__projlib_datetime_output_format_tl } - { - { only-year-month } - { - \cs_if_exist_use:c { projlib_datetime_display_year_month #1 _ \languagename :nn } - { \int_use:N \c_sys_year_int } - { \int_use:N \c_sys_month_int } - } - { only-month-day } - { - \cs_if_exist_use:c { projlib_datetime_display_month_day #1 _ \languagename :nn } - { \int_use:N \c_sys_month_int } - { \int_use:N \c_sys_day_int } - } - { only-year } - { - \cs_if_exist_use:cT { projlib_datetime_display_year #1 _ \languagename :n } - { - { \int_use:N \c_sys_year_int } - } - } - { only-month } - { - \cs_if_exist_use:cT { projlib_datetime_display_month #1 _ \languagename :n } - { - { \int_use:N \c_sys_month_int } - } - } - { only-day } - { - \cs_if_exist_use:cT { projlib_datetime_display_day #1 _ \languagename :n } - { - { \int_use:N \c_sys_day_int } - } - } - } - { - \cs_if_exist_use:c { projlib_datetime_display_year_month_day #1 _ \languagename :nnn } - { \int_use:N \c_sys_year_int } - { \int_use:N \c_sys_month_int } - { \int_use:N \c_sys_day_int } - } - } - -\NewDocumentCommand \ProjLibtoday { O{} } - { - \group_begin: - \keys_set:nn { projlib-datetime-command } { #1 } - \__projlib_datetime_today:n {} - \group_end: - } - -\NewDocumentCommand \ProjLibToday { O{} } - { - \group_begin: - \keys_set:nn { projlib-datetime-command } { #1 } - \__projlib_datetime_today:n { _uppercase } - \group_end: - } - -\ProvideDocumentCommand \Thedate {} { \ProjLibdate } -\ProvideDocumentCommand \TheDate {} { \ProjLibDate } - - -\cs_new_protected:Nn \projlib_datetime_display_year_month_day:n - { - \__projlib_datetime_display_year_month_day:en { #1 } {} - } - -\cs_new_protected:Nn \projlib_datetime_display_year_month_day_uppercase:n - { - \__projlib_datetime_display_year_month_day:en { #1 } { _uppercase } - } - -\cs_new_protected:Nn \__projlib_datetime_display_year_month_day:nn - { - \regex_match:nnTF { \A \d{4}-\d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_year_month_day #2 _ \languagename :nnn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % day - } - { - \regex_match:nnTF { \A \d{4}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month - } - { - \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day - } - { - #1 - } - } - } - } -\cs_generate_variant:Nn \__projlib_datetime_display_year_month_day:nn { en } - - -\cs_new_protected:Nn \projlib_datetime_display_month_day_year:n -{ - \__projlib_datetime_display_month_day_year:en { #1 } {} -} - -\cs_new_protected:Nn \projlib_datetime_display_month_day_year_uppercase:n -{ - \__projlib_datetime_display_month_day_year:en { #1 } { _uppercase } -} - -\cs_new_protected:Nn \__projlib_datetime_display_month_day_year:nn -{ - \regex_match:nnTF { \A \d{1,2}-\d{1,2}-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_month_day_year #2 _ \languagename :nnn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day - } - { - \regex_match:nnTF { \A \d{1,2}-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month - } - { - \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day - } - { - #1 - } - } - } -} -\cs_generate_variant:Nn \__projlib_datetime_display_month_day_year:nn { en } - - -\cs_new_protected:Nn \projlib_datetime_display_day_month_year:n -{ - \__projlib_datetime_display_day_month_year:en { #1 } {} -} - -\cs_new_protected:Nn \projlib_datetime_display_day_month_year_uppercase:n -{ - \__projlib_datetime_display_day_month_year:en { #1 } { _uppercase } -} - -\cs_new_protected:Nn \__projlib_datetime_display_day_month_year:nn -{ - \regex_match:nnTF { \A \d{1,2}-\d{1,2}-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_day_month_year #2 _ \languagename :nnn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % day - } - { - \regex_match:nnTF { \A \d{1,2}-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % year - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month - } - { - \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % day - } - { - #1 - } - } - } -} -\cs_generate_variant:Nn \__projlib_datetime_display_day_month_year:nn { en } - - -\cs_new_protected:Nn \__projlib_datetime_date_parse_year_month_day:n - { - \regex_match:nnTF { \A \d{4}-\d{1,2}(|-\d{1,2}) \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - } - { - \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \seq_put_left:Nn \l__projlib_datetime_date_seq {} - } - } - } - -\cs_new_protected:Nn \__projlib_datetime_date_parse_month_day_year:n - { - \regex_match:nnTF { \A \d{1,2}(|-\d{1,2})-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \seq_pop_right:NN \l__projlib_datetime_date_seq \l_tmpa_tl - \seq_put_left:NV \l__projlib_datetime_date_seq \l_tmpa_tl - } - { - \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \seq_put_left:Nn \l__projlib_datetime_date_seq {} - } - } - } - -\cs_new_protected:Nn \__projlib_datetime_date_parse_day_month_year:n - { - \regex_match:nnTF { \A \d{1,2}(|-\d{1,2})-\d{4} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \seq_reverse:N \l__projlib_datetime_date_seq - } - { - \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 } - { - \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 } - \seq_reverse:N \l__projlib_datetime_date_seq - \seq_put_left:Nn \l__projlib_datetime_date_seq {} - } - } - } - -\cs_new:Nn \__projlib_datetime_input_format_to_str: - { - \str_case_e:nn { \g__projlib_datetime_input_format_tl } - { - { year-month-day } { year_month_day } - { month-day-year } { month_day_year } - { day-month-year } { day_month_year } - } - } - -\cs_new_protected:Nn \__projlib_datetime_display_date_according_to_format:nn - { - \cs_if_exist_use:c { __projlib_datetime_date_parse_ \__projlib_datetime_input_format_to_str: :n } { #1 } - \str_case_e:nnF { \l__projlib_datetime_output_format_tl } - { - { only-year-month } - { - \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } - } - { only-month-day } - { - \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } - } - { only-year } - { - \cs_if_exist_use:c { projlib_datetime_display_year #2 _ \languagename :n } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } - } - { only-month } - { - \cs_if_exist_use:c { projlib_datetime_display_month #2 _ \languagename :n } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } - } - { only-day } - { - \cs_if_exist_use:c { projlib_datetime_display_day #2 _ \languagename :n } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } - } - } - { - \cs_if_exist_use:c { projlib_datetime_display_ \__projlib_datetime_input_format_to_str: #2 :n } { #1 } - } - } - -\NewDocumentCommand \ProjLibdate { O{} m } - { - \group_begin: - \keys_set:nn { projlib-datetime-command } { #1 } - \__projlib_datetime_display_date_according_to_format:nn { #2 } {} - \group_end: - } - -\NewDocumentCommand \ProjLibDate { O{} m } - { - \group_begin: - \keys_set:nn { projlib-datetime-command } { #1 } - \__projlib_datetime_display_date_according_to_format:nn { #2 } { _uppercase } - \group_end: - } - - -\int_new:N \l__projlib_datetime_day_of_week_day_int -\int_new:N \l__projlib_datetime_day_of_week_month_int -\int_new:N \l__projlib_datetime_day_of_week_year_int -\int_new:N \l__projlib_datetime_day_of_week_century_int -\int_new:N \l__projlib_datetime_day_of_week_result_int -\cs_new:Nn \__projlib_datetime_calculate_day_of_week_with_year_month_day:nnn - { - \int_set:Nn \l__projlib_datetime_day_of_week_day_int { #3 } - \int_compare:nNnTF { #2 } < { 3 } - { - \int_set:Nn \l__projlib_datetime_day_of_week_year_int { \int_eval:n { #1 - 1 } } - } - { - \int_set:Nn \l__projlib_datetime_day_of_week_year_int { #1 } - } - \int_set:Nn \l__projlib_datetime_day_of_week_century_int { \int_eval:n { \l__projlib_datetime_day_of_week_year_int / 100 } } - \int_set:Nn \l__projlib_datetime_day_of_week_year_int { \int_mod:nn { \l__projlib_datetime_day_of_week_year_int } { 100 } } - \int_set:Nn \l__projlib_datetime_day_of_week_month_int - { - \int_case:nnF { #2 } - { - { 1 } { 0 } - { 2 } { 3 } - { 3 } { 2 } - { 4 } { 5 } - { 5 } { 0 } - { 6 } { 3 } - { 7 } { 5 } - { 8 } { 1 } - { 9 } { 4 } - { 10 } { 6 } - { 11 } { 2 } - { 12 } { 4 } - } { 0 } - } - \int_set:Nn \l__projlib_datetime_day_of_week_result_int - { - \int_eval:n - { - \l__projlib_datetime_day_of_week_day_int - + \l__projlib_datetime_day_of_week_month_int - +\l__projlib_datetime_day_of_week_year_int - + \int_div_truncate:nn { \l__projlib_datetime_day_of_week_year_int } { 4 } - + \int_div_truncate:nn { \l__projlib_datetime_day_of_week_century_int } { 4 } - - 2 * \l__projlib_datetime_day_of_week_century_int - } - } - \int_set:Nn \l__projlib_datetime_day_of_week_result_int - { - \int_mod:nn { \l__projlib_datetime_day_of_week_result_int } { 7 } - } - \int_compare:nNnT { \l__projlib_datetime_day_of_week_result_int } < { 1 } - { - \int_set:Nn \l__projlib_datetime_day_of_week_result_int - { - \int_eval:n { \l__projlib_datetime_day_of_week_result_int + 7 } - } - } - } - - -\cs_new_protected:Nn \projlib_datetime_display_week:n - { - \__projlib_datetime_display_week_according_to_format:en { #1 } {} - } - -\cs_new_protected:Nn \projlib_datetime_display_week_uppercase:n - { - \__projlib_datetime_display_week_according_to_format:en { #1 } { _uppercase } - } - -\cs_new_protected:Nn \__projlib_datetime_display_week_according_to_format:nn - { - \projlib_datetime_calculate_week_according_to_format:n { #1 } - \cs_if_exist_use:c { projlib_datetime_display_week #2 _ \languagename :n } { \l__projlib_datetime_day_of_week_result_int } - } -\cs_generate_variant:Nn \__projlib_datetime_display_week_according_to_format:nn { en } - - -\cs_new_protected:Nn \projlib_datetime_calculate_week_according_to_format:n - { - \cs_if_exist_use:c { __projlib_datetime_date_parse_ \__projlib_datetime_input_format_to_str: :n } { #1 } - \__projlib_datetime_calculate_day_of_week_with_year_month_day:nnn - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } - { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } - } - - -% For each language, there are 7 groups of functions: -% 1) \projlib_datetime_display_year_month_day_<languagename>:nnn -% \projlib_datetime_display_year_month_day_uppercase_<languagename>:nnn -% 2) \projlib_datetime_display_year_month_<languagename>:nn -% \projlib_datetime_display_year_month_uppercase_<languagename>:nn -% 3) \projlib_datetime_display_month_day_<languagename>:nn -% \projlib_datetime_display_month_day_uppercase_<languagename>:nn -% 4) \projlib_datetime_display_year_<languagename>:n -% \projlib_datetime_display_year_uppercase_<languagename>:n -% 5) \projlib_datetime_display_month_<languagename>:n -% \projlib_datetime_display_month_uppercase_<languagename>:n -% 6) \projlib_datetime_display_day_<languagename>:n -% \projlib_datetime_display_day_uppercase_<languagename>:n -% 7) \projlib_datetime_display_week_<languagename>:n -% \projlib_datetime_display_week_uppercase_<languagename>:n - -\cs_new:Nn \projlib_datetime_display_year_month_day_english:nnn - { - \projlib_datetime_display_month_day_english:nn { #2 } { #3 } - ,\nobreakspace - \projlib_datetime_display_year_english:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_english:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_english:nnn - { - \projlib_datetime_display_month_day_uppercase_english:nn { #2 } { #3 } - ,\nobreakspace - \projlib_datetime_display_year_english:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_english:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_english:nn - { - \projlib_datetime_display_month_english:n { #2 } - \nobreakspace - \projlib_datetime_display_year_english:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_english:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_english:nn - { - \projlib_datetime_display_month_uppercase_english:n { #2 } - \nobreakspace - \projlib_datetime_display_year_english:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_english:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_english:nn - { - \projlib_datetime_display_month_english:n { #1 } - \nobreakspace - \projlib_datetime_display_day_english:n { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_english:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_english:nn - { - \projlib_datetime_display_month_uppercase_english:n { #1 } - \nobreakspace - \projlib_datetime_display_day_english:n { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_english:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_english:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_english:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_english:n - { - \int_case:nnF { #1 } - { - { 1 } { January } - { 2 } { February } - { 3 } { March } - { 4 } { April } - { 5 } { May } - { 6 } { June } - { 7 } { July } - { 8 } { August } - { 9 } { September } - { 10 } { October } - { 11 } { November } - { 12 } { December } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_english:n - { - \projlib_datetime_display_month_english:n { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_english:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_english:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_english:n - { - \int_case:nnF { #1 } - { - { 1 } { Monday } - { 2 } { Tuesday } - { 3 } { Wednesday } - { 4 } { Thursday } - { 5 } { Friday } - { 6 } { Saturday } - { 7 } { Sunday } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_english:n - { - \projlib_datetime_display_week_english:n { #1 } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_french:nnn - { - \projlib_datetime_display_month_day_french:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_french:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_french:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_french:nnn - { - \projlib_datetime_display_month_day_uppercase_french:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_french:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_french:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_french:nn - { - \projlib_datetime_display_month_french:n { #2 } - \nobreakspace - \projlib_datetime_display_year_french:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_french:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_french:nn - { - \projlib_datetime_display_month_uppercase_french:n { #2 } - \nobreakspace - \projlib_datetime_display_year_french:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_french:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_french:nn - { - \projlib_datetime_display_day_french:n { #2 } - \nobreakspace - \projlib_datetime_display_month_french:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_french:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_french:nn - { - \projlib_datetime_display_month_day_french:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_french:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_french:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_french:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_french:n - { - \int_case:nnF { #1 } - { - { 1 } { janvier } - { 2 } { février } - { 3 } { mars } - { 4 } { avril } - { 5 } { mai } - { 6 } { juin } - { 7 } { juillet } - { 8 } { août } - { 9 } { septembre } - { 10 } { octobre } - { 11 } { novembre } - { 12 } { décembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_french:n - { - \int_case:nnF { #1 } - { - { 1 } { Janvier } - { 2 } { Février } - { 3 } { Mars } - { 4 } { Avril } - { 5 } { Mai } - { 6 } { Juin } - { 7 } { Juillet } - { 8 } { Août } - { 9 } { Septembre } - { 10 } { Octobre } - { 11 } { Novembre } - { 12 } { Décembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_french:n - { - \int_case:nnF { #1 } - { - { 1 } { 1 \projlib_datetime_text_superscript:n { er } } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_uppercase_french:n - { - \int_case:nnF { #1 } - { - { 1 } { 1 \projlib_datetime_text_superscript:n { er } } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_week_french:n - { - \int_case:nnF { #1 } - { - { 1 } { lundi } - { 2 } { mardi } - { 3 } { mercredi } - { 4 } { jeudi } - { 5 } { vendredi } - { 6 } { samedi } - { 7 } { dimanche } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_french:n - { - \int_case:nnF { #1 } - { - { 1 } { Lundi } - { 2 } { Mardi } - { 3 } { Mercredi } - { 4 } { Jeudi } - { 5 } { Vendredi } - { 6 } { Samedi } - { 7 } { Dimanche } - } { ??? } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_ngerman:nnn - { - \projlib_datetime_display_month_day_ngerman:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_ngerman:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_ngerman:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_ngerman:nnn - { - \projlib_datetime_display_month_day_uppercase_ngerman:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_ngerman:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_ngerman:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_ngerman:nn - { - \projlib_datetime_display_month_ngerman:n { #2 } - \nobreakspace - \projlib_datetime_display_year_ngerman:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_ngerman:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_ngerman:nn - { - \projlib_datetime_display_month_uppercase_ngerman:n { #2 } - \nobreakspace - \projlib_datetime_display_year_ngerman:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_ngerman:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_ngerman:nn - { - \projlib_datetime_display_day_ngerman:n { #2 } - .\nobreakspace - \projlib_datetime_display_month_ngerman:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_ngerman:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_ngerman:nn - { - \projlib_datetime_display_month_day_ngerman:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_ngerman:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_ngerman:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_ngerman:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_ngerman:n - { - \int_case:nnF { #1 } - { - { 1 } { Januar } - { 2 } { Februar } - { 3 } { März } - { 4 } { April } - { 5 } { Mai } - { 6 } { Juni } - { 7 } { Juli } - { 8 } { August } - { 9 } { September } - { 10 } { Oktober } - { 11 } { November } - { 12 } { Dezember } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_ngerman:n - { - \int_case:nnF { #1 } - { - { 1 } { Januar } - { 2 } { Februar } - { 3 } { März } - { 4 } { April } - { 5 } { Mai } - { 6 } { Juni } - { 7 } { Juli } - { 8 } { August } - { 9 } { September } - { 10 } { Oktober } - { 11 } { November } - { 12 } { Dezember } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_ngerman:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_ngerman:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_ngerman:n - { - \int_case:nnF { #1 } - { - { 1 } { Montag } - { 2 } { Dienstag } - { 3 } { Mittwoch } - { 4 } { Donnerstag } - { 5 } { Freitag } - { 6 } { Samstag } - { 7 } { Sonntag } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_ngerman:n - { - \projlib_datetime_display_week_ngerman:n { #1 } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_italian:nnn - { - \projlib_datetime_display_month_day_italian:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_italian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_italian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_italian:nnn - { - \projlib_datetime_display_month_day_uppercase_italian:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_italian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_italian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_italian:nn - { - \projlib_datetime_display_month_italian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_italian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_italian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_italian:nn - { - \projlib_datetime_display_month_uppercase_italian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_italian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_italian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_italian:nn - { - \projlib_datetime_display_day_italian:n { #2 } - \nobreakspace - \projlib_datetime_display_month_italian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_italian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_italian:nn - { - \projlib_datetime_display_month_day_italian:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_italian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_italian:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_italian:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_italian:n - { - \int_case:nnF { #1 } - { - { 1 } { gennaio } - { 2 } { febbraio } - { 3 } { marzo } - { 4 } { aprile } - { 5 } { maggio } - { 6 } { giugno } - { 7 } { luglio } - { 8 } { agosto } - { 9 } { settembre } - { 10 } { ottobre } - { 11 } { novembre } - { 12 } { dicembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_italian:n - { - \int_case:nnF { #1 } - { - { 1 } { Gennaio } - { 2 } { Febbraio } - { 3 } { Marzo } - { 4 } { Aprile } - { 5 } { Maggio } - { 6 } { Giugno } - { 7 } { Luglio } - { 8 } { Agosto } - { 9 } { Settembre } - { 10 } { Ottobre } - { 11 } { Novembre } - { 12 } { Dicembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_italian:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_italian:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_italian:n - { - \int_case:nnF { #1 } - { - { 1 } { lunedì } - { 2 } { martedì } - { 3 } { mercoledì } - { 4 } { giovedì } - { 5 } { venerdì } - { 6 } { sabato } - { 7 } { domenica } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_italian:n - { - \int_case:nnF { #1 } - { - { 1 } { Lunedì } - { 2 } { Martedì } - { 3 } { Mercoledì } - { 4 } { Giovedì } - { 5 } { Venerdì } - { 6 } { Sabato } - { 7 } { Domenica } - } { ??? } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_portuguese:nnn - { - \projlib_datetime_display_month_day_portuguese:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_portuguese:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_portuguese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_portuguese:nnn - { - \projlib_datetime_display_month_day_uppercase_portuguese:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_portuguese:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_portuguese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_portuguese:nn - { - \projlib_datetime_display_month_portuguese:n { #2 } - \nobreakspace - \projlib_datetime_display_year_portuguese:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_portuguese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_portuguese:nn - { - \projlib_datetime_display_month_uppercase_portuguese:n { #2 } - \nobreakspace - \projlib_datetime_display_year_portuguese:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_portuguese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_portuguese:nn - { - \projlib_datetime_display_day_portuguese:n { #2 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_month_uppercase_portuguese:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_portuguese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_portuguese:nn - { - \projlib_datetime_display_month_day_portuguese:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_portuguese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_portuguese:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_portuguese:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_portuguese:n - { - \int_case:nnF { #1 } - { - { 1 } { janeiro } - { 2 } { fevereiro } - { 3 } { março } - { 4 } { abril } - { 5 } { maio } - { 6 } { junho } - { 7 } { julho } - { 8 } { agosto } - { 9 } { setembro } - { 10 } { outubro } - { 11 } { novembro } - { 12 } { dezembro } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_portuguese:n - { - \int_case:nnF { #1 } - { - { 1 } { Janeiro } - { 2 } { Fevereiro } - { 3 } { Março } - { 4 } { Abril } - { 5 } { Maio } - { 6 } { Junho } - { 7 } { Julho } - { 8 } { Agosto } - { 9 } { Setembro } - { 10 } { Outubro } - { 11 } { Novembro } - { 12 } { Dezembro } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_portuguese:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_portuguese:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_portuguese:n - { - \int_case:nnF { #1 } - { - { 1 } { segunda-feira } - { 2 } { terça-feira } - { 3 } { quarta-feira } - { 4 } { quinta-feira } - { 5 } { sexta-feira } - { 6 } { sábado } - { 7 } { domingo } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_portuguese:n - { - \int_case:nnF { #1 } - { - { 1 } { Segunda-feira } - { 2 } { Terça-feira } - { 3 } { Quarta-feira } - { 4 } { Quinta-feira } - { 5 } { Sexta-feira } - { 6 } { Sábado } - { 7 } { Domingo } - } { ??? } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_brazilian:nnn - { - \projlib_datetime_display_month_day_brazilian:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_brazilian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_brazilian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_brazilian:nnn - { - \projlib_datetime_display_month_day_uppercase_brazilian:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_brazilian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_brazilian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_brazilian:nn - { - \projlib_datetime_display_month_brazilian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_brazilian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_brazilian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_brazilian:nn - { - \projlib_datetime_display_month_uppercase_brazilian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_brazilian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_brazilian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_brazilian:nn - { - \projlib_datetime_display_day_brazilian:n { #2 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_month_uppercase_brazilian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_brazilian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_brazilian:nn - { - \projlib_datetime_display_month_day_brazilian:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_brazilian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_brazilian:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_brazilian:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_brazilian:n - { - \int_case:nnF { #1 } - { - { 1 } { janeiro } - { 2 } { fevereiro } - { 3 } { março } - { 4 } { abril } - { 5 } { maio } - { 6 } { junho } - { 7 } { julho } - { 8 } { agosto } - { 9 } { setembro } - { 10 } { outubro } - { 11 } { novembro } - { 12 } { dezembro } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_brazilian:n - { - \int_case:nnF { #1 } - { - { 1 } { Janeiro } - { 2 } { Fevereiro } - { 3 } { Março } - { 4 } { Abril } - { 5 } { Maio } - { 6 } { Junho } - { 7 } { Julho } - { 8 } { Agosto } - { 9 } { Setembro } - { 10 } { Outubro } - { 11 } { Novembro } - { 12 } { Dezembro } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_brazilian:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_brazilian:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_brazilian:n - { - \int_case:nnF { #1 } - { - { 1 } { segunda-feira } - { 2 } { terça-feira } - { 3 } { quarta-feira } - { 4 } { quinta-feira } - { 5 } { sexta-feira } - { 6 } { sábado } - { 7 } { domingo } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_brazilian:n - { - \int_case:nnF { #1 } - { - { 1 } { Segunda-feira } - { 2 } { Terça-feira } - { 3 } { Quarta-feira } - { 4 } { Quinta-feira } - { 5 } { Sexta-feira } - { 6 } { Sábado } - { 7 } { Domingo } - } { ??? } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_spanish:nnn - { - \projlib_datetime_display_month_day_spanish:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_spanish:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_spanish:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_spanish:nnn - { - \projlib_datetime_display_month_day_uppercase_spanish:nn { #2 } { #3 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_spanish:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_spanish:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_spanish:nn - { - \projlib_datetime_display_month_spanish:n { #2 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_spanish:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_spanish:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_spanish:nn - { - \projlib_datetime_display_month_uppercase_spanish:n { #2 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_year_spanish:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_spanish:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_spanish:nn - { - \projlib_datetime_display_day_spanish:n { #2 } - \nobreakspace de \nobreakspace - \projlib_datetime_display_month_spanish:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_spanish:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_spanish:nn - { - \projlib_datetime_display_month_day_spanish:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_spanish:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_spanish:n { #1 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_spanish:n { #1 } - -\cs_new:Nn \projlib_datetime_display_month_spanish:n - { - \int_case:nnF { #1 } - { - { 1 } { enero } - { 2 } { febrero } - { 3 } { marzo } - { 4 } { abril } - { 5 } { mayo } - { 6 } { junio } - { 7 } { julio } - { 8 } { agosto } - { 9 } { septiembre } - { 10 } { octubre } - { 11 } { noviembre } - { 12 } { diciembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_spanish:n - { - \int_case:nnF { #1 } - { - { 1 } { Enero } - { 2 } { Febrero } - { 3 } { Marzo } - { 4 } { Abril } - { 5 } { Mayo } - { 6 } { Junio } - { 7 } { Julio } - { 8 } { Agosto } - { 9 } { Septiembre } - { 10 } { Octubre } - { 11 } { Noviembre } - { 12 } { Diciembre } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_spanish:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_spanish:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_spanish:n - { - \int_case:nnF { #1 } - { - { 1 } { lunes } - { 2 } { martes } - { 3 } { miércoles } - { 4 } { jueves } - { 5 } { viernes } - { 6 } { sábado } - { 7 } { domingo } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_spanish:n - { - \int_case:nnF { #1 } - { - { 1 } { Lunes } - { 2 } { Martes } - { 3 } { Miércoles } - { 4 } { Jueves } - { 5 } { Viernes } - { 6 } { Sábado } - { 7 } { Domingo } - } { ??? } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_schinese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_schinese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_schinese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_schinese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_schinese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_schinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_schinese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_schinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_schinese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_schinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_schinese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_schinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_schinese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_schinese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_month_schinese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_month_uppercase_schinese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_day_schinese:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_schinese:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_schinese:n - { - \int_case:nnF { #1 } - { - { 1 } { 星期一 } - { 2 } { 星期二 } - { 3 } { 星期三 } - { 4 } { 星期四 } - { 5 } { 星期五 } - { 6 } { 星期六 } - { 7 } { 星期日 } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_schinese:n - { - \projlib_datetime_display_week_schinese:n { #1 } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_tchinese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_tchinese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_tchinese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_tchinese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_tchinese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_tchinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_tchinese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_tchinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_tchinese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_tchinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_tchinese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_tchinese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_tchinese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_tchinese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_month_tchinese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_month_uppercase_tchinese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_day_tchinese:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_tchinese:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_tchinese:n - { - \int_case:nnF { #1 } - { - { 1 } { 星期一 } - { 2 } { 星期二 } - { 3 } { 星期三 } - { 4 } { 星期四 } - { 5 } { 星期五 } - { 6 } { 星期六 } - { 7 } { 星期日 } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_tchinese:n - { - \projlib_datetime_display_week_tchinese:n { #1 } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_japanese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_japanese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_japanese:nnn - { - #1 年 #2 月 #3 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_japanese:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_japanese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_japanese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_japanese:nn - { - #1 年 #2 月 - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_japanese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_japanese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_japanese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_japanese:nn - { - #1 月 #2 日 - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_japanese:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_japanese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_year_uppercase_japanese:n { #1 年 } -\cs_new:Nn \projlib_datetime_display_month_japanese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_month_uppercase_japanese:n { #1 月 } -\cs_new:Nn \projlib_datetime_display_day_japanese:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_japanese:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_japanese:n - { - \int_case:nnF { #1 } - { - { 1 } { 月曜日 } - { 2 } { 火曜日 } - { 3 } { 水曜日 } - { 4 } { 木曜日 } - { 5 } { 金曜日 } - { 6 } { 土曜日 } - { 7 } { 日曜日 } - } { ??? } - } - -\cs_new:Nn \projlib_datetime_display_week_uppercase_japanese:n - { - \projlib_datetime_display_week_japanese:n { #1 } - } - - -\cs_new:Nn \projlib_datetime_display_year_month_day_russian:nnn - { - \projlib_datetime_display_month_day_russian:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_russian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_russian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_russian:nnn - { - \projlib_datetime_display_month_day_uppercase_russian:nn { #2 } { #3 } - \nobreakspace - \projlib_datetime_display_year_russian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_russian:nnn { VVV, eee } - -\cs_new:Nn \projlib_datetime_display_year_month_russian:nn - { - \projlib_datetime_display_month_russian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_russian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_russian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_month_uppercase_russian:nn - { - \projlib_datetime_display_month_uppercase_russian:n { #2 } - \nobreakspace - \projlib_datetime_display_year_russian:n { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_russian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_russian:nn - { - \projlib_datetime_display_day_russian:n { #2 } - \nobreakspace - \int_case:nnF { #1 } - { - { 1 } { января } - { 2 } { февраля } - { 3 } { марта } - { 4 } { апреля } - { 5 } { мая } - { 6 } { июня } - { 7 } { июля } - { 8 } { августа } - { 9 } { сентября } - { 10 } { октября } - { 11 } { ноября } - { 12 } { декабря } - } { #1 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_russian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_month_day_uppercase_russian:nn - { - \projlib_datetime_display_month_day_russian:nn { #1 } { #2 } - } -\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_russian:nn { VV, ee } - -\cs_new:Nn \projlib_datetime_display_year_russian:n { #1 ~ г. } -\cs_new:Nn \projlib_datetime_display_year_uppercase_russian:n { #1 ~ г. } - -\cs_new:Nn \projlib_datetime_display_month_russian:n - { - \int_case:nnF { #1 } - { - { 1 } { январь } - { 2 } { февраль } - { 3 } { март } - { 4 } { апрель } - { 5 } { май } - { 6 } { июнь } - { 7 } { июль } - { 8 } { август } - { 9 } { сентябрь } - { 10 } { октябрь } - { 11 } { ноябрь } - { 12 } { декабрь } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_month_uppercase_russian:n - { - \int_case:nnF { #1 } - { - { 1 } { Январь } - { 2 } { Февраль } - { 3 } { Март } - { 4 } { Апрель } - { 5 } { Май } - { 6 } { Июнь } - { 7 } { Июль } - { 8 } { Август } - { 9 } { Сентябрь } - { 10 } { Октябрь } - { 11 } { Ноябрь } - { 12 } { Декабрь } - } { #1 } - } - -\cs_new:Nn \projlib_datetime_display_day_russian:n { #1 } -\cs_new:Nn \projlib_datetime_display_day_uppercase_russian:n { #1 } - -\cs_new:Nn \projlib_datetime_display_week_russian:n - { - \int_case:nnF { #1 } - { - { 1 } { понедельник } - { 2 } { вторник } - { 3 } { среда } - { 4 } { четверг } - { 5 } { пятница } - { 6 } { суббота } - { 7 } { воскресенье } - } { ??? } - } -\cs_new:Nn \projlib_datetime_display_week_uppercase_russian:n - { - \int_case:nnF { #1 } - { - { 1 } { Понедельник } - { 2 } { Вторник } - { 3 } { Среда } - { 4 } { Четверг } - { 5 } { Пятница } - { 6 } { Суббота } - { 7 } { Воскресенье } - } { ??? } - } - -\endinput -%% -%% End of file `projlib-datetime.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-draft.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-draft.sty deleted file mode 100644 index 6c7fe818c7c..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-draft.sty +++ /dev/null @@ -1,140 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-draft} - {2022/02/24} {} - {Useful commands during draft stage} - -\keys_define:nn { projlib-draft } - { - , draft .bool_set:N = \l__projlib_draft_fast_bool - , draft .initial:n = { false } - , fast .bool_set:N = \l__projlib_draft_fast_bool - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-draft } - -\RequirePackage { projlib-language } -\RequirePackage { xcolor } - -\bool_if:NTF \l__projlib_draft_fast_bool - { - \NewDocumentCommand \projlib_draft_plain_box { O{-paper} m } - { - \group_begin: - \color { #1 } - \dim_set:Nn \fboxsep { 1.5pt } - \dim_set:Nn \fboxrule { 1.5pt } - \fbox { #2 } - \group_end: - } - } - { - \PassOptionsToPackage { many } { tcolorbox } - \RequirePackage { tcolorbox } - \NewTCBox \projlib_draft_plain_box { O{-paper} } - { - enhanced~jigsaw, breakable, - on~line, arc = 1.2pt, outer~arc = 1pt, - colframe = #1, colupper = #1, opacityback = 0, - boxsep = 1pt, boxrule = 1.2pt, - left = 1pt, right = 1pt, top = 0pt, bottom = 0pt, - } - } - -\projlib_langauge_define_multilingual_text:Nn \__dnf_text - { - EN = To\ be\ finished , - FR = Pas\ encore\ fini , - DE = Nicht\ beendet , - IT = Per\ essere\ finito , - PT = Não\ terminou , - BR = Não\ terminou , - ES = Estar\ terminado , - CN = 这里尚未完成 , - TC = 這裡尚未完成 , - JP = 終わってない , - RU = Не\ закончен , - } - -\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text - { - EN = { Below\ is\ a\ list\ of\ outstanding\ items, - \ followed\ by\ the\ corresponding\ page\ numbers. } , - FR = { Voici\ la\ liste\ des\ éléments\ en\ suspens, - \ suivie\ des\ numéros\ de\ page\ correspondants. } , - DE = { Unten\ ist\ eine\ Liste\ der\ ausstehenden\ Posten, - \ gefolgt\ von\ den\ entsprechenden\ Seitenzahlen. } , - IT = { Qui\ sotto\ c'è\ una\ lista\ di\ voci\ in\ sospeso, - \ seguita\ dai\ numeri\ di\ pagina\ corrispondenti. } , - PT = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes, - \ seguida\ dos\ números\ de\ página\ correspondentes. } , - BR = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes, - \ seguida\ dos\ números\ de\ página\ correspondentes. } , - ES = { Aquí está\ la\ lista\ de\ elementos\ pendientes, - \ seguida\ de\ los\ números\ de\ página\ correspondientes. } , - CN = { 以下是未完成事项列表,括号内注明了对应的页码。 } , - TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。 } , - JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 } , - RU = { Ниже\ приведен\ список\ невыполненных\ пунктов - \ с\ соответствующими\ номерами\ страниц\ в\ скобках. } , - } - -\tl_new:c { __dnf_font } -\tl_gset:cn { __dnf_font } { \normalfont \ttfamily \bfseries \small } - -\definecolor { __dnf_color } { RGB } { 21, 122, 20 } - -\newcounter { __dnf_counter } - -\tl_new:N \g__projlib_draft_dnf_report_tl - -\NewDocumentCommand \dnf { d<> } - { - \noindent - \projlib_draft_plain_box [ __dnf_color ] - { - \stepcounter { __dnf_counter } - \__dnf_font - \__dnf_text - \c_space_tl - \# \the__dnf_counter - \IfNoValueF { #1 } { \, : ~ #1 } - \tl_gput_right:Nx \g__projlib_draft_dnf_report_tl - { - \# \, - \int_value:w \the__dnf_counter - \c_space_tl \c_space_tl - $\langle$ - \skip_horizontal:n { 0.1em } - \cs_if_exist:cTF { hyperlink } - { - \exp_not:N \hyperlink { page.\thepage } { \thepage } - } - { - \thepage - } - \skip_horizontal:n { 0.1em } - $\rangle$ - \c_space_tl - \IfNoValueF { #1 } { : ~ #1 } - \\ - } - } - } - -\hook_gput_code:nnn { enddocument } { projlib-draft } - { - \tl_if_blank:VF \g__projlib_draft_dnf_report_tl - { - \clearpage \noindent - \color { __dnf_color } - \__dnf_font - \__dnf_report_text \\[0.75\baselineskip] - \g__projlib_draft_dnf_report_tl - } - } - -\endinput -%% -%% End of file `projlib-draft.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-font.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-font.sty deleted file mode 100644 index 4b2e85f4dc1..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-font.sty +++ /dev/null @@ -1,137 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-font} - {2022/02/26} {} - {Font selection and configuration} - -\keys_define:nn { projlib-font } - { - , useosf .bool_set:N = \l__projlib_font_useosf_bool - , useosf .initial:n = { false } - , old-style-figures.bool_set:N = \l__projlib_font_useosf_bool - , old~style~figures.bool_set:N = \l__projlib_font_useosf_bool - , old style figures.bool_set:N = \l__projlib_font_useosf_bool - , lmodern .bool_set:N = \l__projlib_font_lmodern_bool - , lmodern .initial:n = { false } - , latin-modern .bool_set:N = \l__projlib_font_lmodern_bool - , latin~modern .bool_set:N = \l__projlib_font_lmodern_bool - , latin modern .bool_set:N = \l__projlib_font_lmodern_bool - , palatino .bool_set:N = \l__projlib_font_palatino_bool - , palatino .initial:n = { false } - , times .bool_set:N = \l__projlib_font_times_bool - , times .initial:n = { false } - , garamond .bool_set:N = \l__projlib_font_garamond_bool - , garamond .initial:n = { false } - , noto .bool_set:N = \l__projlib_font_noto_bool - , noto .initial:n = { false } - , biolinum .bool_set:N = \l__projlib_font_biolinum_bool - , biolinum .initial:n = { false } - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-font } - -\RequirePackage { setspace } - -\cs_new:Nn \projlib_font_set_linespacing_latin:n - { - \cs_if_exist:NTF \projlib_language_set_linespacing_latin:n - { - \projlib_language_set_linespacing_latin:n { #1 } - } - { - #1 - } - } - -\bool_if:NT \l__projlib_font_lmodern_bool - { - \RequirePackage { amssymb } - \bool_if:NTF \l__projlib_font_useosf_bool - { - \RequirePackage { cfr-lm } - } - { - \RequirePackage { lmodern } - } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } } - } - -\bool_if:NT \l__projlib_font_palatino_bool - { - \RequirePackage { mathpazo } - \PassOptionsToPackage { defaultsups } { newpxtext } - \RequirePackage { newpxtext } - \cs_undefine:c { openbox } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.07 } } - \bool_if:NT \l__projlib_font_useosf_bool { \useosf } - } - -\bool_if:NT \l__projlib_font_times_bool - { - \PassOptionsToPackage { defaultsups } { newtxtext } - \RequirePackage { newtxtext } - \RequirePackage { newtxmath } - \cs_undefine:c { openbox } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } } - \bool_if:NT \l__projlib_font_useosf_bool { \useosf } - } - -\bool_if:NT \l__projlib_font_garamond_bool - { - \bool_if:NF \l__projlib_font_useosf_bool - { - \PassOptionsToPackage { lining } { ebgaramond } - } - \RequirePackage { ebgaramond-maths } - \RequirePackage { ebgaramond } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } } - } - -\bool_if:NT \l__projlib_font_noto_bool - { - \bool_if:NT \l__projlib_font_useosf_bool - { - \PassOptionsToPackage { oldstyle } { notomath } - } - \RequirePackage { anyfontsize } - \RequirePackage { notomath } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } } - } - -\bool_if:NT \l__projlib_font_biolinum_bool - { - \sys_if_engine_pdftex:TF - { - \bool_if:NT \l__projlib_font_useosf_bool - { - \PassOptionsToPackage { osf } { biolinum } - } - \RequirePackage { biolinum } - \tl_gset:Nn \familydefault { \biolinum@family } - } - { - \PassOptionsToPackage { no-math } { fontspec } - \RequirePackage { fontspec } - \bool_if:NTF \l__projlib_font_useosf_bool - { - \setmainfont { LinBiolinum_R.otf } [ - BoldFont = LinBiolinum_RB.otf , - ItalicFont = LinBiolinum_RI.otf , - BoldItalicFont = LinBiolinum_RBO.otf , - Numbers = OldStyle , ] - } - { - \setmainfont { LinBiolinum_R.otf } [ - BoldFont = LinBiolinum_RB.otf , - ItalicFont = LinBiolinum_RI.otf , - BoldItalicFont = LinBiolinum_RBO.otf , ] - } - } - \projlib_font_set_linespacing_latin:n { \setstretch { 1.05 } } - \RequirePackage [ italic, defaultmathsizes ] { mathastext } - } - -\endinput -%% -%% End of file `projlib-font.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-language.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-language.sty deleted file mode 100644 index 6167de8d043..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-language.sty +++ /dev/null @@ -1,508 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-language} - {2022/02/26} {} - {Multi-language configuration} - -\clist_const:Nn \c__projlib_language_supported_clist - { - english , - french , - ngerman , - italian , - portuguese , - brazilian , - spanish , - schinese , - tchinese , - japanese , - russian , - } - -\clist_new:N \g__projlib_language_babel_option_clist - -\str_new:N \g__projlib_language_main_str - -\bool_new:N \g__projlib_language_enabled_all_bool -\bool_gset_true:N \g__projlib_language_enabled_all_bool - -\clist_map_inline:Nn \c__projlib_language_supported_clist - { - \bool_new:c { g__projlib_language_enabled_ #1 _bool } - \bool_gset_false:c { g__projlib_language_enabled_ #1 _bool } - } - -\cs_new:Nn \projlib_language_set_option_no_babel:n - { - \bool_gset_false:N \g__projlib_language_enabled_all_bool - \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool } - \str_if_empty:NT \g__projlib_language_main_str - { - \str_gset:Nn \g__projlib_language_main_str { #1 } - } - } -\cs_new:Nn \projlib_language_set_option:n - { - \projlib_language_set_option_no_babel:n { #1 } - \clist_gput_left:Nn \g__projlib_language_babel_option_clist { #1 } - } - -\keys_define:nn { projlib-language } - { - , EN .meta:n = { english } - , english .code:n = { \projlib_language_set_option:n { english } } - , English .meta:n = { english } - , FR .meta:n = { french } - , french .code:n = { \projlib_language_set_option:n { french } } - , French .meta:n = { french } - , DE .meta:n = { ngerman } - , german .meta:n = { ngerman } - , ngerman .code:n = { \projlib_language_set_option:n { ngerman } } - , German .meta:n = { ngerman } - , IT .meta:n = { italian } - , italian .code:n = { \projlib_language_set_option:n { italian } } - , Italian .meta:n = { italian } - , PT .meta:n = { portuguese } - , portuguese .code:n = { \projlib_language_set_option:n { portuguese } } - , Portuguese .meta:n = { portuguese } - , BR .meta:n = { brazilian } - , brazilian .code:n = { \projlib_language_set_option:n { brazilian } } - , Brazilian .meta:n = { brazilian } - , ES .meta:n = { spanish } - , spanish .code:n = { \clist_gput_left:Nn \g__projlib_language_babel_option_clist { es-notilde, es-noquoting } - \projlib_language_set_option:n { spanish } } - , Spanish .meta:n = { spanish } - , CN .meta:n = { schinese } - , chinese .meta:n = { schinese } - , schinese .code:n = { \projlib_language_set_option_no_babel:n { schinese } } - , simplifiedchinese .meta:n = { schinese } - , simplified-chinese .meta:n = { schinese } - , Chinese .meta:n = { schinese } - , SChinese .meta:n = { schinese } - , SimplifiedChinese .meta:n = { schinese } - , Simplified-Chinese .meta:n = { schinese } - , TC .meta:n = { tchinese } - , tchinese .code:n = { \projlib_language_set_option_no_babel:n { tchinese } } - , traditionalchinese .meta:n = { tchinese } - , traditional-chinese .meta:n = { tchinese } - , TChinese .meta:n = { tchinese } - , TraditionalChinese .meta:n = { tchinese } - , Traditional-Chinese .meta:n = { tchinese } - , JP .meta:n = { japanese } - , japanese .code:n = { \projlib_language_set_option:n { japanese } } - , Japanese .meta:n = { japanese } - , RU .meta:n = { russian } - , russian .code:n = { \projlib_language_set_option:n { russian } } - , Russian .meta:n = { russian } - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-language } - -\cs_new_protected:Nn \projlib_language_clear_global_option:n - { - \clist_remove_all:cn { @classoptionslist } { #1 } - } - -\projlib_language_clear_global_option:n { chinese } -\projlib_language_clear_global_option:n { Chinese } - -\clist_gput_right:Nn \g__projlib_language_babel_option_clist { shorthands = off } - -\str_if_empty:NT \g__projlib_language_main_str - { - \str_gset:Nn \g__projlib_language_main_str { english } - } - -\bool_if:NT \g__projlib_language_enabled_all_bool - { - \clist_map_inline:Nn \c__projlib_language_supported_clist - { - \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool } - } - } - - -\cs_new:Nn \projlib_language_str_to_languagename:n - { - \str_case_e:nnF { \str_foldcase:n { #1 } } - { - { all } { common } - { common } { common } - { cn } { schinese } - { chinese } { schinese } - { schinese } { schinese } - { simplifiedchinese } { schinese } - { simplified-chinese } { schinese } - { tc } { tchinese } - { tchinese } { tchinese } - { traditionalchinese } { tchinese } - { traditional-chinese} { tchinese } - { jp } { japanese } - { japanese } { japanese } - { en } { english } - { english } { english } - { fr } { french } - { french } { french } - { de } { ngerman } - { german } { ngerman } - { ngerman } { ngerman } - { it } { italian } - { italian } { italian } - { pt } { portuguese } - { portuguese } { portuguese } - { br } { brazilian } - { brazilian } { brazilian } - { es } { spanish } - { spanish } { spanish } - { ru } { russian } - { russian } { russian } - } - { #1 } - } - -\cs_new:Nn \projlib_language_str_to_languagetype:n - { - \str_case_e:nn { \str_foldcase:n { #1 } } - { - { cn } { cjk } - { chinese } { cjk } - { schinese } { cjk } - { simplifiedchinese } { cjk } - { simplified-chinese } { cjk } - { tc } { cjk } - { tchinese } { cjk } - { traditionalchinese } { cjk } - { traditional-chinese} { cjk } - { jp } { cjk } - { japanese } { cjk } - { en } { latin } - { english } { latin } - { fr } { latin } - { french } { latin } - { de } { latin } - { german } { latin } - { ngerman } { latin } - { it } { latin } - { italian } { latin } - { pt } { latin } - { portuguese } { latin } - { br } { latin } - { brazilian } { latin } - { es } { latin } - { spanish } { latin } - { ru } { latin } - { russian } { latin } - } - } - -\sys_if_engine_pdftex:T - { - \RequirePackage [T1] { fontenc } - } - -\bool_if:NTF \g__projlib_language_enabled_all_bool - { - \sys_if_engine_pdftex:F - { - \PassOptionsToPackage { japanese, russian } { babel } - } - \PassOptionsToPackage { italian, portuguese, brazilian, spanish, es-notilde, es-noquoting, ngerman, french, english, shorthands = off } { babel } - } - { - \PassOptionsToPackage { \g__projlib_language_babel_option_clist } { babel } - } - -\PassOptionsToPackage { italian, brazilian, spanish, ngerman, french, english } { cleveref } -\RequirePackage { babel } - - -\bool_if:NT \g__projlib_language_enabled_french_bool - { - \frenchsetup { PartNameFull = false } - } - -\bool_if:NT \g__projlib_language_enabled_portuguese_bool - { - \NewCommandCopy \__projlib_language_babel_ord: \ord - \cs_undefine:N \ord - \hook_gput_code:nnn { begindocument } { projlib-language } - { - \cs_if_exist:NT \ord - { - \NewCommandCopy \__projlib_language_user_ord: \ord - \cs_set_protected:Npn \ord - { - \mode_if_math:TF - { \__projlib_language_user_ord: } - { \__projlib_language_babel_ord: } - } - } - } - } - -\babelprovide { schinese } -\babelprovide { tchinese } - - -\NewCommandCopy \projlib_language_backup_today:n \today - -\tl_new:N \g_projlib_language_settings_common_tl -\clist_map_inline:Nn \c__projlib_language_supported_clist - { - \tl_new:c { g_projlib_language_settings_ #1 _tl } - } - -\tl_gput_right:Nn \g_projlib_language_settings_common_tl - { - \cs_if_exist:NT \ProjLibToday - { - \RenewCommandCopy \today \ProjLibToday - } - } - -\tl_gput_right:Nn \g_projlib_language_settings_schinese_tl - { - \g_projlib_language_settings_common_tl - \tl_gset:Nn \languagename { schinese } - \tl_gset:cn { abstractname } { 摘要 } - \tl_gset:cn { proofname } { 证明 } - \tl_gset:cn { contentsname } { 目录 } - \tl_gset:cn { listfigurename } { 插图 } - \tl_gset:cn { listtablename } { 表格 } - \tl_gset:cn { figurename } { 图 } - \tl_gset:cn { tablename } { 表 } - \tl_gset:cn { indexname } { 索引 } - \tl_gset:cn { appendixname } { 附录 } - \tl_gset:cn { refname } { 参考文献 } - \tl_gset:cn { bibname } { 参考文献 } - } - -\tl_gput_right:Nn \g_projlib_language_settings_tchinese_tl - { - \g_projlib_language_settings_common_tl - \tl_gset:Nn \languagename { tchinese } - \tl_gset:cn { abstractname } { 摘要 } - \tl_gset:cn { proofname } { 證明 } - \tl_gset:cn { contentsname } { 目錄 } - \tl_gset:cn { listfigurename } { 插圖 } - \tl_gset:cn { listtablename } { 表格 } - \tl_gset:cn { figurename } { 圖 } - \tl_gset:cn { tablename } { 表 } - \tl_gset:cn { indexname } { 索引 } - \tl_gset:cn { appendixname } { 附錄 } - \tl_gset:cn { refname } { 參考文獻 } - \tl_gset:cn { bibname } { 參考文獻 } - } - -\tl_gput_right:Nn \g_projlib_language_settings_japanese_tl - { - \selectlanguage { japanese } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_english_tl - { - \selectlanguage { english } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_french_tl - { - \selectlanguage { french } - \g_projlib_language_settings_common_tl - \tl_gset:cn { frenchpartname } { Partie } - } - -\tl_gput_right:Nn \g_projlib_language_settings_ngerman_tl - { - \selectlanguage { ngerman } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_italian_tl - { - \selectlanguage { italian } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_portuguese_tl - { - \selectlanguage { portuguese } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_brazilian_tl - { - \selectlanguage { brazilian } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_spanish_tl - { - \selectlanguage { spanish } - \g_projlib_language_settings_common_tl - } - -\tl_gput_right:Nn \g_projlib_language_settings_russian_tl - { - \selectlanguage { russian } - \g_projlib_language_settings_common_tl - } - -\NewDocumentCommand \AddLanguageSetting { O{} m } - { - \IfNoValueTF { #1 } - { - \tl_gput_right:Nn \g_projlib_language_settings_common_tl { #2 } - } - { - \tl_gput_right:cn { g_projlib_language_settings_ \projlib_language_str_to_languagename:n { #1 } _tl } { #2 } - } - } - - -\RequirePackage { setspace } - -\tl_new:N \g_projlib_language_linespacing_latin_tl -\tl_new:N \g_projlib_language_linespacing_cjk_tl - -\tl_gset:Nn \g_projlib_language_linespacing_latin_tl - { - \setstretch { 1.00 } - } -\tl_gset:Nn \g_projlib_language_linespacing_cjk_tl - { - \onehalfspacing - } - -\cs_new:Nn \projlib_language_set_linespacing_latin:n - { - \tl_gset:Nn \g_projlib_language_linespacing_latin_tl { #1 } - } -\cs_new:Nn \projlib_language_set_linespacing_cjk:n - { - \tl_gset:Nn \g_projlib_language_linespacing_cjk_tl { #1 } - } - -\tl_new:N \g_projlib_language_parindent_latin_tl -\tl_new:N \g_projlib_language_parindent_cjk_tl - -\@ifclassloaded{beamer} - { - \tl_gset:Nn \g_projlib_language_parindent_latin_tl - { - \dim_set:Nn \parindent { 0em } - } - \tl_gset:Nn \g_projlib_language_parindent_cjk_tl - { - \dim_set:Nn \parindent { 0em } - } - } - { - \tl_gset:Nn \g_projlib_language_parindent_latin_tl - { - \dim_set:Nn \parindent { 1.5em } - } - \tl_gset:Nn \g_projlib_language_parindent_cjk_tl - { - \dim_set:Nn \parindent { 2em } - } - } - -\hook_gput_code:nnn { begindocument } { projlib-language } - { - \@ifpackageloaded{parskip} - { - \tl_gset:Nn \g_projlib_language_parindent_latin_tl - { - \dim_set:Nn \parindent { 0em } - } - \tl_gset:Nn \g_projlib_language_parindent_cjk_tl - { - \dim_set:Nn \parindent { 0em } - } - } {} - } - -\cs_new:Nn \projlib_language_set_parindent_latin:n - { - \tl_gset:Nn \g_projlib_language_parindent_latin_tl { #1 } - } -\cs_new:Nn \projlib_language_set_parindent_cjk:n - { - \tl_gset:Nn \g_projlib_language_parindent_cjk_tl { #1 } - } - -\NewDocumentCommand \ProjLibLanguageSet { m m m } - % #1 = the thing to set - % #2 = language or type - % #3 = the setting - { - \use:c { projlib_language_set_ #1 _ #2 :n } { #3 } - } - - -\cs_new:Nn \projlib_language_use_language_pure:n - { - \tl_use:c { g_projlib_language_settings_ \projlib_language_str_to_languagename:n { #1 } _tl } - } -\cs_generate_variant:Nn \projlib_language_use_language_pure:n { e } - -\cs_new:Nn \projlib_language_use_language:n - { - \projlib_language_use_language_pure:n { #1 } - \tl_use:c { g_projlib_language_linespacing_ \projlib_language_str_to_languagetype:n { #1 } _tl } - \tl_use:c { g_projlib_language_parindent_ \projlib_language_str_to_languagetype:n { #1 } _tl } - } -\cs_generate_variant:Nn \projlib_language_use_language:n { e } - -\NewDocumentCommand \UseLanguage { m } - { - \hook_gput_code:nnn { begindocument } { projlib-language } - { - \projlib_language_use_language:e { #1 } - } - } -\NewDocumentCommand \UseOtherLanguage { m m } - { - \group_begin: - \projlib_language_use_language_pure:e { #1 } - #2 - \group_end: - } - -\UseLanguage { \g__projlib_language_main_str } - - -\cs_new:Nn \projlib_langauge_define_multilingual_text:Nn - { % #1 = command name (with backslash) - % #2 = key-value name configuration - \keyval_parse:nnn - {} - { \__projlib_langauge_define_multilingual_text_do:nnn { \cs_to_str:N #1 } } - { #2 } - \tl_gset:Nn #1 - { - \tl_use:c { \cs_to_str:N #1 _projlib_language_text_ \languagename } - } - } -\cs_generate_variant:Nn \projlib_langauge_define_multilingual_text:Nn { cn } - -\cs_new:Nn \__projlib_langauge_define_multilingual_text_do:nnn - { % #1 = command name - % #2 = language name - % #3 = the text - \exp_args:Ne \tl_gset:cn { #1 _projlib_language_text_ \projlib_language_str_to_languagename:n { #2 } } { #3 } - } - -\NewDocumentCommand \DefineMultilingualText { m m } - % #1 = command name - % #2 = key-value name configuration - { - \projlib_langauge_define_multilingual_text:Nn #1 { #2 } - } - -\endinput -%% -%% End of file `projlib-language.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-logo.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-logo.sty deleted file mode 100644 index d9ffb5c1ed2..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-logo.sty +++ /dev/null @@ -1,100 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-logo} - {2022/02/24} {} - {The ProjLib logo} - -\keys_define:nn { projlib-logo } - { - , draft .bool_set:N = \l__projlib_logo_fast_bool - , draft .initial:n = { false } - , fast .bool_set:N = \l__projlib_logo_fast_bool - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-logo } - -\bool_if:NT \l__projlib_logo_fast_bool - { - \DeclareRobustCommand * \ProjLib - { - \group_begin: - \normalfont ProjLib - \group_end: - } - \endinput - } - -\cs_if_exist:cTF { fontspec } - { - \newfontface \__projlib_logo_font: { LinBiolinum_R.otf } - } - { - \RequirePackage [T1] { fontenc } - \cs_gset:Nn \__projlib_logo_font: - { \fontfamily { LinuxBiolinumT-TLF } \selectfont } - } - -\tl_new:N \g__projlib_logo_sigma_j_tl -\tl_gset:Nn \g__projlib_logo_sigma_j_tl - { - \vbox:n - { - \offinterlineskip - \hbox_overlap_center:n - { - \skip_horizontal:n { 0.75ex } - \hbox_set:Nn \l_tmpa_box { \usefont{U}{zeur}{b}{n} \symbol{"06} } - \box_rotate:Nn \l_tmpa_box { -10 } - \box_scale:Nnn \l_tmpa_box {.4} {.4} - \box_use:N \l_tmpa_box - } - \skip_vertical:n { 0.15ex } - \hbox:n { \j } - } - } - -% \RequirePackage { xcolor } -% \cs_new_protected:Nn \projlib_logo_generic:n -% { -% \group_begin: -% \normalfont -% \__projlib_logo_font: -% \textcolor { blue!55!cyan } { P } -% \textcolor { blue!45!cyan } { r } -% \textcolor { blue!30!cyan } { o } -% \textcolor { green!70!black!70 } { #1 } -% \textcolor { red!20!yellow } { L } -% \textcolor { red!40!yellow } { i } -% \textcolor { red!55!yellow } { b } -% \group_end: -% } -\cs_new_protected:Nn \projlib_logo_generic:n - { - \group_begin: - \normalfont - \__projlib_logo_font: - \color_group_begin: - \color_select:n { blue!60!cyan } { P } - \color_select:n { blue!45!cyan } { r } - \color_select:n { blue!30!cyan } { o } - \color_select:n { green!70!black!70 } { #1 } - \color_select:n { red!20!yellow } { L } - \color_select:n { red!40!yellow } { i } - \color_select:n { red!60!yellow } { b } - \color_group_end: - \group_end: - } - -\DeclareRobustCommand * \ProjLib - { - \projlib_logo_generic:n { \g__projlib_logo_sigma_j_tl } - } -\DeclareRobustCommand * \ProjLibText - { - \projlib_logo_generic:n { j } - } - -\endinput -%% -%% End of file `projlib-logo.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-math.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-math.sty deleted file mode 100644 index 977a4280038..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-math.sty +++ /dev/null @@ -1,234 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-math} - {2022/02/26} {} - {Efficient math setup} - -\keys_define:nn { projlib-math } - { - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-math } - -\RequirePackage { mathtools } -\RequirePackage { mathrsfs } -\PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math } -\@ifpackageloaded { unicode-math } {} { \RequirePackage { amssymb } } - - -\msg_new:nnn { projlib-math } - { operator-not-define } - { The~math~operator~"\iow_char:N \\#1"~cannot~be~defined,~a~command~with~the~same~name~has~already~existed. } - -\keys_define:nn { projlib-math-operator } - { - , style .tl_set:N = \l__projlib_math_operator_style_tl - , unknown .code:n = {} - } - -\cs_new_protected:Nn \projlib_math_define_operator:nnn - % #1 = bool for star or empty - % #2 = list of operators - % #3 = the option - { - \tl_clear:N \l__projlib_math_operator_style_tl - \keys_set:nn { projlib-math-operator } { #3 } - \clist_map_inline:nn { #2 } - { - \str_if_in:nnTF { ##1 } { = } - { - \seq_set_split:Nnn \l_tmpa_seq { = } { ##1 } - \__projlib_math_define_operator:nee { #1 } { \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } } - } - { - \__projlib_math_define_operator:nee { #1 } { ##1 } { ##1 } - } - } - } - -\cs_new_protected:Nn \__projlib_math_define_operator:nnn - % #1 = bool for star or empty - % #2 = the operator - % #3 = the content - { - \cs_if_exist:cTF { #2 } - { - \msg_warning:nnn { projlib-math } { operator-not-define } { #2 } - } - { - \bool_if:NTF #1 - { - \exp_args:Nnf \use:n - { \exp_args:Nnc \use:n { \DeclareMathOperator* } { #2 } } - } - { - \exp_args:Nnf \use:n - { \exp_args:Nc \DeclareMathOperator { #2 } } - } - % This is the f-argument of \exp_args:Nnf : - { - \exp_args:NnV \use:nn - { \exp_stop_f: } - { \l__projlib_math_operator_style_tl } { #3 } - } - } - } -\cs_generate_variant:Nn \__projlib_math_define_operator:nnn { nee } - -\NewDocumentCommand \DefineOperator { s O{} m O{} } - { - \tl_if_blank:nTF { #2 } - { - \projlib_math_define_operator:nnn { #1 } { #3 } { #4 } - } - { - \projlib_math_define_operator:nnn { #1 } { #3 } { #2 } - } - } - - -\msg_new:nnn { projlib-math } - { shortcut-not-define } - { The~shortcut~"\iow_char:N \\#1"~cannot~be~defined,~a~command~with~the~same~name~has~already~existed. } - -\msg_new:nnn { projlib-math } - { shortcut-type-not-define } - { The~shortcut~type~"#1"~is~not~available,~a~command~with~the~same~name~has~already~existed. } - -\keys_define:nn { projlib-math-shortcut } - { - , prefix .clist_set:N = \l__projlib_math_shortcut_prefix_clist - , type .tl_set:N = \l__projlib_math_shortcut_type_tl - , style .tl_set:N = \l__projlib_math_shortcut_style_tl - , unknown .code:n = {} - } - -\cs_new_protected:Nn \projlib_math_define_shortcut:nnn - % #1 = bool for star or empty - % (currently the starred version is the same as normal version) - % #2 = list of shortcuts - % #3 = the option - { - \clist_clear:N \l__projlib_math_shortcut_prefix_clist - \tl_clear:N \l__projlib_math_shortcut_type_tl - \tl_clear:N \l__projlib_math_shortcut_style_tl - \keys_set:nn { projlib-math-shortcut } { #3 } - \tl_if_empty:NF \l__projlib_math_shortcut_type_tl - { - \cs_if_exist:cTF { \l__projlib_math_shortcut_type_tl } - { - \exp_args:Nne \use:n - { \msg_warning:nnn { projlib-math } { shortcut-type-not-define } } - { \l__projlib_math_shortcut_type_tl } - } - { - \exp_args:Nno \use:n - { - \exp_args:Nc \NewDocumentCommand { \l__projlib_math_shortcut_type_tl } { m } - } - { - \l__projlib_math_shortcut_style_tl { ##1 } - } - } - } - \clist_map_inline:nn { #2 } - { - \str_if_in:nnTF { ##1 } { = } - { - \seq_set_split:Nnn \l_tmpa_seq { = } { ##1 } - \clist_if_empty:NTF \l__projlib_math_shortcut_prefix_clist - { - \__projlib_math_define_shortcut:ee { \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } } - } - { - \clist_map_inline:Nn \l__projlib_math_shortcut_prefix_clist - { - \__projlib_math_define_shortcut:ee { ####1 \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } } - } - } - } - { - \clist_if_empty:NTF \l__projlib_math_shortcut_prefix_clist - { - \__projlib_math_define_shortcut:ee { ##1 } { ##1 } - } - { - \clist_map_inline:Nn \l__projlib_math_shortcut_prefix_clist - { - \__projlib_math_define_shortcut:ee { ####1 ##1 } { ##1 } - } - } - } - } - } - -\cs_new_protected:Nn \__projlib_math_define_shortcut:nn - % #1 = command name - % #2 = the content - { - \cs_if_exist:cTF { #1 } - { - \msg_warning:nnn { projlib-math } { shortcut-type-not-define } { #1 } - } - { - \exp_args:Nno \use:n - { \exp_args:Nc \NewDocumentCommand { #1 } {} } - { \l__projlib_math_shortcut_style_tl { #2 } } - } - } -\cs_generate_variant:Nn \__projlib_math_define_shortcut:nn { ee } - -\NewDocumentCommand \DefineShortcut { s O{} m O{} } - { - \tl_if_blank:nTF { #2 } - { - \projlib_math_define_shortcut:nnn { #1 } { #3 } { #4 } - } - { - \projlib_math_define_shortcut:nnn { #1 } { #3 } { #2 } - } - } - -%=============================== -% -- Some possible operators -- -%=============================== -% \DefineOperator { ord, card, car, disc } [ style = \mathsf ] -% \DefineOperator { id, Id, Ker, Image = Im } [ style = \mathsf ] -% \DefineOperator { Orb, Stab, Fix } [ style = \mathsf ] -% \DefineOperator { Hom, Aut, End, Mat } [ style = \mathsf ] -% \DefineOperator { Spec, Spm, Ann } [ style = \mathsf ] -% \DefineOperator*{ Lim, Max, Min } [ style = \mathsf ] - -%=============================== -% -- Some possible shortcuts -- -%=============================== -% \DefineShortcut [ type = category, style = \mathbf ] -% { -% Set, Grp, Ring, Top -% } -% \DefineShortcut [ style = \mathbb ] -% { -% N, Z, Q, R, C, F, A -% } -% \DefineShortcut [ prefix = bb, style = \mathbb ] -% { -% A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z -% } -% \DefineShortcut [ prefix = { mf, frak }, style = \mathfrak ] -% { -% A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, -% a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z -% } -% \DefineShortcut [ prefix = { mc, cal }, style = \mathcal ] -% { -% A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z -% } -% \DefineShortcut [ prefix = { ms, scr }, style = \mathscr ] -% { -% A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z -% } - -\endinput -%% -%% End of file `projlib-math.sty'. diff --git a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-paper.sty b/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-paper.sty deleted file mode 100644 index 5e1f9ac04ed..00000000000 --- a/Master/texmf-dist/doc/latex/projlib/new-modules/projlib-paper.sty +++ /dev/null @@ -1,108 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} -\ProvidesExplPackage - {projlib-paper} - {2022/02/25} {} - {Paper style configuration} - -\keys_define:nn { projlib-paper } - { - , preview-mode .bool_set:N = \l__projlib_paper_preview_bool - , preview-mode .initial:n = { false } - , paperstyle .tl_set:N = \l__projlib_paper_paperstyle_tl - , paperstyle .initial:n = { normal } - , yellowpaper .meta:n = { paperstyle = yellow } - , yellow-paper .meta:n = { paperstyle = yellow } - , parchmentpaper .meta:n = { paperstyle = parchment } - , parchment-paper .meta:n = { paperstyle = parchment } - , greenpaper .meta:n = { paperstyle = green } - , green-paper .meta:n = { paperstyle = green } - , lightgraypaper .meta:n = { paperstyle = lightgray } - , lightgray-paper .meta:n = { paperstyle = lightgray } - , light-gray-paper .meta:n = { paperstyle = lightgray } - , graypaper .meta:n = { paperstyle = gray } - , gray-paper .meta:n = { paperstyle = gray } - , nordpaper .meta:n = { paperstyle = nord } - , nord-paper .meta:n = { paperstyle = nord } - , darkpaper .meta:n = { paperstyle = dark } - , dark-paper .meta:n = { paperstyle = dark } - , unknown .code:n = {} - } -\ProcessKeysOptions { projlib-paper } - -\cs_new:Nn \projlib_paper_preview_disable: - { - \bool_set_false:c { l__projlib_paper_preview_bool } - } - -\hook_gput_code:nnn { begindocument/before } { projlib-paper } - { - \bool_if:NT \l__projlib_paper_preview_bool - { - \dim_set:Nn \paperwidth - { - \dim_eval:n { \textwidth * 21 / 20 } - } - \dim_set:Nn \paperheight - { - \dim_eval:n { ( \textheight + \headheight + \headsep + \footskip ) * 21 / 20 } - } - \dim_set:Nn \oddsidemargin - { - \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in } - } - \dim_set:Nn \evensidemargin - { - \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in } - } - \dim_set:Nn \topmargin - { - \dim_eval:n { ( \paperheight - \textheight - \headheight - \headsep - \footskip ) / 2 - 1in } - } - } - } - -\RequirePackage { xcolor } - -\definecolor { paper } { RGB } { 255, 255, 255 } -\definecolor { main-text } { RGB } { 0, 0, 0 } - -\str_case_e:nn { \l__projlib_paper_paperstyle_tl } - { - { yellow } { \definecolor { paper } { RGB } { 247, 246, 233 } } - { parchment } { \definecolor { paper } { RGB } { 224, 204, 160 } } - { green } { \definecolor { paper } { RGB } { 207, 231, 207 } } - { lightgray } { \definecolor { paper } { RGB } { 236, 239, 244 } - \definecolor { main-text } { RGB } { 37, 41, 46 } } - { light-gray } { \definecolor { paper } { RGB } { 236, 239, 244 } - \definecolor { main-text } { RGB } { 37, 41, 46 } } - { gray } { \definecolor { paper } { RGB } { 127, 130, 136 } - \definecolor { main-text } { RGB } { 236, 239, 244 } } - { nord } { \definecolor { paper } { RGB } { 46, 52, 64 } - \definecolor { main-text } { RGB } { 214, 220, 230 } } - { dark } { \definecolor { paper } { RGB } { 28, 29, 33 } - \definecolor { main-text } { RGB } { 210, 213, 217 } } - } - -\cs_new:Nn \projlib_paper_set_page_color:n - { - \pagecolor { #1 } - } -\cs_new:Nn \projlib_paper_set_text_color:n - { - \color { #1 } - \cs_gset_eq:cc { default@color } { current@color } - } - -\projlib_paper_set_page_color:n { paper } -\projlib_paper_set_text_color:n { main-text } - -\hook_gput_code:nnn { begindocument/before } { projlib-paper } - { - \cs_if_exist:NT \tcbset - { \tcbset { colupper = main-text, collower = main-text } } - } - -\endinput -%% -%% End of file `projlib-paper.sty'. |