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 x
y y
para cada tikzpicture
entorno y defines un estilo para un nodo rectangular con minimum width
y minimum height
en base a esta escala.
Las escalas se almacenan en las \unitx
variables \unity
y que puede redefinir en cualquier parte de su documento para cambiar la escala.
Si no desea aplicar la escala globalmente, elimine el every tikzpicture
argumento del \tikzset
comando 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}