Контролировать размер шрифта в графике в LaTeX при масштабировании в министранице / подфиге?
Я использую графику pgf/tikz, и мне интересно, как можно контролировать масштабирование размеров шрифта в графике при использовании их в средах мини-страниц / субфиг?
Есть ли способ вручную установить постоянный размер шрифта для графики pgf/tikz или в латексе в целом, чтобы сделать размер шрифта инвариантным к масштабированию?
В идеале я хотел бы иметь возможность вручную указывать размер шрифта для каждого рисунка или для всех графических или субфиг / министраниц?
Вот пример использования, как предлагается. Спасибо за помощь.
\begin{figure}[h]
\centering
\subfloat[Graph 1]{
\begin{minipage}[h]{0.7\linewidth}
\centering\beginpgfgraphicnamed{graph1}
\input{graph1.tex}
\endpgfgraphicnamed
\label{fig:graph1}
\end{minipage}}
\hspace{5pt}
\subfloat[Graph 2]{
\begin{minipage}[h]{0.5\linewidth}
\centering\beginpgfgraphicnamed{graph2}
\input{graph2.tex}
\endpgfgraphicnamed
\label{fig:graph2}
\end{minipage}}
\subfloat[Graph 3]{
\begin{minipage}[h]{0.5\linewidth}
\centering\beginpgfgraphicnamed{graph3}
\input{graph3.tex}
\endpgfgraphicnamed
\label{fig:graph3}
\end{minipage}}
\caption{Three Graphs}
\end{figure}
Возможно, за пределами мини-страницы / подфига я могу использовать предложения из других публикаций, чтобы сделать шрифт большим, поскольку рисунок масштабируется по ширине страницы? В этом примере я собирался создать первое собственное изображение большего размера, а затем два небольших изображения, расположенные справа внизу рядом с собственными надписями на одной фигуре.
Я видел несколько тэгов R в вашем профиле Mica. Графика генерируется с помощью tikzDevice и подобрана в моем латексном документе.
Таким образом, я создаю файлы без среды tikzpicture, чтобы я мог вручную установить параметры там. Когда я использую \begin{tikzpicture} \end{tikzpicture}
Я получаю сообщение об ошибке: "Размер слишком велик, я не могу работать с размерами, превышающими 19 футов. Продолжайте, и я буду использовать самое большое значение, которое смогу"., Мне нужно использовать \beginpgfgraphicnamed{} .. \endpgfgraphicnamed{}
заставить его работать? Не уверен, что именно воздействие.
Вот пример автоматически сгенерированного файла:
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
........
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\definecolor[named]{fillColor}{rgb}{1.00,1.00,1.00}
\draw[fill=fillColor,draw opacity=0.00,] ( 0.00, 0.00) rectangle (794.97,614.29);
\end{scope}
........
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\definecolor[named]{drawColor}{rgb}{0.00,0.00,0.00}
\node[rotate= 90.00,color=drawColor,anchor=base,inner sep=0pt, outer sep=0pt, scale= 1.00] at ( 15.92,310.59) {Mackenzie Net Sales};
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
Надеюсь, что это полезно, по всему файлу ~1000 строк, поэтому я попытался вырезать представление уникальных битов. Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще.
Большое спасибо,
сойка
1 ответ
Я не совсем уверен, какова ваша цель. Чтобы изменить размер шрифта или размер остальной части изображения? Есть несколько возможностей для достижения любого из них:
Мой пример коробки с большой коробкой 1 см х 1 см:
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Масштабируйте графические элементы, но НЕ текст:
\begin{tikzpicture}[scale=0.5]
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
\begin{tikzpicture}[scale=0.5]
\draw (0,0) rectangle (1cm,1cm) -- +(-1,-1);
\node(text) at (0.5cm,0.5cm) {Text};
\end{tikzpicture}
Масштабировать только координаты (т. Е. Если не указано ни одной единицы, используются множители указанного вектора x, y и z):
\begin{tikzpicture}[x=5mm,y=5mm]
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Явные длины не изменяются с этим:
\begin{tikzpicture}[x=5mm,y=5mm]
\draw (0,0) rectangle (1cm,1cm) -- +(-1cm,-1cm);
\node(text) at (0.5cm,0.5cm) {Text};
\end{tikzpicture}
Масштабируйте все, даже текст (в соответствии с pgfmanual, это не рекомендуется):
\begin{tikzpicture}[transform canvas={scale=0.5}]
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Тот же эффект, используя команды LaTeX:
\scalebox{0.5}{
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
}
Измените размер шрифта локально, но размер графических элементов не изменился:
\begin{tikzpicture}[font=\scriptsize]
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Изменить размер шрифта во всех последующих средах tikzpicture (\tikzset
может также использоваться для установки параметров выше):
\tikzset{font=\scriptsize}
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
\tikzset
остается локальным в группах:
\begin{minipage}{\linewidth}
\tikzset{font=\scriptsize}
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
\end{minipage}
{
\tikzset{font=\scriptsize}
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
}
\begin{tikzpicture}
\draw (0,0) rectangle (1,1) -- +(-1,-1);
\node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Я не знаю, можете ли вы редактировать файлы graph?.tex
или они генерируются? Может быть, вы можете передать параметры в программу, которая генерирует tikzpicture
среда. В противном случае просто установите желаемую опцию в нужной вам области, используя \tikzset
,
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ: Если варианты (как font=
) определены локально в graph?.tex
тогда они получат приоритет над опциями, определенными снаружи. Если это так, вы просто не можете перезаписать их извне. Вам придется редактировать файлы.
РЕДАКТИРОВАТЬ: Этот "минимальный" пример работает для меня (показывает действительно большой "Mackenzie Net Sales", который превышает ширину подфигуры)
\documentclass{article}
\usepackage{fix-cm}
\usepackage{subfig}
\usepackage{tikz}
\begin{document}
\tikzset{every picture/.append style={font=\fontsize{100}{120}\selectfont}}
\begin{figure}[h]
\centering
\subfloat[Graph 1]{
\begin{minipage}[h]{0.7\linewidth}
\centering\beginpgfgraphicnamed{graph1}
% \input{graph1.tex}
\endpgfgraphicnamed
\label{fig:graph1}
\end{minipage}}
\hspace{5pt}
\subfloat[Graph 2]{
\begin{minipage}[h]{0.5\linewidth}
\centering
\resizebox{\textwidth}{!}{
%\beginpgfgraphicnamed{graph2}
\begin{tikzpicture}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\definecolor[named]{fillColor}{rgb}{1.00,1.00,1.00}
\draw[fill=fillColor,draw opacity=0.00,] ( 0.00, 0.00) rectangle (79.497,61.429);
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\definecolor[named]{drawColor}{rgb}{0.00,0.00,0.00}
\node[rotate= 90.00,color=drawColor,anchor=base,inner sep=0pt, outer sep=0pt, scale= 1.00] at ( 1.592,31.059) {Mackenzie Net Sales};
\end{scope}
\begin{scope}
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429);
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43}
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66}
\end{scope}
\end{tikzpicture}
}
%\endpgfgraphicnamed
\label{fig:graph2}
\end{minipage}}
\subfloat[Graph 3]{
\begin{minipage}[h]{0.5\linewidth}
\centering\beginpgfgraphicnamed{graph3}
% \input{graph3.tex}
\endpgfgraphicnamed
\label{fig:graph3}
\end{minipage}}
\caption{Three Graphs}
\end{figure}
\end{document}
Пожалуйста, проверьте, работает ли это и для вас. Если это так, попробуйте изменить этот, пока он больше не работает. Что за переломное изменение?