PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Kopie" eines environments?



bsamuel
26-01-2008, 19:08
Hallo allerseits,

Ich würde gerne ein vorhandenes environment "kopieren" und dann einige Modifikationen vornehmen (caption style, Nummerierung, z.B.), so dass ich nachher die Originalversion sowie die modifizierte Version beide im selben Dokument verwenden kann. Die beiden environments sollten dann völlig unabhängig voneinander sein und u.a. unabhängig nummeriert werden.

Konkret möchte ich die algorithmic/algorithm-Umgebung zweckentfremden. Die Floats vom neuen Typ sollten ihre eigene Nummerierung haben und nicht in \listofalgorithms auftauchen.

Herzlichen Dank für Hinweise.

voss
26-01-2008, 20:44
Ich würde gerne ein vorhandenes environment "kopieren" und dann einige Modifikationen vornehmen (caption style, Nummerierung, z.B.), so dass ich nachher die Originalversion sowie die modifizierte Version beide im selben Dokument verwenden kann. Die beiden environments sollten dann völlig unabhängig voneinander sein und u.a. unabhängig nummeriert werden.

Konkret möchte ich die algorithmic/algorithm-Umgebung zweckentfremden. Die Floats vom neuen Typ sollten ihre eigene Nummerierung haben und nicht in \listofalgorithms auftauchen.


\let\neu\algorithmic
\let\endneu\endalgorithmic

\renewenvironment{neu}{ ... } { ... }

Herbert

SpockinDresden
27-01-2008, 00:21
moment mal, wenn du neu erst algorithmic zuweist und dann überschreibst, kannst du dir doch den \let-spaß vorher sparen ... oder seh ich das falsch?

rais
27-01-2008, 00:53
moment mal, wenn du neu erst algorithmic zuweist und dann überschreibst, kannst du dir doch den \let-spaß vorher sparen ... oder seh ich das falsch?


\let\foo\bar

legt quasi in \foo eine Kopie von \bar an, d. h. Du kannst \foo danach verändern, ohne \bar zu beeinflussen -- oder umgekehrt.
...oder seh ich das jetzt falsch?

MfG,

bsamuel
27-01-2008, 01:47
Besten Dank.

Hab das grad ausprobiert mit:

\let\neu\algorithm
\let\endneu\endalgorithm

und dann:

\begin{neu}
\caption{Test}
\begin{algorithmic}
\STATE Blah blah
\end{algorithmic}
\end{neu}

Funktioniert leider nicht, wie es sollte. Es führt die Nummerierung der algorithm-Umgebung fort und ich kann auch keine Modifikationen vornehmen wie z.B.:

\floatname{neu}{EtwasAnderesAlsAlgorithm}

Andere Ideen?

voss
27-01-2008, 09:26
Besten Dank.

Hab das grad ausprobiert mit:

\let\neu\algorithm
\let\endneu\endalgorithm

und dann:

\begin{neu}
\caption{Test}
\begin{algorithmic}
\STATE Blah blah
\end{algorithmic}
\end{neu}

Funktioniert leider nicht, wie es sollte. Es führt die Nummerierung der algorithm-Umgebung fort und ich kann auch keine Modifikationen vornehmen wie z.B.:

\floatname{neu}{EtwasAnderesAlsAlgorithm}


1. mach komplette Beispiele
2. Erzähle genau, was du erreichen willst
3. dein Beispiel ist doch eh albern, wenn neu wie algorithm angewendet wird

Herbert

sommerfee
27-01-2008, 10:51
Konkret möchte ich die algorithmic/algorithm-Umgebung zweckentfremden. Die Floats vom neuen Typ sollten ihre eigene Nummerierung haben und nicht in \listofalgorithms auftauchen.

Die Umgebung algorithm ist doch auch nur mit \newfloat vom float-Paket definiert (siehe algorithm + float Dokumentationen), was spricht also gegen

\newfloat{neu}...

zur Definition einer eigenen Float-Umgebung mit eigener Numerierung etc.? Kopieren muß man dazu die algorithm-Umgebung nicht.

Gruß,
Axel

SpockinDresden
27-01-2008, 12:57
\let\foo\bar

legt quasi in \foo eine Kopie von \bar an, d. h. Du kannst \foo danach verändern, ohne \bar zu beeinflussen -- oder umgekehrt.
...oder seh ich das jetzt falsch?

nach meinem verständnis ergibt

\let\foo\bar
\renewcommand*\foo{Hello World}
das gleiche ergebnis wie

\newcommand*\foo{Hello World}

in beiden fällen bleibt \bar mit der originalen bedeutung erhalten und \foo macht was anderes.
wenn Du ein makro mit \renewcommand veränderst, dann wird es doch eh komplett neu überschrieben, unabhängig davon, was es vorher gemacht hat...

diese let - \renewcommand sache macht also IHMO nur dann sinn, wenn man \bar verändern möchte, wärend \bar aber woanders schon benutzt wird und ich das originale \bar trotzdem erhalten möchte, also:

\let\foo\bar
\renewcommand*\bar{Hello World}
jetzt ergibt \bar die ausgabe "Hello World". Das original kann aber noch mit \foo erzeugt werden.

ich hoffe, du bist jetzt nicht total verwirrt und wir haben nicht einfach an einander vorbeigeredet ;)

rais
27-01-2008, 16:36
ich hoffe, du bist jetzt nicht total verwirrt und wir haben nicht einfach an einander vorbeigeredet ;)
nö, passt schon -- war wohl gestern schon spät;-)
MfG,

bsamuel
27-01-2008, 17:00
Danke an alle.

Herbert,

1. Mein Beispiel ist komplett. Es enthält alles Relevante. Da noch den gesamten Code des Algorithmus einzufügen, wäre bloss verwirrlich und würde vom Thema ablenken.

2. Was ich genau erreichen möchte, habe ich in meinem Originalpost ausgeführt.

3. Nein, es ist nicht albern. Ich möchte eine eigene Nummerierung für die modifizierte Version von algorithm und Details der Darstellung ändern.

Klaus, ich glaube, Du hast richtig erkannt, was \let macht.

Axel, Dein Vorschlag mit \newfloat{neu}... ist in diesem Fall wohl tatsächlich das einfachste. Danke!

Samuel