
Ich habe eine verschachtelte foreach
, bei der jede Schleife über denselben Zahlenbereich geht. Ich möchte einen Stil anwenden, der von der Beziehung zwischen den Zahlen abhängt ( \m
und \x
im Beispielcode), d. h. ob sie gleich sind, die erste niedriger als die zweite ist oder die zweite niedriger als die erste ist.
Ich bevorzuge eine Lösung mit Tikz-Stilen, solange sie nicht extrem kompliziert ist. Andere Lösungen sind auch akzeptabel (z. B. die Verwendung von Makros).
Beispielcode
Der Code könnte so aussehen ( conditional style
ohne Implementierung des Gerstenkorns).
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\foreach \m in {1,...,3} {%
\noindent
\begin{tikzpicture}
\foreach \x in {1,...,3} {%
\node[conditional style=\x wrt \m] at (\x,0) {\x};
}
\end{tikzpicture}
\par
}
\end{document}
erwartetes Ergebnis
In der folgenden Ausgabe werden als beispielhafte Stile Durchgestrichen, Fett und Normal verwendet, da SO meines Wissens keinen farbigen Text zulässt.
12 3
123
123
Antwort1
Das war viel einfacher als erwartet. Der folgende Stil ermöglicht sogar die Angabe der bedingten Stile als Argumente.
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\foreach \m in {1,...,10} {%
\noindent
\begin{tikzpicture}[%
compare/.code n args={5}{%
\ifnum##1<##2
\pgfkeysalso{##3}
\else
\ifnum##1>##2
\pgfkeysalso{##5}
\else
\pgfkeysalso{##4}
\fi
\fi}
]
\foreach \x in {1,...,10} {%
\node[compare={\x}{\m}{blue}{black}{red}] at (\x,0) {\x};
}
\end{tikzpicture}
\par
}
\end{document}
Ausgabe
Antwort2
Sie können eine Bedingung auswerten und an Ihre eigenen Stilschlüssel übergeben
\documentclass{article}
\usepackage{tikz}
\tikzset{
mystyle/.is choice,
mystyle/.default=0,
mystyle/1/.style=mytrue,
mystyle/0/.style=myeq,
mystyle/-1/.style=myfalse,
myeq/.style={black,draw},
mytrue/.style=blue,
myfalse/.style=red
}
\begin{document}
\begin{tikzpicture}
\foreach \m in {1,...,10}{%
\foreach \x in {1,...,10}{%
\pgfmathtruncatemacro\mychoice{ifthenelse(\x==\m,0,{ifthenelse(\x>\m,1,-1)})}
\node[mystyle=\mychoice] at (\x,-\m) {\x};
}
}
\end{tikzpicture}
\end{document}
Beachten Sie, dass die minimal
Klasse nicht für Benutzer, sondern für LaTeX-Entwickler gedacht ist. Die tatsächliche Minimalklasse für Endbenutzer ist article
.