Sie sind hier

tocstyle - Neue Features und Bug-Report

Ich hatte über die Osterferientage Zeit gefunden, den Code und die Dokumentation von tocstyle durchzuschauen. Dabei sind mir drei "fehlerhafte" Stellen aufgefallen, die in diesem Forum bereits diskutiert wurden (fehlerhafte Einzüge). An zwei Stellen in der Datei tocstyle.sty [2013/08/11 v0.2e-alpha KOMA-Script package] steht

\hskip -\leftskip

Diese müssten durch

\hskip -\@tempdima

ersetzt werden. Zusätzlich müsste

      \advance\parindent \@tempdimb\@afterindenttrue
      \advance\leftskip \parindent

ersetzt werden durch

    \advance\leftskip \@tempdimb\@afterindenttrue

Ausserdem steht in der Dokumentation, dass man nicht danach fragen solle, die von tocstyle berechneten Einzüge seitenweise zu berechnen. Daher habe ich die letzten Tage genutzt, und es selbst programmiert.

Meine Frage ist nun, wie kann ich meine Erweiterungen zur Verfügung stellen? Ich fände es schade, wenn sich niemand dafür interessieren würde.

Grüße
Lothar

PS: In scrbook.cls [%%% From File: $Id: scrkernel-version.dtx 1926 2015-02-07 13:38:11Z kohm $] heißt es bei der Option openany

  \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}

Dies müsste ersetzt werden durch

  \renewcommand*{\cleardoublestandardpage}{\clearpage}%
forum: 
Bild von Markus Kohm

Ohne irgendwelche Begründungen werde ich garantiert keine Zeile Code ändern. Und die letzte Behauptung (die eigentlich ein eigenes Thema wäre) zeigt eigentlich nur, dass Du die Funktionsweise nicht verstanden hast (was ggf. bedeutet, dass die Anleitung zu verbessern wäre).

\cleardoublestandardpage entspricht im Fall open=any und open=right jeweils dem \cleardoublepage des LaTeX-Kerns und der Standardklassen:

\documentclass[openany]{book}
\begin{document}
odd page
\cleardoublepage
odd page
\end{document}
\documentclass[open=any]{scrbook}
\begin{document}
odd page
\cleardoublestandardpage% or \cleardoublepage
odd page
\end{document}

Mit \clearpage wäre das Ergebnis ein ganz anderes:

\documentclass[open=any]{scrbook}
\renewcommand*{\cleardoublestandardpage}{\clearpage}
\begin{document}
odd page
\cleardoublestandardpage% or \cleardoublepage
even page
\end{document}

\cleardoublepage liefert ausschließlich im einseitigen Modus das gleiche wie \clearpage, ist aber auch dann nicht dasselbe.

Zu openany: Mein Verständnis ist, dass bei der Wahl von openany keine Vakantseiten auftreten sollten. Ich gebe dir da recht, dass das bereits in der Standard-Latex-Klasse book nicht konsequent umgesetzt zu sein scheint (und dass die Diskussion darüber recht kleinlich ist). So steht innerhalb von "book.cls" bei \frontmatter und \mainmatter ein einfaches \cleardoublepage. Bei \backmatter jedoch steht wie bei den \chapter- und \part-Befehlen - wie man erwarten würde - ein

 \if@openright\cleardoublepage\else\clearpage\fi

Bei der Koma-Script-Klasse scrbook.cls machst du dann daraus bei \frontmatter und \mainmatter ein

 \if@twoside\cleardoubleoddpage\else\clearpage\fi

Zumindest ist dies inkonsistent mit \backmatter. Jedenfalls erhalte ich so bei Verwendung von \frontmatter und \mainmatter unerwünschte Vakantseiten.

Weiter bekomme ich auch nach der Titelei eine Vakantseite, aber nur wenn ich \dedication verwende! Denn hier steht ein paar Zeilen unterhalb von \ifx\@dedication\@empty ein simples \cleardoubleemptypage.
Konsequenterweise müsste dies ersetzt werden durch:

\if@openright\cleardoublepage\else\clearpage\fi

Zum tocstyle-Einzugsproblem: Fehlerhafte Einzüge erscheinen, wenn die Option toctextentriesindented in Zusammenhang mit \addsec{Mehrere Sections ohne Nummerierung} verwendet wird. Hierzu gibt es bereits mehrere Forums-Einträge. Das grunsätzliche Problem ist wohl, dass bei tocstyle.sty, \parindent auf einen Wert ungleich Null gesetzt wird. Bei tocbasic steht dagegen korrekt \setlength{\parindent}{\z@} und wird auch im folgenden nicht mehr verändert.

Grüße
Lothar

Bild von Markus Kohm

\frontmatter und \mainmatter schalten die Seitennummerierung um. Die erste Seite einer Nummerierungsart – egal ob 1 oder a oder i oder was auch immer – muss immer eine rechte Seite sein. Deshalb gehört davor immer ein \cleardoubleoddpage und deshalb gibt es im doppelseitigen Satz auch dann Vakatseiten, wenn man open=any verwendet.

\backmatter schaltet die Seitennummerierung nicht um. Daher braucht man dort auch kein \cleardoubleoddpage.

Das hat also alles durchaus einen Sinn.

Die Behauptung, dass bei tocbasic \parindent nicht mehr verändert wird, stimmt auch nicht. Innerhalb von \@dottedtocline geschieht das sehr wohl. Der Code in tocstyle ist lediglich eine flexibilisierte Version des Codes aus dem LaTeX-Kern.

Übrigens haben inzwischen die KOMA-Script-Klassen selbst eine Option, um Inhaltsverzeichniseinträge ohne Nummer ggf. einzuziehen. Das hat ggf. auch Einfluss auf tocstyle obwohl das Paket die Option nicht kennt. Da gibt es gewissermaßen einen Konflikt, der noch nicht bearbeitet ist. Das liegt aber u. a. daran, dass ich noch darüber nachdenke, wie weit tocstyle in tocbasic integriert werden kann, sollte und wird.

Comments for "tocstyle - Neue Features und Bug-Report" abonnieren