使用数字作为命令的参数

使用数字作为命令的参数

我无法使用数字作为我定义的命令的参数。

该命令接受 5 个数字输入并返回一个数字。

\documentclass{standalone}

\usepackage{tikz}

\newcommand{\rotateX}[5]{\pgfmathparse{cos({#5})*({#1}-{#3})-sin({#5})({#2}-{#4})+{#3}}\pgfmathresult}

\begin{document}
    \rotateX{-0.5}{3.5}{-2}{1}{40}
\end{document}

然而,一旦引擎达到\rotateX命令,它就会给出错误Illegal unit of measure (pt inserted)

我是否需要做一些额外的事情才能让 LaTeX 识别参数是数字?

编辑: 请注意,以下内容可以自行完成,问题在于传递给命令的变量。

\pgfmathparse{cos(40)*(-0.5--2)-sin(40)(3.5-1)+-2}\pgfmathresult

编辑2:(采用 David Carlisle 的建议)

\documentclass{standalone}

\usepackage{tikz}

\newcommand{\rotateX}[5]{\pgfmathparse{cos(#5)*(#1-#3)-sin(#5)(#2-#4)+#3}\pgfmathresult}

\begin{document}
    \rotateX{-0.5}{3.5}{-2}{1}{40}
\end{document}

给出以下内容: 代码输出

答案1

你只需要删除虚假的括号组

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\newcommand{\rotateX}[5]{\pgfmathparse{cos(#5)*(#1-#3)-sin(#5)(#2-#4)+#3}\pgfmathresult}

\begin{document}
\pgfmathparse{cos(40)*(-0.5--2)-sin(40)(3.5-1)+-2}\pgfmathresult

\rotateX{-0.5}{3.5}{-2}{1}{40}
\end{document}

这与宏定义无关,\pgfmathparse{cos({40})...会产生相同的错误。

答案2

该问题与问题无关

问题是*括号之间遗漏了 xD!

有效的解决方案:(感谢David的部分帮助!)

\documentclass{standalone}

\usepackage{tikz}

\newcommand{\rotateX}[5]{\pgfmathparse{cos(#5)*(#1-#3)-sin(#5)*(#2-#4)+#3}\pgfmathresult}
                                                              ^
\begin{document}                                              |
    \rotateX{-0.5}{3.5}{-2}{1}{40}
\end{document}

相关内容