Seite 1 von 2
LaTeX Fehler im Kopfzeilencode
Verfasst: Fr 16. Jan 2009, 10:41
von gflash
Hallo,
ich bin ein LaTeX Neuling und möchte meine Abschlussarbeit darin schreiben. Dazu habe ich eine Vorlage von der Uni bekommen, die aber bei mir beim kompilieren einen Fehler verursacht:
Thesis.tex:32:Missing \begin{document}. ...e}{\thepage}} \cfoot{} \plainheadrulewidth
Ich konnte den Fehler soweit isolieren dass er in diesen beiden Zeilen stecken muss:
\rhead[\fancyplain{}{\leftmark}]%
{\fancyplain{\thepage}{\thepage}} \cfoot{} \plainheadrulewidth 0.4pt
Es wäre nett wenn jemand den Fehler lokalisieren könnte und mir erklärt, wie er zustande kommt.
Distribution: texlive
Editor: Kile
Danke!
Gregor
Verfasst: Fr 16. Jan 2009, 15:03
von DonCube
Ohne es zu probieren was auch nciht ohne erstellen eines Minimalbeispiels möglich wäre würde ich behaupten das es an diesem Konstrukt liegt
\plainheadrulewidth 0.4pt
Das ARgument ist nicht geklammert. Es müsste heißen:
\plainheadrulewidth{0.4pt}
Ich hoffe das wars.
Gruß
DonCube
Verfasst: Fr 16. Jan 2009, 15:32
von gflash
Danke für die Antwort, aber das wars leider nicht. Hier mal der ganze Kopfzeilencode:
\pagestyle{fancyplain}
\renewcommand{\sectionmark}[1]{\markboth{Chapter~\thesection.~~#1}{#1}}
\renewcommand{\subsectionmark}[1]{\markright{\thesubsection\ #1}}
\rhead[\fancyplain{}{\leftmark}]%
{\fancyplain{\thepage}{\thepage}} \cfoot{} \plainheadrulewidth{0.4pt}
% sonst: Overfull \vbox-Warnung wegen fancyheadings-pacakage
% idea of: nic@minster.york.ac.uk (Nick Cropper)
\makeatletter
\ifcase \@ptsize \relax % 10pt
\addtolength{\headheight}{1\p@}
\or % 11pt
\addtolength{\headheight}{2\p@}
\or % 12pt
\addtolength{\headheight}{3\p@}
\fi \makeatother
Wenn ich die beiden o.g. Zeilen kommentiere, funktioniert es.
Anfangs wurde ich aufgefordert, "fancyhdr" statt "fancyheadings" zu benutzen. Gibt es unterschiede zwischen den beiden Paketen?
Verfasst: Fr 16. Jan 2009, 17:06
von pospiech
gflash hat geschrieben:
Anfangs wurde ich aufgefordert, "fancyhdr" statt "fancyheadings" zu benutzen. Gibt es unterschiede zwischen den beiden Paketen?
Klar, fancyheadings ist veraltet und nur noch bei LaTeX dabei, damit Leute die im letzten Jahrhundert ihre Dokumente erstellt haben es noch kompilieren können.
Verfasst: Sa 17. Jan 2009, 08:49
von gflash
Hallo,
muss ich denn vielleicht am obigen Code irgendwas ändern damit es zu fancyhdr kompatibel ist?
Verfasst: Sa 17. Jan 2009, 10:35
von DonCube
Also ohne Minimalbeispiel, lässt sich da gar nichts sagen. Allerdings würde ich so ein derartiges Konstrukt auch nie benutzen. Viel zu kompliziert. Warum nicht einfach die Kopf- und Fusszeilen nehmen wie bei scrpage2 und dann einstellen was man will. So wirkt es doch reichlicht kompliziert.
Ausser natürlich es kann was, dass scrpage2 nicht kann. Aber das kann ich so nicht sagen da ich kein Dokument sehe und vergleichen kann.
Vielleicht ssagst oder zeigst du uns was du gerne haben möchtest und wir helfen dir beim erstellen. Ein Vorlage die beim ersten kompilieren direkt Fehler produziert ist gelinde gesagt schlecht. Nichts gegen deine Uni aber das ist natürlich wirklich nicht Sinn einer Vorlage.
Gruß
DonCube
Verfasst: Sa 17. Jan 2009, 12:23
von gflash
Hallo,
ich hoffe das hier ist nicht zu minimal:
\documentclass[a4paper,10pt]{article}
\usepackage{fancyhdr}
\rhead[\fancyplain{}{\leftmark}]%
{\fancyplain{\thepage}{\thepage}} \cfoot{} \plainheadrulewidth{0.4pt}
\begin{document}
\end{document}
Es produziert denselben Fehler wie das eigentliche Dokument.
Wie gesagt, es stammt aus einer Vorgabe, ich habe den Code nicht selber geschrieben. Mit scrpage2 werde ich mich mal auseinander setzen, wenns dieselben Ergbnisse liefert kann ich es benutzen. Aber mich interessiert trotzdem wo das Problem liegt
[/code]
renewcommand für plainrulewidth
Verfasst: Sa 17. Jan 2009, 12:52
von DonCube
Fehler gefunden. In Der Präambel kann der Befehl \plainheadrulewidth nicht verwendet werden. Wenn du dort den Wert ändern willst kannst du es wie unten angegeben mittels renewcommand tun. Ansonsten musst du den Befehl local im Dokument verwenden. Davon rate ich alledings ab, da nach meinem Verständniss alle Seiteneinstellungen in der Präambel gemacht werden sollten. Anbei der Code:
\documentclass[a4paper,10pt]{article}
\usepackage[ngerman]{babel}
\usepackage{fancyhdr}
\rhead[\fancyplain{}{\leftmark}]{\fancyplain{\thepage}{\thepage}}
\cfoot{}
\renewcommand{\plainheadrulewidth}{0.4pt}
\begin{document}
\plainheadrulewidth{0.4pt}
\end{document}
Irgendwie habe ich deinen ersten Post nicht sauber gelesen. Da steht ja die Fehlermeldung drin. Aber pospiech ist wohl das gleiche passiert. Nichts für ungut.
DonCube
Verfasst: So 18. Jan 2009, 14:04
von gflash
Super, so funktionierts! Vielen Dank für die Hilfe, allein hätte ich da lange gesucht.
Verstehe ich das richtig dass die beiden Befehle \plainheadrulewidth alternativ sind? Also entweder mit \renewcommand iin der Präamble oder alleine im Dokument?
Re: renewcommand für plainrulewidth
Verfasst: Fr 23. Jan 2009, 12:15
von KOMA
DonCube hat geschrieben:In Der Präambel kann der Befehl \plainheadrulewidth nicht verwendet werden.
Nur um das noch auf den Punkt zu bringen: \plainheadrulewidth ist keine Länge (würde man beispielsweise mit \setlength{\LAENGE}{WERT} oder der für LaTeX-Anwender nicht empfehlenswerten Low-Level-TeX-Methode \LAENGE=WERT, wobei das Gleichheitszeichen optional ist, setzen), sondern eine Anweisung. Es ist aber keine Anweisung mit Argument, die eine entsprechende Angabe irgendwo (beispielsweise in einer Länge) speichert, sondern eine Anweisung, die schlicht den gewünschten Wert enthält. Man stellt den gewünschten Wert also immer mit \renewcommand*{\plainheadrulewidth}{WERT} ein und erhält mit \plainheadrulewidth das, was man als WERT angegeben hat.
Präambel oder nicht, spielt dabei keine Rolle. Der Unterschied ist schlicht, dass ein \plainheadrulewidth in der Präambel diesen Wert eben in der Präambel ausgeben will, und ein \plainheadrulewidth im Body das gleiche im Text. Aushaben in der Präambel führen immer zu einem besagtem Fehler. Ob die Ausgabe nun aus einer Anweisung stammt oder direkt aus »= 0.4pt« spielt dabei keine Rolle.