Sie sind hier

Probleme mit toctext

Hallo allerseits,

und zwar benötige ich in einem Inhaltsverzeichnis Abschnitte, bei denen Einträge innerhalb eines Absatzes nacheinander erfolgen.. Ich dachte schon, so etwas Spezielles müsste ich mir selbst basteln. Aber dann ist mir klar geworden, dass toctext scheinbar genau dies tut!

Prinzipiell funktioniert es auch. Jedoch stoße ich auf mehrere Probleme:

Zunächst einmal wird der tocbeforeskip des nachfolgenden Eintrags aus irgendeinem Grund komplett verschluckt.. - Ist das ein Bug oder mache ich etwas falsch?!

Und dann hätte ich gerne vor und nach dem toctext-Absatz einen Abstand von .25\baselineksip. Ich habe das über afterpar, onstartfirstentry und onendlastentry und mit \vspace, \vskip und \addvspace in allen möglichen Kombinationen versucht, aber das einzige was funktioniert, ist das Einfügen eine Abstandes nach dem Absatz mittels afterpar... - Stehe ich auf dem Schlauch?

Hier ist mein Minimalbeispiel:

\documentclass[a5paper]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
 
\setcounter{tocdepth}{5}
 
\DeclareTOCStyleEntry[level=5,indent=3em,rightindent=3em,pagenumberformat={},prepagenumber=\hspace{.5em},onendentry=\hspace{.5em} --\hspace{.5em}]{toctext}{preface}
 
\newcommand*{\tocpreface}[1]{%
    \phantomsection%
    \addtocentrydefault{preface}{}{#1}%
}
 
\begin{document}
\tableofcontents
\addchap{Eine sehr lange Einleitung}
\tocpreface{Interessantes Thema}
\tocpreface{auch sehr spannend}
\tocpreface{diese Sache ebenfalls}
\part{Erstes Thema}% tocbeforeskip wird hier komplett verschluckt
\part{Zweites Thema}% hier der normale tocbeforeskip
\end{document}
Bild von Markus Kohm

Ich kann schon einmal bestätigen, dass das Verschlucken des vertikalen Abstandes ein Bug in KOMA-Script 3.30 ist.

Es ist doch als Anwenderin immer schön, wenn es mal nicht am eigenen Unvermögen sondern an der Software liegt.. ;-)
Ich hatte auch gesehen, dass toctext ein, im Vergleich, noch relativ neues Feature ist. Und es wird sicherlich auch nicht übermäßig oft angewendet. Daher hielt ich es für nicht so unwahrscheinlich, dass es vielleicht tatsächlich noch nicht ganz ausgereift bzw. fehlerfrei ist, weshalb ich die Frage auch direkt hier in diesem Forum gestellt habe..

Bild von Markus Kohm

An der Stelle ich ein Fehler in der Anleitung. Tatsächlich muss nicht der Anwender sicherstellen, dass onstartfirstentry den Absatz nicht bereits beginnt, er muss vielmehr beachten, dass onstartfirstentry den Absatz bereits beginnt und er ihn (genau wie bei onstartentry nicht beenden darf. Damit darf man darüber auch keinen vertikalen Abstand per \vskip, \vspace oder \addvspace einfügen.

Eine einfache Möglichkeit, um vertikalen Abstand am Anfang des Absatzes einzufügen, ist eine unsichtbare Stütze:

  onstartfirstentry=\rule{0pt}{\dimexpr\ht\strutbox+.25\baselineskip},

Prinzipiell könnte ich an der Stelle aber auch zusätzlich Option beforeskip, die schon vom Stil tocline bekannt ist, unterstützen. Mir ist schlicht im Traum nicht eingefallen, dass das jemand haben wollen könnte.

Vielen Dank für die Erläuterungen.
Es geht natürlich um vertikale Abstände. Die Befehle für horizontale Abstände waren quasi Tippfehler. Ich habe die gerade in der Frage korrigiert.

Ja, das wäre natürlich "ein Traum" gewesen, wenn man den Abstand einfach über beforeskip hätte einfügen können.. ;-)
Insofern sich das als kleine Verbesserung ansehen lässt und nicht als neues Feature betrachtet werden muss (von welchen Du, wenn ich mich richtig erinnere, Ende letzten Jahres einmal angekündigt hattest, das solche nicht mehr hinzukommen werden), wäre es gar nicht so schlecht, wenn sich dieser einfache und bekannte Befehl dafür verwenden ließe.

Bild von Markus Kohm

Der Wunsch kommt zu spät. Ich habe das nämlich schon um 12:54 Uhr dokumentiert und ins Repository hochgeladen. ;-)

Ich habe nur noch keine neue Prerelease erstellt, weil ich an einem anderen Feature noch etwas ändern will.

Bild von Markus Kohm

Hier ist hingegen die Anleitung korrekt und eindeutig. Dass man mit \vskip keinen vertikalen Abstand per onendlastentry einfügen darf, geht schon darauf hervor, dass man per onendlastentry den Absatz keinesfalls beenden darf. Genau das macht \vskip aber. \addvspace scheidet schon deshalb aus, weil man das im horizontalen Modus ohnehin nicht verwenden darf. \vspace geht aber. Da sich ein Abstand mit \vspace vor \addvspace verbirgt, addiert er sich aber in Deinem Beispiel zu dem Abstand zum nachfolgenden Kapiteleintrag (wenn man eine Version ohne den genannten Bug verwendet).

Wenn Du nicht willst, dass sich der Abstand nach dem Absatz und der Abstand vor dem nächsten Eintrag addieren, muss in der Tat

afterpar=\addvspace{.25\baselineskip}

verwendet werden. Dann wird der Befehl zwar nach dem Absatz für jeden einzelnen Eintrag im Absatz ausgeführt, da sich der immer gleiche Abstand bei \addvspace aber nicht addiert, führt das trotzdem zum gewünschten Ergebnis.

Comments for "Probleme mit toctext" abonnieren