例如我想做这样的事情
r=2
\begin{tikzpicture}
\draw (0,{2*r}) ellipse ({sqrt(r)} and {8/r});
\draw (0,{r}) ellipse ({sqrt(r/2)} and {4/r});
\end{tikzpicture}
在上述 tikz 命令中随处r
可见的地方,它被其定义的值替换。我似乎找不到方便地做到这一点的方法,我确信我只是没有在正确的地方寻找
答案1
一个选项\def
是\ra
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\def\ra{2}
\begin{tikzpicture}
\draw (0,{2*\ra}) ellipse ({sqrt(\ra)} and {8/\ra});
\draw (0,{\ra}) ellipse ({sqrt(\ra/2)} and {4/\ra});
\end{tikzpicture}
\end{document}
您也可以使用 (La)TeX 长度,通过\newlength
,\setlength
以及适合长度操作的语法,但对于这个简单的应用程序来说,使用长度寄存器并不是真正必要的。
答案2
或者pgf
通过定义
\pgfmathsetmacro{\ra}{2}
代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathsetmacro{\ra}{2}
\begin{tikzpicture}
\draw (0,{2*\ra}) ellipse ({sqrt(\ra)} and {8/\ra});
\draw (0,{\ra}) ellipse ({sqrt(\ra/2)} and {4/\ra});
\end{tikzpicture}
\end{document}
您也可以将其用于pgfkeys
此。
\documentclass{article}
\usepackage{tikz}
\pgfkeys{/tikz/.cd,
ra/.store in=\ra,
ra=0 %% initial value, set to anything so that even if you don't specify a value later, it compiles
}
\begin{document}
\begin{tikzpicture}[ra=2] %% set it here, if not set, initial value 0 is taken
\draw (0,{2*\ra}) ellipse ({sqrt(\ra)} and {8/\ra});
\draw (0,{\ra}) ellipse ({sqrt(\ra/2)} and {4/\ra});
\end{tikzpicture}
\end{document}