1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
\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{mathtools}
\usepackage{bookmark}
\begin{document}
\date{20.11.2015}
\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\Email{\tudscrmail}}}
\title{Ein Beitrag zum mathematischen Satz in \NoCaseChange{\hologo{LaTeXe}}}
\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
%
\begin{Preamble}
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass[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{amsmath} geladen, welches unter anderem die
in diesem Tutorial verwendeten Mathematikumgebungen \Environment{equation},
\Environment{gathered} und \Environment{aligned} zur Verfügung stellt.
%
\begin{Preamble}
\usepackage{amsmath}
\end{Preamble}
%
Ein guter Mathematiksatz ist in \hologo{LaTeX} durchaus Sisyphusarbeit. Wenn
mikrotypografisch alles richtig gemacht werden soll, gibt es einiges zu
beachten. Generell gilt, dass Variablen kursiv, Bezeichnungen und Konstanten
aufrecht gesetzt werden. Um beschreibende Indizes bei Formelzeichen richtig zu
setzen, ist ohne weitere Maßnahmen die exzessive Nutzung der beiden Befehle
\Macro{mathrm}[\PParameter{\dots}] und \Macro{mathit}[\PParameter{\dots}] wohl
oder übel notwendig. Somit wird aus:
%
\begin{Trunk*}
\begin{equation*}
\begin{gathered}
M_{EM} = \frac{M_{Rad}}{i_g \cdot i_A} - M_{VM} \\
\textrm{für }
\begin{aligned}
0\leq M_{VM}\leq M_{VMmax} \\
M_{EMmin}\leq M_{EM}\leq M_{EMmax}
\end{aligned}
\end{gathered}
\end{equation*}
\end{Trunk*}
%
mit ziemlich viel Anpassungsarbeit:
%
\begin{Trunk*}
\begin{equation*}
\begin{gathered}
M_\mathrm{EM} = \frac{M_\mathrm{Rad}}{i_g \cdot i_A} - M_\mathrm{VM} \\
\textrm{für }
\begin{aligned}
0\leq M_\mathrm{VM}\leq M_\mathrm{VM_{max}} \\
M_\mathrm{EM_{min}}\leq M_\mathrm{EM}\leq M_\mathrm{EM_{max}}
\end{aligned}
\end{gathered}
\end{equation*}
\end{Trunk*}
%
Augenscheinlich ist dabei eine sehr viel Handarbeit notwendig. Allerdings
lässt sich dies relativ gut vereinfachen. Zu diesem Zwecke wird ein Befehl
\Macro{ind}[\PParameter{\dots}] für das Setzen von Indizes bei Formelzeichen
definiert. Danach können~-- wenn dies für nötig und sinnvoll erachtet wird~--
noch zusätzliche Befehle für häufig verwendete Ausdrücke definiert werden. Als
Beispiel wird das schon eben genutzte Drehmoment \ensuremath{M} verwendet.
Hierfür wäre folgende Definition möglich:
%
\CodeHook{\let\newcommand\renewcommand}
\begin{Trunk*}
\newcommand*{\ind}[1]{\ensuremath{_\mathrm{#1}}}
\newcommand*{\M}[1]{\ensuremath{M\ind{#1}}}
\end{Trunk*}
%
und damit diese Ausgabe erzeugen:
%
\begin{Trunk*}
\begin{equation*}
\begin{gathered}
\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
\textrm{für }
\begin{aligned}
0\leq \M{VM}\leq \M{VM_{max}} \\
\M{EM_{min}}\leq \M{EM}\leq \M{EM_{max}}
\end{aligned}
\end{gathered}
\end{equation*}
\end{Trunk*}
%
Netter Nebeneffekt ist, dass dieser Befehl aufgrund der Verwendung von
\Macro{ensuremath}[\PParameter{\dots}] nun auch im Fließtext verwenden werden
kann, beispielsweise für das induzierte Moment einer Verbrennungskraftmaschine
\M{VM_{ind}} (\Macro{M}[\PParameter{VM\_\PParameter{ind}}]).
Für noch mehr Bequemlichkeit bei der Nutzung kann eine Lösung gefunden werden,
mit welcher~-- im Gegensatz zur Standardbefehlsdefinition in \hologo{LaTeXe}~--
\textbf{nach} dem obligatorischen Argument noch ein optionales für einen
weiteren Index angegeben werden kann, um damit der natürlichen Schreibweise zu
entsprechen. Es wird der Befehl \Macro{M} so definiert, das dieser entweder mit
\Macro{M}[\Parameter{Index}] oder in der Variante mit nachgelagertem optionalen
Argument \Macro{M}[\Parameter{Index}\OParameter{Indexindex}] genutzt werden
kann.
%
\CodeHook{\let\newcommand\renewcommand}
\begin{Trunk*}
\renewcommand*{\ind}[1]{\ensuremath{_\mathrm{#1}}}
\makeatletter
\renewcommand*{\M}[1]{\@ifnextchar[{\o@M{#1}}{\n@M{#1}}}
\newcommand*{\n@M}{}
\newcommand*{\o@M}{}
\def\n@M#1{\ensuremath{M\ind{#1}}}
\def\o@M#1[#2]{\ensuremath{M\ind{#1_{#2}}}}
\makeatother
\end{Trunk*}
%
Somit vereinfacht sich das zu Beginn vorgestellte Beispiel recht deutlich:
%
\begin{Trunk*}
\begin{equation*}
\begin{gathered}
\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
\textrm{für }
\begin{aligned}
0\leq \M{VM}\leq \M{VM}[max] \\
\M{EM}[min]\leq \M{EM}\leq \M{EM}[max]
\end{aligned}
\end{gathered}
\end{equation*}
\end{Trunk*}
%
Das Definieren von \Macro{M}[\Parameter{Index}\OParameter{Indexindex}] mit
angehängtem optionalen Argument ist ehrlich gesagt nur ein wenig Spielerei und
soll zeigen, wie dies prinzipiell mit \hologo{LaTeXe}"=Mitteln funktioniert.
Das Paket \Package{xparse} könnte alternativ zum hier vorgestellten Vorgehen
für die Befehlsdeklaration des optionalen \textbf{nach} dem obligatorischen
Argument genutzt werden. Damit würde die Befehlsdeklaration für \Macro{M}
folgendermaßen lauten:
\begin{Hint}
\NewDocumentCommand \M { m o } {%
\ensuremath{%
M\ind{%
#1\IfValueT{#2}{_{#2}}%
}%
}%
}
\end{Hint}
%
\FinishTutorial
\ListOfToDo
\end{document}
|