Масштабирование tikzpicture, а затем изменение масштаба все портит

Масштабирование tikzpicture, а затем изменение масштаба все портит
\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.

Связанный контент