% ziffer.sty v2.1 % % Author: % % M. V\"ath martin@mvath.de % % The package may be distributed and/or modified under the conditions of % the LaTeX Project Public License (version 1.3c or later). % % This package provides the macros % \ZifferAn (equivalent with \ZifferPunktAn \ZifferStrichAn ) % \ZifferAus (equivalent with \ZifferPunktAus\ZifferStrichAus) % \ZifferPunktAn % \ZifferPunktAus % \ZifferStrichAn % \ZifferStrichAus % % If \ZifferAn was used, then in numbers in math-mode the following happens: % `.' is used as a `one-thousand separator' as common in Germany % `,' is used as a decimal separator as common in Germany % `--' generates a -- with better spacing (e.g. in 1.000,-- ) % % You may still use the symbols `.' `,' and `-' in other context in math mode. % % The first two conversions are switched on by default, the last conversion has % to be switched on explicitly (this has been changed in v2.1): % You may switch on/off the conversions with % \ZifferPunktAn/\ZifferPunktAus (for the first two conversions) respectively % \ZifferStrichAn/\ZifferStrichAus (for the last conversion). % % The reason why the last conversion is not on by default (and why it might be % necessary to [temporarily] switch off a conversion) is that certain packages % (in particular, newer versions of amsmath) cause problems with it. % % There were some discussions which should be the correct output of the % above conversions (in particular, of `--'). % If you do not like my choice: You may customize (i.e. redefine) the macros % \ZifferLeer and \ZifferStrich % after loading the package to produce the `one-thousand separator' % respectively the `--'. % % All above command-names are in German, because I had expected that this % package is only needed for German texts. Meanwhile, I learned that also % other countries use this strange convention for numbers. However, for % downward compatibility, I decided to keep the name conventions anyway % (after all, the name of the package is in German anyway). \ifx\newcommand\undefined\else \newcommand{\ZifferAn}{} \newcommand{\ZifferAus}{} \newcommand{\ZifferPunktAn}{} \newcommand{\ZifferPunktAus}{} \newcommand{\ZifferStrichAn}{} \newcommand{\ZifferStrichAus}{} \newcommand{\ZifferLeer}{} \newcommand{\ZifferStrich}{} \fi \def\ZifferAn{\ZifferPunktAn\ZifferStrichAn} \def\ZifferAus{\ZifferPunktAus\ZifferStrichAus} \def\ZifferPunktAn{\mathcode`,="8000\mathcode`.="8000\relax} \def\ZifferPunktAus{\mathcode`,="613B\mathcode`.="013A\relax} \def\ZifferStrichAn{\mathcode`-="8000\relax} \def\ZifferStrichAus{\mathcode`-="2200\relax} \def\ZifferLeer{\phantom{.}} \ifx\textrm\undefined \def\ZifferStrich{\hbox{-\kern0.1em-}} \else \def\ZifferStrich{\textrm{-\kern0.1em-}} \fi \mathchardef\ziffer@CommaMy="013B \mathchardef\ziffer@CommaOri="613B \mathchardef\ziffer@DotOri="013A \mathchardef\ziffer@MinusOri="2200 {\ZifferAn \catcode`\,=\active\gdef,{\begingroup\obeyspaces\futurelet\n\ziffer@ccheck} \catcode`\.=\active\gdef.{\begingroup\obeyspaces\futurelet\n\ziffer@dcheck} \catcode`\-=\active\gdef-{\begingroup\obeyspaces\futurelet\n\ziffer@mcheck}} \def\ziffer@ccheck{\ziffer@check\ziffer@CommaMy\ziffer@CommaOri} \def\ziffer@dcheck{\ziffer@check\ZifferLeer\ziffer@DotOri} \def\ziffer@mcheck{\ifx\n-\def\n-{\endgroup\ZifferStrich}% \else\def\n{\endgroup\ziffer@MinusOri}\fi\n} \def\ziffer@check#1#2{% \ifx\n1\endgroup#1\else \ifx\n2\endgroup#1\else \ifx\n3\endgroup#1\else \ifx\n4\endgroup#1\else \ifx\n5\endgroup#1\else \ifx\n6\endgroup#1\else \ifx\n7\endgroup#1\else \ifx\n8\endgroup#1\else \ifx\n9\endgroup#1\else \ifx\n0\endgroup#1\else \endgroup#2% \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} \ZifferPunktAn