Hi,
ich möchte quote so umdefinieren, dass das Zitat, anders als das Gesamtdokument einzeilig geschrieben ist.
also vom Prinzip her sowas wie
\renewenvironment{quote}
{\begin{singlespace}\begin{quote}}
{\end{quote1}\end{singlespace}}
Das gibt aber leider ne Endlosrekursion, wie ich schon festgestellt habe. Wie umgehe ich das Problem?
Viele Grüße
Daniel
TeX ist eine Makrosprache
Makros werden in der Regel erst bei ihrer Verwendung expandiert. Etwas wie:
\def\foo{\bar}\def\bar{\foo}
, würde also zwangsläufig zu einer Endlosrekursion führen, da\foo
bei Verwendung zunächst zu\bar
expandiert würde, das dann wiederum zu\foo
expandiert wird, das wieder zu\bar
expandiert wird usw.Wie man Makros unter Verwendung der bisherigen Definition umdefinieren kann, steht in der De-TeX-FAQ (Link siehe FAQ). Jetzt muss man nur noch wissen, dass
\begin{foo}
intern auf\foo
und\end{foo}
intern auf\endfoo
basiert. Wobei es eventuell (nicht getestet) genügt\quote
umzudefinieren, wenn man die Anweisung\singlespacing
oder\setstretch
an Stelle einer Umgebung verwendet.Übrigens habe ich vorsorglich auf die Anleitung zur Umdefinierung von Anweisungen unter Rückgriff auf ihre bisherige Bedeutung in der De-TeX-FAQ schon bei Deiner letzten Frage hingewiesen.
Alles klar, Danke!
> Makros werden in der Regel erst bei ihrer Verwendung expandiert. [...]
Ja, so in etwa hab ich mir das schon gedacht.
> Jetzt muss man nur noch wissen, dass \begin{foo} intern auf \foo und \end{foo} intern auf \endfoo basiert.
Genau das war das fehlende Puzzlestück :-)
Ich mache es jetzt so:
\newcommand{\origquote}{}
\let\origquote=\quote
\renewenvironment{quote}
{\begin{origquote}\begin{singlespace}}
{\end{singlespace}\end{origquote}}
> Übrigens habe ich vorsorglich auf die Anleitung zur Umdefinierung von Anweisungen unter Rückgriff auf ihre bisherige Bedeutung in der De-TeX-FAQ schon bei Deiner letzten Frage hingewiesen.
Ich weiß. Hatte ich mir auch schon angeschaut, ebenso wie einige andere Anleitungen zu \renewenvironment etc. Aber wie gesagt: die eine Info fehlte mir noch...
Ähnliches Problem
Ich habe jetzt das gleiche Verfahren versucht, auf Auflistungen anzuwenden:
\let\origitemize=\itemize
\let\endorigitemize=\enditemize
\renewenvironment{itemize}
{\begin{singlespace}\begin{origitemize}}
{\end{origitemize}\end{singlespace}}
Das klappt grundsätzlich, allerdings ist der Abstand zwischen erstem item und vorherigem Absatz zu groß - für mich sieht das aus wie eine Leerzeile oder so. Wenn ich die Reihenfolge der Schachtelung von origitemize und singlespace änder, bleibt das Problem.
Was mache ich falsch?
Push
*schieb*