Utilice longitudes de vectores tikzpicture para especificar la dimensión del nodo

Utilice longitudes de vectores tikzpicture para especificar la dimensión del nodo

Me gustaría crear un nodo con minimum width=αx, donde x es la longitud del vector de coordenadas x especificado en el entorno tikzpicture, por ejemplo \begin{tikzpicture}[x=0.1cm,y=2.5ex]. es posible?

Respuesta1

Como se sugiere enesta respuesta, puede definir variables para establecer sus escalas x e y y un estilo para su nodo como en el siguiente ejemplo:

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

Con esto, impones una escala determinada en xy ypara cada tikzpictureentorno y defines un estilo para un nodo rectangular con minimum widthy minimum heighten base a esta escala.

Las escalas se almacenan en las \unitxvariables \unityy que puede redefinir en cualquier parte de su documento para cambiar la escala.

Si no desea aplicar la escala globalmente, elimine el every tikzpictureargumento del \tikzsetcomando y aplique la escala localmente como en el siguiente ejemplo:

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

información relacionada