Quellcodeverzeichnis - Anzeigeproblem

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: Quellcodeverzeichnis - Anzeigeproblem

von oft gesehener » Di 10. Dez 2019, 20:05

Du meinst die Verzeichnisse. Ich hatte deine Frage so verstanden, dass es um die captions über den Abbildungen, Tabellen und Listings geht.

Dir ist hoffentlich klar, dass das dann aber recht hässliche Abstände gibt, wenn Präfix + Nummer in den unterschiedlichen Verzeichnissen sehr unterschiedlich lang sind. Bei KOMA-Script ist dafür das Paket tocbasic zuständig, das in der Anleitung, [d]scrguide[/d] ebenfalls erklärt ist. Allerdings muss man dazu erst die Automatik für die Nummernbreite abschalten, die bei listof=entryprefix automatisch aktiviert wird.
\documentclass[%
  egregdoesnotlikesansseriftitles,% etwas mehr wie article
% emulatestandardclasses,% sehr ähnlich zu article
  fontsize=12pt,
  listof=entryprefix,% Verzeichnisabhängiger Präfix für
                     % Gleitumgebungsverzeichnisse verwenden
  listof=graduated,% trotz Präfix nicht mit automatischer Nummernbreite arbeiten
  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}

\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

\DeclareTOCStyleEntries[indent=0pt,numwidth=7em,level=1]{default}{figure,table,lstlisting}% Einzug, Nummernbreite und (für lstlisting) Eintragsebene festlegen

\lstset{basicstyle=\ttfamily,abovecaptionskip=\abovecaptionskip}

\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}
Zum Vergleich: in der article Umgebung, konnte man es noch mit dem Befehl
Code
\setlength{\cfttabnumwidth}{3.25cm} % Länge "Tabelle n"
anpassen.
Das hatte weniger etwas mit article als mit tocloft zu tun. Das Paket braucht man aber bei KOMA-Script nicht (we oben gezeigt) und sollte man auch nicht mit KOMA-Script verwenden.

von Gast » Di 10. Dez 2019, 19:33

Hm, die caption's von Abbildungen und Tabellen sind nicht gleich und bei den Listings ist der auch minimal anders.

Extrem gesagt sollte es wie folgt aussehen:

Abbildungsverzeichnis
Abbildung 1:__Beispieltext

Tabellenverzeichnis
Tab 1:_______Beispieltext

Codeverzeichnis
Quellcode 1:__Beispieltext

(wobei die Striche den Leerraum darstellen sollen und die Beschriftung Tab nur da ist, um es extrem darzustellen)

Zum Vergleich: in der article Umgebung, konnte man es noch mit dem Befehl
 \setlength{\cfttabnumwidth}{3.25cm} % Länge "Tabelle n"
anpassen.

Fällt dir dazu was ein oder soll ich ansonsten nen neuen Beitrag machen?

von Gast » Di 10. Dez 2019, 19:15

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

von Gast » Di 10. Dez 2019, 18:29

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

von Bartman » Di 10. Dez 2019, 14:29

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}

von Gast » Di 10. Dez 2019, 11:28

Hat sich doch auch erledigt 😄

von Gast » Di 10. Dez 2019, 11:21

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

von Gast » Di 10. Dez 2019, 10:48

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!

Off-Topic: Alternative

von oft gesehener » Di 10. Dez 2019, 10:28

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.

von oft gesehener » Di 10. Dez 2019, 09:48

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.

Nach oben