Inhaltsverzeichnis-Formatierung (einzelne Einträge)

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Schmantii
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Sa 5. Dez 2015, 02:42

Inhaltsverzeichnis-Formatierung (einzelne Einträge)

Beitrag von Schmantii »

Hallo zusammen!

Ich bin momentan dabei, die Verzeichnisse in meiner Arbeit mit KOMA-Skript zu konfigurieren. Bislang funktioniert das auch ganz gut, allerdings habe ich derzeit ein Problem, dass ich auch trotz des Studiums des aktuellen Scrguides nicht lösen könnte:
\documentclass[a4paper,12pt,listof=totoc]{scrartcl}

\begin{document}
	
	\tableofcontents

	
	\listoffigures
	
	
	\listoftables

\newpage

	\section{Abschnitt 1}

	\section{Abschnitt 2}

\end{document}
Ich bin bislang nicht dahinter gekommen, welchen Befehl KOMA / tocbasic für die Konfiguration einzelner Inhaltsverzeichnis-Einträge verwendet, so dass man diese nach Belieben anpassen kann.

In diesem Fall würde ich ganz gerne nur die TOC-Einträge "List of Figures", "List of Tables" und die Nummerierung aller Einträge in \rmfamily ohne Fettdruck abändern.

Ist es - in diesem Zusammenhang - z.B. auch möglich, die Schriftart eines Unterabschnittes (subsection) gezielt zu verändern bzw. lässt sich Prinzip beliebig übertragen?*

Ich weiß wohl, dass dies über \addcontentsline funktionieren kann; ich möchte in diesem Fall aber eine konkrete Lösung, die auf tocbasic basiert und keine zusätzlichen Packages wie tocloft verwendet (falls möglich).

Besten Gruß!

*Diese bescheuerte Frage soll nur dem Lernzweck /Verständnis dienen und hat bei mir keine konkrete bzw. ernsthafte Anwendung.

Besserwisser

Beitrag von Besserwisser »

Lösungen, die auf tocbasic basieren, benötigen derzeit die Vorabrelease von KOMA-Script 3.20. In der Anleitung steht dann auch, wie man die Formatierung der Einträge ändern kann.
% ACHTUNG: Funktioniert derzeit nicht im Online-Editor, weil es ein neueres KOMA-Script benötigt
\documentclass[a4paper,12pt,listof=totoc]{scrartcl}[2016/03/24]
\newcommand*{\setzeunveraendert}[1]{#1}
\RedeclareSectionCommand[tocentryformat=\setzeunveraendert,tocpagenumberformat=\setzeunveraendert]{section}

\begin{document}
   
   \tableofcontents

   
   \listoffigures
   
   
   \listoftables

   \section{Abschnitt 1}

   \section{Abschnitt 2}

\end{document}
Siehe dazu die Erklärung der Eigenschaften entryformat und pagenumberformat(derzeit in Tabelle~15.1) im Kapitel zu tocbasic in der KOMA-Script-Anleitung der erwähnten Vorab-Release.

Zwar funktioniert auch, den Eigenschaften einen leeren Wert zuzuweisen, allerdings ist ausdrücklich dokumentiert, dass man als Wert einen Befehl mit genau einem Argument zuweisen sollte. Also habe ich mich an die Anleitung gehalten und einen solchen definiert, der das Argument dann unverändert wieder ausgibt.

Da alle Verzeichniseinträge von KOMA-Script in besagter Vorab-Release den Stil tocline verwenden, ist die Lösung auch verallgemeinerbar. Und ja: Man kann an der Stelle auch beispielsweise \textsl verwenden. Was laut Doku nicht geht ist: \MakeUppercase.

Schmantii
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Sa 5. Dez 2015, 02:42

Beitrag von Schmantii »

Besserwisser hat geschrieben:Lösungen, die auf tocbasic basieren, benötigen derzeit die Vorabrelease von KOMA-Script 3.20.

Siehe dazu die Erklärung der Eigenschaften entryformat und pagenumberformat(derzeit in Tabelle~15.1) im Kapitel zu tocbasic in der KOMA-Script-Anleitung der erwähnten Vorab-Release.
Genau den Release und die Anleitung verwende ich auch - von daher kenne ich entryformat und pagenumberformat. Dass man das dann aber auch als tocentryformat bzw. tocpagenumberformat verwenden kann, war mir dann doch leider noch nicht bekannt.
Mit deinem Vorschlag habe ich dann folgende Lösung gefunden, die meine Ansprüche dann doch komplett erfüllt (hätte man eigentlich von selbst drauf kommen müssen...):
\documentclass[a4paper,12pt]{scrartcl}

	\RedeclareSectionCommand[tocpagenumberformat=\normalfont]{section}

\begin{document}
	
	\tableofcontents

	
	\listoffigures
		\addcontentsline{toc}{section}{\normalfont{\listoflofname}}
	
	\listoftables
		\addcontentsline{toc}{section}{\normalfont{\listoflotname}}
		
\newpage

	\section{Abschnitt 1}
		\subsection{Unterabschnitt}
		\subsection{Unterabschnitt}
	\section{Abschnitt 2}

\end{document}
Hier können dann die einzelnen Verzeichniseinträge modifiziert werden, die sich über addcontentsline definieren. Wenn man dann einzelne, spezielle Einträge im TOC verändern möchte, muss man dies dann halt mit \section* tun und dann dementsprechend über addcontentsline einbinden.

Trotzdem danke - wieder mal ein Stückchen mehr dazu gelernt. Das kleine Detail fehlte mir dann doch noch! :D

Besserwisser

Beitrag von Besserwisser »

Schmantii hat geschrieben:Dass man das dann aber auch als tocentryformat bzw. tocpagenumberformat verwenden kann, war mir dann doch leider noch nicht bekannt. 
Man hätte stattdessen auch mit
\DeclareTOCStyleEntry
dem section-Eintrag neu den Stil section zuweisen und dabei die Einstellungen entryformat oder pagenumberformat ändern können. Bei KOMA-Script führen viele Wege nach Rom. Dass man auch \RedeclareSectionCommand verwenden kann, steht in der Erklärung zu \DeclareSectionCommand etc.:
Markus Kohm hat geschrieben:Neben dem Gliederungsbefehl selbst wird auch ein Befehl für einen Eintrag ins Inhaltsverzeichnis definiert. Dafür wird auf das Paket tocbasic zurückgegriffen. Der Stil des Verzeichniseintrags wird über die Eigenschaft tocstyle festgelegt. Wird hier mit tocstyle= oder tocstyle={} ein leerer Name angegeben, so erfolgt keine Umdefinierung des Befehls für den Verzeichniseintrag. Das ist beispielsweise dann wichtig, wenn Sie ein zusätzliches Paket zur Modifikation des Inhaltsverzeichnisses verwenden. Fehlt die Eigenschaft tocstyle, so wird bei der Umdefinierung der bisherige Stil erneut verwendet.

Unterschiedliche Stile für Verzeichniseinträge haben unterschiedliche zusätzliche Eigenschaften. Diese können mit dem Präfix toc versehen direkt mit angegeben werden. So kann beispielsweise die Ebene des Verzeichniseintrags, die bei allen von den KOMA-Script-Klassen und tocbasic definierten Stilen als Eigenschaft level bekannt ist, mit toclevel gesetzt werden, der Einzug des Eintrags, indent, über tocindent und die für die Nummer reservierte Breite, numwidth, mit tocnumwidth. Für weitere Eigenschaften der Verzeichniseinträge siehe Abschnitt 15.3 ab Seite Seite 322.
Mir erschien das der einfachere Weg, da ich den Stil dann nicht angeben muss.
Schmantii hat geschrieben:Mit deinem Vorschlag habe ich dann folgende Lösung gefunden, die meine Ansprüche dann doch komplett erfüllt (hätte man eigentlich von selbst drauf kommen müssen...):
Auch hier gilt: Funktioniert zwar, entspricht aber nicht der Anleitung, das \normalfont ein Umschalter ist und eben kein Argument hat.
Schmantii hat geschrieben:Hier können dann die einzelnen Verzeichniseinträge modifiziert werden, die sich über addcontentsline definieren. Wenn man dann einzelne, spezielle Einträge im TOC verändern möchte, muss man dies dann halt mit \section* tun und dann dementsprechend über addcontentsline einbinden.
Alle Einträge einer Ebene sollten im Verzeichnis auch dieselbe Darstellung bekommen. Alles andere wäre ein grober Verstoß gegen den typografischen Grundsatz, gleiches auch gleich darzustellen. Umgekehrt kann man auch sagen, dass Dinge, die nicht gleich sein sollen, auch nicht das Gleiche sein können. Also sollte man ggf. eine eigene Eintragsebene dafür definieren. Das ginge schon einmal mit \DeclareTOCStyleEntry. Da aber zu einem Verzeichniseintrag auch immer ein Gliederungsbefehl gehört, sollte man dann wohl auch gleich einen neuen Gliederungsbefehl definieren. Beides zusammen geht mit \DeclareNewSectionCommand.

Und abschließend die Warnung: Da ist in der Anleitung noch als Beta-Feature dokumentiert. Es kann sich also noch einiges daran ändern!

Antworten