PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : negative Auswirkung der parskip=half-Option von scrbook



LuPi
21-10-2010, 07:41
Wie im folgenden Beispiel zu sehen (bei abwechselndem Auskommentieren der beiden \documentclass-Anweisungen), wird durch die scrbook-Option "parskip=half" ein unerwünschter Effekt in der index-Umgebung erzeugt. Ist das jetzt ein Bug oder ein Feature? Aber viel interessanter: Was kann ich dagegen unternehmen?



%\documentclass[parskip=half,10pt]{scrbook}
\documentclass[10pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\setlength{\textwidth}{11.1cm}
\makeatletter
\bgroup \lccode`\.=`\,\relax \catcode`\,=\active \lowercase
{\egroup
\renewenvironment{theindex}{%
\columnseprule \z@
\columnsep 35\p@
\begin{raggedright}
\begin{multicols}{2}
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem
\small
}{%
\end{multicols}
\end{raggedright}
}}
\makeatother
\begin{document}
\begin{theindex}
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill
54
\item Pulskompressionsverhältnis\quad\hfill
54,
\item Pulskompressionsverhältnis\quad\hfill
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54, 56
\item Test\quad\hfill 999
\end{theindex}
\end{document}


Die verschiedenen \hfill\penalty usw. Kombinationen stammen aus der Index-Datei und können hier wohl vorerst ignoriert werden.

Schweinebacke
21-10-2010, 08:52
Du weist schon, dass Du die parskip-Option auch im Dokument, beispielsweise vor dem Index umschalten kannst?
\KOMAoptions{parskip=false}\selectfont oder auch andere Spielarten wie
\KOMAoptions{parskip=half-}\selectfont sind jederzeit möglich.

Ansonsten solltest Du Dich bei der Umdefinierung von Umgebungen aus KOMA-Script vielleicht besser an den Originaldefinitionen von KOMA-Script orientieren. In der Originaldefinition gibt es nämlich eine vollständige Behandlung für den Fall, dass eine parskip-Einstellung wie half verwendet wird.

Wenn ich das richtig sehe, willst Du in erster Linie eine kleinere Schrift und das multicols-Paket für den Index. Dafür musst Du AFAIK nicht die komplette Umgebung neu definieren. Wenn man splitindex (http://www.ctan.org/pkg/splitindex) verwenden (geht auch mit nur einem Index) kann man das über \extendtheindex realisieren:
\documentclass[parskip=half,10pt]{scrbook}
%\documentclass[10pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{splitidx}
\setlength{\textwidth}{11.1cm}
\makeatletter
\extendtheindex{% siehe u. a. das Beispiel auf Seite 10 von splitidx.pdf
\let\twocolumn\@firstoptofone
\let\onecolumn\@firstoptofone
\let\clearpage\relax
}{%
\begin{multicols}{2}
\small
}{%
\end{multicols}
}{%
}
\makeatother
\begin{document}
\begin{theindex}
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill
54
\item Pulskompressionsverhältnis\quad\hfill
54,
\item Pulskompressionsverhältnis\quad\hfill
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54, 56
\item Test\quad\hfill 999
\end{theindex}
\end{document}

LuPi
21-10-2010, 10:58
\KOMAoptions{parskip=false}\selectfont

Ich kann mich dunkel erinnern, das mal gesehen zu haben. Im Beispiel hilft das auch bestens ... Ich bin noch dabei, das an verschiedenen Stellen (vor \printindex, in der index-Umgebung, ...) zu testen: Bisher hat es leider noch nicht zum gewünschten Ergebnis geführt. Hier werde ich morgen weitermachen und mich wieder melden.

Vielen Dank für den Tip!

LuPi
22-10-2010, 14:47
So, jetzt habe ich an allen möglichen Stellen im (vollständigen) Dokument die Zeile


\KOMAoptions{parskip=false}\selectfont

getestet. Im Gegensatz zum Minimalbeispiel hat dies jedoch nicht die geringste Auswirkungen, weder auf den Index noch auf den Text selbst. Ich werde jetzt noch einmal versuchen, dem auf die Spur zu kommen. Aber trotzdem hier schon mal die Frage: Kann sich jemand vorstellen, in welcher Richtung dieses Phänomen seine Ursache haben könnte?


Aktualisierung:

Mit dem folgenden Beispiel zeigt sich, dass ragged2e die Wirkung der oben genannten Anweisung neutralisiert.


\documentclass[parskip=half,10pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{ragged2e}
\setlength{\textwidth}{10.8cm}
\makeatletter
\bgroup \lccode`\.=`\,\relax \catcode`\,=\active \lowercase
{\egroup
\renewenvironment{theindex}{%
\columnseprule \z@
\columnsep 35\p@
\begin{raggedright}
\begin{multicols}{2}
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem
\small
}{%
\end{multicols}
\end{raggedright}
}}
\makeatother
\begin{document}
\KOMAoptions{parskip=false}\selectfont
\begin{theindex}
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill
54
\item Pulskompressionsverhältnis\quad\hfill
54,
\item Pulskompressionsverhältnis\quad\hfill
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54, 56
\item Test\quad\hfill 999
\end{theindex}
\end{document}

Schweinebacke
22-10-2010, 15:58
Warum verwendest Du nicht die funktionierende Lösung, die ich gezeigt habe, statt theindex komplett neu zu definieren? Warum orientierst Du Dich bei der kompletten Neudefinition nicht wenigstens an der Originaldefinition in KOMA-Script, wie ich das empfohlen habe?

\raggedright ist übrigens ein Schalter und ich sehe nicht, warum Du den in Deinem Beispiel als Umgebung verwendest. Die Wirkung endet ohnehin bei \end{theindex}.

\documentclass[parskip=half,10pt]{scrbook}
%\documentclass[10pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{ragged2e}
\usepackage{splitidx}
\setlength{\textwidth}{11.1cm}
\makeatletter
\extendtheindex{% siehe u. a. das Beispiel auf Seite 10 von splitidx.pdf
\let\twocolumn\@firstoptofone
\let\onecolumn\@firstoptofone
\let\clearpage\relax
}{%
\raggedright
\begin{multicols}{2}
\small
}{%
\end{multicols}
}{%
}
\makeatother
\begin{document}
\begin{theindex}
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill
54
\item Pulskompressionsverhältnis\quad\hfill
54,
\item Pulskompressionsverhältnis\quad\hfill
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100
54, 56
\item Test\quad\hfill 999
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54,
\item Pulskompressionsverhältnis\quad\hfill\penalty100\h space*{\fill}
54, 56
\item Test\quad\hfill 999
\end{theindex}
\end{document}

LuPi
22-10-2010, 16:19
Scheint auf den ersten Blick bestens zu funktionieren (Nebenwirkungen sollte es wohl kaum geben). Danke für den Hinweis - ich hatte befürchtet, dass das umfangreichere Umbaumaßnahmen nach sich zieht. Und da am Montag eigentlich die Abgabe des Manuskripts fällig ist, hätte ich da ein Problem gesehen. Aber das lief jetzt problemlos ...