Ich wollte schon früher etwas zu dem Template schreiben, was im der anderen Diskussion aber leider nicht möglich war. Deshalb das nun hier (ohne quote, weil mir das auf Dauer zu aufwändig wird):
\documentclass[twoside,11pt]{Latex/Classes/PhDthesisPSnPDF}
bzw.
\ProvidesClass{Latex/Classes/PhDthesisPSnPDF}[2007/09/06 v2 PhD thesis class]
Eine Klasse mit einer Pfadangabe zu laden und als Namen für eine Klasse einen Pfad zu verwenden, ist IMO sehr ungünstig. Zum einen besitzt LaTeX einen Dateinamen-Parser, der je nach System unterschiedlich sein kann. Deshalb sollte man sich auf dessen Eigenschaften eigentlich nicht verlassen. Tatsächlich ist nicht definiert, ob dieser Trick überhaupt problemlos funktioniert. Er kann also schon morgen auf demselben System zu der gleichen Warnung führen, zu der er auch führt, sobald man die Klasse an einen anderen Ort. Tatsächlich funktioniert obiges allenfalls dann, wenn man an der Verzeichnisstruktur nichts ändert. Das wiederum ist unpraktisch, wenn man die Klasse desöfteren verwenden will und deshalb gedenkt, sie ordentlich im System zu installieren. Eine bessere Lösung wäre gewesen, die Klasse selbst zusammen mit der Hauptdatei des Dokuments im Hauptverzeichnis abzulegen.
\include{Latex/Macros/MacroFile1}
Das ist nun sogar ein grober Fehler! Niemals sollte man Dateien in der Dokumentpräambel mit \include laden! Mit \include lädt man nur Dateien, die Text ausgeben, der auf einer neuen Seite beginnt und nachdem eine neue Seite begonnen wird! Hier könnte man stattdessen \input verwenden. Allerdings stellt sich die Frage: Wenn man schon eine eigene Klasse verwendet, wozu braucht man dann noch eine
Makro-Datei? Eigentlich gehören dann nämlich all diese Definitionen in die eigene Klasse. Alternativ kann man als Ergänzung zu der eigenen Klasse auch ein eigenes Paket schreiben, das man dann mit \usepackage lädt. Beide Lösungen wären sinnvoll. Obiges ist hingegen nicht nur nicht sinnvoll, sondern falsch.
\ifpdf
\pdfinfo { /Title (PhD and MPhil Thesis Classes)
/Creator (TeX)
/Producer (pdfTeX)
/Author (YourName your@email.net)
/CreationDate (D:YYYYMMDDhhmmss) %format D:YYYYMMDDhhmmss
/ModDate (D:YYYYMMDDhhmm)
/Subject (xyz)
/Keywords (add, your, keywords, here) }
\pdfcatalog { /PageMode (/UseOutlines)
/OpenAction (fitbh) }
\fi
Statt das auf die direkte pdf-Erzeugung zu beschränken, wäre es sinnvoll gewesen, die Informationen via hyperref zu setzen. Das hat dann den Vorteil, dass einige der Informationen ggf. auch auf dem Umweg über DVI (und ggf. dvips) in die PDF-Datei gelangen können.
\ifpdf
\author{\href{mailto:your@email.net}{YourName}}
% \cityofbirth{born in XYZ} % uncomment this if your university requires this
% % If city of birth is required, also uncomment 2 sections in PhDthesisPSnPDF
% % Just search for the "city" and you'll find them.
\collegeordept{\href{http://www.something.net}{CollegeOrDepartment}}
\university{\href{http://www.something.net}{University}}
% The crest is a graphics file of the logo of your research institution.
% Place it in ./0_frontmatter/figures and specify the width
\crest{\includegraphics[width=4cm]{logo}}
% If you are not creating a PDF then use the following. The default is PDF.
\else
\author{YourName}
% \cityofbirth{born in XYZ}
\collegeordept{CollegeOrDept}
\university{University}
\crest{\includegraphics[width=4cm]{logo}}
\fi
Hier sei darauf hingewiesen, dass die Unterscheidung überflüssig und kontraproduktiv ist. Direkte PDF-Ausgabe ist nicht das einzige Format, das Links mit \href unterstützt und hyperref ist selbst sehr gut in der Lage, das abhängig vom Ausgabetreiber selbst richtig zu machen.
Übrigens empfehle ich, \title, \author etc. erst nach \begin{document} zu setzen, weil man dann auch problemlos babel-shorthands darin verwenden kann, ohne ggf. daran denken zu müssen, die vorher zu aktivieren und ggf. danach wieder zu deaktivieren.
% turn of those nasty overfull and underfull hboxes
\hbadness=10000
\hfuzz=50pt
Dinge, deren Sinn und Nützlichkeit man nicht verstanden hat, einfach irgendwie abzuschalten und als
nasty zu bezeichnen, ist nicht gerade etwas, was die Kompetenz eines Template-Autors unterstreicht. Hier wäre die Verwendung von microtype und ggf. \emergencystretch sicher eine bessere Lösung gewesen, die auch weit mehr Vertrauen in die Kompetenz des Autors geschaffen hätte.
% sets line spacing
\renewcommand\baselinestretch{1.2}
\baselineskip=18pt plus1pt
Das gehört zu dem grauenvollsten Code, den ich je gesehen habe. Der Urheber hat offensichtlich nicht einmal
l2tabu gelesen, geschweige denn große Ahnung von Typografie. Schon das Umdefinieren von \baselinestretch statt der Verwendung von
setspace oder zumindest der Verwendung der Anweisung \linespread ist ein sträflicher Fehler. Dann die damit gewählte Einstellung noch einmal per explizitem Setzen von \baselineskip zu überschreiben ist kompletter Unfug. Dabei dann auch noch Leim in den Zeilenabstand einzufügen ist typografisch schlicht das Grauen! Kein vernünftiger Mensch will bei einem halbwegs normalen Dokument variablen Durchschuss! Es bleibt zu hoffen, dass irgendwo ein implizites \normalsize diese mehr als ungeschickte Einstellung wieder aufhebt!
Hoffentlich hat sich der Urheber wenigstens gefragt, warum das \vspace nicht funktioniert. \vspace am Seitenfang wird nämlich schlicht ignoriert. Will man am Seitenanfang einen vertikalen Abstand einfügen, so benötigt man die Sternvariante \vspace*{10mm}. Das ist übrigens Anfängerwissen.
% levels are: 0 - chapter, 1 - section, 2 - subsection, 3 - subsection
Das stimmt nur bedingt. toclevel und secnumlevel sind nicht für alle Klassen und alle Gliederungsanweisungen deckungsgleich. Es gibt dazu sogar einen Eintrag in der LaTeX-Bug-Datenbank.
\begin{multicols}{2} % \begin{multicols}{#columns}[header text][space]
\begin{footnotesize} % scriptsize(7) < footnotesize(Cool < small (9) < normal (10)
\printnomenclature[1.5cm] % [] = distance between entry and description
\label{nom} % target name for links to glossary
\end{footnotesize}
\end{multicols}
Vorsicht! Der Missbrauch von \footnotesize als Umgebung kann auch daneben gehen, nämlich dann, wenn der aktuelle Abstatz vor dem Ende der Umgebung versehentlich nicht beendet wird. Da hier die gesamte multicols-Umgebung in \footnotesize gesetzt werden soll, hätte man dieses Risiko umgehen können, indem man statt der footnotesize-Umgebung ein schlichtes \footnotesize gesetzt hätte. Allerdings halte ich aus typografischer Sicht eine komplett in \footnotesize gesetzte Nomenklatur für einen Fehler! Was für Fußnoten noch erträglich ist, ist für seitenweise Informationen deutlich zu klein.
BTW: Die Bedeutung des Kommentars erschließt sich mir nicht.
\renewcommand{\chaptername}{} % uncomment to print only "1" not "Chapter
Das funktioniert aber nur bis zu \appendix. Wenn das so gewollt ist, kann man das sicher so machen. Die KOMA-Script-Klassen bieten hier übrigens deutlich mehr Eingriffs-Möglichkeiten.
\begin{multicols}{2} % \begin{multicols}{ # columns}[ header text][ space]
\begin{tiny} % tiny(5) < scriptsize(7) < footnotesize(Cool < small (9)
\bibliographystyle{Latex/Classes/PhDbiblio-url2} % Title is link if provided
\renewcommand{\bibname}{References} % changes the header; default: Bibliography
\bibliography{9_backmatter/references} % adjust this to fit your BibTex file
\end{tiny}
\end{multicols}
Generell gleicher Hinweis wie oben. Wer allerdings das kompette Literaturverzeichnis in \tiny setzt, sollte es besser gleich ganz weg lassen. Dann spart er sich, zu jedem Exemplar des Dokuments noch eine Leselupe beizulegen. Ich sage es mal ganz direkt: Das ist grauenvoll!
\ifx\pdfoutput\undefined
\LoadClass[dvips, a4paper]{book}
\else
\LoadClass[pdftex, a4paper]{book}
\fi
Das ist wieder ein Zeichen dafür, dass der Urheber sich nicht auskennt. Mit \LoadClass gesetzte Optionen sind
keine globalen Optionen wie es die Optionen von \documentclass wären. Die Optionen werden also nur an die Klasse übergeben. book kennt aber keine Option dvips und keine Option pdftex. Damit ist die Fallunterscheidung schon aus dem Grund unsinnig, dass die dafür verwendet wird, Optionen an book zu übergeben, die book gar nicht kennt. Aber selbst, wenn dem nicht so wäre, wäre die Fallunterscheidung und die Übergabe dieser Optionen überflüssig, weil Pakete wie hyperref und graphics (letzteres über graphics.cfg) selbst zwischen den Treibern für pdftex und dvips (und nebenbei bemerkt auch ein paar anderen beispielsweise für VTeX) wählen.
BTW: Man sollte sich an der Stelle überlegen, ob die KOMA-Script-Klasse scrbook nicht eine bessere Grundlage wäre. Flexibler als book wäre sie in jedem Fall.
\usepackage[english]{babel}
Davon abgesehen, dass man in Klassen nicht \usepackage, sondern \RequirePackage verwendet (und das am besten ohne Optionen, um
option clash mit Einstellungen des Anwender zu vermeiden), soll die Klasse also ausschließlich für Dokumente in englischer Sprache verwendet werden? Anderenfalls wäre die Übergabe der Option an dieser Stelle eher unpraktisch.
\usepackage[nottoc]{tocbibind} % correct page numbers for bib in TOC, nottoc suppresses an entry for TOC itself
Das ist beispielsweise etwas, was bei Verwendung einer KOMA-Script-Klasse kein zusätzliches Paket benötigt, sondern einfach per Option (auch nachträglich per \KOMAoptions oder \KOMAoption) geregelt werden kann.
\ifpdf
%-->
%--> Google.com search "hyperref options"
%-->
%--> http://www.ai.mit.edu/lab/sysadmin/.....latex/hyperref/manual.pdf
%--> http://www.chemie.unibas.ch/~vogtp/LaTeX2PDFLaTeX.pdf
%--> http://www.uni-giessen.de/partosch/eurotex99/ oberdiek/print/sli4a4col.pdf
%--> http://me.in-berlin.de/~miwie/tex-refs/html/latex-packages.html
%-->
\usepackage[ pdftex, plainpages = false, pdfpagelabels,
...
Die komplette Fallunterscheidung hier könnte darauf reduziert werden, ob man \pdfcompresslevel setzt oder nicht.
\DeclareGraphicsExtensions{.png, .jpg, .jpeg, .pdf, .gif} %GIF doesn't work??
Ja, ganz genau. PDFTeX kann kein GIF bei der direkten PDF-Ausgabe. Wie man sieht, weiß der Ausgabetreiber von graphicx bzw. die graphics.cfg selbst sehr viel besser als der Urheber dieser Zeile, welche Dateiendungen verarbeitet werden können. Deshalb sollte man ihnen auch nichts ins Handwerk pfuschen und diese Zeile weglassen. \DeclareGraphicsExtensions braucht man überhaupt nur, wenn man selbst Handler für weitere Endungen hinzufügt. Das wird hier aber nicht gemacht, also ist die Definition bestenfalls überflüssigen, schlechtesten Falls ein grober Fehler.
\graphicspath{{0_frontmatter/figures/PNG/}{0_frontmatter/figures/PDF/}{0_frontmatter/figures/}}
Wenn man schon in der Klasse vorgibt, in welchen Verzeichnissen Abbildungen gefunden werden sollen, sollte man das vermutlich etwas allgemeiner machen.
:-------------------------- page layout -----------------------
%A4 settings
\ifpdf
\pdfpageheight=297mm
\pdfpagewidth=210mm
\else
\setlength{\paperheight}{297mm}
\setlength{\paperwidth}{210mm}
\fi
\setlength{\hoffset}{0.00cm}
\setlength{\voffset}{0.00cm}
%: Uncomment this secion for two-sided printing
% ------------------------------
\setlength{\oddsidemargin}{1.5cm}
\setlength{\evensidemargin}{0cm}
\setlength{\topmargin}{1mm}
\setlength{\headheight}{1.36cm}
\setlength{\headsep}{1.00cm}
\setlength{\textheight}{20.84cm}
\setlength{\textwidth}{14.5cm}
\setlength{\marginparsep}{1mm}
\setlength{\marginparwidth}{3cm}
\setlength{\footskip}{2.36cm}
%: Uncomment this secion for one-sided printing
% taken from the original file, but with the first two lanes modified
% ------------------------------
%\setlength{\evensidemargin}{1.9cm} % was 1.96cm in original
%\setlength{\oddsidemargin}{-0.001cm} % was -0.54cm in original file
%\setlength{\topmargin}{1mm}
%\setlength{\headheight}{1.36cm}
%\setlength{\headsep}{1.00cm}
%\setlength{\textheight}{20.84cm}
%\setlength{\textwidth}{14.5cm}
%\setlength{\marginparsep}{1mm}
%\setlength{\marginparwidth}{3cm}
%\setlength{\footskip}{2.36cm}
Pakete wie typearea und geometry existieren und sollten auch verwendet werden! Werte wie -0.001cm sehen mir eher wie irgendwie optisch abgeschätzt, statt mathematisch begründet aus. Vermutlich wurde irgendwas nachgemessen, nachdem man mit falschen Druckdialog-Einstellungen (Stichwort:
fit-to-paper) einen Probedruck gemacht hat.
\renewcommand{\thepage}{\roman{page}}
Da kennt offensichtlich jemand \pagenumbering nicht! Nach Möglichkeit sollte man solche Schnittstellen aber nutzen, weil nur sie Paketen die Möglichkeit geben, sich ggf. sauber einzuklinken.
{ \Huge {\bfseries {\@title}} \par}
Das lässt irgendwie vermuten, der Urheber wäre davon ausgegangen, dass \Huge und \bfseries Anweisungen mit Argument sind. Das ist aber nicht der Fall, weshalb man schlicht {\Huge\bfseries\@title\par} hätte schreiben können.
Den Sinn von \vfill\null kenne ich ja (ähnlich \vspace bs. \vspace*), der von \null\vfill erschließt sich mir aber nicht so recht. Naja, irgendwas wird sich der Template-Autor dabei hoffentlich gedacht haben …
\newcommand{\InsertFig}[3]{
\begin{figure}[!htbp]
\begin{center}
\leavevmode
#1
\caption{#2}
\label{#3}
\end{center}
\end{figure}
}
Ja, genau, wenn man l2tabu (Link, oben) nicht gelesen hat und nicht weiß, dass center eigentlich eine Listenumgebung ist, dann macht man solche Fehler.
Nachdem ich nun eine halbe Ewigkeit allein mit dem Teil des mehr als fragwürdigen Codes verbracht habe, breche ich das hier ab. Es ist einfach zu viel misserabler Code, um auf alles einzugehen. Es bleibt das
Fazit: Wenn man direkt aufbauend von einer guten, erprobten Klasse wie scrbook oder memoir ausgehend ein Dokument erstellen würde, wäre das mit Sicherheit besser und einfacher, als all die Unwägbarkeiten eines solchen Templates zu beseitigen! Die Frage, wie man irgendwelche leeren Seiten los wird, findet man dann übrigens ganz einfach in der Anleitung. In der KOMA-Script-Anleitung, scrguide.pdf, beispielsweise bei der Erklärung zur Option "open" (leicht über das Stichwortverzeichnis zu finden).
Ich wollte schon früher etwas zu dem Template schreiben, was im der anderen Diskussion aber leider nicht möglich war. Deshalb das nun hier (ohne quote, weil mir das auf Dauer zu aufwändig wird):
[code]\documentclass[twoside,11pt]{Latex/Classes/PhDthesisPSnPDF}[/code]
bzw.
[code]\ProvidesClass{Latex/Classes/PhDthesisPSnPDF}[2007/09/06 v2 PhD thesis class][/code]
Eine Klasse mit einer Pfadangabe zu laden und als Namen für eine Klasse einen Pfad zu verwenden, ist IMO sehr ungünstig. Zum einen besitzt LaTeX einen Dateinamen-Parser, der je nach System unterschiedlich sein kann. Deshalb sollte man sich auf dessen Eigenschaften eigentlich nicht verlassen. Tatsächlich ist nicht definiert, ob dieser Trick überhaupt problemlos funktioniert. Er kann also schon morgen auf demselben System zu der gleichen Warnung führen, zu der er auch führt, sobald man die Klasse an einen anderen Ort. Tatsächlich funktioniert obiges allenfalls dann, wenn man an der Verzeichnisstruktur nichts ändert. Das wiederum ist unpraktisch, wenn man die Klasse desöfteren verwenden will und deshalb gedenkt, sie ordentlich im System zu installieren. Eine bessere Lösung wäre gewesen, die Klasse selbst zusammen mit der Hauptdatei des Dokuments im Hauptverzeichnis abzulegen.
[code]\include{Latex/Macros/MacroFile1}[/code] Das ist nun sogar ein grober Fehler! Niemals sollte man Dateien in der Dokumentpräambel mit \include laden! Mit \include lädt man nur Dateien, die Text ausgeben, der auf einer neuen Seite beginnt und nachdem eine neue Seite begonnen wird! Hier könnte man stattdessen \input verwenden. Allerdings stellt sich die Frage: Wenn man schon eine eigene Klasse verwendet, wozu braucht man dann noch eine [i]Makro-Datei[/i]? Eigentlich gehören dann nämlich all diese Definitionen in die eigene Klasse. Alternativ kann man als Ergänzung zu der eigenen Klasse auch ein eigenes Paket schreiben, das man dann mit \usepackage lädt. Beide Lösungen wären sinnvoll. Obiges ist hingegen nicht nur nicht sinnvoll, sondern falsch.
[code]\ifpdf
\pdfinfo { /Title (PhD and MPhil Thesis Classes)
/Creator (TeX)
/Producer (pdfTeX)
/Author (YourName your@email.net)
/CreationDate (D:YYYYMMDDhhmmss) %format D:YYYYMMDDhhmmss
/ModDate (D:YYYYMMDDhhmm)
/Subject (xyz)
/Keywords (add, your, keywords, here) }
\pdfcatalog { /PageMode (/UseOutlines)
/OpenAction (fitbh) }
\fi[/code] Statt das auf die direkte pdf-Erzeugung zu beschränken, wäre es sinnvoll gewesen, die Informationen via hyperref zu setzen. Das hat dann den Vorteil, dass einige der Informationen ggf. auch auf dem Umweg über DVI (und ggf. dvips) in die PDF-Datei gelangen können.
[code]\ifpdf
\author{\href{mailto:your@email.net}{YourName}}
% \cityofbirth{born in XYZ} % uncomment this if your university requires this
% % If city of birth is required, also uncomment 2 sections in PhDthesisPSnPDF
% % Just search for the "city" and you'll find them.
\collegeordept{\href{http://www.something.net}{CollegeOrDepartment}}
\university{\href{http://www.something.net}{University}}
% The crest is a graphics file of the logo of your research institution.
% Place it in ./0_frontmatter/figures and specify the width
\crest{\includegraphics[width=4cm]{logo}}
% If you are not creating a PDF then use the following. The default is PDF.
\else
\author{YourName}
% \cityofbirth{born in XYZ}
\collegeordept{CollegeOrDept}
\university{University}
\crest{\includegraphics[width=4cm]{logo}}
\fi[/code]
Hier sei darauf hingewiesen, dass die Unterscheidung überflüssig und kontraproduktiv ist. Direkte PDF-Ausgabe ist nicht das einzige Format, das Links mit \href unterstützt und hyperref ist selbst sehr gut in der Lage, das abhängig vom Ausgabetreiber selbst richtig zu machen.
Übrigens empfehle ich, \title, \author etc. erst nach \begin{document} zu setzen, weil man dann auch problemlos babel-shorthands darin verwenden kann, ohne ggf. daran denken zu müssen, die vorher zu aktivieren und ggf. danach wieder zu deaktivieren.
[code]% turn of those nasty overfull and underfull hboxes
\hbadness=10000
\hfuzz=50pt[/code] Dinge, deren Sinn und Nützlichkeit man nicht verstanden hat, einfach irgendwie abzuschalten und als [i]nasty[/i] zu bezeichnen, ist nicht gerade etwas, was die Kompetenz eines Template-Autors unterstreicht. Hier wäre die Verwendung von microtype und ggf. \emergencystretch sicher eine bessere Lösung gewesen, die auch weit mehr Vertrauen in die Kompetenz des Autors geschaffen hätte.
[code]% sets line spacing
\renewcommand\baselinestretch{1.2}
\baselineskip=18pt plus1pt[/code] Das gehört zu dem grauenvollsten Code, den ich je gesehen habe. Der Urheber hat offensichtlich nicht einmal
[url=http://ctan.org/pkg/l2tabu]l2tabu[/url] gelesen, geschweige denn große Ahnung von Typografie. Schon das Umdefinieren von \baselinestretch statt der Verwendung von [url=http://ctan.org/pkg/setspace]setspace[/url] oder zumindest der Verwendung der Anweisung \linespread ist ein sträflicher Fehler. Dann die damit gewählte Einstellung noch einmal per explizitem Setzen von \baselineskip zu überschreiben ist kompletter Unfug. Dabei dann auch noch Leim in den Zeilenabstand einzufügen ist typografisch schlicht das Grauen! Kein vernünftiger Mensch will bei einem halbwegs normalen Dokument variablen Durchschuss! Es bleibt zu hoffen, dass irgendwo ein implizites \normalsize diese mehr als ungeschickte Einstellung wieder aufhebt!
[code]\newpage
\vspace{10mm}[/code] Hoffentlich hat sich der Urheber wenigstens gefragt, warum das \vspace nicht funktioniert. \vspace am Seitenfang wird nämlich schlicht ignoriert. Will man am Seitenanfang einen vertikalen Abstand einfügen, so benötigt man die Sternvariante \vspace*{10mm}. Das ist übrigens Anfängerwissen.
[code]% levels are: 0 - chapter, 1 - section, 2 - subsection, 3 - subsection[/code] Das stimmt nur bedingt. toclevel und secnumlevel sind nicht für alle Klassen und alle Gliederungsanweisungen deckungsgleich. Es gibt dazu sogar einen Eintrag in der LaTeX-Bug-Datenbank.
[code]\begin{multicols}{2} % \begin{multicols}{#columns}[header text][space]
\begin{footnotesize} % scriptsize(7) < footnotesize(Cool < small (9) < normal (10)
\printnomenclature[1.5cm] % [] = distance between entry and description
\label{nom} % target name for links to glossary
\end{footnotesize}
\end{multicols}[/code] Vorsicht! Der Missbrauch von \footnotesize als Umgebung kann auch daneben gehen, nämlich dann, wenn der aktuelle Abstatz vor dem Ende der Umgebung versehentlich nicht beendet wird. Da hier die gesamte multicols-Umgebung in \footnotesize gesetzt werden soll, hätte man dieses Risiko umgehen können, indem man statt der footnotesize-Umgebung ein schlichtes \footnotesize gesetzt hätte. Allerdings halte ich aus typografischer Sicht eine komplett in \footnotesize gesetzte Nomenklatur für einen Fehler! Was für Fußnoten noch erträglich ist, ist für seitenweise Informationen deutlich zu klein.
BTW: Die Bedeutung des Kommentars erschließt sich mir nicht.
[code]\renewcommand{\chaptername}{} % uncomment to print only "1" not "Chapter [/code]
Das funktioniert aber nur bis zu \appendix. Wenn das so gewollt ist, kann man das sicher so machen. Die KOMA-Script-Klassen bieten hier übrigens deutlich mehr Eingriffs-Möglichkeiten.
[code]\begin{multicols}{2} % \begin{multicols}{ # columns}[ header text][ space]
\begin{tiny} % tiny(5) < scriptsize(7) < footnotesize(Cool < small (9)
\bibliographystyle{Latex/Classes/PhDbiblio-url2} % Title is link if provided
\renewcommand{\bibname}{References} % changes the header; default: Bibliography
\bibliography{9_backmatter/references} % adjust this to fit your BibTex file
\end{tiny}
\end{multicols}[/code] Generell gleicher Hinweis wie oben. Wer allerdings das kompette Literaturverzeichnis in \tiny setzt, sollte es besser gleich ganz weg lassen. Dann spart er sich, zu jedem Exemplar des Dokuments noch eine Leselupe beizulegen. Ich sage es mal ganz direkt: Das ist grauenvoll!
[code]\ifx\pdfoutput\undefined
\LoadClass[dvips, a4paper]{book}
\else
\LoadClass[pdftex, a4paper]{book}
\fi[/code] Das ist wieder ein Zeichen dafür, dass der Urheber sich nicht auskennt. Mit \LoadClass gesetzte Optionen sind [i]keine[/i] globalen Optionen wie es die Optionen von \documentclass wären. Die Optionen werden also nur an die Klasse übergeben. book kennt aber keine Option dvips und keine Option pdftex. Damit ist die Fallunterscheidung schon aus dem Grund unsinnig, dass die dafür verwendet wird, Optionen an book zu übergeben, die book gar nicht kennt. Aber selbst, wenn dem nicht so wäre, wäre die Fallunterscheidung und die Übergabe dieser Optionen überflüssig, weil Pakete wie hyperref und graphics (letzteres über graphics.cfg) selbst zwischen den Treibern für pdftex und dvips (und nebenbei bemerkt auch ein paar anderen beispielsweise für VTeX) wählen.
BTW: Man sollte sich an der Stelle überlegen, ob die KOMA-Script-Klasse scrbook nicht eine bessere Grundlage wäre. Flexibler als book wäre sie in jedem Fall.
[code]\usepackage[english]{babel}[/code] Davon abgesehen, dass man in Klassen nicht \usepackage, sondern \RequirePackage verwendet (und das am besten ohne Optionen, um [i]option clash [/i]mit Einstellungen des Anwender zu vermeiden), soll die Klasse also ausschließlich für Dokumente in englischer Sprache verwendet werden? Anderenfalls wäre die Übergabe der Option an dieser Stelle eher unpraktisch.
[code]\usepackage[nottoc]{tocbibind} % correct page numbers for bib in TOC, nottoc suppresses an entry for TOC itself[/code] Das ist beispielsweise etwas, was bei Verwendung einer KOMA-Script-Klasse kein zusätzliches Paket benötigt, sondern einfach per Option (auch nachträglich per \KOMAoptions oder \KOMAoption) geregelt werden kann.
[code]\ifpdf
%-->
%--> Google.com search "hyperref options"
%-->
%--> http://www.ai.mit.edu/lab/sysadmin/.....latex/hyperref/manual.pdf
%--> http://www.chemie.unibas.ch/~vogtp/LaTeX2PDFLaTeX.pdf
%--> http://www.uni-giessen.de/partosch/eurotex99/ oberdiek/print/sli4a4col.pdf
%--> http://me.in-berlin.de/~miwie/tex-refs/html/latex-packages.html
%-->
\usepackage[ pdftex, plainpages = false, pdfpagelabels,
...[/code] Die komplette Fallunterscheidung hier könnte darauf reduziert werden, ob man \pdfcompresslevel setzt oder nicht.
[code] \DeclareGraphicsExtensions{.png, .jpg, .jpeg, .pdf, .gif} %GIF doesn't work??[/code] Ja, ganz genau. PDFTeX kann kein GIF bei der direkten PDF-Ausgabe. Wie man sieht, weiß der Ausgabetreiber von graphicx bzw. die graphics.cfg selbst sehr viel besser als der Urheber dieser Zeile, welche Dateiendungen verarbeitet werden können. Deshalb sollte man ihnen auch nichts ins Handwerk pfuschen und diese Zeile weglassen. \DeclareGraphicsExtensions braucht man überhaupt nur, wenn man selbst Handler für weitere Endungen hinzufügt. Das wird hier aber nicht gemacht, also ist die Definition bestenfalls überflüssigen, schlechtesten Falls ein grober Fehler.
[code] \graphicspath{{0_frontmatter/figures/PNG/}{0_frontmatter/figures/PDF/}{0_frontmatter/figures/}}[/code] Wenn man schon in der Klasse vorgibt, in welchen Verzeichnissen Abbildungen gefunden werden sollen, sollte man das vermutlich etwas allgemeiner machen.
[code]:-------------------------- page layout -----------------------
%A4 settings
\ifpdf
\pdfpageheight=297mm
\pdfpagewidth=210mm
\else
\setlength{\paperheight}{297mm}
\setlength{\paperwidth}{210mm}
\fi
\setlength{\hoffset}{0.00cm}
\setlength{\voffset}{0.00cm}
%: Uncomment this secion for two-sided printing
% ------------------------------
\setlength{\oddsidemargin}{1.5cm}
\setlength{\evensidemargin}{0cm}
\setlength{\topmargin}{1mm}
\setlength{\headheight}{1.36cm}
\setlength{\headsep}{1.00cm}
\setlength{\textheight}{20.84cm}
\setlength{\textwidth}{14.5cm}
\setlength{\marginparsep}{1mm}
\setlength{\marginparwidth}{3cm}
\setlength{\footskip}{2.36cm}
%: Uncomment this secion for one-sided printing
% taken from the original file, but with the first two lanes modified
% ------------------------------
%\setlength{\evensidemargin}{1.9cm} % was 1.96cm in original
%\setlength{\oddsidemargin}{-0.001cm} % was -0.54cm in original file
%\setlength{\topmargin}{1mm}
%\setlength{\headheight}{1.36cm}
%\setlength{\headsep}{1.00cm}
%\setlength{\textheight}{20.84cm}
%\setlength{\textwidth}{14.5cm}
%\setlength{\marginparsep}{1mm}
%\setlength{\marginparwidth}{3cm}
%\setlength{\footskip}{2.36cm}[/code] Pakete wie typearea und geometry existieren und sollten auch verwendet werden! Werte wie -0.001cm sehen mir eher wie irgendwie optisch abgeschätzt, statt mathematisch begründet aus. Vermutlich wurde irgendwas nachgemessen, nachdem man mit falschen Druckdialog-Einstellungen (Stichwort: [i]fit-to-paper[/i]) einen Probedruck gemacht hat.
[code]\renewcommand{\thepage}{\roman{page}}[/code] Da kennt offensichtlich jemand \pagenumbering nicht! Nach Möglichkeit sollte man solche Schnittstellen aber nutzen, weil nur sie Paketen die Möglichkeit geben, sich ggf. sauber einzuklinken.
[code]{ \Huge {\bfseries {\@title}} \par}[/code] Das lässt irgendwie vermuten, der Urheber wäre davon ausgegangen, dass \Huge und \bfseries Anweisungen mit Argument sind. Das ist aber nicht der Fall, weshalb man schlicht {\Huge\bfseries\@title\par} hätte schreiben können.
[code] \null\vfill [/code] Den Sinn von \vfill\null kenne ich ja (ähnlich \vspace bs. \vspace*), der von \null\vfill erschließt sich mir aber nicht so recht. Naja, irgendwas wird sich der Template-Autor dabei hoffentlich gedacht haben …
[code]\newcommand{\InsertFig}[3]{
\begin{figure}[!htbp]
\begin{center}
\leavevmode
#1
\caption{#2}
\label{#3}
\end{center}
\end{figure}
}[/code] Ja, genau, wenn man l2tabu (Link, oben) nicht gelesen hat und nicht weiß, dass center eigentlich eine Listenumgebung ist, dann macht man solche Fehler.
Nachdem ich nun eine halbe Ewigkeit allein mit dem Teil des mehr als fragwürdigen Codes verbracht habe, breche ich das hier ab. Es ist einfach zu viel misserabler Code, um auf alles einzugehen. Es bleibt das [b]Fazit: Wenn man direkt aufbauend von einer guten, erprobten Klasse wie scrbook oder memoir ausgehend ein Dokument erstellen würde, wäre das mit Sicherheit besser und einfacher, als all die Unwägbarkeiten eines solchen Templates zu beseitigen![/b] Die Frage, wie man irgendwelche leeren Seiten los wird, findet man dann übrigens ganz einfach in der Anleitung. In der KOMA-Script-Anleitung, scrguide.pdf, beispielsweise bei der Erklärung zur Option "open" (leicht über das Stichwortverzeichnis zu finden).