如何将变量传递给 tikz 中的最小尺寸键

如何将变量传递给 tikz 中的最小尺寸键

我想将变量传递给minimum size节点的键,但不起作用。以下是我尝试过的:

\documentclass{article}

\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \pgfmathsetmacro{\R}{1.2 + 0.2}
  \node[draw,circle,minimum size=\R] {};
\end{tikzpicture}

\end{document}

显然我可以使用一个明确的数字,例如minimum size= 1.4 cm但这不是我想要的。那么,将变量传递给minimum size上述的正确方法是什么?

答案1

您必须指定尺寸:

\pgfmathsetmacro{\R}{1.2cm + 0.2cm}

否则,它被解释为点,并且圆的大小是inner sep

编辑:

\node是 Tikz 的一个命令,默认值为cm,根据手册所述:

如果不提供单位,如 (2,1),则指定 pgf 的 xy 坐标系中的一个点。默认情况下,单位 x 向量向右移动 1cm,单位 y 向量向上移动 1cm。

\pgfmathsetmacro是一个pgfmath命令,默认值为pt,根据手册所述:

每当您在更高级别的宏中指定数字或维度时,都会隐式使用 pgf 的数学引擎。 [...] 如前所述,诸如 \pgfmathparse 之类的解析器命令将始终返回不带单位的结果,并且所有具有 10pt 或 1in 等单位的维度将首先转换为 TEX 点(pt),然后删除该单位。

答案2

实际上并不确定这有多么有用/可取:

\documentclass[tikz,border=5]{standalone}
\newdimen\tmpvec
\tikzset{Minimum Size/.code={%
    \pgfpointxy{#1}{#1}%
    \tikzset{minimum width/.expanded=\the\csname pgf@x\endcsname,
      minimum height/.expanded=\the\csname pgf@y\endcsname}%
}}
\begin{document}
\begin{tikzpicture}[every node/.style={draw, thick, dashed,
    anchor=south west, outer sep=0}]
  \draw [help lines] grid (3,2);
  \node [red, Minimum Size=1] {A};
  \node [green, y=(90:2cm), Minimum Size=1] at (2,0) {B};
  \node [blue, x=(0:2cm), y=(90:3cm), Minimum Size=1] at (0,0) {C};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容