% \iffalse meta comment % File: isodate.dtx Copyright (C) 2000--2005 Harald Harders % \fi % % \iffalse % %<*driver> \documentclass[UKenglish]{ltxdoc} \usepackage{babel} \IfFileExists{isodate.sty}{\usepackage[english,iso]{isodate} \let\isodateSTYfound\active}{\GenericWarning{isodate.dtx}{Package file isodate.sty not found (Documentation will be messed up!^^J^^A Generate isodate.sty by (La)TeXing isodate.ins, process isodate.dtx again)^^J}\stop} \usepackage{array} \usepackage{url} \usepackage{longtable} \usepackage{morefloats} \GetFileInfo{isodate.sty} \title{The \texttt{isodate} package\thanks{This file has version \fileversion\ last revised \printdateTeX{\filedate}.}} \author{Harald Harders\\\texttt{h.harders@tu-bs.de}} \date{File Date \printdateTeX{\filedate}, Printed \today} \newlength{\tempdima}% \makeatletter \renewenvironment{table}[1][]{% \@float{table}[#1]% \centering% \setlength{\tempdima}{\abovecaptionskip}% \setlength{\abovecaptionskip}{\belowcaptionskip}% \setlength{\belowcaptionskip}{\tempdima}% }{% \end@float } \makeatother \EnableCrossrefs \CodelineIndex \DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter,% \gdef,\@ifundefined,\@empty,\@firstoftwo,\@secondoftwo,\@nil,% \,,\number,\renewcommand,\setboolean,\whiledo,\ifthenelse} \DoNotIndex{\setcounter,\space,\MessageBreak,\DeclareRobustCommand,\equal} \DoNotIndex{\csname,\endcsname,\ifx,\else,\fi,\if,\fi,\@tempswafalse} \DoNotIndex{\@tempswatrue,\undefined,\if,\or,\and,\fi} \DoNotIndex{\begingroup,\endgroup,\begin,\end,\CurrentOption} \CodelineNumbered \RecordChanges \CheckSum{2244} \begin{document} \DocInput{isodate.dtx} \end{document} % % \fi % % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % \changes{2.23}{2004/11/19}{Avoid to use the \texttt{calc} package % since it causes problems with many other packages}% % \changes{2.22}{2004/02/12}{Path changed according to new CTAN % structure}% % \changes{2.22}{2004/02/12}{Makefile adapted for \TeX Live}% % \changes{2.21}{2003/12/06}{Fix some bugs in date ranges when both % month and year are equal (several language)}% % \changes{2.21}{2003/12/06}{Support to print date without year (in % all language-dependent commands \cs{iso@printmonthday@...} and % \cs{iso@printdate@...})}% % \changes{2.20}{2003/12/06}{Avoid usage of \cs{filedate} and % \cs{fileversion}} % \changes{2.01}{2000/08/24}{For the case that none of the packages % babel, german, and ngerman is loaded there is a new macro % \texttt{\textbackslash iso@languagename} that contains the name of % the last loaded language. If one of the packages is loaded it % contains the current language.} % \changes{2.00}{2000/08/21}{Total reimplementation of the % package. The old package has renamed to isodateo.} % % \maketitle % % \begin{abstract} % \noindent This package provides commands to switch between different % date formats (standard, ISO, numeric, \LaTeX\ package). % They are used by the \cs{today} command, by the \cs{printdate} and % \cs{printdateTeX} commands that print any date, and by the % \cs{daterange} command that prints a date range. % At the moment, this package supports German (old and new % orthography, Austrian), British, US, Australian as well as New % Zealand English,\footnote{In order to use Australian or New Zealand, % you need a version of babel that supports the used language. It % should be available, soon.} % French, Danish, Swedish, and Norwegian. % % The idea for this package was taken from the akletter class. % \end{abstract} % % \tableofcontents % % \section*{Acknowledgements} % % First of all I have to thank Axel Kielhorn who wrote the package % \verb|akletter| which inspired me to write \verb|isodate|. The help % of Heiko Oberdiek was necessary to handle characters in substrings % which resulted in the package \verb|substr|. David Sanderson found % the bug which disabled \verb|isodate| to work without % \verb|babel|. He also helped me to improve the documentation and % sent me a link to the ISO 8601 norm \cite{iso8601a}. % Svend Tollak Munkejord has added the Norwegian language, Christian % Schlauer has added Swedish. % % \section*{Requirements} % % The package |isodate| needs the package |substr.sty| which can be % obtained from |CTAN:macros/latex/contrib/substr/|. % % \section{Commands} % % \subsection{Switching the date output format} % % \DescribeMacro{\isodate}% % \DescribeMacro{\numdate}% % \DescribeMacro{\shortdate}% % \DescribeMacro{\TeXdate}% % \DescribeMacro{\origdate}% % \changes{2.05}{2001/05/19}{Added an original format with a two digit year.}% % \DescribeMacro{\shortorigdate}% % \DescribeMacro{\Romandate}% % \DescribeMacro{\romandate}% % This package provides five commands to switch the output format of % all commands that print dates (described later): % \DescribeMacro{\shortRomandate}% % \DescribeMacro{\shortromandate}% % \medskip % % \begin{longtable}[l]{@{}ll} % \verb|\isodate|&date format described in ISO 8601 and DIN 5008 % \cite{iso8601a}\\ % &(yyyy-mm-dd)\\ % \verb|\numdate|&numeric date format with four digits of the year\\ % \verb|\shortdate|&short numeric date format with two digits of the % year\\ % \verb|\TeXdate|&date format used for version description of % packages\\ % &(yyyy/mm/dd)\\ % \verb|\origdate|&original \LaTeX\ format\\ % \verb|\shortorigdate|&original \LaTeX\ format with two instead of four % digits of\\ % &the year\\ % \verb|\Romandate|& As \cs{numdate} but with uppercase Roman numerals % \\ % & for the month\\ % \verb|\romandate|& As \cs{numdate} but with lowercase Roman numerals % \\ % & for the month\\ % \verb|\shortRomandate|& As \cs{shortdate} but with uppercase Roman numerals % \\ % & for the month\\ % \verb|\shortromandate|& As \cs{shortdate} but with lowercase Roman numerals % \\ % & for the month\\ % \end{longtable} % \medskip % % These commands \emph{do not} print any dates and they don't take an % argument. % They just switch the format for later usage of the date-printing % commands \cs{today}, \cs{printdate}, \cs{printdateTeX}, and % \cs{daterange}. % % The numeric and short numeric as well as the Roman numbered formats % change their behaviour depending on the current language: % % \noindent\begin{tabular}{@{}llll@{}} % German, nGerman&\verb|dd.\,mm.~yyyy|&resp.&\verb|dd.\,mm.\,yy|\\ % US English&\verb|mm/dd/yyyy|&resp.&\verb|mm/dd/yy|\\ % other languages&\verb|dd/mm/yyyy|&resp.&\verb|dd/mm/yy| % \end{tabular} % % This package supports German (old and new rules, Austrian), US % English, French, Danish, Swedish, and Norwegian. % Switching the language by using \verb|\selectlanguage| does \emph{not} % switch back to the original date format. So the current date format % stays active when changing the language. % % The change of the date format works locally. So it is possible to % change it locally inside a group; e.g., % \begin{verbatim} %\today, {\origdate\today}, \today\end{verbatim} % leads to ``\today, {\origdate\today}, \today''. % % \DescribeMacro{\printyearoff}% % \DescribeMacro{\printyearon}% % By default, all formats print the day, month, and year. % Sometimes, you may want to print the date without the year. % This can be reached by using the command \cs{printyearoff}. % You can switch back with \cs{printyearon} or by using % \cs{printyearoff} inside a group (e.g., an environment). % To switch globally, preceed the command by \cs{global}. % An example: % \begin{verbatim} %\today, {\printyearoff\today}, \today\end{verbatim} % leads to ``{\origdate\today, {\printyearoff\today}, \today}''. % % % \subsection{Printing today's date} % % \DescribeMacro{\today}% % As usual, the command \cs{today} prints the date of today. Its % appearance is influenced by the current date format % % \subsection{Printing any date} % % \DescribeMacro{\printdate}% % The command \verb|\printdate{#1}| prints any date in the current % format. The argument may be a date in German, British English, or % ISO format, e.g., % \begin{verbatim} %\printdate{24.12.2000} %\printdate{24/12/2000} %\printdate{2000-12-24}\end{verbatim} % % \DescribeMacro{\printdateTeX}% % The command \verb|\printdateTeX{#1}| prints any date in the actual % format. The argument must be in the \LaTeX\ format % \verb|yyyy/mm/dd|, e.g., % \begin{verbatim} %\printdateTeX{2000/12/24}\end{verbatim} % This command is useful for printing version information stored in a % macro. For example the version of this package is stored in % the macro \verb|\filedate| (``\filedate''). To print it with the actual % date format you can use the command \verb|\printdateTeX{\filedate}| % which leads to e.g., ``\printdateTeX{\filedate}'' or % {\origdate``\printdateTeX{\filedate}''}. % Another possibility is to switch the input format to |tex| using % \cs{dateinputformat}, described below. % % \subsection{Printing date ranges} % % \DescribeMacro{\daterange}% % The command \verb|\daterange{#1}{#2}| prints a date range in the current % format. The arguments may be a date in German, British English, or % ISO format (see above). But there is a limitation: Both arguments % must have the same input format. % % Depending on the language and date format, this commands leaves out % some of the data. The simplest way to understand it is to watch some % examples: % \par\medskip\noindent % \verb|{\isodate|{\isodate\\ % \verb|\daterange{1999-05-03}{1999-05-31}| $\longrightarrow$ % \daterange{1999-05-03}{1999-05-31}\\ % \verb|\daterange{1999-05-03}{1999-11-03}| $\longrightarrow$ % \daterange{1999-05-03}{1999-11-03}\\ % \verb|\daterange{1999-05-03}{2000-04-07}| $\longrightarrow$ % \daterange{1999-05-03}{2000-04-07}\\ % \verb|}|}\\ % \verb|{\origdate|{\origdate\\ % \verb|\daterange{1999-05-03}{1999-05-31}| $\longrightarrow$ % \daterange{1999-05-03}{1999-05-31}\\ % \verb|\daterange{1999-05-03}{1999-11-03}| $\longrightarrow$ % \daterange{1999-05-03}{1999-11-03}\\ % \verb|\daterange{1999-05-03}{2000-04-07}| $\longrightarrow$ % \daterange{1999-05-03}{2000-04-07}\\ % \verb|}|} % % \subsection{Changing the ISO format} % % \DescribeMacro{\isodash}% % The ISO norm says that the date format is ``yyyy-mm-dd'' or % ``yyyymmdd'' \cite{iso8601a}. % By default I use the hyphen ``-'' as separator. You can change this % using the \verb|\isodash|\footnote{The name ``isodash'' is a little % bit confusing and was chosen due to my limited knowledge in % English. It should be named ``isoseparator'' or ``isosep''. But for % compatiblity reasons I will not change it.} command, e.g., % \begin{verbatim} %\printdate{24/12/2000}, %\isodash{--}% %\printdate{24/12/2000}, %\isodash{}% %\printdate{24/12/2000}\end{verbatim} % leads to ``2000-12-24, 2000--12--24, 20001224''. Or for example % \begin{verbatim} %\isodash{$\cdot$} %\printdate{24/12/2000}\end{verbatim} % leads to ``2000$\cdot$12$\cdot$24''. % % % \subsection{Changing the short original format} % % \DescribeMacro{\shortyearsign}% % % The short original format normally prints the year with two digits, e.g., % ``19th May 01''. % Some people want to add an additional sign before the year, e.g., % ``19th May '01''. % This can be achieved by using the command \verb|\shortyearsign|, e.g., % \begin{verbatim} %\printdate{24/12/2000}, %\shortyearsign{'}% %\printdate{24/12/2000}\end{verbatim} % leads to ``24 december 00, 24 december '00'' in English. % % This only effects the \verb|shortorig| format. The \verb|short| numerical % format stays unchanged. % % % \subsection{Changing the German format} % % \changes{2.03}{2001/05/04}{Allow change of spaces for German language}% % The spacings for the numerical formats in the German language % (24.\,12.~2000 resp. 24.\,12.\,00) were taken from the Duden % \cite{duden1996a} and are the defaults when using one of the % German derivatives. % Some people want to use different spacings. Thus from version 2.03 on it % is possible to change them. % \DescribeMacro{\daymonthsepgerman}% % \DescribeMacro{\monthyearsepgerman}% % You can change the spacing between the day and the month using the % command \verb|\daymonthsepgerman|. Using the command % \verb|\monthyearsepgerman| you can change the spacing between the % month and the year for the long and the short format, e.g., % \begin{verbatim} %\daymonthsepgerman{\quad}% %\monthyearsepgerman{\qquad}{\quad}% %{\numdate\printdate{24.12.2000}}, {\shortdate\printdate{24.12.2000}}\end{verbatim} % leads to ``24.\quad12.\qquad2000, 24.\quad12.\quad00''. % % The default values are ``\cs{,}'' for the separator between day and % month resp.\ ``\cs{,}'' between month and year in the short format % and ``|~|'' in the long format. % % % \subsection{User defined month formatting} % % Internally, the formats using Roman numerals for the month are just % links to the \cs{numdate} and \cs{shortdate} formats with a changed % format for printing the month. % Therefore, the command \cs{Romandate} calls \cs{numdate} by % following sequence: % \begin{verbatim} %\numdate[Roman]% %\isotwodigitdayfalse\end{verbatim} % This tells \cs{numdate} to format the month using the \cs{Roman} % command and to typeset the day without a leading zero if it is % less than ten. % % You may do similar things, e.g., % \begin{verbatim} %\numdate[Alph]\end{verbatim} % prints the months with the command \cs{Alph}, ``A'', ``B'', \ldots{} % The day is printed with two digits since every call of \cs{numdate} % or \cs{shortdate} calls \cs{isotwodigitdaytrue} which switches % printing the day with two digits on. % This does not make any sence but may serve as example. % If you want to enable days with one digit, append % \cs{isotwodigitdaytrue}: % \begin{verbatim} %\numdate[Alph]% %\isotwodigitdaytrue\end{verbatim} % % You may declare any command that typesets a counter that is given as % its mandatory argument (e.g., \cs{alph}, \cs{Alph}, \cs{arabic}, % \ldots) in the optional argument of the \cs{numdate}, % \cs{shortdate}, \cs{isodate}, and \cs{TeXdate} commands, without the % leading backslash. % You can, of course, define own commands that do it. % For instance, % \begin{verbatim} %{\def\boldnum#1{\textbf{\twodigitarabic{#1}}}% %\numdate[boldnum]% %\printdate{24.3.2000}}\end{verbatim} % leas to % ``{\def\boldnum#1{\textbf{\twodigitarabic{#1}}}\ignorespaces % \numdate[boldnum]\ignorespaces % \printdate{24.3.2000}}''. % \DescribeMacro{\twodigitarabic} % Here, the \cs{twodigitarabic} command has been used that prints a % positive number with at least two digits.\footnote{This command is % also used for the numerical date formats.} % % If you, for example want a numerical date format with the day and % month printed with the ``natural'' number of digits rather than with % two digits, you may do it as follows: % \begin{verbatim} %{\numdate[arabic]\isotwodigitdayfalse %\printdate{1.2.2000}}\end{verbatim} % which leads to ``{\numdate[arabic]\isotwodigitdayfalse % \printdate{1.2.2000}}''. % % Using one of the other date formats reset the numerical format to % its standard settings with arabic numerals (with two digits), e.g., % \begin{verbatim} %{\numdate[Alph]\printdate{6.12.2000}; %\isodate\printdate{6.12.2000}; %\numdate\printdate{6.12.2000}}\end{verbatim} % leads to ``{\numdate[Alph]\isotwodigitdayfalse\printdate{6.12.2000}; % \isodate\printdate{6.12.2000}; % \numdate\printdate{6.12.2000}}''. % % \subsection{Switching the date input format} % % \DescribeMacro{\dateinputformat}% % As described above, the date can be given in different formats. % For the German format |dd.mm.yyyy| and the ISO format |yyyy-mm-dd|, % the input format is definite. % But when using slashes to seperate the day, month, and year, % different formats exist. % British people use |dd/mm/yyyy|, American people use |mm/dd/yyyy|, % while \TeX\ uses |yyyy/mm/dd| which in fact is an ISO format with % slashes instead of dashes. % % By default, the British format is used. % If the user wants to give the American or \TeX\ format as argument % of the \cs{printdate} or \cs{daterange} commands, the macro % \cs{dateinputformat} can be used to change the behaviour. % This macro takes the name of the input format as single parameter, % e.g., \cs{dateinputformat\{american\}}, for switching to American % behaviour, e.i., |mm/dd/yyyy|. % For example, % \begin{verbatim} %\numdate %\selectlanguage{UKenglish}% %\dateinputformat{american}% %\printdate{12/31/2004}\end{verbatim} % gives % \begingroup % \numdate % \selectlanguage{UKenglish}\dateinputformat{american}\printdate{12/31/2004}. % \endgroup % In this example, \emph{input} format is American while the % \emph{output} format is English. % % Valid arguments for the \cs{dateinputformat} command are |english|, % |UKenglish|, |british|, |american|, |USenglish|, |tex|, |latex|, % |TeX|, |LaTeX|. % The meaning of most possibilities should be clear; |english| means % British English. % % Beware that the input format may only be changed for the date format % using slashes. % Thus, you don't have to and are not allowed to specify input formats % other than these described above. % For example, \cs{dateinputformat\{german\}} is not % allowed (and not necessary). % % \section{Calling the package} % % The package is called using the \verb|\usepackage| command:\\ % \verb|\usepackage[|option\verb|]{isodate}|. % % The possible package options can be seen in table~\ref{tab:options}. % % % \begin{table}[!tbp] % \centering % \caption{Package options} % \label{tab:options} % \begin{minipage}{\linewidth} % \begin{tabular}{ll}\hline % option&function\\ \hline % \verb|iso|&start with ISO date format\\ % \verb|num|&start with numeric date format with 4 digits of the year\\ % \verb|short|&start with numeric date format with 2 digits of the year\\ % \verb|TeX|&start with \LaTeX\ numeric date format (yyyy/mm/dd)\\ % \verb|orig|&start with normal \LaTeX\ date format % (default\footnote{The original format is used as default in order % to avoid a different document output by just including the package.})\\ % \verb|shortorig|&start with short normal \LaTeX\ date format (2 digits)\\ % \verb|Roman|&start with numeric date format (month in uppercase\\ % & Roman numerals)\\ % \verb|roman|&start with numeric date format (month in lowercase\\ % & Roman numerals)\\ % \verb|shortRoman|&start with short Roman format\\ % \verb|shortroman|&start with short roman format\\ % \hline % \verb|american|&support American English date format\\ % \verb|austrian|&support Austrian date format\\ % \verb|british|&support British English date format\\ % \verb|danish|&support Danish date format\\ % \verb|english|&support British English date format\\ % \verb|french|&support French date format\\ % \verb|german|&support German date format\\ % \verb|naustrian|&support new Austrian date format\\ % \verb|ngerman|&support new German date format\\ % \verb|norsk|&support Norwegian date format\\ % \verb|norwegian|&support Norwegian date format\\ % \verb|swedish|&support Swedish date format\\ % \verb|UKenglish|&support British English date format\\ % \verb|USenglish|&support American English date format\\ % \hline % \verb|inputenglish|& English date input format (default)\\ % \verb|inputbritish|& English date input format (default)\\ % \verb|inputUKenglish|& English date input format (default)\\ % \verb|inputamerican|& American date input format\\ % \verb|inputUSenglish|& American date input format\\ % \verb|inputtex|& \TeX\ date input format\\ % \verb|inputTeX|& \TeX\ date input format\\ % \verb|inputlatex|& \TeX\ date input format\\ % \verb|inputLaTeX|& \TeX\ date input format\\ % \hline % \end{tabular} % \end{minipage} % \end{table} % % \emph{Be aware that at least one language option must be set when calling % isodate.} The last language in the option list is the default language. % % The package isodate works well together with \verb|babel.sty|, % \verb|german.sty|, or \verb|ngerman.sty|. % It does not matter if \verb|isodate| is loaded before or after the % used language package. % % It is also possible to use isodate without one of the language % packages. Then it is not possible to switch between languages using % the \verb|\selectlanguage| command.\footnote{Yes, there is a way to % change the date language, but it is a little bit tricky:\\ % \texttt{\textbackslash makeatletter\\ % \textbackslash def\textbackslash iso@languagename\{german\}\%\\ % \textbackslash dategerman\%\\ % \textbackslash makeatother}} % Then the default language is the last one in the option list. If an % error occurs when using isodate without one of the packages % \verb|babel.sty|, \verb|german.sty|, and \verb|ngerman.sty| please % run \verb|tstlang.tex| through latex and send the file % \verb|tstlang.log| to the address \verb|h.harders@tu-bs.de|. % % If using isodate % together with babel it can be useful to put the language options as % global options into the optional parameters of the % \verb|\documentclass| command. % Then automatically the available languages are the same for the text % and the dates, and the default language is also the same. % For example: % \begin{verbatim} %\documentclass[english,german]{article} %\usepackage{babel} %\usepackage[num]{isodate}\end{verbatim} % % The input format options specify the input format that is used at % the begin of the document. % You don't have to define multiple options if you want to change the % input format in the document using \cs{dateinputformat}. % For example, % \begin{verbatim} %\documentclass[american,german,british]{article} %\usepackage{babel} %\usepackage[iso,inputamerican]{isodate} %\begin{document} %D \printdate{28.2.2000}\par %ISO \printdate{2000-2-28}\par %US \printdate{2/28/2000}\par %\dateinputformat{british}UK \printdate{28/2/2000}\par %\dateinputformat{tex}\TeX\ \printdate{2000/2/28} %\end{document}\end{verbatim} % works as expected. % % Beware that only the mentioned input formats are defined. % For example, |inputgerman| does not exist because it is not % necessary. % % % \section{Add new languages to the package} % % The easiest way to add new languages to the package is to copy one % of the simple language files \verb|danish.idf| or \verb|french.idf| % to the new language name, e.g., \verb|plattdeutsch.idf|, and change it % as necessary. % % This new file can be used without changing \verb|isodate.sty| if you % use its name explicitly in the optional parameter of the % \verb|\usepackage| command. If you have added support for a new % language please mail me. % % \changes{2.04}{2001/05/17}{Added section for solvable problems.} % \changes{2.10}{2003/10/13}{Removed section about solvable problems % since it was wrong.} % % \appendix % % \section{Licence} % % Copyright 2000--2005 Harald Harders % % This program can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or any later version. % % \section{Known errors} % % \begin{itemize} % \item The \cs{printdate} and \cs{printdateTeX} commands are not % very good in checking the argument for correct syntax. % \item The language definition files \verb|french.idf| and % \verb|german.idf| are not yet commented. % \item Isodate and draftcopy do not work together. % \end{itemize} % % \section{Planned features and changes} % % \begin{itemize} % \item Of course eliminate the errors. % \item Add other languages. % Please help me with this topic. I don't know the date formats in % other languages. % \item Add a command that prints only the month and the year of a date. % \item Format short given years to four digits and calculate % reasonable first and second digits. % \end{itemize} % % \begin{thebibliography}{1} % \bibitem{iso8601a} % International Standard: ISO~8601. % \newblock \url{http://www.iso.ch/markete/8601.pdf}, 1988-06-15. % \bibitem{duden1996a} % DUDEN Band 1. % \newblock Die deutsche Rechtschreibung. % \newblock 21. Auf\/lage, Dudenverlag, Mannheim, Germany, 1996. % \end{thebibliography} % % \StopEventually{\PrintChanges \PrintIndex} % % % \section{The implementation} % % \subsection{Package file isodate.sty} % % Heading of the files: % \begin{macrocode} %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{isodate} %\ProvidesFile{danish.idf} %\ProvidesFile{english.idf} %\ProvidesFile{french.idf} %\ProvidesFile{german.idf} %\ProvidesFile{norsk.idf} %\ProvidesFile{swedish.idf} % [2005/03/11 v2.27 Print dates with different formats (HH)] % [2005/03/11 v2.27 Language definitions for isodate package (HH)] % \end{macrocode} % The package: % \begin{macrocode} %<*isodate> \RequirePackage{ifthen} \IfFileExists{substr.sty}{\RequirePackage{substr}% }{\PackageError{isodate.sty}{Package file substr.sty not found} {This version of isodate.sty needs the package substr.sty.^^J% You can download it from CTAN:/macros/latex/contrib/substr/^^J% e.g., one CTAN node is ftp.dante.de. Install substr.sty into your TeX tree.}} % \end{macrocode} % Declare the options for the default date format. % \changes{2.05}{2001/05/19}{Execute options at the end of the package instead % of at the end of the preamble.} % \changes{2.10}{2003/10/13}{Add month in Roman numerals}% % \begin{macrocode} \DeclareOption{iso}{\AtEndOfPackage{\isodate}} \DeclareOption{num}{\AtEndOfPackage{\numdate}} \DeclareOption{short}{\AtEndOfPackage{\shortdate}} \DeclareOption{TeX}{\AtEndOfPackage{\TeXdate}} \DeclareOption{orig}{\AtEndOfPackage{\origdate}} \DeclareOption{shortorig}{\AtEndOfPackage{\shortorigdate}} \DeclareOption{Roman}{\AtEndOfPackage{\Romandate}} \DeclareOption{roman}{\AtEndOfPackage{\romandate}} \DeclareOption{shortRoman}{\AtEndOfPackage{\shortRomandate}} \DeclareOption{shortroman}{\AtEndOfPackage{\shortromandate}} % \end{macrocode} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % Declare the options for the default date input format. % \begin{macrocode} \DeclareOption{inputenglish}{\AtEndOfPackage{\dateinputformat{english}}} \DeclareOption{inputbritish}{\AtEndOfPackage{\dateinputformat{english}}} \DeclareOption{inputUKenglish}{\AtEndOfPackage{\dateinputformat{english}}} \DeclareOption{inputamerican}{\AtEndOfPackage{\dateinputformat{american}}} \DeclareOption{inputUSenglish}{\AtEndOfPackage{\dateinputformat{american}}} \DeclareOption{inputtex}{\AtEndOfPackage{\dateinputformat{tex}}} \DeclareOption{inputTeX}{\AtEndOfPackage{\dateinputformat{tex}}} \DeclareOption{inputlatex}{\AtEndOfPackage{\dateinputformat{tex}}} \DeclareOption{inputLaTeX}{\AtEndOfPackage{\dateinputformat{tex}}} % \end{macrocode} % Declare the options for language support. % \changes{2.07}{2003/07/29}{Added Swedish language}% % \changes{2.20}{2003/12/06}{Add Australian and New Zealand}% % \changes{2.24}{2005/02/17}{Add option frenchb}% % \changes{2.26}{2005/03/10}{Add option british}% % \begin{macrocode} \DeclareOption{american}{\input{english.idf}} \DeclareOption{australian}{\input{english.idf}} \DeclareOption{austrian}{\input{german.idf}} \DeclareOption{danish}{\input{danish.idf}} \DeclareOption{english}{\input{english.idf}} \DeclareOption{british}{\input{english.idf}} \DeclareOption{french}{\input{french.idf}} \DeclareOption{frenchb}{\input{french.idf}} \DeclareOption{german}{\input{german.idf}} \DeclareOption{naustrian}{\input{german.idf}} \DeclareOption{newzealand}{\input{english.idf}} \DeclareOption{ngerman}{\input{german.idf}} \DeclareOption{norsk}{\input{norsk.idf}} \DeclareOption{norwegian}{\input{norsk.idf}} \DeclareOption{swedish}{\input{swedish.idf}} \DeclareOption{UKenglish}{\input{english.idf}} \DeclareOption{USenglish}{\input{english.idf}} % \end{macrocode} % Make it possible to load language definition files that are not % known by this package. % \begin{macrocode} \DeclareOption*{% \InputIfFileExists{\CurrentOption.idf}{}{% \PackageError{isodate}{% Isodate definition file \CurrentOption.idf not found}{% Maybe you misspelled the language option?}}% } % \end{macrocode} % Set default option to \verb|orig|. % \begin{macrocode} \ExecuteOptions{orig} % \end{macrocode} % Process the options. % \begin{macrocode} \ProcessOptions* % \end{macrocode} % Handle the case that no language was given. Throw an error message. % Each language definition file \verb|*.idf| must contain a line % \begin{verbatim} %\let\iso@languageloaded\active\end{verbatim} % that defines the command \verb|\iso@languageloaded|. % \begin{macrocode} \ifx\iso@languageloaded\@undefined \PackageError{isodate}{% You haven't specified a language option}{% You need to specify a language, either as a global option\MessageBreak or as an optional argument to the \string\usepackage\space command.\MessageBreak If you have used the old isodate package (version <=1.06) you can change the\MessageBreak usepackage command to \protect\usepackage{isodate}.\MessageBreak You shouldn't try to proceed from here, type x to quit.} \fi % \end{macrocode} % \changes{2.10}{2003/10/13}{Add month in Roman numerals}% % \begin{macro}{\iso@printday} % \changes{2.14}{2003/10/26}{Control the number of digits for the day % by a boolean rather than by the command calls}% % Prints a day. % \begin{macrocode} \newcommand*\iso@printday[1]{% \ifisotwodigitday \ifthenelse{\number#1<10}{0}{}% \fi \number#1% }% % \end{macrocode} % \end{macro} % \begin{macro}{\twodigitarabic} % \changes{2.10}{2003/10/13}{Added \cs{twodigitarabic}}% % Typesets the given counter with at least two digits. % This command is very simple and does only work for positive numbers % below 100. % \begin{macrocode} \newcommand*\twodigitarabic[1]{% \ifthenelse{\number\arabic{#1}<10}{0}{}% \arabic{#1}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printmonth} % \changes{2.10}{2003/10/13}{Use \cs{twodigitarabic}}% % Prints a month using \cs{theiso@tmpmonth} as output fourmat. % \begin{macrocode} \newcommand*\iso@printmonth[1]{% \setcounter{iso@tmpmonth}{#1}% \theiso@tmpmonth% } % \end{macrocode} % Define the help counter that prints the month and initialize it to % print arabic numbers. % \begin{macrocode} \newcounter{iso@tmpmonth} %\def\theiso@tmpmonth{\arabic{iso@tmpmonth}} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@yeartwo} % Prints the argument of the command with two % digits. % % Example: \verb|\iso@yeartwo{1873}| $\longrightarrow$ % \makeatletter\iso@yeartwo{1873}\makeatother. % \begin{macrocode} \newcounter{iso@yeartwo}% \newcommand*\iso@yeartwo[1]{% \setcounter{iso@yeartwo}{\number#1}% \whiledo{\theiso@yeartwo>99}{% \addtocounter{iso@yeartwo}{-100}}{}% \ifthenelse{\number\theiso@yeartwo<10}{0}{}\theiso@yeartwo } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@yearfour} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % Prints the argument of the command with four digits. % \begin{macrocode} \newcommand*\iso@yearfour[1]{% \ifthenelse{\number#1<1000}{0}{}% \ifthenelse{\number#1<100}{0}{}% \ifthenelse{\number#1<10}{0}{}% \number#1% }% % \end{macrocode} % \end{macro} % \changes{2.14}{2003/10/26}{Control the number of digits for the day % by a boolean rather than by the command calls}% % \begin{macro}{\ifisotwodigitday} % Print day with two digits or natural number of digits? % \begin{macrocode} \newif\ifisotwodigitday % \end{macrocode} % \end{macro} % \begin{macro}{\iso@dateformat} % In this command, the current active date format ist stored. Possible % values are: \verb|numeric|, \verb|short|, \verb|iso|, \verb|orig|, % \verb|shortorig|, \verb|TeX|. % \begin{macrocode} \def\iso@dateformat{numeric} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@inputformat} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % This macro stores which input format is used for dates given with % slashes. Valid formats are |english| (dd/mm/yyyy), |american| % (mm/dd/yyyy), and |tex| (yyyy/mm/dd). By default, English is used. % \begin{macrocode} \DeclareRobustCommand*\dateinputformat[1]{% \ifthenelse{% \equal{#1}{english}\or \equal{#1}{british}\or \equal{#1}{UKenglish}}{% \def\iso@inputformat{english}% }{% \ifthenelse{% \equal{#1}{american}\or \equal{#1}{USenglish}}{% \def\iso@inputformat{american}% }{% \ifthenelse{% \equal{#1}{tex}\or \equal{#1}{TeX}\or \equal{#1}{latex}\or \equal{#1}{LaTeX}}{% \def\iso@inputformat{tex}% }{% \PackageError{isodate}{Invalid date input format}{% Maybe you misspelled the language option (english, american, tex)?}% }% }% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@inputformat} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % This macro stores which input format is used for dates given with % slashes. Valid formats are |english| (dd/mm/yyyy), |american| % (mm/dd/yyyy), and |tex| (yyyy/mm/dd). By default, English is used. % \begin{macrocode} \dateinputformat{english} % \end{macrocode} % \end{macro} % \changes{2.10}{2003/10/13}{Add month in Roman numerals}% % \begin{macro}{\numdate} % Switches to long numerical date format. % \begin{macrocode} \DeclareRobustCommand*\numdate[1][twodigitarabic]{% \def\iso@dateformat{numeric}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } % \end{macrocode} % \end{macro} % \changes{2.10}{2003/10/13}{Add month in Roman numerals}% % \changes{2.14}{2003/10/26}{Don't print day with two digits when % Roman numerals are used for the month}% % \begin{macro}{\shortdate} % Switches to short numerical date format. % \begin{macrocode} \DeclareRobustCommand*\shortdate[1][twodigitarabic]{% \def\iso@dateformat{short}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } % \end{macrocode} % \end{macro} % \changes{2.12}{2003/10/14}{Wrong one-digit months avoided}% % \begin{macro}{\isodate} % \changes{2.14}{2003/10/26}{Allow change in format for month}% % Switches to ISO date format. % \begin{macrocode} \DeclareRobustCommand*\isodate[1][twodigitarabic]{% \def\iso@dateformat{iso}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\origdate} % Switches to the original date format. % \begin{macrocode} \DeclareRobustCommand*\origdate{% \def\iso@dateformat{orig}% \isotwodigitdayfalse \def\theiso@tmpmonth{\twodigitarabic{iso@tmpmonth}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\shortorigdate} % Switches to the short original date format. % \begin{macrocode} \DeclareRobustCommand*\shortorigdate{% \def\iso@dateformat{shortorig}% \isotwodigitdayfalse \def\theiso@tmpmonth{\twodigitarabic{iso@tmpmonth}}% } % \end{macrocode} % \end{macro}q % \begin{macro}{\TeXdate} % \changes{2.14}{2003/10/26}{Allow change in format for month}% % Switches to \LaTeX\ date format. % \begin{macrocode} \DeclareRobustCommand*\TeXdate[1][twodigitarabic]{% \def\iso@dateformat{TeX}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } % \end{macrocode} % \end{macro} % \changes{2.10}{2003/10/13}{Add month in Roman numerals}% % \begin{macro}{\Romandate} % Switches to long numerical date format with month printed in % uppercase Roman numerals. % \begin{macrocode} \DeclareRobustCommand*\Romandate{% \numdate[Roman]% \isotwodigitdayfalse } % \end{macrocode} % \end{macro} % \begin{macro}{\romandate} % Switches to long numerical date format with month printed in % lowercase Roman numerals. % \begin{macrocode} \DeclareRobustCommand*\romandate{% \numdate[roman]% \isotwodigitdayfalse } % \end{macrocode} % \end{macro} % \begin{macro}{\shortRomandate} % Switches to short numerical date format with month printed in % uppercase Roman numerals. % \begin{macrocode} \DeclareRobustCommand*\shortRomandate{% \shortdate[Roman]% \isotwodigitdayfalse } % \end{macrocode} % \end{macro} % \begin{macro}{\shortromandate} % Switches to short numerical date format with month printed in % lowercase Roman numerals. % \begin{macrocode} \DeclareRobustCommand*\shortromandate{% \shortdate[roman]% \isotwodigitdayfalse } % \end{macrocode} % \end{macro} % \begin{macro}{\isodash} % Changes the dash in the ISO date format. The default is ``-''. % \begin{macrocode} \def\iso@isodash{-}% \DeclareRobustCommand*\isodash[1]{\def\iso@isodash{#1}}% % \end{macrocode} % \end{macro} % Define the sign that is printed before a two digit year in the short % original format. Default is nothing. % \begin{macro}{\shortyearsign} % \begin{macrocode} \def\iso@twodigitsign{} \DeclareRobustCommand*\shortyearsign[1]{\def\iso@twodigitsign{#1}}% % \end{macrocode} % \end{macro} % \begin{macro}{\isorangesign} % Defines the sign or word that is printed between the two dates in a % date range. e.g., in English the default is ``~to~''. % \begin{macrocode} \def\iso@rangesign{\csname iso@rangesign@\iso@languagename\endcsname}% \DeclareRobustCommand*\isorangesign[1]{\def\iso@rangesign{#1}}% % \end{macrocode} % \end{macro} % \begin{macro}{\printyearoff} % \begin{macro}{\printyearon} % \changes{2.21}{2003/12/06}{Switch on or off printing of year}% % Switches printing of the year on or off. % Default is to print the year. % \begin{macrocode} \newif\ifiso@printyear \DeclareRobustCommand*\printyearon{\iso@printyeartrue} \DeclareRobustCommand*\printyearoff{\iso@printyearfalse} \printyearon % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\iso@printdate} % Defines the command \verb|iso@printdate| which takes three arguments % (year, month, day) and prints the date by using the \cs{today} command. % \begin{macrocode} \newcommand*\iso@printdate[3]{% \begingroup% % \end{macrocode} % \changes{2.25}{2005/02/21}{Warning for unknown languages}% % \changes{2.25}{2005/02/21}{Fall-back format for unknown languages}% % Generate a warning if the active language is not known by |isodate|. % \begin{macrocode} \@ifundefined{iso@printdate@\iso@languagename}{% \PackageWarning{isodate}{Language \iso@languagename\space unknown to isodate.\MessageBreak Using default format.}% }{}% % \end{macrocode} % \changes{2.25}{2005/02/21}{Changed \cs{year}, \cs{month}, and % \cs{day} from macros to counters}% % The counters \cs{year}, \cs{month}, and \cs{day} are preserved as % counters instead of changed to macros (as it has been done until % version 2.25) to avoid problems with languages that are not defined % in |isodate.sty|. % \begin{macrocode} \year=#1 % \month=#2 % \day=#3 % \today% \endgroup% } % \end{macrocode} % \end{macro} % \begin{macro}{\printdate} % Prints a date that is given as one argument in one of these formats: % \verb|yyyy-mm-dd|, \verb|dd/mm/yyyy|, \verb|dd.mm.yyyy|. % \begin{macrocode} \DeclareRobustCommand*\printdate[1]{% % \end{macrocode} % Define \verb|\iso@date| command to expand the argument \verb|#1|. % \begin{macrocode} \edef\iso@date{#1}% % \end{macrocode} % Count appearances of ``/'', ``-'', and ``.'' in the argument. % \begin{macrocode} \SubStringsToCounter{iso@slash}{/}{\iso@date}% \SubStringsToCounter{iso@minus}{-}{\iso@date}% \SubStringsToCounter{iso@dot}{.}{\iso@date}% % \end{macrocode} % If number of ``.'' in the argument is equal to 2 then the German % format \verb|dd.mm.yyyy| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@dot}{2}}{% \expandafter\iso@input@german\iso@date\@empty}{% % \end{macrocode} % If number of ``-'' in the argument is equal to 2 then the ISO % format \verb|yyyy-mm-dd| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@minus}{2}}{% \expandafter\iso@input@iso\iso@date\@empty}{% % \end{macrocode} % If number of ``/'' in the argument is equal to 2 then the British English % format \verb|dd/mm/yyyy| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@slash}{2}}{% \expandafter\iso@input@english\iso@date\@empty}{% % \end{macrocode} % Else no of the formats above is used an thus an error message is thrown. % \begin{macrocode} ????\iso@isodash ??\iso@isodash ??% \PackageError{isodate}{unrecognized date format}{Use one of the following formats as macro argument:^^J% \space\space dd.mm.yyyy^^J% \space\space dd/mm/yyyy^^J% \space\space yyyy-mm-dd^^J% Don't use any spaces or commands like \protect\, or \protect~ inside the argument.}% }}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@input@iso} % Converts a string with the format \verb|yyyy-mm-dd| to three % arguments \verb|{#1}{#2}{#3}| and calls \verb|\iso@printdate|. % \begin{macrocode} \def\iso@input@iso#1-#2-#3\@empty{\iso@printdate{#1}{#2}{#3}} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@input@german} % Converts a string with the format \verb|dd.mm.yyyy| to three % arguments \verb|{#3}{#2}{#1}| and calls \verb|\iso@printdate|. % \begin{macrocode} \def\iso@input@german#1.#2.#3\@empty{\iso@printdate{#3}{#2}{#1}} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@input@english} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % Converts a string with the format \verb|dd/mm/yyyy| to three % arguments \verb|{#3}{#2}{#1}| and calls \verb|\iso@printdate|. % \begin{macrocode} \def\iso@input@english#1/#2/#3\@empty{% \ifthenelse{\equal{\iso@inputformat}{tex}}{% \iso@printdate{#1}{#2}{#3}% }{% \ifthenelse{\equal{\iso@inputformat}{american}}{% \iso@printdate{#3}{#1}{#2}% }{% \iso@printdate{#3}{#2}{#1}% }% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\printdateTeX} % Prints a date that is given as one argument in the format % \verb|yyyy/mm/dd|. % \begin{macrocode} \DeclareRobustCommand*\printdateTeX[1]{% % \end{macrocode} % Define \verb|\iso@date| command to expand the argument \verb|#1|. % \begin{macrocode} \edef\iso@date{#1}% % \end{macrocode} % Count appearances of ``/'' in the argument. % \begin{macrocode} \SubStringsToCounter{iso@slash}{/}{\iso@date}% % \end{macrocode} % If number of ``/'' in the argument is equal to 2 then the \LaTeX\ % format \verb|yyyy/mm/dd| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@slash}{2}}{% \expandafter\iso@input@TeX\iso@date\@empty}{% % \end{macrocode} % Else no of the formats above is used an thus an error message is thrown. % \begin{macrocode} ????\iso@isodash ??\iso@isodash ??% \PackageError{isodate}{unrecognized date format}{Use one of the following formats as macro argument:^^J% \space\space dd.mm.yyyy^^J% \space\space dd/mm/yyyy^^J% \space\space yyyy-mm-dd^^J% Don't use any spaces or commands like \protect\, or \protect~ inside the argument.}% }} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@input@TeX} % Converts a string with the format \verb|yyyy/mm/dd| to three % arguments \verb|{#1}{#2}{#3}| and calls \verb|\iso@printdate|. % \begin{macrocode} \def\iso@input@TeX#1/#2/#3\@empty{\iso@printdate{#1}{#2}{#3}} % \end{macrocode} % \end{macro} % \begin{macro}{\daterange} % Prints a date range. % \begin{macrocode} \DeclareRobustCommand*\daterange[2]{% % \end{macrocode} % Define \verb|\iso@date| and \verb|\iso@@date| commands to expand the % argument \verb|#1| and \verb|#2|. Define \verb|\iso@@@date| which % contains both arguments devided by a komma. % \begin{macrocode} \edef\iso@date{#1}% \edef\iso@@date{#2}% \edef\iso@@@date{\iso@date,\iso@@date}% % \end{macrocode} % Count appearances of ``/'', ``-'', and ``.'' in the arguments. % \begin{macrocode} \SubStringsToCounter{iso@slash}{/}{\iso@date}% \SubStringsToCounter{iso@minus}{-}{\iso@date}% \SubStringsToCounter{iso@dot}{.}{\iso@date}% \SubStringsToCounter{iso@@slash}{/}{\iso@@date}% \SubStringsToCounter{iso@@minus}{-}{\iso@@date}% \SubStringsToCounter{iso@@dot}{.}{\iso@@date}% % \end{macrocode} % If number of ``.'' in both arguments is equal to 2 then the German % format \verb|dd.mm.yyyy| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@dot}{2}\and\equal{\theiso@@dot}{2}}{% \expandafter\iso@range@input@german\iso@@@date\@empty}{% % \end{macrocode} % If number of ``-'' in both arguments is equal to 2 then the ISO % format \verb|yyyy-mm-dd| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@minus}{2}\and\equal{\theiso@@minus}{2}}{% \expandafter\iso@range@input@iso\iso@@@date\@empty}{% % \end{macrocode} % If number of ``/'' in both arguments is equal to 2 then the British English % format \verb|dd/mm/yyyy| is used. % \begin{macrocode} \ifthenelse{\equal{\theiso@slash}{2}\and% \equal{\theiso@@slash}{2}}{% \expandafter\iso@range@input@english\iso@@@date\@empty}{% % \end{macrocode} % Else no of the formats above is used an thus an error message is thrown. % \begin{macrocode} ????\iso@isodash ??\iso@isodash ??% \PackageError{isodate}{unrecognized date format}{Use one of the following formats as macro argument:^^J% \space\space dd.mm.yyyy^^J% \space\space dd/mm/yyyy^^J% \space\space yyyy-mm-dd^^J% Don't use any spaces or commands like \protect\, or \protect~ inside the argument.^^J Use the same format for both arguments.}% }}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@range@input@iso} % \changes{2.21}{2003/12/06}{Support to print date without year}% % Converts a string with the format \verb|yyyy-mm-dd,yyyy-mm-dd| to six % arguments \verb|{#1}{#2}{#3}{#4}{#5}{#6}| and calls % \verb|\iso@daterange@|language. % \begin{macrocode} \def\iso@range@input@iso#1-#2-#3,#4-#5-#6\@empty{% \begingroup % \end{macrocode} % \changes{2.25}{2005/02/21}{Warning for unknown languages}% % Generate a warning if the active language is not known by |isodate|. % \begin{macrocode} \@ifundefined{iso@daterange@\iso@languagename}{% \PackageWarning{isodate}{Language \iso@languagename\space unknown to isodate.\MessageBreak Using default date range with range sign --.}% \expandafter\def\csname iso@printdate@\iso@languagename\endcsname{}% % \end{macrocode} % \changes{2.25}{2005/02/21}{Fall-back format for unknown languages}% % Print date range in fall-back format. % \begin{macrocode} \iso@printdate{#1}{#2}{#3}--\iso@printdate{#4}{#5}{#6}% }{% % \end{macrocode} % Print date range in the chosen |isodate| format. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{}{\printyearon}% \csname iso@daterange@\iso@languagename\endcsname{% #1}{#2}{#3}{#4}{#5}{#6}% }% \endgroup } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@range@input@german} % \changes{2.21}{2003/12/06}{Support to print date without year}% % Converts a string with the format \verb|dd.mm.yyyy,dd.mm.yyyy| to six % arguments \verb|{#3}{#2}{#1}{#6}{#5}{#4}| and calls % \verb|\iso@daterange@|language. % \begin{macrocode} \def\iso@range@input@german#1.#2.#3,#4.#5.#6\@empty{% \begingroup % \end{macrocode} % \changes{2.25}{2005/02/21}{Warning for unknown languages}% % Generate a warning if the active language is not known by |isodate|. % \begin{macrocode} \@ifundefined{iso@daterange@\iso@languagename}{% \PackageWarning{isodate}{Language \iso@languagename\space unknown to isodate.\MessageBreak Using default date range with range sign --.}% \expandafter\def\csname iso@printdate@\iso@languagename\endcsname{}% % \end{macrocode} % \changes{2.25}{2005/02/21}{Fall-back format for unknown languages}% % Print date range in fall-back format. % \begin{macrocode} \iso@printdate{#3}{#2}{#1}--\iso@printdate{#6}{#5}{#4}% }{% % \end{macrocode} % Print date range in the chosen |isodate| format. % \begin{macrocode} \ifthenelse{\equal{\number#3}{\number#6}}{}{\printyearon}% \csname iso@daterange@\iso@languagename\endcsname{% #3}{#2}{#1}{#6}{#5}{#4}% }% \endgroup } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@range@input@english} % \changes{2.21}{2003/12/06}{Support to print date without year}% % Converts a string with the format \verb|dd/mm/yyyy,dd/mm/yyyy| to six % arguments \verb|{#3}{#2}{#1}{#6}{#5}{#4}| and calls % \verb|\iso@daterange@|language. % \begin{macrocode} \def\iso@range@input@english#1/#2/#3,#4/#5/#6\@empty{% \begingroup % \end{macrocode} % \changes{2.25}{2005/02/21}{Warning for unknown languages}% % Generate a warning if the active language is not known by |isodate|. % \begin{macrocode} \@ifundefined{iso@daterange@\iso@languagename}{% \PackageWarning{isodate}{Language \iso@languagename\space unknown to isodate.\MessageBreak Using default date range with range sign --.}% \expandafter\def\csname iso@printdate@\iso@languagename\endcsname{}% % \end{macrocode} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % \changes{2.25}{2005/02/21}{Fall-back format for unknown languages}% % Print date range in fall-back format. % \begin{macrocode} \ifthenelse{\equal{\iso@inputformat}{tex}}{% \iso@printdate{#1}{#2}{#3}--\iso@printdate{#4}{#5}{#6}% }{% \ifthenelse{\equal{\iso@inputformat}{american}}{% \iso@printdate{#3}{#1}{#2}--\iso@printdate{#6}{#4}{#5}% }{% \iso@printdate{#3}{#2}{#1}--\iso@printdate{#6}{#5}{#4}% }% }% }{% % \end{macrocode} % \changes{2.26}{2005/03/10}{Support different input formats % containing slashes}% % Print date range in the chosen |isodate| format. % \begin{macrocode} \ifthenelse{\equal{\number#3}{\number#6}}{}{\printyearon}% \ifthenelse{\equal{\iso@inputformat}{tex}}{% \csname iso@daterange@\iso@languagename\endcsname{% #1}{#2}{#3}{#4}{#5}{#6}% }{% \ifthenelse{\equal{\iso@inputformat}{american}}{% \csname iso@daterange@\iso@languagename\endcsname{% #3}{#1}{#2}{#6}{#4}{#5}% }{% \csname iso@daterange@\iso@languagename\endcsname{% #3}{#2}{#1}{#6}{#5}{#4}% }% }% }% \endgroup } % \end{macrocode} % \end{macro} % Define the counters for conting the appearances of ``.'', ``-'', and % ''/'' in the arguments. % \begin{macrocode} \newcounter{iso@slash} \newcounter{iso@minus} \newcounter{iso@dot} \newcounter{iso@@slash} \newcounter{iso@@minus} \newcounter{iso@@dot} % \end{macrocode} % The command \verb|\iso@languagename| is defined to be able to use % this package without loading one of the language packages % babel.sty, german.sty, or ngerman.sty. % % If neither babel.sty nor german.sty nor ngerman.sty is loaded my % computer returns ``nohyphenation'' when using \verb|\languagename|. % So this is the indication that none of the above packages is loaded. % \changes{2.01}{2000/08/24}{Handle case of not loaded language % package babel, german and ngerman} % \changes{2.12}{2003/10/14}{Test for babel improved}% % \changes{2.14}{2003/10/26}{Test on babel, german, and ngerman}% % \begin{macrocode} \AtBeginDocument{% \@tempswafalse \@ifpackageloaded{babel}{% \@tempswatrue \typeout{isodate: babel.sty has been loaded}% }{}% \@ifpackageloaded{german}{% \@tempswatrue \typeout{isodate: german.sty has been loaded}% }{}% \@ifpackageloaded{ngerman}{% \@tempswatrue \typeout{isodate: ngerman.sty has been loaded}% }{}% % \end{macrocode} % The language is not equal ``nohyphenation''. So one of the language % packages is loaded. Replace the internal language name % \verb|\iso@languagename| by the global language name \verb|\languagename|. % \begin{macrocode} \if@tempswa \gdef\iso@languagename{\languagename}% % \end{macrocode} % Reload language to surely switch to new date format. The % languagename gets first expanded because of errors that would occur % otherwise. % \begin{macrocode} \edef\iso@tmplang{\languagename}% \expandafter\selectlanguage\expandafter{\iso@tmplang}% \else % \end{macrocode} % At the end of the preamble still none of the language packages are loaded. % So no language switching % is possible. Set the date language manually to the last language % that was loaded for isodate. % \begin{macrocode} \typeout{isodate: babel.sty, (n)german.sty have not been loaded}% \csname date\iso@languagename\endcsname% \fi } % % \end{macrocode} % % \subsection{Language definition file danish.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*danish> \let\iso@languageloaded\active \typeout{Define commands for Danish date format} % \end{macrocode} % \end{macro} % \begin{macro}{\month@danish} % Prints the name of today's month in the long form for the original % date format. % \begin{macrocode} \def\month@danish{\ifcase\month\or januar\or februar\or marts\or april\or maj\or juni\or juli\or august\or september\or oktober\or november\or december\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printmonthday@danish} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@danish#1#2{% % \end{macrocode} % Numeric and short date format: \verb|dd/mm/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|-mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \ifiso@printyear\iso@isodash\fi\iso@printmonth{#1}% \iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|/mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \ifiso@printyear/\fi\iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|d. mmm| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#2}.~\begingroup \edef\lmonth{#1}\def\month{\lmonth}% \month@danish% \endgroup }{}}}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@danish} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format % \begin{macrocode} \def\iso@printdate@danish#1#2#3{% % \end{macrocode} % ISO or \LaTeX date format: \verb|yyyy\iso@printmonthday@danish| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \ifiso@printyear \number#1% \fi}{}% \iso@printmonthday@danish{\number#2}{\number#3}% \ifiso@printyear % \end{macrocode} % numeric date format: \verb|\iso@printmonthday@danish yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}}{\iso@yearfour{\number#1}}{% % \end{macrocode} % original date format: \verb|\iso@printmonthday@danish~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% % \end{macrocode} % short original date format: \verb|\iso@printmonthday@danish~yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % short date format: \verb|\iso@printmonthday@danish yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{% }}}}% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@datedanish} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@datedanish{% \def\today{\iso@printdate@danish{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@danish}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@danish} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@danish#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}\iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@danish{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}% }{% % \end{macrocode} % Numeric, short, or original date format. % % If year and month are equal, only print the day of the start date. If % only the year is equal, only print month and day of the start % date. Otherwise print the whole start date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#3}.}{\iso@printday{#3}}% }{\iso@printmonthday@danish{#2}{#3}}}{% \begingroup \printyearon \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}% \endgroup}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@rangesign@danish} % Sets the word between start and end date in a date range to ``~til~''. % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~til~} % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{danish}% % \end{macrocode} % Redefine the command \verb|\datedanish| that is used by babel to % switch to the original Danish date format to enable the use of % different date formats. % This has to be done after the preamble in order to ensure to overwrite % the babel command. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@datedanish\else \def\datedanish{\iso@datedanish}% \fi } % % \end{macrocode} % % \subsection{Language definition file english.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*english> \let\iso@languageloaded\active % \end{macrocode} % \end{macro} % \begin{macro}{\month@english} % Prints the name of today's month in the long form for the original % date format. % \begin{macrocode} \def\month@english{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi} % \end{macrocode} % \end{macro} % British and American English dates are very different. So handle % them seperately. It might have been easier to put them in different % files but I wanted to organize my files analogous to babel. % % First handle British English. % \begin{macrocode} \ifthenelse{\equal{\CurrentOption}{english}\or \equal{\CurrentOption}{british}\or \equal{\CurrentOption}{UKenglish}}{% \typeout{Define commands for English date format} % \end{macrocode} % \begin{macro}{\day@english} % Prints today's day for the original date format. % \begin{macrocode} \def\day@english{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printmonthday@english} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@english#1#2{% % \end{macrocode} % Numeric and short date format: \verb|dd/mm/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@printmonth{#1}\iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|ddd mmm| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \begingroup \edef\lday{#2}\def\day{\lday}% \edef\lmonth{#1}\def\month{\lmonth}% \day@english~\month@english% \endgroup }{}}}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@english} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format. % \begin{macrocode} \def\iso@printdate@english#1#2#3{% % \end{macrocode} % ISO date format: \verb|yyyy-\iso@printmonthday@english| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \ifiso@printyear\iso@yearfour{\number#1}\iso@isodash\fi}{% % \end{macrocode} % \LaTeX\ date format: \verb|yyyy/\iso@printmonthday@english| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \ifiso@printyear\iso@yearfour{\number#1}/\fi}{}}% \iso@printmonthday@english{\number#2}{\number#3}% % \end{macrocode} % Numeric date format: \verb|\iso@printmonthday@english yyyy| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{\iso@yearfour{\number#1}}{% % \end{macrocode} % Original date format: \verb|\iso@printmonthday@english~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% % \end{macrocode} % Short original date format: \verb|\iso@printmonthday@english~yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % Short date format: \verb|\iso@printmonthday@english yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{% }}}% }% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@UKenglish} % Just a second name for \verb|\iso@printdate@UKenglish|. % \begin{macrocode} \def\iso@printdate@UKenglish{\iso@printdate@english} \def\iso@printdate@british{\iso@printdate@english} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@dateenglish} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@dateenglish{% \def\today{\iso@printdate@english{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects of English. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@english}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@english} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@english#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}\iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@english{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % Numeric, short, or original date format. % % If year and month are equal, only print the day of the start date. If % only the year is equal, only print month and day of the start % date. Otherwise print the whole start date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \begingroup \edef\lday{#3}\def\day{\lday}% \day@english\endgroup}{\iso@printday{#3}}% }{\iso@printmonthday@english{#2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{english}% % \end{macrocode} % The end of the British section. % % \changes{2.20}{2003/12/06}{Add Australian and New Zealand}% % Second handle Australian and New Zealand. % \begin{macrocode} }{% \ifthenelse{\equal{\CurrentOption}{australian}\or% \equal{\CurrentOption}{newzealand}}{% \typeout{Define commands for Australian date format} % \end{macrocode} % \begin{macro}{\iso@printmonthday@australian} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@australian#1#2{% % \end{macrocode} % Numeric and short date format: \verb|dd/mm/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@printmonth{#1}\iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|ddd mmm| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \begingroup % \edef\lday{#2}\def\day{\lday}% \edef\lmonth{#1}\def\month{\lmonth}% \iso@printday{#2}~\month@english% \endgroup }{}}}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@australian} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format. % \begin{macrocode} \def\iso@printdate@australian#1#2#3{% % \end{macrocode} % ISO date format: \verb|yyyy-\iso@printmonthday@australian| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@yearfour{\number#1}\iso@isodash}{% % \end{macrocode} % \LaTeX\ date format: \verb|yyyy/\iso@printmonthday@australian| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@yearfour{\number#1}/}{}% }% \fi \iso@printmonthday@australian{\number#2}{\number#3}% % \end{macrocode} % Numeric date format: \verb|\iso@printmonthday@australian yyyy| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{% \iso@yearfour{\number#1}}{% % \end{macrocode} % Original date format: \verb|\iso@printmonthday@australian~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{% ~\iso@yearfour{\number#1}}{% % \end{macrocode} % Short original date format: \verb|\iso@printmonthday@australian~yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % Short date format: \verb|\iso@printmonthday@australian yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{% }}}% }% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@newzealand} % Just a second name for \verb|\iso@printdate@UKenglish|. % \begin{macrocode} \def\iso@printdate@newzealand{\iso@printdate@australian} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@dateaustralian} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@dateaustralian{% \def\today{\iso@printdate@australian{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects of Australian. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@australian}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@australian} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@australian#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}\iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@australian{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % Numeric, short, or original date format. % % If year and month are equal, only print the day of the start date. If % only the year is equal, only print month and day of the start % date. Otherwise print the whole start date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}}{% \begingroup % \edef\lday{#3}\def\day{\lday}% \iso@printday{#3}\endgroup}{\iso@printday{#3}}% }{\iso@printmonthday@australian{#2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{australian}% % \end{macrocode} % The end of the Australian section. % % Third, handle American. % \begin{macrocode} }{% \typeout{Define commands for American date format} % \end{macrocode} % \begin{macro}{\iso@printmonthday@american} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@american#1#2{% % \end{macrocode} % Numeric and short date format: \verb|mm/dd/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printmonth{#1}/\iso@printday{#2}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@printmonth{#1}\iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|mmm d| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \begingroup% \edef\lmonth{#1}% \def\month{\lmonth}\month@english% \endgroup ~\iso@printday{#2}% }{}}}% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@american} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format. % \begin{macrocode} \def\iso@printdate@american#1#2#3{% % \end{macrocode} % ISO date format: \verb|yyyy-\iso@printmonthday@american| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@yearfour{\number#1}\iso@isodash}{% % \end{macrocode} % \LaTeX\ date format: \verb|yyyy/\iso@printmonthday@american| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@yearfour{\number#1}/}{}}% \fi \iso@printmonthday@american{\number#2}{\number#3}% % \end{macrocode} % Numeric date format: \verb|\iso@printmonthday@american yyyy| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{% \iso@yearfour{\number#1}}{% % \end{macrocode} % Original date format: \verb|\iso@printmonthday@american,~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{% ,~\iso@yearfour{\number#1}}{% % \end{macrocode} % Short original date format: \verb|\iso@printmonthday@american,~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ,~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % Short date format: \verb|\iso@printmonthday@american yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{}}}% }% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@USenglish} % Just a second name for \verb|\iso@printdate@UKamerican|. % \begin{macrocode} \def\iso@printdate@USenglish{\iso@printdate@american} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@dateamerican} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@dateamerican{% \def\today{\iso@printdate@american{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects of American. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@american}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@american} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@american#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}% \iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@american{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}}}{% % \end{macrocode} % Original date format. % % If year and month are equal, print \verb|mmm d1 to d2, yyyy|. If % only the year is equal, print \verb|mmm1 d1 to mmm2 d2, yyyy|. % Otherwise print the whole start and end date. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \iso@printmonthday@american{#2}{#3}\iso@rangesign% \iso@printday{#6},~% \ifthenelse{\equal{\iso@dateformat}{orig}}{% \number#4}{\iso@twodigitsign\iso@yeartwo{\number#4}}% }{% \iso@printmonthday@american{#2}{#3}\iso@rangesign% \csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}% \iso@rangesign% \csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}}}{% % \end{macrocode} % Numeric or short date format. % % If year and month are equal, only print the day of the end date. % Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \iso@printmonthday@american{#2}{#3}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}}% }% } % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{american}% % \end{macrocode} % The end of the American section. % \begin{macrocode} } } % \end{macrocode} % \begin{macro}{\iso@rangesign@...} % Sets the word between start and end date in a date range to ``~to''. % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~to~} % \end{macrocode} % \end{macro} % Redefine the command \verb|date|language that is used by babel.sty, % german.sty, and ngerman.sty to switch to the original % English/American date format to enable the use of different date % formats. % This has to be done after the preamble in order to ensure to overwrite % the babel command. % % Do this only if \verb|\iso@date|language is defined. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@dateenglish\else \def\dateenglish{\iso@dateenglish}% \def\datebritish{\iso@dateenglish}% \def\dateUKenglish{\iso@dateenglish}% \fi \ifx\undefined\iso@dateaustralian\else \def\dateaustralian{\iso@dateaustralian}% \def\datenewzealand{\iso@dateaustralian}% \fi \ifx\undefined\iso@dateamerican\else \def\dateamerican{\iso@dateamerican}% \def\dateUSenglish{\iso@dateamerican}% \fi } % % \end{macrocode} % % \subsection{Language definition file french.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*french> \let\iso@languageloaded\active \typeout{Define commands for French date format} % \end{macrocode} % \end{macro} % \begin{macrocode} \def\month@french{\ifcase\month\or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi} % \end{macrocode} % \begin{macrocode} \def\iso@printmonthday@french#1#2{% \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% \ifthenelse{\equal{\iso@dateformat}{iso}}{% \ifiso@printyear\iso@isodash\fi\iso@printmonth{#1}% \iso@isodash\iso@printday{#2}}{% \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \ifiso@printyear/\fi\iso@printmonth{#1}/\iso@printday{#2}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \begingroup \edef\lday{#2}\edef\day{\lday}% \edef\lmonth{#1}\def\month{\lmonth}% \number\day\ifnum1=\day \noexpand\ier\fi~\month@french% \endgroup }{}}}}% } % \end{macrocode} % \begin{macrocode} \def\iso@printdate@french#1#2#3{% \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \ifiso@printyear\iso@yearfour{\number#1}\fi}{}% \iso@printmonthday@french{\number#2}{\number#3}% \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{\iso@yearfour{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{}}}}% \fi } % \end{macrocode} % \begin{macrocode} \def\iso@datefrench{% \def\today{\iso@printdate@french{\year}{\month}{\day}}}% % \end{macrocode} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@french}% % \end{macrocode} % \end{macro} % \begin{macrocode} \def\iso@daterange@french#1#2#3#4#5#6{% \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}% \iso@rangesign% \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@french{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}}{% \begingroup \edef\lday{#3}\edef\day{\lday}% \number\day\ifnum1=\day \noexpand\ier\fi \endgroup}{\iso@printday{#3}}% }{\iso@printmonthday@french{#2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~au~} % \end{macrocode} % \changes{2.06}{2002/04/08}{Changed range sign for French language, % thanks to Felix P\"utsch} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{french}% % \end{macrocode} % \changes{2.03}{2001/05/04}{Fixed a bug in the French language that caused % not to switch to it correctly on startup.} % \verb|\datefrenchb| has to be defined additionally because babel starts % with language frenchb instead of french. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@datefrench\else \def\datefrench{\iso@datefrench}% \def\datefrenchb{\iso@datefrench}% \fi } % % \end{macrocode} % % \subsection{Language definition file german.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*german> \let\iso@languageloaded\active \typeout{Define commands for German date format (\CurrentOption)} % \end{macrocode} % \end{macro} % \changes{2.03}{2001/05/04}{Allow change of spaces for German language}% % Define spaces between day and month resp. month and year. \verb|dm| % stands for day-month and \verb|my| for month-year. The defaults are taken % from the Duden \cite{duden1996a}. % \begin{macrocode} \def\iso@dmsepgerman{\,}% \def\iso@mylongsepgerman{~}% \def\iso@myshortsepgerman{\,}% % \end{macrocode} % \begin{macro}{\daymonthsepgerman} % Change space between day and month in numeric date formats for the % German language. The only parameter is the new spacing. % \begin{macrocode} \DeclareRobustCommand*\daymonthsepgerman[1]{\def\iso@dmsepgerman{#1}} % \begin{macrocode} % \end{macro} % \begin{macro}{\monthyearsepgerman} % Change space between month and year in numeric date formats for the % German language. The first parameter is the new spacing for the long % format and the second for the short format. % \begin{macrocode} \DeclareRobustCommand*\monthyearsepgerman[2]{% \def\iso@mylongsepgerman{#1}% \def\iso@myshortsepgerman{#2}} % \end{macrocode} % \end{macro} % \changes{2.02}{2000/10/03}{Changed the umlauts to normal \TeX\ commands to % be able to use German dates without german.sty or babel.sty.} % \begin{macrocode} \def\month@german{\ifcase\month\or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi} \def\month@ngerman{\month@german} \def\month@austrian{\ifnum1=\month J\"anner\else \month@german\fi} \def\month@naustrian{\month@austrian} % \end{macrocode} % \begin{macrocode} \@namedef{iso@printmonthday@\CurrentOption}#1#2{% \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}.\iso@dmsepgerman\iso@printmonth{#1}.}{% \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@printmonth{#1}\iso@isodash\iso@printday{#2}}{% \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@printmonth{#1}/\iso@printday{#2}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#2}.~\begingroup \edef\lmonth{#1}% \def\month{\lmonth}\csname month@\iso@languagename\endcsname% \endgroup }{}}}}% } % \end{macrocode} % \begin{macrocode} \@namedef{iso@printdate@\CurrentOption}#1#2#3{% \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{iso}}{% \iso@yearfour{\number#1}\iso@isodash}{% \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \iso@yearfour{\number#1}/}{}}% \fi \csname iso@printmonthday@\iso@languagename\endcsname{% \number#2}{\number#3}% \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{% \iso@mylongsepgerman\iso@yearfour{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@myshortsepgerman\iso@yeartwo{\number#1}}{}}}}% \fi } % \end{macrocode} % \begin{macrocode} \@namedef{iso@daterange@\CurrentOption}#1#2#3#4#5#6{% \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}% \iso@rangesign% \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\csname iso@printmonthday@\iso@languagename\endcsname{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}}{% \iso@printday{#3}}{\iso@printday{#3}}.% }{\csname iso@printmonthday@\iso@languagename\endcsname{% #2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }% } % \end{macrocode} % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~bis~} % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\CurrentOption}{german}}{% \def\iso@dategerman{% \def\today{\iso@printdate@german{\year}{\month}{\day}}}% % \end{macrocode} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{german}% }{% % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\CurrentOption}{ngerman}}{% \def\iso@datengerman{% \def\today{\iso@printdate@ngerman{\year}{\month}{\day}}}% % \end{macrocode} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{ngerman}% }{% % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\CurrentOption}{austrian}}{% \def\iso@dateaustrian{% \def\today{\iso@printdate@austrian{\year}{\month}{\day}}}% % \end{macrocode} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{austrian}% }{% % \end{macrocode} % \begin{macrocode} \ifthenelse{\equal{\CurrentOption}{naustrian}}{% \def\iso@datenaustrian{% \def\today{\iso@printdate@naustrian{\year}{\month}{\day}}}% % \end{macrocode} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{naustrian}% }{% }}}} % \end{macrocode} % Redefine the command \verb|date|language that is used by babel.sty, % german.sty, and ngerman.sty to switch to the original % German date format to enable the use of different date % formats. % This has to be done after the preamble in order to ensure to overwrite % the babel command. % % Do this only if \verb|\iso@date|language is defined. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@dategerman\else \def\dategerman{\iso@dategerman}% \fi \ifx\undefined\iso@datengerman\else \def\datengerman{\iso@datengerman}% \fi \ifx\undefined\iso@dateaustrian\else \def\dateaustrian{\iso@dateaustrian}% \fi \ifx\undefined\iso@datenaustrian\else \def\datenaustrian{\iso@datenaustrian}% \fi } % % \end{macrocode} % % \changes{2.02}{2001/04/30}{Added Norwegian language by Svend Tollak % Munkejord} % \subsection{Language definition file norsk.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % This file was provided by Svend Tollak Munkejord % (svend.t.munkejord@energy.sintef.no). % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*norsk> \let\iso@languageloaded\active \typeout{Define commands for Norwegian date format} % \end{macrocode} % \end{macro} % \begin{macro}{\month@norsk} % Prints the name of today's month in the long form for the original % date format. % \begin{macrocode} \def\month@norsk{\ifcase\month\or januar\or februar\or mars\or april\or mai\or juni\or juli\or august\or september\or oktober\or november\or desember\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printmonthday@norsk} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@norsk#1#2{% % \end{macrocode} % Numeric and short date format: \verb|dd/mm/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|-mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \ifiso@printyear\iso@isodash\fi \iso@printmonth{#1}\iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|/mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \ifiso@printyear/\fi\iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|d. mmm| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#2}.~\begingroup \edef\lmonth{#1}\def\month{\lmonth}% \month@norsk% \endgroup }{}}}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@norsk} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format % \begin{macrocode} \def\iso@printdate@norsk#1#2#3{% % \end{macrocode} % ISO or \LaTeX date format: \verb|yyyy\iso@printmonthday@norsk| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \ifiso@printyear\iso@yearfour{\number#1}\fi}{}% \iso@printmonthday@norsk{\number#2}{\number#3}% % \end{macrocode} % numeric date format: \verb|\iso@printmonthday@norsk yyyy| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{\iso@yearfour{\number#1}}{% % \end{macrocode} % original date format: \verb|\iso@printmonthday@norsk~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% % \end{macrocode} % short original date format: \verb|\iso@printmonthday@norsk~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % short date format: \verb|\iso@printmonthday@norsk yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{% }}}}% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@datenorsk} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@datenorsk{% \def\today{\iso@printdate@norsk{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@norsk}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@norsk} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@norsk#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}% \iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@norsk{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % Numeric, short, or original date format. % % If year and month are equal, only print the day of the start date. If % only the year is equal, only print month and day of the start % date. Otherwise print the whole start date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#3}.}{\iso@printday{#3}}% }{\iso@printmonthday@norsk{#2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{#1}{#2}{#3}}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@rangesign@norsk} % Sets the word between start and end date in a date range to ``~til~''. % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~til~} % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{norsk}% % \end{macrocode} % Redefine the command \verb|\datenorsk| that is used by babel to % switch to the original Norsk date format to enable the use of % different date formats. % This has to be done after the preamble in order to ensure to overwrite % the babel command. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@datenorsk\else \def\datenorsk{\iso@datenorsk}% \fi } % % \end{macrocode} % % \changes{2.07}{2003/07/29}{Added Swedish language by Christian % Schlauer} % \subsection{Language definition file swedish.idf} % \changes{2.26}{2005/03/10}{Force year in four digits for long formats}% % % This file was provided by Christian Schlauer % (christian.schlauer@web.de). % % \begin{macro}{\iso@languageloaded} % Define the command \verb|\iso@languageloaded| in order to enable % \verb|isodate.sty| to determine if at least one language is loaded. % \begin{macrocode} %<*swedish> \let\iso@languageloaded\active \typeout{Define commands for Swedish date format} % \end{macrocode} % \end{macro} % \begin{macro}{\month@swedish} % Prints the name of today's month in the long form for the original % date format. % \begin{macrocode} \def\month@swedish{\ifcase\month\or januari\or februari\or mars\or april\or maj\or juni\or juli\or augusti\or september\or oktober\or november\or december\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printmonthday@swedish} % Prints the month and the day given as two arguments % (\verb|{mm}{dd}|) in the current date format. % \begin{macrocode} \def\iso@printmonthday@swedish#1#2{% % \end{macrocode} % Numeric and short date format: \verb|dd/mm/| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{numeric}\or% \equal{\iso@dateformat}{short}}{% \iso@printday{#2}/\iso@printmonth{#1}\ifiso@printyear/\fi}{% % \end{macrocode} % ISO date format: \verb|-mm-dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}}{% \ifiso@printyear\iso@isodash\fi\iso@printmonth{#1}% \iso@isodash\iso@printday{#2}}{% % \end{macrocode} % \LaTeX\ date format: \verb|/mm/dd| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{TeX}}{% \ifiso@printyear/\fi\iso@printmonth{#1}/\iso@printday{#2}}{% % \end{macrocode} % Original date format: \verb|d. mmm| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#2}.~\begingroup \edef\lmonth{#1}\def\month{\lmonth}% \month@swedish% \endgroup }{}}}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@printdate@swedish} % Prints the date given as three arguments (\verb|{yyyy}{mm}{dd}|) in % the actual date format % \begin{macrocode} \def\iso@printdate@swedish#1#2#3{% % \end{macrocode} % ISO or \LaTeX date format: \verb|yyyy\iso@printmonthday@swedish| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% \ifiso@printyear\iso@yearfour{\number#1}\fi}{}% \iso@printmonthday@swedish{\number#2}{\number#3}% % \end{macrocode} % numeric date format: \verb|\iso@printmonthday@swedish yyyy| % \begin{macrocode} \ifiso@printyear \ifthenelse{\equal{\iso@dateformat}{numeric}}{\iso@yearfour{\number#1}}{% % \end{macrocode} % original date format: \verb|\iso@printmonthday@swedish~yyyy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{orig}}{~\iso@yearfour{\number#1}}{% % \end{macrocode} % short original date format: \verb|\iso@printmonthday@swedish~yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% ~\iso@twodigitsign\iso@yeartwo{\number#1}}{% % \end{macrocode} % short date format: \verb|\iso@printmonthday@swedish yy| % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{short}}{% \iso@yeartwo{\number#1}}{% }}}}% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@dateswedish} % This command redefines the \cs{today} command to print in the % actual date format. % \begin{macrocode} \def\iso@dateswedish{% \def\today{\iso@printdate@swedish{\year}{\month}{\day}}}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@...} % Define date-range commands for dialects. % \begin{macrocode} \expandafter\def\csname iso@daterange@\CurrentOption\endcsname{% \iso@daterange@swedish}% % \end{macrocode} % \end{macro} % \begin{macro}{\iso@daterange@swedish} % This command takes six arguments % (\verb|{yyyy1}{mm1}{dd1}{yyyy2}{mm2}{dd2}|) and prints the corrosponding % date range in the actual date format. % \begin{macrocode} \def\iso@daterange@swedish#1#2#3#4#5#6{% % \end{macrocode} % ISO or \LaTeX\ date format. % \begin{macrocode} \ifthenelse{\equal{\iso@dateformat}{iso}\or% \equal{\iso@dateformat}{TeX}}{% % \end{macrocode} % Print the start date. % \begin{macrocode} \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}\iso@rangesign% % \end{macrocode} % If year and month are equal, only print the day of the end date. If % only the year is equal, only print month and day of the end % date. Otherwise print the whole end date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{\iso@printday{#6}% }{\iso@printmonthday@swedish{#5}{#6}}}{% \csname iso@printdate@\iso@languagename\endcsname{#4}{#5}{#6}}}{% % \end{macrocode} % Numeric, short, or original date format. % % If year and month are equal, only print the day of the start date. If % only the year is equal, only print month and day of the start % date. Otherwise print the whole start date. % \begin{macrocode} \ifthenelse{\equal{\number#1}{\number#4}}{% \ifthenelse{\equal{\number#2}{\number#5}}{% \ifthenelse{\equal{\iso@dateformat}{orig}\or \equal{\iso@dateformat}{shortorig}}{% \iso@printday{#3}.}{\iso@printday{#3}}% }{\iso@printmonthday@swedish{#2}{#3}}}{% \csname iso@printdate@\iso@languagename\endcsname{% #1}{#2}{#3}}% % \end{macrocode} % Print the end date. % \begin{macrocode} \iso@rangesign\csname iso@printdate@\iso@languagename\endcsname{% #4}{#5}{#6}% }{% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\iso@rangesign@swedish} % Sets the word between start and end date in a date range to ``~till~''. % \begin{macrocode} \expandafter\def\csname iso@rangesign@\CurrentOption\endcsname{~till~} % \end{macrocode} % \end{macro} % Define the language name that will the active language for isodate % if none of the packages babel.sty, german.sty, and ngerman.sty is % loaded and if this is the last language that is used for isodate. % If one of the above packages is used this definition will be % overridden by the command \verb|\languagename| that will always % return the current used language. % \begin{macrocode} \def\iso@languagename{swedish}% % \end{macrocode} % Redefine the command \verb|\dateswedish| that is used by babel to % switch to the original Swedish date format to enable the use of % different date formats. % This has to be done after the preamble in order to ensure to overwrite % the babel command. % \begin{macrocode} \AtBeginDocument{% \ifx\undefined\iso@dateswedish\else \def\dateswedish{\iso@dateswedish}% \fi } % % \end{macrocode} % % \Finale