2010-02-10 19 views
8

Estoy usando gráficos pgf/tikz y me pregunto cómo se puede controlar la escala de los tamaños de fuente en los gráficos al usarlos en entornos minipage/subfig?¿Controla el tamaño de la fuente en gráficos en LaTeX cuando escala en minipage/subfig?

¿Hay alguna manera de establecer manualmente un tamaño de fuente permanente para los gráficos pgf/tikz o en látex en general para que el tamaño de fuente sea invariable para escalar?

Idealmente, ¿me gustaría poder especificar manualmente un tamaño de fuente por gráfico o para todos los entornos de gráficos o subfig/minipage?

Aquí hay un ejemplo del uso como se sugiere. Gracias por la ayuda.

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

Tal vez fuera del minipágina/subfig puedo usar las sugerencias de la otra publicación para hacer el tipo de letra grande ya que el gráfico se escala con el ancho de página? Lo que estaba buscando en el ejemplo era la primera imagen en sí misma, más grande, y luego dos pequeñas imágenes justo debajo de cada lado con sus propios subtítulos en una figura.

Vi algunas etiquetas R en su perfil Mica. Los gráficos se generan con tikzDevice y se recogen en mi documento de látex.

Por lo tanto, estoy generando los archivos sin el entorno tikzpicture, por lo que puedo configurar manualmente las opciones yo mismo. Cuando uso el \begin{tikzpicture} \end{tikzpicture} obtengo el error "La dimensión es demasiado grande, no puedo trabajar con tamaños superiores a unos 19 pies. Continúo y utilizaré el mayor valor que pueda".. Necesito usar \beginpgfgraphicnamed{} .. \endpgfgraphicnamed{} para que funcione? No estoy seguro de cuál es el impacto exactamente.

Este es un ejemplo del archivo generado automáticamente:

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

Espero que sea útil, sobre todo el archivo es ~ 1,000 líneas, así que traté de cortar una representación de f los bits únicos. Por favor, hágame saber si necesita algo más.

Muchas gracias,

Jay

+0

el código real aún sería útil. ¿Por qué estás escalando un dibujo tikz/pgf? ¿por qué no dibujarlo con el tamaño adecuado? – Mica

+0

¡Código agregado, gracias! :) – Jay

Respuesta

12

no estoy exactamente seguro de lo que su objetivo es. Para cambiar el tamaño de la fuente o el tamaño del resto de la imagen?Existen múltiples posibilidades para llegar a cualquiera de los siguientes:

Mi cuadro de ejemplo con un 1 cm x 1 cm caja grande:

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

escala de los elementos gráficos, pero no el texto:

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

Escala solo las coordenadas (es decir, si no se especifica ninguna unidad, se usaron multiplicaciones del vector x, yyz especificado):

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

longitudes explícitos no se cambian con esto:

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

Escala de todo, incluso el texto (de acuerdo con el pgfmanual, esto no es recomendable):

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

mismo efecto comandos usando LaTeX:

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

Cambiar el tamaño de la fuente localmente, pero el tamaño de los elementos gráficos no se cambian:

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

Cambiar el tamaño de fuente en todos los ambientes tikzpicture posteriores (\tikzset se puede utilizar para configurar las opciones de más arriba, también):

\tikzset{font=\scriptsize} 
\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

\tikzset sigue siendo local en grupos:

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

I don ¿Sabes si puedes editar los archivos graph?.tex o se generan? Tal vez pueda pasar opciones al programa que genera el entorno tikzpicture. De lo contrario, simplemente configure la opción deseada en su alcance deseado usando \tikzset.

Espero, eso ayuda.

EDITAR: Si las opciones (como font=) se definen localmente en el graph?.tex, entonces éstos reciben prioridad sobre las opciones definidas fuera. Si este es el caso, simplemente no puede sobrescribirlos desde el exterior. Tendría que editar los archivos.

EDITAR: Este ejemplo "mínimo" que funciona para mí (que muestra una muy grande "Ventas Netas Mackenzie" que excede el ancho de la representación parcial)

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

favor probar si esto funciona para usted, también. Si lo hace, intente modificar este hasta que no funcione más. ¿Cuál es el cambio radical?

+0

Gracias por toda la información Meinersbur, eso es genial. Hay algunas opciones que se pueden controlar, como puedo crear los archivos para que especifique manualmente el entorno tikzpicture pero arroja un error "Dimensión demasiado grande, no puedo trabajar con tamaños superiores a unos 19 pies". – Jay

+0

Sería preferible no editar partes internas de los archivos gráficos generados automáticamente. No hay "font =" en los archivos, pero la configuración de \ tikzset {font = \ scriptsize} no parece tener un efecto? – Jay

+0

Mi objetivo es que el tamaño de la fuente 10p digamos para el desarrollo, independientemente de cómo se vuelva a consultar el gráfico hte tikz (subfig, minipágina, ...). Específicamente, en la configuración que publiqué, la fuente es más grande en el gráfico superior y pequeña (y no se puede leer) en los gráficos inferiores uno al lado del otro ... – Jay

Cuestiones relacionadas