Seite 1 von 1

Listingverzeichnis überschreibt Namen im Fancyhdr

Verfasst: Mi 14. Apr 2021, 13:46
von schokotafel

Hallöchen,

ich benötige in meiner Aktuellen Arbeit recht viele Codesnippets, die ich durch das lstings Paket implementiert habe und möchte entsprechend auch ein Verzeichnis der Quelltexte erstellen. Allerdings ist mir aufgefallen, dass der Titel des Listing Verzeichnis auf allen Seiten im Header auftaucht und ich verstehe nicht weshalb.

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{subfiles}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage[onehalfspacing]{setspace}
\usepackage{fancyhdr}
\usepackage[nohyperlinks,printonlyused]{acronym}
\usepackage{pdfpages}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{svg}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{listings}
\usepackage[a4paper, margin=3.45cm]{geometry}
\usepackage{float}
\usepackage[toc,page]{appendix}

\lstset{basicstyle=\ttfamily,
	showstringspaces=false,
	commentstyle=\color{red},
	keywordstyle=\color{blue},
	breaklines=true,
	columns=fullflexible,
	numbers=left,
	stepnumber=1
}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}

\renewcommand{\lstlistingname}{Quelltext}
\renewcommand{\lstlistlistingname}{Quelltextverzeichnis}


\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\leftmark}
\fancyhead[R]{Seite \thepage}

\begin{document}

%\input{Deckblatt}

\addcontentsline{toc}{section}{Quelltextverzeichnis}
\lstlistoflistings{}

\section{Einleitung} 
\section{Implementierung}
\begin{lstlisting}[language=python,caption={Testcaption}]
def hello_world(self):
    print("Hello " + self.name)

\end{lstlisting}

\end{document}

Mache ich irgendwo etwas falsch?


Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Verfasst: Mi 14. Apr 2021, 14:38
von KOMA

Wenn ich das Laden der bei uns nicht vorhandene Datei Deckblatt auskommentiere, kann ich das Problem nicht reproduzieren. Du kannst das selbst mit dem LaTeX-Ausgabe-Knopf unter dem Code in deinem Beispiel ausprobieren. Daher kann ich bezüglich des Problems derzeit nur auf die Minimalbeispiel-Anleitung oder wahlweise den zweiten Link in der ersten Zeile meiner Signatur hinweisen.

Ich könnte allenfalls noch erwähnen, dass

  • \usepackage[utf8]{inputenc} eigentlich nicht mehr notwendig sein sollte. UTF-8 ist seit LaTeX 2018/04/01, also seit über drei Jahren bei allen TeX-Engines Voreinstellung;

  • das Mehrfache Laden von Paketen nicht zweckmäßig ist und bei Änderungen leicht zu Fehlern führt;

  • hyperref besser hinter allen Paketen geladen werden sollte, für die nicht ausdrücklich dokumentiert ist, dass sie danach zu laden sind;

  • fancyhdr AFAIK nur aktiv wird, wenn man auch \pagestyle{fancy} verwendet;

  • beim gezeigten Code nicht sicher ist, dass der Eintrag des Quellenverzeichnisses ins Inhaltsverzeichnis auch die richtige Seitenzahl trägt.


Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Verfasst: Mi 14. Apr 2021, 15:17
von schokotafel

Danke, das einfügen von \pagestyle{fancy} hat geholfen.

Wie kann ich denn sicher stellen, dass die Referenz auf die richtige Seite zeigt?


Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Verfasst: Mi 14. Apr 2021, 15:38
von KOMA

Entweder die \addcontentsline-Anweisung in die Hilfsdatei mit dem Quellcodeverzeichnis schreiben oder ein \clearpage (bzw. \cleardoubepage) davor schreiben oder \lstlistoflistings so abändern, das davon der Eintrag zum richtigen Zeitpunkt erzeugt wird. Das geht beispielsweise mit Hilfe von scrhack, weil man dann einfach das entsprechende Feature von tocbasic verwenden kann. Noch ein klein wenig einfacher wird es, wenn man auch noch eine KOMA-Script-Klasse verwendet. Dann sorgt scrhack dafür, dass auch listings auf Option toc=listof bzw. listof=totoc hört.