summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathtype.tex
blob: 9221a1f0e400773da03a250c25bf83e064083331 (plain)
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
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass[english,ngerman]{tudscrartcl}
\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[T1]{fontenc}
\usepackage{tudscrman}
\lstset{%
  inputencoding=utf8,extendedchars=true,
  literate=%
    {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
    {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
    {~}{{\textasciitilde}}1 {ß}{{\ss}}1
}

\usepackage{mathtools}

\begin{document}
\date{17.12.2014}
\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*}
%
Wie man sieht, ist dabei eine ganze Menge Handarbeit vonnöten. Allerdings lässt 
sich das relativ gut vereinfachen lassen. Zu diesem Zwecke wird ein Befehl 
\Macro{ind}\PParameter{\dots} für das Setzen von Indizes bei Formelzeichen 
definiert. Danach kann man sich~-- wenn man das für nötig und sinnvoll 
erachtet~-- noch zusätzliche Befehle für häufig verwendete Ausdrücke schnitzen. 
Als Beispiel wird das schon eben genutzte Drehmoment \ensuremath{M} verwendet. 
Hierfür könnte man Folgendes definieren:
%
\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 man den Befehl aufgrund der Verwendung von 
\Macro{ensuremath}\PParameter{\dots} nun auch im Fließtext verwenden kann, 
beispielsweise wie hier \M{VM_{ind}} (\Macro{M}\PParameter{VM\_\{ind\}}) für 
das induzierte Moment einer Verbrennungskraftmaschine.

Möchte man es sich noch bequemer machen, strikt man sich noch eine Lösung, in
der man~-- im Gegensatz zum \hologo{LaTeX}"=Standardfall~-- \textbf{nach} dem
obligatorischen Argument noch ein optionales für einen weiteren Index angeben
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 \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
      \IfNoValueTF{#2}{}{_{#2}}
    }%
  }%
}
\end{Hint}
%
\FinishTutorial
\end{document}