Я хотел бы создать узел с minimum width=αx
, где x — длина вектора координаты x, указанного в среде tikzpicture, например \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 width
учетом minimum 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}