\documentclass[english,ngerman]{tudscrartcl}
\iftutex
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
\fi

\usepackage{tudscrtutorial}
\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 behandelt die 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}
\documentclass[english,ngerman]{tudscrartcl}% andere Klassen möglich
\usepackage{iftex}
\iftutex
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
\fi
\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}
