diff options
author | Norbert Preining <norbert@preining.info> | 2019-12-14 03:01:43 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-12-14 03:01:43 +0000 |
commit | 2c20697e8a5301b61c59d752fd1cfa7499724eec (patch) | |
tree | d2475f5c56c14a7c38d26cfd2c5b71d4e0d824e0 /macros/latex/contrib | |
parent | fdd3c58e8e5b37dcf9affd49326899988992c074 (diff) |
CTAN sync 201912140301
Diffstat (limited to 'macros/latex/contrib')
16 files changed, 2448 insertions, 2224 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md index 354d3adc4b..2c803abeb7 100644 --- a/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md @@ -10,7 +10,6 @@ Required Packages: `datetime2`, `tracklang` This module is maintained. Current maintainer is Sebastian Friedl. -Thanks to Jürgen Spitzmüller for his valuable advice while developing Version 2.0 of this module. ## Installation @@ -20,12 +19,12 @@ Move all `*.ldf` files to `TEXMF/tex/latex/datetime2-contrib/datetime2-german/` Documentation: - pdflatex datetime2-german.dtx - makeindex -s gind.ist datetime2-german.idx - makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo - pdflatex datetime2-german.dtx - pdflatex datetime2-german.dtx + lualatex datetime2-german-doc.dtx + makeindex -s gind.ist datetime2-german-doc.idx + makeindex -s gglo.ist -o datetime2-german-doc.gls datetime2-german-doc.glo + lualatex datetime2-german-doc.dtx + lualatex datetime2-german-doc.dtx -Move `datetime2-german.pdf` and `README` to `TEXMF/doc/latex/datetime2-contrib/datetime2-german/` +Move `datetime2-german-doc.pdf` and `README.md` to `TEXMF/doc/latex/datetime2-contrib/datetime2-german/` -This material is subject to the LaTeX Project Public License. See [http://www.latex-project.org/lppl.txt](http://www.latex-project.org/lppl.txt "Show the current version of the LPPL") for the details of that license. +This material is subject to the LaTeX Project Public License. See [http://www.latex-project.org/lppl.txt](http://www.latex-project.org/lppl.txt "Show the current version of the LPPL") or `LICENSE.txt` for the details of that license. diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx new file mode 100644 index 0000000000..434363708d --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx @@ -0,0 +1,355 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{Austrian German (de-AT): \texttt{datetime2-de-AT.ldf}} +% \changes{2.0}{2017-10-03}{Added regional variant: Austrian German (de-AT)} +% +% Identify Module. +% \begin{macrocode} +\ProvidesDateTimeModule{de-AT}[2019/12/13 v3.0] +% \end{macrocode} +% Require the base German module. +% \begin{macrocode} +\RequireDateTimeModule{german-base} +% \end{macrocode} +% +% +% Allow the to configure the "de-AT" and "de-AT-numeric" styles. +% The package wide separators such as \cs{dtm@datetimesep} are not used +% in case other date formats are also required. +% +%\begin{macro}{\DTMdeATdowdaysep} +% The separator between weekday and day +% \begin{macrocode} +\newcommand*{\DTMdeATdowdaysep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATdaymonthsep} +% The separator between the day and month for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATmonthyearsep} +% The separator between the month and year for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeATmonthyearsep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATdatetimesep} +% The separator between the date and time blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeATdatetimesep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATtimezonesep} +% The separator between the time and zone blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeATtimezonesep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATdatesep} +% The separator for the numeric date format. +% \begin{macrocode} +\newcommand*{\DTMdeATdatesep}{.} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATtimesep} +% The separator for the numeric time format. +% \begin{macrocode} +\newcommand*{\DTMdeATtimesep}{:} +% \end{macrocode} +%\end{macro} +% +% Provide keys that can be used in \cs{DTMlangsetup} to set these +% separators. +% \begin{macrocode} +\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}} +\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}} +\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}} +\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}} +\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}} +\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}} +\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}} +% \end{macrocode} +% +% +% Define a boolean key that can switch between full and abbreviated formats for +% the month and day of week names. +% \begin{macrocode} +\DTMdefboolkey{de-AT}{abbr}[true]{} +% \end{macrocode} +% +% The default is to show the full names. +% \begin{macrocode} +\DTMsetbool{de-AT}{abbr}{false} +% \end{macrocode} +% +% Define a boolean key that determines if the time zone mappings +% should be used. +% \begin{macrocode} +\DTMdefboolkey{de-AT}{mapzone}[true]{} +% \end{macrocode} +% The default is to use mappings. +% \begin{macrocode} +\DTMsetbool{de-AT}{mapzone}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the day of month should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-AT}{showdayofmonth}[true]{} +% \end{macrocode} +% The default is to show the day of month. +% \begin{macrocode} +\DTMsetbool{de-AT}{showdayofmonth}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the year should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-AT}{showyear}[true]{} +% \end{macrocode} +% The default is to show the year. +% \begin{macrocode} +\DTMsetbool{de-AT}{showyear}{true} +% \end{macrocode} +% +% +% Define the "de-AT" style. +% \begin{macrocode} +\DTMnewstyle +{de-AT}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-AT}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeATdowdaysep + \fi + \fi + % + \DTMifbool{de-AT}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}% + {}% + % + \DTMifbool{de-AT}{abbr}% + {\DTMdeATshortmonthname{##2}}% + {\DTMdeATmonthname{##2}}% + % + \DTMifbool{de-AT}{showyear}% + {% + \DTMdeATmonthyearsep% + \number##1 % space intended + }% + {}% + }% + \renewcommand*\DTMDisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-AT}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeATdowdaysep + \fi + \fi + % + \DTMifbool{de-AT}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}% + {}% + % + \DTMifbool{de-AT}{abbr}% + {\DTMdeATshortmonthname{##2}}% + {\DTMdeATmonthname{##2}}% + % + \DTMifbool{de-AT}{showyear}% + {% + \DTMdeATmonthyearsep% + \number##1 % space intended + }% + {}% + }% +}% +{% time style (use default) + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeATtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-AT}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeATdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeATtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}[9]{% + \ifDTMshowdate + \DTMDisplaydate{##1}{##2}{##3}{##4}% + \DTMdeATdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeATtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% +}% +% \end{macrocode} +% +% Define the corresponding numeric style. +% \changes{3.0}{2019-12-13}{Change Austrian numeric style} +% \begin{macrocode} +\DTMnewstyle +{de-AT-numeric}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-AT}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeATdowdaysep + \fi + \fi + % + \DTMifbool{de-AT}{showdayofmonth}% + {% + \DTMtwodigits{##3}% + \DTMdeATdatesep + }% + {}% + \DTMtwodigits{##2}% + \DTMdeATdatesep% + \DTMifbool{de-AT}{showyear}% + {% + \DTMifbool{de-AT}{abbr}% + {\DTMtwodigits{##1}}% + {\number##1 }% space intended + }% + {}% + }% + \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% +}% +{% time style + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeATtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-AT}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeATdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeATtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}{\DTMdisplay}% +} +% \end{macrocode} +% +% Switch the style according to the \opt{useregional} setting. +% \begin{macrocode} +\DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-AT}}% + {\DTMsetstyle{de-AT-numeric}}% +% \end{macrocode} +% +% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent +% \sty{babel} from resetting \cs{today}. (For this to work, +% \sty{babel} must already have been loaded if it's required.) +% \begin{macrocode} +\ifcsundef{date\CurrentTrackedDialect} +{% + \ifundef\dategerman + {}% do nothing + {% + \def\dategerman{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-AT}}% + {\DTMsetstyle{de-AT-numeric}}% + }% + }% +}% +{% + \csdef{date\CurrentTrackedDialect}{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-AT}}% + {\DTMsetstyle{de-AT-numeric}}% + }% +}% +% \end{macrocode} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx new file mode 100644 index 0000000000..89b04ca3e7 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx @@ -0,0 +1,356 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{Swiss German (de-CH): \texttt{datetime2-de-CH.ldf}} +% \changes{2.0}{2017-10-03}{Added regional variant: Swiss German (de-CH)} +% +% Identify Module. +% \begin{macrocode} +\ProvidesDateTimeModule{de-CH}[2019/12/13 v3.0] +% \end{macrocode} +% Require the base German module +% \begin{macrocode} +\RequireDateTimeModule{german-base} +% \end{macrocode} +% +% +% Allow the user to configure the "de-CH" and "de-CH-numeric" styles. +% The package wide separators such as \cs{dtm@datetimesep} are not used +% in case other date formats are also required. +% +%\begin{macro}{\DTMdeCHdowdaysep} +% The separator between weekday and day +% \begin{macrocode} +\newcommand*{\DTMdeCHdowdaysep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHdaymonthsep} +% The separator between the day and month for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeCHdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHmonthyearsep} +% The separator between the month and year for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeCHmonthyearsep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHdatetimesep} +% The separator between the date and time blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeCHdatetimesep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHtimezonesep} +% The separator between the time and zone blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeCHtimezonesep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHdatesep} +% The separator for the numeric date format. +% \begin{macrocode} +\newcommand*{\DTMdeCHdatesep}{.} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHtimesep} +% The separator for the numeric time format. +% \begin{macrocode} +\newcommand*{\DTMdeCHtimesep}{.} +% \end{macrocode} +%\end{macro} +% +% Provide keys that can be used in \cs{DTMlangsetup} to set these +% separators. +% \begin{macrocode} +\DTMdefkey{de-CH}{dowdaysep}{\renewcommand*{\DTMdeCHdowdaysep}{#1}} +\DTMdefkey{de-CH}{daymonthsep}{\renewcommand*{\DTMdeCHdaymonthsep}{#1}} +\DTMdefkey{de-CH}{monthyearsep}{\renewcommand*{\DTMdeCHmonthyearsep}{#1}} +\DTMdefkey{de-CH}{datetimesep}{\renewcommand*{\DTMdeCHdatetimesep}{#1}} +\DTMdefkey{de-CH}{timezonesep}{\renewcommand*{\DTMdeCHtimezonesep}{#1}} +\DTMdefkey{de-CH}{datesep}{\renewcommand*{\DTMdeCHdatesep}{#1}} +\DTMdefkey{de-CH}{timesep}{\renewcommand*{\DTMdeCHtimesep}{#1}} +% \end{macrocode} +% +% +% Define a boolean key that can switch between full and abbreviated formats for +% the month and day of week names. +% \begin{macrocode} +\DTMdefboolkey{de-CH}{abbr}[true]{} +% \end{macrocode} +% +% The default is to show the full name. +% \begin{macrocode} +\DTMsetbool{de-CH}{abbr}{false} +% \end{macrocode} +% +% Define a boolean key that determines if the time zone mappings +% should be used. +% \begin{macrocode} +\DTMdefboolkey{de-CH}{mapzone}[true]{} +% \end{macrocode} +% The default is to use mappings. +% \begin{macrocode} +\DTMsetbool{de-CH}{mapzone}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the day of month should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-CH}{showdayofmonth}[true]{} +% \end{macrocode} +% The default is to show the day of month. +% \begin{macrocode} +\DTMsetbool{de-CH}{showdayofmonth}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the year should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-CH}{showyear}[true]{} +% \end{macrocode} +% The default is to show the year. +% \begin{macrocode} +\DTMsetbool{de-CH}{showyear}{true} +% \end{macrocode} +% +% +% Define the "de-CH" style. +% \begin{macrocode} +\DTMnewstyle +{de-CH}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-CH}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeCHdowdaysep + \fi + \fi + % + \DTMifbool{de-CH}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}% + {}% + % + \DTMifbool{de-CH}{abbr}% + {\DTMdeCHshortmonthname{##2}}% + {\DTMgermanmonthname{##2}}% + % + \DTMifbool{de-CH}{showyear}% + {% + \DTMdeCHmonthyearsep% + \number##1 % space intended + }% + {}% + }% + \renewcommand*\DTMDisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-CH}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeCHdowdaysep + \fi + \fi + % + \DTMifbool{de-CH}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}% + {}% + % + \DTMifbool{de-CH}{abbr}% + {\DTMdeCHshortmonthname{##2}}% + {\DTMgermanmonthname{##2}}% + % + \DTMifbool{de-CH}{showyear}% + {% + \DTMdeCHmonthyearsep% + \number##1 % space intended + }% + {}% + } +}% +{% time style (use default) + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeCHtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space% + Uhr% + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-CH}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMdeCHtimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeCHdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeCHtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}[9]{% + \ifDTMshowdate + \DTMDisplaydate{##1}{##2}{##3}{##4}% + \DTMdeCHdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeCHtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% +}% +% \end{macrocode} +% +% Define the corresponding numeric style. +% \begin{macrocode} +\DTMnewstyle +{de-CH-numeric}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-CH}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeCHdowdaysep + \fi + \fi + % + \DTMifbool{de-CH}{showdayofmonth}% + {% + \DTMtwodigits{##3}% + \DTMdeCHdatesep + }% + {}% + \DTMtwodigits{##2}% + \DTMdeCHdatesep% + \DTMifbool{de-CH}{showyear}% + {% + \DTMifbool{de-CH}{abbr}% + {\DTMtwodigits{##1}}% + {\number##1 }% space intended + }% + {}% + }% + \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% +}% +{% time style + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeCHtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space% + Uhr% + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-CH}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeCHdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeCHtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}{\DTMdisplay}% +} +% \end{macrocode} +% +% Switch the style according to the \opt{useregional} setting. +% \begin{macrocode} +\DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-CH}}% + {\DTMsetstyle{de-CH-numeric}}% +% \end{macrocode} +% +% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent +% \sty{babel} from resetting \cs{today}. (For this to work, +% \sty{babel} must already have been loaded if it's required.) +% \begin{macrocode} +\ifcsundef{date\CurrentTrackedDialect} +{% + \ifundef\dategerman + {}% do nothing + {% + \def\dategerman{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-CH}}% + {\DTMsetstyle{de-CH-numeric}}% + }% + }% +}% +{% + \csdef{date\CurrentTrackedDialect}{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-CH}}% + {\DTMsetstyle{de-CH-numeric}}% + }% +}% +% \end{macrocode} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx new file mode 100644 index 0000000000..e1c29938b6 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx @@ -0,0 +1,354 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{German (de-DE): \texttt{datetime2-de-DE.ldf}} +% \changes{2.0}{2017-10-03}{Added regional variant: German (de-DE)} +% +% Identify Module. +% \begin{macrocode} +\ProvidesDateTimeModule{de-DE}[2019/12/13 v3.0] +% \end{macrocode} +% Require the base German module. +% \begin{macrocode} +\RequireDateTimeModule{german-base} +% \end{macrocode} +% +% +% Allow the user to configure the "de-DE" and "de-DE-numeric" styles. +% The package wide separators such as \cs{dtm@datetimesep} are not used +% in case other date formats are also required. +% +%\begin{macro}{\DTMdeDEdowdaysep} +% The separator between weekday and day. +% \begin{macrocode} +\newcommand*{\DTMdeDEdowdaysep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEdaymonthsep} +% The separator between the day and month for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeDEdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEmonthyearsep} +% The separator between the month and year for the text format. +% \begin{macrocode} +\newcommand*{\DTMdeDEmonthyearsep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEdatetimesep} +% The separator between the date and time blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeDEdatetimesep}{,\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEtimezonesep} +% The separator between the time and zone blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMdeDEtimezonesep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEdatesep} +% The separator for the numeric date format. +% \begin{macrocode} +\newcommand*{\DTMdeDEdatesep}{.} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeDEtimesep} +% The separator for the numeric time format. +% \begin{macrocode} +\newcommand*{\DTMdeDEtimesep}{:} +% \end{macrocode} +%\end{macro} +% +% Provide keys that can be used in \cs{DTMlangsetup} to set these +% separators. +% \begin{macrocode} +\DTMdefkey{de-DE}{dowdaysep}{\renewcommand*{\DTMdeDEdowdaysep}{#1}} +\DTMdefkey{de-DE}{daymonthsep}{\renewcommand*{\DTMdeDEdaymonthsep}{#1}} +\DTMdefkey{de-DE}{monthyearsep}{\renewcommand*{\DTMdeDEmonthyearsep}{#1}} +\DTMdefkey{de-DE}{datetimesep}{\renewcommand*{\DTMdeDEdatetimesep}{#1}} +\DTMdefkey{de-DE}{timezonesep}{\renewcommand*{\DTMdeDEtimezonesep}{#1}} +\DTMdefkey{de-DE}{datesep}{\renewcommand*{\DTMdeDEdatesep}{#1}} +\DTMdefkey{de-DE}{timesep}{\renewcommand*{\DTMdeDEtimesep}{#1}} +% \end{macrocode} +% +% +% Define a boolean key that can switch between full and abbreviated formats for +% the month and day of week names. +% \begin{macrocode} +\DTMdefboolkey{de-DE}{abbr}[true]{} +% \end{macrocode} +% +% The default is to show the full names. +% \begin{macrocode} +\DTMsetbool{de-DE}{abbr}{false} +% \end{macrocode} +% +% Define a boolean key that determines if the time zone mappings +% should be used. +% \begin{macrocode} +\DTMdefboolkey{de-DE}{mapzone}[true]{} +% \end{macrocode} +% The default is to use mappings. +% \begin{macrocode} +\DTMsetbool{de-DE}{mapzone}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the day of month should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-DE}{showdayofmonth}[true]{} +% \end{macrocode} +% The default is to show the day of month. +% \begin{macrocode} +\DTMsetbool{de-DE}{showdayofmonth}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the year should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{de-DE}{showyear}[true]{} +% \end{macrocode} +% The default is to show the year. +% \begin{macrocode} +\DTMsetbool{de-DE}{showyear}{true} +% \end{macrocode} +% +% +% Define the "de-DE" style. +% \begin{macrocode} +\DTMnewstyle +{de-DE}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-DE}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeDEdowdaysep + \fi + \fi + % + \DTMifbool{de-DE}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}% + {}% + % + \DTMifbool{de-DE}{abbr}% + {\DTMgermanshortmonthname{##2}}% + {\DTMgermanmonthname{##2}}% + % + \DTMifbool{de-DE}{showyear}% + {% + \DTMdeDEmonthyearsep% + \number##1 % space intended + }% + {}% + }% + \renewcommand*\DTMDisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-DE}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeDEdowdaysep + \fi + \fi + % + \DTMifbool{de-DE}{showdayofmonth}% + {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}% + {}% + % + \DTMifbool{de-DE}{abbr}% + {\DTMgermanshortmonthname{##2}}% + {\DTMgermanmonthname{##2}}% + % + \DTMifbool{de-DE}{showyear}% + {% + \DTMdeDEmonthyearsep% + \number##1 % space intended + }% + {}% + } +}% +{% time style (use default) + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeDEtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-DE}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMdeDEtimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeDEdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeDEtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}[9]{% + \ifDTMshowdate + \DTMDisplaydate{##1}{##2}{##3}{##4}% + \DTMdeDEdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeDEtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% +}% +% \end{macrocode} +% +% Define the corresponding numeric style. +% \begin{macrocode} +\DTMnewstyle +{de-DE-numeric}% label +{% date style + \renewcommand*\DTMdisplaydate[4]{% + \ifDTMshowdow + \ifnum##4>-1 + \DTMifbool{de-DE}{abbr}% + {\DTMgermanshortweekdayname{##4}}% + {\DTMgermanweekdayname{##4}}% + \DTMdeDEdowdaysep + \fi + \fi + % + \DTMifbool{de-DE}{showdayofmonth}% + {% + \DTMtwodigits{##3}% + \DTMdeDEdatesep + }% + {}% + \DTMtwodigits{##2}% + \DTMdeDEdatesep% + \DTMifbool{de-DE}{showyear}% + {% + \DTMifbool{de-DE}{abbr}% + {\DTMtwodigits{##1}}% + {\number##1 }% space intended + }% + {}% + }% + \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% +}% +{% time style + \renewcommand*\DTMdisplaytime[3]{% + \DTMtwodigits{##1}% + \DTMdeDEtimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi + }% +}% +{% zone style + \DTMresetzones + \DTMgermanzonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{de-DE}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi + }% + }% +}% +{% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMdeDEdatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMdeDEtimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}{\DTMdisplay}% +} +% \end{macrocode} +% +% Switch the style according to the \opt{useregional} setting. +% \begin{macrocode} +\DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-DE}}% + {\DTMsetstyle{de-DE-numeric}}% +% \end{macrocode} +% +% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent +% \sty{babel} from resetting \cs{today}. (For this to work, +% \sty{babel} must already have been loaded if it's required.) +% \begin{macrocode} +\ifcsundef{date\CurrentTrackedDialect} +{% + \ifundef\dategerman + {}% do nothing + {% + \def\dategerman{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-DE}}% + {\DTMsetstyle{de-DE-numeric}}% + }% + }% +}% +{% + \csdef{date\CurrentTrackedDialect}{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{de-DE}}% + {\DTMsetstyle{de-DE-numeric}} + }% +}% +% \end{macrocode} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx new file mode 100644 index 0000000000..1a6842849a --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx @@ -0,0 +1,217 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{ASCII-code: \texttt{datetime2-german-base-ascii.ldf}} +% The definitions in this file use \LaTeX\ commands for non-ASCII characters. +% It should be used if neither \hologo{XeLaTeX} nor \hologo{LuaLaTeX} are used. +% Even if the user has loaded \sty{inputenc} with "utf8", this file should still +% be used instead of \texttt{datetime2-german-base-utf8.ldf} as the non-ASCII +% characters are made active in that situation and would need protecting +% against expansion. +% \changes{1.0}{2015-03-27}{Initial release} +% +% \medskip +% Identify module. +% \begin{macrocode} +\ProvidesDateTimeModule{german-base-ascii}[2019/12/13 v3.0] +% \end{macrocode} +% +%\begin{macro}{\DTMgermanmonthname} +% German month names. +% \begin{macrocode} +\newcommand*{\DTMgermanmonthname}[1]{% + \ifcase#1 + \or + Januar% + \or + Februar% + \or + M\protect\"arz% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + August% + \or + September% + \or + Oktober% + \or + November% + \or + Dezember% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATmonthname} +%\changes{2.0}{2017-10-03}{Implemented Austrian month names} +% Austrian German month names. +% \begin{macrocode} +\newcommand*{\DTMdeATmonthname}[1]{% + \ifcase#1 + \or + J\protect\"anner% + \or + Februar% + \or + M\protect\"arz% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + August% + \or + September% + \or + Oktober% + \or + November% + \or + Dezember% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMgermanshortmonthname} +% Abbreviated German month names. +%\changes{1.2}{2017-09-10}{Implemented short month names} +%\changes{2.0}{2017-10-03}{Fixed German short month names} +% \begin{macrocode} +\newcommand*{\DTMgermanshortmonthname}[1]{% + \ifcase#1 + \or + Jan.% + \or + Feb.% + \or + M\protect\"arz% + \or + Apr.% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATshortmonthname} +%\changes{2.0}{2017-10-03}{Implemented Austrian short month names} +% Abbreviated Austrian German month names. +% \begin{macrocode} +\newcommand*{\DTMdeATshortmonthname}[1]{% + \ifcase#1 + \or + J\protect\"an.% + \or + Feb.% + \or + M\protect\"arz% + \or + Apr.% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHshortmonthname} +% Abbreviated Swiss German month names. +%\changes{2.0}{2017-10-03}{Implemented Swiss short month names} +% \begin{macrocode} +\newcommand*{\DTMdeCHshortmonthname}[1]{% + \ifcase#1 + \or + Jan.% + \or + Febr.% + \or + M\protect\"arz% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx new file mode 100644 index 0000000000..ae6b248c22 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx @@ -0,0 +1,214 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{UTF-8 code: \texttt{datetime2-german-base-utf8.dtx}} +% The definitions in this file use UTF-8 characters. It is loaded if +% \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used. Please make sure that +% your text editor's encoding is set to UTF-8 if you want to view this code. +% \changes{1.0}{2015-03-27}{Initial release} +% +% \medskip +% Identify module. +% \begin{macrocode} +\ProvidesDateTimeModule{german-base-utf8}[2019/12/13 v3.0] +% \end{macrocode} +% +%\begin{macro}{\DTMgermanmonthname} +% German month names. +% \begin{macrocode} +\newcommand*{\DTMgermanmonthname}[1]{% + \ifcase#1 + \or + Januar% + \or + Februar% + \or + März% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + August% + \or + September% + \or + Oktober% + \or + November% + \or + Dezember% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATmonthname} +%\changes{2.0}{2017-10-03}{Implemented Austrian month names} +% Austrian German month names. +% \begin{macrocode} +\newcommand*{\DTMdeATmonthname}[1]{% + \ifcase#1 + \or + Jänner% + \or + Februar% + \or + März% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + August% + \or + September% + \or + Oktober% + \or + November% + \or + Dezember% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMgermanshortmonthname} +% Abbreviated German month names. +%\changes{1.2}{2017-09-10}{Implemented short month names} +%\changes{2.0}{2017-10-03}{Fixed German short month names} +% \begin{macrocode} +\newcommand*{\DTMgermanshortmonthname}[1]{% + \ifcase#1 + \or + Jan.% + \or + Feb.% + \or + März% + \or + Apr.% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeATshortmonthname} +%\changes{2.0}{2017-10-03}{Implemented Austrian short month names} +% Abbreviated Austrian German month names. +% \begin{macrocode} +\newcommand*{\DTMdeATshortmonthname}[1]{% + \ifcase#1 + \or + Jän.% + \or + Feb.% + \or + März% + \or + Apr.% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMdeCHshortmonthname} +% Abbreviated Swiss German month names. +%\changes{2.0}{2017-10-03}{Implemented Swiss short month names} +% \begin{macrocode} +\newcommand*{\DTMdeCHshortmonthname}[1]{% + \ifcase#1 + \or + Jan.% + \or + Febr.% + \or + März% + \or + April% + \or + Mai% + \or + Juni% + \or + Juli% + \or + Aug.% + \or + Sept.% + \or + Okt.% + \or + Nov.% + \or + Dez.% + \fi +} +% \end{macrocode} +%\end{macro} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx new file mode 100644 index 0000000000..7651fe0ada --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx @@ -0,0 +1,124 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \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 +%% Lower-case \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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +% +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +% \fi +% +% +% +% \subsection{Engine-independent code: \texttt{datetime2-german-base.ldf}} +% +% \changes{1.0}{2015-03-27}{Initial release} +% +% \medskip +% Identify module +% \begin{macrocode} +\ProvidesDateTimeModule{german-base}[2019/12/13 v3.0] +% \end{macrocode} +% +%\begin{macro}{\DTMgermanordinal} +% Ordinals used for printing the day of month. +% \begin{macrocode} +\newcommand*{\DTMgermanordinal}[1]{% + \number#1 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMgermanweekdayname} +% Weekday names. +% \begin{macrocode} +\newcommand*{\DTMgermanweekdayname}[1]{% + \ifcase#1 + Montag% + \or + Dienstag% + \or + Mittwoch% + \or + Donnerstag% + \or + Freitag% + \or + Samstag% + \or + Sonntag% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMgermanshortweekdayname} +% Abbreviated weekday names. +%\changes{1.2}{2017-09-10}{Implemented short weekday names} +%\changes{2.0}{2017-10-03}{Fixed short weekday names} +% \begin{macrocode} +\newcommand*{\DTMgermanshortweekdayname}[1]{% + \ifcase#1 + Mo% + \or + Di% + \or + Mi% + \or + Do% + \or + Fr% + \or + Sa% + \or + So% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMgermanzonemaps} +% The time zone mappings are set through this command, which can be +% redefined if extra mappings are required or mappings need to be +% removed. +%\changes{1.2}{2017-09-10}{Use German time zone names (ME[S]Z)} +% \begin{macrocode} +\newcommand*{\DTMgermanzonemaps}{% + \DTMdefzonemap{01}{00}{MEZ}% + \DTMdefzonemap{02}{00}{MESZ}% +} +% \end{macrocode} +%\end{macro} +% +% Load engine-dependent code. \\ +% \hologo{XeTeX} and \hologo{LuaTeX} natively support UTF-8, so the "german-base-utf8" +% module is loaded if either of those engines are used. \\ +% Otherwise, the "german-base-ascii" module is loaded. +% \begin{macrocode} +\RequirePackage{ifxetex, ifluatex} +\ifxetex + \RequireDateTimeModule{german-base-utf8} +\else + \ifluatex + \RequireDateTimeModule{german-base-utf8} + \else + \RequireDateTimeModule{german-base-ascii} + \fi +\fi +% \end{macrocode} +% +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx new file mode 100644 index 0000000000..ed3a95d843 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx @@ -0,0 +1,307 @@ +% \iffalse +%% Doc-Source file to use with LaTeX2e +%% Copyright (C) 2015 Nicola Talbot, all rights reserved. +%% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. +%% +%% This work is subject to the LaTeX Project Public License, Version 1.3c or -- at +%% your option -- any later version of this license. +%% +%% +%% This work has the LPPL maintenance status 'maintained'. +%% Current maintainer of the work is Sebastian Friedl. +% \fi + +% !TeX spellcheck=en_US + +\documentclass[11pt]{ltxdoc} + +\RequirePackage{iftex} +\RequireLuaTeX + + +\usepackage[no-math]{fontspec} +\usepackage{polyglossia} +\setdefaultlanguage{english} +\usepackage[english]{selnolig} + +\usepackage{alltt} +\usepackage{csquotes} +\usepackage{graphicx} +\usepackage{hologo} +\usepackage{multicol} + +\usepackage{array} +\usepackage{booktabs} +\usepackage{tabularx} + +\usepackage[unicode, pdfborder={0 0 0}, linktoc=all, hyperindex=false]{hyperref} +\usepackage{verbatim} + +\usepackage[erewhon]{newtxmath} +\setmainfont{Source Serif Pro} +\setsansfont{Source Sans Pro} +\setmonofont[Scale=MatchLowercase]{Hack} + +\usepackage[a4paper, left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry} + +\parindent 0pt + +\CheckSum{1068} + +\renewcommand*{\usage}[1]{\hyperpage{#1}} +\renewcommand*{\main}[1]{\hyperpage{#1}} +\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}} +\setcounter{IndexColumns}{2} + +\newcommand*{\sty}[1]{\textsf{#1}} +\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}} + +\RecordChanges +\PageIndex +\CodelineNumbered + + +\MakeShortVerb{"} + +\title{German Module for the \sty{datetime2} Package \\ {\large\url{https://gitlab.com/SFr682k/datetime2-german}}} +\author{% + \begin{tabularx}{.8\textwidth}{*{2}{>{\centering\arraybackslash}X}} + Nicola L. C. Talbot & Sebastian Friedl \\ + (inactive) & {\normalsize\href{mailto:sfr682k@t-online.de}{\texttt{sfr682k@t-online.de}}} \\ + \end{tabularx}% +} +\date{2019/12/13 (v3.0)} + +\hypersetup{pdftitle={datetime2.sty German Module}, pdfauthor={Nicola L.C. Talbot, Sebastian Friedl}} + + +\begin{document} + \maketitle + + + \begin{abstract} + This is the German language module for the \sty{datetime2} package. It defines a regionless style as well as variant styles ("de-DE", "de-AT" and "de-CH"). + + If you want to use the settings in this module you must install it in addition to installing \sty{datetime2}. + If you use \sty{babel} or \sty{polyglossia}, you will need this module to prevent them from redefining \cs{today}. + + The \sty{datetime2} \opt{useregional} setting must be set to "text" or "numeric" for the language styles to be set. + Alternatively, you can set the style in the document using \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language} depending on the value of the \opt{useregional} setting. + \end{abstract} + + + + + \clearpage + \tableofcontents + \clearpage + + + + \subsection*{Installation} + \addcontentsline{toc}{subsection}{Installation} + Extract the language definition files first: + \begin{enumerate} + \item Run \LaTeX\ over the file "datetime2-german.ins": \\ + "latex datetime2-german.ins" + + \item Move all "*.ldf" files to "TEXMF/tex/latex/datetime2-contrib/datetime2-german/" + \end{enumerate} + Then, you can compile the documentation yourself by executing \\[\smallskipamount] + "lualatex datetime2-german-doc.dtx" \\ + "makeindex -s gind.ist datetime2-german-doc.idx" \\ + "makeindex -s gglo.ist -o datetime2-german-doc.gls datetime2-german-doc.glo" \\ + "lualatex datetime2-german-doc.dtx" \\ + "lualatex datetime2-german-doc.dtx" \\[\medskipamount] + or just use the precompiled documentation shipped with the source files. \\ + In both cases, copy the files "datetime2-german-doc.pdf" and "README.md" to \\ + "TEXMF/doc/latex/datetime2-contrib/datetime2-german/" + + + \subsection*{License} + \addcontentsline{toc}{subsection}{License} + This material is subject to the \LaTeX\ Project Public License, Version 1.3c or later. \\ + Details may be found in the respective language definition file's copyright header. + + + \subsection*{Acknowledgments} + \addcontentsline{toc}{subsection}{Acknowledgments} + Thanks to \dots + \begin{itemize} + \item Jürgen Spitzmüller for his valuable advice while preparing version 2.0 of this module. + + \item Bernhard Waldbrunner for his merge request, which resulted in the adoption of the DD.MM.YYYY numeric date format with the Austrian numeric style in version 3.0. + Previous versions used the ISO format (YYYY-MM-DD) as recommended by ÖNORM~1080, which was withdrawn in May~2018. + \end{itemize} + + + + \clearpage + \part{The Documentation} + \section{Usage} + + + \subsection{Setting up \sty{datetime2} with a language module} + \textit{There are several methods of loading a language module. \\ Please refer to \sty{datetime2}'s documentation for details.} + + \bigskip + \textbf{Variant 1:} \\ + Set the date style explicitly by passing "german", "de-DE", "de-AT" or "de-CH" to \sty{datetime2}: \\[\smallskipamount] + "\documentclass{article}" \\ + "\usepackage[german]{datetime2}" \\ + "\begin{document}" \\ + "\today" \\ + "\end{document}" + + \medskip + \textbf{Variant 2: Pick up the desired style from \sty{babel} or document class options)} \\ + Pass the language (e.g. "german", "ngerman", "austrian", "naustrian", \dots) as an option to the \cs{documentclass} command (or \sty{babel} itself). As soon as the \opt{useregional} option is passed to \sty{datetime2}, the suitable language module is loaded: \\[\smallskipamount] + "\documentclass[german]{article}" \\ + "\usepackage{babel}" \\ + "\usepackage[useregional]{datetime2}" \\ + "\begin{document}" \\ + "\today" \\ + "\end{document}" + + + + + + \subsection{Customization} + There are a number of settings provided that can be used in \cs{DTMlangsetup} to modify the date-time style. These are: + \begin{description} + \item["dowdaysep"]% + The separator between the day of week name and the day of month number. + + \item["daymonthsep"]% + The separator between the day and the month name. + + \item["monthyearsep"]% + The separator between the month name and year. + + \item["datesep"]% + The separator between the date numbers in the "numeric" styles. + + \item["timesep"]% + The separator between hours, minutes and seconds. + + \item["datetimesep"]% + The separator between the date and time for the full date-time format. + + \item["timezonesep"]% + The separator between the time and zone for the full date-time format. + + \item["abbr"]% + This is a boolean key. If "true", the month (and weekday name, if shown) is abbreviated. + + \item["mapzone"]% + This is a boolean key. If "true", the time zone mappings are applied. + + \item["showdayofmonth"]% + A boolean key that determines whether or not to show the day of the month. + + \item["showyear"]% + A boolean key that determines whether or not to show the year. + \end{description} + + Although these keys are \textit{defined} for all variant styles, it depends on \sty{datetime2}'s configuration and the requested styles whether they're \textit{used}. More details about the \cs{DTMlangsetup} command can be found in \sty{datetime2}'s documentation. + + + + + % TODO: check styles + \section{The Modules} + \subsection{Regionless style (\texttt{german})} + \begin{tabularx}{\textwidth}{>{\itshape}rX} + \toprule + \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\ + abbr. & 13. Dez. 2019, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule + \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\ + abbr. & 13.12.19, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule + \end{tabularx} + + + \subsection{German style (\texttt{de-DE})} + \begin{tabularx}{\textwidth}{>{\itshape}rX} + \toprule + \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\ + abbr. & 13. Dez. 2019, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule + \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\ + abbr. & 13.12.19, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule + \end{tabularx} + + + \subsection{Austrian style (\texttt{de-AT})} + \begin{tabularx}{\textwidth}{>{\itshape}rX} + \toprule + \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\ + abbr. & 13. Dez. 2019, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule + \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\ + with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\ + abbr. & 13.12.19, 12:42:00 MEZ \\ + abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule + \end{tabularx} + + + \subsection{Swiss style (\texttt{de-CH})} + \begin{tabularx}{\textwidth}{>{\itshape}rX} + \toprule + \upshape\textbf{Textual style} & 13. Dezember 2019, 12.42.00 Uhr MEZ \\ + with \opt{showdow} option & Freitag, 13. Dezember 2019, 12.42.00 Uhr MEZ \\ + abbr. & 13. Dez. 2019, 12.42.00 Uhr MEZ \\ + abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12.42.00 Uhr MEZ \\ \midrule + \upshape\textbf{Numeric style} & 13.12.2019, 12.42.00 Uhr MEZ \\ + with \opt{showdow} option & Freitag, 13.12.2019, 12.42.00 Uhr MEZ \\ + abbr. & 13.12.19, 12.42.00 Uhr MEZ \\ + abbr., with \opt{showdow} option & Fr, 13.12.19, 12.42.00 Uhr MEZ \\ \bottomrule + \end{tabularx} + + + + + + \StopEventually{% + \clearpage + \phantomsection + \addcontentsline{toc}{section}{Change History}% + \PrintChanges% + \addcontentsline{toc}{section}{\indexname}% + \PrintIndex% + } + + + + + + \clearpage + \part{The Code} + % TODO: Load code modules + + \section{The Base Module} + The "german-base" module provides code common to all regional variations and engine-dependent code, e.\,g. commands printing weekday and month names. + + \DocInput{datetime2-german-base.dtx} + \DocInput{datetime2-german-base-ascii.dtx} + \DocInput{datetime2-german-base-utf8.dtx} + + + \section{Regionless Style: \texttt{datetime2-german.ldf}} + \DocInput{datetime2-german.dtx} + + \section{Regional Variations} + \DocInput{datetime2-de-DE.dtx} + \DocInput{datetime2-de-AT.dtx} + \DocInput{datetime2-de-CH.dtx} + + \Finale +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf Binary files differnew file mode 100644 index 0000000000..2f0c7a9b55 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx index f992035f59..886cbb60c6 100644 --- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx @@ -16,842 +16,35 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %</package> -%\fi -% \iffalse +% % Doc-Source file to use with LaTeX2e % Copyright (C) 2015 Nicola Talbot, all rights reserved. -% Copyright (C) 2017 Sebastian Friedl, all rights reserved. +% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved. % \fi -% \iffalse -%<*driver> -\documentclass{ltxdoc} - -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} - -\usepackage{alltt} -\usepackage{csquotes} -\usepackage{graphicx} -\usepackage{hologo} -\usepackage{multicol} -\usepackage[bookmarks, - hyperindex=false, - pdfauthor={Nicola L.C. Talbot, Sebastian Friedl}, - pdftitle={datetime2.sty German Module}]{hyperref} -\usepackage{verbatim} - -\usepackage[p,space]{erewhon} -\usepackage{sourcesanspro} -\usepackage{inconsolata} -\usepackage[utopia,vvarbb]{newtxmath} - -\usepackage[left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry} - -\parindent0pt - -\CheckSum{1085} - -\renewcommand*{\usage}[1]{\hyperpage{#1}} -\renewcommand*{\main}[1]{\hyperpage{#1}} -\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}} -\setcounter{IndexColumns}{2} - -\newcommand*{\sty}[1]{\textsf{#1}} -\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}} - -\RecordChanges -\PageIndex -\CodelineNumbered - -\begin{document} -\DocInput{datetime2-german.dtx} -\end{document} -%</driver> -%\fi -% -%\MakeShortVerb{"} -% -%\title{German Module for the \sty{datetime2} Package \\ {\large\url{https://github.com/SFr682k/datetime2-german}}} -%\author{\begin{tabular}{cp{.05\textwidth}c} Nicola L. C. Talbot && Sebastian Friedl \\ (inactive) && {\normalsize\href{mailto:sfr682k@t-online.de}{\texttt{sfr682k@t-online.de}}} \end{tabular}} -%\date{2017-11-13 (v2.1)} -%\maketitle -% -% -%\begin{abstract} -% This is the German language module for the \sty{datetime2} -% package. If you want to use the settings in this module you must -% install it in addition to installing \sty{datetime2}. If you use -% \sty{babel} or \sty{polyglossia}, you will need this module to -% prevent them from redefining \cs{today}. The \sty{datetime2} -% \opt{useregional} setting must be set to "text" or "numeric" -% for the language styles to be set. -% Alternatively, you can set the style in the document using -% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language} -% depending on the value of the \opt{useregional} setting. -%\end{abstract} -% -% -% -% Currently there is a regionless style as well as variant styles ("de-DE", "de-AT" and "de-CH"). \\[\smallskipamount] -% I'm only capable of German standard German. If I messed up anything in regards to format and/or spelling, or even a variant style with differences to the existing ones is missing, please create a feature request on GitHub or send me an e--mail. \\ -% I would be very grateful, if some examples and/or a list of the weekdays' and months' spelling is/are also provided. -% -% \bigskip -% Thanks to Jürgen Spitzmüller for his valuable advice while developing Version 2.0 of this module. -% -% -% \clearpage -% \tableofcontents -% \clearpage % % % -% \section{Installation} -% Extract the language definition files first: -% \begin{enumerate} -% \item -% Run \LaTeX\ over the file \texttt{datetime2-german.ins}: \\ -% \verb|latex datetime2-german.ins| -% % -% \item -% Move all \texttt{*.ldf} files to \texttt{TEXMF/tex/latex/datetime2-contrib/datetime2-german/} -% \end{enumerate} -% Then, you can compile the documentation yourself by executing \\[\smallskipamount] -%\verb|pdflatex datetime2-german.dtx| \\ -%\verb|makeindex -s gind.ist datetime2-german.idx| \\ -%\verb|makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo| \\ -%\verb|pdflatex datetime2-german.dtx| \\ -%\verb|pdflatex datetime2-german.dtx| \\[\medskipamount] -% or just use the precompiled documentation shipped with the sorce files. \\ -% In both cases, copy the files \texttt{datetime2-german.pdf} and \texttt{README.md} to \\ -% \texttt{TEXMF/doc/latex/datetime2-contrib/datetime2-german/} +% \changes{1.0}{2015-03-27}{Initial release} +% \changes{3.0}{2019-12-13}{Load regionless style only when no regional variant is stated} % -% -% -% \clearpage -% \part{The Documentation} -% \section{Setting up \sty{datetime2} with a language module} -% \subsection{Loading a language module} -% \textit{There are three different ways to load the required language module. See the \sty{datetime2} documentation for further details} +% This file contains the style used when German is requested without a known region. % % \medskip -% -% \textbf{Variant 1:} \\ -% Request the desired language module explicitly by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount] -%\verb|\documentclass{article}| \\ -%\verb|\usepackage[german]{datetime2}| \\ -%\verb|\begin{document}| \\ -%\verb|\today| \\ -%\verb|\end{document}| \\[\medskipamount] -% -% \textbf{Variant 2:} \\ -% Load \sty{babel} and pass the "german", "austrian" or "swissgerman" option to the \verb|\documentclass| command (or to \sty{babel} directly). If you now pass the \opt{useregional} option to \sty{datetime2}, the language module suitable to the one specified with \sty{babel} is loaded: \\[\smallskipamount] -%\verb|\documentclass[german]{article}| \\ -%\verb|\usepackage{babel}| \\ -%\verb|\usepackage[useregional]{datetime2}| \\ -%\verb|\begin{document}| \\ -%\verb|\today| \\ -%\verb|\end{document}| \\[\medskipamount] -% -% \textbf{Variant 3:} \\ -% When using \sty{polyglossia}, you should request the desired language module by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount] -%\verb|\documentclass{article}| \\ -%\verb|\usepackage{polyglossia}| \\ -%\verb|\setmainlanguage{german}| \\ -%\verb|\usepackage[german]{datetime2}| \\ -%\verb|\begin{document}| \\ -%\verb|\today| \\ -%\verb|\end{document}| -% -% -% \subsection{Other features} -% \subsubsection{Showing the weekday} -% All language modules shipped with \sty{datetime2-german} support showing the weekday. \\ -% To enable this feature, pass the \opt{showdow} option to the \sty{datetime2} package. \\ -% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant. -% -% \subsubsection{Using abbreviated weekday and month names} -% To enable abbreviated weekday and month names, use \verb|\DTMlangsetup[german]{abbr}|. \\ -% To disable them, use \verb|\DTMlangsetup[german]{abbr=false}|. -% -% \medskip -% In both cases, replace "german" with the used variant style ("de-DE", "de-AT" or "de-CH"). \\ -% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant. -% -% -% \section{Style examples} -% \subsection{Regionless style} -% \begin{itemize} -% \item Non--numeric style: \\ -% 3. Oktober 2017, 12:51:04 MESZ \\ -% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% % -% \item Numeric style: \\ -% 03.10.2017, 12:51:04 MESZ \\ -% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% \end{itemize} -% -% -% \subsection{German style (\texttt{de-DE})} -% \begin{itemize} -% \item Non--numeric style: \\ -% 3. Oktober 2017, 12:51:04 MESZ \\ -% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% % -% \item Numeric style: \\ -% 03.10.2017, 12:51:04 MESZ \\ -% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% \end{itemize} -% -% -% \subsection{Austrian style (\texttt{de-AT})} -% \begin{itemize} -% \item Non--numeric style: \\ -% 3. Oktober 2017, 12:51:04 MESZ \\ -% 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% % -% \item Numeric style: \\ -% 2017-10-03, 12:51:04 MESZ -% \end{itemize} -% -% -% \subsection{Swiss style (\texttt{de-CH})} -% \begin{itemize} -% \item Non--numeric style: \\ -% 3. Oktober 2017, 12.51.04 Uhr MESZ \\ -% 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 3. Oktober 2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% % -% \item Numeric style: \\ -% 03.10.2017, 12.51.04 Uhr MESZ \\ -% 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\ -% Dienstag, 03.10.2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\ -% Di, 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option} -% \end{itemize} -% -% -% -% \section{Further customization of styles} -% There are a number of settings provided that can be used in \verb|\DTMlangsetup| to modify the date-time style. These are: -% \begin{description} -% \item["dowdaysep"]% -% The separator between the day of week name and the day of month number. -% -% \item["daymonthsep"]% -% The separator between the day and the month name -% -% \item["monthyearsep"]% -% The separator between the month name and year -% -% \item["datesep"]% -% The separator between the date numbers in the "numeric style"s -% -% \item["timesep"]% -% The separator between hours, minutes and seconds -% -% \item["datetimesep"]% -% The separator between the date and time for the full date-time format -% -% \item["timezonesep"]% -% The separator between the time and zone for the full date-time format -% -% \item["abbr"]% -% This is a boolean key. If "true", the month (and weekday name, if shown) is abbreviated. -% -% \item["mapzone"]% -% This is a boolean key. If "true", the time zone mappings are applied. -% -% \item["showdayofmonth"]% -% A boolean key that determines whether or not to show the day of the month -% -% \item["showyear"]% -% A boolean key that determines whether or not to show the year -%\end{description} -% -% -% Although the keys listed here are \textit{defined} for all variant styles, it depends on \sty{datetime2}'s setup and the requested styles whether they're \textit{used}. \\ -% For more information about the \verb|\DTMlangsetup| command see the documentation of the main \sty{datetime2} package. -% -% -% \section{License} -% This material is subject to the \LaTeX\ Project Public License, Version 1.3c or later. \\ -% See the copyright headers of the single files for further details. -% -% -% -%\StopEventually{% -%\clearpage -%\phantomsection -%\addcontentsline{toc}{section}{Change History}% -%\PrintChanges -%\addcontentsline{toc}{section}{\indexname}% -%\PrintIndex} -%\clearpage -%\part{The Code} -%\iffalse -% \begin{macrocode} -%<*datetime2-german-utf8.ldf> -% \end{macrocode} -%\fi -%\section{Basic German module} -% This module defines the \enquote{basic} German style, which contains the necessary vocab for all German localizations. \\ -% The date and time format is based on the "de-DE" variant. -% -%\subsection{Weekday and month names (UTF-8)} -%This file contains the settings that use UTF-8 characters. This -%file is loaded if \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used. Please make sure -%your text editor is set to UTF-8 if you want to view this code. -%\changes{1.0}{2015-03-27}{Initial release} -% -% Identify module -% \begin{macrocode} -\ProvidesDateTimeModule{german-utf8}[2017/11/13 v2.1] -% \end{macrocode} -%\begin{macro}{\DTMgermanordinal} -% \begin{macrocode} -\newcommand*{\DTMgermanordinal}[1]{% - \number#1 -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanmonthname} -% German month names. -% \begin{macrocode} -\newcommand*{\DTMgermanmonthname}[1]{% - \ifcase#1 - \or - Januar% - \or - Februar% - \or - März% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - August% - \or - September% - \or - Oktober% - \or - November% - \or - Dezember% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATmonthname} -%\changes{2.0}{2017-10-03}{Austrian month names implemented} -% Austrian German month names. Spot the difference :D -% \begin{macrocode} -\newcommand*{\DTMdeATmonthname}[1]{% - \ifcase#1 - \or - Jänner% - \or - Februar% - \or - März% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - August% - \or - September% - \or - Oktober% - \or - November% - \or - Dezember% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanshortmonthname} -% Abbreviated German month names. -%\changes{1.2}{2017-09-10}{Short month names implemented} -%\changes{2.0}{2017-10-03}{Short month names fixed} -% \begin{macrocode} -\newcommand*{\DTMgermanshortmonthname}[1]{% - \ifcase#1 - \or - Jan.% - \or - Feb.% - \or - März% - \or - Apr.% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATshortmonthname} -%\changes{2.0}{2017-10-03}{Austrian short month names implemented} -% Abbreviated Austrian German month names. -% \begin{macrocode} -\newcommand*{\DTMdeATshortmonthname}[1]{% - \ifcase#1 - \or - Jän.% - \or - Feb.% - \or - März% - \or - Apr.% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHshortmonthname} -% Abbreviated Swiss German month names. -%\changes{2.0}{2017-10-03}{Swiss German short month names implemented} -% \begin{macrocode} -\newcommand*{\DTMdeCHshortmonthname}[1]{% - \ifcase#1 - \or - Jan.% - \or - Febr.% - \or - März% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanweekdayname} -% Provides weekday names -% \begin{macrocode} -\newcommand*{\DTMgermanweekdayname}[1]{% - \ifcase#1 - Montag% - \or - Dienstag% - \or - Mittwoch% - \or - Donnerstag% - \or - Freitag% - \or - Samstag% - \or - Sonntag% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanshortweekdayname} -%Provides abbreviated weekday names -%\changes{1.2}{2017-09-10}{Short weekday names implemented} -%\changes{2.0}{2017-10-03}{Short weekday names fixed} -% \begin{macrocode} -\newcommand*{\DTMgermanshortweekdayname}[1]{% - \ifcase#1 - Mo% - \or - Di% - \or - Mi% - \or - Do% - \or - Fr% - \or - Sa% - \or - So% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\iffalse -% \begin{macrocode} -%</datetime2-german-utf8.ldf> -% \end{macrocode} -%\fi -%\iffalse -% \begin{macrocode} -%<*datetime2-german-ascii.ldf> -% \end{macrocode} -%\fi -%\subsection{Weekday and month names (ASCII)} -%This file contains the settings that use \LaTeX\ commands for -%non-ASCII characters. This should be input if neither \hologo{XeLaTeX} nor -%\hologo{LuaLaTeX} are used. Even if the user has loaded \sty{inputenc} with -%"utf8", this file should still be used not the -%\texttt{datetime2-german-utf8.ldf} file as the non-ASCII -%characters are made active in that situation and would need -%protecting against expansion. -%\changes{1.0}{2015-03-27}{Initial release} -% -% Identify module -% \begin{macrocode} -\ProvidesDateTimeModule{german-ascii}[2017/11/13 v2.1] -% \end{macrocode} -% -%\begin{macro}{\DTMgermanordinal} -% \begin{macrocode} -\newcommand*{\DTMgermanordinal}[1]{% - \number#1 -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanmonthname} -% German month names. -% \begin{macrocode} -\newcommand*{\DTMgermanmonthname}[1]{% - \ifcase#1 - \or - Januar% - \or - Februar% - \or - M\protect\"arz% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - August% - \or - September% - \or - Oktober% - \or - November% - \or - Dezember% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATmonthname} -%\changes{2.0}{2017-10-03}{Austrian month names implemented} -% Austrian German month names. -% \begin{macrocode} -\newcommand*{\DTMdeATmonthname}[1]{% - \ifcase#1 - \or - J\protect\"anner% - \or - Februar% - \or - M\protect\"arz% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - August% - \or - September% - \or - Oktober% - \or - November% - \or - Dezember% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanshortmonthname} -% Abbreviated German month names. -%\changes{1.2}{2017-09-10}{Short month names implemented} -%\changes{2.0}{2017-10-03}{Short month names fixed} -% \begin{macrocode} -\newcommand*{\DTMgermanshortmonthname}[1]{% - \ifcase#1 - \or - Jan.% - \or - Feb.% - \or - M\protect\"arz% - \or - Apr.% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATshortmonthname} -%\changes{2.0}{2017-10-03}{Austrian short month names implemented} -% Abbreviated Austrian German month names. -% \begin{macrocode} -\newcommand*{\DTMdeATshortmonthname}[1]{% - \ifcase#1 - \or - J\protect\"an.% - \or - Feb.% - \or - M\protect\"arz% - \or - Apr.% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHshortmonthname} -% Abbreviated Swiss German month names. -%\changes{2.0}{2017-10-03}{Swiss German short month names implemented} -% \begin{macrocode} -\newcommand*{\DTMdeCHshortmonthname}[1]{% - \ifcase#1 - \or - Jan.% - \or - Febr.% - \or - M\protect\"arz% - \or - April% - \or - Mai% - \or - Juni% - \or - Juli% - \or - Aug.% - \or - Sept.% - \or - Okt.% - \or - Nov.% - \or - Dez.% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanweekdayname} -%Provides weekday names -% \begin{macrocode} -\newcommand*{\DTMgermanweekdayname}[1]{% - \ifcase#1 - Montag% - \or - Dienstag% - \or - Mittwoch% - \or - Donnerstag% - \or - Freitag% - \or - Samstag% - \or - Sonntag% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMgermanshortweekdayname} -%Provides abbreviated weekday names -%\changes{1.2}{2017-09-10}{Short weekday names implemented} -%\changes{2.0}{2017-10-03}{Short weekday names fixed} -% \begin{macrocode} -\newcommand*{\DTMgermanshortweekdayname}[1]{% - \ifcase#1 - Mo% - \or - Di% - \or - Mi% - \or - Do% - \or - Fr% - \or - Sa% - \or - So% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\iffalse -% \begin{macrocode} -%</datetime2-german-ascii.ldf> -% \end{macrocode} -%\fi -% -%\subsection{Basic German Module (\texttt{datetime2-german.ldf})} -%\changes{1.0}{2015-03-27}{Initial release} -% -%\iffalse -% \begin{macrocode} -%<*datetime2-german.ldf> -% \end{macrocode} -%\fi -% -% Identify Module -% \begin{macrocode} -\ProvidesDateTimeModule{german}[2017/11/13 v2.1] -% \end{macrocode} -% Need to find out if \hologo{XeTeX} or \hologo{LuaTeX} are being used. +% Identify Module. % \begin{macrocode} -\RequirePackage{ifxetex,ifluatex} +\ProvidesDateTimeModule{german}[2019/12/13 v3.0] % \end{macrocode} -% \hologo{XeTeX} and \hologo{LuaTeX} natively support UTF-8, so load -% \texttt{german-utf8} if either of those engines are used -% otherwise load \texttt{german-ascii}. +% Require the base German module % \begin{macrocode} -\ifxetex - \RequireDateTimeModule{german-utf8} -\else - \ifluatex - \RequireDateTimeModule{german-utf8} - \else - \RequireDateTimeModule{german-ascii} - \fi -\fi +\RequireDateTimeModule{german-base} % \end{macrocode} % -% Define the \texttt{german} style. -% -% Allow the user a way of configuring the "german" and -% "german-numeric" styles. This doesn't use the package wide -% separators such as -% \cs{dtm@datetimesep} in case other date formats are also required. +% Allow the user to configure the "german" and "german-numeric" styles. +% The package wide separators such as \cs{dtm@datetimesep} are not used +% in case other date formats are also required. % %\begin{macro}{\DTMgermandowdaysep} -% The separator between weekday and day +% The separator between weekday and day. % \begin{macrocode} \newcommand*{\DTMgermandowdaysep}{,\space} % \end{macrocode} @@ -901,8 +94,7 @@ % \end{macrocode} %\end{macro} % -%Provide keys that can be used in \cs{DTMlangsetup} to set these -%separators. +% Provide keys that can be used in \cs{DTMlangsetup} to set these separators. % \begin{macrocode} \DTMdefkey{german}{dowdaysep}{\renewcommand*{\DTMgermandowdaysep}{#1}} \DTMdefkey{german}{daymonthsep}{\renewcommand*{\DTMgermandaymonthsep}{#1}} @@ -915,12 +107,12 @@ % % % Define a boolean key that can switch between full and abbreviated formats for -% the month and day of week names in the text format. +% the month and day of week names. % \begin{macrocode} \DTMdefboolkey{german}{abbr}[true]{} % \end{macrocode} % -% The default is full name +% The default is to show the full names. % \begin{macrocode} \DTMsetbool{german}{abbr}{false} % \end{macrocode} @@ -955,12 +147,12 @@ \DTMsetbool{german}{showyear}{true} % \end{macrocode} % -% Define the "german" style. -%\changes{1.1}{2017-03-09}{fixed bug in \cs{DTMDisplaydate}} -%\changes{1.2}{2017-09-10}{Short month names implemented} -%\changes{1.2}{2017-09-10}{Short weekday names implemented} -%\changes{1.2}{2017-09-10}{Day of week implemented} -%\changes{2.1}{2017-11-13}{Fixed strange spacing when switching languages} +% Define the (regionless) "german" style. +%\changes{1.1}{2017-03-09}{Fixed bug in \cs{DTMDisplaydate}} +%\changes{1.2}{2017-09-10}{Implemented short month names} +%\changes{1.2}{2017-09-10}{Implemented short weekday names} +%\changes{1.2}{2017-09-10}{Implemented day of week} +%\changes{2.1}{2017-11-13}{Fixed spurious space when switching languages} % \begin{macrocode} \DTMnewstyle {german}% label @@ -986,9 +178,7 @@ \DTMifbool{german}{showyear}% {% \DTMgermanmonthyearsep% - \DTMifbool{german}{abbr}% - {'\DTMtwodigits{##1}}% - {\number##1 }% space intended + \number##1 % space intended }% {}% }% @@ -1013,9 +203,7 @@ \DTMifbool{german}{showyear}% {% \DTMgermanmonthyearsep% - \DTMifbool{german}{abbr}% - {'\DTMtwodigits{##1}}% - {\number##1 }% space intended + \number##1 % space intended }% {}% }% @@ -1065,9 +253,9 @@ }% % \end{macrocode} % -% Define numeric style. -%\changes{1.2}{2017-09-10}{Day of week implemented} -%\changes{2.0}{2017-10-03}{Bugfix: month-year-separator} +% Define the corresponding numeric style. +%\changes{1.2}{2017-09-10}{Implemented day of week} +%\changes{2.0}{2017-10-03}{Fixed month-year-separator} % \begin{macrocode} \DTMnewstyle {german-numeric}% label @@ -1135,20 +323,7 @@ } % \end{macrocode} % -%\begin{macro}{\DTMgermanzonemaps} -% The time zone mappings are set through this command, which can be -% redefined if extra mappings are required or mappings need to be -% removed. -%\changes{1.2}{2017-09-10}{German time zone names (ME[S]Z)} -% \begin{macrocode} -\newcommand*{\DTMgermanzonemaps}{% - \DTMdefzonemap{01}{00}{MEZ}% - \DTMdefzonemap{02}{00}{MESZ}% -} -% \end{macrocode} -%\end{macro} - -% Switch style according to the \opt{useregional} setting. +% Switch the style according to the \opt{useregional} setting. % \begin{macrocode} \DTMifcaseregional {}% do nothing @@ -1183,1060 +358,5 @@ }% }% % \end{macrocode} -%\iffalse -% \begin{macrocode} -%</datetime2-german.ldf> -% \end{macrocode} -%\fi -% -% -% -% -% -% -% -% -% -% -% \section{German localization (\texttt{de-DE}, \texttt{datetime2-de-DE.ldf})} -%\changes{2.0}{2017-10-03}{German localization added} -%\iffalse -% \begin{macrocode} -%<*datetime2-de-DE.ldf> -% \end{macrocode} -%\fi -% Identify Module -% \begin{macrocode} -\ProvidesDateTimeModule{de-DE}[2017/11/13 v2.1] -% \end{macrocode} -% Require the basic German module -% \begin{macrocode} -\RequireDateTimeModule{german} -% \end{macrocode} -% -% -% Allow the user a way of configuring the "de-DE" and -% "de-DE-numeric" styles. This doesn't use the package wide -% separators such as -% \cs{dtm@datetimesep} in case other date formats are also required. -% -%\begin{macro}{\DTMdeDEdowdaysep} -% The separator between weekday and day -% \begin{macrocode} -\newcommand*{\DTMdeDEdowdaysep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEdaymonthsep} -% The separator between the day and month for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeDEdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEmonthyearsep} -% The separator between the month and year for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeDEmonthyearsep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEdatetimesep} -% The separator between the date and time blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeDEdatetimesep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEtimezonesep} -% The separator between the time and zone blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeDEtimezonesep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEdatesep} -% The separator for the numeric date format. -% \begin{macrocode} -\newcommand*{\DTMdeDEdatesep}{.} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeDEtimesep} -% The separator for the numeric time format. -% \begin{macrocode} -\newcommand*{\DTMdeDEtimesep}{:} -% \end{macrocode} -%\end{macro} -% -% Provide keys that can be used in \cs{DTMlangsetup} to set these -% separators. -% \begin{macrocode} -\DTMdefkey{de-DE}{dowdaysep}{\renewcommand*{\DTMdeDEdowdaysep}{#1}} -\DTMdefkey{de-DE}{daymonthsep}{\renewcommand*{\DTMdeDEdaymonthsep}{#1}} -\DTMdefkey{de-DE}{monthyearsep}{\renewcommand*{\DTMdeDEmonthyearsep}{#1}} -\DTMdefkey{de-DE}{datetimesep}{\renewcommand*{\DTMdeDEdatetimesep}{#1}} -\DTMdefkey{de-DE}{timezonesep}{\renewcommand*{\DTMdeDEtimezonesep}{#1}} -\DTMdefkey{de-DE}{datesep}{\renewcommand*{\DTMdeDEdatesep}{#1}} -\DTMdefkey{de-DE}{timesep}{\renewcommand*{\DTMdeDEtimesep}{#1}} -% \end{macrocode} -% -% -% Define a boolean key that can switch between full and abbreviated formats for -% the month and day of week names in the text format. -% \begin{macrocode} -\DTMdefboolkey{de-DE}{abbr}[true]{} -% \end{macrocode} -% -% The default is full name -% \begin{macrocode} -\DTMsetbool{de-DE}{abbr}{false} -% \end{macrocode} -% -% Define a boolean key that determines if the time zone mappings -% should be used. -% \begin{macrocode} -\DTMdefboolkey{de-DE}{mapzone}[true]{} -% \end{macrocode} -% The default is to use mappings. -% \begin{macrocode} -\DTMsetbool{de-DE}{mapzone}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the day of month should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-DE}{showdayofmonth}[true]{} -% \end{macrocode} -% The default is to show the day of month. -% \begin{macrocode} -\DTMsetbool{de-DE}{showdayofmonth}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the year should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-DE}{showyear}[true]{} -% \end{macrocode} -% The default is to show the year. -% \begin{macrocode} -\DTMsetbool{de-DE}{showyear}{true} -% \end{macrocode} -% -% -% Define the "de-DE" style -% \begin{macrocode} -\DTMnewstyle -{de-DE}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-DE}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeDEdowdaysep - \fi - \fi - % - \DTMifbool{de-DE}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}% - {}% - % - \DTMifbool{de-DE}{abbr}% - {\DTMgermanshortmonthname{##2}}% - {\DTMgermanmonthname{##2}}% - % - \DTMifbool{de-DE}{showyear}% - {% - \DTMdeDEmonthyearsep% - \DTMifbool{de-DE}{abbr}% - {'\DTMtwodigits{##1}}% - {\number##1 }% space intended - }% - {}% - }% - \renewcommand*\DTMDisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-DE}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeDEdowdaysep - \fi - \fi - % - \DTMifbool{de-DE}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}% - {}% - % - \DTMifbool{de-DE}{abbr}% - {\DTMgermanshortmonthname{##2}}% - {\DTMgermanmonthname{##2}}% - % - \DTMifbool{de-DE}{showyear}% - {% - \DTMdeDEmonthyearsep% - \DTMifbool{de-DE}{abbr}% - {'\DTMtwodigits{##1}}% - {\number##1 }% space intended - }% - {}% - } -}% -{% time style (use default) - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeDEtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-DE}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMdeDEtimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeDEdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeDEtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}[9]{% - \ifDTMshowdate - \DTMDisplaydate{##1}{##2}{##3}{##4}% - \DTMdeDEdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeDEtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% -}% -% \end{macrocode} -% -% Define numeric style. -% \begin{macrocode} -\DTMnewstyle -{de-DE-numeric}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-DE}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeDEdowdaysep - \fi - \fi - % - \DTMifbool{de-DE}{showdayofmonth}% - {% - \DTMtwodigits{##3}% - \DTMdeDEdatesep - }% - {}% - \DTMtwodigits{##2}% - \DTMdeDEdatesep% - \DTMifbool{de-DE}{showyear}% - {% - \DTMifbool{de-DE}{abbr}% - {\DTMtwodigits{##1}}% - {\number##1 }% space intended - }% - {}% - }% - \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% -}% -{% time style - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeDEtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-DE}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeDEdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeDEtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}{\DTMdisplay}% -} -% \end{macrocode} -% -% Switch style according to the \opt{useregional} setting. -% \begin{macrocode} -\DTMifcaseregional - {}% do nothing - {\DTMsetstyle{de-DE}} - {\DTMsetstyle{de-DE-numeric}} -% \end{macrocode} -% -% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent -% \sty{babel} from resetting \cs{today}. (For this to work, -% \sty{babel} must already have been loaded if it's required.) -% \begin{macrocode} -\ifcsundef{date\CurrentTrackedDialect} -{% - \ifundef\dategerman - {% do nothing - }% - {% - \def\dategerman{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{german}}% - {\DTMsetstyle{german-numeric}}% - }% - }% -}% -{% - \csdef{date\CurrentTrackedDialect}{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{de-DE}}% - {\DTMsetstyle{de-DE-numeric}} - }% -}% -% \end{macrocode} -% -%\iffalse -% \begin{macrocode} -%</datetime2-de-DE.ldf> -% \end{macrocode} -%\fi -% -% -% -% -% -% -% -% -% -% -% \section{Austrian German localization (\texttt{de-AT}, \texttt{datetime2-de-AT.ldf})} -%\changes{2.0}{2017-10-03}{Austrian German localization added} -% -%\iffalse -% \begin{macrocode} -%<*datetime2-de-AT.ldf> -% \end{macrocode} -%\fi -% Identify Module -% \begin{macrocode} -\ProvidesDateTimeModule{de-AT}[2017/11/13 v2.1] -% \end{macrocode} -% Require the basic German module -% \begin{macrocode} -\RequireDateTimeModule{german} -% \end{macrocode} -% -% -% Allow the user a way of configuring the "de-AT" and -% "de-AT-numeric" styles. This doesn't use the package wide -% separators such as -% \cs{dtm@datetimesep} in case other date formats are also required. -% -%\begin{macro}{\DTMdeATdowdaysep} -% The separator between weekday and day -% \begin{macrocode} -\newcommand*{\DTMdeATdowdaysep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATdaymonthsep} -% The separator between the day and month for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATmonthyearsep} -% The separator between the month and year for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeATmonthyearsep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATdatetimesep} -% The separator between the date and time blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeATdatetimesep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATtimezonesep} -% The separator between the time and zone blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeATtimezonesep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATdatesep} -% The separator for the numeric date format. -% \begin{macrocode} -\newcommand*{\DTMdeATdatesep}{-} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeATtimesep} -% The separator for the numeric time format. -% \begin{macrocode} -\newcommand*{\DTMdeATtimesep}{:} -% \end{macrocode} -%\end{macro} -% -% Provide keys that can be used in \cs{DTMlangsetup} to set these -% separators. -% \begin{macrocode} -\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}} -\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}} -\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}} -\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}} -\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}} -\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}} -\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}} -% \end{macrocode} -% -% -% Define a boolean key that can switch between full and abbreviated formats for -% the month and day of week names in the text format. -% \begin{macrocode} -\DTMdefboolkey{de-AT}{abbr}[true]{} -% \end{macrocode} -% -% The default is full name -% \begin{macrocode} -\DTMsetbool{de-AT}{abbr}{false} -% \end{macrocode} -% -% Define a boolean key that determines if the time zone mappings -% should be used. -% \begin{macrocode} -\DTMdefboolkey{de-AT}{mapzone}[true]{} -% \end{macrocode} -% The default is to use mappings. -% \begin{macrocode} -\DTMsetbool{de-AT}{mapzone}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the day of month should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-AT}{showdayofmonth}[true]{} -% \end{macrocode} -% The default is to show the day of month. -% \begin{macrocode} -\DTMsetbool{de-AT}{showdayofmonth}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the year should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-AT}{showyear}[true]{} -% \end{macrocode} -% The default is to show the year. -% \begin{macrocode} -\DTMsetbool{de-AT}{showyear}{true} -% \end{macrocode} -% -% -% Define the "de-AT" style -% \begin{macrocode} -\DTMnewstyle -{de-AT}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-AT}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeATdowdaysep - \fi - \fi - % - \DTMifbool{de-AT}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}% - {}% - % - \DTMifbool{de-AT}{abbr}% - {\DTMdeATshortmonthname{##2}}% - {\DTMdeATmonthname{##2}}% - % - \DTMifbool{de-AT}{showyear}% - {% - \DTMdeATmonthyearsep% - \number##1 % space intended - }% - {}% - }% - \renewcommand*\DTMDisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-AT}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeATdowdaysep - \fi - \fi - % - \DTMifbool{de-AT}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}% - {}% - % - \DTMifbool{de-AT}{abbr}% - {\DTMdeATshortmonthname{##2}}% - {\DTMdeATmonthname{##2}}% - % - \DTMifbool{de-AT}{showyear}% - {% - \DTMdeATmonthyearsep% - \number##1 % space intended - }% - {}% - }% -}% -{% time style (use default) - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeATtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-AT}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeATdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeATtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}[9]{% - \ifDTMshowdate - \DTMDisplaydate{##1}{##2}{##3}{##4}% - \DTMdeATdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeATtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% -}% -% \end{macrocode} -% -% Define numeric style. -% \begin{macrocode} -\DTMnewstyle -{de-AT-numeric}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \DTMifbool{de-AT}{showyear}% - {% - \number##1 % space intended - \DTMdeATdatesep% - }% - {}% - % - \DTMtwodigits{##2}% - % - \DTMifbool{de-AT}{showdayofmonth}% - {% - \DTMdeATdatesep% - \DTMtwodigits{##3}% - }% - {}% - }% - \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% -}% -{% time style - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeATtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-AT}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeATdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeATtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}{\DTMdisplay}% -} -% \end{macrocode} -% -% Switch style according to the \opt{useregional} setting. -% \begin{macrocode} -\DTMifcaseregional -{}% do nothing -{\DTMsetstyle{de-AT}}% -{\DTMsetstyle{de-AT-numeric}}% -% \end{macrocode} -% -% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent -% \sty{babel} from resetting \cs{today}. (For this to work, -% \sty{babel} must already have been loaded if it's required.) -% \begin{macrocode} -\ifcsundef{date\CurrentTrackedDialect} -{% - \ifundef\dategerman - {% do nothing - }% - {% - \def\dategerman{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{german}}% - {\DTMsetstyle{german-numeric}}% - }% - }% -}% -{% - \csdef{date\CurrentTrackedDialect}{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{de-AT}}% - {\DTMsetstyle{de-AT-numeric}}% - }% -}% -% \end{macrocode} -% -%\iffalse -% \begin{macrocode} -%</datetime2-de-AT.ldf> -% \end{macrocode} -%\fi -% -% -% -% -% -% -% -% -% -% -% \section{Swiss German localization (\texttt{de-CH}, \texttt{datetime2-de-CH.ldf})} -%\changes{2.0}{2017-10-03}{Swiss German localization added} -%\iffalse -% \begin{macrocode} -%<*datetime2-de-CH.ldf> -% \end{macrocode} -%\fi -% Identify Module -% \begin{macrocode} -\ProvidesDateTimeModule{de-CH}[2017/11/13 v2.1] -% \end{macrocode} -% Require the basic German module -% \begin{macrocode} -\RequireDateTimeModule{german} -% \end{macrocode} -% -% -% Allow the user a way of configuring the "de-CH" and -% "de-CH-numeric" styles. This doesn't use the package wide -% separators such as -% \cs{dtm@datetimesep} in case other date formats are also required. -% -%\begin{macro}{\DTMdeCHdowdaysep} -% The separator between weekday and day -% \begin{macrocode} -\newcommand*{\DTMdeCHdowdaysep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHdaymonthsep} -% The separator between the day and month for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeCHdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHmonthyearsep} -% The separator between the month and year for the text format. -% \begin{macrocode} -\newcommand*{\DTMdeCHmonthyearsep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHdatetimesep} -% The separator between the date and time blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeCHdatetimesep}{,\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHtimezonesep} -% The separator between the time and zone blocks in the full format -% (either text or numeric). -% \begin{macrocode} -\newcommand*{\DTMdeCHtimezonesep}{\space} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHdatesep} -% The separator for the numeric date format. -% \begin{macrocode} -\newcommand*{\DTMdeCHdatesep}{.} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\DTMdeCHtimesep} -% The separator for the numeric time format. -% \begin{macrocode} -\newcommand*{\DTMdeCHtimesep}{.} -% \end{macrocode} -%\end{macro} -% -% Provide keys that can be used in \cs{DTMlangsetup} to set these -% separators. -% \begin{macrocode} -\DTMdefkey{de-CH}{dowdaysep}{\renewcommand*{\DTMdeCHdowdaysep}{#1}} -\DTMdefkey{de-CH}{daymonthsep}{\renewcommand*{\DTMdeCHdaymonthsep}{#1}} -\DTMdefkey{de-CH}{monthyearsep}{\renewcommand*{\DTMdeCHmonthyearsep}{#1}} -\DTMdefkey{de-CH}{datetimesep}{\renewcommand*{\DTMdeCHdatetimesep}{#1}} -\DTMdefkey{de-CH}{timezonesep}{\renewcommand*{\DTMdeCHtimezonesep}{#1}} -\DTMdefkey{de-CH}{datesep}{\renewcommand*{\DTMdeCHdatesep}{#1}} -\DTMdefkey{de-CH}{timesep}{\renewcommand*{\DTMdeCHtimesep}{#1}} -% \end{macrocode} -% -% -% Define a boolean key that can switch between full and abbreviated formats for -% the month and day of week names in the text format. -% \begin{macrocode} -\DTMdefboolkey{de-CH}{abbr}[true]{} -% \end{macrocode} -% -% The default is full name -% \begin{macrocode} -\DTMsetbool{de-CH}{abbr}{false} -% \end{macrocode} -% -% Define a boolean key that determines if the time zone mappings -% should be used. -% \begin{macrocode} -\DTMdefboolkey{de-CH}{mapzone}[true]{} -% \end{macrocode} -% The default is to use mappings. -% \begin{macrocode} -\DTMsetbool{de-CH}{mapzone}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the day of month should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-CH}{showdayofmonth}[true]{} -% \end{macrocode} -% The default is to show the day of month. -% \begin{macrocode} -\DTMsetbool{de-CH}{showdayofmonth}{true} -% \end{macrocode} -% -% Define a boolean key that determines if the year should be -% displayed. -% \begin{macrocode} -\DTMdefboolkey{de-CH}{showyear}[true]{} -% \end{macrocode} -% The default is to show the year. -% \begin{macrocode} -\DTMsetbool{de-CH}{showyear}{true} -% \end{macrocode} -% -% -% Define the "de-CH" style -% \begin{macrocode} -\DTMnewstyle -{de-CH}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-CH}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeCHdowdaysep - \fi - \fi - % - \DTMifbool{de-CH}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}% - {}% - % - \DTMifbool{de-CH}{abbr}% - {\DTMdeCHshortmonthname{##2}}% - {\DTMgermanmonthname{##2}}% - % - \DTMifbool{de-CH}{showyear}% - {% - \DTMdeCHmonthyearsep% - \number##1 % space intended - }% - {}% - }% - \renewcommand*\DTMDisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-CH}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeCHdowdaysep - \fi - \fi - % - \DTMifbool{de-CH}{showdayofmonth}% - {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}% - {}% - % - \DTMifbool{de-CH}{abbr}% - {\DTMdeCHshortmonthname{##2}}% - {\DTMgermanmonthname{##2}}% - % - \DTMifbool{de-CH}{showyear}% - {% - \DTMdeCHmonthyearsep% - \number##1 % space intended - }% - {}% - } -}% -{% time style (use default) - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeCHtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space% - Uhr% - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-CH}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMdeCHtimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeCHdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeCHtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}[9]{% - \ifDTMshowdate - \DTMDisplaydate{##1}{##2}{##3}{##4}% - \DTMdeCHdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeCHtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% -}% -% \end{macrocode} -% -% Define numeric style. -% \begin{macrocode} -\DTMnewstyle -{de-CH-numeric}% label -{% date style - \renewcommand*\DTMdisplaydate[4]{% - \ifDTMshowdow - \ifnum##4>-1 - \DTMifbool{de-CH}{abbr}% - {\DTMgermanshortweekdayname{##4}}% - {\DTMgermanweekdayname{##4}}% - \DTMdeCHdowdaysep - \fi - \fi - % - \DTMifbool{de-CH}{showdayofmonth}% - {% - \DTMtwodigits{##3}% - \DTMdeCHdatesep - }% - {}% - \DTMtwodigits{##2}% - \DTMdeCHdatesep% - \DTMifbool{de-CH}{showyear}% - {% - \number##1 % space intended - }% - {}% - }% - \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}% -}% -{% time style - \renewcommand*\DTMdisplaytime[3]{% - \DTMtwodigits{##1}% - \DTMdeCHtimesep\DTMtwodigits{##2}% - \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space% - Uhr% - }% -}% -{% zone style - \DTMresetzones - \DTMgermanzonemaps - \renewcommand*{\DTMdisplayzone}[2]{% - \DTMifbool{de-CH}{mapzone}% - {\DTMusezonemapordefault{##1}{##2}}% - {% - \ifnum##1<0\else+\fi\DTMtwodigits{##1}% - \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi - }% - }% -}% -{% full style - \renewcommand*{\DTMdisplay}[9]{% - \ifDTMshowdate - \DTMdisplaydate{##1}{##2}{##3}{##4}% - \DTMdeCHdatetimesep - \fi - \DTMdisplaytime{##5}{##6}{##7}% - \ifDTMshowzone - \DTMdeCHtimezonesep - \DTMdisplayzone{##8}{##9}% - \fi - }% - \renewcommand*{\DTMDisplay}{\DTMdisplay}% -} -% \end{macrocode} -% -% Switch style according to the \opt{useregional} setting. -% \begin{macrocode} -\DTMifcaseregional -{}% do nothing -{\DTMsetstyle{de-CH}}% -{\DTMsetstyle{de-CH-numeric}}% -% \end{macrocode} -% -% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent -% \sty{babel} from resetting \cs{today}. (For this to work, -% \sty{babel} must already have been loaded if it's required.) -% \begin{macrocode} -\ifcsundef{date\CurrentTrackedDialect} -{% - \ifundef\dategerman - {% do nothing - }% - {% - \def\dategerman{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{german}}% - {\DTMsetstyle{german-numeric}}% - }% - }% -}% -{% - \csdef{date\CurrentTrackedDialect}{% - \DTMifcaseregional - {}% do nothing - {\DTMsetstyle{de-CH}}% - {\DTMsetstyle{de-CH-numeric}}% - }% -}% -% \end{macrocode} -% -%\iffalse -% \begin{macrocode} -%</datetime2-de-CH.ldf> -% \end{macrocode} -%\fi -% -% -% -% -% -% -% -% -% % -%\Finale -\endinput
\ No newline at end of file +\endinput diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins index 585dc37c7c..13b7a31769 100644 --- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins +++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins @@ -4,7 +4,7 @@ datetime2-german.dtx Copyright 2015 Nicola Talbot - Copyright 2017 Sebastian Friedl + Copyright 2017-19 Sebastian Friedl This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c @@ -17,38 +17,52 @@ This work has the LPPL maintenance status `maintained'. Current maintainer of the work is Sebastian Friedl - This work consists of the files datetime2-german.dtx and - datetime2-german.ins and the derived files - datetime2-german-utf8.ldf, datetime2-german-ascii.ldf, - datetime2-german.ldf, datetime2-de-DE.ldf, - datetime2-de-AT.ldf and datetime2-de-CH.ldf - + This work consists of the files and the derived files: + - datetime2-german.ins, - datetime2-german-base.ldf, + - datetime2-german-base.dtx, - datetime2-german-base-ascii.ldf, + - datetime2-german-base-ascii.dtx, - datetime2-german-base-utf8.ldf, + - datetime2-german-base-utf8.dtx, - datetime2-german.ldf, + - datetime2-german.ldf, - datetime2-de-DE.ldf, + - datetime2-de-DE.ldf, - datetime2-de-AT.ldf and + - datetime2-de-AT.ldf, - datetime2-de-CH.ldf + - datetime2-de-CH.ldf and + - datetime2-german-doc.dtx \endpreamble \askforoverwritefalse +\generate +{% + \file + {datetime2-german-base.ldf}% + {% + \usepreamble\defaultpreamble + \usepostamble\defaultpostamble + \from{datetime2-german-base.dtx}{datetime2-german-base.ldf,package}% + }% +} \generate {% \file - {datetime2-german-utf8.ldf}% + {datetime2-german-base-utf8.ldf}% {% \usepreamble\defaultpreamble \usepostamble\defaultpostamble - \from{datetime2-german.dtx}{datetime2-german-utf8.ldf,package}% + \from{datetime2-german-base-utf8.dtx}{datetime2-german-base-utf8.ldf,package}% }% } \generate {% \file - {datetime2-german-ascii.ldf}% + {datetime2-german-base-ascii.ldf}% {% \usepreamble\defaultpreamble \usepostamble\defaultpostamble - \from{datetime2-german.dtx}{datetime2-german-ascii.ldf,package}% + \from{datetime2-german-base-ascii.dtx}{datetime2-german-base-ascii.ldf,package}% }% } @@ -73,7 +87,7 @@ {% \usepreamble\defaultpreamble \usepostamble\defaultpostamble - \from{datetime2-german.dtx}{datetime2-de-DE.ldf,package}% + \from{datetime2-de-DE.dtx}{datetime2-de-DE.ldf,package}% }% } @@ -86,7 +100,7 @@ {% \usepreamble\defaultpreamble \usepostamble\defaultpostamble - \from{datetime2-german.dtx}{datetime2-de-AT.ldf,package}% + \from{datetime2-de-AT.dtx}{datetime2-de-AT.ldf,package}% }% } @@ -99,7 +113,7 @@ {% \usepreamble\defaultpreamble \usepostamble\defaultpostamble - \from{datetime2-german.dtx}{datetime2-de-CH.ldf,package}% + \from{datetime2-de-CH.dtx}{datetime2-de-CH.ldf,package}% }% } diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf Binary files differdeleted file mode 100644 index 7bb0d2b49e..0000000000 --- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf +++ /dev/null diff --git a/macros/latex/contrib/erw-l3/README.txt b/macros/latex/contrib/erw-l3/README.md index 6d9e79fad5..e5b41e28d7 100644 --- a/macros/latex/contrib/erw-l3/README.txt +++ b/macros/latex/contrib/erw-l3/README.md @@ -1,7 +1,8 @@ ---------------------------------------------------------------- erw-l3 --- Utilities built around expl3 -Source repository: https://github.com/er-cpp/erw-l3 +Source repository: https://github.com/rogard/erw-l3 Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt + ---------------------------------------------------------------- diff --git a/macros/latex/contrib/erw-l3/erw-l3.dtx b/macros/latex/contrib/erw-l3/erw-l3.dtx index 9c66237579..6fcffe4ca4 100644 --- a/macros/latex/contrib/erw-l3/erw-l3.dtx +++ b/macros/latex/contrib/erw-l3/erw-l3.dtx @@ -6,7 +6,7 @@ %<*readme> ---------------------------------------------------------------- erw-l3 --- Utilities built around expl3 -Source repository: https://github.com/er-cpp/erw-l3 +Source repository: https://github.com/rogard/erw-l3 Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt ---------------------------------------------------------------- @@ -72,8 +72,8 @@ and the derived files erw-l3.ins, %</internal> %<package>\ProvidesExplPackage %<package> {erw-l3} % Package name -%<package> {2018/6/21} % Release date -%<package> {0.1.3} % Release version +%<package> {2019/10/12} % Release date +%<package> {0.1.5} % Release version %<package> {Utilities built around expl3} % Description % %<*driver> @@ -116,29 +116,25 @@ and the derived files erw-l3.ins, % % \tableofcontents % -% \section{Preliminaries} +% \section*{Conventions} % -% See \autoref{part:other}~\autoref{support} on how to get this package. -% To use it, make sure the file \file{erw-l3.sty} is in the path of the \LaTeX~engine. -% In the preamble of your \LaTeX document, put: -% \begin{center} -% \cs{usepackage}\oarg{options}|{|\pkg{erw-l3}|}|\linebreak -% \end{center} +% The naming conventions are (loosely) those of \LaTeX3. +% For example, \meta{cs} stands for \emph{control sequence}, which is described in \cite[Part~\pkg{l3basics}]{interface3}. % -% \floatstyle{ruled} -% \newfloat{Listing}{H}{lop} -% \NewDocumentCommand{\erwtab}{O{0.5}}{\tabto{#1\linewidth}} +% \section*{Requirement} % -% \part{Usage}\label{part:usage} +% Have \file{erw-l3.sty} is in the path of the \LaTeX~engine. % -% The naming conventions are (loosely) those of \LaTeX3. -% For example, \meta{cs} stands for \emph{control sequence}, which is described in \cite[Part~\pkg{l3basics}]{interface3}. +% \part{Usage}\label{part:usage} % -% \section{backend} +% In the preamble of \cs{documentclass}, put: +% \begin{center} +% \cs{usepackage}\oarg{options}|{|\pkg{erw-l3}|}|\linebreak +% \end{center} % -% We call `backend' commands that are \pkg{expl3}-like. +% \section{\textsf{compose}} % -% \subsection{\textsf{compose}} +% \subsection{\textsf{backend}} % % \begin{function}{\erw_compose:nV,\erw_compose:nn} % \begin{syntax} @@ -180,45 +176,57 @@ and the derived files erw-l3.ins, % \begin{syntax} % \cs{erw_compose_seq_vers:nV}\marg{list of cs or code}\meta{seq} % \end{syntax} -% Not implemented. +% {\color{red}Not implemented} % \end{function} % -% \subsection{\textsf{csutil}} +% \section{\textsf{csutil}} % -% \begin{function}{\erw_apply:Nn, \erw_apply:cn} +% \subsection{\textsf{backend}} +% +% \begin{function}{\erw_accum:nn} +% \begin{syntax}{\cs{erw_accum:nn}}\marg{token list}\marg{item} +% \end{syntax}Expands to a token list comprising the items of \meta{token list} and \meta{item} +% \end{function} +% +% \begin{function}{\erw_apply:Nn, \erw_apply:cn, \erw_apply:Nnn, \erw_apply:Nnnn, \erw_apply:Nnnnn} % \begin{syntax}{\cs{erw_apply:Nn}}\meta{cs}\marg{arg} % \end{syntax}Expands to \meta{cs}\marg{arg} % \end{function} % -% \begin{function}{\erw_cs_set_eq:NN, \erw_cs_set_eq:cN} +% \begin{function}{\erw_cs_set_eq:NN, \erw_cs_set_eq:cN,\erw_cs_gset_eq:NN, \erw_cs_gset_eq:cN} % \begin{syntax}{\cs{erw_cs_set_eq:NN}}\meta{cs1}\meta{cs2} % \end{syntax}\meta{cs1}\textleftarrow\meta{cs2} % \end{function} % -% \begin{function}{\erw_cs_set_inline:Nn, \erw_cs_set_inline:cn} +% \begin{function}{\erw_cs_set_inline:Nn, \erw_cs_set_inline:cn,\erw_cs_gset_inline:Nn, \erw_cs_gset_inline:cn} % \begin{syntax}{\cs{erw_cs_set_inline:Nn}}\meta{cs}\marg{code} % \end{syntax} % \end{function} % -% \begin{function}{\erw_identity:N,\erw_identity:c} -% \begin{syntax}{\cs{erw_identity:N}}\marg{arg} +% \begin{function}{\erw_identity:n} +% \begin{syntax}{\cs{erw_identity:n}}\marg{arg} % \end{syntax} Expands to \meta{arg} % \end{function} % +% \begin{function}{\erw_is_matrix_p:n,\erw_is_matrix:nTF} +% \begin{syntax}{\cs{erw_is_matrix_p:n}}\marg{token list} +% \end{syntax} Checks if \meta{token list} is a (square) matrix. +% \end{function} +% % \begin{function}{\erw_fold:NV, \erw_fold:cV} % \begin{syntax}{\cs{erw_fold:NV}}\meta{cs}\meta{var} % \end{syntax}\meta{var}\textleftarrow \cs{erw_apply:NV}\meta{cs}\meta{var}. % See Listing~\autoref{listng:fold}. % \end{function} % -% \begin{function}{\erw_items_to:nn} -% \begin{syntax}{\cs{erw_items_to:nn}}\marg{int}\marg{token list} -% \end{syntax} See Listing~\autoref{listng:items} -% \end{function} -% % \begin{function}{\erw_last_item:nn} % \begin{syntax}{\cs{erw_last_item:nn}}\marg{int}\marg{token list} -% \end{syntax} See Listing~\autoref{listng:items} +% \end{syntax} ^^ASee Listing~\autoref{listng:items} +% \end{function} +% +% \begin{function}{\erw_merge:nn} +% \begin{syntax}{\cs{erw_merge:nn}}\marg{tl 1}\marg{tl 2} +% \end{syntax}Merges \meta{tl 1}\meta{tl 2} % \end{function} % % \begin{function}{\erw_repeat:nn} @@ -232,10 +240,41 @@ and the derived files erw-l3.ins, % \end{syntax} See Listing~\autoref{listng:split} % \end{function} % -% \subsection{\textsf{map}} +% \section{\textsf{int}} +% +% \subsection{\textsf{backend}} +% +% \begin{function}{\erw_int_range:nn} +% \begin{syntax}{\cs{erw_int_range:nn}}\marg{first}{last} +% \end{syntax} Returns a range of integers. Implementation different than \cs{int_step_inline} +% \end{function} +% +% \begin{function}{\erw_int_range:n} +% \begin{syntax}{\cs{erw_int_range:n}}\marg{count} +% \end{syntax} Returns a range of integers. Implementation different than \cs{int_step_inline}. See Listing~\autoref{listng:int:range} +% \end{function} +% +% \section{\textsf{map}} +% +% \subsection{\textsf{backend}} +% +% \begin{function}{\erw_set_map:N,\erw_gset_map:N} +% \begin{syntax}{\cs{erw_set_map:N}}\meta{cs} +% \end{syntax} Sets the function used by \cs{erw_map:n}. +% \end{function} +% +% \begin{function}{\erw_set_map_inline:n,\erw_gset_map_inline:n} +% \begin{syntax}{\cs{erw_set_map_inline:n}}\marg{code} +% \end{syntax} Sets the function used by \cs{erw_map:n}. +% \end{function} +% +% \begin{function}{\erw_map:n} +% \begin{syntax}{\cs{erw_map:n}}\marg{token list} +% \end{syntax} Applies the stored \meta{cs} to each item in \meta{token list}. An application is \cs{erw_is_matrix} +% \end{function} % % \begin{function}{\erw_map:Nn} -% \begin{syntax}{\cs{erw_map:Nn}}\meta{cs}\marg{args} +% \begin{syntax}{\cs{erw_map:Nn}}\meta{cs}\marg{token list} % \end{syntax} % See Listing~\autoref{listng:map}. % Redundant with \cs{tl_map_function:nN} @@ -247,9 +286,14 @@ and the derived files erw-l3.ins, % See Listing~\autoref{listng:mapinl} % \end{function} % +% \begin{function}{\erw_map_indexed:Nnn} +% \begin{syntax}{\cs{erw_map_indexed:Nnn}}\meta{cs}\marg{int}\marg{matrix of tokens} +% \end{syntax} {\color{red} Not implemented}. See Listing~\autoref{listng:mapindexed}. +% \end{function} +% % \begin{function}{\erw_map_thread:Nn} % \begin{syntax}{\cs{erw_map_thread:Nn}}\meta{cs}\marg{matrix of tokens} -% \end{syntax} Threads \meta{cs} over the columns, where the arity of \meta{cs} is equal to the number of rows. +% \end{syntax} Threads \meta{cs} over the columns, where the arity of \meta{cs} must be equal to the number of rows. % See Listing~\autoref{listng:thread} % \end{function} % @@ -258,9 +302,9 @@ and the derived files erw-l3.ins, % \end{syntax} % \end{function} % -% \subsection{\textsf{numbrdcs}} +% \section{\textsf{numbrdcs}} % -% Part of these commands have a frontend counterpart, see \autoref{usage:frontend:numbrdcs}. +% \subsection{backend} % % \begin{function}{\erw_numbrd_cs_reset:} % \begin{syntax}\cs{erw_numbrd_cs_reset:}|{}| @@ -282,33 +326,7 @@ and the derived files erw-l3.ins, % \end{syntax}See Listing~\ref{listng:numbrdcs:names} % \end{function} % -% \section{frontend}\label{part:frontend} -% -% We call frontend commands created with pkg{xparse}'s\cs{NewDocumentCommand}\cite{xparse} -% -% \subsection{\textsf{disambig}} -% -% \begin{function}{\disambignewcmd,\disambignewcmd*} -% \begin{syntax}{\cs{disambignewcmd}}\marg{token}\marg{pars}\marg{code} -% \end{syntax}Analogues of \cs{NewDocumentCommand} and \cs{RenewDocumentCommand}. See~Listing~\ref{listng:disambig:cmd} -% \end{function} -% -% \begin{function}{\disambignewenv,\disambignewenv*} -% \begin{syntax}{\cs{disambignewenv}}\marg{token}\marg{pars}\marg{code1}\marg{code2} -% \end{syntax}Analogues of \cs{NewDocumentEnvironment} and \cs{RenewDocumentEnvironment}. See~Listing~\ref{listng:disambig:env} -% \end{function} -% -% \begin{function}{\disambigset} -% \begin{syntax}{\cs{disambigset}}\marg{prefix} -% \end{syntax} -% \end{function} -% -% \begin{function}{\disambigunset} -% \begin{syntax}{\cs{disambigunset}}|{}| -% \end{syntax} -% \end{function} -% -% \subsection{\textsf{numbrdcs}}\label{usage:frontend:numbrdcs} +% \subsection{frontend} % % \begin{function}{\numbrdcsnew,\numbrdcsnew*} % \begin{syntax}\cs{numbrdcsnew}\marg{list of cs or code} @@ -324,14 +342,18 @@ and the derived files erw-l3.ins, % % \part{Listings}\label{part:listng} % -% \section{Backend} +% \floatstyle{ruled} +% \newfloat{Listing}{H}{lop} +% \NewDocumentCommand{\erwtab}{O{0.5}}{\tabto{#1\linewidth}} % -% \subsection{compose} +% \section{compose} +% +% \subsection{\textsf{backend}} % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\erwtab\cs_set:Npn \__foo #1 {f(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\erwtab\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\cs_set:Npn \__bar #1 {g[#1]}|\erwtab\cs_set:Npn \__bar #1 {g[#1]} % \\\verb|\cs_set:Npn \__baz #1 {h\{#1\}}|\erwtab\cs_set:Npn \__baz #1 {h\{#1\}} % \\\verb|\tl_set:Nn \l_tmpa_tl{X}|\erwtab\tl_set:Nn \l_tmpa_tl{X} @@ -343,14 +365,14 @@ and the derived files erw-l3.ins, % \\\verb|\erw_compose:nn{| % \\\verb| {\__baz}{\__bar}{\__foo}}| % \\\verb| {X}|\erwtab\erw_compose:nn{{\__baz}{\__bar}{\__foo}}{X} -% \ExplSyntaxOff +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:compose} % \end{Listing} % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\cs_set:Npn \__bar #1 {g[#1]}|\cs_set:Npn \__bar #1 {g[#1]} % \\\verb|\cs_set:Npn \__baz #1 {h\{#1\}}|\cs_set:Npn \__baz #1 {h\{#1\}} % \\\verb|\tl_set:Nn \l_tmpa_tl{X}|\tl_set:Nn \l_tmpa_tl{X} @@ -361,14 +383,14 @@ and the derived files erw-l3.ins, % \\\verb|\erw_compose_c:nn{| % \\\verb| {__baz}{__bar}{__foo}}| % \\\verb| {X}|\erwtab\erw_compose_c:nn{{__baz}{__bar}{__foo}}{X} -% \ExplSyntaxOff +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:compose:c} % \end{Listing} % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\cs_set:Npn \__bar #1 {g[#1]}|\cs_set:Npn \__bar #1 {g[#1]} % \\\verb|\cs_set:Npn \__baz #1 {h\{#1\}}|\cs_set:Npn \__baz #1 {h\{#1\}} % \\\verb|\seq_new:N\l_tmp_seq|\erwtab\seq_new:N \l_tmp_seq @@ -380,14 +402,14 @@ and the derived files erw-l3.ins, % \\\verb|\seq_item:Nn\l_tmp_seq{2}|\erwtab \seq_item:Nn \l_tmp_seq{2} % \\\verb|\seq_item:Nn\l_tmp_seq{3}|\erwtab \seq_item:Nn \l_tmp_seq{3} % \\\verb|\seq_item:Nn\l_tmp_seq{4}|\erwtab \seq_item:Nn \l_tmp_seq{4} -% \ExplSyntaxOff +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{}\label{listng:compose:seq} % \end{Listing} % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\cs_set:Npn \__bar #1 {g[#1]}|\cs_set:Npn \__bar #1 {g[#1]} % \\\verb|\cs_set:Npn \__baz #1 {h\{#1\}}|\cs_set:Npn \__baz #1 {h\{#1\}} % \\\verb|\seq_new:N\l_tmp_seq| @@ -399,38 +421,40 @@ and the derived files erw-l3.ins, % \\\verb|\seq_item:Nn\l_tmp_seq{2}|\erwtab \seq_item:Nn \l_tmp_seq{2} % \\\verb|\seq_item:Nn\l_tmp_seq{3}|\erwtab \seq_item:Nn \l_tmp_seq{3} % \\\verb|\seq_item:Nn\l_tmp_seq{4}|\erwtab \seq_item:Nn \l_tmp_seq{4} -% \ExplSyntaxOff +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{}\label{listng:compose:seq:c} % \end{Listing} % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\cs_set:Npn \__bar #1 {g[#1]}|\cs_set:Npn \__bar #1 {g[#1]} % \\\verb|\cs_set:Npn \__baz #1 {h\{#1\}}|\cs_set:Npn \__baz #1 {h\{#1\}} % \\\verb|\erw_compose_vers:nn{| % \\\verb| {\__baz}{g[#1]}{\__foo}}| % \\\verb| {X}|\erwtab\erw_compose_vers:nn{{\__baz}{g[#1]}{\__foo}}{X} -% \ExplSyntaxOff +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{}\label{listng:compose:vers} % \end{Listing} % -% \subsection{csutil} +% \section{csutil} +% +% \subsection{\textsf{backend}} % % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\erwtab\cs_set:Npn \__foo #1 {f(#1)} +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\erwtab\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\erw_apply:Nn\__foo{X}|\erwtab\erw_apply:Nn\__foo{X} % \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:apply} % \end{Listing} -% +% % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} +% \\\verb|\cs_set:Npn \__foo #1 {f(#1)}|\cs_set:Npn \__foo #1 {f(#1)} % \\\verb|\tl_set:Nn \l_tmpa_tl{X}|\erwtab\tl_set:Nn \l_tmpa_tl{X} % \\\verb|\erw_fold_set_par:n{Nf}|\erw_fold_set_par:n{Nf} % \\\verb|\erw_fold_apply_par:n{Nf}|\erw_fold_apply_par:n{Nf} @@ -446,20 +470,38 @@ and the derived files erw-l3.ins, % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \verb|\erw_last_item:n{{a}{b}{c}}|\erwtab \erw_last_item:n {{a}{b}{c}} -% \\\verb|\\\erw_items_to:nn{1}{{a}{b}{c}{d}}|\erwtab \erw_items_to:nn{1}{{a}{b}{c}{d}} -% \\\verb|\\\erw_items_to:nn{2}{{a}{b}{c}{d}}|\erwtab \erw_items_to:nn{2}{{a}{b}{c}{d}} -% \\\verb|\\\erw_items_to:nn{3}{{a}{b}{c}{d}}|\erwtab \erw_items_to:nn{3}{{a}{b}{c}{d}} -% \\\verb|\\\erw_items_to:nn{4}{{a}{b}{c}{d}}|\erwtab \erw_items_to:nn{4}{{a}{b}{c}{d}} -% \\\verb|\ExplSyntaxOff| \ExplSyntaxOff -% \caption{ }\label{listng:items} +% \\\verb|\erw_is_matrix:nTF| +% \\\verb|{| +% \\\verb| { {a}{b}{c} }| +% \\\verb| { {k}{l}{m} }| +% \\\verb| { {x}{y}{z} }| +% \\\verb|}{T}{F}|\erwtab\erw_is_matrix:nTF +% { +% { {a}{b}{c} } +% { {k}{l}{m} } +% { {x}{y}{z} } +% }{T}{F} +% \\\verb|\erw_is_matrix:nTF| +% \\\verb|{| +% \\\verb| { {a}{c} }| +% \\\verb| { {k} }| +% \\\verb| { {x}{y}{z} }| +% \\\verb|}{T}{F}|\erwtab +% \erw_is_matrix:nTF +% { +% { {a}{c} } +% { {k} } +% { {x}{y}{z} } +% }{T}{F} +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff +% \caption{ }\label{listng:ismatrix} % \end{Listing} % % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \\\verb|\erw_repeat:nn{| -% \\\verb| {3}{abracad}}abra| \erwtab \erw_repeat:nn{3}{abracad}abra +% \\\verb|\erw_repeat:nn| +% \\\verb| {3}{abracad}abra| \erwtab \erw_repeat:nn{3}{abracad}abra % \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:repeat} % \end{Listing} @@ -467,18 +509,32 @@ and the derived files erw-l3.ins, % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \\\verb|\erw_split:nn{| -% \\\verb| {{a}{b}{c}}{==}}| \erwtab \erw_split:nn{{a}{b}{c}}{==} +% \\\verb|\erw_split:nn| +% \\\verb| {{a}{b}{c}}{==}| \erwtab \erw_split:nn{{a}{b}{c}}{==} % \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:split} % \end{Listing} % -% \subsection{\textsf{map}} +% \section{\textsf{int}} +% +% \subsection{\textsf{backend}} +% +% \begin{Listing} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\erw_int_range:nn{2}{5}|\erwtab\erw_int_range:nn{2}{5} +% \\\verb|\erw_int_range:n{5}|\erwtab\erw_int_range:n{5} +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff +% \caption{ }\label{listng:int:range} +% \end{Listing} +% +% \section{\textsf{map}} +% +% \subsection{\textsf{backend}} % % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -%\verb|\cs_set:Npn \__foo #1 {(#1)}|\cs_set:Npn \__foo #1 {(#1)} +% \\\verb|\cs_set:Npn \__foo #1 {(#1)}|\cs_set:Npn \__foo #1 {(#1)} % \\\verb|\erw_map:Nn \__foo{{a}{b}{c}}|\erwtab\erw_map:Nn \__foo{{a}{b}{c}} % \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:map} @@ -487,7 +543,7 @@ and the derived files erw-l3.ins, % \vspace*{\fill} % \begin{Listing} % \verb|\ExplSyntaxOn| \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo #1 {(#1)}|\cs_set:Npn \__foo #1 {(#1)} +% \\\verb|\cs_set:Npn \__foo #1 {(#1)}|\cs_set:Npn \__foo #1 {(#1)} % \\\verb|\erw_map_inline:nn{| % \\\verb| (#1)}{{a}{b}{c}}| \erwtab\erw_map_inline:nn{(#1)}{{a}{b}{c}} % \\\verb|\ExplSyntaxOff|\ExplSyntaxOff @@ -496,8 +552,8 @@ and the derived files erw-l3.ins, % % \vspace*{\fill} % \begin{Listing} -% \ExplSyntaxOn -% \verb|\cs_set:Npn \__foo:n #1 {(#1)}|\cs_set:Npn \__foo:n #1 {(#1)} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set:Npn \__foo:n #1 {(#1)}|\cs_set:Npn \__foo:n #1 {(#1)} % \\\verb|\erw_map_thread:Nn \__foo:n| % \\\verb|{| % \\\verb| {{a}{b}{c}{d}{e}{f}}| @@ -546,11 +602,60 @@ and the derived files erw-l3.ins, % {{k}{l}{m}{n}{o}{p}} % {{K}{L}{M}{N}{O}{P}} % } +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff % \caption{ }\label{listng:thread} -% \ExplSyntaxOff % \end{Listing} % -% \subsection{\textsf{numbrdcs}} +% \begin{Listing} +% \verb|\ExplSyntaxOn|\ExplSyntaxOn +% \\\verb|\cs_set_protected:Npn \__foo:nn #1 #2| +% \\\verb| {(#1+#2)}| \cs_set_protected:Npn \__foo:nn #1 #2 {(#1+#2)} +% \\\verb|\erw_map_thread:Nn| +% \\\verb| \__foo:nn | +% \\\verb| { | +% \\\verb| {{1}{2}{3}} | +% \\\verb| {{a}{b}{c}}| +% \\\verb| }|\erwtab\erw_map_thread:Nn +% \__foo:nn +% { +% {{1}{2}{3}} +% {{a}{b}{c}} +% } +% \\\verb|\exp_last_unbraced:Nx| +% \\\verb|\erw_map_thread:Nn| +% \\\verb|{| +% \\\verb| \__foo:nn | +% \\\verb| { | +% \\\verb| {\erw_int_range:n{3}} | +% \\\verb| {{a}{b}{c}}| +% \\\verb| }| +% \\\verb|}| \erwtab +% \exp_last_unbraced:Nx +% \erw_map_thread:Nn +% { +% \__foo:nn +% { +% {\erw_int_range:n{3}} +% {{a}{b}{c}} +% } +% }\erwtab[0.7]{\color{red} (does~not~thread!)} +% \\\verb|\exp_last_unbraced:Nx| +% \\\verb|\erw_map_thread:Nn| +% \\\verb|{| +% \\\verb| \__foo:nn | +% \\\verb| { | +% \\\verb| {\int_step_inline:nn{3}{#1}} | +% \\\verb| {{a}{b}{c}}| +% \\\verb| }| +% \\\verb|}| +% \erwtab[0.2]{\color{red} \verb|Illegal parameter number in definition of \l__exp_internal_tl!|} +% \\\verb|\ExplSyntaxOff|\ExplSyntaxOff +% \caption{Debugging~for~\cs{erw_map_indexed}}\label{listng:mapindexed} +% \end{Listing} +% +% \section{\textsf{numbrdcs}} +% +% \subsection{\textsf{backend}} % % \vspace*{\fill} % \begin{Listing} @@ -562,8 +667,8 @@ and the derived files erw-l3.ins, % \\\verb|\exp_last_unbraced:Nx| % \\\verb| \erw_compose_c:nn| % \\\verb| {| -% \\\verb| {\erw_numbrd_cs_names| -% \\\verb| _braced:nnn{1}{1}{3}}| +% \\\verb| {\erw_numbrd_cs_names_braced:| +% \\\verb| nnn{1}{1}{3}}| % \\\verb| {X}| % \\\verb| }| % \\\verb|\ExplSyntaxOff|\erwtab @@ -576,61 +681,7 @@ and the derived files erw-l3.ins, % \caption{ }\label{listng:numbrdcs:names} % \end{Listing} % -% \section{Frontend} -% -% ^^A\vspace*{\fill} -% ^^A\begin{Listing} -% ^^A\verb|\NewDocumentCommand{\thefoo}{m}{f(#1)}| -% ^^A\\\verb|\NewDocumentCommand{\thebar}{m}{g[#1]}| -% ^^A\\\verb|\NewDocumentCommand{\thebaz}{m}{h\{#1\}}| -% ^^A\caption{Initialization}\label{listng:init:front} -% ^^A\end{Listing} -% -% \subsection{disambig} -% -% \begin{Listing} -% \textbf{Input} -% \begin{verbatim} -% \disambigset{my} -% \disambignewcmd{\foo}{m}{#1~world!} -% \noindent\myfoo{Hello} -% \disambignewcmd*{\foo}{m}{#1~universe!} -% \\\myfoo{Hello} -% \disambigunset -% \disambignewcmd{\foo}{m}{#1~world!} -% \\\foo{Hello} -% \end{verbatim} -% \textbf{Output} -% \\\disambigset{my} -% \disambignewcmd{\foo}{m}{#1~world!} -% \noindent\myfoo{Hello} -% \disambignewcmd*{\foo}{m}{#1~universe!} -% \\\myfoo{Hello} -% \disambigunset -% \disambignewcmd{\foo}{m}{#1~world!} -% \\\foo{Hello} -% \caption{}\label{listng:disambig:cmd} -% \end{Listing} -% -% \begin{Listing} -% \textbf{Input} -% \begin{verbatim} -% \disambigset{my} -% \disambignewenv{bar}{}{H}{!} -% \\\begin{mybar}ello~world\end{mybar} -% \disambignewenv*{bar}{}{J}{!} -% \\\begin{mybar}ello~world\end{mybar} -% \end{verbatim} -% \textbf{Output} -% \disambigset{my} -% \disambignewenv{bar}{}{H}{!} -% \\\begin{mybar}ello~world\end{mybar} -% \disambignewenv*{bar}{}{J}{!} -% \\\begin{mybar}ello~world\end{mybar} -% \caption{}\label{listng:disambig:env} -% \end{Listing} -% -% \subsection{\textsf{numbrdcs}} +% \subsection{frontend} % % \vspace*{\fill} % \begin{Listing} @@ -654,59 +705,6 @@ and the derived files erw-l3.ins, % \caption{ }\label{listng:numbrdcs} % \end{Listing} % -% \part{Other}\label{part:other} -% -% \section{Support}\label{support} -% -% This package is available from \url{https://www.ctan.org/pkg/erw-l3} (release) or \url{https://github.com/er-cpp/erw-l3} (development) where you can report issues. -% -% \section{Acknowledgment} -% I thank those that have answered my questions on forums pertaining to \LaTeX3. See here: \url{https://tex.stackexchange.com/users/112708/erwann?tab=questions} -% and here: \url{https://latex.org/forum/memberlist.php?mode=viewprofile&u=61329} -% -% ^^A \section{Change history} -% ^^A TODO Bring the change history under this section -% ^^A The versions showns are of those of the development stage, some may have been skipped in the release. -% ^^A \iffalse -% ^^A : changes -% ^^A \fi -% -% \changes{0.1}{2018/05/20}{Initial version} -% \changes{0.1.1}{2018/05/23}{} -% \changes{0.1.1}{2018/05/23}{Brought all the modules under one file; renamed \pkg{l3erw} to \pkg{erw-l3};} -% \changes{0.1.1}{2018/05/23}{\pkg{disambig}/backend: changes to the key, added \cs{ProcessPackageKeysOption};} -% \changes{0.1.1}{2018/05/23}{\cs{numbrdcsnew} changed to \cs{newnumbrdcs} and made 'disambiguable'} -% \changes{0.1.2}{2018/06/21}{} -% \changes{0.1.2}{2018/06/21}{\cs{erw_compose} reversed order in which the functions are composed, such that it now conforms to -% the mathematical convention ($g\circ f$ means $f$ comes before $g$)} -%\changes{0.1.2}{2018/06/21}{Front end cmds no longer generated with module \pkg{disambig}; Option of the same name deleted;} -%\changes{0.1.2}{2018/06/21}{\pkg{disambig}: pushed the code inside \cs{keys_define};\cs{disambignewcmd} no longer takes a token name as arg, rather a token.} -%\changes{0.1.2}{2018/06/21}{Added \cs{erw_repeat}} -%\changes{0.1.2}{2018/06/21}{Added \cs{erw_split}} -%\changes{0.1.2}{2018/06/21}{Added \cs{erw_last_item}} -%\changes{0.1.2}{2018/06/21}{Added \cs{erw_items_to}} -%\changes{0.1.2}{2018/06/21}{Added \cs{map_thread}} -%\changes{0.1.2}{2018/06/21}{Re-arranged the doc to clearly separate frontend from backend} -% -% % \begin{thebibliography}{1} -% -% ^^A\bibitem{expl3} The \LaTeX3 Project Team {\em The \pkg{expl3} package and \LaTeX3 programming} -% ^^A\url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/expl3.pdf} -% -% \bibitem{interface3} The \LaTeX3 Project Team {\em The \LaTeX3 interfaces} -% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/interface3.pdf} -% -% \bibitem{xparse} The \LaTeX3 Project Team {\em The \pkg{xparse} package} -% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3packages/xparse.pdf} -% -% ^^A \bibitem{l3pckg} The \LaTeX3 Project Team {\em l3packages} \url{http://mirror.ctan.org/macros/latex/contrib/l3packages/} -% -% ^^A \bibitem{tex.stack:431046} \url{https://tex.stackexchange.com/questions/431046/calling-expl3s-usec-on-an-expression-expanding-to-a-cs-name-causes-error} -% -% ^^A \bibitem{tex.stack:432171} \url{https://tex.stackexchange.com/questions/432171/expl3-making-arguments-from-a-loop} -% -% \end{thebibliography} -% % %\StopEventually{^^A % \PrintChanges @@ -726,8 +724,8 @@ and the derived files erw-l3.ins, \ExplSyntaxOn \msg_new:nnn{erw}{generic}{#1} % \end{macrocode} -% \section{Back end} -% \subsection{\textsf{compose}} +% \section{\textsf{compose}} +% \subsection{backend} % \begin{macrocode} \cs_set:Npn \erw_compose:NnV #1 % method @@ -794,8 +792,13 @@ and the derived files erw-l3.ins, {#2} } % \end{macrocode} -% \subsection{\textsf{csutil}} +% \section{\textsf{csutil}} +% \subsection{\textsf{backend}} % \begin{macrocode} +\cs_set:Npn \erw_accum:nn #1 #2 +{ + {#1{#2}} +} \cs_set:Npn \__erw_cs_name:N #1 { \exp_last_unbraced:Nf \use_i:nnn {\cs_split_function:N #1} @@ -812,11 +815,21 @@ and the derived files erw-l3.ins, \cs_set:Npn #1 ##1{#2{##1}} } \cs_generate_variant:Nn \erw_cs_set_eq:NN {cN} +\cs_set:Npn \erw_cs_gset_eq:NN #1 #2 +{ + \cs_gset:Npn #1 ##1{#2{##1}} +} +\cs_generate_variant:Nn \erw_cs_gset_eq:NN {cN} \cs_set:Npn \erw_cs_set_inline:Nn #1 #2 { \cs_set:Npn #1 ##1{#2} } \cs_generate_variant:Nn \erw_cs_set_inline:Nn {cn} +\cs_set:Npn \erw_cs_gset_inline:Nn #1 #2 +{ + \cs_gset:Npn #1 ##1{#2} +} +\cs_generate_variant:Nn \erw_cs_gset_inline:Nn {cn} \tl_set:Nn \__erw_fold_set_par_tl{\c_novalue_tl} \tl_set:Nn \__erw_fold_apply_par_tl{\c_novalue_tl} \cs_set:Npn \erw_fold_set_par:n #1 @@ -847,28 +860,43 @@ and the derived files erw-l3.ins, } \cs_generate_variant:Nn \erw_fold_seq:NV {cV} \cs_set:Npn \erw_identity:n #1{#1} -\cs_set:Npn\__erw_items_to:nnn #1 #2 #3 +\prg_set_conditional:Npnn \erw_is_matrix:n #1 { p, TF } { - \int_compare:nNnTF - {#1}>{#2} - { - \exp_args:Nf \tl_head:n{#3} - \__erw_items_to:nnn - {#1} - {\int_eval:n{#2+1}} - {\exp_args:Nf \tl_tail:n{#3}} - } + \erw_gset_map_inline:n{==\tl_count:n{##1}} + \int_compare:nTF { - \exp_args:Nf \tl_head:n{#3} + \exp_args:Nf\tl_count:n{\tl_head:n{#1}} + \exp_args:Nf \erw_map:n + { + \tl_tail:n{#1} + } } + {\prg_return_true:} + {\prg_return_false:} } -\cs_set:Npn \erw_items_to:nn #1 #2 -{ - \__erw_items_to:nnn - {#1} - {1} - {#2} -} +% Deprecated in v0.1.4 after realizing \cs{tl_range:n} does the job +%\cs_set:Npn\__erw_items_to:nnn #1 #2 #3 +%{ +% \int_compare:nNnTF +% {#1}>{#2} +% { +% \exp_args:Nf \tl_head:n{#3} +% \__erw_items_to:nnn +% {#1} +% {\int_eval:n{#2+1}} +% {\exp_args:Nf \tl_tail:n{#3}} +% } +% { +% \exp_args:Nf \tl_head:n{#3} +% } +%} +%\cs_set:Npn \erw_items_to:nn #1 #2 +%{ +% \__erw_items_to:nnn +% {#1} +% {1} +% {#2} +%} \cs_set:Npn \erw_last_item:n #1 { \exp_args:Nof \tl_item:nn @@ -877,6 +905,10 @@ and the derived files erw-l3.ins, \tl_count:n{#1} } } +\cs_set:Npn \erw_merge:nn #1 #2 +{ + {#1#2} +} \cs_set:Npn \erw_repeat:nn #1 #2 { \int_step_inline:nnnn{1}{1}{#1}{#2} @@ -897,8 +929,52 @@ and the derived files erw-l3.ins, \erw_split:nnn{#1}{#2}{Nf} } % \end{macrocode} -% \subsection{\textsf{map}} +% \section{\textsf{map}} +% \subsection{\textsf{backend}} % \begin{macrocode} +\cs_set:Npn \__erw_int_range:nnn #1 #2 #3 +{ + \int_compare:nNnTF + { + \int_eval:n{#2+1} + }>{#3} + { + {#1} + } + { + \__erw_int_range:nnn + { + \exp_args:Nx\erw_accum:nn{#1} + { + \int_eval:n{#2+1} + } + } + {\int_eval:n{#2+1}} + {#3} + } +} +\cs_set:Npn \erw_int_range:nn #1 #2 +{ + \__erw_int_range:nnn {{#1}}{#1}{#2} +} +\cs_set:Npn \erw_int_range:n #1 +{ + \__erw_int_range:nnn {}{0}{#1} +% Alt to: +% \int_step_inline:nn {#1}{##1} +} +% \end{macrocode} +% \section{\textsf{map}} +% \subsection{\textsf{backend}} +% \begin{macrocode} +\cs_set:Npn \erw_gset_map:N #1 +{ + \erw_cs_gset_eq:NN \__erw_map:n #1 +} +\cs_set:Npn \erw_gset_map_inline:n #1 +{ + \erw_cs_gset_inline:Nn \__erw_map:n {#1} +} \cs_set:Npn \erw_map:n #1 { \__erw_map:nn#1\q_recursion_tail\q_recursion_stop\q_recursion_tail\q_recursion_stop @@ -941,7 +1017,6 @@ and the derived files erw-l3.ins, { #1{#2}{#3}{#4}{#5} } - \cs_set:Npn \__erw_map_thread_at:Nnn #1 #2 #3 { \erw_apply:Nn #1 @@ -989,7 +1064,6 @@ and the derived files erw-l3.ins, {erw_map_thread_at:~count~of~#3~not~withing~1~to~4} } } - \cs_set:Npn \erw_map_thread:Nn #1 #2 { % TODO check that #2 is a matrix @@ -1002,7 +1076,8 @@ and the derived files erw-l3.ins, } } % \end{macrocode} -% \subsection{\textsf{numbrdcs}} +% \section{\textsf{numbrdcs}} +% \subsection{\textsf{backend}} % \begin{macrocode} \int_new:N \__erw_numbrd_cs_int \cs_set:Npn \erw_numbrd_cs_name:n #1{__erw_numbrd_cs_\int_to_alph:n{#1}:n} @@ -1042,58 +1117,7 @@ and the derived files erw-l3.ins, \erw_numbrd_cs_names_braced:nnn{1}{1}{\__erw_numbrd_cs_int} } % \end{macrocode} -% \section{frontend} -% \subsection{\textsf{disambig}} -% \begin{macrocode} -\cs_set:Npn \__erw_disambig:NN #1 #2 {#1{#2}} -\cs_generate_variant:Nn \__erw_disambig:NN { Nc } -\NewDocumentCommand{\disambignewcmd}{ s m m m } -{ - \msg_error:nnn{erw}{generic}{disambignewcmd~undefined} -} -\NewDocumentCommand{\disambignewenv}{ s m m m m } -{ - \msg_error:nnn{erw}{generic}{disambignewenv~undefined} -} -\keys_define:nn { erw } -{ - disambig .code:n = - { - \RenewDocumentCommand{\disambignewcmd}{ s m m m } - { - \IfBooleanTF{##1} - {\__erw_disambig:Nc{\RenewDocumentCommand}} - {\__erw_disambig:Nc{\NewDocumentCommand}} - {#1 \__erw_cs_name:N ##2} - {##3} - {##4} - } - \RenewDocumentCommand{\disambignewenv}{ s m m m m } - { - \IfBooleanTF{##1} - {\RenewDocumentEnvironment} - {\NewDocumentEnvironment} - {#1##2} - {##3} - {##4} - {##5} - } - }, - disambig .initial:n = \c_empty_tl -} -\NewDocumentCommand{\disambigset}{ m } -{ - \keys_set:nn { erw } - { - disambig={#1} - } -} -\NewDocumentCommand{\disambigunset}{} -{ - \disambigset{\c_empty_tl} -} -% \end{macrocode} -% \subsection{\textsf{numbrdcs}} +% \subsection{\textsf{frontend}} % \begin{macrocode} \NewDocumentCommand{\numbrdcsnew}{ s m } { @@ -1106,11 +1130,82 @@ and the derived files erw-l3.ins, { \erw_numbrd_cs:nn{#1}{#2} } -% \end{macrocode} -% \begin{macrocode} % \ProcessKeysPackageOptions{ erw } \ExplSyntaxOff % \end{macrocode} +% \part{Other}\label{part:other} +% +% \section{Support}\label{support} +% +% This package is available from \url{https://www.ctan.org/pkg/erw-l3} (release) or \url{https://github.com/rogard/erw-l3} (development) where you can report issues. +% +% \section{To do}\label{todo} +% +% \begin{itemize} +% \item Missing variants of \cs{erw_compose} +% \item \cs{erw_map_indexed}. See Listing~\autoref{listng:mapindexed} +% \item Need to give some thought to `protected' +% \end{itemize} +% +% \section{Acknowledgment} +% I thank those that have answered my questions on forums pertaining to \LaTeX3. See here: \url{https://tex.stackexchange.com/users/112708/erwann?tab=questions} +% and here: \url{https://latex.org/forum/memberlist.php?mode=viewprofile&u=61329} +% +% ^^A \section{Change history} +% ^^A TODO Bring the change history under this section +% ^^A The versions showns are of those of the development stage, some may have been skipped in the release. +% ^^A \iffalse +% ^^A : changes +% ^^A \fi +% +% \changes{0.1}{2018/05/20}{Initial version} +% \changes{0.1.1}{2018/05/23}{} +% \changes{0.1.1}{2018/05/23}{Brought all the modules under one file; renamed \pkg{l3erw} to \pkg{erw-l3};} +% \changes{0.1.1}{2018/05/23}{\pkg{disambig}/backend: changes to the key, added \cs{ProcessPackageKeysOption};} +% \changes{0.1.1}{2018/05/23}{\cs{numbrdcsnew} changed to \cs{newnumbrdcs} and made 'disambiguable'} +% \changes{0.1.2}{2018/06/21}{} +% \changes{0.1.2}{2018/06/21}{\cs{erw_compose} reversed order in which the functions are composed, such that it now conforms to +% the mathematical convention ($g\circ f$ means $f$ comes before $g$)} +%\changes{0.1.2}{2018/06/21}{Front end cmds no longer generated with module \pkg{disambig}; Option of the same name deleted;} +%\changes{0.1.2}{2018/06/21}{\pkg{disambig}: pushed the code inside \cs{keys_define};\cs{disambignewcmd} no longer takes a token name as arg, rather a token.} +%\changes{0.1.2}{2018/06/21}{Added \cs{erw_repeat}} +%\changes{0.1.2}{2018/06/21}{Added \cs{erw_split}} +%\changes{0.1.2}{2018/06/21}{Added \cs{erw_last_item}} +%\changes{0.1.2}{2018/06/21}{Added \cs{erw_items_to}} +%\changes{0.1.2}{2018/06/21}{Added \cs{map_thread}} +%\changes{0.1.2}{2018/06/21}{Re-arranged the doc to clearly separate frontend from backend} +%\changes{0.1.3}{2018/06/22}{Wrong versioning, should have been 0.1.2} +%\changes{0.1.4}{2018/06/22}{} +%\changes{0.1.4}{2018/06/22}{Removed \cs{erw_items_to} (redundant with \cs{tl_range:nnn})} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_accum}} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_merge}} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_int_range}} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_set_map}} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_set_map_inline}} +%\changes{0.1.4}{2018/06/22}{Added \cs{erw_is_matrix}} +%\changes{0.1.5}{2019/12/12}{Modified source repository} +%\changes{0.1.5}{2019/12/12}{Rearranged frontend/backend sections} +%\changes{0.1.5}{2019/12/12}{Split Section Preliminaries into Conventions and Requirement.} +%\changes{0.1.5}{2019/12/12}{Removed \pkg{disambig}} +% +% % \begin{thebibliography}{1} +% +% ^^A\bibitem{expl3} The \LaTeX3 Project Team {\em The \pkg{expl3} package and \LaTeX3 programming} +% ^^A\url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/expl3.pdf} +% +% \bibitem{interface3} The \LaTeX3 Project Team {\em The \LaTeX3 interfaces} +% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/interface3.pdf} +% +% \bibitem{xparse} The \LaTeX3 Project Team {\em The \pkg{xparse} package} +% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3packages/xparse.pdf} +% +% ^^A \bibitem{l3pckg} The \LaTeX3 Project Team {\em l3packages} \url{http://mirror.ctan.org/macros/latex/contrib/l3packages/} +% +% ^^A \bibitem{tex.stack:431046} \url{https://tex.stackexchange.com/questions/431046/calling-expl3s-usec-on-an-expression-expanding-to-a-cs-name-causes-error} +% +% ^^A \bibitem{tex.stack:432171} \url{https://tex.stackexchange.com/questions/432171/expl3-making-arguments-from-a-loop} +% +% \end{thebibliography} % % % \iffalse diff --git a/macros/latex/contrib/erw-l3/erw-l3.ins b/macros/latex/contrib/erw-l3/erw-l3.ins new file mode 100644 index 0000000000..9ce820375b --- /dev/null +++ b/macros/latex/contrib/erw-l3/erw-l3.ins @@ -0,0 +1,68 @@ +%% +%% This is file `erw-l3.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% erw-l3.dtx (with options: `install') +%% ---------------------------------------------------------------- +%% erw-l3 Utilities built around expl3 +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ---------------------------------------------------------------- +%% +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +---------------------------------------------------------------- +erw-l3 Utilities built around expl3 +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +---------------------------------------------------------------- + +\endpreamble +\postamble + +Copyright (C) 2018 by Erwann Rogard + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Erwann Rogard. + +This work consists of the file erw-l3.dtx +and the derived files erw-l3.ins, + erw-l3.pdf and + erw-l3.sty. + +\endpostamble +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} +\endbatchfile +%% +%% Copyright (C) 2018 by Erwann Rogard +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Erwann Rogard. +%% +%% This work consists of the file erw-l3.dtx +%% and the derived files erw-l3.ins, +%% erw-l3.pdf and +%% erw-l3.sty. +%% +%% +%% End of file `erw-l3.ins'. diff --git a/macros/latex/contrib/erw-l3/erw-l3.pdf b/macros/latex/contrib/erw-l3/erw-l3.pdf Binary files differindex ef0725e710..c9c9dc788d 100644 --- a/macros/latex/contrib/erw-l3/erw-l3.pdf +++ b/macros/latex/contrib/erw-l3/erw-l3.pdf |