使用 tikzpicture 矢量长度来指定节点维度

使用 tikzpicture 矢量长度来指定节点维度

我想创建一个节点minimum width=αx,其中 x 是 tikzpicture 环境中指定的 x 坐标向量的长度,例如\begin{tikzpicture}[x=0.1cm,y=2.5ex]。这可能吗?

答案1

正如建议的那样这个答案,您可以定义变量来设置 x 和 y 比例以及节点的样式,如下例所示:

\documentclass{article}
\usepackage{tikz}

\newcommand{\unitx}{1cm}
\newcommand{\unity}{1cm}

\tikzset{%
    box/.style 2 args = {%
        rectangle,
        draw,
        minimum width  = #1*\unitx,
        minimum height = #2*\unity
    },
    every tikzpicture/.append style = {
        x = \unitx,
        y = \unity
    }
}

\begin{document}

    \begin{tikzpicture}

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\renewcommand{\unitx}{5cm}
\renewcommand{\unity}{3cm}

    \begin{tikzpicture}

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\end{document}

x通过这种方式,您可以对y每个环境施加一个给定的比例,并根据这个比例tikzpicture为矩形节点定义一个样式。minimum widthminimum height

比例存储在\unitx\unity变量中,您可以在文档中的任何位置重新定义这些变量来更改比例。

如果不想全局应用缩放,请删除命令every tikzpicture的参数\tikzset并在本地应用缩放,如下例所示:

\documentclass{standalone}
\usepackage{tikz}

\newcommand{\unitx}{2cm}
\newcommand{\unity}{1cm}

\tikzset{%
    box/.style 2 args = {%
        rectangle,
        draw,
        minimum width  = #1*\unitx,
        minimum height = #2*\unity
    }
}

\begin{document}

    \begin{tikzpicture}[x = \unitx, y = \unity]

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\end{document}

相关内容