将参数传递给 \newcommand 内的 \def(TikZ/PGF)

将参数传递给 \newcommand 内的 \def(TikZ/PGF)

我在将参数传递给\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}

相关内容