diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx')
-rw-r--r-- | macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx | 537 |
1 files changed, 537 insertions, 0 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx new file mode 100644 index 0000000000..50dc35c5a2 --- /dev/null +++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx @@ -0,0 +1,537 @@ +%\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> +%\fi +% \iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2015 Nicola Talbot +% Copyright (C) 2015-2018 Zunbeltz Izaola, all rights reserved. +% Maintainer Zunbeltz Izaola. Based on the basque-date package by Edorta Ibarra. +% \fi +% \iffalse +%<*driver> +\documentclass{ltxdoc} + +\usepackage{alltt} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[colorlinks, + bookmarks, + hyperindex=false, + pdfauthor={Nicola L.C. Talbot}, + pdftitle={datetime2.sty Basque Module}]{hyperref} + + +\CheckSum{377} + +\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-basque.dtx} +\end{document} +%</driver> +%\fi +% +%\MakeShortVerb{"} +% +%\title{Basque Module for datetime2 Package} +%\author{Zunbeltz Izaola \and Nicola L. C. Talbot (inactive)} +%\date{2018-03-20 (v1.2a)} +%\maketitle +% +% +%\begin{abstract} +%This is the Basque 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. +% Currently there is only a regionless style. +%\end{abstract} +% +% \section{Introduction} +% +% According to The Basque Language Academy (\textit{Euskaltzaindia}), there +% are various correct forms to display the date in Basque.\footnote{\textit{37. +% araua. Data nola adierazi}: \url{http://euskaltzaindia.net/dok/arauak/Araua\_0037.pdf}} +% The most used form, which includes the name of the location where the document or +% text has been written, is the following: +% +% \begin{center} +% \textit{Durango(n), 1983ko martxoaren 7a(n)}, +% \end{center} +% where the inessive case \textit{``n''} is optional. It must be taken into account +% that the declination of numbers in Basque is not straightforward. +% The inessive case is deactivated by default. To activate it, set the +% \sty{inessive} boolean option to \sty{true} with \cs{DTMlangsetup}: +% \begin{verbatim} +% \DTMlangsetup[basque]{inessive=true} +% \end{verbatim} + +%\StopEventually{% +%\clearpage +%\phantomsection +%\addcontentsline{toc}{section}{Change History}% +%\PrintChanges +%\addcontentsline{toc}{section}{\indexname}% +%\PrintIndex} +% +%\section{The Code} +%At the moment there is only the one ".ldf" file. +% +%\subsection{Main Basque Module (\texttt{datetime2-basque.ldf})} +%\changes{1.0}{2015-03-29}{Initial release} +% +%\iffalse +% \begin{macrocode} +%<*datetime2-basque.ldf> +% \end{macrocode} +%\fi +% +% Identify Module +% \begin{macrocode} +\ProvidesDateTimeModule{basque}[2018/03/20 v1.2a] +% \end{macrocode} +% +% Define a boolean to use the inessive case. It is not used by default. +% +% \begin{macrocode} +\DTMdefboolkey{basque}{inessive}[false]{} +% \end{macrocode} + +%\begin{macro}{\DTMbasqueordinal} +% Numbers are declined according to to the case. +% \begin{macrocode} +\newcommand*{\DTMbasqueordinal}[1]{% + \number#1% + \DTMifbool{basque}{inessive}{% + \ifcase\number#1 %declination for the day (inessive case) + \or ean\or an\or an\or an\or ean\or an\or an\or an\or an\or ean\or + n\or an\or an\or an\or ean\or an\or an\or an\or an\or an\or ean\or + an\or an\or an\or ean\or an\or an\or an\or an\or ean\or n\fi% + }{% + \ifcase\number#1 %declination for the day (absolutive case) + \or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or \or + a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or + a\or a\or a\or a\or a\or a\or a\or\fi% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasquemonthname} +% Basque declined month names. +% \begin{macrocode} +\newcommand*{\DTMbasquemonthname}[1]{% + \ifcase#1 + \or + urtarrilaren% + \or + otsailaren% + \or + martxoaren% + \or + apirilaren% + \or + maiatzaren% + \or + ekainaren% + \or + uztailaren% + \or + abuztuaren% + \or + irailaren% + \or + urriaren% + \or + azaroaren% + \or + abenduaren% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasqueMonthname} +% As above but start with a capital. +% \begin{macrocode} +\newcommand*{\DTMbasqueMonthname}[1]{% + \ifcase#1 + \or + Urtarrilaren% + \or + Otsailaren% + \or + Martxoaren% + \or + Apirilaren% + \or + Maiatzaren% + \or + Ekainaren% + \or + Uztailaren% + \or + Abuztuaren% + \or + Irailaren% + \or + Urriaren% + \or + Azaroaren% + \or + Abenduaren% + \fi +} +% \end{macrocode} +%\end{macro} +% +% Define the \texttt{basque} style. +% The time style is the same as the "default" style +% provided by \sty{datetime2}. This may need correcting. For +% example, if a 12 hour style similar to the "englishampm" (from the +% "english-base" module) is required. +% +% Allow the user a way of configuring the "basque" and +% "basque-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}{\DTMbasquemonthdaysep} +% The separator between the day and month for the text format. +% \begin{macrocode} +\newcommand*{\DTMbasquemonthdaysep}{% + \DTMtexorpdfstring{\protect~}{\space}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasqueyearmonthsep} +% The separator between the month and year for the text format. +% According to the Basque declination rules for year +% \begin{macrocode} +\newcommand*{\DTMbasqueyearmonthsep}{\ifcase\DTMtwodigits{\@dtm@currentyear} + %Declination for the year + %00-20 + ko \or eko \or ko \or ko \or ko \or eko \or ko + \or ko \or ko \or ko \or eko \or ko \or ko + \or ko \or ko \or eko \or ko \or ko \or ko + \or ko \or ko \or + %21-40 + eko \or ko \or ko \or ko \or eko \or ko + \or ko \or ko \or ko \or eko \or ko \or ko + \or ko \or ko \or eko \or ko \or ko \or ko + \or ko \or ko \or + %41-60 + eko \or ko \or ko \or ko \or eko \or ko + \or ko \or ko \or ko \or eko \or ko \or ko + \or ko \or ko \or eko \or ko \or ko \or ko + \or ko \or ko \or + %61-80 + eko \or ko \or ko \or ko \or eko \or ko + \or ko \or ko \or ko \or eko \or ko \or ko + \or ko \or ko \or eko \or ko \or ko \or ko + \or ko \or ko \or + %81-100 + eko \or ko \or ko \or ko \or eko \or ko + \or ko \or ko \or ko \or eko \or ko \or ko + \or ko \or ko \or eko \or ko \or ko \or ko + \or ko \or eko + \fi% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasquedatetimesep} +% The separator between the date and time blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMbasquedatetimesep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasquetimezonesep} +% The separator between the time and zone blocks in the full format +% (either text or numeric). +% \begin{macrocode} +\newcommand*{\DTMbasquetimezonesep}{\space} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasquedatesep} +% The separator for the numeric date format. +% +% There is no clear tradition for the puctuation mark to separe the numbers. +% Spanish tradition will use either slash (/) or en-dash (-). I couldn't find typographic guidelines on the french tradition. +% I choose the slash over the en-dash because I found that more compact dates are nicer. +% +% \begin{macrocode} +\newcommand*{\DTMbasquedatesep}{/} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\DTMbasquetimesep} +% The separator for the numeric time format. +% \begin{macrocode} +\newcommand*{\DTMbasquetimesep}{:} +% \end{macrocode} +%\end{macro} +% +%Provide keys that can be used in \cs{DTMlangsetup} to set these +%separators. +% \begin{macrocode} +\DTMdefkey{basque}{monthdaysep}{\renewcommand*{\DTMbasquemonthdaysep}{#1}} +\DTMdefkey{basque}{yearmonthsep}{\renewcommand*{\DTMbasqueyearmonthsep}{#1}} +\DTMdefkey{basque}{datetimesep}{\renewcommand*{\DTMbasquedatetimesep}{#1}} +\DTMdefkey{basque}{timezonesep}{\renewcommand*{\DTMbasquetimezonesep}{#1}} +\DTMdefkey{basque}{datesep}{\renewcommand*{\DTMbasquedatesep}{#1}} +\DTMdefkey{basque}{timesep}{\renewcommand*{\DTMbasquetimesep}{#1}} +% \end{macrocode} +% +% TODO: provide a boolean key to switch between full and abbreviated +% formats if appropriate. (I don't know how the date should be +% abbreviated.) +% +% Define a boolean key that determines if the time zone mappings +% should be used. +% \begin{macrocode} +\DTMdefboolkey{basque}{mapzone}[true]{} +% \end{macrocode} +% The default is to use mappings. +% \begin{macrocode} +\DTMsetbool{basque}{mapzone}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the day of month should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{basque}{showdayofmonth}[true]{} +% \end{macrocode} +% The default is to show the day of month. +% \begin{macrocode} +\DTMsetbool{basque}{showdayofmonth}{true} +% \end{macrocode} +% +% Define a boolean key that determines if the year should be +% displayed. +% \begin{macrocode} +\DTMdefboolkey{basque}{showyear}[true]{} +% \end{macrocode} +% The default is to show the year. +% \begin{macrocode} +\DTMsetbool{basque}{showyear}{true} +% \end{macrocode} +% +% Define the "basque" style. (TODO: implement day of week?) +% \begin{macrocode} +\DTMnewstyle + {basque}% label + {% date style + \renewcommand*\DTMdisplaydate[4]{% + \DTMifbool{basque}{showyear}% + {% + \number##1% + \DTMbasqueyearmonthsep + }% + {}% + \DTMbasquemonthname{##2}% + \DTMifbool{basque}{showdayofmonth} + {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}% + {}% + }% + \renewcommand*\DTMDisplaydate[4]{% + \DTMifbool{basque}{showyear}% + {% + \number##1% + \DTMbasqueyearmonthsep + \DTMbasquemonthname{##2}% + }% + {% + \DTMbasqueMonthname{##2}% + }% + \DTMifbool{basque}{showdayofmonth} + {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}% + {}% + }% + }% + {% time style (use default) + \DTMsettimestyle{default}% + }% + {% zone style + \DTMresetzones + \DTMbasquezonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{basque}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi + }% + }% + }% + {% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMbasquedatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMbasquetimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}[9]{% + \ifDTMshowdate + \DTMDisplaydate{##1}{##2}{##3}{##4}% + \DTMbasquedatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMbasquetimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + }% +% \end{macrocode} +% +% Define numeric style. +% \begin{macrocode} +\DTMnewstyle + {basque-numeric}% label + {% date style + \renewcommand*\DTMdisplaydate[4]{% + \DTMifbool{basque}{showyear}% + {% + \number##1% + \DTMbasquedatesep + }% + {}% + \number##2% + \DTMifbool{basque}{showdayofmonth}% + {% + \DTMbasquedatesep + \number##3 % space intended + }% + {}% + }% + \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}% + }% + {% time style + \renewcommand*\DTMdisplaytime[3]{% + \number##1 + \DTMbasquetimesep\DTMtwodigits{##2}% + \ifDTMshowseconds\DTMbasquetimesep\DTMtwodigits{##3}\fi + }% + }% + {% zone style + \DTMresetzones + \DTMbasquezonemaps + \renewcommand*{\DTMdisplayzone}[2]{% + \DTMifbool{basque}{mapzone}% + {\DTMusezonemapordefault{##1}{##2}}% + {% + \ifnum##1<0\else+\fi\DTMtwodigits{##1}% + \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi + }% + }% + }% + {% full style + \renewcommand*{\DTMdisplay}[9]{% + \ifDTMshowdate + \DTMdisplaydate{##1}{##2}{##3}{##4}% + \DTMbasquedatetimesep + \fi + \DTMdisplaytime{##5}{##6}{##7}% + \ifDTMshowzone + \DTMbasquetimezonesep + \DTMdisplayzone{##8}{##9}% + \fi + }% + \renewcommand*{\DTMDisplay}{\DTMdisplay}% + } +% \end{macrocode} +% +%\begin{macro}{\DTMbasquezonemaps} +% The time zone mappings are set through this command, which can be +% redefined if extra mappings are required or mappings need to be +% removed. This currently has no mappings. +% \begin{macrocode} +\newcommand*{\DTMbasquezonemaps}{% +} +% \end{macrocode} +%\end{macro} + +% Switch style according to the \opt{useregional} setting. +% \begin{macrocode} +\DTMifcaseregional +{}% do nothing +{\DTMsetstyle{basque}} +{\DTMsetstyle{basque-numeric}} +% \end{macrocode} +% +% Redefine \cs{datebasque} (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.) +% \changes{v1.2a}{2018/03/20}{Suppress spurious space.} +% \begin{macrocode} +\ifcsundef{date\CurrentTrackedDialect} +{% + \ifundef\datebasque + {% do nothing + }% + {% + \def\datebasque{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{basque}}% + {\DTMsetstyle{basque-numeric}}% + }% + }% +}% +{% + \csdef{date\CurrentTrackedDialect}{% + \DTMifcaseregional + {}% do nothing + {\DTMsetstyle{basque}}% + {\DTMsetstyle{basque-numeric}}% + }% +}% +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</datetime2-basque.ldf> +% \end{macrocode} +%\fi +%\Finale +\endinput |