Inicio Qué es Sagittarius Productos Pedidos Descargas El Mundo de Sagittarius Blog Contacto

LaTeX para maquetar rol (2). Ensamblar pdfs

Continuando con el artículo anterior, en esta ocasión voy a explicar cómo utilizar el entorno LaTeX para ensamblar varios pdf en un único documento. Servirá para describir cómo se trabaja en LaTeX, y además es algo muy útil por sí mismo, aunque no vayamos a utilizar LaTeX para nada más. Yo ya hace tiempo que no utilizo ningún otro programa para ensamblar archivos pdf, sean de rol o de otra cosa.

Empezando

Obviaré cómo instalar una distribución LaTeX, ya que eso depende un poco del sistema operativo que se use, y en general no tiene dificultad. Yo uso MikTeX para Windows, pero cualquier otra distribución produce resultados idénticos.

Vamos a trabajar con tres documentos pdf: alfa.pdf, beta.pdf y gama.pdf, asumiendo que cada uno de ellos tiene varias páginas, algunas con orientación vertical (portrait) y otras apaisada (landscape).

El código con el que empezaríamos sería este:

\documentclass{article}
\usepackage{pdfpages}
\pdfoptionpdfminorversion=7


\begin{document}
\includepdf[pages=1-last]{alfa.pdf}
\end{document}

Este código incluye en un nuevo pdf el documento alfa.pdf. No hemos hecho gran cosa, pero analicemos el código paso a paso:

\documentclass{article}

En LaTeX los comandos empiezan con “\”. Si es obligatorio proporcionar uno o más argumentos, van entre llaves “{…}”. Si se le pueden pasar argumentos opcionales, van entre corchetes “[…]”.

Todos los documentos en LaTeX empiezan con el comando \documentclass, seguido del tipo de documento que queremos entre llaves: book, article, etc. Cada uno tiene sus propiedades. No entraremos en ello porque para el caso que tratamos ahora no es relevante.

\usepackage{pdfpages}

La potencia de LaTeX reside en que los usuarios pueden ampliar su funcionalidad, creando extensiones o packages y poniéndolas a disposición de la comunidad. Con el comando \usepackage cargamos la extensión que nos interesa, en este caso pdfpages, que incluye comandos para ensamblar pdfs.

Una característica útil de MikTeX es que, al compilar el documento, si incluimos una extensión que no tenemos instalada, automáticamente la descarga de Internet, la instala y procesa el documento. Nosotros no tenemos que preocuparnos de esto.

\pdfoptionpdfminorversion=7

Este comando simplemente indica a qué versión de pdf queremos que se compile el documento resultante. Es útil si por razones de compatibilidad tenemos que restringir la versión. Si no incluimos este comando, la versión por defecto es la 5.

Todas estas instrucciones forman el preámbulo del documento. Información que no veremos pero que indican cómo queremos que se genere. Una vez que tenemos bien definido un preámbulo, lo podemos reutilizar para múltiples proyectos.

\begin{document} \end{document}

Todo lo que incluyamos entre estos comandos es el documento en sí. Este par de comandos tienen otros usos que no analizaremos ahora. Lo importante es quedarse con la idea de que si abrimos un comando \begin, debemos cerrarlo en algún momento con un comando \end.

\includepdf[pages=1-last]{alfa.pdf}

El comando \includepdf es lo que necesitamos para incluir el pdf. Como argumento obligatorio hay que indicarle el nombre del archivo con su extensión (alfa.pdf en nuestro ejemplo). El argumento opcional que le hemos pasado aquí, pages=1-last, es que incluya las páginas de la primera a la última.

Más opciones

Esto de las páginas es muy potente. Veamos otras posibles combinaciones:

  • pages=2-10 incluye las páginas de la 2 a la 10, ambas inclusive. Utilizamos un guión para indicar un intervalo.
  • pages=last-1 incluye todas las páginas pero en orden inverso.
  • pages={1,3,5} incluye las páginas 1, 3 y 5. Utilizamos una coma para indicar páginas individuales y debemos encerrar la lista de páginas entre llaves {…}.
  • pages={1-7,{},9-last} incluye las páginas 1 a 7, luego una página en blanco que indicamos con llaves vacías {}, luego las páginas 9 a la última.

El valor por defecto de pages es 1, por lo que si no indicamos nada, solo se incluirá la primera página.

Hay otros argumentos opcionales, que toman el formato key=val, donde key es el argumento que queremos pasar y val el valor que le damos:

  • landscape=true indica que queremos que las páginas aparezcan apaisadas.
  • angle=90 indica que queremos que las páginas roten 90º a la izquierda. Para que roten a la derecha ponemos angle=-90

A un comando le podemos pasar varios argumentos, separados por comas. La línea:

\includepdf[angle=180, landscape=false, pages={2-last}]{alfa.pdf}

dice que queremos incluir alfa.pdf, con las páginas rotadas 180º (es decir, invertidas), en formato vertical (landscape=false), y solo las páginas 2 a la última.

Las opciones no se acaban aquí. Se puede incluso definir la signatura para imprenta (aunque yo esto no lo uso). Para saber más consulta la documentación de pdfpages.

Ensamblando varios documentos

Para ensamblar varios pdf, simplemente pasamos comandos \includepdf en el orden que queremos, con las opciones que nos interesan para cada caso.

En este ejemplo

\includepdf[pages=1-last]{alfa.pdf}
\includepdf[pages=1]{gama.pdf}
\includepdf[landscape=true, pages={1,3,5}]{beta.pdf}
\includepdf[pages=2-last]{gama.pdf}

Incluimos todo el documento alfa.pdf, luego la primera página de gama.pdf, después las páginas 1, 3 y 5 de beta.pdf apaisadas, y por último el resto de gama.pdf. Todo queda ensamblado en un único pdf.

Hay que tener en cuenta algunas limitaciones de LaTeX al manejar archivos pdf:

  • Cualquier marcador, hiperenlace o anotación que tuviera el pdf original se pierde en el documento ensamblado.
  • No se pueden definir opciones de seguridad del pdf.

Añadiendo marcadores

Los marcadores son enlaces a las secciones del pdf, que se visualizan en un panel de navegación como si fuera la Tabla de Contenido.

Si nuestra intención es generar un pdf de varios centenares de páginas para su visualización en pantalla, deberíamos incluirlos porque facilitan la experiencia del usuario.

En LaTeX utilizamos la extensión \hyperref. Es muy potente, pero ahora solo vamos a ver unas pocas funcionalidades.

Cargamos la extensión:

\usepackage{hyperref}

A continuación, y dentro del preámbulo, podemos definir algunas opciones con el comando \hypersetup, utilizando el formato key=val y separándolas por comas.

\hypersetup{
pdftitle={Pruebas},
pdfauthor={Alvaro Prada},
bookmarksopen=true
}

pdftitle y pdfauthor proporcionan la información que aparecerá dentro de las Propiedades del pdf.

propiedades

bookmarksopen indica si queremos que los marcadores se visualicen cuando el usuario abra el archivo.

Hay muchas más opciones que no discutiremos. La documentación de hyperref es, para ser francos, un poco abstrusa. Recomiendo empezar por el wikibook.

Dentro del documento propiamente dicho, incluimos el comando \pdfbookmark justo antes del \includepdf que queremos enlazar:

\pdfbookmark[0]{Portada}{port}

Este comando lleva dos argumentos obligatorios. En nuestro ejemplo {Portada} es el texto que veremos en el panel de navegación. {port} es una referencia interna para manejar los enlaces. Ha de ser única para cada enlace.

El argumento opcional [0] indica el nivel de este marcador en la Tabla de Contenido, siendo 0 el superior. Es decir, si tenemos un marcador de nivel [0], y varios de nivel [1], en el panel de navegación veremos que los [1] cuelgan del [0].

Nuestro código quedaría así:

\documentclass{article}
\usepackage{pdfpages}
\usepackage{hyperref}
\pdfoptionpdfminorversion=7
\hypersetup{
pdftitle={Pruebas},
pdfauthor={Alvaro Prada},
bookmarksopen=true
}

\begin{document}
\pdfbookmark[0]{Portada}{port}
\includepdf[pages=1]{alfa.pdf}
\pdfbookmark[1]{Capitulo 1}{cap01}
\includepdf[pages=1-last]{beta.dpf}
\pdfbookmark[1]{Capitulo 2}{cap02}
\includepdf[pages=1-last]{gama.pdf}
\end{document}

En este ejemplo, ensamblamos la primera página de alfa.pdf como portada, y después beta.pdf y gama.pdf como capítulos. En el panel de navegación veremos:
marcadores

Cuando incluimos algún tipo de enlace (marcadores, tabla de contenido), hay que compilar el código dos veces. La primera vez LaTeX actualiza un archivo de extensión .out que contiene los enlaces y las referencias. La segunda vez lee este archivo y genera los hiperenlaces en el pdf.

Cada vez que hacemos cambios en los enlaces hay que pasar por el mismo proceso, pero el compilador nos avisa de que hay cambios y que debemos re-ejecutarlo.

 

 

Deja un comentario