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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
|
\chapter{Unerlässliche und beachtenswerte Pakete}
\manualhyperdef{sec:packages}
\index{Kompatibilität!Pakete}
\section{Von den neuen Hauptklassen benötigte Pakete}
\label{sec:packages:needed}
\subsection{Erforderliche Pakete bei der Schriftinstallation}
%
Für die Installation der Schriften sind die folgend genannten Pakete von
\emph{essentieller} Bedeutung und daher \emph{zwingend} notwendig. Das
Vorhandensein dieser wird durch die jeweiligen Schriftinstallationsskripte
(siehe~\autoref{sec:install}) geprüft und die Installation beim Fehlen eines
oder mehrerer Pakete mit einer entsprechenden Warnung abgebrochen.
%
\begin{packages}
\item[fontinst]
Dieses Paket wird für die Installation der Schriften \Univers sowie \DIN
benötigt.
\item[cmbright]
Alle mathematischen Glyphen und Symbole, die nicht in den \Univers-Schriften
enthalten sind, werden diesem Paket entnommen.
\item[iwona]
Sowohl für die \Univers-Schriftfamilie als auch für \DIN werden fehlenden
Glyphen und Symbole hieraus entnommen.
\end{packages}
%
Zusätzlich werden die \texttt{Schreibmaschinenschriften} aus dem Paket
\Package{lmodern} verwendet.
\subsection{Notwendige Pakete für die Verwendung der Hauptklassen}
In diesem \autorefname werden alle Pakete genannt, die von den neuen Klassen
zwingend benötigt und geladen werden, um den Anwender das mehrmalige Laden
dieser Pakete oder mögliche Konflikte mit anderen Paketen zu ersparen.
%
\begin{packages}
\item[scrbase](koma-script)
Dieses Paket gehört zum \KOMAScript-Bundle und erlaubt das Definieren von
Klassenoptionen im Stil von \KOMAScript, welche auch noch nach dem Laden der
Klasse mit den Befehlen \Macro{TUDoption} und \Macro{TUDoptions} geändert
werden können. Von diesem wird das Paket \Package{keyval} geladen, welches
das Definieren von Klassen"~ und Paketoptionen sowie Parametern nach dem
Schlüssel"=Wert"=Prinzip ermöglicht.
\item[kvsetkeys]
Hiermit wird das von \Package{scrbase} geladene Paket \Package{keyval}
verbessert. Unter anderem kann das Verhalten für einen übergebenen,
unbekannten Schlüssel festgelegt werden.
\item[scrlayer-scrpage](koma-script)
\ChangedAt{v2.02!\Package{scrlayer-scrpage}: Für Verwendung notwendig}
Dieses \KOMAScript-Paket wird für die \PageStyle{tudheadings}-Seitenstile
benötigt.
\item[etoolbox]
Es werden viele Funktionen zum Testen und zur Ablaufkontrolle bereitgestellt
und das einfache Manipulieren vorhandener Makros ermöglicht.
\item[geometry]\index{Satzspiegel}
Das Paket ist essentiell für die \TUDScript-Klassen. Es wird zum Festlegen
der Seitenränder respektive des Satzspiegels verwendet.
\item[textcase]\index{Schriftauszeichnung}
Mit \Macro{MakeTextUppercase} wird die Großschreibung der Überschriften in
\DIN erzwungen. Im \emph{Ausnahmefall} kann dies mit \Macro{NoCaseChange}
unterbunden werden.
\item[graphicx]\index{Grafiken}
Dies ist das De-facto-Standard-Paket zum Einbinden von Grafiken. Zum Setzen
des Logos der \TnUD im Kopf wird \Macro{includegraphics} genutzt.
\item[xcolor]\index{Farben}
Damit werden die Farben des \CDs zur Verwendung im Dokument definiert.
Genaueres ist bei der Beschreibung von \Package{tudscrcolor}'auto' zu finden.
\item[eviron]\index{Befehle!Deklaration}
Es wird eine verbesserte Deklaration von Umgebungen ermöglicht, bei der auch
beim Abschluss der Umgebung auf die übergebenen Parameter zugegriffen werden
kann. Dies wird die Neugestaltung der \Environment{abstract}"=Umgebung
benötigt. Das Paket lädt \Package{trimspaces}, womit das Entfernen von
überflüssigen Leerraum um einen Strings ermöglicht wird.
\item[afterpage]
\ChangedAt{v2.02!\Package{afterpage}: Für Verwendung notwendig}
Der Befehl \Macro{afterpage}\Parameter{\dots} kann genutzt werden, um den
Inhalt aus dessen Argument direkt nach der Ausgabe der aktuellen Seite
auszuführen. Es wird für den Titelkopf im \CD für das zweispaltige Layout
benötigt (\autoref{sec:title}).
\end{packages}
%
Möchten Sie eines der hier aufgezählten Pakete selber mit bestimmten Optionen
laden, so sollten diese bereits \emph{vor} der Definition der Dokumentklasse an
das Paket weitergereicht werden.
%
\begin{Example}
Das Weiterreichen von Optionen an Pakete muss folgendermaßen erfolgen:
\begin{Code}[escapechar=§]
\PassOptionsToPackage§\Parameter{Optionenliste}\Parameter{Paket}§
\documentclass§\OParameter{Klassenoptionen}\PParameter{tudscr\dots}§
\end{Code}
\end{Example}
\section{Durch \TUDScript direkt unterstütze Pakete}
%
\begin{packages}
\item[hyperref]\index{Lesezeichen}\index{Querverweise}
Hiermit können in einem PDF-Dokument Lesezeichen, Querverweise und
Hyperlinks erstellt werden. Wird es geladen, sind außerdem die Option
\Option{tudbookmarks} sowie der Befehl \Macro{tudbookmark} nutzbar. Das
Paket \Package{bookmark} erweitert die Unterstützung nochmals. Beide
genannten Pakete sollten~-- bis auf sehr wenige Ausnahmen wie beispielsweise
\Package{glossaries}~-- als letztes in der Präambel eingebunden werden.
\item[isodate]\index{Datum|?}
Dieses Paket formatiert mit \Macro{printdate}\Parameter{Datum} die Ausgabe
eines Datums automatisch in ein spezifiziertes Format. Wird es geladen,
werden alle Datumsfelder, welche durch die \TUDScript-Klassen definiert
wurden,%
\footnote{%
\Macro{date}, \Macro{dateofbirth}, \Macro{defensedate}, \Macro{duedate},
\Macro{issuedate}
}
in diesem Format ausgegeben.
\item[multicol]\index{Zweispaltensatz|?}
Hiermit kann jeglicher beliebiger Inhalt in zwei oder mehr Spalten ausgegeben
werden, wobei~-- im Gegensatz zur \hologo{LaTeX}-Option \Option{twocolumn}~--
für einen Spaltenausgleich gesorgt wird. Unterstützt wird das Paket innerhalb
der Umgebungen \Environment{abstract} und \Environment{tudpage}.
\item[quoting]\index{Zitate}
\hologo{LaTeX} bietet von Haus aus \emph{zwei} verschiedene Umgebungen für
Zitate und ähnliches. Beide sind in ihrer Ausprägung starr und ignorieren
beispielsweise die Einstellungen von \Option{parskip}. Dies wird durch die
Umgebung \Environment{quoting} verbessert. Wird das Paket geladen, kommt
diese gegebenenfalls innerhalb der \Environment{abstract}"=Umgebung zum
Einsatz.
\item[ragged2e]\index{Worttrennung}
Das Paket verbessert den Flattersatz, indem für diesen die Worttrennung
aktiviert wird.
\item[pagecolor]\index{Farben}
Mit dem Paket kann die Hintergrundfarbe der Seiten im Dokument geändert
werden. Nach der Ausgabe einer farbigen Titel"~, Teile"~, oder Kapitelseite
wird auf diese zurückgeschaltet.
\end{packages}
\section{Empfehlenswerte Pakete}
\label{sec:packages:recommended}
In diesem \autorefname wird eine Vielzahl an Paketen~-- zumeist kurz~--
vorgestellt, welche sich für mich persönlich bei der Arbeit mit \hologo{LaTeX}
bewährt haben. Einige davon werden außerdem im Tutorial \Tutorial{treatise} in
ihrer Anwendung beschrieben. Für detaillierte Informationen sowie bei Fragen zu
den einzelnen Paketen sollte die jeweilige Dokumentation zu Rate gezogen
werden,\footnote{Kommandozeile/Terminal: \Path{texdoc\,\PName{Paketname}}}
das Lesen der hier gegebenen Kurzbeschreibung ersetzt dies in keinem Fall.
\subsection{Pakete zur Verwendung in jedem Dokument}
Die hier vorgestellten Pakete gehören meiner Meinung nach in die Präambel eines
jeden Dokumentes. Egal, in welcher Sprache das Dokument verfasst wird, sollte
diese mit dem Paket \Package{babel} definiert werden~-- auch wenn dies
Englisch ist. Für deutschsprachige Dokumente ist für eine annehmbare
Worttrennung das Paket \Package{hyphsubst} unbedingt zu verwenden.
\begin{packages}
\item[fontenc]\index{Zeichensatzkodierung}
Das Paket erlaubt Festlegung der Zeichensatzkodierung des Ausgabefonts. Als
Voreinstellung ist die Ausgabe als 7"~bit kodierte Schrift gewählt, was unter
anderem dazu führt, dass keine echten Umlaute im erzeugten PDF-Dokument
verwendet werden. Um auf 8"~bit"~Schriften zu schalten, sollte man
\Macro*{usepackage}\POParameter{T1}\PParameter{fontenc} nutzen.
\item[selinput]\index{Eingabekodierung}
Hiermit erfolgt die (automatische) Festlegung der Eingabekodierung. Diese ist
vom genutzten \hyperref[sec:tips:editor]{Editors (\autoref{sec:tips:editor})}
und den darin gewählten Einstellung abhängig. Mit:
\begin{Code}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\end{Code}\vspace{-\baselineskip}%
wird es verwendet. Dies macht den Quelltext portabel, womit beispielsweise
einfach via Copy~\&~Paste ein \hrfn{http://www.komascript.de/minimalbeispiel}%
{Minimalbeispiel} bei Problemstellungen in einem Forum bereitgestellt werden
kann. Alternativ dazu lässt sich mit dem Paket \Package{inputenc} die zu
verwendende Eingabekodierung manuell einstellen
(\Macro*{usepackage}\OParameter{Eingabekodierung})\PParameter{inputenc}).
\item[babel]\index{Sprachunterstützung}\index{Bezeichner}
Mit diesem Paket erfolgt die Einstellung der im Dokument verwendeten
Sprache(n). Bei mehreren angegebenen Sprachen ist die zuletzt geladene die
Hauptsprache des Dokumentes. Die gewünschten Sprachen sollten als nicht als
Paketoption sondern als Klassenoption und gesetzt werden, damit auch andere
Pakete auf die Spracheinstellungen zugreifen können. Für deutschsprachige
Dokumente ist die Option \Option{ngerman} für die neue oder \Option{german}
für die alte deutsche Rechtschreibung zu verwenden.
Mit dem Laden von \Package{babel} und der dazugehörigen Sprachen werden
sowohl die Trennmuster als auch die sprachabhängigen Bezeichner angepasst.
Von einer Verwendung der obsoleten Pakete \Package{german} beziehungsweise
\Package{ngerman} anstelle von \Package{babel} wird abgeraten. Für
\hologo{LuaLaTeX} und \hologo{XeLaTeX} kann das Paket \Package{polyglossia}
genutzt werden.
\item[microtype]\index{Typographie}
Dieses Paket kümmert sich um den optischen Randausgleich%
\footnote{englisch: protrusion, margin kerning}
und das Nivellieren der Wortzwischenräume%
\footnote{englisch: font expansion}
im Dokument. Es funktioniert nicht mit der klassischen \hologo{TeX}-Engine,
wohl jedoch mit \hologo{pdfTeX} als auch \hologo{LuaTeX} sowie \hologo{XeTeX}.
\item[hyphsubst]\index{Worttrennung|!}
Die möglichen Trennstellen von Wörtern wird von \hologo{LaTeX} mithilfe
eines Algorithmus berechnet. Dieser wird für deutschsprachige Texte mit dem
Paket \Package{hyphsubst} entscheidend verbessert. Es muss bereits \emph{vor}
der Dokumentklasse wie folgt geladen werden:
\begin{Code}[escapechar=§]
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\end{Code}\vspace{-\baselineskip}%
In \autoref{sec:tips:hyphenation} wird genauer auf das Zusammenspiel von
\Package{hyphsubst} und \Package{babel} sowie \Package{fontenc} eingegangen,
ein Blick dahin wird dringend empfohlen. Zusätzliche werden dort weitere
Hinweise für eine verbesserte Worttrennung gegeben.
\end{packages}
\subsection{Pakete zur situativen Verwendung}
Die nachfolgenden Pakete sollten nicht zwangsweise in jedem Dokument geladen
werden sondern nur, falls dies auch tatsächlich notwendig ist. Zur besseren
Übersicht wurde versucht, diese thematisch passend zu gruppieren. Daraus lässt
sich keinerlei Wertung bezüglich ihrer Nützlichkeit oder meiner persönlichen
Wertschätzung ableiten.
\subsubsection{Typographie und Layout}
\index{Typographie}
%
\begin{packages}
\item[setspace]\index{Zeilenabstand}
Die Vergrößerung des Zeilenabstandes wird:
%
\begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.]
\itempackages viel zu häufig und völlig unnötig gefordert und
\itempackages schließlich auch noch zu groß gewählt.
\end{enumerate}
%
Die Forderung nach Erhöhung des Zeilenabstandes~-- in der Typographie als
Durchschuss bezeichnet~-- kommt noch aus den Zeiten der Textverarbeitung mit
der Schreibmaschine. Ein einzeiliger Zeilenabstand bedeutete hier, dass die
Unterlängen der oberen Zeile genau auf der Höhe der Oberlängen der folgenden
Zeile lagen. Ein anderthalbzeiliger Zeilenabstand erzielte hier somit einen
akzeptablen Durchschuss. Eine Erhöhung des Durchschusses bei der Verwendung
von \hologo{LaTeX} ist an und für sich nicht notwendig. Sinnvoll ist dies
nur, wenn im Fließtext serifenlose Schriften zum Einsatz kommen, um die damit
verbundene schlechte Lesbarkeit etwas zu verbessern.
Ist die Erhöhung des Durchschusses wirklich notwendig, sollte das Paket
\Package{setspace} verwendet werden. Dieses stellt den Befehl
\Macro{setstretch}\Parameter{Faktor} zur Verfügung, mit dem der Durchschuss
beziehungsweise Zeilenabstand angepasst werden kann. Der Wert des Faktors
ist standardmäßig auf~1 gestellt und sollte maximal bis~1.25 vergrößert
werden. Der Befehl \Macro*{onehalfspacing} aus diesem Paket setzt diesen Wert
auf eben genau~1.25. Allerdings ist hier anzumerken, dass die Vergrößerung
des Zeilenabstandes~-- so wie ich es mir angelesen habe~-- aus der Sicht
eines Typographen keine Spielerei ist sondern vielmehr allein der Lesbarkeit
des Textes dient und möglichst gering ausfallen sollte.
Ziel ist es, beim Lesen nach dem Beenden der aktuellen Zeile das Auffinden
der neuen Zeile zu vereinfachen. Bei Serifen ist dies durch die Betonung der
Grundlinie sehr gut möglich. Bei serifenlosen Schriften~-- wie der im \CD der
\TnUD verwendeten \Univers~-- ist dies schwieriger und ein erweiterter
Abstand der Zeilen kann dabei durchaus hilfreich sein. Jedoch sollte nicht
nach dem Motto \enquote{viel hilft viel} verfahren werden. In diesem Dokument
wurde als Faktor für den Zeilenabstand \Macro{setstretch}\PParameter{1.1}
gewählt. Nach einer Einstellung des Zeilenabstandes sollte der Satzspiegel
unbedingt mit \Macro{recalctypearea} neu berechnet werden. Siehe dazu auch
\autoref{sec:tips:headings} sowie \autoref{sec:tips:headline}.
\item[csquotes]\index{Zitate}
Das Paket stellt unter anderem den Befehl \Macro{enquote}\Parameter{Zitat}
zur Verfügung, welcher Anführungszeichen in Abhängigkeit der gewählten
Sprache setzt. Zusätzlich werden weitere Kommandos und Optionen für die
spezifischen Anforderungen des Zitierens bei wissenschaftlichen Arbeiten
angeboten. Außerdem wird es durch \Package{biblatex} unterstützt und sollte
zumindest bei dessen Verwendung geladen werden.
\item[noindentafter]
\ChangedAt{v2.02!\Package{noindentafter}: Beschreibung hinzugefügt}
Mit diesem Paket lassen sich automatische Absatzeinzüge für selbst zu
bestimmende Befehle und Umgebungen unterdrücken.
\item[xspace]\index{Befehle!Deklaration}
Mit \Package{xspace} kann bei der Definition eigener Makros der Befehl
\Macro{xspace} genutzt werden. Dieser setzt ein gegebenenfalls notwendiges
Leerzeichen automatisch. In \autoref{sec:tips:xspace} ist die Definition
eines solchen Befehls exemplarisch ausgeführt.
\item[ellipsis]\index{Befehle!Deklaration}
In \hologo{LaTeX} folgten den Befehlen für Auslassungspunkte (\Macro{dots}
und \Macro{textellipsis}) \emph{immer} ein Leerzeichen. Dies kann unter
Umständen unerwünscht sein. Mit dem Paket \Package{ellipsis} wird das
folgende Leerzeichen~-- im Gegensatz zum Standardverhalten~-- nur gesetzt,
wenn ein Satzzeichen und kein Buchstabe folgt. Siehe dazu auch
\autoref{sec:tips:dots}.
\item[xpunctuate]\index{Befehle!Deklaration}
Die Funktionalität von \Package{xspace} wird um die Beachtung von
Interpunktionen erweitert.
\itempackages[\href{http://www.ctan.org/pkg/delig}{\Application{DeLig}}]
\index{Typographie}\index{Ligaturen}
Hierbei handelt es sich um ein Java-Script, welches anhand eines Wörterbuches
falsche Ligaturen innerhalb eines Dokumentes automatisiert entfernt. Wird
\Univers verwendet ist dies jedoch nicht notwendig, da diese keinerlei
Ligaturen enthält, die insbesondere in deutschen Texten für einen guten Satz
manuell aufgelöst werden müssten.%
\footnote{%
Das sind ff, fi, fl, ffi, und ffl bei den \hologo{LaTeX}"=Standardschriften.
}
Mit \hologo{LuaLaTeX} als Dokumentprozessor kann alternativ dazu auch
\Package{selnolig} verwendet werden.
\item[balance]\index{Zweispaltensatz}
Dieses Paket ermöglicht einen Spaltenausgleich im Zweispaltensatz auf der
letzten Dokumentseite. Alternativ dazu kann auch \Package{multicol} verwendet
werden.
\end{packages}
\subsubsection{Rechtschreibung}
Für die Rechtschreibkontrolle zeichnet im Normalfall der verwendete Editor
verantwortlich. Dennoch gibt es einige wenige Pakete, welche sich diesem Thema
widmen. Diese sind jedoch lediglich nutzbar, wenn \hologo{LuaLaTeX} als
Dokumentprozessor genutzt wird.
\begin{packages}
\item[lua-check-hyphen]\index{Worttrennung}
Hiermit lassen sich mit \hologo{LuaLaTeX} Trennstellen am Zeilenende zur
Prüfung markieren. Zum Thema der \textit{korrekten Worttrennung} sei außerdem
auf \autoref{sec:tips:hyphenation} verwiesen.
\item[spelling]\index{Rechtschreibung}
Wird \hologo{LuaLaTeX} als Prozessor verwendet, wird mit diesem Paket der
reine Textanteil aus dem \hologo{LaTeX}"~Dokument extrahiert~-- wobei Makros
und aktive Zeichen entfernt werden~-- und in eine separate Textdatei
geschrieben. Anschließend kann diese Datei mit einer externen Software zur
Rechtschreibprüfung wie \Application{GNU Aspell} oder \Application{Hunspell}
analysiert werden. Wird durch dieses Programm eine Liste falsch geschriebener
Wörter ausgegeben, können diese mit \Package{spelling} im PDF"~Dokument
hervorgehoben werden.
\end{packages}
\subsubsection{Schriften und Sonderzeichen}
\begin{packages}
\item[lmodern](lm)\index{Schriftart}
Soll mit den klassischen \hologo{LaTeX}"=Standardschriften gearbeitet werden,
empfiehlt sich die Verwendung des Paketes \Package{lmodern}. Dieses
verbessert die Darstellung der Computer~Modern sowohl am Bildschirm als auch
beim finalen Druck.
\item[cfr-lm]\index{Schriftart}
Dieses experimentelle Paket liefert weitere Schriftschnitte für das Paket
\Package{lmodern}.
\item[newtx]
Es werden einige alternative Schriften sowohl für den Fließtext
(\textit{Times} und \textit{Helvetica}) als auch den Mathematikmodus
bereitgestellt.
\item[libertine]\index{Schriftart}
Das Paket stellt die Schriften Linux~Libertine und Linux~Biolinum zur
Verfügung. Um diese Schriftart auch für den Mathematikmodus verwenden zu
können, sollte \Package{newtxmath} aus dem \Package{newtx}-Bundle mit
\Macro*{usepackage}\POParameter{libertine}\PParameter{newtxmath} in der
Präambel eingebunden werden. Das Paket \Package{libgreek} enthält griechische
Buchstaben für Linux~Libertine.
\item[mweights]\index{Schrift!Stärke}
In \hologo{LaTeXe} existieren die drei Schriftfamilien für Serifenschriften
(\Macro{rmfamily}), serifenlose Schriften (\Macro{sffamily}) sowie die
Schreibmaschinenschriften (\Macro{ttfamily}). Deren Schriftstärke wird für
gewöhnlich mit den beiden Befehlen \Macro{mddefault} und \Macro{bfdefault}
einheitlich festgelegt. Bei der Verwendung unterschiedlicher Schriftpakete
kann es unter Umständen zu Problemen bei den Schriftstärken kommen. Das Paket
\Package{mweights} erlaubt die individuelle Definition der Schriftstärke für
jede der drei Schriftfamilien.
\item[fontspec]
\ChangedAt{v2.02!\Package{fontspec}: %
Beschreibung hinzugefügt{,} mit \Option{fontspec} nutzbar%
}%
Wird als Dokumentprozessor nicht \hologo{pdfLaTeX} sondern \hologo{XeLaTeX}
oder \hologo{LuaLaTeX} verwendet, können mit diesem Paket Systemschriften im
OpenType-Format eingebunden werden, womit sich die Auswahl der verwendbaren
Schriften in einem \hologo{LaTeX}"=Dokument stark erweitert. Das Paket wird
mit der Option \Option{fontspec} durch \TUDScript unterstützt.
\item[relsize]\index{Schrift!Größe}
Mithilfe dieses Paketes kann die Größe einer Textauszeichnung relativ zur
aktuell gewählten Schriftgröße gesetzt werden.
\item[textcomp]\index{Sonderzeichen}
Es werden zusätzliche Symbole und Sonderzeichen wie beispielsweise das
Promille- oder Eurozeichen sowie Pfeile für den Fließtext zur Verfügung
gestellt.
\end{packages}
%
Auch für die mathematischen Schriften gibt es einige nützliche Pakete.
\index{Mathematiksatz!Schrift}\index{Schrift!Mathematiksatz}
%
\begin{packages}
\item[sansmath]
Sollten die normalen \hologo{LaTeX}-Schriften Computer~Modern verwendet
werden, kann man dieses Paket zum serifenlosen Setzen mathematischer
Ausdrücke nutzen. Werden die Schriften des \CDs der \TnUD zusammen mit den
\TUDScript-Hauptklassen verwendet, sei auf die Option \Option{sansmath}
verwiesen.
\item[sfmath]
Diese Paket verfolgt ein ähnliches Ziel, kann jedoch im Gegensatz zu
\Package{sansmath} nicht nur für Computer~Modern sondern mit der
entsprechenden Option auch für Latin~Modern, Helvetica und
Computer~Modern~Bright verwendet werden.
\item[mathastext]
Mit dem Paket wird das Ziel verfolgt, aus der genutzten Schrift für den
Fließtext alle notwendigen Zeichen für den Mathematiksatz zu extrahieren.
\end{packages}
\subsubsection{Mathematiksatz}
\index{Mathematiksatz}
Dies sind Pakete, die Umgebungen und Befehle für den Mathematiksatz sowie das
Setzen von Einheiten und Zahlen im Allgemeinen anbieten.
\begin{packages}
\item[mathtools]
Dieses Paket stellt für das De-facto-Standard-Paket \Package{amsmath} für
Mathematikumgebungen Bugfixes zur Verfügung und erweitert dieses.
\item[bm]
Das Paket bietet mit \Macro{bm} eine Alternative zu \Macro{boldsymbol} im
\hrfn{http://tex.stackexchange.com/questions/3238}{Mathematiksatz}.
\end{packages}
%
Für das typographisch korrekte Setzen von Einheiten~-- ein halbes Leerzeichen
zwischen Zahl und \emph{aufrecht} gesetzter Einheit~-- gibt es zwei gut
nutzbare Pakete.
%
\begin{packages}\index{Einheiten}
\item[units]
Dies ist ein einfaches und sehr zweckdienliches Paket zum Setzen von
Einheiten und für die meisten Anforderungen völlig ausreichend.
\item[siunitx]
Dieses Paket ist in seinem Umfang im Vergleich deutlich erweitert. Neben
Einheiten können zusätzlich auch Zahlen typographisch korrekt gesetzt werden.
Die Ausgabe lässt sich in vielerlei Hinsicht an individuelle Bedürfnisse
anpassen. Für deutschsprachige Dokumenten sollte die Lokalisierung angegeben
werden. Mehr dazu in \autoref{sec:tips:siunitx}.
\end{packages}
%
Die korrekte Formatierung von Zahlen ist häufig ein Problem bei der Verwendung
von \hologo{LaTeX}. Insbesondere, wenn in einem deutschsprachigen Dokument
Daten im typischen englischsprachigen Format verwendet werden, kommt es zu
Problemen. Dafür wird im \TUDScript-Bundle das Paket \Package{mathswap}
bereitgestellt. Dennoch gibt es zu diesem auch Alternativen.
%
\begin{packages}\index{Trennzeichen}
\item[icomma]
Wird im Mathematikmodus nach dem Komma ein Leerzeichen gesetzt, wird dies
bei der Ausgabe beachtet. Der Verfasser muss sich demzufolge jederzeit
selbst um die typographisch korrekte Ausgabe kümmern.
\item[ziffer]
Für deutschsprachige Dokumente wird das Komma als Dezimaltrennzeichen
zwischen zwei Ziffern definiert. Folgt dem Komma keine Ziffer, wird
jederzeit der obligatorische Freiraum gesetzt, was meiner Meinung nach
besser als das Verhalten von \Package{icomma} ist.
\item[ionumbers]
Dieses Paket ist mir tatsächlich erst bei der Arbeit an \Package{mathswap}
bekannt geworden. Es bietet mehr Funktionalitäten und kann als Alternative
dazu betrachtet werden.
\end{packages}
%
Weitere Hinweise und Anwendungsfälle zur mathematischen Typographie werden in
\autoref{sec:exmpl:mathtype} sowie \autoref{sec:exmpl:mathswap} gegeben.
\subsubsection{Verzeichnisse aller Art}
\index{Verzeichnisse|?}
Neben dem Erstellen des eigentlichen Dokumentes sind für eine wissenschaftliche
Arbeit meist auch allerhand Verzeichnisse gefordert. Fester Bestandteil ist
dabei das Literaturverzeichnis, auch ein Abkürzungs- und Formelzeichen-
beziehungsweise Symbolverzeichnis werden häufig gefordert. Gegebenenfalls wird
auch noch ein Glossar benötigt. Hier werden die passenden Pakete vorgestellt.
Sollen im Dokument komplette Quelltexte oder auch nur Auszüge daraus erscheinen
und für diese auch gleich ein entsprechendes Verzeichnis generiert werden, so
sei auf das Paket \Package{listings}'full' verwiesen.
\begin{packages}
\item[biblatex]\index{Literaturverzeichnis}
Das Paket gibt es seit geraumer Zeit und es kann als legitimer Nachfolger zu
\hologo{BibTeX} gesehen werden. Ähnlich dazu bietet \Package{biblatex}
die Möglichkeit, Literaturdatenbanken einzubinden und verschiedene Stile der
Referenzierung und Darstellung des Literaturverzeichnisses auszuwählen.
Mit \Package{biblatex} ist die Anpassung eines bestimmten Stiles wesentlich
besser umsetzbar als mit \hologo{BibTeX}. Wird \Application{biber} für die
Sortierung des Literaturverzeichnisses genutzt, ist die Verwendung einer
UTF"~8-kodierten Literaturdatenbank problemlos möglich. In Verbindung mit
\Package{biblatex} wird die zusätzliche Nutzung des Paketes
\Package{csquotes} sehr empfohlen.
\item[acro]\index{Abkürzungsverzeichnis}
Soll lediglich ein Abkürzungsverzeichnis erstellt werden, ist dieses Paket
die erste Wahl. Es stellt Befehle zur Definition von Abkürzungen sowie zu
deren Verwendung im Text und zur sortierten Ausgabe eines Verzeichnisses
bereit. Alternativ dazu kann das Paket \Package{acronym} verwendet werden.
Die Sortierung des Abkürzungsverzeichnisses muss hier allerdings manuell
durch den Anwender erfolgen.
\item[glossaries]\index{Glossar}\index{Abkürzungsverzeichnis}%
\index{Formelzeichenverzeichnis}\index{Symbolverzeichnis}%
Dies ist ein sehr mächtiges Paket zum Erstellen eines Glossars sowie
Abkürzungs- und Symbolverzeichnisses. Die mannigfaltige Anzahl an Optionen
ist zu Beginn eventuell etwas abschreckend. Insbesondere wenn Verzeichnisse
für Abkürzungen \emph{und} Formelzeichen beziehungsweise Symbole benötigt
werden, sollte man dieses Paket in Erwägung ziehen.
Alternativ dazu kann für ein Symbolverzeichnis auch lediglich eine manuell
gesetzte Tabelle genutzt werden. Das hierfür sehr häufig empfohlene Paket
\Package{nomencl} bietet meiner Meinung nach demgegenüber keinerlei Vorteile.
\end{packages}
\subsubsection{Listen}
\index{Listen|?}
\begin{packages}
\item[enumitem]
Das Paket \Package{enumitem} erweitert die rudimentären Funktionalitäten der
\hologo{LaTeX}"=Standardlisten \Environment{itemize}, \Environment{enumerate}
sowie \Environment{description} und ermöglicht die individuelle Anpassung
dieser durch die Bereitstellung vieler optionale Parameter nach dem
Schlüssel"=Wert"=Prinzip. Eine von mir sehr häufig genutzte Funktion ist
beispielsweise die Entfernung des zusätzlichen Abstand zwischen den einzelnen
Einträgen einer Liste mit \Macro{setlist}\PParameter{noitemsep}.
\end{packages}
\subsubsection{Tabellen}
\index{Tabellen|?}
Für den Tabellensatz in \hologo{LaTeX} werden von Haus aus die Umgebungen
\Environment{tabbing} und \Environment{tabular} beziehungsweise
\Environment{tabular*} bereitgestellt, welche in ihrer Funktionalität meist
für einen qualitativ hochwertigen Tabellensatz nicht ausreichen. Es werden
deshalb Pakete vorgestellt, die zusätzlich verwendet werden können.
\begin{packages}
\item[array]
Dieses Paket ermöglicht mit dem Befehl \Macro{newcolumntype} das Erstellen
eigener Spaltentypen sowie die erweiterte Definition von Tabellenspalten
(\PValue{>\{\dots\}}\PName{Spaltentyp}\PValue{<\{\dots\}}), wobei mithilfe
sogenannter \enquote{Hooks} vor und nach Einträgen innerhalb einer Spalte
gezielt Anweisungen gesetzt werden können. Außerdem kann die Höhe der Zeilen
einer Tabelle mit \Macro{extrarowheight} angepasst werden.
\item[multirow]
Es wird der Befehl \Macro{multirow} definiert, der~-- ähnlich zum Makro
\Macro{multicolumn}~-- das Zusammenfassen von mehreren Zeilen in einer
Spalte ermöglicht.
\item[widetable]
Mit der Standard"=\hologo{LaTeX}"=Umgebung \Environment{tabular*} kann eine
Tabelle mit einer definierten Breite gesetzt werden. Dieses Paket stellt die
Umgebung \Environment{widetable} zur Verfügung, die als Alternative genutzt
werden kann und eine symmetrische Tabelle erzeugt.
\item[booktabs]
Für einen guten Tabellensatz mit \hologo{LaTeX} gibt es bereits zahlreiche
\hrfn{http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}{Tipps} im
Internet zu finden. Zwei Regeln sollten dabei definitiv beachtet werden:
%
\begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.]
\itempackages keine vertikalen Linien
\itempackages keine doppelten Linien
\end{enumerate}
%
Das Paket \Package{booktabs} (deutsche Dokumentation \Package*{booktabs-de})
ist für den Satz von hochwertigen Tabellen eine große Hilfe und stellt die
Befehle \Macro{toprule}, \Macro{midrule} sowie \Macro{cmidrule} und
\Macro{bottomrule} für unterschiedliche horizontale Linien bereit.
\item[tabularborder]
Bei Tabellen wird zwischen Spalten automatisch ein horizontaler Abstand
(\Length{tabcolsep}) gesetzt~-- besser gesagt jeweils vor und nach einer
Spalte. Dies geschieht auch \emph{vor} der ersten und \emph{nach} der letzten
Spalte. Dieser zusätzliche Platz an den äußeren Rändern kann störend wirken,
insbesondere wenn die Tabelle über die komplette Textbreite gesetzt wird. Mit
dem Paket \Package{tabularborder} kann dieser Platz automatisch entfernt
werden.
Dies funktioniert allerdings nur mit der \Environment{tabular}"=Umgebung.
Die Tabellen aus den Paketen \Package{tabularx}, \Package{tabulary} und
\Package{tabu} werden nicht unterstützt. Wie dieser Abstand bei diesen
manuell entfernt werden kann, ist unter \autoref{sec:tips:table} zu finden.
\item[tabularx]
Auch mit diesem Paket kann die Gesamtbreite einer Tabelle spezifiziert
werden. Dafür wird der Spaltentyp \PValue{X} definiert, welcher als Argument
der \Environment{tabularx}"=Umgebung beliebig häufig angegeben werden kann
(\Macro*{begin}\PParameter{tabularx}\Parameter{Breite}\Parameter{Spalten}).
Die \PValue{X}"~Spalten ähneln denen vom Typ~\PValue{p}\Parameter{Breite},
wobei die Breite dieser aus der gewünschten Tabellengesamtbreite und dem
benötigten Platz der gegebenenfalls vorhandenen Standardspalten automatisch
berechnet wird.
\item[tabulary]
Dies ist ein weiteres Paket zur automatischen Berechnung von Spaltenbreiten.
Der zur Verfügung stehende Platz~-- gewünschte Gesamtbreite abzüglich der
notwendigen Breite für die Standardspalten~-- wird jedoch nicht wie bei der
Umgebung \Environment{tabularx} auf alle Spalten gleichmäßig verteilt sondern
in der \Environment{tabulary}"=Umgebung für die Spaltentypen~\PValue{LCRJ}
anhand ihres Zellinhaltes gewichtet vergeben.
(\Macro*{begin}\PParameter{tabulary}\Parameter{Breite}\Parameter{Spalten}).
\item[longtable]
Sollen mehrseitige Tabellen mit Seitenumbruch erstellt werden, ist dieses
Paket das Mittel der ersten Wahl. Für die Kombination mehrseitiger Tabellen
mit einer \Environment{tabularx}"=Umgebung können die Pakete
\Package{ltablex} oder besser noch \Package{ltxtable} verwendet werden.
\item[ltxtable]
Wie bereits erwähnt sollte dieses Paket für mehrseitige Tabellen, die mit der
Umgebung \Environment{tabularx} erstellt wurden, verwendet werden.
Alternativ dazu kann man auch \Package{tabu} nutzen.
\item[tabu]
\ChangedAt{v2.02!\Package{tabu}: Verwendung nur bedingt empfehlenswert}
Dies ist ein relativ neues Paket, welches versucht, viele der zuvor genannten
Funktionalitäten zu implementieren und weitere bereitzustellen. Dafür werden
die Umgebungen \Environment{tabu} und \Environment{longtabu} definiert. Es
kann alternativ zu \Package{tabularx} verwendet werden und ist insbesondere
als Ersatz für das Paket \Package{ltxtable} empfehlenswert.
\Attention{%
Leider wären für das Paket in der aktuellen Version~v2.8 seit geraumer Zeit
ein paar kleinere Bugfixes notwendig. Außerdem wird sich die
\hrfn{https://groups.google.com/d/topic/comp.text.tex/xRGJTC74uCI}{%
Benutzerschnittstelle in einer zukünftigen Version
} sehr stark ändern, weshalb es momentan mit Vorsicht zu genießen ist.
Zumindest sollte sich der Anwender bewusst sein, dass er mit dieser Version
gesetzte Dokumente gegebenenfalls später anpassen muss.
}
\end{packages}
\subsubsection{Gleitobjekte}
\index{Gleitobjekte|?}
\index{Tabellen}\index{Grafiken}
Es werden Pakete für die Beeinflussung von Aussehen, Beschriftung und
Positionierung von Gleitobjekten vorgestellt. Unter \autoref{sec:tips:floats}
sind außerdem Hinweise zur manuellen Manipulation der Gleitobjektplatzierung zu
finden.
\begin{packages}
\item[placeins]\index{Gleitobjekte!Platzierung}
Mit diesem Paket kann die Ausgabe von Gleitobjekten vor Kapiteln und wahlweise
Unterkapiteln erzwungen werden.
\item[flafter]\index{Gleitobjekte!Platzierung}
Dieses Paket erlaubt die frühestmögliche Platzierung von Gleitobjekten im
ausgegeben Dokument erst an der Stelle ihres Auftretens im Quelltext. Diese
werden dementsprechend nie vor ihrer Definition am Anfang der Seite
erscheinen.
\item[caption]\index{Gleitobjekte!Beschriftung}
Die \KOMAScript-Klassen bietet bereits einige Möglichkeiten zum Setzen der
Beschriftungen für Gleitobjekte. Dieses Paket ist daher meist nur in gewissen
Ausnahmefällen für spezielle Anweisungen notwendig, allerdings auch bei der
Verwendung unbedenklich.
\item[subcaption]\index{Gleitobjekte!Beschriftung}
Diese Paket kann zum einfachen Setzen von Unterabbildungen oder "~tabellen
mit den entsprechenden Beschriftungen genutzt werden. Das dazu alternative
Paket \Package{subfig} sollte vermieden werden, da es nicht mehr gepflegt
wird und es mit diesem im Zusammenspiel mit anderen Paketen des Öfteren zu
Problemen kommt. Sollte der Funktionsumfang von \Package{subcaption} nicht
ausreichen, kann anstelle dessen das Paket \Package{floatrow} verwendet
werden, welches ähnliche Funktionalitäten wie \Package{subfig} bereitstellt.
\item[floatrow]\index{Gleitobjekte!Beschriftung}
Mit diesem Paket können global wirksame Einstellungen und Formatierungen für
\emph{alle} Gleitobjekte eines Dokumentes vorgenommen werden. So kann unter
anderem die verwendete Schrift (\Macro{floatsetup}\PParameter{font=\dots})
innerhalb der Umgebungen \Environment{float} und \Environment{table}
eingestellt werden. Das typographisch richtige Setzen der Beschriftungen von
Abbildungen als Unterschriften
(\Macro{floatsetup}\POParameter{figore}\PParameter{capposition=bottom})
sowie Tabellen als Überschriften
(\Macro{floatsetup}\POParameter{table}\PParameter{capposition=top})
kann automatisch erzwungen werden~-- unabhängig von der Position des Befehls
zur Beschriftung \Macro{caption} innerhalb der Gleitobjektumgebung. Wird das
Verhalten so wie empfohlen mit dem \Package{floatrow}-Paket eingestellt,
sollte für eine richtige Platzierung der Tabellenüberschriften außerdem die
\KOMAScript-Option \Option{captions}[tableheading] genutzt werden.
\end{packages}
\subsubsection{Grafiken und Abbildungen}
\index{Grafiken|?}
Grafiken für wissenschaftliche Arbeiten sollten als Vektorgrafiken erstellt
werden, um die Skalierbarkeit und hohe Druckqualität zu gewährleisten.
Bestenfalls folgen diese auch dem Stil der dazugehörigen Arbeit.%
\footnote{%
Für qualitativ hochwertige Dokumente sollten übernommene Grafiken nicht
direkt kopiert oder gescannt sondern im gewünschten Zielformat neu erstellt
und mit der Referenz auf die Quelle ins Dokument eingebunden werden.
}
Für das Erstellen eigener Vektorgrafiken, welche die \hologo{LaTeX}"=Schriften
und das Layout des Hauptdokumentes nutzen, gibt es zwei mögliche Ansätze.
Entweder man \enquote{programmiert} die Grafiken ähnlich wie das Dokument
selber oder man nutzt Zeichenprogramme, die wiederum die Ausgabe oder das
Weiterreichen von Text an \hologo{LaTeX} unterstützen. Für das Programmieren
von Grafiken sollen hier die wichtigsten Pakete vorgestellt werden. Wie diese
zu verwenden sind, ist den dazugehörigen Paketdokumentationen zu entnehmen.
Außerdem wird im Tutorial \Tutorial{treatise} für beide Pakete jeweils ein
Beispiel gegeben.
\begin{packages}
\item[tikz](pgf)
Dies ist ein sehr mächtiges Paket für das Programmieren von Vektorgrafiken
und sehr häufig~-- insbesondere bei Einsteigern~-- die erste Wahl bei der
Verwendung von \hologo{pdfLaTeX}.
\item[pstricks]
Das Paket \Package{pstricks} stellt die zweite Variante zum Programmieren
von Grafiken dar. Mit diesem Paket hat man \emph{noch} mehr Möglichkeiten bei
der Erstellung eigener Grafiken, da man mit \Package{pstricks} auf
PostScript zugreifen kann und einige der bereitgestellten Befehle davon rege
Gebrauch machen. Der daraus resultierende Nachteil ist, dass mit
\Package{pstricks} die direkte Verwendung von \hologo{pdfLaTeX} nicht
möglich ist.
Die Grafiken aus den \Environment{pspicture}"=Umgebungen müssen deshalb erst
über den Pfad \Path{latex \textrightarrow{} dvips \textrightarrow{} ps2pdf}
in PDF"~Dateien gewandelt werden. Diese lassen sich von \hologo{pdfLaTeX}
anschließend als Abbildungen einbinden. Um dieses Vorgehen zu ermöglichen,
können folgende Pakete genutzt werden:
%
\begin{packages}
\item[pst-pdf]
Dieses Paket stellt Methoden für den Export von PostSript-Grafiken in
PDF-Datien bereit. Die einzelnen Aufrufe zur Kompilierung von DVI über
PostScript zu PDF müssen durch den Anwender manuell beziehungsweise über
die Ausgaberoutinen des verwendeten Editors durchgeführt werden.
\item[auto-pst-pdf]
Das Paket automatisiert die Erzeugung der \Package{pstricks}"=Grafiken mit
dem Paket \Package{pst-pdf}. Dafür muss \hologo{pdfLaTeX} per Option mit
Schreibrechten ausgeführt werden. Dazu ist der Aufruf von \Path{pdflatex}
mit der Option \Path{-{}-shell-escape} beziehungsweise für Nutzer von
\hologo{MiKTeX} mit \Path{-{}-enable-write18} notwendig. Bitte beachten Sie
außerdem die Hinweise in \autoref{sec:tips:auto-pst-pdf}. Eine Alternative
dazu ist das Paket \Package{pdftricks2}.
\end{packages}
\end{packages}
%
Um bei der Erstellung von Grafiken mit \Package{pstricks} oder \Package{tikz}
nicht bei jeder Änderung das komplette Dokument kompilieren zu müssen, können
diese in separate Dateien ausgelagert werden. Hierfür sind die beiden Pakete
\Package{standalone} oder \Package{subfiles} sehr nützlich.
Für das Zeichnen einer Grafik mit einem Bildbearbeitungsprogramm, welches die
Weiterverarbeitung durch \hologo{LaTeX} erlaubt, möchte ich auf die freien
Programme \Application{LaTeXDraw} und \Application{Inkscape} verweisen.
Insbesondere das zuletzt genannte Programm ist sehr empfehlenswert. Für die
erstellten Grafiken kann man den Export für die Einbindung in \hologo{LaTeX}
manuell durchführen. In \autoref{sec:tips:svg} wird vorgestellt, wie sich dies
automatisieren lässt.
\subsubsection{Aufteilung des Hauptdokumentes in Unterdateien}
Um während des Entwurfes eines Dokumentes die Zeitdauer für das Kompilieren zu
verkürzen, kann dieses in Unterdokumente gegliedert werden. Dadurch wird es
möglich, nur den momentan bearbeiteten Dokumentteil~-- respektive die aktuelle
\Package{tikz}- oder \Package{pstricks}-Grafik~-- zu kompilieren. Die meiner
Meinung nach besten Pakete für dieses Unterfangen werden folgend vorgestellt.
%
\begin{packages}
\item[standalone]
\ChangedAt{v2.02!\Class{standalone}: Probleme behoben}
Dieses Paket ist für das Erstellen eigenständiger (Unter)"~Dokumente gedacht,
welche später in ein Hauptdokument eingebunden werden können. Jedes dieser
Teildokumente benötigt eine eigene Präambel. Optional lassen sich die
Präambeln der Unterdokumente automatisch in ein Hauptdokument einbinden.
\item[subfiles]
\ChangedAt{v2.02!\Package{subfiles}: Beschreibung hinzugefügt}
Dieses Paket wählt einen etwas anderen Ansatz als \Package{standalone}. Es
ist von Anfang an dafür gedacht, ein dediziertes Hauptdokument zu verwenden.
Die darin mit \Macro{subfiles} eingebundenen Unterdateien nutzen bei der
autarken Kompilierung dessen Präambel.
\end{packages}
%
Unabhängig davon, ob Sie eines der beiden Pakete nutzen oder alles in einem
Dokument belassen, ist es ratsam, eigens definierte Befehle, Umgebungen und
ähnliches in ein separates Paket auszulagern. Dafür müssen Sie lediglich ein
leeres \hologo{LaTeX}-Dokument erzeugen und es unter \File*{mypreamble.sty}
oder einem anderen Namen im gleichen Ordner wie das Hauptdokument speichern.
Dann können Sie in dieser Datei ihre Deklarationen ausführen und diese mit
\Macro*{usepackage}\PParameter{mypreamble} in das Dokument einbinden. Dies hat
den Vorteil, dass das Hauptdokument zum einen übersichtlich bleibt und Sie zum
anderen Ihre persönliche Präambel generisch wachsen lassen und für andere
Dokumente wiederverwenden können.
\subsubsection{Die kleinen und großen Helfer\dots}
Hier taucht alles auf, was sich nicht eignete, in die vorherigen Kategorien
eingeordnet zu werden.
%
\begin{packages}
\item[bookmark]\index{Lesezeichen}\index{Querverweise}
Dieses Paket verbessert und erweitert die von \Package{hyperref} angebotenen
Möglichkeiten zur Erstellung von Lesezeichen~-- auch Outline"=Einträge~-- im
PDF-Dokument. Beispielsweise können Schriftfarbe- und "~stil geändert werden.
\item[calc]\index{Berechnungen}
Normalerweise können Berechnungen nur mit Low-Level-\hologo{TeX}-Primitiven
im Dokument durchgeführt werden. Dieses Paket stellt eine einfachere Syntax
für Rechenoperationen der vier Grundrechenarten zur Verfügung. Zusätzlich
werden neue Befehle zur Bestimmung der Höhe und Breite bestimmter Textauszüge
definiert.
\item[chngcntr]\index{Zählermanipulation}
Das Paket erlaubt die Manipulation aller möglichen, bereits definierten
\hologo{LaTeX}-Zähler. Es können Zähler so umdefiniert werden, dass sie bei
der Änderung eines anderen Zählers automatisch zurückgesetzt werden oder eben
nicht. Ein kleines Beispiel dazu ist in \autoref{sec:tips:counter} zu finden.
\item[varioref]\index{Querverweise}
Mit diesem Paket lassen sich sehr gute Verweise auf bestimmte Seiten
erzeugen. Insbesondere, wenn der Querverweis auf die aktuelle, die
vorhergehende oder nachfolgende sowie im zweiseitigen Satz auf die
gegenüberliegende Seite erfolgt, werden passende Textbausteine für diesen
verwendet.
\item[cleveref]\index{Querverweise}
Dieses Paket vereint die Vorzüge von \Package{varioref} mit der automatischen
Benennung der referenzierten Objekte mit dem Befehl \Macro{autoref} aus dem
Paket \Package{hyperref}.
\item[marginnote]\index{Randnotizen}
Randnotizen, welche mit \Macro{marginpar} erzeugt werden, sind spezielle
Gleitobjekte in \hologo{LaTeX}. Dies kann dazu führen, dass eine Notiz am
Blattrand nicht direkt da gesetzt wird, wo diese intendiert war. Dieses Paket
stellt den Befehl \Macro{marginnote} für nicht"~gleitende Randnotizen zur
Verfügung. Alternativ dazu kann man auch \Package{mparhack} verwenden.
\item[todonotes]\index{Randnotizen}
Mit \Package{todonotes} können noch offene Aufgaben in unterschiedlicher
Formatierung am Blattrand oder im direkt Fließtext ausgegeben werden. Aus
allen Anmerkungen lässt sich eine Liste aller offenen Punkte erzeugen.
\item[xparse]\index{Befehle!Deklaration}
Dieses mächtige Paket entstammt dem \hologo{LaTeX3}-Projekt und bietet für
die Erstellung eigener Befehle und Umgebungen einen alternativen Ansatz zu
den bekannten \hologo{LaTeX}"=Deklarationsbefehlen \Macro*{newcommand} und
\Macro*{newenvironment} sowie deren Derivaten. Mit \Package{xparse} wird es
möglich, obligatorische und optionale Argumente an beliebigen Stellen
innerhalb des Befehlskonstruktes zu definieren. Auch die Verwendung anderer
Zeichen als eckige Klammern für die Spezifizierung eines optionalen
Argumentes ist möglich.
\item[xkeyval]\index{Befehle!Deklaration}
\ChangedAt{v2.02!\Package{xkeyval}: Beschreibung hinzugefügt}
Das \KOMAScript{}"=Bundle lädt das Paket \Package{keyval}, um Optionen mit
einer Schlüssel"=Wert"=Syntax deklarieren zu können. Zusätzlich wird von
\TUDScript das Paket \Package{kvsetkeys} geladen, um auf nicht definierte
Schlüssel reagieren zu können. Die Schlüssel"=Wert"=Syntax kann auch für
eigens definierte Makros genutzt werden, um sich das exzessive Verwenden von
optionalen Argumenten zu ersparen. Damit wäre folgende Definition möglich:
\Macro*{newcommand}\Macro*{Befehl}\OParameter{Schlüssel"=Wert"=Liste}%
\Parameter{Argument}.
Das Paket \Package{xkeyval} erweitert insbesondere die Möglichkeiten zur
Deklaration unterschiedlicher Typen von Schlüsseln. Sollten die bereits durch
\TUDScript geladenen Pakete \Package{keyval} und \Package{kvsetkeys} in ihrer
Funktionalität nicht ausreichen, kann dieses Paket verwendet werden. Für die
Entwicklung eigener Pakete, deren Optionen das Schlüssel"=Wert"=Format
unterstützen, kann das Paket \Package{scrbase} genutzt werden. Soll aus einem
Grund auf \KOMAScript{} gänzlich verzichtet werden, sind die beiden Pakete
\Package{kvoptions} oder \Package{pgfkeys} eine Alternative.
\item[listings]\index{Quelltexte einbinden}\index{Quelltextverzeichnis}%
Dieses Paket eignet sich hervorragend zur Quelltextdokumentation in
\hologo{LaTeX}. Es bietet die Möglichkeit, externe Quelldateien einzulesen
und darzustellen sowie die Syntax in Abhängigkeit der verwendeten
Programmiersprache hervorzuheben. Zusätzlich lässt sich ein Verzeichnis mit
allen eingebundenen sowie direkt im Dokument angegebenen Quelltextauszügen
erstellen.
%
\ChangedAt{v2.02!\Package{listings}: Beschreibung ergänzt}
Wird \Package{listings} in Dokumenten mit UTF"~8-Kodierung verwendet, sollte
direkt nach dem Laden des Paketes in der Präambel Folgendes hinzugefügt
werden:
\begin{Code}
\lstset{%
inputencoding=utf8,extendedchars=true,
literate=%
{ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{~}{{\textasciitilde}}1 {ß}{{\ss}}1
}
\end{Code}\vspace{-\baselineskip}%
\item[mwe]\index{Minimalbeispiel|!}
\ChangedAt{v2.02!\Package{mwe}: Beschreibung hinzugefügt}
Mit diesem Paket lassen sich sehr einfach Minimalbeispiele erzeugen, die
sowohl Blindtexte respektive Abbildungen enthalten sollen.
\item[filemod]
Wird entweder \hologo{pdfLaTeX} oder \hologo{LuaLaTeX} als Prozessor
eingesetzt, können mit diesem Paket das Änderungsdatum zweier Dateien
miteinander verglichen und in Abhängigkeit davon definierbare Aktionen
ausgeführt werden.
\item[coseoul]
Mit diesem Paket kann man die Struktur der Gliederung relativ angeben. Es
wird keine absolute Gliederungsebene (\Macro*{chapter}, \Macro*{section})
angegeben sondern die Relation zwischen vorheriger und aktueller Ebene
(\Macro*{levelup}, \Macro*{levelstay}, \Macro*{leveldown}).
\item[dprogress]\index{Debugging}
Das Paket schreibt bei der Kompilierung des Dokumentes die Gliederung in die
Logdatei. Dies kann im Fehlerfall beim Auffinden des Problems im Dokument
helfen. Allerdings werden dafür die Gliederungsebenen so umdefiniert, dass
diese keine optionalen Argumente mehr unterstützen,was jedoch für die
\TUDScript-Klassen von essentieller Bedeutung ist. Zum Debuggen kann es
trotzdem sporadisch eingesetzt werden.
\end{packages}
\subsubsection{Bugfixes}
%
\begin{packages}
\item[scrhack](koma-script)
Das Paket behebt Kompatibilitätsprobleme der \KOMAScript-Klassen mit den
Paketen \Package{hyperref}, \Package{float}, \Package{floatrow} und
\Package{listings}. Es ist durchaus empfehlenswert, jedoch sollte man
unbedingt die Dokumentation beachten.
\item[fixltx2e]
Dieses Paket enthält Bugfixes für \hologo{LaTeXe}. Da diese eventuell zu
Inkompatibilitäten mit früheren Versionen führen könnten, wurden diese nicht
in den \hologo{LaTeXe}-Kernel eingepflegt. Für neu gesetzte Dokumente kann es
ohne Bedenken verwendet werden.
\item[mparhack]
Zur Behebung falsch gesetzter Randnotizen wird ein Bugfix für
\Macro{marginpar} bereitgestellt. Alternativ dazu kann man auch
\Package{marginnote} verwenden.
\item[etex]
Das Paket kann genutzt werden, falls die maximale Anzahl der normalerweise
verfügbaren \hologo{LaTeX}-Register für Längen, Zähler etc. überschritten
wurde.
\end{packages}
|