Seite 1 von 2
Quellcodeverzeichnis - Anzeigeproblem
Verfasst: Di 10. Dez 2019, 09:19
von Gast
\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?
Verfasst: Di 10. Dez 2019, 09:31
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.
Verfasst: Di 10. Dez 2019, 09:48
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.
Off-Topic: Alternative
Verfasst: Di 10. Dez 2019, 10:28
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.
\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.
Verfasst: Di 10. Dez 2019, 10:48
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!
Verfasst: Di 10. Dez 2019, 11:21
von Gast
wobei, eine Frage hat sich noch aufgetan. Im Verzeichnis steht nun "Listings" als Überschrift, wie kann ich dies anpassen?
Verfasst: Di 10. Dez 2019, 11:28
von Gast
Hat sich doch auch erledigt

Verfasst: Di 10. Dez 2019, 14:29
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.
\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}
Verfasst: Di 10. Dez 2019, 18:29
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?

Verfasst: Di 10. Dez 2019, 19:15
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.
\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).