\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrartcl} \usepackage{tudscrtutorial} \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} \usepackage[T1]{fontenc} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {~}{{\textasciitilde}}1 {ß}{{\ss}}1 } \usepackage{mathswap} \usepackage{bookmark} \begin{document} \begin{Bundle}{\Package{mathswap}} \date{07.11.2016} \author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}} \title{Änderung der Trennzeichen im Mathematikmodus} \makeatletter \begingroup% \def\and{, }% \let\thanks\@gobble% \let\footnote\@gobble% \hypersetup{% pdfauthor = {\@author},% pdftitle = {\@title},% pdfsubject = {Mathematiksatz in \hologo{LaTeXe}},% pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},% }% \endgroup% \markright{\@title} \makeatother \StartTutorial[% Werden in einer wissenschaftlichen Abhandlung vielerlei Daten importiert und beispielsweise tabellarisch dargestellt, kann es durchaus sein, dass diese importierten Datensätze bezüglich der darin enthaltenen Gruppierungs- und Dezimaltrennzeichen nicht dem Zahlenformat entsprechen, welches für die verwendete Dokumentsprache normalerweise notwendig wäre. Dieses Tutorial beschäftigt sich mit den typografischen Eigenheiten von Gruppierungs- und Dezimaltrennzeichen bei der Angabe von Zahlen in einem \hologo{LaTeXe}"=Dokument. Sowohl bei der Einbindung von externen Daten als auch bei der Erstellung von fremdsprachigen Dokumenten ist dies ein durchaus relevantes Thema. Um sich die manuelle Konvertierung der Daten zu ersparen, kann alternativ dazu die Möglichkeit genutzt werden, dies mit Hilfe von \hologo{LaTeXe} selbst zu bewerkstelligen. Es wird beschrieben, wie das \TUDScript-Paket \Package{mathswap}'manual' für diese Zwecke genutzt werden kann. Wird es in einer der \TUDScript-Klassen geladen, so wird das angenommene Zahlenformat an die gewählte Dokumentsprache angepasst. Alternativ dazu kann auch das Paket \Package{ionumbers}()'manual' verwendet werden. ] Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse als auch die für jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach sinnvollen Pakete geladen. % \begin{Preamble} \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrartcl}% andere Klassen sind möglich \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{microtype} \end{Preamble} % Zusätzlich wird das Paket \Package{mathswap}'manual' aus dem \TUDScript-Bundle geladen, welches die Änderung der Gruppierungs- und Dezimaltrennzeichen im Mathematikmodus ermöglicht. Dadurch werden einerseits Zahlen im zur jeweiligen Dokumentsprache gehörigen Format typografisch korrekt gesetzt. Andererseits ist es so möglich, Zahlen im englischen Format typografisch korrekt in deutschen Texten zu setzen~-- et vice versa. % \begin{Preamble} \usepackage{mathswap} \end{Preamble} % \addsec{Typografisch korrekte Ausgabe für deutschsprachige Dokumente} % Für dieses Tutorial wird zunächst angenommen, dass die wissenschaftlichen Abhandlung in deutscher Sprache verfasst wird. Ohne die Nutzung eines speziellen Paketes zur Ausgabeformatierung von Zahlen werden diese durch \hologo{LaTeXe} im mathematischen Modus bei der Angabe im deutschen Zahlenformat~-- Punkt~(\PValue{.}) als Gruppierungs- und Komma~(\PValue{,}) als Dezimaltrennzeichen~-- folgendermaßen ausgegeben:% \footnote{% Da in der Präambel dieses Dokumentes das Paket \Package{mathswap}'manual' bereits geladen wurde, wird mit \Macro{mathswapoff}'manual' auf das Standardverhalten von \hologo{LaTeXe} geschaltet. Die Funktionalität wird mit \Macro{mathswapon}'manual' wieder aktiviert.% } % \CodePreamble{% Ohne \Package{mathswap}'manual' keine typografische Zifferngruppierung% } \begin{Trunk*} \mathswapoff \(4.523,58\) \mathswapon \end{Trunk*} % Mit dem Paket \Package{mathswap}'manual' wird das Ziel verfolgt, unabhängig vom genutzten Zahlenformat für die Eingabe, eine typografisch korrekte Ausgabe zu erzeugen. Wird das Paket zusammen mit einer \TUDScript-Klasse verwendet, werden die Gruppierungs- und Dezimaltrennzeichen bei der Eingabe im Mathematikmodus sprachabhängig interpretiert. Bei der Nutzung einer \KOMAScript-Dokumentklasse respektive einer \hologo{LaTeX}-Standardklasse werden diese im Mathematikmodus immer nach dem englischen Zahlenformat~-- Komma~(\PValue{,}) als Gruppierungs- und Punkt~(\PValue{,}) als Dezimaltrennzeichen~-- betrachtet. Da dieses Dokument mit einer \TUDScript-Klasse (\TUDClassName) gesetzt wird und die Spracheinstellung~\PValue{ngerman} gewählt wurde, wird für die folgenden Zahlen das deutsche Eingabeformat angenommen. Wird nun die bereits zuvor verwendete Zahl bei aktiver Funktionalität von \Package{mathswap}'manual' im Mathematikmodus angegeben werden, so wird diese den typografischen Konventionen folgend~-- halbes Leerzeichen zur Zahlengruppierung und Komma ohne umgebenden Leerraum als Dezimaltrennzeichen~-- entsprechend ausgegeben: % \CodePreamble{% Zifferngruppierung korrekt (Spracheinstellung~\PValue{ngerman})% } \begin{Trunk*} \(4.523,58\) \end{Trunk*} % Wird die gleiche Zahl in englischer Formatierung angegeben, funktioniert dies nicht mehr: % \CodePreamble{% Zifferngruppierung falsch (Spracheinstellung~\PValue{ngerman})% } \begin{Trunk*} \(4,523.58\) \end{Trunk*} % Um nun Zahlen, welche in englischer Formatierung eingegeben oder importiert werden, in deutschsprachigen Dokumenten typografisch korrekt auszugeben, können die beiden Befehle \Macro{commaswap}[\PParameter{\dots}]'manual' sowie \Macro{dotswap}[\PParameter{\dots}]'manual' genutzt werden. Mit diesen lässt sich festlegen, wie die im Mathematikmodus zur Zifferngruppierung eingegeben Trennzeichen~-- Komma~(\PValue{,}) und Punkt~(\PValue{.})~-- substituiert werden sollen, um damit die gewünschte Typografie zu erhalten. Die Argumente der beiden Befehle geben also an, wodurch im mathematischen Modus Komma und Punkt bei der Ausgabe ersetzt werden sollen. Im englischen Zahlenformat wird bei der Eingabe das Komma~(\PValue{,}) als Gruppierungs- und der Punkt~(\PValue{.}) als Dezimaltrennzeichen genutzt. Bei der Ausgabe für deutschsprachige Dokumente nach den typografischen Konventionen muss folglich das Komma durch ein halbes Leerzeichen (\Macro*{,}) ersetzt werden. Dies lässt sich mit \Macro{commaswap}[\PParameter{\Macro*{,}}] bewerkstelligen. Der Punkt ist demzufolge mit einem Komma durch die Angabe von \Macro{dotswap}[\PParameter{,}] zu ersetzen:% \footnote{% Die Verwendung von \Macro*{begingroup} und \Macro*{endgroup} führt hierbei dazu, dass die Änderungen der beiden Trennzeichen nur lokal innerhalb dieser Gruppe erfolgt. } % \CodePreamble{% Englisches Zahlenformat in korrekter deutscher Zifferngruppierung% } \begin{Trunk*} \begingroup \commaswap{\,} \dotswap{,} \(4,523.58\) \endgroup \end{Trunk*} % Somit können in einem deutschsprachigen Dokument Zahlen im englischen Format problemlos verwendet beziehungsweise importiert und dennoch typografisch korrekt gesetzt werden. % \addsec{Typografisch korrekte Ausgabe für englischsprachige Dokumente} % Wird das Paket \Package{mathswap}'manual' zusammen mit einer \TUDScript-Klasse verwendet, werden die Gruppierungs- und Dezimaltrennzeichen im Mathematikmodus sprachabhängig definiert. Wird also die Dokumentsprache auf \PValue{english} gesetzt, so werden die Trennzeichen standardmäßig nach dem englischsprachigen Zahlenformat interpretiert. % \CodePreamble{% Zifferngruppierung (Spracheinstellung~\PValue{english})% } \begin{Trunk*} \begingroup \selectlanguage{english}% \(4,523.58\)\newline \(4.523,58\) \endgroup \end{Trunk*} % Für englischsprachige Dokumente wird für die Auszeichnung der Gruppierung von Ziffern ebenfalls ein halbes Leerzeichen und als Dezimaltrennzeichen ein Punkt verwendet. Werden nun Zahlen in der deutschen Formatierung eingelesen, so muss folglich das Komma durch einen Punkt \Macro{commaswap}[\PParameter{.}] und der Punkt mit \Macro{dotswap}[\PParameter{\Macro*{,}}] durch ein halbes Leerzeichen ersetzt werden:% % \CodePreamble{% Deutsches Zahlenformat in korrekter englischer Zifferngruppierung% } \begin{Trunk*} \begingroup \selectlanguage{english}% \commaswap{.} \dotswap{\,} \(4.523,58\) \endgroup \end{Trunk*} % \FinishTutorial \ListOfToDo \end{Bundle} \end{document}