7 Inclusión de Gráficos 7.1. Gráficos en LATEX La inclusión de gráficos en LATEX depende hasta cierto punto de la plataforma de uso, y hace que la inclusión de cierto tipo de gráficos sea más dificultosa que otros. Los formatos más recomendables para su uso son el Encapsulated PostScript (EPS) y el formato PostScript (PS). Si usamos PDFLATEX, los formatos más comunes son PDF, PNG, JPG o GIF. Los archivos son insertados dentro del fichero LATEX mediante el comando \includegraphics{hnombre del ficheroi} Para poder usar este comando es preciso cargar el paquete \usepackage{graphicx} que puede llevar como opción algún controlador especial que haga posible la inclusión de otro tipo de formatos no comunes en LATEX (p.e. ‘emf’, ‘wmf’, etc.). Este tipo de ficheros no son recomendables para trabajar con LATEX. 7.1.1. El comando \includegraphics La sintaxis de este comando es: \includegraphics[hopcionesi]{hnombre del ficheroi} Las opciones disponibles para \includegraphics son: width Anchura del gráfico (escalándolo si es necesario). height Altura del gráfico (escalándolo si es necesario). scale Define un factor de escala a aplicar en ambas direcciones. angle clip Especifica un ángulo de rotación en grados (en sentido positivo). Es un parámetro lógico. Si se le asigna el valor true el gráfico será recortado (no escalado) a las dimensiones especificadas. El comando \includegraphics* es equivalente a \includegraphics[clip]. 48 7.1 Gráficos en LATEX 49 Ejemplos \includegraphics[width=1.5in]{duck.pdf } \includegraphics[width=1in,height=1.5in]{duck.pdf } \includegraphics[height=1in,angle=45]{duck.pdf } \includegraphics[angle=45,heigth=1in]{duck.pdf } 7.1.2. Ubicación de gráficos Por defecto, LATEX busca los archivos gráficos en los directorios predeterminados por TEX. Además, es posible especificar directorios para la búsqueda de estos archivos mediante el comando \graphicspath. La sintaxis es \graphicspath{{dir1/}{dir2/}} 7.1.3. Extensiones de los ficheros gráficos El comando \DeclareGraphicsExtensions le dice a LATEX qué extensiones intentar en un archivo en el que no hemos especificado su extensión para ser incluido con el comando \includegraphics. Por ejemplo, \DeclareGraphicsExtensions{.eps,.ps,} si vamos a compilar con LATEX, o \DeclareGraphicsExtensions{.png,.pdf,.jpg,.gif } si compilamos con PDFLATEX. Con este comando, si aparece una orden del tipo \includegraphics{nombre} el compilador buscará primero el archivo con extensión declarada en primer lugar y si no lo encuentra probará con las siguientes. Para evitar tener que especificar el tipo de archivo, y poder compilar indistintamente A con LTEX o PDFLATEX, podemos incluir el siguiente código en un archivo de estilo: Inclusión de Gráficos \newif\ifpdf \ifx\pdfoutput\undefined \pdffalse \else \pdfoutput=1 \pdftrue \fi \ifpdf \usepackage[pdftex]{graphicx} \usepackage[usenames,dvipsnames]{color} \pdfcompresslevel=9 \pdfpageheight=12in \else \usepackage{graphicx} \usepackage[usenames]{color} \fi \ifpdf \DeclareGraphicsExtensions{.png,.jpg,.pdf,.mps,.gif,.bmp} \else \DeclareGraphicsExtensions{.eps,.ps} \fi 7.2. Rotar y escalar objetos El paquete graphicx incluye otros comandos para manipular objetos como \scalebox{2}{\includegraphics{fichero.ps}} \resizebox{4in}{!}{\includegraphics{fichero.ps}} \rotatebox{45}{\includegraphics{fichero.ps}} que son equivalentes a \includegraphics[scale=2]{file.eps} \includegraphics[width=4in]{file.eps} \includegraphics[angle=45]{file.eps} LAT EX Sin embargo, los primeros son aplicables a objetos que no son necesariamente archivos gráficos, como por ejemplo \rotatebox{45}{\fbox{\Large \textcolor{blue}{\LaTeX}}} 7.3. LA T EX 50 \rotatebox{145}{\fbox{\Large \textcolor{blue}{\LaTeX}}} Objetos flotantes La inclusión de figuras puede presentar problemas a la hora de ubicarlas en el texto pues al no poder ser divididas no pueden aparecer en cualquier punto del documento. Para resolver este problema, es necesario tratar este tipo de objetos como objetos flotantes, que son situados donde el compilador estima conveniente. 7.4 7.4. Creación de figuras flotantes 51 Creación de figuras flotantes Las figuras flotantes se crean con el entorno figure, en cuyo interior situamos el correspondiente gráfico con \includegraphics. La sintaxis del entorno es: \begin{figure}[hposicióni] \centering \includegraphics{figure.eps} \caption{hPie de la figurai} \label{hetiquetai} \end{figure} 7.4.1. Caracterı́sticas Los comandos \caption y \label son opcionales y sirven para situar una leyenda para la figura, que aparecerá numerada. Dicha numeración se asignará a la etiqueta \label (ver Capı́tulo 11). El comando \label debe se situado inmediatamente después del \caption. Si el comando \caption no aparece se crea una figura sin numerar. El comando \listoffigures (normalmente situado al inicio del documento) genera una lista con todas las figuras incluidas en el documento. El comando \caption puede llevar un argumento opcional que especifica el texto que aparecerá en la Lista de Figuras. En caso de no aparecer, dicho texto es el mismo que el argumento obligatorio del comando. Por ejemplo, \caption[Texto para la lista]{Pie de la figura} 7.4.2. Ejemplo Figura 2 Ejemplo de figura 7.5. Posicionamiento de Figuras La posición en la que la figura aparece en el texto está determinada por el argumento opcional que puede ser una (o más de una) de las siguientes letras h, t, b, p. 52 Inclusión de Gráficos h Sitúa la figura allı́ donde aparece el entorno. Esta opción no puede ser ejecutada siempre, pues es posible que el gráfico no entre en el espacio de página que reste. t Sitúa la figura en la parte superior de la página. b Sitúa la figura en la parte inferior de la página. p Sitúa la figura en una página separada. Si no se especifica la posición, el compilador toma por defecto la secuencia [tbp]. Cuando se incluye una figura flotante, LATEX leerá la figura y la tendrá en memoria hasta que encuentre una posición que considere adecuada para incluirla en el texto. En ciertos casos es posible que el compilador tenga en memoria un número considerable de objetos sin procesar, que pueden dan lugar a colapsar la compilación y se obtenga un error. Para evitar esta situación (en general, muy improbable) están los siguientes comandos \clearpage \FloatBarrier Este comando proceso todos los objetos sin procesar y comienza una nueva página. Este comando provoca que todos los objetos sin procesar sean procesados, pero a diferencia de \clearpage no comienza una nueva página. Requiere cargar el paquete placeins. Si cargamos el paquete placeins con la opción section, \usepackage[section]{placeins} se procesan todas las figuras en la sección en la que aparecen. La sentencia anterior redefine el comando \section, insertando un \FloatBarrier antes del comienzo de cada sección. La opción below \usepackage[below]{placeins} es menos restrictiva, pues permite que los objetos sean situados después del comienzo de una nueva sección, siempre que algo de la sección anterior aparezca en misma página. 7.6. El paquete subfigure El paquete subfigure permite introducir figuras con más de un gráfico, y pies de figuras personalizados, como el que sigue: El ejemplo anterior se ha realizado con el código \begin{figure}[h] \centering \subfigure[Pato de anchura 4cm]{ \includegraphics[width=4cm]{duck} } \subfigure[Pato de anchura 5cm]{ \includegraphics[width=5cm]{duck} } \caption{Varias figuras en una} \end{figure} 7.7 (a) Pato de anchura 4cm Configuración del entorno 53 (b) Pato de anchura 5cm Figura 3 Varias figuras en una 7.7. Configuración del entorno Los siguientes parámetros son usados por LATEX para prevenir diseños no aceptables en la configuración de páginas con figuras. 7.7.1. Contadores de posición topnumber Máximo número de objetos permitidos en la parte superior de la página (por defecto es 2) bottomnumber Máximo número de objetos permitidos en la parte inferior de la página (por defecto es 1) totalnumber Máximo número de objetos permitidos en cualquier página (por defecto es 3) Estos contadores previenen contra el posicionamiento de muchos objetos en la misma página de texto. Estos contadores no afectan a las páginas de figuras. Si especificamos el parámetro ! junto con las opciones de posición, LATEX ignorará estos parámetros. Para cambiar los valores de estos comandos usamos el comando \setcounter. Por ejemplo, \setcounter{totalnumber}{2} 7.7.2. Afinando un poco más También es posible controlar el porcentaje en una página de texto que va a ser usado por figuras. Los comandos de la tabla siguiente determinan estos porcentajes, que equivalen al cociente entre la altura de los objetos flotantes dividida por \textheight. El uso del parámetro ! en el argumento opcional de posición del objeto hace que LATEX ignore los tres primeros comandos. Para modificar los valores anteriores es preciso el uso del comando \renewcommand del siguiente modo: \renewcommand{\textfraction}{0.3} 54 Inclusión de Gráficos \textfraction Mı́nima fracción de texto ocupado en una página de texto. El valor por defecto es 0.2. \topfraction Máxima fracción de una página de texto que puede ser ocupada por objetos flotantes en la parte superior. El valor por defecto es 0.7. \bottomfraction Máxima fracción de una página de texto que puede ser ocupada por objetos flotantes en la parte inferior. El valor por defecto es 0.3. \floatpagefraction Mı́nima fracción de una página de objetos flotantes que puede ser ocupada por los mismos. El valor por defecto es 0.5, lo que significa que el espacio en blanco en una página de objetos flotantes no puede ser mayor que 1-\floatpagefraction.