
내 목표는 정사각형, 정사각형, 삼각형, 정사각형, 정사각형, 삼각형 등의 방식으로 다양한 모양을 그리는 것입니다.
\foreach
저는 삼각형을 그릴 시기를 결정하기 위해 모듈러 연산을 사용하는 루프를 사용합니다 . 내 MWE는 다음과 같습니다.
\documentclass{article}
\usepackage{pgfplots,tikz,tikz-3dplot}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture} [scale=0.35,
triangle/.style = {regular polygon, regular polygon sides=3, scale=2.5},
square/.style = {regular polygon, regular polygon sides=4, scale=2}]
\foreach \i in {1,...,9}
{
\ifthenelse{mod(\i,3) = 0}
{
\node[triangle] (\i) at (\i,0) {};
}
{
\node[square] (\i) at (\i,0) {};
}
}
\end{tikzpicture}
\end{figure}
\end{document}
오류가 발생합니다.
! Missing number, treated as zero.
! Missing = inserted for \ifnum.
이 오류와 가장 관련된 질문은 다음과 같습니다.이것하지만 그것은 내 경우가 아닌 십진수를 고려합니다. 내가 무엇을 놓치고 있나요?
답변1
로그 파일을 보면 전체 오류가 표시됩니다. 여기서는 에 대해 불평하는 것을 볼 수 있으므로 숫자가 아닌 것으로 m
간주합니다 . m
여기 에 가 m
있습니다 .m
mod
요점은 수학 함수 \ifthenelse
에 대해 모르고 해당 위치에서 구문 분석되지 않는다는 것입니다. 로 계산하고 와 비교할 수 있습니다 .pgf
mod
\foreach [evaluate={\j=int(mod(\i,3));}]
\j
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture} [scale=0.35,
triangle/.style = {draw, regular polygon, regular polygon sides=3, scale=2.5},
square/.style = {draw, regular polygon, regular polygon sides=4, scale=2}]
\foreach [evaluate={\j=int(mod(\i,3));}] \i in {1,...,9}
{
\ifthenelse{\j = 0}
{
\node[triangle] (\i) at (\i,0) {};
}
{
\node[square] (\i) at (\i,0) {};
}
}
\end{tikzpicture}
\end{figure}
\end{document}