Posted-By: auto-faq 3.3 (Perl 5.008)
Archive-name: de-tex-faq/part5 Posting-Frequency: monthly Copyright-Notice: siehe Abschnitt 1.1/see Section 1.1 URL: http://www.dante.de/faq/de-tex-faq/ See reader questions & answers on this topic! - Help others by sharing your knowledge --- DE-TeX-FAQ Beginn Teil 5 --- Fragen und Antworten (FAQ) �ber das Textsatzsystem TeX und DANTE, Deutschsprachige Anwendervereinigung TeX e.V. Bernd Raichle, Rolf Niepraschk und Thomas Hafner Version 72 vom September 2003 ------------------------------------------------------------------------ 5 TeX, LaTeX, Makros etc. (I) 5.1 LaTeX - Grundlegendes 5.1.1 Was ben�tige ich, wenn ich von LaTeX 2.09 auf LaTeX2e umsteigen bzw. eine neuere LaTeX-Version installieren will? Grunds�tzlich sollte man sich beim Umstieg von 2.09 oder beim Update einer �lteren 2e-Version immer die komplette LaTeX-Distribution im Verzeichnis ``base'' besorgen und installieren, nie einzelne Dateien oder nur einzelne Class-Dateien. Nach dem Entpacken der Distribution und Installation der einzelnen Dateien ist ein neues Format zu generieren. Die Anleitung ``install.txt'' enth�lt genauere Informationen und wichtige Hinweise - bitte durchlesen! Notwendig: * alle Dateien im Verzeichnis ``base''. * alle Zusatzpakete wie `graphics' und damit alle Dateien in den Verzeichnissen unter dem Verzeichnis ``required''. * die zus�tzlichen CM-Schriften `cmmib' und `cmbsy' in den Designgr��en 5, 6, 7, 8 und 9 Punkt. Optional, da schon in ``base'' enthalten: * Will man sich, insbesondere auf langsameren Rechnern, das Entpacken der dtx-Dateien in ``base'' sparen, ben�tigt man noch zus�tzlich die Dateien im Verzeichnis ``unpacked''. * Ebenso befindet sich im Verzeichnis ``doc'' die schon formatierte Dokumentation, also die Dateien ``base/???guide.tex''. base: CTAN: macros/latex/base/ CTAN: macros/latex/required/ line/lcircle/lasy: CTAN: fonts/latex/mf/ CTAN: fonts/latex/tfm/ cmmib/cmbsy: CTAN: fonts/amsfonts/sources/extracm/ CTAN: fonts/amsfonts/tfm/ oder CTAN: fonts/cm/sauter/ optional: CTAN: macros/latex/unpacked/ CTAN: macros/latex/doc/ 5.1.2 Ich habe geh�rt, da� es f�r meine LaTeX-Versionen Patches gibt. Welche Dateien ben�tige ich, was mu� ich tun? F�r jeden LaTeX-Patch ben�tigt man immer zumindest die Datei ``patches.txt'' . Sie beschreibt genau, welche weitere Dateien man noch zu einem _kompletten_ Patch ben�tigt. In vielen F�llen gibt es neben der Datei ``ltpatch.ltx'' , die LaTeX-Kernel-Patches enth�lt, noch neue Versionen weiterer Dateien! N�heres in ``patches.txt'' . Nachdem man die Dateien geholt und installiert hat, mu� ein neues Format erstellt und installiert werden, damit die Patches in ``ltpatch.ltx'' aktiv werden. Zur Kontrolle: Danach sollte beim Formatieren eines Dokuments nach der Meldung `LaTeX2e <1999/06/01>' noch der Zusatz `patch level X' erscheinen, wobei `X' mit dem installierten Patch �bereinstimmen mu�. patches.txt: CTAN: macros/latex/base/patches.txt 5.1.3 Was kann ich mit einer Datei mit Endung `.dtx' anfangen? Ben�tige ich dazu auf alle F�lle LaTeX? Dateien mit `.dtx' sind sogenannte `docstrip archive files', also ein Archiv, aus dem man mit dem Programm `docstrip' verschiedene Dateien entpacken kann. Zum Entpacken ben�tigen Sie nur die Datei ``docstrip.tex'' oder ``docstrip.dtx'' und das Programm TeX. ``docstrip.tex'' k�nnen Sie mit LaTeX 2.09, LaTeX2e und auch mit Plain-TeX verwenden. Wie Sie eine `.dtx'-Datei entpacken m�ssen, sollten Sie aus einer Beschreibung zu Beginn der `.dtx'-Datei oder einer separaten README-Datei entnehmen k�nnen. Existiert eine gleichnamige Datei mit Endung `.ins', so k�nnen Sie in den meisten F�llen das `.dtx'-Archiv ``file.dtx'' mit ``tex file.ins'' entpacken. In der Regel erzeugt dieser Aufruf eine oder mehrere `.sty'-Dateien sowie weitere Hilfs- und Beispieldateien. N�heres entnehmen Sie bitte der Beschreibung des Archivs. Die Dokumentation eines Pakets und der Makros sind ebenso in einem `.dtx'-Archiv enthalten. Zum Formatieren dieser Dokumentation ben�tigen Sie jedoch ein installiertes LaTeX2e - f�r einige �ltere Archive reicht auch noch das alte LaTeX 2.09. �blicherweise kann die Dokumentation (`.dvi'-Datei) durch ``latex file.dtx'' oder ``latex file.drv'' erzeugt werden. Ein Befehlsindex eines Paketes kann i.d.R. durch makeindex -s gind.ist file und einen anschlie�enden erneuten LaTeX-Lauf erzeugt werden. Bei der Erzeugung der Dokumentation wird der dokumentierte Quellcode meist nicht aufgenommen; um ihn einzuschlie�en, kann vor dem LaTeX-Lauf im aktuellen Verzeichnis eine Datei ``ltxdoc.cfg'' angelegt werden, die die folgende Zeile enth�lt: \AtBeginDocument{\AlsoImplementation} N�heres ist, falls vorhanden, der mitgelieferten Beschreibung des Archivs zu entnehmen. Hinweis: Mit LaTeX ab Dezember 1995 wurde eine Version des Tool ``docstrip.dtx'' verteilt, das gleichzeitig mehrere Dateien aus einem Archiv entpacken kann und damit um einiges schneller ist. Deshalb lohnt es sich, wenn Sie eine �ltere Version benutzen, diese durch die neue Version zu ersetzen. docstrip: CTAN: macros/latex/base/docstrip.dtx CTAN: macros/latex/base/docstrip.ins (Bestandteil von LaTeX, kann aber auch mit Plain-TeX verwendet werden!) 5.1.4 Wie installiert man am besten ein neues Paket, eine neue Klasse oder eine neue Schrift in einem bestehenden TeX-System? Aktuelle TeX-Systeme legen alle Dateien in einer hierarchischen Struktur gem�� dem TeX-Directory-Structure-Standard (TDS, siehe Frage 3.1.7) an. Das Wurzelverzeichnis eines solchen Baumes lautet meist ``texmf''. Unter teTeX, fpTeX und anderen TeX-Systemen werden die Suchpfade in der Datei ``texmf.cnf'' angegeben, deren Ort man mit ``kpsewhich texmf.cnf'' herausfinden kann. F�r nachtr�glich installierte Pakete empfiehlt es sich, diese in einer eigenen lokalen Verzeichnishierarchie zu installieren (beispielsweise unter dem Verzeichnis ``texmf.local'', siehe Variable TEXMFLOCAL in ``texmf.cnf''). Besteht ein LaTeX-Paket nach dem eventuell notwendigen Entpacken der dtx-Dateien aus einer Einzeldatei, so wird diese in der TDS-Hierarchie in ``texmf.local/tex/latex/misc/'' abgelegt. Geh�ren zu dem Paket mehrere sty-, cls-, fd- oder �hnliche Dateien, so werden diese in ein neu erzeugtes Verzeichnis unter ``texmf.local/tex/latex/_Paketname_'' verschoben. Schriften, Dokumentation, BibTeX-Dateien, dvips-Konfigurationsdateien u.�. werden analog gem�� TDS in entsprechende Unterverzeichnisse unter ``texmf.local'' verschoben. N�heres sollte in der README-Datei des Pakets erl�utert sein. Zum Abschluss darf man nicht vergessen, die sogenannte _Filename-Database_ auf den aktuellen Stand zu bringen, da sonst die neu installierten Dateien nicht gefunden werden. N�heres finden Sie in der Dokumentation Ihres TeX-Systems und unter Frage 8.5.10. Einige TeX-Systeme bieten ein Konfigurations-Werkzeug, um zus�tzliche Pakete nachtr�glich zu installieren oder vorhandene Pakete zu aktualisieren. Unter fpTeX geht dies �ber das Setup-Men�, unter MikTeX verwendet man das Options-Tool. Beide sorgen nach der �nderung automatisch f�r die Aktualisierung der Dateinamens-Datenbank. Managing a one-person TeX http://www.ctan.org/installationadvice/ system: 5.1.5 Wie gehe ich am besten vor, wenn ich eine bestehende LaTeX-Klasse �ndern bzw. an meine eigenen Vorgaben anpassen will? Statt von einer bestehenden Klasse wie ``article.cls'' eine Kopie unter eigenem Namen, hier als Beispiel ``detexfaq.cls'', anzulegen, empfiehlt es sich, eine schon bestehende Klasse zu laden und anschlie�end alle notwendigen �nderungen durchzuf�hren. Hierzu bietet LaTeX eine Reihe von M�glichkeiten, die in der Dokumentation f�r Klassen-Autoren ``clsguide.tex'' beschrieben sind. Als einfaches Beispiel h�tte damit die neue Klasse ``detexfaq.cls'', in der als Standard-Optionen `11pt,a4paper' verwendet werden und die beiden Pakete `german' und `remreset' bereits implizit geladen werden, folgendes Aussehen: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE %% detexfaq.cls -- DE-TeX-FAQ's modified ``article.cls'' \NeedsTeXFormat{LaTeX2e}\relax \ProvidesClass{detexfaq}[2000/05/11 Article Class from DE-TeX-FAQ] %% Lade nun ``article.cls'', wobei als Default-Optionen ``11pt'' und %% A4-Papierformat als Default gesetzt werden (fuer diese muss explizit %% eine Deklaration hier vorhanden sein) und alle weiteren vom Autor %% gegebenen Optionen einfach `durchgereicht' werden: \DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{article}} \DeclareOption{11pt}{\PassOptionsToClass{\CurrentOption}{article}} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} \ExecuteOptions{a4paper,11pt} \ProcessOptions\relax \LoadClass{article} %% Ab hier kann man Aenderungen an den Makros der geladenen Klasse %% durchfuehren (bitte mit \renewenvironment oder \renewcommand!), %% Pakete hinzuladen und/oder eigene Anweisungen und Umgebungen %% definieren: \RequirePackage{german} \RequirePackage{remreset} %% Schliesslich wird die Klassendatei `sauber' beendet': \endinput %% End of ``detexfaq.cls'' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE Diese Vorgehensweise hat einige Vorteile. So bleibt die eigene Klassendatei relativ klein und enth�lt nur die notwendigen �nderungen und Erg�nzungen. �ndert sich an der verwendeten Klasse etwas, z.B. werden Fehler korrigiert, so sind in den meisten F�llen keinerlei �nderung an der eigenen Klassendatei zum Nachvollziehen dieser �nderungen notwendig. Daneben dokumentiert man explizit, von welcher Klasse und Versionsnummer man als Basis ausgegangen ist, zumal diese Klasse und alle geladenen Pakete mit ihren Versionsnummern bei einem im Dokumentkopf eingef�gten \listfiles auftauchen. clsguide.tex: CTAN: macros/latex/base/ 5.1.6 Wie kann ich unter LaTeX eine Anweisung mit optionalem Parameter definieren? In LaTeX kann man mit den Anweisungen \newcommand, \renewcommand, \newenvironment und \renewenvironment eigene Anweisungen und Umgebungen definieren, die einen optionalen Parameter als erstes Argument besitzen. N�here Informationen finden sich in der Dokumentation f�r Autoren ``usrguide.tex''. usrguide.tex: CTAN: macros/latex/base/ 5.1.7 Wie erkenne ich bei einer Anweisung mit optionalem Parameter, ob dieser vom Autor angegeben wurde? Mit Hilfe des im Paket `ifthen' definierten Vergleichs \equal kann man das optionale Argument mit dem voreingestellten Wert vergleichen. Das folgende Beispiel geht davon aus, da� der voreingestellte Wert leer sein soll: \usepackage{ifthen} \newcommand{\meineanweisung}[2][]{% #1 = optional, #2 = notwendig \ifthenelse{\equal{#1}{}}{% % Autor hat kein oder leeres optionales Argument angegeben }{% % Autor hat optionales Argument angegeben }} ifthen: CTAN: macros/latex/base/ 5.1.8 Wie kann ich in LaTeX eine Anweisung mit mehr als einem optionalen Parameter definieren? Mit \newcommand kann man nur ein Makro mit einem einzigen optionalen Parameter definieren. Will man ein Makro mit mehr als einem optionalen Parameter definieren, so mu� man hierzu mehrere Makros mit jeweils einem optionalen Parameter definieren, die den Wert des Parameters zwischenspeichern und das n�chste Makro aufrufen. Hier ist ein Beispiel f�r ein Makro \cubic[a][b][c]{d} mit drei optionalen Argumenten: \newcommand{\erstesargument}{} \newcommand{\zweitesargument}{} \newcommand{\cubic}[1][a]{% erstes optionales Argument \begingroup % Definitionen von \...argument lokal halten \renewcommand{\erstesargument}{#1}% opt. Argument speichern \cubicZwei} \newcommand{\cubicZwei}[1][b]{% zweites optionales Argument \renewcommand{\zweitesargument}{#1}% opt. Argument speichern \cubicDrei} \newcommand{\cubicDrei}[2][c]{% drittes opt. + notwendiges Argument \({\erstesargument}x^3+{\zweitesargument}x^2+#1x+#2\)% \endgroup} Eine weitere M�glichkeit bietet das Paket `twoopt': \newcommandtwoopt{\Cmd}[3][DefaultA][DefaultB]{Args: #1, #2, #3} In Anlehnung an die Standard-LaTeX-Definitionen existieren auch die Anweisungen \renewcommandtwoopt und \providecommandtwoopt. twoopt: CTAN: macros/latex/contrib/oberdiek/ 5.1.9 Wie kann ich innerhalb des optionalen Arguments einer Anweisung zus�tzliche eckige Klammern, beispielsweise die eines optionalen Arguments einer anderen Anweisung, verwenden? Im Unterschied zu den geschwungenen Klammern {...}, die immer paarweise und korrekt geschachtelt werden m�ssen, sucht LaTeX bei eckigen Klammern einfach nach der n�chsten schlie�enden eckigen Klammer ], ohne auf korrekte Schachtelung dieser Klammern zu achten. Um dies zu verhindern, mu� man einfach innerhalb der eckigen Klammern [...] ein geschweiftes Klammerpaar einf�gen, wie dies hier als Beispiel f�r \twocolumn gezeigt wird: \twocolumn[{ ... \sqrt[3]{x^2} ... }] 5.2 LaTeX - Probleme beim Umstieg von LaTeX 2.09 5.2.1 Anweisungen wie \tenrm, \twlrm, \fivrm etc., die von einigen Paketen wie PiCTeX verwendet werden, sind nicht mehr definiert. Was mu� ich da �ndern? Diese Namen f�r Schriften wurden nie dokumentiert und sollten im alten LaTeX 2.09 nur LaTeX-intern verwendet werden. Da das Fontauswahlschema namens NFSS2 in LaTeX2e komplett neu geschrieben wurde, sind diese ehemals internen Namen nicht mehr vorhanden. Es ist daher am besten, diese alten Pakete so umzuschreiben, da� diese internen Schriftnamen nicht mehr verwendet werden. In der Zwischenzeit kann man mit Hilfe des Paketes `rawfonts' diese Namen nachdefinieren, wie z.B. mit \usepackage[only,fivrm]{rawfonts} f�r PiCTeX. rawfonts.sty: CTAN: macros/latex/required/ 5.2.2 Beim Umstieg von LaTeX 2.09 mit NFSS (Version 1) auf LaTeX2e �ndert sich auch das Verhalten der Anweisungen \rm, \bf, \it etc. auf das Verhalten des Original-LaTeX 2.09. Wie bekomme ich das alte inkompatible Verhalten von NFSS Version 1? Mit dem Paket `newlfont' erh�lt man das Verhalten von NFSS v1, ohne da� man in den meisten F�llen das Dokument �ndern mu�: \usepackage{newlfont} F�r neue Dokumente sollte man jedoch besser gleich die neuen Anweisungen \textrm{...}, \textbf{...}, \textit{...} etc. verwenden. Diese Anweisungen haben dar�ber hinaus den Vorteil, da� eine eventuell notwendige `italic correction' automatisch eingef�gt wird. newlfont.sty: CTAN: macros/latex/required/ 5.2.3 Einige mathematische Symbole (\Box, \lhd, \leadsto, \Join, \mho, \sqsubset etc.) sind nicht mehr definiert - wieso? Die LaTeX-Symbolschriften `lasy10' und `lasyb10' enthalten nur sehr wenige relativ selten benutzte Symbole. Daher werden diese Schriften in LaTeX2e nicht mehr standardm��ig geladen, sondern m�ssen vom Benutzer durch Laden von `latexsym' aktiviert werden: \usepackage{latexsym} 5.2.4 Kann es sein, da� es in LaTeX2e den Parameter \footheight und die internen Parameter \@maxsep und \@dblmaxsep nicht mehr gibt? Gibt es einen Ersatz? Der Parameter \footheight und die internen Parameter \@maxsep und \@dblmaxsep wurden in LaTeX 2.09 nie ausgewertet. Deshalb wurden sie in LaTeX2e entfernt, um die dadurch gesparten L�ngenregister f�r andere Zwecke einsetzen zu k�nnen. Zur Anpassung von alten Dokumentstilen an LaTeX2e kann man daher eine Zuweisung an diese Parameter einfach ersatzlos streichen. 5.2.5 Mit �lteren Dokumentklassen bekomme ich den Fehler `! Undefined control sequence.' oder `! LaTeX Error: \mit undefined.' f�r die Schriften \mit und \cal. Wieso? Bis LaTeX2e <1994/12/01> wurden \cal und \mit im Kernel definiert. Weil diese Definitionen aber in jeder Standard-Dokumentklasse durch robustere Varianten ersetzt werden, hat das LaTeX-Team beschlossen, \cal und \mit nicht mehr im Kernel vorzudefinieren. Damit ist es aber erforderlich, da� alle Dokumentklassen, die \cal und \mit nicht definieren oder mit \renewcommand umdefinieren, angepa�t werden m�ssen. Bei den Standard-Dokumentklassen hat das niemand bemerkt, da die notwendigen Anpassungen dieser Dateien automatisch mit einer neuen LaTeX-Version mitinstalliert werden. 5.3 (Silben-)Trennung, Absatz-, Seitenumbruch 5.3.1 Wie kann ich LaTeX an die neue deutsche Rechtschreibung anpassen? Gibt es Trennmuster f�r die neuen Trennregeln? Die ``alten'' Trennmuster wurden von Hand so angepa�t, da� die neuen Trennregeln beachtet werden, wobei die Trennung weiterhin eher nach Wortherkunft und nicht nach strikter Silbentrennung, die ebenfalls erlaubt ist, erfolgt. Diese Trennmuster sind in der Datei ``dehyphn.tex'' (vormals ``gnhyph01.tex'') verf�gbar. Um diese Trennmuster nutzen zu k�nnen, ben�tigt man ``german.sty'' ab Version 2.5e. dehyphn: CTAN: language/hyphenation/dehyphn.tex german.sty: CTAN: language/german/ 5.3.2 Warum trennt (La)TeX Worte mit Umlauten nicht oder nicht korrekt? Wie TeX Worte mit Umlauten trennt, h�ngt davon ab, ob die verwendete Schrift Umlaute als eigene Lettern enth�lt und ob man auf diese Lettern durch entsprechende Paket-Deklarationen beim Setzen eines Textes auch zugreift. Bei den alten CM-Schriften mu� TeX Umlaute aus einem Buchstaben und einem Akzent zusammenbasteln, da diese keine Lettern f�r Umlaute enthalten. Diese Akzent-Konstruktion irritiert TeXs Trennalgorithmus, und so trennt TeX nur den Wortteil bis zum ersten Umlaut. Im Paket `german' und _einigen_ Babel-Versionen wird durch einen aus dem TeXbook (Anhang D, S. 394, \allowhyphens) entnommenen Trick erreicht, da� alle Wortteile zwischen den Umlauten einzeln getrennt werden. Bei dieser Vorgehensweise werden nicht alle Trennstellen gefunden oder es treten teilweise falsche Trennungen (Bsp.: "ubert-ragen statt "uber-tra-gen) auf. Abhilfe schaffen nur Schriften, die die Umlaute und andere akzentuierte Zeichen als einzelne Lettern enthalten. Ein Beispiel hierf�r sind alle T1-kodierten Schriften, darunter die EC-Schriftfamilie (siehe Frage 10.1.3) und die T1-kodierten PostScript-Schriften. Unter neueren Versionen von LaTeX und `german.sty' bzw. Babel lassen sich T1-kodierte Schriften recht einfach durch die Deklaration \usepackage[T1]{fontenc} in der Pr�ambel des Dokuments verwenden. 5.3.3 Wie kann ich Trennungsausnahmen mit Umlauten in \hyphenation verwenden? Auch hier gilt, da� man in \hyphenation in den Trennungsausnahmen nur Zeichen verwenden kann, f�r die auch Lettern in der momentan benutzten Schrift existieren (siehe Frage 5.3.2). Da mit CM-Schriften die Umlaute aus zwei Lettern zusammengesetzt werden m�ssen, kann man f�r W�rter mit Umlauten keine Trennungsausnahmen angeben. Erst bei Verwendung von T1-kodierten Schriften, wie der EC-Schriftfamilie, oder auch von Schriften in einer entsprechenden anderen Kodierung, die eigene Lettern f�r Umlaute enthalten, kann man Trennungsausnahmen angeben. Hier ist ein einfaches Beispiel (`german.sty' ist hier nur zum Umschalten auf die deutschen Trennmuster ``dehypht.tex'' notwendig): \documentclass{article} \usepackage{german} \usepackage[T1]{fontenc} \hyphenation{Ver-st\"ar-ker-aus-gang} \begin{document} \showhyphens{Verst\"arkerausgang} % ohne Trennausnahme: Ver-st^^e4r-ke-r-aus-gang % mit Trennausnahme: Ver-st^^e4r-ker-aus-gang \end{document} 5.3.4 Wie kann ich `Hurenkinder' (engl. widows), also einzelne Zeilen eines Absatzes am Kopf von Buchseiten, bzw. `Schusterjungen/Waisenkinder' (engl. clubs), einzelne Absatzzeilen auf der Seite unten, verhindern? TeX kennt die Parameter \widowpenalty und \clubpenalty, mit denen man die `Strafpunkte' festlegen kann, falls ein Hurenkind bzw. ein Schusterjunge beim Seitenumbruch entstehen sollte. Au�erdem gibt es noch den Parameter \displaywidowpenalty f�r Hurenkinder nach einer abgesetzten mathematischen Formel. Da TeX den Wert 10000 als unendlich gro�e Strafe interpretiert, kann man mit den Zeilen \clubpenalty = 10000 \widowpenalty = 10000 \displaywidowpenalty = 10000 Hurenkinder und Schusterjungen komplett unterdr�cken. (Das Paket `schuster' enth�lt genau diese Zeilen.) Man sollte jedoch bedenken, da� man bei einem Satzspiegel mit fester H�he (\flushbottom) und registerhaltigem Satz Hurenkinder und Schusterjungen nur schwerlich verhindern kann - insbesondere wenn man dies bei zweiseitigem Druck f�r jede Doppelseite beachten mu�. Hier ist es oft besser, die einzelne Zeile zuzulassen oder zu versuchen, einen Absatz durch geringf�gige Umformulierung eine Zeile l�nger oder k�rzer zu machen. Weiterhin gibt es die M�glichkeit, Abs�tze, die schon sehr voll sind, mit \looseness=1 um eine Zeile zu dehnen oder Abs�tze, die recht leer sind, mit \looseness=-1 um eine Zeile zu k�rzen. Manchmal f�hrt dies jedoch zu merklichen �nderungen des Grauwerts des Absatzes. (Achtung: Der Wert von \looseness gilt au�erhalb von Listen-Umgebungen nur f�r den aktuellen Absatz. Innerhalb einer Listen-Umgebung mu� die Zuweisung zusammen mit \par durch eine Gruppe lokal gehalten werden {\looseness=1 \par}, wenn die �nderung nur f�r einen Absatz gelten soll.) 5.3.5 Wie mu� in LaTeX die Datei ``hyphen.cfg'' aussehen, um die deutschen Trennmuster ``dehypht.tex'' (vormals ``ghyph31.tex'') in das LaTeX-Format einzubinden? Eine Anleitung zur Installation der deutschen Trennmuster enth�lt ``gerdoc'', die Kurzbeschreibung des German-Styles vom Mai 1997. Diese Anleitung beschreibt auch die Installation der Trennmuster in Plain-TeX und LaTeX 2.09. Beispiel von ``hyphen.cfg'' f�r LaTeX: %% Konfigurationsdatei -- Trennmuster: `hyphen.cfg' \message{== Loading hyphenation patterns:} \chardef\l@USenglish=\language \chardef\l@english=\l@USenglish %% british english als `Dialekt' \input hyphen \newlanguage\l@german \language=\l@german \chardef\l@austrian=\l@german \input dehypht \newlanguage\l@ngerman \language=\l@ngerman \input dehyphn %% weitere Sprachen nach folgendem Schema: % \newlanguage\l@SPRACHE \language=\l@SPRACHE % \chardef\l@DIALEKT=\l@SPRACHE % \input SPRACHhyphen %% Default-Trennmuster: USenglish \language=\l@USenglish \lefthyphenmin=2 \righthyphenmin=3 \endinput _Hinweis:_ Einige Distributionen benutzen stillschweigend die Datei ``hyphen.cfg'' aus dem Babel-Paket. Au�erdem wurde meist ``hyphen.tex'' in ``ushyph1.tex'' umbenannt, um unter dem Namen ``hyphen.tex'' die Datei ``hyphen.cfg'' aus Babel auch f�r Plain-TeX einbinden zu k�nnen. In diesem Fall f�hrt ein ``\input hyphen'', wie im obigen Beispiel beschrieben, zu einer Endlosschleife! gerdoc: CTAN: language/german/gerdoc.tex 5.3.6 Wieso werden Texte in `typewriter'-Schriften nicht getrennt? Gibt es eine M�glichkeit, da� doch getrennt werden kann? TeX trennt nur, wenn die aktuell verwendete Schrift einen Divis (Trennungsstrich) besitzt. Dazu ist jeder Schrift ein Divis durch den Parameter \hyphenchar<font> zugeordnet, der bei den meisten Schriften auf den Wert `\-, also auf das Zeichen ``-'', gesetzt ist. Bei den `typewriter'-Schriften ist dieser Wert aber auf -1 gesetzt, d.h. auf ein nicht vorhandenes Zeichen. Damit ist die Trennung f�r diese Schriften unterdr�ckt, was in den meisten F�llen auch sinnvoll ist. Will man dennoch, da� TeX einen in `typewriter' gesetzten Textteil automatisch trennt, so mu� man den \hyphenchar f�r diese Schriften auf `\- setzen. Dies geht in LaTeX am einfachsten, wenn man die Anweisung \ttfamily umdefiniert: \newcommand{\origttfamily}{}% sollte noch nicht definiert sein! \let\origttfamily=\ttfamily % alte Definition von \ttfamily sichern \renewcommand{\ttfamily}{\origttfamily \hyphenchar\font=`\-} Man k�nnte alternativ dazu auch die Dateien ``*cmtt*.fd'' �ndern und die Anweisung \hyphenchar\font\m@ne in \DeclareFontFamily entfernen. Dies ist jedoch nicht ratsam, wenn man Texte an andere weitergeben will, da man dann nicht vergessen darf, die so ge�nderten `*.fd'-Dateien mitzugeben. F�r LaTeX 2.09 (oder analog auch f�r Plain-TeX) mu� das Makro \tt umdefiniert werden: \newcommand{\origtt}{} \let\origtt=\tt \renewcommand{\tt}{\origtt \hyphenchar\font=`\-} Wichtiger Hinweis: TeX kann eine Schrift unter unterschiedlichen Namen laden, wobei TeX alle diese Schriften nur ein einziges Mal l�dt und f�r die anderen Schriften nur `Aliases' anlegt. Daher gibt es \hyphenchar<font> nur einmal pro `echten' Font und \hyphenchar<font> ist wie auch \fontdimen<font> ein besonderer Parameter: Alle Zuweisungen an \hyphenchar<font> werden _immer_ global ausgef�hrt. Au�erdem sieht sich TeX diesen Parameter erst am Absatzende beim Umbruch dieses Absatzes an, so da� mit obiger �nderung nicht m�glich ist, die Trennung f�r einen in `typewriter' gesetzten Textteil zu erm�glichen, f�r einen anderen im selben Absatz zu verbieten. Eine weitere Methode, Trennungen f�r `typewriter'-Schriften zu erlauben, bietet das Paket `hyphenat': \usepackage[htt]{hyphenat} Dar�ber hinaus kann es auch benutzt werden, um Trennung selektiv zu erlauben oder zu verbieten. hyphenat: CTAN: macros/latex/contrib/hyphenat/ 5.3.7 Warum trennt LaTeX W�rter mit Bindestrich nicht bzw. nur am Bindestrich, auch wenn die Trennausnahmeliste diese enth�lt? TeX f�gt nach dem aktuellen Trennzeichen implizit (fast) immer einen sogenannten \discretionary ein, der wie \- eine explizite Trennstelle angibt. Da sowohl \- als auch \discretionary dazu f�hren, da� die Trennung in den �brigen Wortteilen unterdr�ckt wird, werden solche W�rter au�er am Trennstrich nicht mehr getrennt. Dieses eigenwillige Verhalten von TeX ist f�r Sprachen, in denen wenige Bindestriche verwendet werden, g�nstig und sinnvoll, da zus�tzliche Trennungen in solchen W�rtern meist die Lesbarkeit erschweren. Um W�rter mit Bindestrichen dennoch zu trennen, existieren zwei M�glichkeiten: Man gibt im Dokumenttext bei diesen W�rtern, insbesondere wo schlecht getrennt werden kann, mit \- oder "- weitere m�gliche Trennstellen vor oder man verwendet "= anstelle des Bindestrichs. N�heres ist hierzu der Dokumentation des Paketes `german' zu entnehmen. Die andere M�glichkeit, die bislang nur von Experten umgesetzt werden kann, besteht bei Schriften, die eine zweite Letter f�r einen Bindestrich besitzen. F�r diese Schriften kann man diese zweite Letter als Trennstrich deklarieren. Zusammen mit den zus�tzlichen Trennmustern in ``hypht1.tex'' ist damit eine automatische Trennung von W�rtern mit Bindestrichen und deren Aufnahme in die Trennausnahmeliste m�glich. german.sty: CTAN: language/german/ hypht1.tex: CTAN: language/hyphenation/hypht1.tex 5.4 Seitenlayout, Layout allgemein, Kopf- und Fu�zeilen (*) 5.4.1 Gibt es neben den Standard-LaTeX-Klassen auch Klassen mit einem `europ�ischeren' Design? Die NTG hat verschiedene Klassenentwickelt, die im Vergleich zum Layout der Standard-LaTeX-Klassen kleinere �berschriften und eine einheitlichere Einr�ckung der Abs�tze und Listen definieren. Das KOMA-Script-Paket enth�lt ebenfalls Klassen (`scrartcl', `scrreprt', `scrbook' und `scrlettr'), die die Standardklassen ersetzen. Es wurden dort eine Vielzahl von �nderungen eingef�hrt, die ein g�nstigeres Aussehen bewirken. So wird z.B. der Satzspiegel besser an das Papierformat angeglichen. N�here Einzelheiten enth�lt die ausf�hrliche Beschreibung in der beigef�gten Datei ``scrguide.dvi''. KOMA-Script: CTAN: macros/latex/contrib/koma-script/ NTG-Klassen: CTAN: macros/latex/contrib/ntgclass/ 5.4.2 Ich suche eine Klasse f�r Briefe, die weitgehend die verschiedenen DIN-Normen und deutschen Gepflogenheiten ber�cksichtigt. Unter LaTeX 2.09 ist `dinbrief' weit verbreitet, der von anderen Autoren auch f�r LaTeX2e verf�gbar gemacht wurde. Dar�ber hinaus findet man im KOMA-Script-Paket die Klasse `scrlettr' und es gibt mit `g-brief' und `akletter' noch weitere Beispiele f�r angepa�te Klassen. dinbrief: CTAN: macros/latex/contrib/dinbrief/ KOMA-Script: CTAN: macros/latex/contrib/koma-script/ g-brief: CTAN: macros/latex/contrib/g-brief/ akletter: CTAN: macros/latex/contrib/akletter/ (Anm.: `akletter' hie� in fr�heren Version `myletter', ein schlechter, weil h�ufig gew�hlter Name.) 5.4.3 Gibt es eine bequemere M�glichkeit, ein Seitenlayout anzugeben, als dadurch, Parameter, wie \textheight, einzeln zu ver�ndern? Mit dem Paket `typearea' aus dem KOMA-Script-Paket kann man den Anteil des Textbereichs an der Gesamtseite abh�ngig von der Schriftgr��e nach Tschicholds (siehe Frage 2.4.2) n-Teilungder Seite berechnen lassen \documentclass[a4paper,11pt]{...} % Ausgangspapiergroesse % BCOR1cm: zusaetzlich 1cm Rand fuer die Bindung. % DIV10: fuer 11pt-Schrift wird 10-Teilung verwendet, bei `oneside' % nimmt der Text 7/10 der Restseite ein. \usepackage[BCOR1cm]{typearea} Die Verteilung der R�nder erfolgt dabei automatisch nach typographischen Gesichtspunkten. Diverse Papiergr��en sowie Hoch- und Querformat werden unterst�tzt, zus�tzliche Formate k�nnen definiert werden, und auch die Option `twoside' wird korrekt behandelt. Ausf�hrliche Informationen dazu findet man in der beigef�gten Datei ``scrguide.dvi''. Mit diesem Paket, das einem die Berechnung eines wohldefinierten Satzspiegels abnehmen kann, kann man auch die LaTeX-Parameter f�r den Textbereich durch eine einfache Schnittstelle setzen: \documentclass[a4paper]{...} % Ausgangspapiergroesse \usepackage{typearea} \areaset[1cm]% % Zusaetzlicher Rand fuer die Bindung {18cm}{25cm} % Textbreite und Hoehe Neben `typearea' gibt es mit `vmargin' und `geometry' drei weitere Pakete, mit denen man die LaTeX-Parameter leichter setzen kann. Bei `vmargin' haben die Makroaufrufe eine festgelegte Parameterreihenfolge, `geometry' dagegen benutzt das Paket `keyval', mit dem die Parameter in beliebiger Reihenfolge angegeben werden k�nnen: \usepackage{geometry} \geometry{left=1.5cm,textwidth=18cm,top=1.5cm,textheight=25cm} \usepackage{vmargin} \setpapersize{A4} \setmargins{1.5cm}{1.5cm}% % linker & oberer Rand {18cm}{25cm}% % Textbreite und -hoehe {12pt}{25pt}% % Kopfzeilenhoehe und -abstand {0pt}{30pt}% % \footheight (egal) und Fusszeilenabstand Eine gute M�glichkeit der visuellen Kontrolle des Ergebnisses bietet das Paket `layouts'. KOMA-Script: CTAN: macros/latex/contrib/koma-script/ script: CTAN: macros/latex209/contrib/script/ geometry: CTAN: macros/latex/contrib/geometry/ vmargin: CTAN: macros/latex/contrib/vmargin/ layouts: CTAN: macros/latex/contrib/layouts 5.4.4 Wieso ist mit der Klasse `book' oder mit der Klassenoption `twoside' der innere Rand kleiner als der �u�ere? Bei doppelseitiger Formatierung werden die Seitenr�nder so gew�hlt, da� sie nicht f�r eine einzelne Seite sondern f�r eine aufgeschlagene Doppelseite passen. Bei dieser bilden die R�nder der beiden Seiten drei vertikale wei�e Streifen (links au�en, mittig, rechts au�en), die gleich breit sein sollen. Da der mittlere Streifen aus den R�ndern zweier Seiten gebildet wird, sind diese auch nur halb so breit. Aus diesem Grund legt man unter LaTeX die Werte f�r \evensidemargin und \oddsidemargin, also f�r den linken Rand der geraden (linken) und den der ungeraden (rechten) Seite, entsprechend fest. N�heres findet sich u.a. in der Dokumentation der KOMA-Script-Klassen. KOMA-Script: CTAN: macros/latex/contrib/koma-script/ 5.4.5 Gibt es einen einfachen Weg, die Seitennummer als `Seite 1 von 16' anzugeben? Mit dem Paket `lastpage' erh�lt man durch ``\pageref{LastPage}'' eine Referenz auf die Seitennummer der letzten Seite. Das Paket `count1to' bietet mit ``\pageref{TotalPages}'' eine Referenz auf die Gesamtzahl der Seiten. Selbiges leistet das Paket `totpages', wobei man mit ``\ref{TotPages}'' die Gesamtzahl aller Seiten, mit ``\pageref{TotPages}'' die Seitennummer der letzten Seite erhalten kann. Diese `pageref'-Anweisungen k�nnen unter Zuhilfenahme des Paketes `fancyhdr' oder des Paketes `scrpage' aus dem KOMA-Script-Paket in der Form `\thepage{} von \pageref{LastPage}' in die Kopf- oder Fu�zeilen eingef�gt werden. lastpage: CTAN: macros/latex/contrib/lastpage/ count1to: CTAN: macros/latex/contrib/ms/ totpages: CTAN: macros/latex/contrib/totpages/ fancyhdr: CTAN: macros/latex/contrib/fancyhdr/ Kurzbeschreibung: CTAN: info/german/fancyhdr/ KOMA-Script: CTAN: macros/latex/contrib/koma-script/ 5.4.6 Wie kann ich den Kolumnentitel, die Kopfzeile der Seite, oder die Fu�zeile nach meinen W�nschen gestalten, z.B. mit einem Strich versehen? Mit dem Paket `scrpage' und den Klassen aus dem KOMA-Script-Paket oder mit dem Paket `fancyhdr' kann man die Kopf- und Fu�zeile einer Seite fast beliebig festlegen. Beide Pakete enthalten eine ausf�hrliche Dokumentation, die auch auf andere Probleme eingeht und daf�r L�sungen und Tips hat. KOMA-Script: CTAN: macros/latex/contrib/koma-script/ fancyhdr: CTAN: macros/latex/contrib/fancyhdr/ Kurzbeschreibung: CTAN: info/german/fancyhdr/ 5.4.7 Wie kann ich einem zweispaltig gesetzten Text (Klassenoption `twocolumn') eine beide Spalten �bergreifende �berschrift und Zusammenfassung voransetzen? Will man nur mit \maketitle eine �berschrift mit den Autorenangaben einspaltig in voller Breite �ber beide Spalten setzen, so verwendet man die Klassenoption `twocolumn' und �ndert sonst nichts, da dies bei den Standard-Klassen und den meisten anderen Klassen automatisch vorgesehen ist. Soll jedoch zus�tzlich zur �berschrift noch weiterer Text wie eine Zusammenfassung einspaltig gesetzt werden, mu� man auf die Klassenoption `twocolumn' verzichten und stattdessen die Anweisung \twocolumn verwenden. Diese hat ein optionales Argument, in der man diejenigen Textteile angibt, die einspaltig �ber die gesamte Breite gesetzt werden sollen. Da die Anweisung \maketitle und die Umgebung `abstract' jedoch nicht einfach im optionalen Argument von \twocolumn verwendet werden kann, mu� man zu einem kleinen, leider nicht ganz sauberen Trick mit \csname@twocolumnfalse\endcsname greifen. \documentclass[...]{article} ... \begin{document} \twocolumn[{\csname @twocolumnfalse\endcsname \maketitle \begin{abstract} ... \end{abstract} }] ... \end{document} Innerhalb des optionalen Arguments von \twocolumn funktionieren leider keine Fu�noten und damit tauchen auch f�r die Anweisung \thanks in der Autorenliste keine Fu�noten auf. Werden diese ben�tigt, mu� man sie von Hand mit \footnotetext nach dem optionalen Argument setzen. 5.4.8 Wie kann ich verhindern, da� der Beginn eines Absatzes eingezogen wird? Ich will Abs�tze stattdessen mit zus�tzlichem Durchschu� markieren. (*) Meist kommt auf diese Frage \setlength{\parskip}{\baselineskip} \setlength{\parindent}{0pt} als Antwort, jedoch f�gt LaTeX \parskip auch an verschiedenen anderen Pl�tzen ein, u.a. auch zu Beginn und am Ende einer Liste und zwischen den Listenelementen. Dies kann man mit dem Paket `parskip' von Hubert Partl zum Teil verhindern, wenn auch nicht komplett. Weitergehende L�sungen finden sich in den KOMA-Script- und NTG-Klassen. Die KOMA-Script-Klassen kennen die Klassenoption `parskip' und verschiedene Varianten davon. Zu den NTG-Klassen geh�ren `artikel3', `rapport3' und `boek3', die ebenfalls ein Layout ohne Absatzeinzug und mit zus�tzlichen Durchschu� bieten. Ob man nun den Beginn eines neuen Absatzes mit einem Einzug oder mit einem zus�tzlichen Durchschu� markiert, ist immer wieder Anla� zu mehr oder weniger ausgiebigen Diskussionen. Um einen weitverbreiteten Irrtum auszur�umen: Der einzuglose Satz hat im ``deutschen Buchsatz'' keine Tradition. Einzugloser Satz, ob nun mit oder ohne zus�tzlichen Durchschu�, ist im Zeitungs- und Zeitschriftensatz weit verbreitet, so da� er manchen vertrauter erscheint als der traditionelle Buchsatz mit Einzug. Letztendlich sollte man bei der Wahl, ob mit oder ohne Einzug, an den Leser denken; wie einfach dieser einen neuen Absatz, den Beginn eines neuen Teils der niedergeschriebenen Gedankenfolge, immer klar und deutlich erkennen kann. parskip.sty: CTAN: macros/latex/contrib/misc/parskip.sty KOMA-Script: CTAN: macros/latex/contrib/koma-script/ NTG-Klassen: CTAN: macros/latex/contrib/ntgclass/ 5.4.9 Wie kann ich den Durchschu� meines Dokuments vergr��ern, wenn ich beispielsweise ein Dokument mit 1,5- oder 2-fachem Zeilenabstand abliefern soll? Abgesehen davon, da� man eine solch starke Vergr��erung des Zeilenabstand vermeiden sollte, hilft das Paket `setspace': \usepackage{setspace} \doublespacing % doppelzeilig oder %\onehalfspacing % anderthalbzeilig setspace: CTAN: macros/latex/contrib/setspace/ 5.4.10 Wieso bekomme ich mit \pagestyle{empty} dennoch eine Seitennummer auf der ersten Seite mit dem Artikeltitel? Fast alle LaTeX-Klassen definieren die Anweisung \maketitle so, da� f�r diese Seite mit \thispagestyle auf den Seitenstil `plain' umgeschalten wird. \thispagestyle �berschreibt damit den gew�hlten Seitenstil f�r diese eine Seite. Um dies zu verhindern, mu� man entweder eine besser geeignete Klasse w�hlen, die Definition in der Klasse �ndern oder folgenden Trick anwenden: _Direkt_ nach der Anweisung \maketitle wird \thispagestyle{empty} eingef�gt. Alternativ kann das Paket `nopageno' verwendet werden. nopageno: CTAN: macros/latex/contrib/carlisle/nopageno.sty 5.4.11 Wie kann ich mein gesamtes LaTeX-Dokument im Querformat setzen? Zu diesem Zweck ist bei der Dokumentenklasse die Klassen-Option `landscape' anzugeben. Zus�tzlich mu� dem verwendeten dvi-Treiber die nun vom Standard abweichende Seitengr��e mitgeteilt werden. Im Falle von `dvips' kann man dies statt per Kommandozeilenoption mit Hilfe des Pakets `geometry' erreichen. \usepackage[dvips]{geometry} geometry: CTAN: macros/latex/contrib/geometry/ 5.4.12 Wie kann ich Teile meines Dokumentes im Querformat setzen? Dokumentteile k�nnen nur gedreht werden, wenn dies auch vom verwendeten dvi-Ger�tetreiber unterst�tzt wird. In den meisten F�llen bedeutet dies, da� die dvi-Datei nach PostScript zu konvertieren ist. Zum Betrachten und Ausdrucken ist ein PostScript-Viewer wie beispielsweise `gv' oder `gsview' unter Verwendung von `Ghostscript' geeignet. Das LaTeX-Bundle `graphics' enth�lt das Paket `lscape', das eine `landscape'-Umgebung zur Verf�gung stellt. Der Inhalt dieser Umgebung wird um 90 Grad gegen den Uhrzeigersinn gedreht und auf eine eigene Seite plaziert. Zu Beginn und am Ende der Umgebung wird ein \clearpage ausgef�hrt: \usepackage{lscape} % etc. \begin{landscape} \begin{figure} gedrehte Abbildung \caption{gedrehte Unterschrift} \end{figure} % evtl. noch weitere Abbildungen/normaler Text/etc. \end{landscape} % etc. Wird ein Dokument mit solcherart gedrehten Seiten per pdfLaTeX zu einer pdf-Datei kompiliert, w�re es w�nschenswert, wenn die gedrehten Seiten bei Betrachtung mit `Acrobat Reader' in aufrechter Schrift, also um 90 Grad gedreht, dargestellt w�rden. In diesem Fall ist das Paket `pdflscape' zu verwenden, das wiederum das Paket `lscape' l�dt und um entsprechende PDF-Anweisungen erg�nzt: \usepackage{pdflscape} % ... Will man nicht ganze Seiten drehen oder st�ren die implizit ausgef�hrten \clearpage-Anweisungen, so kann man auch nur die Anweisung \rotatebox aus dem Paket `graphics' verwenden: \usepackage{graphics} % oder `graphicx' % etc. \begin{figure} \rotatebox{90}{% \begin{minipage}{.6\textheight} gedrehte Abbildung \caption{gedrehte Unterschrift} \end{minipage}% } \end{figure} Das Paket `rotating' bietet statt der einfachen \rotatebox-Anweisung mit all ihren Nachteilen (Stichwort: `verbatim'!) die Umgebungen `rotate', `turn' und `sideways', innerhalb der man (fast) beliebigen Text plazieren kann. F�r den Spezialfall, da� eine Abbildung bzw. Tafel wie mit der Umgebung `landscape' eine komplette Seite f�llt und um 90 Grad gegen den Uhrzeigersinn gedreht werden soll, gibt es die den `figure'- und `table'- entsprechenden `sidewaysfigure'- und `sidewaystable'-Umgebungen. Au�erdem ist eine �ltere Version dieses Pakets auch f�r LaTeX 2.09 verf�gbar. Mehr �ber diese Pakete findet man in der Dokumentation ``grfguide.tex'' des `graphics'-Bundle, der mit `rotating' mitgelieferten Dokumentation und dem Buch `Der LaTeX-Begleiter' (siehe Frage 2.4.1) sowie in Keith Reckdahls Artikel `Using Imported Graphics in LaTeX2e' (siehe Frage 2.4.2). lscape: CTAN: macros/latex/required/graphics/ pdflscape: CTAN: macros/latex/contrib/oberdiek/ rotating: CTAN: macros/latex/contrib/rotating epslatex: CTAN: info/epslatex.ps CTAN: info/epslatex.pdf --- DE-TeX-FAQ Ende Teil 5 --- User Contributions: |
Comment about this article, ask questions, or add new information about this topic: