bedingte anweisung (in diesem fall alternierende farben)

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


byteorder
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mo 10. Feb 2014, 22:38

bedingte anweisung (in diesem fall alternierende farben)

Beitrag 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}
Zuletzt geändert von byteorder am Mo 10. Feb 2014, 23:20, insgesamt 1-mal geändert.

byteorder
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mo 10. Feb 2014, 22:38

Beitrag 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}

Antworten