TikZ 中的增量计数器

TikZ 中的增量计数器

如何使用以下代码增加 TikZ 中的计数器:

\newcounter{ga} %counter
\setcounter{ga}{1}
\begin{tikzpicture}
    \foreach \t in {1,...,10}{
      \pgfmathparse{Mod(\t,2) == 1 ? 1 : 0}
      \ifnum\pgfmathresult > 0
         \ga = \ga + 1
      \fi
\end{tikzpicture}

在第 4 行我需要类似的东西\ga = \ga + 1

答案1

\documentclass{minimal}
\usepackage{tikz}
\newcounter{ga}\setcounter{ga}{1}

\begin{document}

\foreach \t in {1,...,10}{\ifodd\t \stepcounter{ga}\fi}
\thega
\end{document} 

将值放置在节点中的示例:

\documentclass{minimal}
\usepackage{tikz}
\newcounter{ga}\setcounter{ga}{0}
\begin{document}

\begin{tikzpicture}
\foreach \t in {1,...,10}{\ifodd\t \stepcounter{ga}\fi}
\node [circle,draw] (a) at (0:1) {\thega};
\end{tikzpicture}

\end{document}

答案2

这实际上不是关于 TikZ 的问题,而是关于包pgffor和的pgfmath问题。对于 Tikz,我更喜欢在这里使用 TeX 的宏\newcount,如果使用会更自然\ifdim

更新

我忘了我是 pgfmath 中整数算术函数的作者,可以使用isodd。但从\ifoddHerbert 的回答来看,使用 是正确的方法\newcount

或许,阐明答案之间的差异很重要。我对混合使用 TeX 的宏和 LaTeX 的宏感到犹豫不决。

1) 值得注意的是 LaTeX 的计数器是全局设置的。

2) 使用低级 TeX 系统的需求并不明显,但 TikZ 的精神和此处的宏,是如果本地可能,它就会工作。不同之处在于 TeX 在本地设置计数寄存器。因此,要进行全局分配,您必须像我的代码中\foreach一样刻意进行 。\global\advance\ga by1

一份好的文件(tex 计数和乳胶计数器)这里约瑟夫·赖特

\documentclass[11pt]{article}
\usepackage{tikz}    % or \usepackage{pgffor,pgfmath}  pgf 2.1cvs

\begin{document}
\newcount\ga
\ga=1 %

\foreach \t in {1,...,10}{%
%\pgfmathparse{Mod(\t,2)==1?1:0}
  \pgfmathparse{isodd(\t)}  
\ifnum\pgfmathresult>0 \global\advance\ga by1 \fi
}

\the\ga
\end{document} 

结果:6

相关内容