我希望这是一个微不足道的问题,但却花费了我很多时间。我正在画一个简单的TikZ
图。我定义了一些变量来指定coordinates
线条nodes
等等。
\def \Xa {4};
and then I can do
\def \Wdth {6};
\def \Xb (\Xa+\Wdth};
但以下不起作用,它运行但使用了错误的值。
\def \Xmid {\Xa+\Wdth/2};
第二个问题是为什么我不能使用\X1
诸如\Xa
答案1
如果不了解你正在尝试做什么,很难说,但我怀疑你正在以错误的方式进行操作。如果你想要一种简单的方法来访问或重用坐标 蒂克兹那么您应该使用命名节点或坐标:
\coordinate (O) at (0,0);
\coordinate (A) at (2,3);
\draw (O)--(A);
\node (B) at (3,2){B here};
\draw(A)--(B);
如果你想设置节点的宽度等,或者任何蒂克兹对象,那么\tikzset
就是你的朋友:
\tikzset{
mynode/.style = {
draw = blue,
fill = yellow!10,
minimum width = 20mm
}
}
\begin{tikzpicture}
\node[mynode] at (3,3){stuff}
\end{tikzpicture}
重要的是,您可以在里面包含参数\tikzset
,也可以定义pics
,这是重用 tikz 代码的非常强大的方法。
最后,如果您确实想使用这样的变量进行计算,那么对于整数计算,您可以使用:
\numexpr\Xa+\Wdth\relax
对于非整数计算
\pgfmathparse{\Xa+\Wdth/2}\pgfmathresult
或者,如果您需要将结果保存在宏中,
\pgfmathsetmacro\Xmid{\Xa+\Wdth/2}
当然,您\pgfmathparse
也可以使用它进行整数计算,但如果您想要一个诚实的整数,那么建议明确声明这一点:
\pgfmathparse{int(\Xa+\Xb)}\pgfmathresult