
foreach
각 루프가 동일한 숫자 범위에 걸쳐 있는 중첩이 있습니다 . 숫자 사이의 관계(예제 코드 \m
에서 ) 에 따라 스타일을 적용하고 싶습니다 \x
. 즉, 숫자가 같은지, 첫 번째가 두 번째보다 낮는지, 두 번째가 첫 번째보다 낮은지 여부에 따라 스타일을 적용하고 싶습니다.
나는 극도로 복잡하지 않은 한 tikz 스타일의 솔루션을 선호하며 다른 솔루션도 허용됩니다(예: 매크로 사용).
예제 코드
코드는 다음과 같을 수 있습니다(다래끼는 conditional style
구현되지 않음).
\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}
예상 결과
다음 출력에서는 SO가 컬러 텍스트 afaik을 허용하지 않기 때문에 취소선, 볼드체 및 일반 스타일이 예시 스타일로 사용됩니다.
12 3
12삼
12삼
답변1
이것은 예상보다 훨씬 쉬웠습니다. 다음 스타일을 사용하면 조건부 스타일을 인수로 지정할 수도 있습니다.
\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}
산출
답변2
조건을 평가하고 이를 자신만의 스타일 키에 전달할 수 있습니다.
\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}
클래스 는 minimal
사용자를 위한 것이 아니라 LaTeX 개발자를 위한 것입니다. 최종 사용자를 위한 실제 최소 클래스는 입니다 article
.