Fancyhdr Sectionnummerierung in Chapter verbergen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Fancyhdr Sectionnummerierung in Chapter verbergen

Vielen Dank!

von niklaslatex » So 5. Jan 2020, 13:38

Vielen Dank, das war der entscheidende Hinweis ;-) Für evtl. andere Suchenden, hier noch die angepasste Definition:


% ---- Kopfzeilen: -------------------------------
\usepackage{fancyhdr}

% Kapitel fett, Sec. normal, mit Nummerierung (mittels \thechapter, \thesection).
% Alles, was in \mbox steht, wird nicht umgebrochen
\fancypagestyle{fncystyle}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small%
    \nouppercase{\textbf{\leftmark}}% oder \textbf{\nouppercase{\leftmark}}
    \rightmark}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Fuer Kapitel ohne Nummerierung soll in der Kopfzeile auch keine Kapitelnummer gesetzt werden / Abstract
\fancypagestyle{starredchap}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small\textbf{\nouppercase{\leftmark}}}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Redefine the plain page style (applied on first page in each chapter):
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[R]{\small\thepage}%
  \renewcommand{\headrulewidth}{0pt}% Line at the header invisible
  \renewcommand{\footrulewidth}{0.0pt}% Line at the footer visible
}

\pagestyle{fncystyle}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter\hspace{0.8em}#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\hspace{1em}{\thesection\hspace{0.5em}#1}}}
Beste Grüße
Niklas

von oft gesehener » So 5. Jan 2020, 13:00

Dann verschieb es eben in das \markriht der \sectionmark-Definition. Damit wir es Teil der \rightmark. Es wird dann also nur eingefügt, wenn \sectionmark (von \section) tatsächlich aufgerufen wird.

Korrektur - hab mich vertippt

von niklaslatex » So 5. Jan 2020, 12:22

Entschuldigung, es geht natürlich um das hspace, ich hatte mich mit dem vspace vertippt.

BG
Niklas

Vielen Dank - und noch eine kleine Sache ;-)

von niklaslatex » So 5. Jan 2020, 12:21

Vielen Dank für die Hilfe, das hat hervorragend funktioniert!

Jetzt habe ich noch eine kleine Sache.
%Das ist mein Minimalbeispiel
\documentclass[a4paper, 11pt, fleqn, openany, oneside]{book}
    % General document formatting
    \usepackage[margin=0.7in]{geometry}
    \usepackage[parfill]{parskip}
    \usepackage[utf8]{inputenc}
   
    % Related to math
    \usepackage{amsmath,amssymb,amsfonts,amsthm}
     
% ---- Kopfzeilen: -------------------------------
\usepackage{fancyhdr}

% Kapitel fett, Sec. normal, mit Nummerierung (mittels \thechapter, \thesection).
% Alles, was in \mbox steht, wird nicht umgebrochen
\fancypagestyle{fncystyle}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small%
    \nouppercase{\textbf{\leftmark}}% oder \textbf{\nouppercase{\leftmark}}
    \hspace{1em}
    \rightmark}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Fuer Kapitel ohne Nummerierung soll in der Kopfzeile auch keine Kapitelnummer gesetzt werden / Abstract
\fancypagestyle{starredchap}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small\textbf{\nouppercase{\leftmark}}}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Redefine the plain page style (applied on first page in each chapter):
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[R]{\small\thepage}%
  \renewcommand{\headrulewidth}{0pt}% Line at the header invisible
  \renewcommand{\footrulewidth}{0.0pt}% Line at the footer visible
}

\pagestyle{fncystyle}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter\hspace{0.8em}#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\hspace{0.5em}#1}}

\usepackage{emptypage}  % Keine Kopf-/Fusszeilen auf leeren Seiten      

\begin{document}

\chapter{Chapter A}

\section{Section 1.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.1.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.1.2}

Lorem ipsum dolor sit amet...

\newpage
\section{Section 1.2}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.2.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.2.2}

Lorem ipsum dolor sit amet...

\chapter{Chapter B}
Lorem ipsum dolor sit amet...

\newpage
Lorem ipsum dolor sit amet...

\end{document}
Das vspace von 1em in Zeile 20 sorgt dafür, dass ohne eine bestehende Section (Rightmark) die Chaptermark nicht rechtsbündig abschließt, sondern um 1em nach links eingerückt ist. Ich dachte, dass vspace am Ende einer Zeile nicht greift (es sei denn man würde vspace*) setzen. Nach einigem herumprobieren (vspace in die rightmark gesetzt etc.) bräuchte ich hier noch einmal einen Hinweis.

Besten Dank im Voraus
Niklas

von oft gesehener » Di 31. Dez 2019, 12:39

Was ist daran so schwer? Man muss doch einfach nur 1:1 kopieren (und natürlich \leftmark bzw. \rightmark wieder durch #1 ersetzen). Natürlich kann man bei der Gelegenheit auch gleich \mbox weglassen. Jedenfalls sehe ich darin keinen rechten Sinn. Das führt allenfalls zu einer overfull oder underfull \hbox, die man dann ohnehin durch kürzen beheben sollte. Aus
\fancypagestyle{fncystyle}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small%
    \mbox{\textbf{\thechapter{}\hspace{0.8em}\nouppercase{\leftmark}}}\hspace{1em}%
    \mbox{\thesection{}\hspace{0.5em}\rightmark}}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}}
wird dann also
\fancypagestyle{fncystyle}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small%
    \nouppercase{\textbf{\leftmark}}% oder \textbf{\nouppercase{\leftmark}}
    \hspace{1em}%
    \rightmark}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter\hspace{0.8em}
        #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\hspace{.5em}#1}}
BTW: Mit dieser Definition kann man sich eigentlich auch starredschap sparen, das offenbar als Notlösung für den Pfusch gedacht war.

\newpage vor \chapter ist übrigens überflüssig. \chapter führt sogar ein \clearpage aus.

Achja: Durch Verwendung einer KOMA-Script-Klasse könnte man Pakete wie parskip und emptypage und die ersten beiden Klassenoptionen einsparen. Und nicht nummerierte Kapitel gehen damit auch einfacher. Natürlich würde man dann fancyhdr durch das KOMA-Script-Paket scrlayer-scrpage ersetzen. Dafür bräuchte man dann auch kein \nouppercase o. ä.

\usepackage[utf8]{inputenc} ist übrigens seit LaTeX 2018-04-01 überflüssig.

Bitte achte bei der Wahl des Status auf die tatsächliche Bedeutung von Rückfrage.

Danke für die Info...

von niklaslatex » Di 31. Dez 2019, 10:37

Danke für den Hinweis! Leider bekomme ich das auf die Schnelle nicht hin - der Gesamte mbox-Teil mit "\thesection" muss dann runter ins renewcommand?

von Gast » Mo 30. Dez 2019, 10:36

Baue niemals \thesection in die Kopfdefinition selbst ein. Aufgrund der asynchronen Ausgabe von TeX kann es sonst passieren, dass die falsche Nummer im Kopf steht. Verwende immer den Mark-Mechanisums. Setze also \thesection als Teil der Definition von \sectionmark. Das nachgefragte Problem verschwindet dann auch automatisch.

Fancyhdr Sectionnummerierung in Chapter verbergen

von niklaslatex » Mo 30. Dez 2019, 09:34

Liebe Latex-Kollegen,

ich habe ein Problem in einem Book. Ich habe hier mit fancyhdr die Kopfzeilen, die mir immer das Chapter (1. Chapter A) und die aktuelle Section der Seite anzeigen, also "1. Chaptername 1.1 Sectionname" (siehe S. 2 des PDFs von meinem Code).

Im Fall von Chapter B habe ich nur ein Chapter ohne weitere Untergliederung mit Sections. In diesem Fall wird mir dann "2. Chapter B 2.0" angezeigt. Da ich keine Section habe, würde ich gerne das leere "2.0" loswerden (siehe S. 4 des PDFs von meinem Code).

Weiß jemand Rat?

Beste Grüße
Niklas
%Das ist mein Minimalbeispiel
\documentclass[a4paper, 11pt, fleqn, openany, oneside]{book}
    % General document formatting
    \usepackage[margin=0.7in]{geometry}
    \usepackage[parfill]{parskip}
    \usepackage[utf8]{inputenc}
    
    % Related to math
    \usepackage{amsmath,amssymb,amsfonts,amsthm}
		
% ---- Kopfzeilen: -------------------------------
\usepackage{fancyhdr}

% Kap. fett, Sec. normal, mit Nummerierung (mittels \thechapter, \thesection).
% Alles, was in \mbox steht, wird nicht umgebrochen
\fancypagestyle{fncystyle}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small%
    \mbox{\textbf{\thechapter{}\hspace{0.8em}\nouppercase{\leftmark}}}\hspace{1em}%
    \mbox{\thesection{}\hspace{0.5em}\rightmark}}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Fuer Kapitel ohne Nummerierung soll in der Kopfzeile auch keine Kapitelnummer gesetzt werden:
\fancypagestyle{starredchap}{%
  \fancyhf{} % alle Eintraege loeschen
  \rhead{\small\textbf{\nouppercase{\leftmark}}}
  \renewcommand{\headrulewidth}{0.0pt}
  \fancyfoot[R]{\small\thepage}%
}

% Redefine the plain page style (applied on first page in each chapter):
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[R]{\small\thepage}%
  \renewcommand{\headrulewidth}{0pt}% Line at the header invisible
  \renewcommand{\footrulewidth}{0.0pt}% Line at the footer visible
}

\pagestyle{fncystyle}

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}}

\usepackage{emptypage}  % Keine Kopf-/Fusszeilen auf leeren Seiten		

\begin{document}

\newpage
\chapter{Chapter A}

\section{Section 1.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.1.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.1.2}

Lorem ipsum dolor sit amet...

\newpage
\section{Section 1.2}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.2.1}

Lorem ipsum dolor sit amet...

\subsection{Subsection 1.2.2}

Lorem ipsum dolor sit amet...

\newpage
\chapter{Chapter B}
Lorem ipsum dolor sit amet...

\newpage
Lorem ipsum dolor sit amet...

\end{document}

Nach oben