\begin{tikzpicture}[scale=x]
\node[scale=y] (a,b)
при настройке сложного изображения и позиционировании всего вручную (указании всех (a, b)), а затем изменении x, чтобы сделать его больше или меньше, все портится.
Полагаю, я мог бы использовать поле изменения размера, но я бы подумал, что масштаб x будет общим масштабом, и установка его значения на любое значение также изменит масштаб всех шкал внутри него... что не так.
Может быть, есть более простой способ?
решение1
Довольно сложно понять проблему с таким кратким вопросом, но, может быть, ОП ищет transform shape
? Посмотрите:
\documentclass[]{article}
\usepackage{tikz}
\begin{document}
{\Huge X}
\begin{tikzpicture}[
]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\bigskip
{\Huge X}
\begin{tikzpicture}[
scale=0.5]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\bigskip
{\Huge X}
\begin{tikzpicture}[
scale=0.5, every node/.style={transform shape}]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\end{document}
произведет (огромный X указан для справки, обратите внимание на изменение базовой линии):
решение2
scale
не поддерживается опцией tikzpicture
. Она просто устанавливается глобально в пределах области действия изображения, так что она влияет на все, что в пределах изображения имеет опцию такого рода. Это может быть все или ничего, но обычно это будут некоторые вещи, а не другие.
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [ultra thick, ->] (0,0) -- (1,1) node [right] {A};
\begin{scope}[scale=2, xshift=10mm]
\draw [ultra thick, ->] (0,0) -- (1,1) node [right] {A};
\end{scope}
\end{tikzpicture}
\end{document}
В целом, это то, что вам нужно: шрифты, ширина линий и кончики стрелок не изменяются при масштабировании, но координаты — нет.
Причина, по которой использование \resizebox
является злом, заключается именно в том, что оно влияет на все в поле: линии, шрифты, все остальное. Это неоптимально с запасом, поскольку это означает документ с непоследовательными шрифтами и линиями. При использовании шрифтов с доступными оптическими размерами искажение будет еще больше, поскольку формы глифов, разработанные для большего или меньшего размера, будут отображаться вместо тех, которые соответствуют контексту.
В случаях, когда изменение размера неизбежно, tikzscale
предпочтительнее использовать \resizebox
, так как он сохранит ширину линий и размер шрифта, при этом выполняя более полную и последовательную работу по масштабированию оставшейся части, чем масштабирование только тех элементов изображения, которые поддерживают scale
.