[Tex/LaTex] Using TikZ conditional statement

conditionalstikz-pgf

I'd like some help to make a conditional statement in LaTeX and TikZ work. In this M(non-)WE, I'd like the first, third and fifth dots to be larger:

\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}

What am I not understanding? Thanks for any help or advice.

Best Answer

Welcome! Are you looking for 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}

enter image description here

In your code you are asking to make the circles for which int(\x/2) is zero big. These are the circles at \x=0 and \x=1, and this is what you get. However, if you want to have "the first, third and fifth dots to be larger" in a list {0,...,5} then you can make the dots larger for which \x is even.

ADDENDUM: As for the different question raised in the comments, you can use mod, as suggested by AlexG, or Mod, which always returns nonnegative values and helps you to avoid confusion (at least I occasionally wasted a lot of time because I was using mod). Both versions are described on p. 1033 of pgfmanual v3.1.5. As above, I prefer the non-deprecated syntax

 circle[radius=<radius>]

over the older, deprecated syntax

 circle(<radius>)

so the proposal for the question in the comments could be

\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}

Note also that if you use \documentclass[tikz]{standalone} then tikz gets automatically loaded, so \usepackage{tikz} is unnecessary. Also, I generally do not really like \defs but if you want to use them, use them locally, i.e. inside the tikzpicture, as above. Yet personally I'd use something like

\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}