Seite 1 von 1

bedingte anweisung (in diesem fall alternierende farben)

Verfasst: Mo 10. Feb 2014, 22:57
von byteorder
hallo, ich habe probleme mit einer if-abfrage.
ich habe 2 boxen, bei denen möchte ich jeweils alternierend die farbe des rahmens ändern

ich habe mir 2 commands geschrieben, die mir immer alternierend grün und orange zurückliefern, das funktioniert soweit (siehe beispiel)

wenn ich das ganze dann allerdings in ein environment einbaue, schreit pdflatex mit folgender meldung: Argument of \boolean has an extra }

woran könnte das liegen?

hinweis: der folgende code lässt sich mit pdflatex erzeugen, die entsprechende fehlerzeile wurde auskommentiert. es geht jedoch um die auskommentierte zeile.
\documentclass{scrbook}
\usepackage{ifthen}
\usepackage[framemethod=tikz]{mdframed}
\usepackage[a4paper,margin=3cm]{geometry}

\newboolean{boolvar}
\setboolean{boolvar}{false}

\newcommand\getcolor{\ifthenelse{\boolean{boolvar}}{green}{orange}}
\newcommand\flipcolor{\ifthenelse{\boolean{boolvar}}{\setboolean{boolvar}{false}}{\setboolean{boolvar}{true}}}

\newenvironment{bbox}{\begin{mdframed}[linecolor=blue]}{\end{mdframed}}
\newenvironment{cbox}{\flipcolor\begin{mdframed}
        %[linecolor=\getcolor]
    }{\end{mdframed}}

\begin{document}
\getcolor\\ %test, that the function is working
\flipcolor
\getcolor\\ %test, that the function is working

\begin{bbox}
should be a blue framed box
\end{bbox}

\begin{cbox}
should be green or orange alternating
\end{cbox}

\begin{cbox}
should be green or orange alternating
\end{cbox}
\end{document}

Verfasst: Mo 10. Feb 2014, 23:19
von byteorder
Hab jetzt den ansatz, das boolsch zu machen über board geworfen, habs jetzt mit einem counter gemacht. mit dieser funktioniert es jetzt auch...

aber ist das so wie ich es gemacht hab wirklich sauber, oder gibts da eine bessere alternative?
\documentclass{scrbook}
\usepackage{ifthen}
\usepackage[framemethod=tikz]{mdframed}
\usepackage[a4paper,margin=3cm]{geometry}

\def\tmpvar{0}
\newcounter{counter}
\newcommand\getcolor{\ifodd\value{counter}green\else orange\fi}

\newenvironment{bbox}{\begin{mdframed}[linecolor=blue]}{\end{mdframed}}
    \newenvironment{cbox}{\stepcounter{counter}\begin{mdframed}
            [linecolor=\getcolor]
        }{\end{mdframed}}

\begin{document}
\getcolor\\ %test, that the function is working
\stepcounter{counter}
\getcolor\\ %test, that the function is working

\begin{bbox}
should be a blue framed box
\end{bbox}

\begin{cbox}
is now green or orange alternating
\end{cbox}

\begin{cbox}
is now green or orange alternating
\end{cbox}
\end{document}