Hallo,
ich möchte den Abstand, der zwischen den Absätzen der items einer labeling-Umgebung entsteht verändern. Dazu habe ich auch schon den Befehl \itemsep=xxpt gefunden.
Jetzt möchte ich die Umgebung labeling so umdefinieren, dass der Abstand schon für die Umgebung an sich geändert wird.
Für die Umgebungen itemize, enumerate und description habe ich auch schon einen Style im Internet gefunden. Siehe unten.
Ich schaffe es aber leider nicht, diese Vorlage auf die labeling-Umgebung anzuwenden, weil, so gleube ich, die Parameter, die bei labeling übergeben werden, bei dieser Änderung der Umgebung berücksichtigt werden müsen.
Ich hätte also gerne so etwas wie:
\documentclass{scrbook} \makeatletter \let\orig@Labeling=\labeling \renewenvironment{labeling}{\orig@Labeling\itemsep=0pt}{\endlist} \makeatother \begin{document} \begin{labeling}[:]{xxx} \item[eins] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text \item[zwei] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text \end{labeling} \end{document}
Ich hoffe, ich konnte mich verständlich ausdrücken und es kann mir jemand helfen.
Danke und viele Grüße
Christian
%%%% debut macro %%%% %% ---------------------------------------------------- %% Copyright (c) 1993 Hydro-Quebec mboyer@robot.ireq.ca %% ---------------------------------------------------- %% Bring items closer together in list environments % Prevent infinite loops \let\orig@Itemize =\itemize \let\orig@Enumerate =\enumerate \let\orig@Description =\description % Zero the vertical spacing parameters \def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt% \parskip=0pt\parsep=0pt} % Redefinition de art12.sty pour commencer a la marge de gauche %\leftmargini 1.2em % 2.5em \def\noitemsep{ % Redefine the environments in terms of the original values \renewenvironment{itemize}{\orig@Itemize\Nospacing}{\endlist} \renewenvironment{enumerate}{\orig@Enumerate\Nospacing}{\endlist} \renewenvironment{description}{\orig@Description\Nospacing}% {\endlist} } \def\doitemsep{ % Redefine the environments to the original values \renewenvironment{itemize}{\orig@Itemize}{\endlist} \renewenvironment{enumerate}{\orig@Enumerate}{\endlist} \renewenvironment{description}{\orig@Description}{\endlist} } %%%% fin macro %%%%
Du musst die Argumente wieder übergeben
Lass uns
mal stattdessen als
schreiben. Dann fällt Dir sicher auf, was da falsch ist. Hier wird tatsächlich
\itemsep
als Argument an\labeling
übergeben. Stattdessen sollen aber die Argumente fürnewlabeling
an\labeling
übergeben und danach\itemsep=0pt
ausgeführt werden. Also:Ich habe hier gleich noch
\endlist
in\endlabeling
geändert. Ich betrachte es bereits bei der Umdefinierung vonitemize
etc. als Designfehler, davon auszugehen, dass bei\end{itemize}
nur\endlist
aufgerufen wird. Das ist bei den Standardklassen so, aber wer sagt, dass es bei allen Klassen und bei Verwendung aller Pakete so ist?Das muss man jetzt nur noch auf den Fall übertragen, dass die geänderte Umgebung unter dem Namen der alten Umgebung verfügbar sein soll. Und wenn wir schon dabei sind, an der vorgeführten Lösung herumzumäkeln: Wenn man sich darauf stützt, dass die
labeling-
Umgebung per\labeling
und\endlabeling
definiert ist (dieses Prinzip gilt für alle LaTeX-Umgebungen), und man nur den\begin{labeling}-
Teil ändern will, dann ist eigentlich nicht einzusehen, dass man den\end{labeling}-
Teil ebenfalls neu definiert:Noch ein Hinweis zum Schluss:
\itemsep
ist der Abstand zwischen den Items. Es gibt aber innerhalb der Items dann auch noch Absätze. Deren Abstand ist bei Definition einer Liste per\list
die Länge\parsep
, innerhalb der Liste jedoch ganz normal\parskip
.\partopsep
wiederum ist der zusätzliche Abstand vor der Liste, wenn mit der Liste ein eigener Absatz beginnt. Demgegenüber ist\topsep
der Abstand vor der Liste, wenn mit der Liste keinen eigener Absatz beginnt.Fehlermeldung
Hallo,
erst mal vielen Dank für die schnelle Hilfe. Ich habe den Code übernommen und mein Dokument sieht jetzt so aus:
Jetzt hab ich das Problem, dass die Kompilierung der Datei mit folgender Fehlermeldung abbricht:
Bedeutet das, dass an meiner Installation etwas falsch konfiguriert ist, oder hab ich bei dem .tex-Dokument etwas falsch gemacht?
Danke und viele Grüße
Christian
Hm
Das deutet darauf hin, dass irgendwie eine unendliche Rekursion drin ist. Ich habe jetzt nicht die Zeit, dem nachzugehen, vermute aber, dass es damit zusammenhängt wie
\renewcommand
,\newcommand
,\renewenvironment
und\newenvironment
bei der Definition von Befehlen und Umgebungen mit optionalen Argumenten arbeitet. Jedenfalls funktioniert:Danke
Das funktioniert.
Vielen Dank und Gruß
Christian