![将参数传递给 \newcommand 内的 \def(TikZ/PGF)](https://linux22.com/image/242693/%E5%B0%86%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%20%5Cnewcommand%20%E5%86%85%E7%9A%84%20%5Cdef%EF%BC%88TikZ%2FPGF%EF%BC%89.png)
我在将参数传递给\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}