Quellcodeverzeichnis - Anzeigeproblem

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Gast

Quellcodeverzeichnis - Anzeigeproblem

Beitrag von Gast »

Code: Alles auswählen

\documentclass[a4paper,12pt]{article}

\usepackage[left=2cm, right=4cm, top=2cm, bottom=2.5cm]{geometry} 
\usepackage[ngerman]{babel} 
\usepackage{newfloat} 
\usepackage{tocloft}
\usepackage[format=hang, justification=justified, singlelinecheck=false, font=bf]{caption} 
\usepackage{float}
\usepackage[demo]{graphicx} % Grafik (draft:Grafik ausblenden; final: Grafiken einblenden)
\usepackage{listings}
\usepackage{blindtext}

\renewcommand{\cftfigpresnum}{Abbildung } 
\renewcommand{\cftfigaftersnum}{:}
\setlength{\cftfignumwidth}{3.25cm}


\DeclareFloatingEnvironment[
fileext   = loc,
listname  = {Quellcodeverzeichnis},
name      = n
placement = htp
within=none
]{quellcode}

\begin{document} 

\listoffigures
\listofquellcodes

\begin{figure}[H] % H erzwingt den Ort der Abbildung
	\begin{center}
		\caption{Abbildungs\"uberschrift}
		\includegraphics[width=0.5\textwidth]{plank}
	\end{center}
\end{figure}

\begin{quellcode}[H] % H erzwingt den Ort der Tabelle
	\begin{center}
		\caption{Quellcode\"uberschrift}
\begin{lstlisting}
Test
\end{lstlisting}
	\end{center}
\end{quellcode}

\end{document}
Moin, ich hab ein Problem mit dem Quellcodeverzeichnis, welches ich über die FloatingEnviroment erstellt habe und mit Quellcode x festgelegt wird. Im Verzeichnis hingegen wird der Quellcode als Abbildung x dargestellt.

Wie bekomme ich das angepasst, dass auch dort Quellcode x angegeben wird?

Gast

Beitrag von Gast »

Verwende einfach die caption-Möglichkeit von listings und das dabei erzeugte Verzeichnis. Näheres ist der Anleitung zum Paket zu entnehmen, derzeit beispielsweise dem Beispiel auf Seite 18 oben in der schrittweisen Einführung innerhalb der Einleitung, aber auch Abschnitt 4.3.8 im Reference Guide innerhalb der Anleitung.

oft gesehener

Beitrag von oft gesehener »

Das Problem ist, dass newfloat alle Verzeichnisse der mit \DeclareFloatingEnvironment definierten Verzeichnisse als \listoffigures ausgibt. Deshalb werden bei Kombination mit tocloft auch dessen Einstellungen für das Abbildungsverzeichnis verwendet. In der Anleitung von newfloat wird deshalb am Beispiel diagram und \ctffigpresnum gezeigt, wie man diese Einstellungen mit Hilfe von \PrepareListOf in Abhängigkeit der jeweiligen Gleitumgebung ändert. Derzeit ist das Abschnitt 5 der Anleitung, dessen Studium ich dir hiermit nahe lege.

Übrigens: Man sollte innerhalb einer Gleitumgebung nicht die center-Umgebung verwenden, da diese zusätzlichen vertikalen Abstand einfügt. Verwende besser den Umschalter \centering. Außerdem sollte für \caption über dem Inhalt auch die Formatierung mit Option position=top (siehe caption-Anleitung) entsprechend gewählt werden. Die Voreinstellung position=auto ist zwar meist korrekt aber nicht immer.

oft gesehener

Off-Topic: Alternative

Beitrag von oft gesehener »

Hier einmal ein Beispiel, um zu zeigen, wie man durch Verwendung einer KOMA-Script-Klasse viele Pakete einsparen kann und so von deren gegenseitiger Beeinflussung verschont bleibt. Das zusätzliche Paket scrhack sorgt dabei dafür, dass andere Pakete, beispielsweise listings, besser mit der KOMA-Script-Klasse zusammenarbeiten.

Code: Alles auswählen

\documentclass[%
  egregdoesnotlikesansseriftitles,% etwas mehr wie article
% emulatestandardclasses,% sehr ähnlich zu article
  12pt,
  listof=entryprefix,% Verzeichnisabhängiger Präfix für
                     % Gleitumgebungsverzeichnisse verwenden
  captions=nooneline,% einzeilige captions nicht zentrieren
  captions=heading,% captions als Überschrift formatieren
]{scrartcl}
\usepackage{scrhack}% Verbessere einige andere Pakete
\usepackage[left=2cm, right=4cm, top=2cm, bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}

\usepackage{graphicx}
\usepackage{listings}

\setkomafont{caption}{\bfseries}% caption Text (aber nicht das Label) fett
%\setkomafont{captionlabel}{\bfseries}% caption Label fett

\newcommand*{\listoflolentryname}{Quellcode}% Der Präfix für die Einträg eim Listings-Verzeichnis

\AfterTOCHead[lof]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Abbildungsverzeichnis
\AfterTOCHead[lol]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Listingsverzeichnis

\usepackage{mwe}

\begin{document}

\listoffigures
\lstlistoflistings

\section{Test}

\blindtext

\begin{center}
  \captionof{figure}{Abbildungsüberschrift}
  \includegraphics[width=0.5\textwidth]{example-image}
\end{center}

\begin{lstlisting}[caption=Quellcodeüberschrift]
Test
\end{lstlisting}

\blindtext

\end{document}
Die Randeinstellungen finde ich übrigens nicht sonderlich gelungen, vermute aber, dass das wieder so unsinnige Uni-Anforderungen sind, an denen man nicht viel ändern darf.

Gast

Beitrag von Gast »

Super danke, mit der Dokumentation hat es geklappt und das Umstellen auf scrartcl hat das zwischenzeitliche Problem, dass die Überschrift des Verzeichnisses zu groß ist, auch behoben. Vielen Dank!

Gast

Beitrag von Gast »

wobei, eine Frage hat sich noch aufgetan. Im Verzeichnis steht nun "Listings" als Überschrift, wie kann ich dies anpassen?

Gast

Beitrag von Gast »

Hat sich doch auch erledigt 😄

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2116
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Meine Änderungen am Beispiel des oft gesehenen Gastes wirken sich auf die Beschriftung des Quelltextes und des Querverweises aus. Letzteres habe ich hinzugefügt, falls Du dafür mit \ref arbeitest und die Art des Querverweises eigenhändig eingibst.

Code: Alles auswählen

\documentclass[%
  egregdoesnotlikesansseriftitles,% etwas mehr wie article
% emulatestandardclasses,% sehr ähnlich zu article
  fontsize=12pt,
  listof=entryprefix,% Verzeichnisabhängiger Präfix für
                     % Gleitumgebungsverzeichnisse verwenden
  captions=nooneline,% einzeilige captions nicht zentrieren
  captions=heading,% captions als Überschrift formatieren
]{scrartcl}
\usepackage{scrhack}% Verbessere einige andere Pakete
\usepackage[left=2cm, right=4cm, top=2cm, bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}

\usepackage{graphicx}
\usepackage{listings}
\usepackage{mwe}
\usepackage{hyperref}% <- eingefügt

\setkomafont{caption}{\bfseries}% caption Text (aber nicht das Label) fett
%\setkomafont{captionlabel}{\bfseries}% caption Label fett

\newcaptionname{ngerman}{\lstlistingname}{Quellcode}% <- eingefügt
\newcommand*{\listoflolentryname}{\lstlistingname}% Der Präfix für die Einträg eim Listings-Verzeichnis
\newcaptionname{ngerman}{\lstlistlistingname}{Quellcodeverzeichnis}% <- eingefügt

\AfterTOCHead[lof]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Abbildungsverzeichnis
\AfterTOCHead[lol]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Listingsverzeichnis

\lstset{basicstyle=\ttfamily}

\begin{document}
\listoffigures
\lstlistoflistings

\section{Test}

\blindtext

\begin{center}
\begin{minipage}{\textwidth}% damit Beschriftung und Abbildung auf der gleichen Seite bleiben
    \centering
    \captionof{figure}{Abbildungsüberschrift}
    \includegraphics[width=0.5\textwidth]{example-image}
\end{minipage}
\end{center}

Siehe \autoref{lst:quellcodeüberschrift}% <- eingefügt

\begin{lstlisting}[caption=Quellcodeüberschrift, label=lst:quellcodeüberschrift]% label ergänzt
Test
\end{lstlisting}

\blindtext
\end{document}
Zuletzt geändert von Bartman am Di 10. Dez 2019, 18:53, insgesamt 1-mal geändert.

Gast

Beitrag von Gast »

Danke Bartman, auf dich ist Verlass.

Vlt kannst mir nochmal weiterhelfen: Würde gerne den Abstand nach Abbildung x, Tabelle y und Code z gleich haben, also dass alle captions auf einer "vertikalen Linie liegen" - wie kann ich das bewerkstelligen? 😊

Gast

Beitrag von Gast »

Bei Tabellen und Abbildungen sollte der Abstand bereits einheitlich sein. Bei den Listings ist dafür Option abovecaptionskip (klingt etwas absurd, ist aber so) zuständig. Man kann diese global per \lstset setzen oder je lstlistings.

Code: Alles auswählen

\documentclass[%
  egregdoesnotlikesansseriftitles,% etwas mehr wie article
% emulatestandardclasses,% sehr ähnlich zu article
  fontsize=12pt,
  listof=entryprefix,% Verzeichnisabhängiger Präfix für
                     % Gleitumgebungsverzeichnisse verwenden
  captions=nooneline,% einzeilige captions nicht zentrieren
  captions=heading,% captions als Überschrift formatieren
]{scrartcl}
\usepackage{scrhack}% Verbessere einige andere Pakete
\usepackage[left=2cm, right=4cm, top=2cm, bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}

\usepackage{graphicx}
\usepackage{listings}
\usepackage{mwe}
\usepackage{hyperref}% <- eingefügt

\setkomafont{caption}{\bfseries}% caption Text (aber nicht das Label) fett
%\setkomafont{captionlabel}{\bfseries}% caption Label fett

\newcaptionname{ngerman}{\lstlistingname}{Quellcode}%
\newcommand*{\listoflolentryname}{\lstlistingname}% Der Präfix für die Einträg eim Listings-Verzeichnis
\newcaptionname{ngerman}{\lstlistlistingname}{Quellcodeverzeichnis}% <- eingefügt

\AfterTOCHead[lof]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Abbildungsverzeichnis
\AfterTOCHead[lol]{\renewcommand*{\autodot}{:}}% Doppelpunkt nach der Nummer im Listingsverzeichnis

\lstset{basicstyle=\ttfamily,abovecaptionskip=\abovecaptionskip}% <<-- HIER

\begin{document}
\listoffigures
\lstlistoflistings

\section{Test}

\blindtext

\begin{center}
\begin{minipage}{\textwidth}% damit Beschriftung und Abbildung auf der gleichen Seite bleiben
    \centering
    \captionof{figure}{Abbildungsüberschrift}
    \includegraphics[width=0.5\textwidth]{example-image}
\end{minipage}
\end{center}

Siehe \autoref{lst:quellcodeüberschrift}.


% Achtung: Kommentare nach der schließenden optionalen Klammer von lstlisting
%          sind zu vermeiden!
\begin{lstlisting}[caption=Quellcodeüberschrift,label=lst:quellcodeüberschrift]
for i in 1 2 3 do
  nothing
done
\end{lstlisting}

\blindtext
\end{document}
Übrigens wäre es besser, wenn du eine Anschlussfrage als neue Frage stellst. Dann bleiben die Diskussionen übersichtlicher und andere finden sie auch leichter (zumindest, wenn das Thema gut gewählt ist).

Antworten