PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Falsche Reihenfolge und Seitenzahlen im Inhaltsverzeichnis



Riffelblech
08-04-2010, 13:50
Hallo,

ich habe ein Problem mit dem Inhaltsverzeichnis bei meiner Diplomarbeit. Die Reihenfolge der Kapitel sollte eigentlich so aussehen:

Themenvereinbarung
Erklärung
Vorwort
AbbVZ
TabellenVZ
AbkVZ
1 Einleitung
2 Grundlagen
3 Fazit
4 LiteraturVZ
Anhang

Nach mehrmaligem Kompilieren sieht das Inhaltsverzeichnis aber, mit Seitenzahlen, folgendermaßen aus:

Themenvereinbarung iv
Erklärung v
Vorwort vi
AbbVZ vii
TabellenVZ viii
1 Einleitung 1
AbkVZ 1
2 Grundlagen 2
3 Fazit 4
4 LiteraturVZ 5

Mein Code lautet, im Groben, so:



\begin{document}

\frontmatter

\begin{titlepage}
...
\end{titlepage}


\clearpage
\markboth{Themenvereinbarung}{Themenvereinbarung}
\include{Themenvereinbarung}
\addcontentsline{toc}{chapter}{Themenvereinbarung}

\clearpage
\markboth{Erklärung}{Erklärung}
\include{Erklärung}
\addcontentsline{toc}{chapter}{Erklärung}

\clearpage
\markboth{Vorwort}{Vorwort}
\include{Vorwort}
\addcontentsline{toc}{chapter}{Vorwort}

\clearpage
\taleofcontents

\clearpage
\listoffigures
\addcontentsline{toc}{chapter}{Abbildungsverzeichn is}

\clearpage
\listoftables
\addcontentsline{toc}{chapter}{Tabellenverzeichnis }

\clearpage
\markboth{Abkürzungsverzeichnis}{Abkürzungsverzeic hnis}
\include{Abkürzungsverzeichnis}
\addcontentsline{toc}{chapter}{Abkürzungsverzeichn is}

\mainmatter

\include{Einleitung}
\include{Grundlagen}
\include{Fazit}
\include{Literaturverzeichnis}

\end{document}



Neben der Falschen Reihenfolge tritt noch das Problem auf, dass die Seitenzahlen falsch zugeordnet werden. Ab der Stelle im Code, an der das Inhaltsverzeichnis eingefügt wird, stimmt die Seitenzahl. Davor ist die Seitenzahl aber um 1 zu hoch. Das Vorwort z.B. ist eigentlich auf Seite v. Im Inhaltsverzeichnis wird es aber auf Seite vi aufgeführt. Gleiches gilt für die Themenvereinbarung, die Erklärung und das Vorwort. Ausserdem wird das Abkürzungsverzeichnis, was ich im Moment noch manuell erstelle, an der falschen Stelle im Dokument eingefügt. Es sollte noch vor der Einleitung stehen und römisch nummeriert sein und nicht dahinter, mit arabischen Zahlen.

Vllt. hat ja jemand eine Idee, woran das liegen kann. Wenn dazu noch andere Angaben benötigt werden, reiche ich die gerne nach.

Schonmal danke

Schweinebacke
08-04-2010, 14:20
Wenn Du die \addcontentsline-Anweisungen immer erst nach dem Einfügen der entsprechenden Verzeichnisse stehen hast, dann werden die Anweisungen natürlich auch erst danach ausgeführt und verweisen auf die Seiten danach. Zusammen mit \include gibt das maximales Durcheinander, weil bei \include Material per \immediate\write ausgeführt wird, während \addcontentsline nur mit \write arbeitet. Die \addcontentsline-Anweisungen gehören also irgendwo in die per \include geladenen Dateien. Wo genau kann ich Dir nicht sagen, weil Du statt eines vollständigen Minimalbeispiels nur ein Codefragment geliefert hast. Eventuell bietet die verwendete Klasse, die Du uns ebenfalls unterschlagen hast, sogar eine bessere Möglichkeit, beispielsweise \addsec oder \addchap bei KOMA-Script.

u_fischer
08-04-2010, 14:29
Deine \addtocontents-befehle sind an den falschen Stellen. Benutze eine Klasse wie scrbook, die geeignete Optionen für deinen Zweck zur Verfügung stellt.

Und vermeide wenn möglich \include. Benutze lieber \input. Wenn du (wegen \includeonly) wirklich \include verwenden musst/willst, dann tue allen Code, der zu dem Kapitel gehört, in die Datei.

Riffelblech
08-04-2010, 15:22
Stimmt, sorry, die Klasse wollte ich ja noch reinschreiben. Ich nutze scrbook.

Ich habe jetzt alles von \include auf \input umgestellt und \markboth, sowie \addcontentsline jeweils direkt an den Anfang der einzubindenden Dateien geschrieben. Im Moment funktioniert alles so, woe ich es haben wollte.

Nochmal danke.

mechanicus
08-04-2010, 15:26
Hallo Ulrike,


Und vermeide wenn möglich \include. Benutze lieber \input. Wenn du (wegen \includeonly) wirklich \include verwenden musst/willst, dann tue allen Code, der zu dem Kapitel gehört, in die Datei.
Es hört sich für mich so an, als wenn du gegen include bist? Ist dem so und wenn ja warum?

Gruß
Marco

Riffelblech
08-04-2010, 15:43
Hört sich für mich auch so an. Kann aber nicht so ganz beurteilen, was die bessere Lösung ist. Dachte eigentlich \include, da dort doch eine neue Seite angefangen wird, wenn ich das richtig gelesen habe. Bei einem neuen Kapitel ist das ja eigentlich gewollt.

lockstep
08-04-2010, 15:47
\chapter beginnt standardmäßig eine neue Seite (je nach Einstellung sogar eine neue rechte Seite) - dafür brauchst du \include nicht.

lockstep

u_fischer
08-04-2010, 16:03
Es hört sich für mich so an, als wenn du gegen include bist? Ist dem so und wenn ja warum?

Weil \include komplizierter als \input ist: \include führt ein \newpage aus und öffnet eine eigene aux-Datei. Es eignet sich daher nur für wirklich "in sich abgeschlossene" Einheiten wie ganze Kapitel und man muss aufpassen, was man innerhalb und was außerhalb der eingebundenen Datei schreibt. \includes können auch nicht geschachtelt werden.

Warum also sollte ich jemandem raten, einen komplizierteren, fehlerträchtigen Befehl zu verwenden, statt des meist völlig ausreichenden und geeigneteren \input?

mechanicus
08-04-2010, 16:14
Hi,


Warum also sollte ich jemandem raten, einen komplizierteren, fehlerträchtigen Befehl zu verwenden, statt des meist völlig ausreichenden und geeigneteren \input?
Ich finde, dass der Befehl includeonly ein ausschlaggebender Punkt ist. Ich finde, für größere Arbeiten ist das wirklich hilfreich. Ich habe bspw. am Dienstag ein Kapitel beim Verlag abgeben müssen und zu gleich das vollständige Inhaltsverzeichnis. Das wäre mit input nicht möglich. Natürlich hast du recht, dass include nur sinnvoll ist, wenn es abgeschlossene Einheiten (Kapitel) beinhaltet.

Nicht für Ulrike (sie weiß es sowieso) Eine schöne Zusammenfassung hat Rainer Schoepf bei der DANTE-FAQ hinterlegt
http://projekte.dante.de/DanteFAQ/GrosseDokumente

Gruß
Marco

tral
08-04-2010, 16:27
Könnte man nicht analog zur Definition von \includeonly in latex.ltx ein \inputonly definieren? Der Code sieht nicht so schwierig aus. im Endeffekt wird bei jedem \include{dateiname} geschaut, ob "dateiname" in der Liste \@partlist vorkommt...

Christian.

u_fischer
08-04-2010, 16:38
Selbstverständlich ist die Kombination \include/includeonly bei großen Dokument nützlich. Aber die wenigsten nutzen \include deswegen. Viel häufiger (wie auch hier) wird \include aus den falschen Gründen genutzt: Weil jemand glaubt, er brauche es für eine neue Seite, weil er wegen des Namens glaubt, das wäre der normale Befehl, um etwas zu "inkludieren", weil er von \input einfach noch nie was gehört hat. Ich habe schon Leute gesehen, die haben versucht, einen Tabellenkörper per \include einzubinden.

mechanicus
08-04-2010, 16:40
Hi,


Viel häufiger (wie auch hier) wird \include aus den falschen Gründen genutzt: Weil jemand glaubt, er brauche es für eine neue Seite, weil er wegen des Namens glaubt, das wäre der normale Befehl, um etwas zu "inkludieren", weil er von \input einfach noch nie was gehört hat.

Um diese Missverständnisse zu beseitigen, sind wir u.a. hier ;)



Ich habe schon Leute gesehen, die haben versucht, einen Tabellenkörper per \include einzubinden.
:D:D:D
Das finde ich leicht amüsant.

Gruß
Marco

Schweinebacke
08-04-2010, 17:59
Stimmt, sorry, die Klasse wollte ich ja noch reinschreiben. Ich nutze scrbook.

Ich habe jetzt alles von \include auf \input umgestellt und \markboth, sowie \addcontentsline jeweils direkt an den Anfang der einzubindenden Dateien geschrieben. Im Moment funktioniert alles so, woe ich es haben wollte.
Wie bereits geschrieben, kannst Du Dir bei KOMA-Script, also auch bei scrbook, das Leben einfacher machen. Wenn Du beispeilsweise statt \chapter*{Erklärung} einfach \addchap{Erklärung} verwendest brauchst Du zumindest die \addcontentsline-Anweisungen nicht mehr, weil \addchap den entsprechenden Eintrag bereits selbst vornimmst. Die \markboth-Anweisung brauchst Du nur, wenn wirklich beide Argumente (also normalerweise die Kopfzeile von linken und rechten Seiten) belegt sein soll. Ein \markboth{Erklärung}{} führt \addchap bereits aus. Ein \markboth{Erklärung}{Erklärung} müsste dann aber AFAIK nach \addchap stehen, nicht davor.

Die Anweisung \addchap ist in der KOMA-Script-Anleitung, scrguide.pdf, dokumentiert. Über den Befehlsindex findet man die schnell.