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 x
e y
para cada tikzpicture
ambiente e define um estilo para um nó retângulo com minimum width
e minimum height
com base nesta escala.
As escalas são armazenadas nas variáveis \unitx
e \unity
que você pode redefinir em qualquer lugar do documento para alterar a escala.
Se você não deseja aplicar o dimensionamento globalmente, remova o every tikzpicture
argumento do \tikzset
comando 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}