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
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
Warum denn newenvironment? Ich würde das einfach so lösen:
...
\newcommand{\test}[1]{%
\fbox{\fbox{#1}}
...
\test{ACHTUNG!}
...
edico
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
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
... 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
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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.