Date Редакция Категория comp Теги LaTeX / tikz / рисунки

Для того, чтобы увеличить или уменьшить размеры объекта, например, картинки 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}

Варианты масштабирования рисунков TikZ

Предпочтительными выглядят два последних варианта: они масштабируют как нужно и не изменяют толщину линий.

Для комбинации

\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}

Использование глобального стиля масштабирования рисунков TikZ



Комментарии

comments powered by Disqus