Kolumnentitel - Bei Chapter hrul ändern

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


TinTin82
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Mo 21. Mai 2018, 10:49

Kolumnentitel - Bei Chapter hrul ändern

Beitrag von TinTin82 »

Hi,

ich habe mein Kolumentitl-Lyout mit den Funktionen:
\renewcommand\@oddhead{%
\vtop{%
...
\rule{\textwidth}{0.5pt}%
}%
}%

\renewcommand\@evenhead{%
\vtop{%
....
\rule{\textwidth}{0.5pt}%
}%
}%
angepasst. Jetzt würde ich gerne die
\rule{\textwidth}{0.5pt}%
immer dann verändern, wenn ich ein neues Chaper beginne
\newcommand\chapter{\secdef\chaptera\chapterb}%
\newcommand\chaptera[2][?]
{
...
    \@afterheading
}
\newcommand\chapterb[1]
{
...
}

Wie kann ich denn das am besten anstellen ?
Was wird eigentlich zuerste gmeacht, die Kolumnentitel oder der Text gesetzt ??
Wie kann ich eine Variable automatisch löschen, wenn eine neue Seite begonnen wird ??

Viele Grüße,
TinTin
Zuletzt geändert von TinTin82 am Sa 7. Sep 2019, 23:22, insgesamt 1-mal geändert.

Gast

Beitrag von Gast »

Deine Frage ist ohne vollständiges Minimalbeispiel leider sehr unklar.

Üblicherweise ändert man \@oddhead etc. nicht direkt, sondern definiert Seitenstile., Auf Low-Level-Ebene wäre das ein \ps@…-Befehl, der dann seinerseits die internen Befehle für Kopf- und Fuß-Definition ändert. Dann kann man für Spezialseiten wie Kapitelanfangsseiten einen eigenen Seitenstil definieren und diesen nur für diese eine Seite mit Hilfe von \thispagestyle aktivieren. Auf der nächsten Seite gilt dann automatisch wieder der mit \pagestyle global eingestellte Seitenstil. So kann man Unterschiede für einzelne Seiten sehr einfach regeln. Schau dir dieses Vorgehen beispielsweise für \chapter in book und report in classes.dtx in den LaTeX-Quellen an.

Achja: Aufgrund des asynchronen Seitenumbruchs wird immer zuerst der Inhalt des Textbereichs erstellt, dann wird der Kopf ausgegeben, dann der bereits fertige Inhalt des Textbereichs ausgegeben und dann der Fuß. Es gibt also einen Unterschied zwischen dem Erzeugen des Inhalts und dessen Ausgabe.

Die Kommunikation vom Textbereich in den Kopf oder Fuß geschieht üblicherweise über \markboth, \markright, \rightmark und \leftmark, weil nur der Tatsache Rechnung getragen wird, dass man innerhalb eines Absatzes des Textbereichs nicht weiß, ob dieser auf der aktuellen Seite oder einer späteren Seite ausgegeben werden wird. Von der Asynchronität ist man nur unmittelbar nach einem \newpage o. ä. nicht betroffen.

Ich empfehle jedem, der eine Klasse von Grund auf neu schreiben will, sich den dokumentierten Quellcode der Standardklassen gründlich anzuschauen. Daraus kann man sehr viel lernen. Macht man das nicht, stolpert man üblicherweise in recht viele Irrtümer. Ich habe vor über 25 Jahren genauso angefangen und profitiere noch heute davon.

Ein noch einfacherer Einstieg wäre übrigens, mit einer Wrapper-Klasse anzufangen, also beispielsweise einer Klasse, die per \LoadClass oder \LoadClassWithOptions (siehe clsguide) book lädt und danach Schritt für Schritt einzelne Definitionen ändern. Das hat auch den Vorteil, dass man gleichzeitig ein Testdokument aufbauen kann, das die Auswirkungen der eigenen Versuche zeigt. Und man kann im Falle von Fragen einfach ein vollständiges Minimalbeispiel bauen, das nur die Änderung enthält, die für die jeweilige Frage relevant ist. Das erleichtert dann auch die Kommunikation mit anderen Paketautoren.

Antworten