在minipage/subfig中缩放时,控制LaTeX中图形的字体大小?

Jay*_*Jay 9 latex subfigure tikz pgf

我正在使用pgf/tikz图形,我想知道在minipage/subfig环境中使用它们时如何控制图形中字体大小的缩放?

有没有办法手动设置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}
Run Code Online (Sandbox Code Playgroud)

也许在minipage/subfig之外我可以使用其他帖子的建议来使字体变大,因为图形是用页面宽度缩放的?在这个例子中我想要的是它自己的第一个图像,更大,然后是两个小图像,并排在一个图中,并排在一起.

我在你的个人资料Mica中看到了一些R标签.图形是使用tikzDevice生成的,并在我的latex文档中提取.

所以我在没有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}
Run Code Online (Sandbox Code Playgroud)

........

\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}
Run Code Online (Sandbox Code Playgroud)

........

\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}
Run Code Online (Sandbox Code Playgroud)

希望这是有帮助的,所有文件都是~1,000行,所以我试图删除唯一位的表示.如果您还有其他需要,请告诉我.

非常感谢,

松鸦

Mei*_*bur 13

我不确定你的目标是什么.要更改图片其余部分的字体大小或大小?有多种可能性来实现这些目标:

我的示例盒子有一个1厘米x 1厘米的大盒子:

\begin{tikzpicture}
    \draw (0,0) rectangle (1,1) -- +(-1,-1);
    \node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Run Code Online (Sandbox Code Playgroud)

缩放图形元素,但不是文本:

\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}
Run Code Online (Sandbox Code Playgroud)

仅缩放坐标(即,如果未指定单位,则使用指定的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}
Run Code Online (Sandbox Code Playgroud)

显式长度不会随此改变:

\begin{tikzpicture}[x=5mm,y=5mm]
    \draw (0,0) rectangle (1cm,1cm) -- +(-1cm,-1cm);
    \node(text) at (0.5cm,0.5cm) {Text};
\end{tikzpicture}
Run Code Online (Sandbox Code Playgroud)

扩展所有内容,甚至文本(根据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}
Run Code Online (Sandbox Code Playgroud)

使用LaTeX命令的效果相同:

\scalebox{0.5}{
\begin{tikzpicture}
    \draw (0,0) rectangle (1,1) -- +(-1,-1);
    \node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
}
Run Code Online (Sandbox Code Playgroud)

在本地更改字体大小,但图形元素的大小不会更改:

\begin{tikzpicture}[font=\scriptsize]
    \draw (0,0) rectangle (1,1) -- +(-1,-1);
    \node(text) at (0.5,0.5) {Text};
\end{tikzpicture}
Run Code Online (Sandbox Code Playgroud)

在所有后续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}
Run Code Online (Sandbox Code Playgroud)

\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}
Run Code Online (Sandbox Code Playgroud)

我不知道你是否可以编辑文件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}
Run Code Online (Sandbox Code Playgroud)

请测试这是否适合您.如果是的话,那么尝试修改这个,直到它不再起作用.什么是突破性变化?

  • 派对有点晚了,但是"维度太大"的错误是由于TikZ默认为1cm的单位为coordianates而tikzDevice输出假定为1pt.为了解决问题而不做任何疯狂的划分,每当处理tikzDevice输出时,使用`\ begin {tikzpicture} [x = 1pt,y = 1pt]`或`\ begin {scope} [x = 1pt,y = 1pt]`. (2认同)