Sie sind hier

\renewcommand unter Rückgriff auf bestehende Umgebung

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

forum: 
Bild von Markus Kohm

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.

> 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...

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?

*schieb*

Comments for "\renewcommand unter Rückgriff auf bestehende Umgebung" abonnieren