Listingverzeichnis überschreibt Namen im Fancyhdr Thema ist als GELÖST markiert

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


schokotafel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 9. Apr 2021, 15:49

Listingverzeichnis überschreibt Namen im Fancyhdr

Beitrag 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?

Zuletzt geändert von Stefan Kottwitz am Mi 14. Apr 2021, 14:31, insgesamt 1-mal geändert.
Grund: hier nicht vorhandenes Deckblatt mal auskommentiert, damit der Code übersetzbar ist

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2860
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Beitrag 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.


schokotafel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 9. Apr 2021, 15:49

Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Beitrag 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?


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2860
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Listingverzeichnis überschreibt Namen im Fancyhdr

Beitrag 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.


Antworten