PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Subsection-Angabe in Kopfzeile wird verschluckt



Dee
27-08-2009, 09:55
Hallo,

mit diesem Code (aus dem zweiten LaTeX-Buch von Manuela Jürgens) sollte auf den ungeraden Seiten die Subsection rechts in der Kopfzeile stehen und bei geraden Seiten die Section:



\documentclass[twoside]{scrartcl}

\pagestyle{myheadings}
\renewcommand{\sectionmark}[1]{\markboth{Kapitel \thesection : #1}{}}
\renewcommand{\subsectionmark}[1]{\markright{Unterkapitel \thesubsection}}

\begin{document}
\section{Abschnitt 1}
\subsection{Unterabschnitt 1.1}
\clearpage
\section{Abschnitt 2}
\subsection{Unterabschnitt 2.1}
\clearpage
\section{Abschnitt 3}
\subsection{Unterabschnitt 3.1}
\end{document}


Wie man auf Seite 1 und 3 sieht, klappt das aber nicht. Wenn ich
\section{Abschnitt 3} auskommentiere, funktioniert es.

Sprich, das \subsectionmark wird offensichtlich nicht nach \sectionmark ausgeführt. Ist das korrekt oder mache ich einen Fehler? Wie kriege ich denn ohne zusätzliches Paket das Unterkapitel an die Stelle, wenn ich auf der gleichen Seite ein \section habe? (Eine Lösung mit fancyhdr kenne ich bereits, mir geht's ums Verständnis.)

Wenn das nicht geht, wäre ich an einer Erklärung zu diesem (in meinen Augen) Bug interessiert.

Gruß
Dee

Syytem: Ubuntu 8.04, TeX-Live 2007-13

Stefan_K
27-08-2009, 19:04
Hallo Dee,

\subsectionmark wird ausgeführt, Du würdest es sehen können, wenn Du weitere Seiten enfügst. Doch es gilt noch nicht auf der Seite, wo \section{Abschnitt 3} aufgerufen würde. Ein workaround wäre der Aufruf von \markright{Unterabschnitt 3.1} direkt nach \clearpage oder im \section-Parameter (mit zusätzlichem optionalen Parameter). Für \subsectionmark wäre zu dem Zeitpunkt der subsection-counter zu niedrig.

Viele Grüße,

Stefan


--
TeXblog (http://texblog.net)

Dee
27-08-2009, 19:14
Danke für die Erklärung. Aber wieso wird bei \subsection{Unterabschnitt 3.1} nicht \subsectionmark aufgerufen? Oder wieso dominiert das vorherige \sectionmark?

Gruß Dee

Stefan_K
27-08-2009, 19:19
Es wird ja aufgerufen, nur gilt es für die folgenden Seiten und nicht für die bereits begonnene.

Stefan

Dee
27-08-2009, 19:35
Und warum gilt es erst für die folgende Seite? Oder warum gilt es doch wieder für die aktuelle, wenn das \sectionmark nicht gerufen wird?

Hab grad mal das getestet:



\sectionmark{Abschnitt 3}
\subsectionmark{Unterabschnitt 3.1}


Auch mit diesem Direktaufruf auf Seite 3 wird das \subsectionmark ignoriert. Das gleiche passiert bei



\markboth{Kapitel \thesection : Abschnitt 3}{}
\markright{Unterkapitel \thesubsection}


Das heißt also seltsamerweise, dass \markright komplett ignoriert wird.

Interessant wird, wenn man es andersrum schreibt:



\markright{Unterkapitel \thesubsection}
\markboth{Kapitel \thesection : Abschnitt 3}{}


Dann wird auch auf der Seite mit der \subsection die Kopfzeile korrekt angepasst.

Für mich liest sich das fast so, als würde das Ändern der Kopfzeile von "unten" auf der Seite nach "oben" geparst. Kann das sein?

Gruß Dee

bobmalaria
27-08-2009, 19:40
hi,

es wird einfach immer das hörere level dargestellt. auf einer seite auf der section und subsection beginnen ist, für mich logisch, der beginn der section wichtiger als der der subsection. deshalb wird ist sectionmark relevant. steht auf der folgeseite nur subsectiontext, wird eben die subsection ausgegeben. sollte auf seite zwei bereits eine neue section beginnen, dann sollte wieder die section in der kopfzeile erscheinen. eingroßes: oder? :rolleyes:

Dee
27-08-2009, 19:48
Klingt logisch, aber auch nur, wenn \subsection auf \section folgt. Ist die Reihenfolge \subsection und auf der gleichen Seite eine \section klappt die Darstellung ja:



\subsection{Unterabschnitt 2.2}
\section{Abschnitt 3}
\subsection{Unterabschnitt 3.1}


Sprich das \sectionmark, obwohl nach Deiner Aussage wichtiger, überschreibt mit \markboth _nicht_ das zuvor gesetzte \markright der \subsection{Unterabschnitt 2.2}, oder? Da wäre die Frage, wieso nicht, wenn Du mit Deiner Aussage recht hast (was ich nicht anzweifeln will, es passt nur noch nicht ganz zusammen).

Gruß Dee

u_fischer
28-08-2009, 14:32
\markboth und \markright setzen beide eine Marke, die aus zwei Abteilen besteht. Dabei füllt \markboth beide Abteile ("both"=beide) neu, \markright füllt nur das rechte "Abteil" neu und übernimmt das linke Abteil von der vorherigen Marke.


Im Kopf werden dann \leftmark oder \rightmark benutzt. Dabei fügt \leftmark, den Wert im linken Abteil der letzte Marke auf der Seite, \rightmark das rechte Abteil der ersten Marke. Wenn du auf einer Seite \sectionmark und dann \subsectionmark benutzt, dann befindet sich die subsection-Info im rechten Abteil der letzten Marke, wird also weder von \leftmark noch von \rightmark benutzt. Du kannst aber das Paket extramarks benutzen, um auch diesen Teil der Marke zu nutzen.

Überleg dir aber gut, ob du wirklich section + subsection im Kopf haben willst. da kann es leicht zu verwirrenden Reihenfolgen kommen (chapter + section funktionieren gut, weil chapter immer eine neue Seite beginnt).

Dee
28-08-2009, 18:17
Vielen Dank für die Erklärung. Ich glaube, ich habe es verstanden und kann es hoffentlich so weitergeben.

Viele Grüße
Dee