有没有办法定义某种接受参数的长度函数,类似于\newcommand
和之间的混合\setlength
?
下面的例子可以说明我想要的。(我使用 tikz 树是因为我在那里遇到了这个问题,但是在我看来,这个问题不是 tikz 特有的。)
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newlength{\unit}
\setlength{\unit}{2cm}
\begin{tikzpicture}
\node {hello}
child{
node[yshift=-0.5\unit-5*0.5\unit] {world}
}
;
\end{tikzpicture}
\end{document}
我想放入变量的代码是-0.5\unit-5*0.5\unit
。我想用类似 的内容替换它\foo{5}
,可以将其定义为(如果可以像 一样处理参数,\setlength{\foo}[1]{-0.5\unit-#1*0.5\unit}
它看起来可能会是这样的)。\setlength
\newcommand
\newcommand
不起作用,因为它定义的是命令,而不是长度,并且\setlength
不接受任何参数。
答案1
你想要这样的东西吗?
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newlength{\unit}
\setlength{\unit}{2cm}
\newcommand\foo[1]{-0.5\unit-#1\unit}
\begin{tikzpicture}
\node {hello}
child{
node[yshift=\foo{2.5}] {world}
}
;
\end{tikzpicture}
\end{document}
这里 2.5=5*0.5