
Tengo un anidado foreach
, donde cada bucle está en el mismo rango de números. Quiero aplicar un estilo que depende de la relación entre los números ( \m
y \x
en el código de ejemplo), es decir, si son iguales, si el primero es menor que el segundo o si el segundo es menor que el primero.
Prefiero una solución con estilos tikz siempre que no sea extremadamente complicada; otras soluciones también son aceptables (como el uso de macros).
Código de ejemplo
El código podría verse así (sin el orzuelo conditional style
implementado).
\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}
Resultado Esperado
En el siguiente resultado, se utilizan tachado, negrita y simple como estilos ejemplares, porque SO no permite texto en color que yo sepa.
12 3
123
123
Respuesta1
Esto fue mucho más fácil de lo esperado. El siguiente estilo incluso permite especificar los estilos condicionales como argumentos.
\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}
Producción
Respuesta2
Puedes evaluar una condición y pasarla a tus propias claves de estilo.
\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}
Tenga en cuenta que minimal
la clase no está destinada a usuarios sino a desarrolladores de LaTeX. La clase mínima real para usuarios finales es article
.