BEARBEITEN

BEARBEITEN

Ich arbeite unter Verwendung der Berichtsklasse an einem langen Dokument mit vielen Kapiteln.

Ich möchte drei verschiedene Versionen bestimmter Abschnittstitel haben (lang für Dokument, mittel für Inhaltsverzeichnis und kurz für Überschrift). Ich verwende das Paket fancyhdr, also habe ich die Anweisungen in einer schönen Weise befolgtFAQ(auch in dieser Frage angegeben:Wie verwende ich einen kurzen Unterabschnittstitel in der Kopfzeile, aber nicht im Inhaltsverzeichnis?).

\section[TOC_title]{Full_title\sectionmark{Header_title}}
\sectionmark{Header_title}

(Ich glaube, die Idee besteht darin, dass der Innentitel sectionmarksich um die Seite kümmert, auf der der Abschnitt beginnt, und der Außentitel sich um die nachfolgenden Seiten kümmert.)

Das hat alles gut funktioniert. Da mein Dokument jedoch doppelten Zeilenabstand hat, habe ich auch titleseceinige Leerzeichen um Kapitel- und Abschnittsüberschriften herum verkleinert.

Jetzt erhalte ich auf der Seite, auf der der Abschnitt beginnt, den TOC_title-Header (falsch) und auf den nachfolgenden Seiten dann den (korrekten) Header_title-Header. Das möchte ich natürlich beheben.

Ich vermute, dass das fancyhdrauf lange Sicht keine gute Idee ist und ich zu einem anderen Header-Paket wechseln sollte, aber ich möchte das aktuelle Dokument nicht durcheinanderbringen. Ich möchte es titlesecim Moment auch nicht aufgeben, weil es bei den doppelten Leerzeichen wirklich sehr geholfen hat und das Problem, das ich habe, im Vergleich dazu geringfügig ist.

Gibt es eine Möglichkeit, dies zu beheben titlesec? Ich habe versucht, dieDokumentationaber ich bin ganz verwirrt. Ich wäre sehr dankbar, wenn jemand, der dieses Paket bereits kennt, einen Vorschlag machen könnte.

Diese Frage wurde schon einmal gestellt inWie füge ich einen Kurztitel in die Kopfzeile, aber einen Langtitel in das Inhaltsverzeichnis ein (Konflikt des Titlesec-Pakets mit der Abschnittsmarkierung)?. Aber die einzige Antwort schlägt KOMA-script vor; ich vermute, dass es sich dabei um eine andere Paketfamilie handelt, die ich jetzt nicht lernen werde.

Ich möchte noch hinzufügen, dass meine Dissertation morgen fällig ist, sodass ich heute keine Zeit haben werde, ein kleines funktionierendes Beispiel zusammenzustellen. Ich bin daran interessiert, dieses Problem sowohl heute als auch langfristig zu lösen, sodass ich bei Bedarf später darauf zurückkommen und dies tun kann. Aber in der Zwischenzeit würde ich mich sehr über jede Antwort freuen, die ich heute bekomme!

UPDATE (1. Mai 2015): Hier ist ein minimales funktionierendes Beispiel. Der Ponysec-Header auf der ersten Seite ist korrekt, wenn \usepackage{titlesec} auskommentiert ist, andernfalls nicht. Der Carouselsec-Header verwendet Ulrike Fischers Minihack und funktioniert in beiden Fällen.

\documentclass{report}
\usepackage{fancyhdr}
\usepackage{titlesec}
\newcommand{\funnysection}[3]
     {\let\orisectionmark\sectionmark
     \renewcommand\sectionmark[1]{}%
     \section[{#2}]{{#1}\orisectionmark{{#3}}}
     \orisectionmark{{#3}}
     \let\sectionmark\orisectionmark}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% BEGIN DOCUMENT    %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\tableofcontents
\pagestyle{fancy}

\chapter{Mychapter}
\section{Cactussec (UNIVERSION)}
No header on this page.
\clearpage
\section[Ponysec (TOC)]{Ponysec (main)\sectionmark{Ponysec (header)}}
\sectionmark{Ponysec (header)} 
Desired header here is "Ponysec (header)".
\clearpage
Desired header here is "Ponysec (header)".
\clearpage
\funnysection{Carouselsec (main)}{Carouselsec (TOC)}{Carouselsec (header)}
Desired header here is "Carouselsec (header)".
\clearpage
Desired header here is "Carouselsec (header)".
\end{document}

Wenn die richtige Lösung (für mich, der nicht wirklich weiß, was KOMA/KONA/Skript bedeutet, und trotz dieser massiven Unwissenheit heute, diese Woche, diesen Monat anständige gesetzte Dokumente erstellen möchte) darin besteht, anstelle titlepsvon zu verwenden fancyhdr, würde ich trotzdem gerne herausfinden, wie das geht.

Antwort1

Sie können Folgendes versuchen, um Titlesec auszutricksen:

\let\orisectionmark\sectionmark
\renewcommand\sectionmark[1]{}%
\section[TOCtitle]{Fulltitle\orisectionmark{Headertitle}}
\orisectionmark{Headertitle}
\let\sectionmark\orisectionmark

BEARBEITEN

Einige Anmerkungen zu den Kommentaren: Sie haben kein Minimalbeispiel angegeben, daher waren die meisten nur Vermutungen. titlesec ruft intern \sectionmark{TOCtitle}so früh auf, dass Ihre eigenen \sectionmarkBefehle zu spät kommen. Ich definiere es also \sectionmarkauf nichts um, damit titlesec keine Markierung mehr setzen und eine Kopie \orisectionmarkzum Setzen Ihrer Markierungen verwenden kann. Das Ersetzen der mittleren \orisectionmark's durch \sectionmarksolltenichtArbeit – schließlich ist der Befehl so definiert, dass er nichts tut.

Ich weiß nicht, warum Sie die KONA-Klassen nicht verwenden möchten, aber meiner Meinung nach würde eine Lösung mit Titlesec bedeuten, Fancyhdr fallenzulassen und stattdessen Titleps zu verwenden. Ich bin ziemlich sicher, dass Javier irgendwo eine Möglichkeit implementiert hat, die Markierungen richtig zu setzen, aber wie Sie bereits herausgefunden haben, sind seine Dokumentationen nicht leicht zu lesen, und um etwas zu finden, das funktioniert, ist oft viel Ausprobieren und Lesen des Codes erforderlich.

Antwort2

Mit KOMA-script wäre das kein Problem :-)

\documentclass[headings=optiontoheadandtoc]{scrartcl}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\section[tocentry={platypus dancing till morning},%
head={dancing platypus}]%
{The platypus went on dancing till the mornig sun rose
over the hills}
\blindtext[5]
\end{document}

annaTocHeadTitles

verwandte Informationen