Benutzer:Dirk Huenniger/header

Aus Wikibooks

Einleitung[Bearbeiten]

In diesem Text beschreibe ich meine Erfahrungen, die ich im Bezug auf LaTeX beim Setzen von Wikibooks Büchern gemacht habe. Ich hoffe das zukünftige Autoren von diesen Erfahrungen profitieren können. Er geht vielleicht etwas zu sehr ins Detail. Leider ist dies aber notwendig, um sehr gute Ergebnisse erzielen zu können.

Deutsche Trennmuster[Bearbeiten]

Die Silbentrennung in LaTeX ist nicht perfekt, weil sie auf Trennmustern basiert. Die im german babel-Paket enthaltenen Trennmuster sind nicht gut, werden aber nicht aktualisiert, damit die Trennung von Texten nicht verändert wird. Daher habe ich entschieden, die Trennmuster der Deutschen Trennmustermannschaft zu verwenden. Hierzu muss als erste Zeile im LaTeX Dokument noch vor documentclass die Zeile:

\RequirePackage{hyphsubst}

eingetragen werden. Ferner muss nach documentclass während des Ladens der Pakete die Befehlsfolge

\HyphSubstLet{ngerman}{ngerman-x-latest}
\usepackage[ngerman]{babel}

hinzugefügt werden. Dies schafft eine bis auf sehr wenige Ausnahmen korrekte Trennung.

Koma Script[Bearbeiten]

Es ist prinzipiell anzuraten, koma script zu verwenden. Man findet im Internet leicht das mehrere Hundert Seiten umfassende Handbuch. Für Bücher empfiehlt sich hier die Dokumentenklasse scrbook. Ich habe mich für eine Schriftgröße von 11 pt entschieden, da diese in den Büchern in meinem Bücherschrank besonders häufig anzutreffen war. Der BCOR Wert gibt an, wie viel mm der Seite durch die Bindung verloren gehen. 12mm hat sich hier als guter Wert erwiesen. Eine genaue Bestimmung ist jedoch nur bei detaillierter Kenntnis des Bindeprozesses möglich. Viele Fachbücher werden in Deutschland im B5 Format gesetzt; es liegt genau zwischen A4 und A5. Der Div-Wert beeinflusst die Breite der Ränder. Ein hoher Div-Wert bedeutet dabei einen kleinen Rand. Nach mehreren Versuchen und Diskussion haben wir mit 13 sehr gute Erfahrungen gemacht. Der Befehlt open=any bewirkt, dass Kapitalanfänge sowohl auf geraden als auch auf ungeraden Seiten möglich sind, was Papier spart. Der Befehl liststoc bewirkt, dass die Verzeichnisse -- insbesondere das Abbildungsverzeichnis -- im Inhaltsverzeichnis aufgeführt werden. Insgesamt ergibt sich also:

\documentclass[fontsize=11pt,paper=A4,BCOR=12mm,DIV=13,open=any,listof=totoc]{scrbook}

Farbiger Text[Bearbeiten]

Um farbigen Text verwenden zu können, benutze ich das Paket color. Die Option usenames bewirkt, dass die Farbe nicht nur über ihre numerischen Codes sondern auch über Ihre Namen angesprochen werden können. Es ergibt sich

\usepackage[usenames]{color}

Symbole und Sonderzeichen[Bearbeiten]

Symbole und Sonderzeichen sind in verschiedenen Paketen enthalten. Zur Zeit verwende ich folgendes:

\usepackage{textcomp} 

parskip[Bearbeiten]

Beginnt neue Absätze mit etwas Abstand jedoch ohne Einzug, das heißt ohne Einrücken der ersten Zeile eines neuen Absatzes. Man kann sich durchaus auch das Standardverhalten wünschen und sollte dieses Paket dann nicht laden.

\usepackage{parskip}

Unterstreichungen[Bearbeiten]

Hier hat sich das ulem-Paket bestens bewährt. Versuche mit anderen Paketen waren bei mir weniger erfolgreich. normalem bewirkt das normale Kursiv stellen mit em immer noch kursiv aussieht und nicht als Unterstreichung um interpretiert wird.

\usepackage[normalem]{ulem}

Überstreichungen[Bearbeiten]

\newlength{\mylength}
\newlength{\myheight}

\newcommand{\myoverline}[1]
{\settowidth{\mylength}{#1} \settoheight{\myheight}{#1}
\makebox[-3pt][l]{#1}
\rule[\myheight+1pt]{\mylength}{0.15mm}}

Verweise[Bearbeiten]

Für Verweise verwende ich das Hyperref Paket. Die Option pdflatex ist notwendig, wenn man den pdflatex-Compiler verwendet. unicode=true ist notwendig, wenn man das Dokument in Unicode setzt, was deutlich zu empfehlen ist. Also

\usepackage[pdftex,unicode=true]{hyperref}
\hypersetup{
	linkcolor=black,     % Für Links in der gleichen Seite
	urlcolor=black,      % Für Links auf URLs
	breaklinks=true,    % Links dürfen umgebrochen werden
	colorlinks=false,
	citebordercolor=0 0 0,  % Farbe für \cite
	filebordercolor=0 0 0,
	linkbordercolor=0 0 0,
	menubordercolor=0 0 0,
	urlbordercolor=0 0 0,
	pdfhighlight=/I,
	pdfborder=0 0 0,   % keine Box um die Links!
	bookmarksopen=true,
	bookmarksnumbered=true,
	frenchlinks=false
}

Fettdruck im Inhalsverzeichnis[Bearbeiten]

Hierzu muss das Packt tocstyle geladen werden.

\usepackage{tocstyle}

Listen, Aufzählungen, etc.[Bearbeiten]

Normale Aufzählung erwiesen sich als bei tiefen Schachtelungen zu platzhungrig. Daher verwende ich für nummerierte und nicht nummerierte Aufzählungen compactenum und compactitem aus dem paralist-Paket.

\usepackage[defblank]{paralist}

Für eingerückte und nicht eingerückte Zitate u. ä. verwende ich:

\newenvironment{myquote}{\begin{itemize}[{}]}{\end{itemize}}
\newenvironment{myblockquote}{\begin{itemize}[{\quad}]}{\end{itemize}}
\newenvironment{mydescription}{

\begin{inparablank}}{\end{inparablank}} 
% Alternativen ohne Einrückung
\newenvironment{myitemize}{\begin{compactitem}[\textbullet]}{\end{compactitem}}
\newenvironment{myenumerate}{\begin{compactenum}}{\end{compactenum}}

Die Leerzeile ist zum Erzeugen eines neuen Absatzes wichtig.

Das Gegenteil von Verbose[Bearbeiten]

Die Anzahl der Meldungen wird reduziert durch

\usepackage{trace}

Tabellen[Bearbeiten]

longtable erlaubt Tabellen über mehrere Seiten. Multirow und Multicolum erlauben es, Zellen vertikaler und horizontaler Richtung zusammenzufassen. ragged2e zusammen mit array erlaubt, rechtsbündig innerhalb von Tabellenzellen zu schreiben, denn Blocksatz innerhalb solcher wirkt meist unschön.

\usepackage{multirow}
\usepackage{multicol}
\usepackage{array,ragged2e}
\usepackage{longtable}

Farbig hinterlegte Tabellenzellen gehen mit

\usepackage[table]{xcolor}

Tasten[Bearbeiten]

Um Tasten schön zu malen, empfiehlt sich:

\usepackage{keystroke}

Post script fonts und T1 Kodierung[Bearbeiten]

Es kann empfohlen werden, Vektorfont anstelle von Pixelfonts zu verwenden und T1-Kodierung zu verwenden.

\usepackage{mathptmx}
\usepackage[scaled=.92]{helvet}
\usepackage{courier}
\usepackage[T1]{fontenc}

Fussnoten[Bearbeiten]

Fußnoten bereiten häufig Probleme insbesondere innerhalb von Tabellen. Hier hilft:

\usepackage{footnote}

Kopfzeilen und Fusszeilen[Bearbeiten]

Um Kopfzeilen und Fußzeilen anpassen zu können braucht man:

\usepackage{scrpage2}
% Variante 1: Kopf: links Kapitel, rechts Abschnitt (ohne Nummer); Fuß: außen die Seitenzahl
\ohead{\headmark}
\renewcommand{\chaptermark}[1]{\markleft{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
\ofoot[\pagemark]{\pagemark}

% Variante 2: Kopf außen die Seitenzahl, Fuß nichts
%\ohead{\pagemark}
%\ofoot{}

Verbatim[Bearbeiten]

Um vorformatierte Texte wie z. B. Quellcode zu setzen, braucht man

usepackage{verbatim}

Rückseite der Titelseite[Bearbeiten]

für Impressum etc.

\uppertitleback{...}
\lowertitleback{...}

Schattiertes[Bearbeiten]

Nach langem Probieren fand sich endlich eine Lösung für schattierte Boxen.

\newenvironment{myshaded}{%
  \def\FrameCommand{ \hskip-2pt \fboxsep=\FrameSep \colorbox{shadecolor}}%
  \MakeFramed {\advance\hsize-\width \FrameRestore}}%
 {\endMakeFramed}

Rahmen[Bearbeiten]

Hier fand ich bisher keine befriedigende Lösung und verwende daher meist grau schattierte Bereiche auf Basis des framed Pakets, siehe dazu weiter unten in diesem Text. Das Paket mdframed führte in Wechselwirkung mit anderen immer zu sehr ungünstigem Verhalten.

\usepackage{framed}
\usepackage{mdframed}

Titelseite[Bearbeiten]

\publishers{...}
\title{...}

AMS[Bearbeiten]

Etliche mathematische Erweiterungen und Besonderheiten von der American Mathematical Society. Immer zu empfehlen, wenn man es mit Formeln zu tun bekommt.

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}

Zahlenmengen[Bearbeiten]

Für die Symbole für natürliche Zahlen, komplexe Zahlen, Körper etc. gibt es

\usepackage{bbm}

Symbole[Bearbeiten]

Es gibt diverse Pakete, die zusätzliche Symbole bereitstellen. Ich verwende diese:

\usepackage{pifont}
\usepackage{marvosym}
\let\Cross\undefined 
\usepackage{fourier-orns}  % disable this line for tex4ht   % für weitere Logos, z.B. \danger
\usepackage{wasysym}
\let\Square\undefined 
\usepackage{skull}
\usepackage{bbding}
\usepackage{textcomp}

Die Undefines sind notwendig, um Welchselwirkungen zwischen den Paketen (doppelt belegte Befehle) zu vermeiden.

Quelltexte[Bearbeiten]

Eine erweiterte Version von Verbatim, die Fettdruck o. ä. innerhalb von Quelltexten erlaubt. Am besten Quelltexte durch pandoc laufen lassen, um sie mit markup zu versehen und dann in fancyvrb Umgebungen ins Latex-Dokument einfügen. Zum Drucken von Quelltexten mit Highlighting gibt es noch einige weitere Pakete. Leider beherscht keines dieser im Gegensatz zum hier vorgestellten fancyvrb Paket den vollen Unicode 16 bit Zeichensatz.

\usepackage{fancyvrb}

Lautschrift[Bearbeiten]

tipa ist für Lautschrift. T1 ist für die T1-output-Codierung.

\usepackage[T1]{tipa}

Alles schöner[Bearbeiten]

microtype braucht recht viel Rechenleistung, produziert aber ein schöneres Schriftbild, indem es Buchstabenweise leichte Modifikationen an der Schriftdicke o. ä. vornimmt. Sollte man immer mitladen.

\usepackage{microtype}

Querformat[Bearbeiten]

Um auch im Querformat setzen zu können. Insbesondere für sehr vielspaltige Tabellen.

\usepackage{lscape}

Sloppy[Bearbeiten]

Erlaubt etwas unschöneren Blocksatz, führt aber zu weniger Trennungen. Davon wird in jedem guten Buch dringend abgeraten. Bei uns haben wir jedoch ohne immer nur deutlich schlechtere Ergebnisse erzielt, daher

\sloppy

Waisen, Hurenkinder[Bearbeiten]

Das sind einzelne Zeilen am Anfang oder Ende einer Seite. Diese wird man los mit den Befehlen.

\clubpenalty = 10000
\widowpenalty = 10000 
\displaywidowpenalty = 10000

Manuelle Trennmuster[Bearbeiten]

Man kann die Trennung von Wörtern exakt definieren, falls die Automatik versagt

\hyphenation{Makro-phagen-stimulation}

Mathematische Sätze[Bearbeiten]

\usepackage{amsthm}

Begin des Dokuments[Bearbeiten]

Bevor man nun mit dem eigentlichen Dokument beginnen kann, kommt noch:

\begin{document}
\usetocstyle{standard}
\raggedbottom
\thispagestyle{empty}
\pagestyle{empty}
%\include{coverfrontpage}

%\cleardoublepage
\pagenumbering{Roman}
\maketitle
\pagestyle{scrheadings}
% Tiefe des Inhaltsverzeichnisses bestimmen
% -----------------------------------------
% -1   nur \part{}
%  0   bis \chapter{}
%  1   bis \section{}
%  2   bis \subsection{} usw.

\setcounter{tocdepth}{1}
\tableofcontents 

%\cleardoublepage
\pagenumbering{arabic}

raggedbottom bewirkt, daß überschüssiger Platz auf einzelnen Seiten immer am Ende der jeweiligen Seite liegt. usetocstyle bewirkt korrekten Fettdruck von Kapitelüberschrifen im Inhaltsverzeichnis.

Ende des Dokuments[Bearbeiten]

\end{document}

Unicode[Bearbeiten]

Ich habe hier einen Weg über CJK gewählt. Das ist jedoch ein allgemein abgelehntes Verfahren. Megafont ist ein selbstgebauter Font, der die komplette Unicode-16 Tabelle abdeckt.

\usepackage{type1ec}      
\usepackage{CJKutf8}
\usepackage[overlap, CJK]{ruby}
\usepackage{CJKulem}

\begin{document}
\begin{CJK}{UTF8}{megafont}
...
\end{CJK}
\end{document}