diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/isodate |
Initial commit
Diffstat (limited to 'macros/latex/contrib/isodate')
-rw-r--r-- | macros/latex/contrib/isodate/ChangeLog | 100 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/Makefile | 93 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/README | 77 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/getversion.tex | 7 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/isodate.dtx | 3397 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/isodate.ins | 32 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/isodate.pdf | bin | 0 -> 260733 bytes | |||
-rw-r--r-- | macros/latex/contrib/isodate/isodate.xml | 40 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/isodateo.dtx | 499 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/isodateo.pdf | bin | 0 -> 135483 bytes | |||
-rw-r--r-- | macros/latex/contrib/isodate/testdate.pdf | bin | 0 -> 86990 bytes | |||
-rw-r--r-- | macros/latex/contrib/isodate/testdate.tex | 183 | ||||
-rw-r--r-- | macros/latex/contrib/isodate/testisodate_without_babel.tex | 5 |
13 files changed, 4433 insertions, 0 deletions
diff --git a/macros/latex/contrib/isodate/ChangeLog b/macros/latex/contrib/isodate/ChangeLog new file mode 100644 index 0000000000..ec54522416 --- /dev/null +++ b/macros/latex/contrib/isodate/ChangeLog @@ -0,0 +1,100 @@ +2010/01/03 v2.30 Harald Harders (h.harders@tu-bs.de) + - Add a month-year format (omitting the day) + - Move defintion of language-independent formats into the main + style file + +2007/04/09 v2.29 Harald harders (h.harders@tu-bs.de) + - Allow to change the unbreakable spaces in the orig and + shortorig format + +2005/04/15 v2.28 Harald Harders (h.harders@tu-bs.de) + - Add Italian language by Philip Ratcliffe. + - Introduce option cleanlook for English date format. + +2005/03/11 v2.27 Harald Harders (h.harders@tu-bs.de) + - Add option british. + +2005/03/10 v2.26 Harald Harders (h.harders@tu-bs.de) + - Support different input formats containing slashes. + - Force year in four digits for long formats. + +2005/02/21 v2.25 Harald Harders (h.harders@tu-bs.de) + - Changed \year, \month, and \day from macros to counters. + - Warning for unknown languages. + - Fall-back format for unknown languages. + +2005/02/17 v2.24 Harald Harders (h.harders@tu-bs.de) + - Add option frenchb. + +2004/11/19 v2.23 Harald Harders (h.harders@tu-bs.de) + - Avoid to use the calc package since it causes problems + with many other packages. + +2004/02/12 v2.22 Harald Harders (h.harders@tu-bs.de) + - Path changed according to new CTAN structure. + - Makefile adapted for TeX Live. + +2003/12/06 v2.21 Harald Harders (h.harders@tu-bs.de) + - Fix some bugs in date ranges when both month and year are equal + (several languages). + - Support to print date without year (in all language-dependent + commands \iso@printmonthday@... and \iso@printdate@...). + - Switch on or off printing of year. + +2003/12/06 v2.20 Harald Harders (h.harders@tu-bs.de) + - Add Australian and New Zealand. + - Avoid usage of \filedate and \fileversion. + +2003/10/26 v2.14 Harald Harders (h.harders@tu-bs.de) + - Control the number of digits for the day by a boolean rather + than by the command calls. + - Don't print day with two digits when Roman numerals are used + for the month. + - Allow change in format for month. + - Test on babel, german, and ngerman. + +2003/10/14 v2.12 Harald Harders (h.harders@tu-bs.de) + - Wrong one-digit months avoided. + - Test for babel improved. + +2003/10/13 v2.10 Harald Harders (h.harders@tu-bs.de) + - Removed section about solvable problems since it was wrong. + - Add month in Roman numerals. + - Added \twodigitarabic. + +2003/07/29 v2.07 Harald Harders (h.harders@tu-bs.de) + - Added Swedish language by Christian Schlauer. + +2002/04/08 v2.06 Harald Harders (h.harders@tu-bs.de) + - Changed range sign for French language, thanks to Felix Pütsch. + +2001/05/19 v2.05 Harald Harders (h.harders@tu-bs.de) + - Added an original format with a two digit year. + - Execute options at the end of the package instead of at the + end of the preamble. + +2001/05/17 v2.04 Harald Harders (h.harders@tu-bs.de) + - Added section for solvable problems. + +2001/05/04 v2.03 Harald Harders (h.harders@tu-bs.de) + - Allow change of spaces for German language. + - Fixed a bug in the French language that caused not to switch to + it correctly on startup. + - Allow change of spaces for German language. + +2000/10/03 v2.02 Harald Harders (h.harders@tu-bs.de) + - Changed the umlauts to normal TeX commands to be able to use + German dates without german.sty or babel.sty. + - Added Norwegian language by Svend Tollak Munkejord. + +2000/08/24 v2.01 Harald Harders (h.harders@tu-bs.de) + - For the case that none of the packages babel, german, and + ngerman is loaded there is a new macro \iso@languagename that + contains the name of the last loaded language. If one of the + packages is loaded it contains the current language. + - Handle case of not loaded language package babel, german and + ngerman. + +2000/08/21 v2.00 Harald Harders (h.harders@tu-bs.de) + - Total reimplementation of the package. The old package has + renamed to isodateo. diff --git a/macros/latex/contrib/isodate/Makefile b/macros/latex/contrib/isodate/Makefile new file mode 100644 index 0000000000..760d448898 --- /dev/null +++ b/macros/latex/contrib/isodate/Makefile @@ -0,0 +1,93 @@ +SRCDIR=isodate +INSTALLDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/tex/latex/isodate +DOCDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/doc/latex/isodate +VERSION=`latex getversion | grep '^VERSION' | sed 's/^VERSION \\(.*\\)\\.\\(.*\\)/\\1_\\2/'` + +.SUFFIXES: .sty .ins .dtx .pdf + +LANG= danish.idf english.idf french.idf german.idf norsk.idf swedish.idf + +.ins.sty: + latex $< + +.dtx.pdf: + pdflatex $< + pdflatex $< + makeindex -s gind.ist $(*D)/$(*F) + makeindex -s gglo.ist -o $(*D)/$(*F).gls $(*D)/$(*F).glo + pdflatex $< + +all: isodate isodate.pdf isodateo.pdf testdate.pdf + +isodate.sty: isodate.ins isodate.dtx + +testdate.pdf: testdate.tex isodate.sty + pdflatex testdate + +isodate: isodate.sty $(LANG) + + +danish.idf: isodate.ins + latex isodate.ins +english.idf: isodate.ins + latex isodate.ins +french.idf: isodate.ins + latex isodate.ins +german.idf: isodate.ins + latex isodate.ins +swedish.idf: isodate.ins + latex isodate.ins + +substr: + @if [ -z `kpsewhich substr.sty` ]; then \ + echo; echo "Error installing isodate:"; \ + echo "This version of isodate needs the package substr.sty"; \ + echo "which cannot be found in your system."; \ + echo; \ + echo "Please download it from CTAN:/macros/latex/contrib/substr/."; \ + echo "One of the possible CTAN nodes is ftp.dante.de."; \ + echo "Try to execute make after installing substr.sty again."; \ + echo; exit; fi + + +clean: + @-rm -f isodate.{glo,gls,idx,ilg,ind,aux,log,toc} + @-rm -f isodateo.{glo,gls,idx,ilg,ind,aux,log,toc} + @-rm -f testdate.{log,aux} + @-rm -f *~ + +distclean: clean + @-rm -f $(LANG) + @-rm -f isodate.sty isodate.pdf + @-rm -f isodateo.sty isodateo.pdf + @-rm -f testdate.pdf + +tar: all clean + echo Lege isodate-$(VERSION).tar.gz an + -rm -f isodate-$(VERSION).tar.gz + tar czhCf .. isodate-$(VERSION).tar.gz \ + isodate/README isodate/ChangeLog isodate/Makefile \ + isodate/isodate.{dtx,ins,pdf} \ + isodate/isodateo.{dtx,pdf} \ + isodate/testdate.{pdf,tex} \ + isodate/getversion.tex \ + isodate/testisodate_without_babel.tex \ + isodate/isodate.xml + rm -f getversion.log + +texlive: all clean + rm -rf texmf + mkdir -p texmf/tex/latex/isodate + mkdir -p texmf/doc/latex/isodate + mkdir -p texmf/source/latex/isodate + cp isodate.sty isodateo.sty *.idf texmf/tex/latex/isodate/ + cp isodate.pdf README ChangeLog isodate.xml texmf/doc/latex/isodate/ + cp isodate.dtx isodate.ins Makefile texmf/source/latex/isodate/ + cp isodateo.dtx texmf/source/latex/isodate/ + +install: all + if [ ! -d $(INSTALLDIR) ]; then mkdirhier $(INSTALLDIR); fi + if [ ! -d $(DOCDIR) ]; then mkdirhier $(DOCDIR); fi + install -m644 *.sty *.idf $(INSTALLDIR) + install -m644 isodate.pdf README ChangeLog $(DOCDIR) + texhash diff --git a/macros/latex/contrib/isodate/README b/macros/latex/contrib/isodate/README new file mode 100644 index 0000000000..cadad64377 --- /dev/null +++ b/macros/latex/contrib/isodate/README @@ -0,0 +1,77 @@ +isodate.sty +=========== + +Tune the output format of dates. + +This package provides ten output formats of the +commands \today, \printdate, \printdateTeX, and \daterange +(partly language dependent): +ISO (yyyy-mm-dd), +numeric (e.g. dd.\,mm.~yyyy), +short (e.g. dd.\,mm.\,yy), +TeX (yyyy/mm/dd), +original (e.g. dd. mmm yyyy), +short original (e.g. dd. mmm yy), +as well as numerical formats with Roman numerals for the month. + +The commands \printdate and \printdateTeX print any date. +The date is given as an argument using the actual date format for output: +\printdate{yyyy-mm-dd}, \printdate{dd.mm.yyyy}, or \printdate{dd/mm/yyyy}, +and \printdateTeX{yyyy/mm/dd}. + +The command \daterange prints a date range and leaves out unnecessary +year or month entries. +E.g. 2000-05-03 to 2000-05-08 leads to `2000-05-03 to 08'. + +The idea for this package was taken from the akletter class. + + +Version 2.0 was totally rewritten so that some incompatiblities may occur. +The old version is still available as isodateo.sty (`o' for old). + + +Copyright 2000--2010 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. + + + +Installation: + +before installing: - be sure that the package substr.sty is installed on your + system. If not download it from + CTAN:/macros/latex/contrib/substr/ and install it. + +automatic: - run "make". + - copy isodate.sty and *.idf to a place where LaTeX can find them + or run "make install". + - run texhash or the corresponding command of your distribution. + +by hand: - execute latex on isodate.ins. + - run texhash or the corresponding command of your distribution. + You should not compile the documentation by yourself since it + uses a non-standard package (morefloats.sty). If you still want + to compile it by yourself, do the following: + - execute latex on isodate.dtx (2x). + - copy isodate.sty and *.idf to a place LaTeX can find them. + - run texhash or the corresponding command of your distribution. + + + +List of known errors: + - The \printdate and \printdateTeX commands are not very good in + checking the argument for correct syntax. + - Isodate and draftcopy do not work together. + +To do: + - add other languages + - Format short given years to four digits and calculate reasonable + first and second digits. + + +2010-01-03 +Harald Harders +h.harders@tu-bs.de diff --git a/macros/latex/contrib/isodate/getversion.tex b/macros/latex/contrib/isodate/getversion.tex new file mode 100644 index 0000000000..01d3b4bd35 --- /dev/null +++ b/macros/latex/contrib/isodate/getversion.tex @@ -0,0 +1,7 @@ +\documentclass[english]{ltxdoc} +\nofiles +\usepackage{isodate} +\GetFileInfo{isodate.sty} +\typeout{VERSION \fileversion} +\begin{document} +\end{document} diff --git a/macros/latex/contrib/isodate/isodate.dtx b/macros/latex/contrib/isodate/isodate.dtx new file mode 100644 index 0000000000..8f280c8f35 --- /dev/null +++ b/macros/latex/contrib/isodate/isodate.dtx @@ -0,0 +1,3397 @@ +% \iffalse meta comment +% File: isodate.dtx Copyright (C) 2000--2010 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{2493} +\begin{document} + \DocInput{isodate.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{2.30}{2010/01/03}{Add a month-year format}% +% \changes{2.30}{2010/01/03}{Move defintion of language-independent +% formats into the main style file}% +% \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, Italian, 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, Philip Ratcliffe has added Italian. +% +% \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, Italian, 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}'. +% +% \DescribeMacro{\printdayoff}% +% \DescribeMacro{\printdayon}% +% Likewise you can switch on or off printing the day using +% \cs{printdayon} and \cs{printdayoff}. +% Note that you still have to provide complete dates in the +% \cs{printdate} command, described in Section~\ref{sec:anydate} below. +% +% \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} +% \label{sec:anydate} +% +% \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 original and short original format} +% +% \DescribeMacro{\isospacebeforeday}% +% \DescribeMacro{\isospacebeforemonth}% +% \DescribeMacro{\isospacebeforeyear}% +% +% By default, the original and short original format prints +% unbreakable spaces between the parts of the dates, e.g., +% `|19~May~2001|'. +% If you want to allow breakable spaces or other characters, you can +% redefine the spaces using \cs{isospacebeforeday}, +% \cs{isospacebeforemonth}, and \cs{isospacebeforeyear}: +% \begin{verbatim} +%\isospacebeforeyear{\ }\end{verbatim} +% leads to `|19~May\ 2001|'. Notice that the space is written as +% \verb*|\ | to ensure that the space is not getting lost under all +% circumstances. +% +% As the names imply, the spaces before the specified part (day, month, +% or year) is changed. For most formats, only \cs{isospacebeforemonth} +% and \cs{isospacebeforeyear} are relevant, while for US English, +% \cs{isospacebeforeday} and \cs{isospacebeforeyear} are used. +% +% This only effects the \verb|orig| and \verb|shortorig| formats. +% +% +% \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}% +% \DescribeMacro{\monthyearsepnodaygerman}% +% You can change the spacing between the day and the month using the +% command \cs{daymonthsepgerman}. Using the command +% \cs{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. +% +% Likewise, \cs{monthyearsepnodaygerman} is used for defining the +% spacing between the month and the year when printing the day is +% switched off (using \cs{printdayoff}). +% The arguments are the same as for \cs{monthyearsepgerman}. +% Default is no space for long and short format. +% +% +% \subsection{Changing the English format} +% +% \changes{2.28}{2005/04/15}{Introduce option cleanlook for English +% date format}% +% By default, the English date format looks like `24th December +% 2000'. +% During the last years, a change has occured in many documents +% towards `24 December 2000'. +% This new format is called `clean look'. +% \DescribeMacro{\cleanlookdateon}% +% \DescribeMacro{\cleanlookdateoff}% +% Isodate's behaviour can be changed towards it using +% \cs{cleanlookdateon} and \cs{cleanlookdateoff}. +% This can also be done globally using the |cleanlook| package option. +% +% At the moment, the `clean look' functionality only affects British +% English. +% If this trend also counts for different languages, please tell it me +% that I can add support for them. +% +% +% +% \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|italian|&support Italian 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 +% \verb|cleanlook|&use `clean look' for English dates\\ +% \verb|nocleanlook|&don't use `clean look' for English dates (default)\\ +% \hline +% \verb|printdayon|&print complete date including the day (default)\\ +% \verb|printdayoff|&omit the day in the date\\ +% \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--2010 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. +% \item Documentation of the code is partly poor. +% \end{itemize} +% +% \section{Planned features and changes} +% +% \begin{itemize} +% \item Add other languages. +% Please help me with this topic. I don't know the date formats in +% other languages. +% \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} +%<isodate>\NeedsTeXFormat{LaTeX2e} +%<isodate>\ProvidesPackage{isodate} +%<danish>\ProvidesFile{danish.idf} +%<english>\ProvidesFile{english.idf} +%<french>\ProvidesFile{french.idf} +%<german>\ProvidesFile{german.idf} +%<italian>\ProvidesFile{italian.idf} +%<norsk>\ProvidesFile{norsk.idf} +%<swedish>\ProvidesFile{swedish.idf} +%<isodate> [2010/01/03 v2.30 Print dates with different formats (HH)] +%<language> [2010/01/03 v2.30 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}} +\DeclareOption{cleanlook}{\AtEndOfPackage{\cleanlookdateon}} +\DeclareOption{nocleanlook}{\AtEndOfPackage{\cleanlookdateoff}} +% \end{macrocode} +% \changes{2.30}{2010/01/03}{Add a month-year format}% +% Declare the options which decide wheather day is printed. +% \begin{macrocode} +\DeclareOption{printdayoff}{\AtEndOfPackage{\printdayoff}} +\DeclareOption{printdayon}{\AtEndOfPackage{\printdayon}} +% \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}{Add 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{italian}{\input{italian.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,nocleanlook,printdayon} +% \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}{\printdayoff} +% \begin{macro}{\printdayon} +% \changes{2.30}{2010/01/03}{Add a month-year format}% +% Switch on or off suppressing the day in date output. +% Default is not print the day. +% \begin{macrocode} +\newif\ifiso@doprintday +\DeclareRobustCommand*\printdayon{\iso@doprintdaytrue} +\DeclareRobustCommand*\printdayoff{\iso@doprintdayfalse} +\printdayon +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\cleanlookdateoff} +% \begin{macro}{\cleanlookdateon} +% \changes{2.28}{2005/04/15}{Introduce option cleanlook for English +% date format}% +% Switch on or off `clean look' for English dates. +% Default is not to use `clean look'. +% \begin{macrocode} +\newif\ifiso@cleanlook +\DeclareRobustCommand*\cleanlookdateon{\iso@cleanlooktrue} +\DeclareRobustCommand*\cleanlookdateoff{\iso@cleanlookfalse} +\cleanlookdateoff +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\isospacebeforeday} +% \begin{macro}{\isospacebeforemonth} +% \begin{macro}{\isospacebeforeyear} +% \changes{2.29}{2007/04/09}{Allow to change the unbreakable spaces in +% the orig and shortorig format}% +% Change the spaces in the orig and short orig format. +% Default is |~| for all of them. +% \begin{macrocode} +\newcommand*\iso@daysep{~} +\newcommand*\iso@monthsep{~} +\newcommand*\iso@yearsep{~} +\DeclareRobustCommand*\isospacebeforeday[1]{\def\iso@daysep{#1}} +\DeclareRobustCommand*\isospacebeforemonth[1]{\def\iso@monthsep{#1}} +\DeclareRobustCommand*\isospacebeforeyear[1]{\def\iso@yearsep{#1}} +% \end{macrocode} +% \end{macro} +% \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}{\iso@printmonthday@int} +% ?????? +% \begin{macrocode} +\def\iso@printmonthday@int#1#2{% + \ifthenelse{\equal{\iso@dateformat}{iso}}{% + \iso@printmonth{#1}% + \ifiso@doprintday + \iso@isodash\iso@printday{#2}% + \fi + }{% + \ifthenelse{\equal{\iso@dateformat}{TeX}}{% + \iso@printmonth{#1}% + \ifiso@doprintday + /\iso@printday{#2}% + \fi + }{% + \PackageError{isodate.sty}{\csname iso@printmonthday\endcsname: + Invalid date format `\iso@dateformat'}{Internal error. Please + report to the package author.} + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\iso@printdate@int} +% ?????? +% \begin{macrocode} +\def\iso@printdate@int#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}/% + }{% + \PackageError{isodate.sty}{\csname iso@printmonthday\endcsname: + Invalid date format `\iso@dateformat'}{Internal error. Please + report to the package author.} + }% + }% + \fi + \csname iso@printmonthday@int\endcsname{\number#2}{\number#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\iso@daterange@int} +% ?????? +% \begin{macrocode} +\def\iso@daterange@int#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}}{% + \ifiso@doprintday + \iso@printday{#6}% + \else + \iso@printmonthday@int{#5}{#6}% + \fi + }{% + \iso@printmonthday@int{#5}{#6}% + }% + }{% + \iso@printdate@int{#4}{#5}{#6}% + }% + }{% + \PackageError{isodate.sty}{\csname iso@printmonthday\endcsname: + Invalid date format `\iso@dateformat'}{Internal error. Please + report to the package author.} + }% +} +% \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\MessageBreak + 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\MessageBreak + 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\MessageBreak + 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 +} +%</isodate> +% \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% +% \end{macrocode} +% Numeric and short date format: \verb|dd/mm/| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% +% \end{macrocode} +% Original date format: \verb|d. mmm| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \ifiso@doprintday + \iso@printday{#2}.\iso@monthsep + \fi + \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}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \iso@printmonthday@danish{\number#2}{\number#3}% + \ifiso@printyear +% \end{macrocode} +% ????? +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% +% \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@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% short original date format: \verb|\iso@printmonthday@danish~yy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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} +% Call the appropriate international routine. +% \begin{macrocode} + \iso@daterange@int{#1}{#2}{#3}{#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}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \iso@printday{#3}.% + }{% + \iso@printday{#3}% + }% + \else + \iso@printmonthday@danish{#2}{#3}% + \fi + }{% + \iso@printmonthday@danish{#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@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 +} +%</danish> +% \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} +% \changes{2.28}{2005/04/15}{Introduce option cleanlook for English +% date format}% +% Prints today's day for the original date format. +% \begin{macrocode} + \def\day@english{% + \ifiso@cleanlook + \day + \else + \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 + \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}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% +% \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}% + \ifiso@doprintday + \day@english\iso@monthsep\@empty + \fi + \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% +% \end{macrocode} +% ISO date format: \verb|yyyy-\iso@printmonthday@english| +% \begin{macrocode} + \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}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \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@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% Short original date format: \verb|\iso@printmonthday@english~yy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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} + \iso@daterange@int{#1}{#2}{#3}{#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}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \begingroup + \edef\lday{#3}\def\day{\lday}% + \day@english + \endgroup + }{% + \iso@printday{#3}% + }% + \else + \csname iso@printmonthday@\iso@languagename\endcsname{#2}{#3}% + \fi + }{% + \csname iso@printmonthday@\iso@languagename\endcsname{#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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% +% \end{macrocode} +% Numeric and short date format: \verb|dd/mm/| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% +% \end{macrocode} +% Original date format: \verb|ddd mmm| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \begingroup + \edef\lmonth{#1}\def\month{\lmonth}% + \ifiso@doprintday + \iso@printday{#2}\iso@monthsep\@empty + \fi + \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \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}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \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@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% Short original date format: \verb|\iso@printmonthday@australian~yy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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} + \iso@daterange@int{#1}{#2}{#3}{#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}}{% + \ifiso@doprintday + \iso@printday{#3}% + \else + \csname iso@printmonthday@\iso@languagename\endcsname{#2}{#3}% + \fi + }{% + \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#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}% + \ifiso@doprintday + /\iso@printday{#2}% + \fi + }{% +% \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 + \ifiso@doprintday + \iso@daysep\iso@printday{#2}% + \fi + }{}% + }% + }% + } +% \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \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}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \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}}{% + \ifiso@doprintday,\fi + \iso@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% Short original date format: \verb|\iso@printmonthday@american,~yyyy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \ifiso@doprintday,\fi + \iso@yearsep\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} + \iso@daterange@int{#1}{#2}{#3}{#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 + \ifiso@doprintday + \iso@printday{#6},\iso@yearsep\@empty + \else + \iso@printmonthday@american{#5}{#6}\iso@yearsep\@empty + \fi + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \iso@yearfour{\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 +} +%</english> +% \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}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \begingroup + \edef\lday{#2}\edef\day{\lday}% + \edef\lmonth{#1}\def\month{\lmonth}% + \ifiso@doprintday + \number\day\ifnum1=\day \noexpand\ier\fi\iso@monthsep + \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}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \iso@printmonthday@french{\number#2}{\number#3}% + \ifiso@printyear + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \ifthenelse{\equal{\iso@dateformat}{numeric}}{% + \iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \iso@yearsep\iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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}}{% + \iso@daterange@int{#1}{#2}{#3}{#4}{#5}{#6}% + }{% +% \end{macrocode} +% \begin{macrocode} + \ifthenelse{\equal{\number#1}{\number#4}}{% + \ifthenelse{\equal{\number#2}{\number#5}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \begingroup + \edef\lday{#3}\edef\day{\lday}% + \number\day\ifnum1=\day \noexpand\ier\fi + \endgroup + }{% + \iso@printday{#3}% + }% + \else + \csname iso@printmonthday@\iso@languagename\endcsname{#2}{#3}% + \fi + }{% + \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 +} +%</french> +% \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{\,}% +\def\iso@mylongsepnodaygerman{}% +\def\iso@myshortsepnodaygerman{}% +% \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}} +\DeclareRobustCommand*\monthyearsepnodaygerman[2]{% + \def\iso@mylongsepnodaygerman{#1}% + \def\iso@myshortsepnodaygerman{#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}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}.\iso@dmsepgerman + \fi + \iso@printmonth{#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \ifiso@doprintday + \iso@printday{#2}.\iso@monthsep\@empty + \fi + \begingroup + \edef\lmonth{#1}% + \def\month{\lmonth}\csname month@\iso@languagename\endcsname% + \endgroup + }{}% + }% + }% +} +% \end{macrocode} +% \begin{macrocode} +\@namedef{iso@printdate@\CurrentOption}#1#2#3{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \csname iso@printmonthday@\iso@languagename\endcsname{% + \number#2}{\number#3}% + \ifiso@printyear + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + \ifiso@doprintday.\else/\fi + }% + \ifthenelse{\equal{\iso@dateformat}{numeric}}{% + \ifiso@doprintday + \iso@mylongsepgerman\@empty + \else + \iso@mylongsepnodaygerman\@empty + \fi + \iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \iso@yearsep\iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\iso@twodigitsign\iso@yeartwo{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@myshortsepgerman\@empty + \else + \iso@myshortsepnodaygerman\@empty + \fi + \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}}{% + \iso@daterange@int{#1}{#2}{#3}{#4}{#5}{#6}% + }{% +% \end{macrocode} +% \begin{macrocode} + \ifthenelse{\equal{\number#1}{\number#4}}{% + \ifthenelse{\equal{\number#2}{\number#5}}{% + \ifiso@doprintday + \iso@printday{#3}.% + \else + \csname iso@printmonthday@\iso@languagename\endcsname{#2}{#3}% + \fi + }{% + \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 +} +%</german> +% \end{macrocode} +% +% \subsection{Language definition file italian.idf} +% \changes{2.28}{2005/04/15}{Add Italian language by Philip Ratcliffe}% +% +% \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} +%<*italian> +\let\iso@languageloaded\active +\typeout{Define commands for Italian date format} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\month@italian{\ifcase\month\or + gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or + luglio\or agosto\or settembre\or ottobre\or novembre\or + dicembre\fi} +% \end{macrocode} +% \begin{macrocode} +\def\iso@printmonthday@italian#1#2{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \begingroup + \edef\lday{#2}\edef\day{\lday}% + \edef\lmonth{#1}\def\month{\lmonth}% + \ifiso@doprintday + \number\day\ifnum1=\day \noexpand\textordmasculine\fi + \iso@monthsep + \fi + \month@italian + \endgroup + }{}% + }% + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\iso@printdate@italian#1#2#3{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \iso@printmonthday@italian{\number#2}{\number#3}% + \ifiso@printyear + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \ifthenelse{\equal{\iso@dateformat}{numeric}}{% + \iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \iso@yearsep\iso@yearfour{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\iso@twodigitsign\iso@yeartwo{\number#1}% + }{% + \ifthenelse{\equal{\iso@dateformat}{short}}{% + \iso@yeartwo{\number#1}% + }{}% + }% + }% + }% + \fi + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\iso@dateitalian{% + \def\today{\iso@printdate@italian{\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@italian}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\iso@daterange@italian#1#2#3#4#5#6{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@daterange@int{#1}{#2}{#3}{#4}{#5}{#6}% + }{% +% \end{macrocode} +% \begin{macrocode} + \ifthenelse{\equal{\number#1}{\number#4}}{% + \ifthenelse{\equal{\number#2}{\number#5}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}}{% + \begingroup + \edef\lday{#3}\edef\day{\lday}% + \number\day\ifnum1=\day \noexpand\textordmasculine\fi + \endgroup + }{% + \iso@printday{#3}% + }% + \else + \iso@printmonthday@italian{#2}{#3}% + \fi + }{% + \iso@printmonthday@italian{#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{~al~} +% \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{italian}% +% \end{macrocode} +% \begin{macrocode} +\AtBeginDocument{% + \ifx\undefined\iso@dateitalian\else + \def\dateitalian{\iso@dateitalian}% + \fi +} +%</italian> +% \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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% +% \end{macrocode} +% Numeric and short date format: \verb|dd/mm/| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% +% \end{macrocode} +% Original date format: \verb|d. mmm| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \ifiso@doprintday + \iso@printday{#2}.\iso@monthsep + \fi + \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}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \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}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \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@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% short original date format: \verb|\iso@printmonthday@norsk~yyyy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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}}{% + \iso@daterange@int{#1}{#2}{#3}{#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}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \iso@printday{#3}.% + }{% + \iso@printday{#3}% + }% + \else + \iso@printmonthday@norsk{#2}{#3}% + \fi + }{% + \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 +} +%</norsk> +% \end{macrocode} +% +% \changes{2.07}{2003/07/29}{Add 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{% + \ifthenelse{\equal{\iso@dateformat}{iso}\OR + \equal{\iso@dateformat}{TeX}}{% + \iso@printmonthday@int{#1}{#2}% + }{% +% \end{macrocode} +% Numeric and short date format: \verb|dd/mm/| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{numeric}\OR + \equal{\iso@dateformat}{short}}{% + \ifiso@doprintday + \iso@printday{#2}/% + \fi + \iso@printmonth{#1}% + }{% +% \end{macrocode} +% Original date format: \verb|d. mmm| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \ifiso@doprintday + \iso@printday{#2}.\iso@monthsep + \fi + \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}}{% + \iso@printdate@int{#1}{#2}{#3}% + }{% + \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}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + }{% + /% + }% + \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@yearsep\iso@yearfour{\number#1}% + }{% +% \end{macrocode} +% short original date format: \verb|\iso@printmonthday@swedish~yy| +% \begin{macrocode} + \ifthenelse{\equal{\iso@dateformat}{shortorig}}{% + \iso@yearsep\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}}{% + \iso@daterange@int{#1}{#2}{#3}{#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}}{% + \ifiso@doprintday + \ifthenelse{\equal{\iso@dateformat}{orig}\OR + \equal{\iso@dateformat}{shortorig}}{% + \iso@printday{#3}.% + }{% + \iso@printday{#3}% + }% + \else + \iso@printmonthday@swedish{#2}{#3}% + \fi + }{% + \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 +} +%</swedish> +% \end{macrocode} +% +% \Finale diff --git a/macros/latex/contrib/isodate/isodate.ins b/macros/latex/contrib/isodate/isodate.ins new file mode 100644 index 0000000000..f9b1dfa823 --- /dev/null +++ b/macros/latex/contrib/isodate/isodate.ins @@ -0,0 +1,32 @@ +\def\batchfile{isodate.ins} +\input docstrip.tex +\preamble + + isodate package + + Copyright 2000--2010 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. + + h.harders@tu-bs.de + +\endpreamble + +\askforoverwritefalse +% Files +%%%%%%%%%%%%%%%%%%%%%% +\generate{% + \file{isodate.sty}{\from{isodate.dtx}{isodate}}% + \file{danish.idf}{\from{isodate.dtx}{language,danish}}% + \file{english.idf}{\from{isodate.dtx}{language,english}}% + \file{french.idf}{\from{isodate.dtx}{language,french}}% + \file{german.idf}{\from{isodate.dtx}{language,german}}% + \file{italian.idf}{\from{isodate.dtx}{language,italian}}% + \file{norsk.idf}{\from{isodate.dtx}{language,norsk}}% + \file{swedish.idf}{\from{isodate.dtx}{language,swedish}}% + \file{isodateo.sty}{\from{isodateo.dtx}{package}}% +} +\Msg{* ready} diff --git a/macros/latex/contrib/isodate/isodate.pdf b/macros/latex/contrib/isodate/isodate.pdf Binary files differnew file mode 100644 index 0000000000..2bcd456c77 --- /dev/null +++ b/macros/latex/contrib/isodate/isodate.pdf diff --git a/macros/latex/contrib/isodate/isodate.xml b/macros/latex/contrib/isodate/isodate.xml new file mode 100644 index 0000000000..5b14f6a5e4 --- /dev/null +++ b/macros/latex/contrib/isodate/isodate.xml @@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<!DOCTYPE entry SYSTEM "../catalogue.dtd"> +<entry id="isodate" + datestamp="2010/01/03" + modifier="h.harders@tu-bs.de"> + <about> + <name>isodate</name> + <caption>Tune the output format of dates language dependent.</caption> + <author> + <name>Harald Harders</name> + <email>h.harders@tu-bs.de</email> + </author> + <license type="lppl"/> + <version> + <number>2.30</number> + </version> + </about> + <description> + <abstract> + This package provides ten output formats of the + commands \today, \printdate, \printdateTeX, and \daterange + (partly language dependent): + ISO (yyyy-mm-dd), numeric (e.g. dd.\,mm.~yyyy), short + (e.g. dd.\,mm.\,yy), TeX (yyyy/mm/dd), original (e.g. dd. mmm yyyy), + short original (e.g. dd. mmm yy), as well as numerical formats with + Roman numerals for the month. + The commands \printdate and \printdateTeX print any date. + The command \daterange prints a date range and leaves out unnecessary + year or month entries. + </abstract> + <documentation location="http" type="pdf"> + http://www.act.cmis.csiro.au/gjw/tex/docs/isodate.pdf + </documentation> + </description> + <distribution> + <texlive>latex3</texlive> + <ctan>macros/latex/contrib/isodate</ctan> + </distribution> +</entry> + diff --git a/macros/latex/contrib/isodate/isodateo.dtx b/macros/latex/contrib/isodate/isodateo.dtx new file mode 100644 index 0000000000..cf92ac9f94 --- /dev/null +++ b/macros/latex/contrib/isodate/isodateo.dtx @@ -0,0 +1,499 @@ +% \iffalse meta comment +% File: isodateo.dtx Copyright (C) 2000 Harald Harders +% \fi +% +% \iffalse +% +%<*package> +\def\packagename{isodateo} +\def\fileversion{1.06a} +\def\filedate{2004/02/12} +\def\docdate{2000/08/08} +%</package> +%<*driver> +\documentclass{ltxdoc} +\IfFileExists{isodateo.sty}{\usepackage{isodateo} + \let\isodateoSTYfound\active}{\GenericWarning{isodateo.dtx}{Package + file isodateo.sty not found (Documentation will be messed up!^^J^^A + Generate isodateo.sty by (La)TeXing isodateo.ins, process + isodateo.dtx again)^^J}\stop} +\usepackage{array} +\isodate +\title{The \texttt{isodateo} package\thanks{This file has version + \fileversion\ last revised \printdateTeX{\filedate}, + documentation dated \printdateTeX{\docdate}.}} +\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} +\DoNotIndex{\setcounter,\space} +\CodelineNumbered +\RecordChanges +\CheckSum{272} +\begin{document} + \DocInput{isodateo.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{1.06a}{2004/02/12}{Path changed according to new CTAN +% structure}% +% \changes{1.05}{2000/06/15}{Throw out the commands \textbackslash +% IfSubStringInString and \textbackslash IfCharInString and use the +% package substr.sty instead} +% \changes{1.05}{2000/06/15}{Change all internal command names to +% start with \textbackslash iso@} +% \changes{1.04}{2000/06/13}{Make the commands robust} +% \changes{1.01}{2000/06/08}{Improve documentation} +% \maketitle +% +% \begin{abstract} +% \noindent This package provides commands to switch between different +% date formats (standard, ISO, numeric, \LaTeX\ package). They are used by the +% \verb|\today| command and by the \verb|\printdate| and +% \verb|\printdateTeX| commands that print any date. +% This package supports German (old and new rules, Austrian), US +% English, and all languages that have the same date format as British +% English does\footnote{E.g. Danish, French}. +% +% The idea for this package was taken from the akletter class. +% \end{abstract} +% +% \tableofcontents +% +% \section{Commands} +% +% \subsection{Switching the date format} +% +% \DescribeMacro{\today}% +% This package provides five commands to switch the output format of +% the \verb|\today|, the \verb|\printdate|, and the +% \verb|\printdateTeX| commands: +% \medskip +% +% \DescribeMacro{\isodate}% +% \DescribeMacro{\numdate}% +% \DescribeMacro{\shortdate}% +% \DescribeMacro{\TeXdate}% +% \DescribeMacro{\origdate}% +% \begin{tabular}{@{}ll} +% \verb|\isodate|&date format described in ISO 8601 and DIN 5008\\ +% &(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 +% \end{tabular} +% \medskip +% +% The numeric and short numeric format change their behaviour +% depending on the actual 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} +% +% So this package supports German (old and new rules, Austrian), US +% English, and all languages that have the same date format as British +% English does\footnote{E.g. Danish, French}. +% \changes{1.05}{2000/06/29}{Note that every language that has the +% same format as English is supported.} +% Switching the language by using \textbackslash selectlanguage also +% switches back to the original date format. +% +% \subsection{Printing any date} +% +% \DescribeMacro{\printdate}% +% The command \verb|\printdate{#1}| prints any date in the actual +% format. The argument may be a date in German, British English, or +% ISO format, e.g.\\ +% \begin{quote} +% \verb|\printdate{24.12.2000}|\\ +% \verb|\printdate{24/12/2000}|\\ +% \verb|\printdate{2000-12-24}| +% \end{quote} +% +% \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{quote} +% \verb|\printdateTeX{2000/12/24}| +% \end{quote} +% This command is useful for printing version information stored in a +% macro. For example the version of this documentation is stored in +% the macro \verb|\docdate| (``\docdate''). To print it with the actual +% date format you can use the command \verb|\printdateTeX{\docdate}| +% which leads to ``\printdateTeX{\docdate}''. +% +% \subsection{Changing the ISO format} +% +% \DescribeMacro{\isodash}% +% I am not sure whether the ISO format should be yyyy-mm-dd or +% yyyy--mm--dd. By default I use ``-'' as dash. You can change this +% using the \verb|\isodash| command, e.g. +% \begin{quote} +% \verb|\printdate{24/12/2000}|\\ +% \verb|\isodash{--}|\\ +% \verb|\printdate{24/12/2000}| +% \end{quote} +% leads to ``2000-12-24 2000--12--24''. Or for example +% \begin{quote} +% \verb|\isodash{$\cdot$}|\\ +% \verb|\printdate{24/12/2000}| +% \end{quote} +% leads to ``2000$\cdot$12$\cdot$24''. +% +% \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}[h!tbp] +% \centering +% \caption{Package options} +% \label{tab:options} +% \begin{tabular}{ll}\hline +% option&used date format\\ \hline +% \verb|iso|&ISO date format\\ +% \verb|num|&numeric date format with 4 digits of the year\\ +% \verb|short|&numeric date format with 2 digits of the year\\ +% \verb|TeX|&\LaTeX\ numeric date format (yyyy/mm/dd)\\ +% \verb|orig|&normal \LaTeX\ date format (default)\\ +% \hline +% \end{tabular} +% \end{table} +% +% \appendix +% +% \section{Licence} +% +% Copyright 2000 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 \verb|\printdate| and \verb|\printdateTeX| commands are not +% very good in checking the argument for correct syntax. +% \item For the language American: Using the package \verb|babel| only +% the language name ``american'' works, using the package +% \verb|*german| only ``USenglish'' works. +% \end{itemize} +% +% \section{Planned features and changes} +% +% \begin{itemize} +% \item Of course eliminate the errors. +% \item Add other languages then german, ngerman, english, +% USenglish. Please help me with this topic, I don't know the date +% formats in other languages. +% \end{itemize} +% +% \StopEventually{\PrintChanges \PrintIndex} +% +% +% \section{The implementation} +% \iffalse +%<*package> +% \fi +% Heading of the package: +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{isodateo}[\filedate] +\RequirePackage{ifthen} +\RequirePackage{calc} +\IfFileExists{substr.sty}{\RequirePackage{substr}% + }{\PackageError{isodateo.sty}{Package file substr.sty not found} + {This version of isodateo.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} +% At the end of the preamble the package tests whether one of the +% packages \verb|babel|, \verb|german|, or \verb|ngerman| is loaded. If +% not it is assumed that American English is wanted (\LaTeX\ is an +% American programme). The original date format is saved and the command +% \verb|\iflanguage| is redefined to process the ``true part'' for +% english, american, and USenglish options and otherwise the ``false part''. +% \changes{1.03}{2000/06/13}{Insert code for handling not loaded +% language packages} +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{babel}{}{% + \@ifpackageloaded{german}{}{% + \@ifpackageloaded{ngerman}{}{% +% \end{macrocode} +% Here you can add new languages. Tell me what you have inserted in +% order to enable me to actualize the package. +% \begin{macrocode} + \let\dateamerican\today% + \setboolean{isodate@american}{true}% + \def\iflanguage#1#2#3{\ifthenelse{% + \equal{#1}{english}\or% + \equal{#1}{american}\or% + \equal{#1}{USenglish}% + }{#2}{#3}}% + }}}} +% \end{macrocode} +% +% Declare the boolean variable isodate@american. This is necessary +% because the command \textbackslash iflanguage cannot decide if the +% language is English or American. +% \changes{1.02}{2000/06/08}{Fix American language support by a hack} +% \begin{macrocode} +\newboolean{isodate@american}% +% \changes{1.06}{2000/08/08}{Avoid using the hack with redefining +% \selectlanguage} +% Define the package options. +% \begin{macrocode} +\DeclareOption{iso}{\AtBeginDocument{\isodate}} +\DeclareOption{num}{\AtBeginDocument{\numdate}} +\DeclareOption{short}{\AtBeginDocument{\shortdate}} +\DeclareOption{TeX}{\AtBeginDocument{\TeXdate}} +\DeclareOption{orig}{\AtBeginDocument{\origdate}} +\ExecuteOptions{orig} +\ProcessOptions +% \end{macrocode} +% Print day or month filled with zero to a format with two digits. +% \begin{macrocode} +\def\dday{\ifthenelse{\number\day<10}{0}{}\number\day} +\def\dmonth{\ifthenelse{\number\month<10}{0}{}\number\month} +% \end{macrocode} +% Print day and month in numerical format using the right format for +% the present language. +% \begin{macrocode} +\DeclareRobustCommand*{\num@today}[1]{% + \iflanguage{german}{\dday.\,\dmonth.#1}{% + \iflanguage{austrian}{\dday.\,\dmonth.#1}{% + \iflanguage{ngerman}{\dday.\,\dmonth.#1}{% + \iflanguage{naustrian}{\dday.\,\dmonth.#1}{% +% \end{macrocode} +% Here you can add new languages. Tell me what you have inserted in +% order to enable me to actualize the package. +% \begin{macrocode} + \iflanguage{english}{% + \ifthenelse{\boolean{isodate@american}}{% + \dmonth/\dday/}{\dday/\dmonth/}}{% + \dday/\dmonth/}}}}}% +} +% \end{macrocode} +% \begin{macro}{\numdate} +% Switch to long numeric date format. +% \begin{macrocode} +\DeclareRobustCommand*{\numdate}{% +% \end{macrocode} +% Find out whether the language may be English or American. The +% English original date format does not contain a komma while the +% american does. +% \changes{1.06}{2000/08/08}{Choose between English and American language} +% \begin{macrocode} + \origdate% + \setboolean{isodate@american}{false}% + \iflanguage{american}{\IfCharInString{,}{\today}{% + \setboolean{isodate@american}{true}}{}}{}% +% \end{macrocode} +% Define the new \textbackslash today command. +% \begin{macrocode} + \gdef\today{% + \num@today{~}% + \number\year}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\shortdate} +% Switch to short numeric date format. +% \begin{macrocode} +\newcounter{yeartwo} +\DeclareRobustCommand*{\shortdate}{% +% \end{macrocode} +% Find out whether the language may be English or American. The +% English original date format does not contain a komma while the +% american does. +% \changes{1.06}{2000/08/08}{Choose between English and American language} +% \begin{macrocode} + \origdate% + \setboolean{isodate@american}{false}% + \iflanguage{american}{\IfCharInString{,}{\today}{% + \setboolean{isodate@american}{true}}{}}{}% +% \end{macrocode} +% Define the new \textbackslash today command. +% \begin{macrocode} + \gdef\today{% + \num@today{\,}% + \setcounter{yeartwo}{\number\year}% + \whiledo{\theyeartwo>99}{\setcounter{yeartwo}{\theyeartwo-100}}{}% + \ifthenelse{\number\theyeartwo<10}{0}{}\theyeartwo}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\isodate} +% Switch to ISO date format. +% \begin{macrocode} +\DeclareRobustCommand*{\isodate}{% + \gdef\today{% + \number\year\iso@isodash% + \ifthenelse{\number\month<10}{0}{}\number\month\iso@isodash% + \ifthenelse{\number\day<10}{0}{}\number\day}} +% \end{macrocode} +% \end{macro} +% Define the default ISO dash to ``-''. +% \begin{macrocode} +\def\iso@isodash{-}% +% \end{macrocode} +% \begin{macro}{\isodate} +% Define the command \verb|\isodash| which changes the dash in the ISO +% date format. +% \begin{macrocode} +\DeclareRobustCommand*{\isodash}[1]{\def\iso@isodash{#1}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\origdate} +% Switch back to original date format. +% \changes{1.06}{2000/08/08}{Use the command \textbackslash +% date\emph{language} to switch back to the original date format} +% \begin{macrocode} +%\DeclareRobustCommand*{\origdate}{\gdef\today{\iso@origdate}} +\DeclareRobustCommand*{\origdate}{\csname date\languagename\endcsname} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TeXdate} +% \changes{1.04}{2000/06/13}{Add \LaTeX\ date format yyyy/mm/dd} +% Switch to the \TeX\ date format. +% \begin{macrocode} +\DeclareRobustCommand*{\TeXdate}{% + \gdef\today{% + \number\year/% + \ifthenelse{\number\month<10}{0}{}\number\month/% + \ifthenelse{\number\day<10}{0}{}\number\day}} +% \end{macrocode} +% \end{macro} +% Print any date (internal command, syntax: +% \verb|\iso@printdate{yyyy}{mm}{dd}|). +% \begin{macrocode} +\DeclareRobustCommand*{\iso@printdate}[3]{% + \begingroup% + \def\year{#1}% + \def\month{#2}% + \def\day{#3}% + \today% + \endgroup% +} +% \end{macrocode} +% Define counters to count the numbers of special characters in the +% arguments of the \verb|\printdate| and \verb|\printdateTeX| commands. +% \begin{macrocode} +\newcounter{iso@slash} +\newcounter{iso@minus} +\newcounter{iso@dot} +% \end{macrocode} +% \begin{macro}{\printdate} +% Print any date in the actual date format. This command understands +% the German, British, and ISO formats. +% \begin{macrocode} +\DeclareRobustCommand*{\printdate}[1]{% + \expandafter\iso@expafterprintdate\expandafter{#1}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\iso@expafterprintdate} +% The command \verb|\iso@expafterprintdate| needs an already expanded +% argument. So the command \verb|\printdate| expands it and calls +% \verb|\iso@expafterprintdate|. +% +% The error handling of this macro is very poor. It is just tested if +% either a ``/'', ``-'', or ``.'' is included in the argument +% twice. It is not tested if the argument consists of numbers, only. +% \changes{1.05}{2000/06/15}{Count appearances of ``/'', ``.'', and +% ``-'' and complain if not at least one of them is equal to 2} +% \begin{macrocode} +\DeclareRobustCommand*{\iso@expafterprintdate}[1]{% + \SubStringsToCounter{iso@slash}{/}{#1}% + \SubStringsToCounter{iso@minus}{-}{#1}% + \SubStringsToCounter{iso@dot}{.}{#1}% + \ifthenelse{\equal{\theiso@dot}{2}}{\printdatenumger{#1}}{% + \ifthenelse{\equal{\theiso@minus}{2}}{\printdateiso{#1}}{% + \ifthenelse{\equal{\theiso@slash}{2}}{\printdatenumeng{#1}}{% + ????\iso@isodash ??\iso@isodash ??% + \PackageError{isodateo}{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} +% Analyze the argument containing a date in ISO format an print +% it. This macros does not contain any error handling. +% \begin{macrocode} +\DeclareRobustCommand*{\printdateiso}[1]{% + \expandafter\iso@printdateiso #1\@empty} +\def\iso@printdateiso#1-#2-#3\@empty{\iso@printdate{#1}{#2}{#3}} +% \end{macrocode} +% Analyze the argument containing a date in German numeric format an +% print it. This macros does not contain any error handling. +% \begin{macrocode} +\DeclareRobustCommand*{\printdatenumger}[1]{% + \expandafter\iso@printdatenumger #1\@empty} +\def\iso@printdatenumger#1.#2.#3\@empty{\iso@printdate{#3}{#2}{#1}} +% \end{macrocode} +% Analyze the argument containing a date in Britisch English numeric +% format an print it. This macros does not contain any error handling. +% \begin{macrocode} +\DeclareRobustCommand*{\printdatenumeng}[1]{% + \expandafter\iso@printdatenumeng #1\@empty} +\def\iso@printdatenumeng#1/#2/#3\@empty{\iso@printdate{#3}{#2}{#1}} +% \end{macrocode} +% \changes{1.04}{2000/06/13}{Add \LaTeX\ date format yyyy/mm/dd} +% \begin{macro}{\printdateTeX} +% Analyze the argument containing a date in the LaTeX style yyyy/mm/dd +% an print it. This format can not be handled automaticaly by +% \verb|\printdate| because it could be mixed up with the English +% format. The error handling of this routine is very poor. It just +% checks whether the argument contains at least one ``/''. +% \changes{1.05}{2000/06/15}{Count appearances of ``/'' and complain +% if not equal to 2} +% \begin{macrocode} +\DeclareRobustCommand*{\printdateTeX}[1]{% + \expandafter\iso@printdateTeX\expandafter{#1}} +\DeclareRobustCommand*{\iso@printdateTeX}[1]{% + \SubStringsToCounter{iso@slash}{/}{#1}% + \ifthenelse{\equal{\theiso@slash}{2}}% + {\expandafter\iso@@printdateTeX #1\@empty}{% + ????\iso@isodash ??\iso@isodash ??% + \PackageError{isodateo}{unrecognized date format}{Use the format + yyyy/mm/dd.^^J% + Don't use any spaces or commands like \protect\, or + \protect~ inside the argument.}}% +} +\def\iso@@printdateTeX#1/#2/#3\@empty{\iso@printdate{#1}{#2}{#3}} +% \end{macrocode} +% \end{macro} +% The end of the package. +% \iffalse +%</package> +% \fi +% \Finale diff --git a/macros/latex/contrib/isodate/isodateo.pdf b/macros/latex/contrib/isodate/isodateo.pdf Binary files differnew file mode 100644 index 0000000000..5399398f18 --- /dev/null +++ b/macros/latex/contrib/isodate/isodateo.pdf diff --git a/macros/latex/contrib/isodate/testdate.pdf b/macros/latex/contrib/isodate/testdate.pdf Binary files differnew file mode 100644 index 0000000000..46e0d42577 --- /dev/null +++ b/macros/latex/contrib/isodate/testdate.pdf diff --git a/macros/latex/contrib/isodate/testdate.tex b/macros/latex/contrib/isodate/testdate.tex new file mode 100644 index 0000000000..818ca4916b --- /dev/null +++ b/macros/latex/contrib/isodate/testdate.tex @@ -0,0 +1,183 @@ +\documentclass[spanish,swedish,norsk,italian,danish,french,USenglish,english,australian,newzealand,naustrian,ngerman,a4paper,fleqn,11pt]{article} +\usepackage[T1]{fontenc} +\usepackage{babel} +%\usepackage[iso,cleanlook]{isodate} +\usepackage[iso,nocleanlook]{isodate} +%\usepackage{ngerman} +%\usepackage{bibgerm} +%\shortyearsign{'} +%\printyearoff +\printdayoff + +\overfullrule1mm + +\setlength{\parindent}{0mm} +\addtolength\textheight{10\baselineskip} +\addtolength\topmargin{-4\baselineskip} +\addtolength\textwidth{6mm} + +\makeatletter +\newcommand{\example}[2][]{% + \@ifundefined{l@#2}{% + \section*{Language: #2} + Not available since babel does not know this language. + }{% + \selectlanguage{#2} +% \ifthenelse{\equal{#2}{american}}{\dateamerican}{}% + \section*{Language: \languagename#1} + \begin{tabular}{@{}lll} + today&normal date format&``\origdate\today''\\ + &short original&``\shortorigdate\today''\\ + &isodate&``\isodate\today''\\ + &numdate&``\numdate\today''\\ + &shortdate&``\shortdate\today''\\ + &TeXdate&``\TeXdate\today''\\ + &Romandate&``\Romandate\today''\\ + &romandate&``\romandate\today''\\ + &shortRomandate&``\shortRomandate\today''\\ + &shortromandate&``\shortromandate\today''\\ + &back to normal&``\origdate\today''\\ + another day&normal date format&``\origdate\printdate{1972-1-9}''\\ + &short original&``\shortorigdate\printdate{9.1.1972}''\\ + &isodate&``\isodate\printdate{9.1.1972}''\\ + &numdate&``\numdate\printdate{1972-1-9}''\\ + &shortdate&``\shortdate\printdate{1972-1-9}''\\ + &TeXdate&``\TeXdate\printdate{1972-1-9}''\\ + &Romandate&``\Romandate\printdate{1972-1-9}''\\ + &romandate&``\romandate\printdate{1972-1-9}''\\ + &shortRomandate&``\shortRomandate\printdate{1972-1-9}''\\ + &shortromandate&``\shortromandate\printdate{1972-1-9}''\\ + &back to normal&``\origdate\printdate{9/1/1972}''\\ + range 1&normal date format&``\origdate\daterange{1972-1-30}{1972-1-31}''\\ + &short original&``\shortorigdate\daterange{1972-1-30}{1972-1-31}''\\ + &isodate&``\isodate\daterange{1972-1-30}{1972-1-31}''\\ + &numdate&``\numdate\daterange{1972-1-30}{1972-1-31}''\\ + &shortdate&``\shortdate\daterange{1972-1-30}{1972-1-31}''\\ + &TeXdate&``\TeXdate\daterange{1972-1-30}{1972-1-31}''\\ + &Romandate&``\Romandate\daterange{1972-1-30}{1972-1-31}''\\ + &back to normal&``\origdate\daterange{1972-1-30}{1972-1-31}''\\ + range 2&normal date format&``\origdate\daterange{1972-1-30}{1972-2-28}''\\ + &short original&``\shortorigdate\daterange{1972-1-30}{1972-2-28}''\\ + &isodate&``\isodate\daterange{1972-1-30}{1972-2-28}''\\ + &numdate&``\numdate\daterange{1972-1-30}{1972-2-28}''\\ + &shortdate&``\shortdate\daterange{1972-1-30}{1972-2-28}''\\ + &TeXdate&``\TeXdate\daterange{1972-1-30}{1972-2-28}''\\ + &Romandate&``\Romandate\daterange{1972-1-30}{1972-2-28}''\\ + &back to normal&``\origdate\daterange{1972-1-30}{1972-2-28}''\\ + range 3&normal date format&``\origdate\daterange{1972-1-30}{2001-1-28}''\\ + &short original&``\shortorigdate\daterange{1972-1-30}{2001-1-28}''\\ + &isodate&``\isodate\daterange{1972-1-30}{2001-1-28}''\\ + &numdate&``\numdate\daterange{1972-1-30}{2001-1-28}''\\ + &shortdate&``\shortdate\daterange{1972-1-30}{2001-1-28}''\\ + &TeXdate&``\TeXdate\daterange{1972-1-30}{2001-1-28}''\\ + &back to normal&``\origdate\daterange{1972-1-30}{2001-1-28}''\\ + \end{tabular}% + + {\origdate A very, very long line with a linebreak within the date to test + linebreak: \printdate{2007-04-09}} + + {\isospacebeforeyear{\ }% + \isospacebeforemonth{\ }% + \isospacebeforeday{\ }% + \origdate A very, very long line with a linebreak within the date to test + linebreak: \printdate{2007-04-09}} + + }% +} +\makeatother +\begin{document} +%\today + +%\monthyearsepgerman{\qquad}{\quad}% +%\daymonthsepgerman{\quad}% + +\example{ngerman} +\example{naustrian} +\example{english} +\example{australian} +%\example{newzealand} +\example{USenglish} +%\example{american} +\example{french} +\example{danish} +\example{italian} +\example{norsk} +\example{swedish} +\example[ (not defined in isodate)]{spanish} + +\selectlanguage{english}% + +\section*{Changed ISO output} +\isodate +\printdate{24/12/2000} + +\isodash{--} +\printdate{24/12/2000} + +\isodash{$\cdot$} +\printdate{24.12.2000} + +\section*{Strange date formats} +\numdate[Alph] +\printdate{4.1.2000} + +\printdate{4.2.2000} + +\printdate{1.11.2000} + +\printdate{4.12.2000} + +\numdate[Alph]% +\isotwodigitdayfalse +\printdate{4.1.2000} + +\printdate{4.2.2000} + +\printdate{1.11.2000} + +\printdate{4.12.2000} + +\def\tuetel#1{\textsuperscript{\twodigitarabic{#1}}} +\numdate[tuetel] +\printdate{4.1.2000} + +\printdate{4.2.2000} + +\printdate{1.11.2000} + +\printdate{4.12.2000} + +\selectlanguage{ngerman} +\numdate +\printdate{4.12.0002} + +\shortdate +\printdate{4.12.0002} + +\selectlanguage{spanish} +\printdate{4.12.0002} + +\section*{Test input format} +\selectlanguage{english}% +\isodate\isodash{-}% + +\dateinputformat{english}% +\printdate{31/12/2004} (english \verb|\printdate{31/12/2004}|) + +\daterange{31/12/2004}{15/01/2005} + +\dateinputformat{USenglish}% +\printdate{12/31/2004} (american \verb|\printdate{12/31/2004}|) + +\daterange{12/31/2004}{01/15/2005} + + +\dateinputformat{tex}% +\printdate{2004/12/31} (tex \verb|\printdate{2004/12/31}|) + +\daterange{2004/12/31}{2005/01/15} + + + +\end{document} + diff --git a/macros/latex/contrib/isodate/testisodate_without_babel.tex b/macros/latex/contrib/isodate/testisodate_without_babel.tex new file mode 100644 index 0000000000..4a30997373 --- /dev/null +++ b/macros/latex/contrib/isodate/testisodate_without_babel.tex @@ -0,0 +1,5 @@ +\documentclass[american]{article} +%\usepackage{babel} +\usepackage[iso]{isodate} +\title{Just a Test}\author{Just a Test}\date{\today} +\begin{document}\maketitle\end{document} |