erwartetes Ergebnis

erwartetes Ergebnis

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 ( \mund \xim 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 styleohne 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

1 23

1 2 3

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

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

Beachten Sie, dass die minimalKlasse nicht für Benutzer, sondern für LaTeX-Entwickler gedacht ist. Die tatsächliche Minimalklasse für Endbenutzer ist article.

verwandte Informationen