PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Umgebung wird nicht angezeigt



Liberty
04-02-2011, 20:51
Moin,

ich versuche gerade, mir für eine Infobox, die ich im gleichen Dokument 10x brauche eine neue Umgebung anzulegen, so dass ich nicht den gleichen Code immer wieder kopieren muss.

Ich habe natürlich auch schon diverse Tutorials zum Thema zu Rate gezogen, aber ich mache offensichtlich immer noch etwas falsch.

Mein Versuch:



\newenvironment{detailbox}{%
\noindent\fcolorbox{black}{lightgray}\bgroup\tabul ar{llll}
}{%
\endtabular\egroup
}


Wenn ich jetzt versuche, die Umgebung so anzuwenden:



\begin{detailbox}
A&B&C&D\\
\end{detailbox}


dann wird als Ergebnis absolut gar nichts angezeigt, keine leere Box, kein Hintergrund, kein gar nichts.

Ich bin mir sicher, dass ich schlicht und ergreifend etwas elementares nicht beachtet habe und spare mir daher ein Minimalbeispiel.

Vielen Dank schonmal im voraus!

Liberty

P.S.: Ich sehe auch keine Warnung im Log die mir irgendwie weiterhilft.

localghost
04-02-2011, 21:23
[…] Ich bin mir sicher, dass ich schlicht und ergreifend etwas elementares nicht beachtet habe und spare mir daher ein Minimalbeispiel. […]
Dann erspare auch ich mir ein konkretes Beispiel und verweise statt dessen auf die Anleitung des Pakets environ (http://ctan.org/pkg/environ).


Thorsten

Liberty
04-02-2011, 21:32
Moin,

ich weiß zwar beim besten Willen nicht, wie das jetzt helfen soll, aber wenn ihr unbedingt ein Minimalbeispiel braucht, um mir erklären zu können, welchen Fehler ich mache, dann will ich ja nicht so sein:



\documentclass[a4paper,12pt]{scrartcl}

\usepackage{xcolor}

\definecolor{lightgray}{rgb}{0.8,0.8,0.8}

\newenvironment{detailbox}{%
\noindent\fcolorbox{black}{lightgray}\bgroup\tabul ar{llll}
}{%
\endtabular\egroup
}

\begin{document}

\begin{detailbox}
A&B&C&C\\
\end{detailbox}

\end{document}


So besser?!

Liberty

Schweinebacke
05-02-2011, 08:09
\fcolorbox ist eine Anweisung, die ein Argument erwartet. Man kann nicht ohne weiteres, den Teil einer Anweisung, der vor dem Inhalt einer Umgebung stehen soll, einfach in den begin-Teil einer Umgebungsdefinition packen und den Teil, der danach stehen soll, in den end-Teil.

Du könntest stattdessen eine Anweisung definieren, bei der der Inhalt Deiner Detailbox als Argument übergeben wird. Du könntest auch im usrguide (liegt jeder LaTeX-Distribution bei) auf Seite 13 die lrbox-Umgebung nachlesen. Du könntest auch einfach mal die Anleitung des Pakets lesen, das localghost Dir empfohlen hat. Du könntest als weitere Alternative das Paket framed oder mdframed oder boits verwenden.

rstuby
05-02-2011, 08:14
Ja, genau, diese Konstruktion mit \bgroup und \egroup funktioniert nicht. Übrigens noch nicht mal, wenn man sie ohne Umgebungsdefinition direkt im Code benutzt.

Nur direkt mit Klammern geht es, so in der Art
\noindent\fcolorbox{red}{blue}{\tabular{l|l|l|l}
A&B&C&C\\
\endtabular}
(die Farben geändert und die Striche gesetzt habe ich nur, um besser zu sehen, ob die Anweisungen auch gefunden werden)

Und du hast natürlich gleich erkannt, dass man es so nicht in einer Umgebungsdefinition verwenden kann. Aber was man da macht - frag lieber wen anders...

Liberty
05-02-2011, 12:42
Moin,

ich verstehe noch immer nicht 100%, was das Problem mit der Umgebung war, aber die Idee von Schweinebacke hat das Problem für mich gelöst.

Ich hab's jetzt so gelöst, dass ich mir ein kleines Paket geschrieben habe, dass mir die Infobox als Befehl zur Verfügung stellt, so dass ich jetzt schlicht und ergreifend meine Boxen so ereuge:



\detailbox{
feldA = wert,
feldB = wert,
...
feldN = wert,
}


Da ich weniger als 10 Felder habe, sieht das nicht nur besser auch, sondern ist auch viel einfacher später noch zu ändern.

Danke für die Hilfe.

Liberty