PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : newenvironment



matze1982
11-02-2005, 21:03
Hallo

ich habe ein problem mit dem Befehl \newenvironment
Folgender Code erzeugt zwei doppelt eingerahmte Sätze.

\begin{fbox}{\begin{fbox}{Hallo Welt}\end{fbox}}\end{fbox}
oder
\fbox{\fbox{Hallo Welt}}

Ich will nun diesen Befehl durch \newenvironment definieren:
(\fbox steht nur Exemplarisch für andere Befehle)

\newenvironment{test}%
{\begin{fbox}{\begin{fbox}}%
{\end{fbox}}\end{fbox}}
oder
\newenvironment{test}%
{\fbox{\fbox{}
{}}}

wenn ich test nun benutze, meckert Latex wegen den Klammern oder rahmt ein leeres Feld ein.

Kann mir jemand erklären, wie man den fehler behebt?

Matze

moedule
12-02-2005, 04:12
mit nur einem fbox gehts auch nicht

bei mir rahm er dann das erste zeichen der umgebung ein, das war es dann aber auch

problem ist folgendes: \fbox nimmt da nächste zeichen das er findet und rahmt es ein, es sei denn man macht ihm mit einer egschweiften klammer klar das der nächste ganze stz dazugehört
dann ist aber das problem das man eine klammer auf in der startsequenz der umgebung braucht und eine klammer zu in der endsequenz der umegeung ...

wie löst man dieses dilemma?

moe

edico
12-02-2005, 07:15
Warum denn newenvironment? Ich würde das einfach so lösen:
...
\newcommand{\test}[1]{%
\fbox{\fbox{#1}}
...
\test{ACHTUNG!}
...
edico

moedule
12-02-2005, 10:03
klar, könnte man schon machen, aber ein environment ist manchmal schon pratischer, z.B. wenn es um viel längere Texte geht (dan nicht unbedingt mit fbox)

moe

edico
12-02-2005, 11:40
Hej moedule, klar, war aber keine Spezifikation ;-)
und somit denke ich praktikabel.
edico

matze1982
12-02-2005, 12:19
Das mit dem newcommand ist eine Alternative, aber es wäre mit dem Befehl newenvironment viel übersichtilicher, da die zwei fboxen nur als Beispiel gedacht waren und ich wesentlich komplizierter schachteln will.

Mein Hauptproblem besteht eigentlich darin, wie moedule schon sagte, dass ich in der Startdefinition eine Klammer öffnen/einen Befehl starten will und diese/n dann in der Enddefinition schließen/beenden will.

Ich hatte eigentlich gehofft, dass es noch eine andere Möglichkeit gibt, als eine {-Klammer, die beliebig viele Zeichen zu einer Art "Gruppe" zusammenfasst, damit es in dem newenvironment-Befehl funktioniert.

Matze

edico
12-02-2005, 15:03
... aber es gibt eben kein Default, das für alles übergestülpt werden kann. Das war meine Aussage zu deiner letztendlich unpräzisen Anfrage! Deswegen habe ich natürlich auf das, was bekannt war, Stellung genommen, und da war es überhaupt nicht angezeigt, ein environment zu bemühen.
Nee - so einfach läuft das leider nicht. Du siehst ja schon bei dieser vermeintlich simplen frame Geschichte, wie diffizil die ganze Sache ist. Da kann man nicht mal eben an der Oberfläche fummeln, sondern muss den Pullover aufröppeln, neue Wolle zukaufen und die Strickjacke neustricken. Und dann hast du manchmal den Erfolg, dass die dann auch noch nicht mal passt, weil ein integriertes macro verrückt spielt.
edico

moedule
12-02-2005, 19:56
damit könnte man ja dann z.B. auch eine echt einfache kommentar-umgebung basteln, die einfach besser wäre als der kommentar befehl

naja edico, wirst wohl recht haben, ist nicht so einfach
moe

matze1982
16-02-2005, 15:24
naja, trotzdem danke. Mit deinem Tipp funktioniert es ja auch.

Ich muss mich wohl damit abfinden, dass bei latex nicht immer alles so funktioniert, wie ich es geren hätte

Matze

blubb
16-02-2005, 15:44
Wenn es nur um eine Umgebung geht die Rahmen setzt, da gibt es
http://texcatalogue.sarovar.org/entries/framed.html

Das kann man dann auch in eigenen Umgebungen nutzen.

damit könnte man ja dann z.B. auch eine echt einfache kommentar-umgebung basteln, die einfach besser wäre als der kommentar befehl
http://texcatalogue.sarovar.org/entries/version.html
http://texcatalogue.sarovar.org/entries/versions.html
http://texcatalogue.sarovar.org/entries/comment.html

Als Kommentar würde ich es weniger nutzen, aber für verschiedene Versionen kann es ganz nett sein.

Blubb