%% %% This is file `isodate.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% isodate.dtx (with options: `isodate') %% %% 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 %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{isodate} [2010/01/03 v2.30 Print dates with different formats (HH)] \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.}} \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}} \DeclareOption{printdayoff}{\AtEndOfPackage{\printdayoff}} \DeclareOption{printdayon}{\AtEndOfPackage{\printdayon}} \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}}} \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}} \DeclareOption*{% \InputIfFileExists{\CurrentOption.idf}{}{% \PackageError{isodate}{% Isodate definition file \CurrentOption.idf not found}{% Maybe you misspelled the language option?}}% } \ExecuteOptions{orig,nocleanlook,printdayon} \ProcessOptions* \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 \newcommand*\iso@printday[1]{% \ifisotwodigitday \ifthenelse{\number#1<10}{0}{}% \fi \number#1% }% \newcommand*\twodigitarabic[1]{% \ifthenelse{\number\arabic{#1}<10}{0}{}% \arabic{#1}% } \newcommand*\iso@printmonth[1]{% \setcounter{iso@tmpmonth}{#1}% \theiso@tmpmonth% } \newcounter{iso@tmpmonth} \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 } \newcommand*\iso@yearfour[1]{% \ifthenelse{\number#1<1000}{0}{}% \ifthenelse{\number#1<100}{0}{}% \ifthenelse{\number#1<10}{0}{}% \number#1% }% \newif\ifisotwodigitday \def\iso@dateformat{numeric} \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)?}% }% }% }% } \dateinputformat{english} \DeclareRobustCommand*\numdate[1][twodigitarabic]{% \def\iso@dateformat{numeric}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } \DeclareRobustCommand*\shortdate[1][twodigitarabic]{% \def\iso@dateformat{short}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } \DeclareRobustCommand*\isodate[1][twodigitarabic]{% \def\iso@dateformat{iso}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } \DeclareRobustCommand*\origdate{% \def\iso@dateformat{orig}% \isotwodigitdayfalse \def\theiso@tmpmonth{\twodigitarabic{iso@tmpmonth}}% } \DeclareRobustCommand*\shortorigdate{% \def\iso@dateformat{shortorig}% \isotwodigitdayfalse \def\theiso@tmpmonth{\twodigitarabic{iso@tmpmonth}}% } \DeclareRobustCommand*\TeXdate[1][twodigitarabic]{% \def\iso@dateformat{TeX}% \isotwodigitdaytrue \def\theiso@tmpmonth{\csname #1\endcsname{iso@tmpmonth}}% } \DeclareRobustCommand*\Romandate{% \numdate[Roman]% \isotwodigitdayfalse } \DeclareRobustCommand*\romandate{% \numdate[roman]% \isotwodigitdayfalse } \DeclareRobustCommand*\shortRomandate{% \shortdate[Roman]% \isotwodigitdayfalse } \DeclareRobustCommand*\shortromandate{% \shortdate[roman]% \isotwodigitdayfalse } \def\iso@isodash{-}% \DeclareRobustCommand*\isodash[1]{\def\iso@isodash{#1}}% \def\iso@twodigitsign{} \DeclareRobustCommand*\shortyearsign[1]{\def\iso@twodigitsign{#1}}% \def\iso@rangesign{\csname iso@rangesign@\iso@languagename\endcsname}% \DeclareRobustCommand*\isorangesign[1]{\def\iso@rangesign{#1}}% \newif\ifiso@printyear \DeclareRobustCommand*\printyearon{\iso@printyeartrue} \DeclareRobustCommand*\printyearoff{\iso@printyearfalse} \printyearon \newif\ifiso@doprintday \DeclareRobustCommand*\printdayon{\iso@doprintdaytrue} \DeclareRobustCommand*\printdayoff{\iso@doprintdayfalse} \printdayon \newif\ifiso@cleanlook \DeclareRobustCommand*\cleanlookdateon{\iso@cleanlooktrue} \DeclareRobustCommand*\cleanlookdateoff{\iso@cleanlookfalse} \cleanlookdateoff \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}} \newcommand*\iso@printdate[3]{% \begingroup% \@ifundefined{iso@printdate@\iso@languagename}{% \PackageWarning{isodate}{Language \iso@languagename\space unknown to isodate.\MessageBreak Using default format}% }{}% \year=#1 % \month=#2 % \day=#3 % \today% \endgroup% } \DeclareRobustCommand*\printdate[1]{% \edef\iso@date{#1}% \SubStringsToCounter{iso@slash}{/}{\iso@date}% \SubStringsToCounter{iso@minus}{-}{\iso@date}% \SubStringsToCounter{iso@dot}{.}{\iso@date}% \ifthenelse{\equal{\theiso@dot}{2}}{% \expandafter\iso@input@german\iso@date\@empty}{% \ifthenelse{\equal{\theiso@minus}{2}}{% \expandafter\iso@input@iso\iso@date\@empty}{% \ifthenelse{\equal{\theiso@slash}{2}}{% \expandafter\iso@input@english\iso@date\@empty}{% ????\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.}% }}}% } \def\iso@input@iso#1-#2-#3\@empty{\iso@printdate{#1}{#2}{#3}} \def\iso@input@german#1.#2.#3\@empty{\iso@printdate{#3}{#2}{#1}} \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}% }% }% } \DeclareRobustCommand*\printdateTeX[1]{% \edef\iso@date{#1}% \SubStringsToCounter{iso@slash}{/}{\iso@date}% \ifthenelse{\equal{\theiso@slash}{2}}{% \expandafter\iso@input@TeX\iso@date\@empty}{% ????\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.}% }} \def\iso@input@TeX#1/#2/#3\@empty{\iso@printdate{#1}{#2}{#3}} \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.} }% }% } \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}% } \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.} }% } \DeclareRobustCommand*\daterange[2]{% \edef\iso@date{#1}% \edef\iso@@date{#2}% \edef\iso@@@date{\iso@date,\iso@@date}% \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}% \ifthenelse{\equal{\theiso@dot}{2}\AND\equal{\theiso@@dot}{2}}{% \expandafter\iso@range@input@german\iso@@@date\@empty}{% \ifthenelse{\equal{\theiso@minus}{2}\AND\equal{\theiso@@minus}{2}}{% \expandafter\iso@range@input@iso\iso@@@date\@empty}{% \ifthenelse{\equal{\theiso@slash}{2}\AND \equal{\theiso@@slash}{2}}{% \expandafter\iso@range@input@english\iso@@@date\@empty}{% ????\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.}% }}}% } \def\iso@range@input@iso#1-#2-#3,#4-#5-#6\@empty{% \begingroup \@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{}% \iso@printdate{#1}{#2}{#3}--\iso@printdate{#4}{#5}{#6}% }{% \ifthenelse{\equal{\number#1}{\number#4}}{}{\printyearon}% \csname iso@daterange@\iso@languagename\endcsname{% #1}{#2}{#3}{#4}{#5}{#6}% }% \endgroup } \def\iso@range@input@german#1.#2.#3,#4.#5.#6\@empty{% \begingroup \@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{}% \iso@printdate{#3}{#2}{#1}--\iso@printdate{#6}{#5}{#4}% }{% \ifthenelse{\equal{\number#3}{\number#6}}{}{\printyearon}% \csname iso@daterange@\iso@languagename\endcsname{% #3}{#2}{#1}{#6}{#5}{#4}% }% \endgroup } \def\iso@range@input@english#1/#2/#3,#4/#5/#6\@empty{% \begingroup \@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{}% \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}% }% }% }{% \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 } \newcounter{iso@slash} \newcounter{iso@minus} \newcounter{iso@dot} \newcounter{iso@@slash} \newcounter{iso@@minus} \newcounter{iso@@dot} \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}% }{}% \if@tempswa \gdef\iso@languagename{\languagename}% \edef\iso@tmplang{\languagename}% \expandafter\selectlanguage\expandafter{\iso@tmplang}% \else \typeout{isodate: babel.sty, (n)german.sty have not been loaded}% \csname date\iso@languagename\endcsname% \fi } \endinput %% %% End of file `isodate.sty'.