Use comprimentos de vetor tikzpicture para especificar a dimensão do nó

Use comprimentos de vetor tikzpicture para especificar a dimensão do nó

Gostaria de criar um nó com minimum width=αx, onde x é o comprimento do vetor de coordenadas x especificado no ambiente tikzpicture, por exemplo \begin{tikzpicture}[x=0.1cm,y=2.5ex]. Isso é possível?

Responder1

Como sugerido emesta resposta, você pode definir variáveis ​​para definir suas escalas x e y e um estilo para seu nó, como no exemplo a seguir:

\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}

Com isso, você impõe uma determinada escala em xe ypara cada tikzpictureambiente e define um estilo para um nó retângulo com minimum widthe minimum heightcom base nesta escala.

As escalas são armazenadas nas variáveis \unitx​​e \unityque você pode redefinir em qualquer lugar do documento para alterar a escala.

Se você não deseja aplicar o dimensionamento globalmente, remova o every tikzpictureargumento do \tikzsetcomando e aplique o dimensionamento localmente como no exemplo a seguir:

\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}

informação relacionada