%%%------------------------------------------------------------------ %%% Filename: l2tabu.tex %%% Author: Mark Trettin %%% Created: 17 Feb 2003 19:01:58 %%% Time-stamp: <19 Dez 2004 23:01:22 (CET) (mark)> %%% Version: $Id: l2tabu.tex,v 1.8 2004/12/19 22:01:40 mark Exp $ %%% %%% Copyright (C) 2003 by Mark Trettin %%%------------------------------------------------------------------ %%% TODO: %%% - \input{../asdf/} anstelle von \input ../asdf/ \documentclass[11pt,a4paper,pagesize,tablecaptionabove,abstracton,pointlessnumbers]{scrartcl} %--------------- Grund Konfiguration (deutsch, 8bit) ---------------- \usepackage[ngerman]{babel} % deutsche Trennmuster \usepackage[latin1]{inputenc} % direkte Eingabe von Umlauten & Co. \usepackage[T1]{fontenc} % T1-Schriften %%% Times/Helvetica/Courier *nur* um die Dateigröße zu minimieren, da %%% diese Schriften nicht eingebunden werden (müssen). \usepackage{mathptmx} % Times/Mathe \rmdefault \usepackage[scaled=.90]{helvet} % Skalierte Helvetica \sfdefault \usepackage{courier} % Courier \ttdefault \shorthandon{"} \newcommand{\TimesRant}{Ach ja, bevor Anfragen kommen: Ja, ich habe Times/""Helvetica\footnote{Arial in der Darstellung des Acrobat Reader}/""Courier benutzt, allerdings nur um die Datei möglichst klein zu halten. \texttt{;-)}} \shorthandoff{"} \typearea[current]{current} % Satzspiegel neu berechnen %------------ zusaetzliche Pakete (Graphik, Tabellen) --------------- \usepackage{xspace} % Automatische Leerzeichen nach Makros \usepackage{booktabs,array} % Schönere Tabellen \usepackage[german]{varioref} % für die veröffentlichte Version % geändert, da die aktuellen fancy- bzw. % varioref-Versionenen nicht % zusammenarbeiten. (Immer noch?!) \usepackage{textcomp} % Zusätzliche Zeichen \usepackage[nofancy]{rcsinfo} % RCS-Informationen im Titel \usepackage{enumerate} \usepackage{calc} % Wir müssen rechnen \usepackage{eurosans} % Euro %--------------------------- Formatierung --------------------------- %%% Captions \setkomafont{caption}{\normalcolor\small\sffamily\slshape} \setkomafont{captionlabel}{\normalcolor\upshape\small\sffamily\bfseries} %--------------------------- PDF Optionen --------------------------- \ifpdfoutput{% % Benötigt KOMA-Scriptklasse \usepackage{hyperref} % hyperref Einstellungen für pdf \hypersetup{% pdfauthor={(c) 2003, 2004 Mark Trettin},% pdftitle={Das LaTeX2e-Sündenregister oder Veraltete Befehle, Pakete und andere Fehler},% pdfsubject={Tipps zu LaTeX2e},% bookmarksopen=true,% Temp backref=true, } \usepackage[activate=normal]{pdfcprot} % Optischer Randausgleich \newcommand{\EMail}[1]{\href{mailto:#1?Subject=[l2tabu.pdf]}{E-Mail: \texttt{#1}}} \newcommand{\News}[1]{\href{news:#1}{\texttt{#1}}} %% Diese Definition ist Mist, da muss ich nochmal drüber nachdenken. :-( \newcommand{\MID}[2]{\href{http://groups.google.com/groups?as_umsgid=#1}% {Message-ID: \texttt{<#2>}}} % \usepackage{color} % Für preview-latex in den pdf-Zweig }% %--------------------------- PS Optionen ---------------------------- {% \usepackage{hyperref} \newcommand{\EMail}[1]{\href{mailto:#1}{E-Mail: \texttt{#1}}} \newcommand{\News}[1]{\href{news:#1}{\texttt{#1}}} \newcommand{\MID}[2]{\href{M-ID: <#1>}{Message-ID: \texttt{<#2>}}} } \usepackage{color} % Für preview-latex bitte auskommentieren %-------------------------- neue Kommandos -------------------------- \newcommand{\TB}{\textbackslash} %%% Dokumentation: SansSerif \newcommand{\Doku}[1]{\textsf{#1}\xspace} %%% Paket ,Klasse, Bibstil: SansSerif, Slanted %\newcommand{\Paket}[2][sty]{\textsf{\textsl{#2.#1}}\xspace} \newcommand{\Paket}[1]{\textsf{\textsl{#1.sty}}\xspace} \newcommand{\Klasse}[1]{\textsf{\textsl{#1.cls}}\xspace} \newcommand{\Bst}[1]{\textsf{\textsl{#1.bst}}\xspace} %%% Optionen: SansSerif \newcommand{\Option}[1]{\textsf{#1}\xspace} %%% \Use{graphicx} --> \usepackage{graphicx} %%% \UseO{dvips}{graphicx} --> \usepackage[dvips]{graphicx} \newcommand{\Use}[1]{\texttt{\TB usepackage\{#1\}}} \newcommand{\UseO}[2]{\texttt{\TB usepackage[#1]\{#2\}}} \newcommand{\UseV}[2]{\texttt{\TB usepackage\{#1\}[#2]}} \newcommand{\UseOV}[3]{\texttt{\TB usepackage[#1]\{#2\}[#3]}} %%% Bibliography \newcommand{\Bib}[1]{\texttt{\TB bibliographystyle\{#1\}}} %%% environment TODO: evtl. umdefinieren, dat is übel \newcommand{\Env}[2]{\raggedright\texttt{\TB begin\{#1\}\\ #2\\ \TB end\{#1\}}} %%% \newcommand \newcommand{\NewCom}[3][]{\texttt{\TB newcommand{#1}\{\TB#2\}\{#3\}}} \newcommand{\ReNewCom}[3][]{\texttt{\TB renewcommand{#1}\{\TB#2\}\{#3\}}} %%% Gestohlen aus dem scrguide ;-) \DeclareRobustCommand*{\Macro}[1]{\mbox{\texttt{\char`\\#1}}} \DeclareRobustCommand*{\LMacro}[2]{\mbox{\texttt{\char`\\#1\{#2\}}}} \DeclareRobustCommand*{\GMacro}[2]{\mbox{\texttt{\{\char`\\#1\ #2\}}}} % DANTE \providecommand{\CTANserver}{ftp.dante.de} % Make CTAN:// be an alias of ftp://\CTANserver/tex-archive/ \makeatletter \def\url@#1{\expandafter\url@@#1\@nil} \def\url@@#1://#2\@nil{% \def\@tempa{#1}\def\@tempb{CTAN}\ifx\@tempa\@tempb \hyper@linkurl{\Hurl{#1:#2}}{ftp://\CTANserver/tex-archive/#2}% \else \hyper@linkurl{\Hurl{#1://#2}}{#1://#2}% \fi } \makeatother %%% Farben %\definecolor{gruen}{rgb}{0,0.66,0} % Umdefiniert, für s/w-Ausdrucke. \definecolor{gruen}{rgb}{0,0.55,0} \definecolor{rot}{rgb}{1,0,0} \newcommand{\FIXME}[1]{\marginline{FIXME: #1!}} \newsavebox{\Quelle} \newenvironment{bspcode}[1]{% \sbox{\Quelle}{\footnotesize Quelle: #1} \center \rule{\linewidth}{1.5pt} }{% \rule{\linewidth}{1.5pt} \usebox{\Quelle} \endcenter% } %%% Ersetze-Makros FIXME: \newcommand{\Ersetze}[2]{\par\noindent Ersetze: \textcolor{rot}{#1} durch \textcolor{gruen}{#2}} \newcommand{\Ersetzx}[3][.5\textwidth]{% \par\noindent% \begin{minipage}[t]{#1} \raggedright Ersetze:\\ \textcolor{rot}{#2} \end{minipage}% \hfill% \begin{minipage}[t]{(\linewidth - #1)-.02\linewidth} \raggedright durch\\ \textcolor{gruen}{#3} \end{minipage}% } % Breite für die Ersetze-Makros :-( \newsavebox{\Breite} %%% Hack von Heiko Oberdiek für den AR unter Linux \pdfstringdefDisableCommands{% \edef\quotedblbase{\string"}% \edef\textquotedblleft{\string"}% } %%% von mir für \dots \pdfstringdefDisableCommands{% \edef\dots{\string...}% } %%% Ganz, ganz kruder Hack um die URL in eine eigene Zeile zu bekommen, %%% *ohne* zusätzlichen Abstand. :-( \newcommand{\biburl}[1]{\hfill\\URL:~\url{#1}} %------------------- Tabellenspaltendefinitionen -------------------- % Benötigt array \newcolumntype{v}[1]{>{\raggedright\hspace{0pt}}p{#1}} % v-Spalte, wie % p-Spalte nur % linksbündig \newcolumntype{V}[1]{>{\footnotesize\raggedright\hspace{0pt}}p{#1}} \newcolumntype{N}{>{\footnotesize}l} \newcolumntype{C}{>{\footnotesize}c} %----------------------------- Titelei ------------------------------ \subject{Tipps zu \LaTeX} \title{Das \LaTeXe-Sündenregister\\{\LARGE% Ich weiß, das tut man nicht. oder\\Veraltete Befehle, Pakete und andere Fehler}} \author{Mark Trettin\thanks{\EMail{Mark.Trettin@gmx.de}}} \date{Version \rcsInfoRevision\ vom \rcsInfoLongDate} %----------------------- Beginn des Dokuments ----------------------- \begin{document} %\begin{Form}\end{Form} \pagestyle{headings} %%% RCS Info für die Versionsangaben. \rcsInfo $Id: l2tabu.tex,v 1.8 2004/12/19 22:01:40 mark Exp $ \maketitle \begin{abstract} \noindent Angeregt durch eine Diskussion in der deutschsprachigen \TeX-Newsgroup\footnote{\News{de.comp.text.tex}} über das wiederholte Auftauchen von veralteten und "`schlechten"' Paketen und Befehlen, habe ich mich entschlossen, diese kleine Übersicht zu schreiben. Ich versuche in diesem Artikel die gängigsten Fehler zu zeigen und Alternativen anzubieten. Diese Übersicht soll weder Einführungen wie \Doku{l2kurz}~\cite{l2kurz:99} noch die \Doku{De-TeX-FAQ}~\cite{faq:03} ersetzen, sondern lediglich einen kleinen Überblick bieten. Für Vorschläge, Verbesserungen und Kommentare bin ich dankbar. \TimesRant \end{abstract} %%% Copyright {\setlength{\parindent}{0pt} \footnotesize \vfill Copyright \copyright{} 2003, 2004 by Mark Trettin. \medskip This material may be distributed only subject to the terms and conditions set forth in the \emph{Open Publication License}, v1.0 or later (the latest version is presently available at \url{http://www.opencontent.org/openpub/}). \bigskip Ich bedanke mich bei Ralf Angeli, Christoph Bier, Christian Faulhammer, Jürgen Fenn\footnote{Englische Übersetzung: \url{CTAN://info/l2tabu/english/l2tabuen.pdf}}, Ulrike Fischer, Yvon Henel\footnote{Französische Übersetzung: \url{CTAN://info/l2tabu/french/l2tabufr.pdf}}, Yvonne Hoffmüller, David Kastrup, Markus Kohm, Thomas Lotze, Frank Mittelbach, Heiko Oberdiek, Walter Schmidt, Stefan Stoll, Knut Wenzig, Emanuele Zannarini\footnote{Italienische Übersetzung: \url{CTAN://info/l2tabu/italian/l2tabuit.pdf}} und Reinhard Zierke für Tipps, Anmerkungen und Korrekturen. Falls ich jemanden vergessen haben sollte, bitte ich um eine Mail.\par} \clearpage \tableofcontents \clearpage \section{"`Todsünden"'} \label{sec:todsunden} In diesem Abschnitt habe ich die wohl schlimmsten Fehler zusammengetragen, die in schöner Regelmäßigkeit in \News{de.comp.text.tex} auftauchen und den dortigen Regulars entweder die Zornesröte ins Gesicht oder die Tränen in die Augen treiben. \texttt{;-)} \subsection{\Paket{a4}, \Paket{a4wide}} \label{sec:paketa4-paketa4wide} Diese "`beiden"' Pakete sollten nicht mehr verwendet und ersatzlos aus dem \LaTeX-Quelltext gestrichen und durch die Klassenoption \Option{a4paper} ersetzt werden. Abgesehen davon, dass das Layout der meisten dieser Pakete typografisch mehr als fragwürdig ist, existieren mehrere verschiedene, zu einander inkompatible Versionen. Man kann sich also nicht einmal sicher sein, dass auf einem anderen Rechner das Dokument gleich (schlecht?) aussieht. \subsection{Layoutänderungen} \label{sec:layoutanderungen} Die von den Standardklassen (\Klasse{article}, \Klasse{report}, \Klasse{book}) verwendeten Satzspiegel wirken häufig zu groß. Abhilfe bieten die entsprechenden Klassen (\Klasse{scrartcl}, \Klasse{scrreprt}, \Klasse{scrbook}) aus dem \KOMAScript-Paket, oder das ebenfalls dort enthaltene \Paket{typearea}. Die dazugehörige Dokumentation \Doku{scrguide}~\cite{kohm:03} enthält viele weiterführende Informationen. Wenn man wirklich einen anderen Satzspiegel als den von z.\,B. \Paket{typearea} erzeugten benötigt, dann sollte man bitte die Pakete \Paket{geometry} oder \Paket{vmargin} verwenden und nicht versuchen, "`zu Fuß"' \Macro{oddsidemargin} \& Co. zu ändern. Unter gar keinen Umständen sollte man an \Macro{hoffset} bzw. \Macro{voffset} herumfummeln, außer man kennt sich sehr gut mit den \TeX-Interna aus. \subsection{Änderungen von Paketen und Klassen} \label{sec:ander-von-paket} Niemals Dokumentklassen (\Klasse{article}, \Klasse{scrbook} usw.) oder Stylefiles (\Paket{varioref}, \Paket{color}) direkt ändern! Entweder man bastelt sich Containerklassen bzw. -styles oder, man \emph{kopiert} die Klassen/Styles, ändert die Kopie und speichert diese unter \emph{anderem} Namen ab. Ein Beispiel zur Erstellung von Containerklassen findet sich in der \Doku{FAQ}~\cite[Punkt 5.1.5]{faq:03}. \paragraph{Hinweis} \label{sec:hinweis} Generell sollte man solche zusätzlich installierten Klassen und Pakete entweder in den lokalen oder den \texttt{\$HOME}-\TeX-Baum speichern, damit bei einem Upgrade der \TeX-Distribution diese Änderungen nicht überschrieben werden. Braucht man diese Änderungen nur in dem speziellen Projekt und möchte es weitergeben, dann könnte man die angepasste Klasse auch im aktuellen Projektverzeichnis speichern. \subsection{Änderung des Zeilenabstandes mittels \texttt{\TB baselinestretch}} \label{sec:ander-des-zeil} Anpassungen von Parametern sollten generell auf der obersten dafür vorgesehenen Ebene der Benutzungsschnittstelle erfolgen. Eine Änderung des Durchschusses kann auf drei Ebenen durchgeführt werden: \begin{enumerate} \item Verwendung des Paketes \Paket{setspace} \item Verwendung der \LaTeX{}"=Anweisung \LMacro{linespread}{} \item Umdefinition von \Macro{baselinestretch} \end{enumerate} Eine Umdefinition von Parametern wie \Macro{baselinestretch} stellt die unterste Ebene dar und sollte deshalb Paketen vorbehalten bleiben. Eine bessere, da extra dafür vorgesehene Methode, ist die Verwendung von \LMacro{linespread}{}. Die beste Vorgehensweise stellt aber die Verwendung des Paketes \Paket{setspace} dar, das sich bei der Änderung des Durchschusses um die Beibehaltung der Abstände in Fußnoten oder Listenumgebungen kümmert, deren Änderung meist nicht erwünscht ist. Wenn man also einen größeren Durchschuss benötigt (z.\,B. eineinhalbzeilig oder zweizeilig), bietet sich folglich zuerst das Paket \Paket{setspace} an. Möchte man hingegen nur kleine Anpassungen für andere Schriften als Computer Modern (z.\,B Palatino) machen, dann kann bzw. sollte man \LMacro{linespread}{} verwenden. Bei der Schrift Palatino würde sich zum Beispiel \LMacro{linespread}{1.05} anbieten. % Wenn man einen größeren Durchschuss benötigt (z.\,B. eineinhalbzeilig % oder zweizeilig), dann bietet das Paket \Paket{setspace} die einfachste % Möglichkeit. Möchte man hingegen nur kleine Anpassungen für andere % Schriften als Computer Modern (z.\,B Palatino) machen, dann kann, bzw. % sollte man \LMacro{linespread}{} verwenden. Bei der Schrift % Palatino würde sich zum Beispiel \LMacro{linespread}{1.05} anbieten. \subsection{Absatzeinzug und -abstand (\texttt{\TB{}parindent}, \texttt{\TB{}parskip})} \label{sec:absatz-und-abst} Den Absatzeinzug (\Macro{parindent}) zu ändern, kann manchmal sinnvoll sein. Man sollte dabei aber beachten, dass \begin{itemize} \item man den Einzug mit einer schriftabhängigen Größe (em) und nicht mit einer absoluten Größe (mm) ändert. "`Schriftabhängig"' bedeutet hier \emph{nicht}, dass sich der Absatzeinzug bei Schriftgrößenänderungen automatisch anpasst, sondern dass der Wert der aktuell aktiven Schrift benutzt wird. \item man \LaTeX-Syntax verwendet, da diese die wenigsten Probleme birgt. Zum Beispiel ist sie für externe Programme/Skripte leichter zu parsen\footnote{syntaktisch analysieren, aufspalten}, für den Benutzer besser zu warten und es gibt keine Inkompatibilitäten mit anderen Paketen (\Paket{calc}). \Ersetze{\Macro{parindent}\texttt{=1em}}{\LMacro{setlength}{\Macro{parindent}}\{1em\}} \end{itemize} % Wenn man hingegen \emph{keinen} Absatzeinzug, dafür aber einen zusätzlichen Durchschuss als Absatzkennzeichnung wünscht, sollte man \emph{nicht} einfach \color{rot} \begin{verbatim} \setlength{\parindent}{0pt} \setlength{\parskip}{\baselineskip} \end{verbatim} \normalcolor % verwenden. Da sich \Macro{parskip} auch auf Listen, Verzeichnisse und Überschriften auswirkt, ist diese Vorgehensweise nicht zu empfehlen. Das Paket \Paket{parskip} und die \KOMAScript-Klassen treiben einigen Aufwand, um diese Begleiterscheinungen zu vermeiden. Zur Verwendung der verschiedenen Optionen (\Option{parskip}, \Option{halfparskip} usw.) von \KOMAScript\ siehe den \Doku{scrguide}~\cite{kohm:03}. Wenn eine der \KOMAScript-Klassen verwendet wird, muss das Paket \Paket{parskip} \emph{nicht} noch zusätzlich geladen werden. \subsection{Abgesetzte Formeln mit \texttt{\$\$\dots\$\$}} \label{sec:abges-form-mit} Bitte nicht! \texttt{\$\$\dots\$\$} ist ein plain\TeX-Befehl und sollte in \LaTeX\ vermieden werden, da dadurch die vertikalen Abstände bei abgesetzten Formeln inkonsistent werden (siehe auch Abschnitt~\vref{sec:mathematiksatz}, insbesondere die Warnung bezüglich \texttt{displaymath} im Zusammenhang mit \Paket{amsmath}). Ferner funktioniert die Klassenoption \Option{fleqn} nicht mehr. \Ersetze{\texttt{\$\$\dots\$\$}}{% \parbox[t]{.3\textwidth}{% \Macro{[}\texttt{\dots}\Macro{]}\\ \textcolor{black}{oder}\\ \Env{displaymath}{\dots}}} \subsection{\texttt{\TB def} vs. \texttt{\TB newcommand}} \label{sec:def-vs.-newcommand} Makros sollte man \emph{immer} mittels \NewCom{}{\dots} definieren und \emph{nicht} mit \Macro{def}\LMacro{}{\dots}.\footnote{Siehe auch \cite[Abschnitt 2.7.2]{clsguide:99} und \cite[Abschnitt 3.4]{usrguide:01}} Das Hauptproblem von \Macro{def} ist, dass keine Überprüfung auf die Existenz eines Makros durchgeführt wird. Es wird deshalb ggf. ohne Fehlermeldung/""Warnung überschrieben. Bereits existierende Makros können mit \ReNewCom{}{\dots} umdefiniert werden. Wer genau weiß, \emph{warum} er \Macro{def} benötigt, weiß auch um dessen Nach- bzw. Vorteile und kann diesen Unterpunkt getrost ignorieren. \subsection{Verwendung von \texttt{\TB sloppy}} \label{sec:verw-von-textttt} Der Schalter \Macro{sloppy} sollte nicht verwendet werden, schon gar nicht global in der Präambel. Wenn man in einzelnen Absätzen Probleme mit dem Umbruch hat, gilt: \begin{enumerate} \item Überprüfen, ob die entsprechenden Trennmuster (z.\,B. mittels \Paket{(n)german}) und T1-Schriften geladen sind (siehe auch \Doku{FAQ}\cite[Punkt 5.3 ff.]{faq:03}). \item Umformulieren. Man muss nicht unbedingt den Satz, in dem das Umbruchproblem auftritt umformulieren, oft reicht es schon einen der vorhergehenden oder nachfolgenden Sätze umzuformulieren/umzustellen. \item Moderate Anpassung der Parameter, die \TeX{} bei der Berechnung der Zeilenumbrüche verwendet. Axel Reichert hat in \News{de.comp.text.tex} einmal seine persönliche Anpassung\footnote{Man kann diese Werte natürlich nach dem persönlichen Geschmack ändern, aber man sollte vorallem bei \TB\texttt{emergencystretch} aufpassen. Sonst erhält man einen löchrigen Blocksatz, wie bei einem sehr bekannten Textverarbeitungsprogramm.} gepostet\footnote{Zu finden unter der \MID{a84us0$plqcm$7@ID-30533.news.dfncis.de}{a84us0\$plqcm\$7@ID-30533.news.dfncis.de}}, mit der sich die meisten Umbruchprobleme bei weiterhin gutem Layout vermeiden lassen. (Man sollte hierbei allerdings beachten, dass nun auftretende Warnungen \emph{wirklich} zu beherzigen und durch Umformulieren zu beseitigen sind.): \begin{minipage}[t]{\linewidth} \begin{verbatim} \tolerance 1414 \hbadness 1414 \emergencystretch 1.5em \hfuzz 0.3pt \widowpenalty=10000 \vfuzz \hfuzz \raggedbottom \end{verbatim} % \hspace{\baselineskip} % Ja, ja ich weiß, das ist geschummelt! \end{minipage} \end{enumerate} % Erst wenn diese Punkte nicht geholfen haben, kann man versuchen, mit der \texttt{sloppypar}"=Umgebung den nachfolgenden Absatz "`lockerer"' zu setzen. \begin{figure}[htp] % Falls sich jemand über das zusätzliche \fussy bzw. das fehlende % \sloppy wundert: Use the Source Luke! \parbox setzt per default % \sloppy, so dass man für einen originalen Umbruch \fussy benötigt. \begin{minipage}[t]{.47\textwidth} \centering {\fontsize{10pt}{12pt}\fontencoding{OT1}\selectfont \fbox{\parbox{16.27em}{\fussy% tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta}}}% \caption{Beispiel mit \LaTeX s Standardwerten}% \label{fig:beispiel-mit-latex}% \end{minipage}% \hfill% \begin{minipage}[t]{.47\textwidth} \centering {\fontsize{10pt}{12pt}\fontencoding{OT1}\selectfont \fbox{\parbox{16.27em}{% tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta}}}% \caption{Beispiel mit \texttt{\string\sloppy}}% \label{fig:beisp-mit-textttstr} \end{minipage} \end{figure} In den Abbildungen~\ref{fig:beispiel-mit-latex} und \vref{fig:beisp-mit-textttstr} habe ich versucht, den Effekt von \Macro{sloppy} darzustellen. Bei der hier verwendeten "`Times"' ist die negative Auswirkung von \Macro{sloppy} auf Grund der sehr geringen Laufweite nicht so extrem, wie beispielsweise bei der "`Computer Modern Roman"'. Der prinzipielle Effekt sollte aber dennoch erkennbar sein. Markus Kohm hat in \News{comp.text.tex} ein Beispiel veröffentlicht, welches den Effekt sehr deutlich zeigt. Ich habe es mit seiner Erlaubnis angehängt (siehe Anhang~\vref{sec:beispiel-zu-sloppy}). %----------------------- Abschnitt Obsoletes ------------------------ \clearpage \section{Veraltete Befehle, Klassen und Pakete} \label{sec:obsoletes} Markus Kohm hat ein Perl-Script geschrieben, mit dem man online auf \url{http://kohm.de.tf/markus/texidate.html} seine Dateien auf die häufigsten Fehler überprüfen kann. Allerdings ist zu beachten, dass es keinen vollständigen \TeX-Parser enthält und deshalb nur die "`offensichtlichen"' Fehler überprüfen kann. Erst testen, dann posten. \subsection{Befehle} \label{sec:befehle} \subsubsection{Änderung des Schriftstils} \label{sec:ander-des-schr} In Tabelle~\vref{tab:befehle-zur-anderung} sind die alten und aktuellen Befehle zur Änderung des Schriftstils gegenüber gestellt. Die als "`lokal"' bezeichneten Makros wirken nur auf ihr Argument, wohingegen die als "`global/Schalter"' bezeichneten, sich auf den gesamten folgenden Text bis zum Ende der aktuellen Gruppe auswirken. \begin{table}[htp]% Absatzumbruch hatte sich verändert :-\ \begin{minipage}{\textwidth} \renewcommand{\footnoterule}{} \centering \caption{Befehle zur Änderung des Schriftstils} \label{tab:befehle-zur-anderung} \begin{tabular}{@{}lll@{}} \toprule \multicolumn{1}{@{}N}{veraltet}& \multicolumn{2}{C@{}}{Ersatz in \LaTeXe}\\ \cmidrule(l){2-3} & \multicolumn{1}{N}{lokal} & \multicolumn{1}{N@{}}{global/Schalter}\\ \cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(l){3-3} \GMacro{bf}{\dots} & \LMacro{textbf}{\dots} & \Macro{bfseries}\\ --- & \LMacro{emph}{\dots} & \Macro{em}\footnote{Nützlich in Makrodefinitionen. Innerhalb des Texts sollte nicht \GMacro{em}{\dots}, sondern \LMacro{emph}{\dots} verwendet werden.}\\ \GMacro{it}{\dots} & \LMacro{textit}{\dots} & \Macro{itshape}\\ --- & \LMacro{textmd}{\dots} & \Macro{mdseries}\\ \GMacro{rm}{\dots} & \LMacro{textrm}{\dots} & \Macro{rmfamily}\\ \GMacro{sc}{\dots} & \LMacro{textsc}{\dots} & \Macro{scshape}\\ \GMacro{sf}{\dots} & \LMacro{textsf}{\dots} & \Macro{sffamily}\\ \GMacro{sl}{\dots} & \LMacro{textsl}{\dots} & \Macro{slshape}\\ \GMacro{tt}{\dots} & \LMacro{texttt}{\dots} & \Macro{ttfamily}\\ --- & \LMacro{textup}{\dots} & \Macro{upshape}\\ \bottomrule \end{tabular} \end{minipage} \end{table} \paragraph{Warum sollte man die alten Befehle nicht verwenden?} \label{sec:warum-sollte-man} Die alten Befehle unterstützen nicht die Schriftverwaltung\footnote{NFSS: New Font Selection Scheme. Einen Überblick über das NFSS gibt der \Doku{fntguide}~\cite{fntguide:00}.} von \LaTeXe. \GMacro{bf}{foo} zum Beispiel setzt alle schon vorhandenen Schriftattribute zurück, bevor es "`foo"' fett druckt. Das führt dazu, dass man nicht einfach einen fett-kursiven Stil durch \GMacro{it}{\Macro{bf Test}} definieren kann. (Die angegebene Definition erzeugt: {\it\bf Test}.). Die aktuellen Befehle \LMacro{textbf}{\LMacro{textit}{Test}} hingegen verhalten sich wie erwartet und erzeugen: \textbf{\textit{Test}}. Ferner gibt es bei den alten Befehlen keine "`Italic-Korrektur"', z.\,B. {\it fünf}hundert (\GMacro{it}{fünf}\texttt{hundert}) und \textit{fünf}hundert (\LMacro{textit}{fünf}\texttt{hundert}). \subsubsection{Mathematische Brüche (\texttt{\TB over} vs. \texttt{\TB frac})} \label{sec:textb-over-vs} Der Befehl \Macro{over} sollte vermieden werden. \Macro{over} ist ein \TeX-Befehl, der durch die von \LaTeX\ abweichende Syntax schlechter bzw. nicht parsbar ist. Insbesondere das Paket \Paket{amsmath} definiert \verb+\frac{}{}+ um und man erhält Fehlermeldungen bei der Verwendung von \Macro{over}. Ein weiteres Argument für die Verwendung von \verb+\frac{}{}+ ist die für den Benutzer -- vorallem bei komplexeren Brüchen -- einfachere Zuordnung von Zähler und Nenner. \Ersetze{\texttt{\$a \TB over b\$}}% {\texttt{\$\TB frac\{a\}\{b\}\$}} \subsubsection{Zentrierung mit \texttt{\TB centerline}} \label{sec:centerline} Der Befehl \Macro{centerline} ist ebenfalls ein \TeX-Befehl und sollte in \LaTeX\ vermieden werden. \Macro{centerline} ist einerseits inkompatibel zu einigen \LaTeX-Paketen (z.\,B. \Paket{color}) und andererseits kann die Verwendung zu unerwünschten bzw. unerwarteten Effekten führen: \begin{center} \begin{minipage}[t]{.45\textwidth} \begin{verbatim} \begin{enumerate} \item \centerline{Ein Punkt} \end{enumerate} \end{verbatim} \end{minipage}% \hfill% % \hspace{.05\textwidth}% \fbox{ \begin{minipage}[t]{.45\textwidth} \begin{enumerate} \item \centerline{Ein Punkt} \end{enumerate} \end{minipage}} \end{center} \Ersetze{\LMacro{centerline}{\dots}}% {\parbox[t]{.3\textwidth}{% \GMacro{centering}{\dots}\\ \textcolor{black}{oder}\\ \Env{center}{\dots} }} \paragraph{Anmerkung} \label{sec:anmerkung-5} Hinweise zur Zentrierung von Grafiken und Tabellen sind in Abschnitt~\vref{sec:gleit-figure-table} zu finden. \subsection{Klassen und Pakete} \label{sec:pakete} \subsubsection{\Klasse{scrlettr} vs. \Klasse{scrlttr2}} \label{sec:paketscrl-vs.-pakets} Die Klasse \Klasse{scrlettr} aus dem \KOMAScript-Paket ist veraltet und wurde durch \Klasse{scrlttr2} ersetzt. Um ein \emph{ähnliches} Layout wie die alte Klasse zu erreichen, kann man die Klassenoption \Option{KOMAold} verwenden, die einen Kompatibilitätsmodus zur Verfügung stellt. \sbox{\Breite}{\texttt{\TB documentclass\{scrltter\}}} \Ersetzx[\wd\Breite]{\texttt{\TB documentclass\{scrlettr\}}}% {\texttt{\TB documentclass[KOMAold]\{scrlttr2\}}} \paragraph{Anmerkung} \label{sec:anmerkung-3} Für neue Vorlagen und Briefe, sollte aber die neue Schnittstelle benutzt werden, da diese deutlich flexibler ist. Eine Erklärung der Unterschiede des Benutzerinterfaces würde den Rahmen dieser Übersicht sprengen, deshalb muss ich hier auf den \Doku{scrguide}~\cite{kohm:03} verweisen. \subsubsection{\Paket{epsf}, \Paket{psfig}, \Paket{epsfig} vs. \Paket{graphics}, \Paket{graphicx}} \label{sec:grafikeinbindung} Die Pakete \Paket{epsf} und \Paket{psfig} sind durch \Paket{graphics} oder \Paket{graphicx} zu ersetzen. \Paket{epsfig} ist nur ein Wrapper\footnote{Hier: Ein Stylefile, welches ein oder mehrere andere aufruft und damit Funktionen nachbildet.} um \Paket{graphicx} für alte Dokumente, die mit \Paket{psfig} erstellt wurden. Da \Paket{epsfig} intern \Paket{graphicx} benutzt, \emph{kann} man es noch verwenden, sollte aber für neu erstellte Dokumente auf das modernere \Paket{graphics} oder \Paket{graphicx} umsteigen. Die Syntax der beiden letztgenannten Pakete ist deutlich flexibler. Das Paket \Paket{epsfig} wird hauptsächlich aus Kompatibilitätsgründen mitgeliefert. Zu den Unterschieden zwischen den Paketen \Paket{graphics} und \Paket{graphicx} siehe \Doku{grfguide}~\cite{graphicx:99}. Hinweise zur Zentrierung von Grafiken siehe Abschnitt~\vref{sec:gleit-figure-table}. %% Heiko und Walter haben mich überzeugt, dass das so einfach doch %% nicht ist. % Ein paar Tipps zur Grafikeinbindung: % \begin{enumerate} % \item Nicht die Dateierweiterung (JPG, EPS usw.) angeben. \LaTeX\ bzw. % pdf\LaTeX\ suchen sich schon die "`richtigen"' Dateien. Durch % Vermeidung der Dateierweiterung wird das Kompilieren mit den % verschiedenen Formaten erst ermöglicht. % \item Keinen Treiber (dvips, pdftex) beim Laden des Paketes angeben. % Grund: s.\,o. % \item Zentrierung siehe Abschnitt~\vref{sec:gleit-figure-table}. % \end{enumerate} \sbox{\Breite}{\LMacro{psfig}{file=Bild,\dots}} \Ersetze{\parbox[t]{\wd\Breite}{\Use{psfig}\\% \LMacro{psfig}{file=Bild,\dots}}}% {\parbox[t]{.45\textwidth}{% \Use{graphicx}\\% \texttt{\TB includegraphics[\dots]\{Bild\}}}} \subsubsection{\Paket{doublespace} vs. \Paket{setspace}} \label{sec:zeilenabstande} Um den Durchschuss zu ändern, sollte man das Paket \Paket{setspace} verwenden. \Paket{doublespace} ist veraltet und wurde durch \Paket{setspace} ersetzt. Siehe auch Abschnitt~\vref{sec:ander-des-zeil}. \Ersetze{\Use{doublespace}}{\Use{setspace}} \subsubsection{\Paket{fancyheadings}, \Paket{scrpage} vs. \Paket{fancyhdr}, \Paket{scrpage2}} \label{sec:lebende-kolumn} Das Paket \Paket{fancyheadings} wurde durch \Paket{fancyhdr} ersetzt. Eine weitere Alternative für angepasste Kopfzeilen bietet das Paket \Paket{scrpage2} aus dem \KOMAScript-Bundle. Auch hier ist zu beachten, dass nicht \Paket{scrpage} verwendet wird. Die Anleitung zu \Paket{scrpage2} befindet sich im \Doku{scrguide}~\cite{kohm:03}. \Ersetze{\Use{fancyheadings}}{\Use{fancyhdr}} \Ersetze{\Use{scrpage}}{\Use{scrpage2}} \subsubsection{Die \Paket{caption}-Familie} \label{sec:die-caption-famile} Das Pakete \Paket{caption2} sollte nicht mehr verwendet werden, da es eine neue Version (v3.x) von \Paket{caption} gibt. Man sollte allerdings darauf achten, dass die neuste Version des Paketes benutzt wird. Um dies sicherzustellen, muss man das Paket folgendermaßen laden: \Ersetze{\Use{caption}}{\UseV{caption}{2003/12/20}} Hatte man vorher \Paket{caption2} benutzt, dann sollte man unbedingt die Dokumentation \Doku{anleitung}~\cite[Abschnitt~8]{caption:04} beachten. \subsubsection{\Paket{isolatin}, \Paket{umlaut} vs. \Paket{inputenc}} \label{sec:eingabe-von-umlauten} \paragraph{Generelles} \label{sec:generelles} Im Prinzip gibt es vier Möglichkeiten, Umlaute und andere nicht-ASCII-Zeichen einzugeben: \begin{enumerate} \item \verb+H{\"u}lle+: Der Vorteil dieser Art der Eingabe ist, dass sie immer und auf jedem System funktioniert. Die Nachteile hingegen sind, dass das Kerning\footnote{Einfügen positiver bzw. negativer Abstände zwischen Zeichen in Abhängigkeit der Zeichenkombination} zwischen den Buchstaben zerstört wird, es in einem deutschsprachigen Text äußerst umständlich ist und dass es äußerst schlecht lesbar ist. Diese Variante sollte man -- auf Grund des Kerningproblems -- \emph{immer} vermeiden. \item Die Eingabe der Form \verb+H\"ulle+ bzw. \verb+H\"{u}lle+ hat die oben genannten Kerningprobleme nicht und ist ebenfalls auf jedem System nutzbar. Die Nachteile bei dieser Art, sind auch hier die aufwändige Eingabe und schlechtere Lesbarkeit. Diese Variante ist die sinnvollste für Makrodefinitionen und Stylefiles, da sie encoding- und paketunabhängig ist.\label{item:die-eingabe-der} \item Mit \Paket{(n)german} bzw. der Option \Option{(n)german} beim Paket \Paket{babel} kann man die Umlaute etwas einfacher (\verb+H"ulle+) eingeben. Der Vorteil ist auch hier wieder, dass es auf allen Systemen funktioniert. Da \Paket{babel} bzw. \Paket{(n)german} auf allen \TeX-Installationen zu finden ist, sollte es auch keine Kompatibilitätsprobleme geben. Die Nachteile sind auch hier die umständlichere Eingabe und schlechtere Lesbarkeit. Diese Variante ist für Fließtext relativ gut verwendbar. Sollte aber in Makrodefinitionen und Präambeln vermieden werden. \item Die direkte Eingabe (\verb+Hülle+). Die Vorteile liegen auf der Hand. Der Text ist "`normal"' schreib- und lesbar. Der Nachteil ist, dass man \LaTeX\ mit der verwendeten Eingabekodierung bekannt machen muss und dass es beim Austausch von Dateien zwischen verschiedenen Systemen evtl. zu Problemen kommen kann. Das ist \emph{kein} Problem für \TeX\ bzw. \LaTeX\ selbst, aber es kann evtl. zu \emph{Darstellungsproblemen} in den Editoren auf den verschiedenen Systemen führen. Zum Beispiel könnte ein in iso-8859-15 (latin9) kodierter \euro\ in einem Editor unter Windows (CP1252) als \textcurrency\ \emph{dargestellt} werden. Diese Variante ist sehr gut für Fließtext verwendbar. Sollte aber in Makrodefinitionen und Präambeln vermieden werden. \end{enumerate} % Zusammenfassend kann also gesagt werden, dass man in Makros, Präambeln und Stylefiles die Form \verb+H\"ulle+ oder \verb+H\"{u}lle+ verwenden sollte und im übrigen Text entweder \verb+H"ulle+ oder \verb+Hülle+. \paragraph{Eingabekodierung} \label{sec:eingabekodierung-1} Um die verwendete Kodierung \LaTeX\ bekannt zu machen, sollte man \emph{nicht} \Paket{isolatin1} bzw. \Paket{isolatin} oder \Paket{umlaut} verwenden! Diese Pakete sind veraltet bzw. nicht auf allen Systemen vorhanden. Korrekt ist das Paket \Paket{inputenc} mit folgenden Optionen zu benutzen: \begin{description} \item[latin1/latin9] für unixoide Systeme (\Option{latin1} ist auch unter MS~Windows und Mac~OS~X verwendbar) \item[ansinew] für MS~Windows \item[applemac] für Macs\footnote{Bei der Verwendung von OS~X sollte ebenfalls \Option{latin1/latin9} verwendet werden, da diese Kodierung besser für den Dateiaustausch mit Benutzern anderer Betriebssysteme geeignet ist als \Option{applemac}. Allerdings sollte unbedingt die Eingabekodierung des verwendeten Editors beachtet werden. In Zukunft wird hoffentlich auch Unicode-Unterstützung in \LaTeX\ Einzug halten, momentan ist diese allerdings noch experimentell.} \item[cp850] für OS/2 \end{description} \Ersetze{\Use{isolatin1}}{\UseO{latin1}{inputenc}} \Ersetze{\Use{umlaut}}{\UseO{latin1}{inputenc}} \subsubsection{\Paket{t1enc} vs. \Paket{fontenc}} \label{sec:schriftkodierung} Dieses Thema ist in der \Doku{FAQ}~\cite[Punkt 10.1 ff.]{faq:03} eigentlich ausreichend erörtert. Hier nur kurz der Hinweis, dass das Paket \Paket{t1enc} veraltet ist und deshalb durch \Paket{fontenc} ersetzt werden sollte! \Ersetze{\Use{t1enc}}{\UseO{T1}{fontenc}} \subsubsection{\Bst{natdin} vs. \Bst{dinat}} \label{sec:liter-nach-din} Das Stylefile \Bst{natdin} wurde durch \Bst{dinat} ersetzt. \Ersetze{\Bib{natdin}}{\Bib{dinat}} \subsection{Schriften} \label{sec:schriften} Das Thema "`Schriften und \LaTeX"' ist ein Quell ewiger "`Freude"' in \News{de.comp.text.tex}, meistens ausgelöst durch die Frage, warum denn die Schrift im Acrobat\textsuperscript{\textregistered} Reader so pixelig sei. Die häufigsten \emph{falschen} Antworten auf diese Frage verweisen auf \Paket{times} bzw. \Paket{pslatex}. Durch die Nutzung dieser Pakete werden gänzlich andere Schriften eingestellt. Um "`schöne"' Schriften (Computer Modern) im AR zu erhalten, sei hiermit auf die \Doku{FAQ}~\cite[Punkte 10.1.7/10.1.8]{faq:03} verwiesen. Generelle Informationen zu \LaTeXe s New Font Selection Scheme (NFSS) gibt der \Doku{fntguide}~\cite{fntguide:00}. \subsubsection{\Paket{times}} \label{sec:pakettimes} Das Paket \Paket{times} ist veraltet (siehe \Doku{psnfss2e} \cite{psnfss:02}). Es stellt \Macro{rmdefault} auf die Schrift "`Times"', \Macro{sfdefault} auf "`Helvetica"' und \Macro{ttdefault} auf "`Courier"' um, \emph{ohne} jedoch die passenden Mathematikschriften einzubinden. Ferner wird die Helvetica nicht korrekt skaliert und wirkt zu groß. Wenn man die Kombination Times/""Helvetica/""Courier benutzten möchte, dann folgendermaßen: \sbox{\Breite}{\UseO{scaled=.95}{helvet}} \Ersetze{\Use{times}}% {\parbox[t]{\wd\Breite}{% \Use{mathptmx}\\ \UseO{scaled=.90}{helvet}\\ \Use{courier}}} \paragraph{Anmerkung} \label{sec:anmerkung-1} Der Skalierungsfaktor für \Paket{helvet} in Kombination mit der Times sollte zwischen $0.90$ und $0.92$ liegen. \subsubsection{\Paket{mathptm}} \label{sec:mathptm} Das Paket \Paket{mathptm} ist der Vorgänger von \Paket{mathptmx}. \Ersetze{\Use{mathptm}}{\Use{mathptmx}} \subsubsection{\Paket{pslatex}} \label{sec:paketpslatex} Das Paket \Paket{pslatex} arbeitet intern wie \Paket{mathptm}$+$ \Paket{helvet} (skaliert), wobei allerdings eine zu eng laufende Courier gewählt wird. Der Hauptnachteil von \Paket{pslatex} ist, dass es \emph{nicht} mit T1- und TS1-Encoding funktioniert. \Ersetze{\Use{pslatex}}{\parbox[t]{\wd\Breite}{\Use{mathptmx}\\\UseO{scaled=.90}{helvet}\\\Use{courier}}} \paragraph{Anmerkung zu allen Times/Helvetica-Kombinationen} \label{sec:anmerkung-zu-allen} Man kann auch als Schreibmaschinenschrift bei der \texttt{cmtt} bleiben, also auf das Laden von \Paket{courier} verzichten. \subsubsection{\Paket{palatino}} \label{sec:paketpalatino} Das Paket \Paket{palatino} verhält sich wie \Paket{times} (außer das natürlich \Macro{rmdefault} auf "`Palatino"' gesetzt wird) und sollte deshalb nicht mehr benutzt werden. \Ersetze{\Use{palatino}}{\parbox[t]{\wd\Breite}{\Use{mathpazo}\\\UseO{scaled=.95}{helvet}\\\Use{courier}}} \paragraph{Anmerkung} \label{sec:anmerkung-2} Der Skalierungsfaktor für \Paket{helvet} in Kombination mit der Schrift Palatino sollte $0.95$ betragen. Die "`Helvetica"' ist \emph{nicht} die optimale serifenlose Schrift in Kombination mit der "`Palatino"', aber die beste \emph{freiverfügbare}. Wer eine (auch ältere) CorelDraw\textsuperscript{\textregistered}-CD besitzt, kann die "`Palatino"' auch sehr gut mit den Schriften "`Frutiger"'\footnote{Bitstream "`Humanist 777"', bfr} oder "`Optima"'\footnote{Bitstream "`Zapf Humanist"', bop} kombinieren. Walter Schmidt hat auf seiner Homepage\footnote{Schriften für \TeX: \url{http://home.vr-web.de/was/fonts}} die entsprechenden \TeX-Anpassungen veröffentlicht. \subsubsection{\Paket{mathpple}} \label{sec:paketmathpple} Dieses Paket ist der Vorläufer von \Paket{mathpazo}. Ihm fehlen einzelne Zeichen, die Schriften werden aus den Euler-Fonts genommen, andere Zeichen passen nicht gut zu Palatino und die Zeichenabstände sind zum Teil falsch. Genaueres siehe \Doku{psnfss2e}~\cite{psnfss:02}. \subsubsection{Aufrechte griechische Buchstaben} \label{sec:aufr-griech-buchst} Die im folgenden rot markierten Passagen sind nicht veraltet im Sinne von "`man soll sie nicht mehr benutzen"', aber es gibt nun mit dem Paket \Paket{upgreek} eine Vereinfachung der Eingabe. Hinweise zur Benutzung bitte wie immer der Dokumentation \Doku{upgreek}~\cite{upgreek:01} entnehmen. \minisec{Die \Paket{pifont}-Tricks}\nopagebreak[4] \sbox{\Breite}{\NewCom{uppi}{\LMacro{Pisymbol}{psy}\{112\}}} \Ersetzx[\wd\Breite]{% \Use{pifont}\\ \NewCom{uppi}{\LMacro{Pisymbol}{psy}\{112\}}\\ \Macro{uppi}\\ \textcolor{black}{oder}\\ \NewCom[{[1]}]{upgreek}{\%\\ ~\Macro{usefont}\{U\}\{psy\}\{m\}\{n\}\#1}\\ \LMacro{upgreek}{p} }% {% \Use{upgreek}\\ \$\Macro{uppi}\$ } \minisec{Der \Paket{babel}-Trick} \Ersetzx[\wd\Breite]{% \UseO{greek,\dots}{babel}\\ \NewCom[{[1]}]{upgreek}{\%\\ ~\LMacro{foreignlanguage}{greek}\{\#1\}}\\ \LMacro{upgreek}{p} } {% \Use{upgreek}\\ \$\Macro{uppi}\$ } \subsubsection{\Paket{euler} vs. \Paket{eulervm}} \label{sec:euler-vs-euler} Das Paket \Paket{euler} sollte durch \Paket{eulervm} ersetzt werden, da es Kompatibilitätsprobleme mit anderen Paketen ausräumt und einige Detailverbesserungen enthält: % \begin{itemize} \item \Macro{hbar} (\Macro{hslash} bei dieser Schrift) funktioniert nun sauber \item Fette Mathematikschriften inklusive griechische Symbole sind möglich. \end{itemize} % Genauere Informationen siehe \Doku{eulervm}~\cite{eulervm:04}. \Ersetze{\Use{euler}}{\Use{eulervm}} %-------------------- Abschnitt "Verschiedenes" --------------------- \clearpage \section{Verschiedenes} \label{sec:verschiedenes} Dieser Abschnitt enthält -- mit Ausnahme von \vref{sec:der-anhang} -- eher allgemeine Tipps und Hinweise als "`Sünden"'. \subsection{Gleitumgebungen -- "`figure"', "`table"'} \label{sec:gleit-figure-table} Um den Inhalt einer Gleitumgebung zu zentrieren, sollte man \Macro{centering} an Stelle der \LMacro{begin}{center}-\LMacro{end}{center}-Umgebung verwenden, da diese zusätzlichen vertikalen Abstand einfügt, der meistens nicht erwünscht ist. \sbox{\Breite}{\LMacro{includegraphics}{bild}} \Ersetze{\parbox[t]{\wd\Breite}{% \Env{figure}{\Env{center}{\LMacro{includegraphics}{bild}}} }}% {\parbox[t]{\wd\Breite}{% \Env{figure}{\Macro{centering}\\% \LMacro{includegraphics}{bild}} }} \paragraph{Anmerkung} \label{sec:anmerkung-4} Wenn man innerhalb des Fließtextes oder der \verb+titlepage+-Umgebung einen Bereich zentrieren möchte, kann dieser zusätzliche Abstand natürlich durchaus erwünscht sein. \subsection{Der Anhang} \label{sec:der-anhang} Der Anhang wird mit dem \emph{Schalter} \Macro{appendix} eingeleitet. Er ist \emph{keine} Umgebung. \sbox{\Breite}{\LMacro{begin}{appendix}} \Ersetze{\parbox[t]{\wd\Breite}{% \Env{appendix}% {\LMacro{section}{Blub}}}}% {\parbox[t]{.33\textwidth}{% \Macro{appendix}\\ \LMacro{section}{Blub} }} \subsection{Mathematiksatz} \label{sec:mathematiksatz} Generell sollte man für komplizierteren Mathematiksatz \Paket{amsmath} benutzen. Es bietet neue Umgebungen, die vor allem \texttt{eqnarray} ersetzen sollen. Die Vorteile des Paketes: \begin{itemize} \item Abstände innerhalb und außerhalb von Umgebungen sind konsistenter. \item Gleichungsnummern werden so positioniert, dass sie nicht mehr überdruckt werden. \item Die neuen Umgebungen (z.\,B. \texttt{split}) ermöglichen es, lange Gleichungen einfacher zu umbrechen. \item Einfache Möglichkeit, neue Operatoren (ähnlich wie \Macro{sin} usw.) mit sauberen Zeichenabständen zu definieren. \end{itemize} \paragraph{Warnung} \label{sec:warnung} Bei der Verwendung von \Paket{amsmath} sollte man die Umgebungen \texttt{displaymath}, \texttt{eqnarray} und \texttt{eqnarray*} \emph{keinesfalls} weiterverwenden, da diese von \Paket{amsmath} nicht unterstützt werden %Die Folge wäre wieder inkonsistente Abstände. und deshalb wieder inkonsistente Abstände ergäben. \texttt{\TB [\dots\TB]} wird von \Paket{amsmath} korrekt angepasst und kann an Stelle von \texttt{displaymath} genutzt werden. \texttt{eqnarray} und \texttt{eqnarray*} kann in erster Näherung durch \texttt{align} bzw. \texttt{align*} ersetzt werden. Für eine vollständige Übersicht der Möglichkeiten von \Paket{amsmath} verweise ich auf die Dokumentation \Doku{amsldoc}~\cite{amsldoc:99}. \sbox{\Breite}{\LMacro{includegraphics}{bild}} \Ersetze{% \parbox[t]{\wd\Breite}{% \Env{eqnarray}{% a \&=\& b \TB\TB\\ b \&=\& c \TB\TB\\ a \&=\& c } }}% {\parbox[t]{\wd\Breite}{% \Env{align}{% a \&= b \TB\TB\\ b \&= c \TB\TB\\ a \&= c } }} \subsection{Die Verwendung von \texttt{\TB graphicspath}} \label{sec:die-verwendung-von} Das beliebte Makro~\Macro{graphicspath} sollte aus folgenden Gründen vermieden und durch die Umgebungsvariable \texttt{TEXINPUTS} ersetzt werden\footnote{Vgl. David Carlisles Antwort auf Markus Kohms "`Bug-Report"': \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/2618}}: \begin{enumerate} \item Die Verzeichnistrenner sind \emph{nicht} plattformunabhängig (Windows/Unices: \texttt{/}, Macs: \texttt{:}). \item Die \TeX-Suche dauert länger, als diese Aufgabe durch die kpathsea-Bibliothek lösen zu lassen. (Bei heutigen Prozessoren fällt das nicht mehr so ins Gewicht.) \item Jedes Bild verbraucht einen Teil des begrenzten \TeX-Speichers \emph{und} gibt ihn während des gesamten Kompilierens nicht mehr frei. \end{enumerate} % Bei einer Bourne-Shell kann man z.\,B. folgenden Aufruf \begin{verbatim} $ TEXINPUTS=Bildverz:$TEXINPUTS latex datei.tex \end{verbatim} verwenden, oder in der \verb+~/.profile+ zusätzlich \begin{verbatim} export TEXINPUTS=./Bildverz:$TEXINPUTS \end{verbatim}%$ eintragen. Bei letzterem werden die Dateien im \texttt{Bildverz} unterhalb des aktuellen Arbeitsverzeichnisses gefunden. \noindent Unter MS~Windows ($\le 98$) setzt man die Variable mittels \begin{verbatim} set TEXINPUTS=.\Bildverz;%TEXINPUTS% \end{verbatim} in der \texttt{autoexec.bat}. Bei Windows~NT4 und Windows~2000 kann man Umgebungsvariablen über \textsf{Systemsteuerung $\rightarrow$ System $\rightarrow$ Umgebung} und seit Windows~XP über \textsf{Systemsteuerung $\rightarrow$ System $\rightarrow$ Erweitert $\rightarrow$ Umgebungsvariablen} setzen. Die hier aufgeführten Vorgehensweisen sind Beispiele. Mir ist durchaus bewusst, dass man \texttt{TEXINPUTS} auch auf andere Art und Weise bzw. in anderen Dateien anpassen kann. Genaueres ist der Dokumentation des verwendeten Betriebsystems bzw. der \TeX-Distribution zu entnehmen. \subsection{Die \texttt{\TB*name}-Makros} \label{sec:die-macroname-makros} Da in \News{de.comp.text.tex} von Zeit zu Zeit danach gefragt wird, wie man zum Beispiel "`Literatur"' in "`Quellenverzeichnis"' ändern kann, habe ich in Tabelle~\vref{tab:von-paketng-btw} die entsprechenden Makros zusammengestellt. Sie sind aus \Paket{german} entnommen. Um beispielsweise das "`Abbildungsverzeichnis"' in "`Abbildungen"' umzubennen, benutzt man folgenden Befehl: \begin{verbatim} \renewcommand*{\listfigurename}{Abbildungen} \end{verbatim} Die anderen Makros lassen sich analog umbenennen. Bei der Verwendung von \Paket{babel} muss man mit \Macro{addto} arbeiten. Siehe auch die \Doku{De-TeX-FAQ}~\cite[Punkt 8.5.9]{faq:03}. \begin{verbatim} \addto{\captionsngerman}{% \renewcommand*{\listfigurename}{Abbildungen}} \end{verbatim} \begin{table} \begin{minipage}{\textwidth} \renewcommand{\footnoterule}{} \centering \caption{Von \Paket{(n)german} bzw. \Paket{babel} mit der Option \Option{(n)german} definierte Makros} \label{tab:von-paketng-btw} \begin{tabular}{@{}lll@{}} \toprule \multicolumn{1}{@{}N}{Makroname} & \multicolumn{1}{N}{Original Definition} & \multicolumn{1}{N@{}}{deutsche Ausgabe} \\ \cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(l){3-3} \Macro{prefacename} & Preface & Vorwort \\ \Macro{refname}\footnote{Nur in den \texttt{article}-Klassen} & References & Literatur \\ \Macro{abstractname} & Abstract & Zusammenfassung \\ \Macro{bibname}\footnote{Nur in den \texttt{report}- und \texttt{book}-Klassen} & Bibliography & Literaturverzeichnis \\ \Macro{chaptername} & Chapter & Kapitel \\ \Macro{appendixname} & Appendix & Anhang \\ \Macro{contentsname} & Contents & Inhaltsverzeichnis \\ \Macro{listfigurename} & List of Figures & Abbildungsverzeichnis \\ \Macro{listtablename} & List of Tables & Tabellenverzeichnis \\ \Macro{indexname} & Index & Index \\ \Macro{figurename} & Figure & Abbildung \\ \Macro{tablename} & Table & Tabelle \\ \Macro{partname} & Part & Teil \\ \Macro{enclname} & encl & Anlage(n) \\ \Macro{ccname} & cc & Verteiler \\ \Macro{headtoname} & To & An \\ \Macro{pagename} & Page & Seite \\ \Macro{seename} & see & siehe \\ \Macro{alsoname} & see also & siehe auch \\ \bottomrule \end{tabular} \end{minipage} \end{table} \clearpage \appendix \section{Beispiel zu \texttt{\TB sloppy}} \label{sec:beispiel-zu-sloppy} Hier ist der Beispiel-Code, welchen Markus Kohm veröffentlicht hat: \begin{bspcode}{\MID{8557097.gEimXdBtjU@ID-107054.user.dfncis.de}{8557097.gEimXdBtjU@ID-107054.user.dfncis.de}}% \footnotesize \begin{verbatim} \documentclass{article} \setlength{\textwidth}{20em} \setlength{\parindent}{0pt} \begin{document} \typeout{First without \string\sloppy\space and underfull \string\hbox} tatata tatata tatata tatata tatata tatata ta\-ta\-tata tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta \typeout{done.} \sloppy \typeout{Second with \string\sloppy\space and underfull \string\hbox} tatata tatata tatata tatata tatata tatata ta\-ta\-tata tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta \typeout{done.} \end{document} \end{verbatim} \end{bspcode} \clearpage \raggedright \begin{thebibliography}{99} \bibitem{amsldoc:99} \textsc{American Mathematical Society}: \emph{User's Guide for the {\texttt{amsmath}} Package}. Dezember 1999, Version~2.0. \biburl{CTAN://macros/latex/required/amslatex/}. \bibitem{graphicx:99} \textsc{David~P. Carlisle}: \emph{Packages in the `graphics' bundle}. Januar 1999. \biburl{CTAN://macros/latex/required/graphics/}. \bibitem{kohm:03} \textsc{Markus Kohm}, \textsc{Frank Neukam} und \textsc{Axel Kielhorn}: \emph{Das \KOMAScript-Paket}. September 2004, Version~2.9t. \biburl{CTAN://macros/latex/supported/koma-script/}. \bibitem{clsguide:99} \textsc{The \LaTeX3 Project Team}: \emph{\LaTeXe{} for class and package writers}. März 1999. \biburl{CTAN://macros/latex/doc/clsguide.pdf} \bibitem{fntguide:00} \textsc{The \LaTeX3 Project Team}: \emph{\LaTeXe{} font selection}. September 2000. \biburl{CTAN://macros/latex/doc/fntguide.pdf} \bibitem{usrguide:01} \textsc{The \LaTeX3 Project Team}: \emph{\LaTeXe{} for authors}. Juli 2001. \biburl{CTAN://macros/latex/doc/usrguide.pdf} \bibitem{faq:03} \textsc{Bernd Raichle}, \textsc{Rolf Niepraschk} und \textsc{Thomas Hafner}: \emph{Fragen und Antworten (FAQ) über das Textsatzsystem {\TeX\ }und DANTE, Deutschsprachige Anwendervereinigung {\TeX\ }e.V.} WWW, September 2003, Version~72. \biburl{http://www.dante.de/faq/de-tex-faq/}. \bibitem{eulervm:04} \textsc{Walter Schmidt}: \emph{The Euler Virtual Math Fonts for use with {\LaTeX}}. Januar 2004, Version~3.0a. \biburl{CTAN://fonts/eulervm/} \bibitem{upgreek:01} \textsc{Walter Schmidt}: \emph{The {\textsf{upgreek}} package for {\LaTeXe}}. Mai 2001, Version~1.0. \biburl{CTAN://macros/latex/contrib/supported/was/}. \bibitem{psnfss:02} \textsc{Walter Schmidt}: \emph{Using common PostScript fonts with {\LaTeX}}. April 2002, PSNFSS Version 9.0. \biburl{CTAN://macros/latex/required/psnfss/psnfss2e.pdf} \bibitem{l2kurz:99} \textsc{Walter Schmidt}, \textsc{Jörg Knappen}, \textsc{Hubert Partl} und \textsc{Irene Hyna}: \emph{{\LaTeXe}-Kurzbeschreibung}. April 1999, Version~2.1. \biburl{CTAN://info/lshort/german/}. \bibitem{caption:04} \textsc{Axel Sommerfeld}: \emph{Setzen von Abbildungs- und Tabellenbeschriftungen mit dem caption-Paket}. Juli 2004, Version~3.0c. \biburl{CTAN://macros/latex/contrib/caption/}. \end{thebibliography} \end{document} %%% Local variables: %%% mode: LaTeX %%% TeX-master: t %%% coding: iso-8859-1 %%% End: