使用 TikZ 条件语句?

使用 TikZ 条件语句?

我需要一些帮助来在 LaTeX 和 TikZ 中制作条件语句。在这个 M(non-)WE 中,我希望第一个、第三个和第五个点更大:

\documentclass[tikz]{standalone}
\usepackage{tikz}

\begin{document}
\def\bigdot{5pt}
\def\littledot{1pt}
\begin{centering}
  \begin{tikzpicture}
    \foreach \x in {0,...,5}{
      \draw (\x,0) circle ({int(\x/2)==0?\bigdot:\littledot});
    }
  \end{tikzpicture}
\end{centering}
\end{document}

我不明白什么?感谢您的帮助或建议。

答案1

欢迎光临!您在找什么iseven

\documentclass[tikz]{standalone}

\begin{document}
  \begin{tikzpicture}
   \def\bigdot{5pt}
   \def\littledot{1pt}
    \foreach \x in {0,...,5}{
      \draw (\x,0) circle [radius={iseven(\x)?\bigdot:\littledot}];
    }
  \end{tikzpicture}
\end{document}

在此处输入图片描述

在您的代码中,您要求将 为零 的圆变大。这些是和int(\x/2)处的圆,这就是您得到的结果。但是,如果您想让列表中的“第一个、第三个和第五个点更大”,那么您可以将 为偶数 的点变大。\x=0\x=1{0,...,5}\x

附录:至于不同的 评论中提出的问题,你可以使用mod,作为AlexG 建议Mod,它总是返回非负值并帮助您避免混淆(至少我偶尔会因为使用 而浪费大量时间mod)。这两个版本都在 pgfmanual v3.1.5 的第 1033 页中进行了描述。如上所述,我更喜欢非弃用语法

 circle[radius=<radius>]

取代旧的、不推荐使用的语法

 circle(<radius>)

因此,对评论中的问题的建议可能是

\documentclass[tikz]{standalone}

\begin{document}
  \begin{tikzpicture}
   \path (0,0) node[circle,inner sep=5cm] (c){};
   \def\bigdot{5pt}
   \def\littledot{1pt}
    \foreach \x in {0,...,359}{
      \draw (c.\x) circle [radius={Mod(\x,5)==0?\bigdot:\littledot}];
    }
  \end{tikzpicture}
\end{document}

还要注意,如果你使用,\documentclass[tikz]{standalone}那么tikz它会自动加载,所以\usepackage{tikz}没有必要。另外,我一般不太喜欢\defs,但如果你想使用它们,可以在本地使用它们,即在 内tikzpicture,如上所述。但我个人会使用类似

\documentclass[tikz]{standalone}

\begin{document}
  \begin{tikzpicture}[declare function={rsmall=1;rbig=5;}]
   \path (0,0) node[circle,inner sep=5cm] (c){};
    \foreach \x in {0,...,359}{
      \draw (c.\x) circle [radius={(Mod(\x,5)==0?rbig:rsmall)*1pt}];
    }
  \end{tikzpicture}
\end{document}

答案2

您肯定想要mod(x,y)(模)运算符:

\documentclass[tikz]{standalone}
\usepackage{tikz}

\begin{document}
\def\bigdot{5pt}
\def\littledot{1pt}
\begin{centering}
  \begin{tikzpicture}
    \foreach \x in {0,...,5}{
      \draw (\x,0) circle ({mod(\x,2)==0?\bigdot:\littledot});
    }
  \end{tikzpicture}
\end{centering}
\end{document}

在此处输入图片描述

相关内容