diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/telprint.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/oberdiek/telprint.sty | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/oberdiek/telprint.sty b/Master/texmf-dist/tex/latex/oberdiek/telprint.sty new file mode 100644 index 00000000000..3216a52dca6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/oberdiek/telprint.sty @@ -0,0 +1,254 @@ +% File: telprint.sty +% Version: 2006/02/12 v1.6 +% Author: Heiko Oberdiek +% Email: <oberdiek@uni-freiburg.de> +% +% Copyright: Copyright (C) 2006 Heiko Oberdiek. +% +% This work may be distributed and/or modified under +% the conditions of the LaTeX Project Public License, +% either version 1.3 of this license or (at your option) +% any later version. The latest version of this license +% is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions +% of LaTeX version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% Function: This is a very old package that I have written +% to format phone numbers. It follows German +% conventions and the documentation is in German +% at the end of this file. :-( +% It follows a short overview in English: +% +% Use: LaTeX: +% \usepackage{telprint} +% \telprint{123/456-789} +% plain: +% \input telprint.sty +% \telprint{123/456-789} +% +% \telprint{...} formats the explicitly given number. +% Digits, spaces and some special characters +% ('+', '/', '-', '(', ')', '~', ' ') are supported. +% Numbers are divided into groups of two digits from the right. +% Examples: +% \telprint{0761/12345} ==> 07\,61/1\,23\,45 +% \telprint{01234/567-89} ==> 0\,12\,34/5\,67\leavevmode\hbox{-}89 +% \telprint{+49 (6221) 297} ==> +49~(62\,21)~2\,97 +% +% The output of the configured by +% \telhyphen, \telslash, \telleftparen, \telrightparen, \telplus, +% \teltilde. +% Example: +% \telslash{\,/\,} +% \telprint{12/34} ==> 12\,/\,34 +% +% \telspace configures the space between digit groups. +% +% \telnumber only formats a number in digit groups; special +% characters are not recognized. +% +% +\ifx\telprint\UnDeFiNeD +% \fi in derselben Zeile wie \endinput oder \expandafter verwenden! +\else\endinput\fi + +\message{Package `telprint' 1.6, 12.02.2006 % + Copyright (c) 1996, 1997, 2004, 2005, 2006 by Heiko Oberdiek.} + +\ifx\DeclareRobustCommand\UnDeFiNeD + \def\DeclareRobustCommand*#1[1]{\def#1##1} + \def\TELreset{\let\DeclareRobustCommand=\UnDeFiNeD} + \immediate\write-1{Package `telprint' warning: % + Macros are not robust!} +\else + \let\TELreset=\relax +\fi + +\DeclareRobustCommand*{\telspace}[1]{\def\TELspace{#1}} +\telspace{{}$\,${}} + +\DeclareRobustCommand*{\telhyphen}[1]{\def\TELhyphen{#1}} +\telhyphen{\leavevmode\hbox{-}}% \hbox zur Verhinderung der Trennung + +\DeclareRobustCommand*{\telslash}[1]{\def\TELslash{#1}} +\telslash{/}% + +\DeclareRobustCommand*{\telleftparen}[1]{\def\TELleftparen{#1}} +\telleftparen{(}% + +\DeclareRobustCommand*{\telrightparen}[1]{\def\TELrightparen{#1}} +\telrightparen{)}% + +\DeclareRobustCommand*{\telplus}[1]{\def\TELplus{#1}} +\telplus{+}% + +\DeclareRobustCommand*{\teltilde}[1]{\def\TELtilde{#1}} +\teltilde{~}% + +\newtoks\TELtoks + +\def\TELnumber#1#2\TELnumberEND{% + \begingroup + \def\0{#2}% + \expandafter\endgroup + \ifx\0\empty + \TELtoks=\expandafter{\the\TELtoks#1}% + \ifnum\TELswitch=0 + \def\TELx{\TELspace}\def\TELy{}% + \else + \def\TELx{}\def\TELy{\TELspace}% + \fi + \the\TELtoks + \else + \ifnum\TELswitch=0 + \TELtoks=\expandafter{\the\TELtoks#1\TELx}% + \def\TELswitch{1}% + \else + \TELtoks=\expandafter{\the\TELtoks#1\TELy}% + \def\TELswitch{0}% + \fi + \TELnumber#2\TELnumberEND + \fi +} + +\DeclareRobustCommand*{\telnumber}[1]{% + \TELtoks={}% + \def\TELswitch{0}% + \TELnumber#1{}\TELnumberEND +} + + +\def\TELsplit{\futurelet\TELfuture\TELdosplit} + +\def\TELdosplit#1#2\TELsplitEND +{% + \def\TELsp{ }% + \expandafter\ifx\TELsp\TELfuture + \let\TELfuture=\relax + \expandafter\telnumber\expandafter{\the\TELtoks}~% + \telprint{#1#2}% Das Leerzeichen kann nicht #1 sein! + \else + \def\TELfirst{#1}% + \ifx\TELfirst\empty + \expandafter\telnumber\expandafter{\the\TELtoks}% + \TELtoks={}% + \else\if-\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELhyphen + \telprint{#2}% + \else\if/\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELslash + \telprint{#2}% + \else\if(\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELleftparen + \telprint{#2}% + \else\if)\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELrightparen + \telprint{#2}% + \else\if+\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELplus + \telprint{#2}% + \else\def\TELtemp{~}\ifx\TELtemp\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELtilde + \telprint{#2}% + \else + \TELtoks=\expandafter{\the\TELtoks#1}% + \TELsplit#2{}\TELsplitEND + \fi\fi\fi\fi\fi\fi\fi + \fi +} + +\DeclareRobustCommand*{\telprint}[1]{% + \TELtoks={}% + \TELsplit#1{}\TELsplitEND +} + +\TELreset\let\TELreset=\UnDeFiNeD + +\endinput + +% _History_ +% * Version 1.0 vom 28.11.1996 +% - Erste lauffaehige Version. +% - Nur '-' und '/' als zulaessige Sonderzeichen. +% * Version 1.1 vom 16.09.1997 +% - Dokumentation und Kommentare (Posting in de.comp.text.tex). +% - Erweiterung um Sonderzeichen '(', ')', '+', '~' und ' '. +% - Trennungsverhinderung am "hyphen". +% * Version 1.2 vom 16.10.1997 +% - Schutz vor wiederholtem Einlesen. +% - Unter LaTeX2e Nutzung des \DeclareRobustCommand-Features. +% * Version 1.3 vom 09.12.1997 +% - Temporaere Variable eingespart. +% * Version 1.4 vom 02.11.2004 +% - Fehler in der Dokumentation korrigiert. +% * Version 1.5 vom 30.09.2005 +% - Konfigurierbare Symbolde: '/', '(', ')', '+' und '~'. +% * Version 1.6 vom 12.02.2006 +% - LPPL 1.3. +% - Kurze Uebersicht in Englisch. +% - CTAN. +% +% _Dokumentation_ +% * \telprint#1 +% Der eigentliche Anwenderbefehl zur formatierten Ausgabe von +% Telefonnummern. Diese duerfen dabei nur als Zahlen angegeben +% werden(, da sie tokenweise analysiert werden). +% Als Trenn- oder Sonderzeichen werden unterstuetzt: +% '+', '/', '-', '(', ')', '~', ' ' +% Einfache Leerzeichen werden erkannt und durch Tilden ersetzt, um +% Trennungen in der Telefonnummer zu verhindern. (Man beachte aus +% gleichem Grunde die \hbox bei '-'.) +% Beispiele: +% \telprint{0761/12345} ==> 07\,61/1\,23\,45 +% \telprint{01234/567-89} ==> 0\,12\,34/5\,67\leavevmode\hbox{-}89 +% \telprint{+49 (6221) 297} ==> +49~(62\,21)~2\,97 +% +% Der Rest enthaelt eher Technisches: +% * \telspace#1 +% Mit diesem Befehl wird der Abstand zwischen den Zifferngruppen +% angegeben (Default: \,). +% (Durch \telspace{} kann dieser zusaetzliche Abstand abgestellt +% werden.) +% * \telhyphen#1 +% Dieser Befehl gibt die Art des Bindestriches, wie er ausgegeben +% werden soll. In der Eingabe darf jedoch nur der einfache +% Bindestrich stehen: +% \telprint{123-45}, jedoch NIE \telprint{123--45}! +% Kopka-Bindestrich-Fans geben an: +% \telhyphen{\leavevmode\hbox{--}} +% * \telslash#1, \telleftparen#1, \telrightparen#1, \telplus#1, +% \teltilde +% Diese Befehle konfigurieren die Zeichen '/', '(', ')', '+' +% und '~'. Sie funktionieren analog zu \telhyphen. +% * \telnumber#1 +% Richtung interner Befehl: Er dient dazu, eine Zifferngruppe +% in Zweiergruppen auszugeben. +% Die einzelnen Zahlen werden im Tokenregister \TELtoks +% gespeichert. Abwechselnd werden dabei zwischen zwei Token +% (Zahlen) \TELx bzw. \TELy eingefuegt, abhaengig von dem +% wechselnden Wert von \TELswitch. Zum Schluss kann dann einfach +% festgestellt werden ob die Nummer nun eine geradzahlige oder +% ungeradzahlige Zahl von Ziffern aufwies. Dem entsprechend wird +% \TELx mit dem Zusatzabstand belegt und \TELy leer definiert +% oder umgekehrt. ) +% * \TEL... interne Befehle, Technisches: +% \TELsplit dient zur Aufteilung einer zusammengesetzten +% Telefonnummer (Vorwahl, Hauptnummer, Nebenstelle). In dieser +% Implementation werden als Trennzeichen nur '/' und '-' erkannt. +% Die einzelnen Bestandteile wie Vorwahl werden dann dem Befehl +% \telnumber zur Formatierung uebergeben. +% * Die Erkennung von einfachen Leerzeichen ist um einiges +% schwieriger: Die Tokentrennung ueber Parameter #1#2 funktioniert +% nicht fuer einfache Leerzeichen, da TeX sie _niemals_ als +% eigenstaendige Argumente behandelt!!! (The TeXbook, Chapter 20, +% p. 201) +% (Anmerkung am Rande: Deshalb funktionieren die entsprechenden +% Tokenmakros auf S. 149 des Buches "Einfuehrung in TeX" von +% N. Schwarz (3. Aufl.) nicht, wenn im Tokenregister als erstes +% ein einfaches Leerzeichen steht!) +% |