我在将参数传递给\pgfmathparse
我定义的宏时遇到了麻烦。代码如下:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\drawmestg}[2]{
\def\endpt{\pgfmathparse{#1+#2}\pgfmathresult}
\draw (0,0) -- (\endpt,0);
}
\begin{document}
\begin{tikzpicture}
\drawmestg{1}{1}
\end{tikzpicture}
\end{document}
我必须承认,我完全不知道为什么会出现这个错误:
Incomplete \iffalse; all text was ignored after line 14
答案1
\draw
在您的版本中,命令扩展\endpt
为\pgfmathparse{#1+#2}\pgfmathresult
。因此您得到
\draw (0,0) -- (\pgfmathparse{#1+#2}\pgfmathresult,0);
这让 TikZ 非常困惑。
相反,你应该设置\endpt
为结果计算,可以通过
\pgfmathsetmacro{\endpt}{#1+#2}
正如彼得所建议的,或者同样地通过
\pgfmathparse{#1+#2}
\edef\endpt{\pgfmathresult}
或者对于这个 MWE,你当然可以简单地做
\newcommand{\drawmestg}[2]{
\draw (0,0) -- ({#1+#2},0);
}
答案2
简单使用pgfmathsetmacro
如下:
\pgfmathsetmacro{\endpt}{#1+#2}