При рисовании прямоугольника с использованием \node
и minimum width/height
размер полученного прямоугольника отличается от нарисованного с \draw … rectangle …
. Мне нужно \node
, чтобы я мог ссылаться на него по имени.
Я понимаю, что я могу исправить это, добавив единицы измерения ко всем размерам (10 мм, 15 мм), но я пытаюсь понять, почему это не работает без. Я предполагал, что единицы измерения по умолчанию — <dimension>
это точки.
\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x = 1mm, y = 1mm]
%% named rectangle with minimum size of 10x15.
\node[%
minimum width = 10,
minimum height = 15,
draw = blue
]
(rect) at (0,0) {};
%% unnamed rectangle with size of 10x15.
\draw [red] (0,0) rectangle ++(10, 15);
\end{tikzpicture}
\end{document}
решение1
Это связано с преобразованиями в tikz
(см.Руководство по эксплуатации ПФГстр. 373). В одном абзаце прямо говорится:
Самым важным аспектом преобразования координат [...] является то, что оно применяется только к координатам!
Размеры узлов не затрагиваются преобразованиями, а единицей измерения по умолчанию является pt
. Если вы хотите, чтобы размеры работали так, как будто mm
используются, добавьте scale
и transform shape
к параметрам каждого затронутого узла или используйте глобальные параметры. Смотрите пример ниже
\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\tikzset{
x = 1mm, y = 1mm,
every node/.style = {
transform shape,
scale = 2.84, % Converts mm to pt by the factor 72.27/25.4
},
}
\begin{document}
\begin{tikzpicture}
%% named rectangle with minimum size of 10x15.
\node[%
minimum width = 10,
minimum height = 15,
draw = blue,
] (rect) at (0,0) {};
%% unnamed rectangle with size of 10x15.
\draw [red] (0,0) rectangle ++(10, 15);
\end{tikzpicture}
\end{document}