tikz,如何定义常量然后在绘图中使用它

tikz,如何定义常量然后在绘图中使用它

例如我想做这样的事情

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}

相关内容