DrFaust
18-12-2010, 22:38
Hallo,
ich wollte gerne einen in einen srcbook etwas ähnliches haben wie einen Block in Latex Beamer haben. Leider habe ich keinen fertigen Befehl dafür gefunden. Was ich gefunden habe ist der folgende Blog (http://www.texample.net/tikz/examples/boxes-with-text-and-math/). Da wird mit Hilfe von tikz etwas ähnliches versucht. Der Code sieht etwa so aus:
\begin{tikzpicture}
\node [slblock_body] (box){%
\begin{minipage}{0.50\textwidth}
Text
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
Klappt wunderbar. Nun brauche ich solche Blocks öfter. Deshalb kam mir der Gedanke ein Environment daraus zu machen. Hier allerdings beginnt mein Problem. Der newenviroment Befehl erwartet einen Codeabschnitt der vor dem Envirment Body eingefügt wird. Das wäre demnach:
\begin{tikzpicture}
\node [slblock_body] (box){%
\begin{minipage}{0.50\textwidth}
und einen Codeabschnitt "für nach dem Body":
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
Das Resultat sieht bei mir so aus:
\newenvironment{slblock}
{
\begin{tikzpicture}
\node [slblock_body] (box){
\begin{minipage}{0.9\columnwidth}
}
{
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
}
An dieser Stelle streikt dann Latex.
\slblock ... \begin {minipage}{0.9\columnwidth } }
{ \end {minipage} }; \nod...
l.71 \begin{slblock}
! Missing } inserted.
<inserted text>
}
l.71 \begin{slblock}
Ich kann ja sogar verstehen wieso: Der Code der vor den Body kommt enthält eine öffnende Klammer aber keine schließende (die käme nach dem Body). Da die einzufügenden Codeblöcke für den newenvironment Befehl ja nun selber geklammert werden, ist der Befehl für keinen Parser dieser Welt mehr zu entziffern, da er schlicht uneindeutig ist. Wie also mache ich so etwas? Gibt es da irgendein workaround?
Danke. Ciao.
DrFaust
ich wollte gerne einen in einen srcbook etwas ähnliches haben wie einen Block in Latex Beamer haben. Leider habe ich keinen fertigen Befehl dafür gefunden. Was ich gefunden habe ist der folgende Blog (http://www.texample.net/tikz/examples/boxes-with-text-and-math/). Da wird mit Hilfe von tikz etwas ähnliches versucht. Der Code sieht etwa so aus:
\begin{tikzpicture}
\node [slblock_body] (box){%
\begin{minipage}{0.50\textwidth}
Text
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
Klappt wunderbar. Nun brauche ich solche Blocks öfter. Deshalb kam mir der Gedanke ein Environment daraus zu machen. Hier allerdings beginnt mein Problem. Der newenviroment Befehl erwartet einen Codeabschnitt der vor dem Envirment Body eingefügt wird. Das wäre demnach:
\begin{tikzpicture}
\node [slblock_body] (box){%
\begin{minipage}{0.50\textwidth}
und einen Codeabschnitt "für nach dem Body":
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
Das Resultat sieht bei mir so aus:
\newenvironment{slblock}
{
\begin{tikzpicture}
\node [slblock_body] (box){
\begin{minipage}{0.9\columnwidth}
}
{
\end{minipage}
};
\node[slblock_title, rounded corners, right=10pt] at (box.north west){Titel};
\end{tikzpicture}
}
An dieser Stelle streikt dann Latex.
\slblock ... \begin {minipage}{0.9\columnwidth } }
{ \end {minipage} }; \nod...
l.71 \begin{slblock}
! Missing } inserted.
<inserted text>
}
l.71 \begin{slblock}
Ich kann ja sogar verstehen wieso: Der Code der vor den Body kommt enthält eine öffnende Klammer aber keine schließende (die käme nach dem Body). Da die einzufügenden Codeblöcke für den newenvironment Befehl ja nun selber geklammert werden, ist der Befehl für keinen Parser dieser Welt mehr zu entziffern, da er schlicht uneindeutig ist. Wie also mache ich so etwas? Gibt es da irgendein workaround?
Danke. Ciao.
DrFaust