为什么这个 \pgfmathparse 在 \foreach 循环之外不起作用?

为什么这个 \pgfmathparse 在 \foreach 循环之外不起作用?

下面的 LaTeX 代码在 Sublime Text 2 中构建并给出结果:

7、-3.0、4、-9.0、11、-9.0、1、二、3.0、IV、五、秒、7.0、

但是当我删除 % 字符时,出现以下错误:

./example6.tex:12: 未定义控制序列。[\pgfmathparse{\myarray[3]}] ./example6.tex:13: 段落在 \pgfmath@dimen@@ 完成之前结束。[]

我正在使用最新版本的 tikz 3.0 和 2013 版本的 MacTeX。

\documentclass[12pt]{memoir}
\usepackage{tikz}

\begin{document}

\def\myarray{{7,-3,4,-9,11}}
\foreach \i in  {0,...,4}{\pgfmathparse{\myarray[\i]}\pgfmathresult, }
\pgfmathparse{\myarray[3]}\pgfmathresult, 
\def\myarray{{1,"two",2+1,"IV","cinq","sechs",sin(\i*5)*14}}
\foreach \i in  {0,...,6}{\pgfmathparse{\myarray[\i]}\pgfmathresult, }
%\pgfmathparse{\myarray[3]}\pgfmathresult, 

\end{document}

答案1

这是因为foreach循环外\i的索引未定义为数字。并且 TikZ 在寻找第三个元素时会触及数组中的每个条目(我不确定这是由于数组扩展还是只是为了在宏扩展到多个元素的情况下获取最终的元素数量)

因此,如果删除\i数组中的最后一个,那么就可以使用它。

\documentclass[12pt]{memoir}
\usepackage{tikz}

\begin{document}

\def\myarray{{7,-1+2,4,-9,11,"a",2+1,1,"two",2+1,"IV","cinq","sechs"}}
\foreach \i in  {0,...,12}{\pgfmathparse{\myarray[\i]}\pgfmathresult, }
\pgfmathparse{\myarray[3]}\pgfmathresult, 



\def\myarray{{1,"two",2+1,"IV","cinq","sechs",{(sin(\i*5)*14)}}}
\foreach \i in  {0,...,6}{\pgfmathparse{\myarray[\i]}\pgfmathresult, }

\def\myarray{{1,"two",2+1,"IV","cinq","sechs",{(sin(0.5*5)*14)}}}
\pgfmathparse{\myarray[3]}\pgfmathresult, 

\end{document}

相关内容