Для того, чтобы увеличить или уменьшить размеры объекта, например, картинки tikzpicture
, нужно поместить ее внутрь одной из команд \scalebox
или \resizebox
, входящих в пакет graphics. Например:
\scalebox{0.5}{<код картинки>} % умножает размеры по горизонтали и вертикали на 0.5
\scalebox{0.5}[0.25]{<код картинки>} % умножает размеры: по горизонтали на 0.5
% и по вертикали на 0.25
\resizebox{ширина}{высота}{<код картинки>} % устанавливает требуемые ширину и высоту
\resizebox{5cm}{!}{<код картинки>} % устанавливает ширину 5 см; высота вычисляется
% автоматически с сохранением пропорций картинки
Сходным образом можно изменять размеры и других объектов LaTeX, кроме тех, что помещены в окружение verbatim
. Для их масштабирования применяется пакет adjustbox, как описано здесь.
Масштабирование рисунка tikzpicture
при помощи \scalebox
выполняется тотально: изменяется даже толщина линий. Это не всегда хорошо. Впрочем, для рисунков TikZ есть несколько дополнительных возможностей по масштабированию.
\documentclass{article}
\usepackage{tikz}
\begin{document}
% Исходная картинка
\framebox{\begin{tikzpicture}
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
% scalebox масштабирует даже толщину линий
\framebox{\scalebox{0.6}{\begin{tikzpicture}
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}}
% scale не масштабирует node'ы
\framebox{\begin{tikzpicture}[scale=0.6]
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
% transform canvas перемещает содержимое по странице
\framebox{\begin{tikzpicture}[transform canvas={scale=0.6}]
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
% дополнительно масштабируем node
\framebox{\begin{tikzpicture}[scale=0.6, every node/.style={scale=0.6}]
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
% еще один интересный вариант
\framebox{\begin{tikzpicture}[scale=0.6, every node/.style={transform shape}]
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
\end{document}
Предпочтительными выглядят два последних варианта: они масштабируют как нужно и не изменяют толщину линий.
Для комбинации
\begin{tikzpicture}[scale=0.6, every node/.style={scale=0.6}]
введем глобальный стиль, который можно задавать в преамбуле LaTeX-овскового документа:
\tikzset{global scale/.style={
scale=#1,
every node/.style={scale=#1}
}
}
Проверим стиль в работе:
\documentclass{article}
\usepackage{tikz}
\tikzset{global scale/.style={
scale=#1,
every node/.style={scale=#1}
}
}
\begin{document}
\framebox{\begin{tikzpicture}
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
\framebox{\begin{tikzpicture}[global scale=0.6]
\draw [dashed] (1,12) -- (11,12);
\node[above, rotate=40] at (4,11) {1}; \node[above] at (8,11) {true};
\draw[->,blue,cm={cos(45) ,-sin(45) ,sin(45) ,cos(45) ,(5.5,11.5)}] (0,.5) -- (1,.5);
\end{tikzpicture}}
\end{document}
Комментарии
comments powered by Disqus