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
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
|
\setchapterpreamble{\tudhyperdef'{sec:packages}}
\chapter{Benötigte, unterstützte und empfehlenswerte Pakete}
\index{Kompatibilität|?}%
%
\section{Notwendige und ergänzende Pakete}
\tudhyperdef*{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
(\seeref{\autoref{sec:install}}) geprüft und die Installation beim Fehlen eines
oder mehrerer Pakete mit einer entsprechenden Warnung abgebrochen.
%
\begin{packages}
\item[fontinst](fontware)
Dieses Paket wird für die Installation der Schriften \Univers sowie \DIN
benötigt. Weiterhin ist \Package{fontware} der \hologo{LaTeX}"=Distribution
für die Schriftkonvertierung notwendig.
\item[cmbright,hfbright,cm-super]
Alle mathematischen Glyphen und Symbole, die nicht in den \Univers"~Schriften
enthalten sind, werden diesem Paket entnommen. Außerdem werden für die
\PValue{T1}"~Schriftkodierung die beiden Pakete \Package{cm-super} und
\Package{hfbright} benötigt. Aus dem Paket \Package{lmodern} werden
zusätzlich die \texttt{Schreibmaschinenschriften} verwendet.
\item[iwona]
Sowohl für \Univers als auch für \DIN werden fehlenden Glyphen entnommen.
\end{packages}
\subsection{Notwendige Pakete für die Verwendung der Hauptklassen}
Diese Pakete werden von den neuen Klassen zwingend benötigt und automatisch
geladen, falls dies nicht durch den Anwender in der Präambel geschieht.
%
\begin{packages}
\item[koma-script,typearea,scrlayer-scrpage,scrbase]
\begin{Declaration*}{\Class{scrbook}}
\begin{Declaration*}{\Class{scrreprt}}
\begin{Declaration*}{\Class{scrartcl}}
\begin{Declaration*}{\Class{scrlttr2}}
\ChangedAt{%
v2.02:Paket \Package{scrlayer-scrpage} ist für \TUDScript unabdingbar%
}%
Das \KOMAScript-Bundle ist die zentrale Grundlage für \TUDScript. Neben den
Klassen \Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} wird das Paket
\Package{scrbase} benötigt. Dieses 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. Für
die Bereitstellung der \PageStyle{tudheadings}"=Seitenstile ist das Paket
\Package{scrlayer-scrpage} notwendig. Wenn es nicht durch den Anwender~-- mit
beliebigen Optionen~-- geladen wird, erfolgt dies am Ende der Präambel
automatisch durch \TUDScript.
\end{Declaration*}
\end{Declaration*}
\end{Declaration*}
\end{Declaration*}
\item[kvsetkeys]
Hiermit wird das von \Package{scrbase} geladene Paket \Package{keyval}
verbessert, welches das Definieren von Klassen"~ und Paketoptionen sowie
Parametern nach dem Schlüssel"=Wert"=Prinzip ermöglicht. Das Verhalten für
unbekannte Schlüssel kann mit \Package{kvsetkeys} festgelegt werden.
\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 wird zum Festlegen der Seitenränder respektive des Satzspiegels
verwendet. Ein Weiterreichen zusätzlicher Optionen an das Paket wird
dringlich nicht empfohlen.
\item[textcase]
\index{Schriftauszeichnung}%
Mit dem Befehl \Macro{MakeTextUppercase}(\Package{textcase})'none' wird bei
Überschriften in \DIN die Großschreibung erzwungen. Im \emph{Ausnahmefall}
kann dies mit \Macro{NoCaseChange}(\Package{textcase}) unterbunden werden.
\item[trimspaces]
Bei mehreren Eingabefeldern für den Anwender werden die Argumente mithilfe
dieses Paketes um eventuell angegebene, unnötige Leerzeichen befreit.
\item[graphicx]
\index{Grafiken}%
Dies ist das De"~facto"~Standard"~Paket zum Einbinden von Grafiken. Zum
Setzen des Logos der \TnUD im Kopf sowie aller weitere Abbildungen und Logos
wird \Macro{includegraphics}(\Package{graphicx})'none' 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.
Ein Laden beider Pakete in der Präambel durch den Nutzer ist problemlos
möglich.
\item[environ]
\index{Befehlsdeklaration}%
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.
\end{packages}
%
Möchten Sie eines der hier aufgezählten Pakete selber nutzen, es jedoch mit
bestimmten Optionen laden, so sollten diese bereits \emph{vor} der Definition
der Dokumentklasse an das Paket weitergereicht werden, falls bei der
Beschreibung nichts anderweitiges angegeben worden ist.
%
\begin{Example}
Das Weiterreichen von Optionen an Pakete muss folgendermaßen erfolgen:
\begin{Code}[escapechar=§]
\PassOptionsToPackage§\Parameter{Paketoptionen}\Parameter{Paket}§
\documentclass§\OParameter{Klassenoptionen}\PParameter{tudscr\dots}§
\end{Code}
\end{Example}
\subsection{Durch \TUDScript unterstütze Pakete}
%
Einige der unter \autoref{sec:packages:recommended} beschriebenen Pakete werden
durch \TUDScript direkt unterstützt und erweitern dessen Funktionalität. Dies
sind namentlich \Package{hyperref}, \Package{isodate}, \Package{multicol},
\Package{quoting}, \Package{ragged2e} und \Package{crop}. Weitere Informationen
dazu ist den nachfolgenden Beschreibung des jeweiligen Paketes zu entnehmen.
\newcommand*\RecPack{%
\hyperref[sec:packages:recommended]{Paketbeschreibung}:\xspace%
}
\section{Empfehlenswerte Pakete}
\tudhyperdef*{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%
\footnote{Kommandozeile/Terminal: \Path{texdoc\,\PName{Paketname}}}
zu Rate gezogen werden, 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, ist
\Macro*{usepackage}[\POParameter{T1}\PParameter{fontenc}] zu nutzen.
\item[selinput,inputenc]
\index{Eingabekodierung}%
\index{Minimalbeispiel|?}%
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 zum einen für unterschiedliche
Betriebssystem portabel und es kann beispielsweise einfach via Copy~\&~Paste
ein \hrfn{http://www.komascript.de/minimalbeispiel}{Minimalbeispiel} bei
Problemstellungen in einem Forum bereitgestellt werden. Alternativ dazu lässt
sich mit dem Paket \Package{inputenc}
(\Macro*{usepackage}[\OParameter{Eingabekodierung}\PParameter{inputenc}])
die Eingabekodierung manuell einstellen.
\item[babel,polyglossia]
\index{Sprachunterstützung}%
\index{Bezeichner}%
Mit dem Paket \Package{babel} 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
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
\Engine{LuaLaTeX} und \Engine{XeLaTeX} kann das Paket \Package{polyglossia}
genutzt werden.
\item[microtype]
\index{Typografie}%
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 \Engine*{TeX}"=Engine,
wohl jedoch mit \Engine{pdfTeX} als auch \Engine{LuaTeX} sowie \Engine{XeTeX}.
\item[hyphsubst,dehyph-exptl]
\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{Typografie und Layout}
\index{Typografie|(}%
%
Neben dem zuvor beschriebenem Paket \Package{microtype}, welches verantwortlich
für mikrotypografische Feinheiten ist, existieren weitere Pakete, die vorrangig
die Makrotypografie adressieren.
%
\begin{packages}
\item[setspace]
\index{Zeilenabstand}%
Die Vergrößerung des Zeilenabstandes wird:
%
\begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.]
\stditem viel zu häufig und völlig unnötig gefordert und
\stditem schließlich auch noch zu groß gewählt.
\end{enumerate}
%
Die Forderung nach Erhöhung des Zeilenabstandes~-- in der Typografie als
Durchschuss bezeichnet~-- kommt 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} genutzt werden. Dieses stellt den Befehl
\Macro{setstretch}[\Parameter{Faktor}](\Package{setspace})'none' zur
Verfügung, mit dem der Durchschuss respektive 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 \TUDCD
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. Für dieses Dokument wurde
\Macro{setstretch}[\PParameter{1.1}](\Package{setspace})'none' für den
Zeilenabstand gewählt. Weitere Tipps sind in \autoref{sec:tips:headings} und
\autoref{sec:tips:headline} zu finden.
\item[multicol]
\index{Satzspiegel!zweispaltig|?}%
\index{Mehrspaltensatz}%
\index{Satzspiegel!mehrspaltig}%
Hiermit kann jeglicher beliebiger Inhalt in zwei oder mehr Spalten ausgegeben
werden, wobei~-- im Gegensatz zum normalen zweispaltigen Satz über die
\KOMAScript-Option \Option{twocolumn}(\Package{typearea})'none'~-- für einen
Spaltenausgleich gesorgt wird. Unterstützt wird das Paket innerhalb der
Umgebungen \Environment{abstract} und \Environment{tudpage}.
\item[balance]
\index{Satzspiegel!zweispaltig}%
Dieses Paket ermöglicht einen Spaltenausgleich im zweispaltigen Satz auf der
letzten Dokumentseite. Alternativ dazu kann auch \Package{multicol} verwendet
werden.
\item[isodate]
\index{Datum|?}%
Mit \Macro{printdate}[\Parameter{Datum}](\Package{isodate})'none' formatiert
dieses Paket 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} und \Macro{defensedate} sowie aus
\Package{tudscrsupervisor} \Macro{duedate}(\Package{tudscrsupervisor}) und
\Macro{issuedate}(\Package{tudscrsupervisor})%
}
in diesem Format ausgegeben.
\item[quoting]
\index{Zitate}%
\hologo{LaTeX} bietet von Haus aus \emph{zwei} verschiedene Umgebungen~--
\Environment{quote}(\Package{koma-script})'none' und
\Environment{quotation}(\Package{koma-script})'none'~-- für Zitate und
ähnliches an. Allerdings werden durch beide Umgebungen die \KOMAScript-Option
\Option{parskip=\PName{Methode}}(\Package{koma-script})'none'|declare|
ignoriert. Mit der Umgebung \Environment{quoting}(\Package{quoting})'none'
aus dem gleichnamigen Paket lässt sich dieses Problem umgehen. Wird das Paket
geladen, wird diese innerhalb der \Environment{abstract}"=Umgebung verwendet.
\item[ragged2e]
\index{Worttrennung}%
Das Paket verbessert den Flattersatz, indem für diesen die Worttrennung
aktiviert wird.
\item[csquotes]
\index{Zitate}%
Das Paket stellt unter anderem den Befehl
\Macro{enquote}[\Parameter{Zitat}](\Package{csquotes})'none'
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:\RecPack \Package{noindentafter}}
Mit diesem Paket lassen sich automatische Absatzeinzüge für selbst zu
bestimmende Befehle und Umgebungen unterdrücken.
\item[fnpct]
\index{Fußnoten|?}%
\ChangedAt{v2.05:\RecPack \Package{fnpct}}
Diese Paket sorgt zum einen für das Einhalten der richtigen Reihenfolge von
Satzzeichen und Fußnoten und zum anderen wird das typografisch korrekte
Setzen mehrerer, nacheinander folgender Fußnoten unterstützt.
\item[xspace,xpunctuate]
\index{Befehlsdeklaration}%
Mit \Package{xspace} kann bei der Definition eigener Makros der Befehl
\Macro{xspace}(\Package{xspace})'none' genutzt werden. Dieser setzt ein
gegebenenfalls notwendiges Leerzeichen automatisch. In
\autoref{sec:tips:xspace} ist die Definition eines solchen Befehls
exemplarisch ausgeführt. Durch das Paket \Package{xpunctuate} wird
\Package{xspace} um die Beachtung von Interpunktionen erweitert.
\item[ellipsis]
\index{Befehlsdeklaration}%
In \hologo{LaTeX} folgen 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 nachfolgende
Leerzeichen~-- im Gegensatz zum Standardverhalten~-- nur gesetzt, wenn ein
Satzzeichen und kein Buchstabe folgt, \seeref*{\autoref{sec:tips:dots}}.
\stditem[\Application{DeLig}<delig>,\Package{selnolig}]
\index{Ligaturen}%
Hierbei handelt es sich um ein Java"~Script, das 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 \enquote{ff}, \enquote{fi}, \enquote{fl}, \enquote{ffi}, und
\enquote{ffl} bei den \hologo{LaTeX}"=Standardschriften.%
}
Mit \Engine{LuaLaTeX} als Textsatzsystem kann auch \Package{selnolig}
alternativ dazu verwendet werden.
\index{Typografie|)}%
\end{packages}
\subsubsection{Rechtschreibung}
\index{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 ausschließlich nutzbar, wenn als Textsatzsystem
\Engine{LuaLaTeX} genutzt wird.
\begin{packages}
\item[lua-check-hyphen]
\index{Worttrennung}%
Hiermit lassen sich mit \Engine{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]
Wird \Engine{LuaLaTeX} als Textsatzsystem 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}, \Application{Hunspell} oder
\Application{LanguageTool} analysiert und falsch geschriebene Wörter im
PDF"~Dokument hervorgehoben werden.
\index{Rechtschreibung|)}%
\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,newtxmath]<newtx>
\index{Schriftart}%
\index{Mathematiksatz}%
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{Schriftstärke}%
In \hologo{LaTeXe} existieren die 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]
\index{Zeichensatzkodierung}%
\ChangedAt{v2.02:\RecPack \Package{fontspec}}
Wird als Textsatzsystem nicht \Engine{pdfLaTeX} sondern \Engine{XeLaTeX}
oder \Engine{LuaLaTeX} verwendet, können mit diesem Paket Systemschriften im
OpenType"~Format und einer beliebigen Zeichensatzkodierung eingebunden
werden, womit sich die Auswahl der verwendbaren Schriften stark erweitert.
Das Paket wird durch \TUDScript unterstützt.
\item[relsize]
\index{Schriftgröße}%
Die Größe einer Textauszeichnung kann relativ zur aktuellen 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}
%
\index{Mathematiksatz|(}%
Auch für (serifenlose) Mathematikschriften gibt es einige nützliche Pakete.
Werden die Schriften des \CDs genutzt, sei auf die Option \Option{cdmath}
verwiesen.
%
\begin{packages}
\item[sansmathfonts,sansmath]
Sollten die normalen \hologo{LaTeX}"=Schriften Computer~Modern verwendet
werden, lässt sich dieses Paket zum serifenlosen Setzen mathematischer
Ausdrücke nutzen. Ein alternatives Paket mit der gleichen Zielstellung ist
\Package{sansmath}
\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}
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,amsmath]
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 typografisch 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 typografisch 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}.
\index{Einheiten|)}%
\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 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{Zifferngruppierung|(}%
\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 typografisch 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.
\index{Zifferngruppierung|)}%
\end{packages}
%
Weitere Hinweise und Anwendungsfälle zur mathematischen Typografie werden in
\autoref{sec:tut} gegeben.
\index{Mathematiksatz|)}%
\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 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,acronym]
\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,nomencl]
\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 notwendig
sind, sollte dieses Paket in Erwägung gezogen werden.
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.
\index{Verzeichnisse|?)}%
\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}(\Package{koma-script},\Package{enumitem})'none',
\Environment{enumerate}(\Package{koma-script},\Package{enumitem})'none' sowie
\Environment{description}(\Package{koma-script},\Package{enumitem})'none' 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}](\Package{enumitem})'none'.
\index{Listen|?)}%
\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 sich zusätzlich verwenden lassen.
%
\begin{packages}
\item[array]
Dieses Paket ermöglicht mit \Macro{newcolumntype}(\Package{array})'none' das
Erstellen neuer Spaltentypen und die erweiterte Definition von Tabellenspalten
(\PValue{>\PParameter{\dots}}\PName{Spaltentyp}\PValue{<\PParameter{\dots}}),
wobei mithilfe sogenannter \enquote{Hooks} vor und nach Einträgen innerhalb
einer Spalte gezielt Anweisungen gesetzt werden können. Außerdem kann die
Zeilenhöhe einer Tabelle mit \Macro{extrarowheight}(\Package{array})'none'
angepasst werden.
\item[multirow]
Es wird der Befehl \Macro{multirow}(\Package{multirow})'none' definiert, der
das Zusammenfassen von mehreren Zeilen in einer Spalte ermöglicht~-- ähnlich
zum Makro \Macro{multicolumn} für Spalten.
\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}(\Package{widetable})'none' 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*.]
\stditem keine vertikalen Linien
\stditem 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}(\Package{booktabs})'none',
\Macro{midrule}(\Package{booktabs})'none' sowie
\Macro{cmidrule}(\Package{booktabs})'none' und
\Macro{bottomrule}(\Package{booktabs})'none'
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}(\Package{tabularx})'none'"=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}(\Package{tabularx})'none' auf alle Spalten
gleichmäßig verteilt sondern in der
\Environment{tabulary}(\Package{tabulary})'none'"=Umgebung für die
Spaltentypen~\PValue{LCRJ} anhand ihres Zellinhaltes gewichtet vergeben.
(\Macro*{begin}[\PParameter{tabulary}\Parameter{Breite}\Parameter{Spalten}]).
\item[longtable,ltablex]
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}(\Package{tabularx})'none'"=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}(\Package{tabularx})'none' erstellt wurden,
verwendet werden. Alternativ dazu lässt sich auch \Package{tabu} nutzen.
\item[tabu]
\ChangedAt{%
v2.02:\RecPack \Package{tabu} ist 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}(\Package{tabu})'none' und
\Environment{longtabu}(\Package{tabu})'none' 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 Version~v2.8 seit geraumer Zeit ein paar
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. Der Anwender sollte sich zumindest bewusst sein, dass er
mit der Version~v2.8 gesetzte Dokumente gegebenenfalls später anpassen muss.
}%
\index{Tabellen|?)}%
\end{packages}
\subsubsection{Gleitobjekte}
\index{Gleitobjekte|?(}%
%
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]
Mit diesem Paket kann die Ausgabe von Gleitobjekten vor Kapiteln und wahlweise
Unterkapiteln erzwungen werden.
\item[flafter]
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]
Mit der Option \Option{captions=\PSet}(\Package{koma-script})'none'|declare|
bieten die \KOMAScript-Klassen bereits einige Möglichkeiten zum Formatieren
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]
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]
Mit diesem Paket können global wirksame Einstellungen und Formatierungen für
\emph{alle} Gleitobjekte eines Dokumentes über die Paketoptionen oder mit
\Macro{floatsetup}[\PParameter{\dots}](\Package{floatrow})'none'
vorgenommen werden. So kann unter anderem die verwendete Schrift innerhalb
der Umgebungen \Environment{figure} und \Environment{table} eingestellt
werden (\Macro*{floatsetup}[\PParameter{font=\dots}]). Das typografisch
richtige Setzen von Abbildungs\textbf{unterschriften}
\Macro*{floatsetup}[\POParameter{figure}\PParameter{capposition=bottom}])
sowie Tabellen\textbf{überschriften}
(\Macro*{floatsetup}[\POParameter{table}\PParameter{capposition=top}])
kann automatisch erzwungen werden~-- unabhängig von der Position des Befehls
zur Beschriftung
\Macro{caption}(\Package{koma-script},\Package{caption})'none'
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}(\Package{koma-script})'none'
genutzt werden.
\index{Gleitobjekte|?)}%
\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 einer Referenz auf die Quelle 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 die Grafiken werden ähnlich wie das Dokument \enquote{programmiert}
oder Zeichenprogramme, welche wiederum die Ausgabe oder das Weiterreichen von
Text an \hologo{LaTeX} unterstützen, werden genutzt.
% 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.
\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 \Engine{pdfLaTeX}.
\item[pstricks]
Das Paket \Package{pstricks} stellt die zweite Variante zum Programmieren
von Grafiken dar. Mit diesem Paket existieren \emph{noch} mehr Möglichkeiten
bei der Erstellung eigener Grafiken, da mit \Package{pstricks} auf PostScript
zugegriffen werden kann und einige der bereitgestellten Befehle davon rege
Gebrauch machen. Der daraus resultierende Nachteil ist, dass mit
\Package{pstricks} die direkte Verwendung von \Engine{pdfLaTeX} nicht
möglich ist.
Die Grafiken aus den Umgebungen
\Environment{pspicture}(\Package{pstricks})'none' müssen deshalb zunächst
über den Pfad \Path{latex \textrightarrow{} dvips \textrightarrow{} ps2pdf}
in PDF"~Dateien gewandelt werden. Diese lassen sich von \Engine{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,pdftricks2]
Das Paket automatisiert die Erzeugung der \Package{pstricks}"=Grafiken mit
dem Paket \Package{pst-pdf}. Dafür muss \Engine{pdfLaTeX} per Option mit
Schreibrechten ausgeführt werden. Dazu ist der Aufruf von \Path{pdflatex}
mit der Option \Path{-{}-shell-escape} respektive \Path{-{}-enable-write18}
notwendig. Bitte beachten Sie dazu ebenfalls die Hinweise in
\autoref{sec:tips:auto-pst-pdf}. Eine Alternative dazu ist das Paket
\Package{pdftricks2}.
\end{packages}
\end{packages}
%
Im Tutorial \Tutorial{treatise} wird für \Package{pstricks} und \Package{tikz}
jeweils ein Beispiel gegeben. Um bei der Erstellung von Grafiken mit einem der
beiden Paketen 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.
%
\begin{packages}
\item[svg]
Mit diesem Paket können alle notwendigen Schritte zum Einfügen einer
SVG"~Grafik in ein \hologo{LaTeX}"~Dokument automatisiert durchgeführt
werden. In \autoref{sec:tips:svg} sind weitere Hinweise hierzu zu finden.
\end{packages}
\index{Grafiken|?)}%
\subsubsection{Querverweise und Lesezeichen}
\index{Querverweise|?(}%
\index{Lesezeichen|?(}%
%
Für das Erzeugen von Querverweisen auf bestimmte Gliederungsebenen, Tabellen,
Abbildungen oder auch Gleichungen muss für diese besagten Elemente zunächst mit
\Macro{label}[\Parameter{Label}] ein \emph{eindeutiges} Label erzeugt werden,
auf welches im Dokument entweder mit \Macro{ref} oder nach dem Laden von
\Package{hyperref} besser noch mit \Macro{autoref}(\Package{hyperref})'none'
referenziert werden kann. In \autoref{sec:tips:references} sind diesbezüglich
weitere Informationen zu finden.
%
\begin{packages}
\item[hyperref]
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[bookmark]
Dieses Paket verbessert und erweitert die von \Package{hyperref} angebotenen
Möglichkeiten zur Erstellung von Lesezeichen~-- auch Outline"=Einträge~-- im
PDF"~Dokument. Zum Beispiel können Schriftfarbe- und "~stil geändert werden.
\item[varioref]
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 doppelseitigen Satz auf die
gegenüberliegende Seite erfolgt, werden passende Textbausteine für diesen
verwendet.
\item[cleveref]
Dieses Paket vereint die Vorzüge der automatischen Benennung referenzierter
Objekte mit dem Befehl \Macro{autoref}(\Package{hyperref})'none' aus dem
Paket \Package{hyperref} und der Verwendung von \Package{varioref}.
\index{Lesezeichen|?)}%
\index{Querverweise|?)}%
\end{packages}
\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:Bugfix für Verwendung der Klasse \Class{standalone} aus dem Paket
\Package{standalone}%
}
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:\RecPack \Package{subfiles}}
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}(\Package{subfiles})'none' 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 nicht in die vorherigen Kategorien eingeordnet
werden konnte.
%
\begin{packages}
\item[crop]
\index{Beschnittzugabe}\index{Schnittmarken}%
Hiermit können eine Beschnittzugabe sowie Schnittmarken~-- beispielsweise für
Poster~-- erzeugt werden. Hierzu ist in \autoref{sec:tips:crop} ein Beispiel
zu finden.
\item[marginnote]
\index{Randnotizen}%
Randnotizen, welche mit \Macro{marginpar}(\Package{koma-script})'none' erzeugt
werden, sind spezielle Gleitobjekte in \hologo{LaTeX}. Das kann dazu führen,
dass eine Notiz am Blattrand nicht direkt an der ursprünglich intendierten
Stelle gesetzt wird. Das Paket \Package{marginnote} stellt den Befehl
\Macro{marginnote}(\Package{marginnote})'none' für nicht"~gleitende
Randnotizen zur Verfügung. Das Paket \Package{mparhack} ist eine Alternative
dazu.
\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[listings]
\index{Quelltextdokumentation}%
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:\RecPack \Package{listings}}
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[afterpage]
Der Befehl \Macro{afterpage}[\PParameter{\dots}](\Package{afterpage})'none'
kann genutzt werden, um den Inhalt aus dessen Argument direkt nach der
Ausgabe der aktuellen Seite auszuführen.
\item[pagecolor]
\index{Farben}%
Mit dem Paket kann die Hintergrundfarbe der Seiten im Dokument geändert
werden.
\item[pdfpages]
Das Paket ermöglicht die Einbindung von einzelnen oder mehreren PDF"~Dateien.
\item[filecontents]
\index{Minimalbeispiel|?}%
Dieses Paket erweitert die durch den \hologo{LaTeX}"=Kernel bereitgestellte
Umgebung \Environment{filecontents}(\Package{filecontents})'none' dahingehend,
dass bereits existierende Dateien überschrieben werden können.
\item[mwe,blindtext]
\index{Minimalbeispiel|?}%
\ChangedAt{v2.02:\RecPack \Package{mwe}}
Mit dem Paket \Package{mwe} lassen sich sehr einfach Minimalbeispiele
erzeugen, die sowohl Blindtexte als auch Abbildungen enthalten sollen. Werden
keine Grafiken sondern lediglich Textabschnitte etc. benötigt, ist das Laden
von \Package{blindtext} ausreichend.
\item[coseoul]
Mit diesem Paket kann die Struktur der Gliederung relativ erstellt werden.
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[calc]
\index{Berechnungen}%
Normalerweise lassen sich Berechnungen im Dokument lediglich mit
Low"~Level"~\hologo{TeX}"=Primitiven durchführen. 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ähler}%
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[filemod]
Wird entweder \Engine{pdfLaTeX} oder \Engine{LuaLaTeX} als Textsatzsystem
eingesetzt, können mit diesem Paket das Änderungsdatum zweier Dateien
miteinander verglichen und in Abhängigkeit davon definierbare Aktionen
ausgeführt werden.
\item[xparse]
\index{Befehlsdeklaration}%
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,keyval,kvoptions,pgfkeys]
\index{Befehlsdeklaration}%
\ChangedAt{v2.02:\RecPack \Package{xkeyval}}
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[scrlfile]
\index{Paketabhängigkeiten}
\ChangedAt{v2.05:\RecPack \Package{scrlfile}}
Dieses \KOMAScript-Paket erlaubt es, auf das Laden von Klassen oder Paketen
direkt davor oder danach zu reagieren, um beispielsweise Paketabhängigkeiten
aufzulösen oder nach dem Laden eines bestimmten Paketes gezielt Befehle
anzupassen. Mehr dazu ist im \scrguide zu finden.
\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 unbedingt
die Dokumentation beachtet werden.
\item[scrwfile,morewrites]
Falls der Fehler \texttt{No room for a new \textbackslash write} erscheint,
kann dieser möglicherweise mit einem dieser beiden Pakete behonben werden.
Mehr dazu in \autoref{sec:tips:write}.
\item[mparhack]
Zur Behebung falsch gesetzter Randnotizen wird ein Bugfix für
\Macro{marginpar}(\Package{koma-script})'none' bereitgestellt. Alternativ
dazu lässt sich auch \Package{marginnote} verwenden.
\item[fix-cm]
Sollte bei einer Schriftgrößenänderung eine oder mehrere Warnungen der Form
\texttt{Font shape `T1/cmr/m/n' in size <...> not available} erscheinen, so
sollte das Paket \Package{fix-cm} \emph{vor} der Klasse geladen werden. Siehe
dazu \autoref{sec:tips:fontsize}.
\end{packages}
|