我无法使用数字作为我定义的命令的参数。
该命令接受 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}