standalone es una clase para componer un único bloque — una figura, un dibujo TikZ, una tabla — como un documento completo por sí mismo. La salida se recorta ajustada al contenido: un PDF de la figura sola, sin página alrededor, número de página ni margen. Combinada con el paquete del mismo nombre, ese archivo de figura puede entrar sin cambios en el documento principal con \input. Escrita por Martin Scharrer, permite que una misma figura sirva tanto aislada como dentro de un documento mayor.
Para qué sirve standalone
Al escribir un documento grande, a menudo conviene separar las figuras y dibujos TikZ en archivos propios e incluirlos en el cuerpo. Pero para compilar y revisar uno de esos archivos por separado hay que añadir una y otra vez el armazón — \documentclass, \begin{document} — y la salida queda como una figura en la esquina de una gran página blanca de texto. La clase standalone resuelve ambas cosas. Pon \documentclass{standalone} al principio del archivo de figura y podrás compilar esa pieza sola, con la salida recortada al tamaño exacto del contenido: un PDF (o DVI/PS) sin número de página, encabezado ni pie.
standalone tiene dos caras. Una es la clase que se usa en el archivo de figura (\documentclass{standalone}); la otra es el paquete que se carga en el documento principal (\usepackage{standalone}). La clase “compone una pieza por sí sola” y el paquete “incluye esa pieza en el documento principal”: forman una pareja. Empecemos por la clase.
Tanto la clase como el paquete standalone requieren xkeyval. El paquete necesita además currfile (que usa filehook internamente) para rastrear los nombres de los archivos incluidos, y gincltex y filemod para la función de construir como imagen. Todos vienen con TeX Live y MiKTeX.
Usarlo como clase
Se usa como un documento LaTeX ordinario. Elige la clase con \documentclass{standalone}, carga en el preámbulo los paquetes que necesite la figura (para TikZ, tikz, etc.) y escribe el contenido directamente entre \begin{document} y \end{document}. La clase activa por defecto la opción crop (véase abajo), que recorta la salida al tamaño del contenido.
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (2,1) node[midway] {Example};
\end{tikzpicture}
\end{document}Compilado por separado, esto produce un PDF de una página recortado al rectángulo. Hay dos detalles que cuidar al escribir: no dejes líneas en blanco antes ni después del contenido, y pon \begin{document} y \end{document} cada uno en su propia línea. La clase standalone trata todo el contenido como un bloque, de modo que una línea en blanco final se interpreta como un párrafo de ancho \linewidth y puede añadir espacio sobrante a la derecha de la figura.
Para un dibujo TikZ, lo cómodo es usar la opción tikz, como en \documentclass[tikz]{standalone}. Carga el paquete tikz e incluso configura el entorno tikzpicture para recortarlo en su propia página (internamente fija multi=tikzpicture y varwidth=false). Para dibujos PSTricks existe la opción correspondiente pstricks.
Opciones principales de la clase
Las opciones van entre corchetes, separadas por comas. La mayoría de las opciones de standalone son booleanas: si omites el valor obtienes true; salvo indicación contraria, el valor inicial es false. Estas opciones no se pasan a la clase subyacente (article por defecto), sino que standalone las interpreta por sí mismo para evitar conflictos de nombres. Las más importantes son las siguientes.
| Opción | Efecto | Predeterminado |
|---|---|---|
crop | Encaja el contenido y recorta la página a su tamaño más el borde | true (desde v1.0) |
border | Margen añadida al recortar (alias margin). 1 valor = todos los lados, 2 = horizontal/vertical, 4 = izquierda/abajo/derecha/arriba | 0pt |
varwidth | Envuelve el contenido en un entorno varwidth para que los párrafos tomen su ancho natural; varwidth=<width> fija el máximo | off |
tikz | Carga tikz y recorta cada tikzpicture en su propia página (fija multi=tikzpicture, varwidth=false) | off |
multi | Permite varias páginas, cada una recortada por separado; se pueden nombrar los entornos que marcan una página | off |
class | Elige la clase subyacente que se cargará (por ejemplo class=report) | article |
preview | Recorta mediante el paquete preview (método antiguo); incompatible con crop, usado como alternativa si fallan los sombreados TikZ | off |
beamer | Desactiva el recorte y compone el contenido en un marco beamer vacío | off |
La opción que más se usa es border. Con \documentclass[border=5pt]{standalone}, la figura recortada recibe un margen de 5pt en los cuatro lados. Para pasar varios valores separados por espacios, encierra el valor completo entre llaves: border={10pt 5pt}. Como border y varwidth no tienen efecto global, puedes cambiarlos después con \standaloneconfig{...}: en el preámbulo o incluso a mitad del documento cuando multi está activo.
Una nota histórica. Antes de la v1.0, la opción predeterminada era preview y el borde predeterminado era de unos 0.5bp. Desde la v1.0, crop es el valor predeterminado y el borde es 0pt. Para recuperar el comportamiento antiguo, pon \standaloneconfig{preview,border=0.50001bp} en el archivo de configuración o indica esas opciones explícitamente.
Incluirlo como paquete
El paquete es la otra cara de standalone. Carga \usepackage{standalone} lo antes posible en el preámbulo del documento principal y el paquete redefine \documentclass para que, al hacer \input de un archivo de figura, se salte todo desde su \documentclass hasta su \begin{document}. El entorno document del archivo de figura se trata como un simple grupo TeX, mientras que el verdadero entorno document del documento principal no se ve afectado (también se ignora todo lo posterior a \end{document}). En efecto, el preámbulo del archivo de figura se elimina al incluirlo, y un \input{figure} desnudo deja entrar solo el contenido en el cuerpo.
El requisito es que el documento principal cargue por sí mismo todos los paquetes que necesitan los archivos de figura. Como el preámbulo del archivo de figura se omite al incluirlo, paquetes como tikz deben cargarse en el documento principal. Este es el ejemplo oficial: un documento principal carga el paquete standalone e incluye una figura con \input dentro de un entorno figure.
\documentclass{article}
% load the standalone package early
\usepackage{standalone}
% load everything the sub-files need
\usepackage{tikz}
\begin{document}
% ...
\begin{figure}
\input{figure}% the standalone file from above
\caption{A sub-file}
\end{figure}
% ...
\end{document}La idea es que el mismo figure.tex funcione sin cambiar un solo carácter, tanto por sí mismo como a través del documento principal. Compilado solo se convierte en un PDF de una página recortado; incluido con \input desde el documento principal, deja caer solo la figura en el cuerpo. Se recomienda gestionar los flotantes en el documento principal: deja allí el entorno figure y pon solo el contenido en el archivo standalone (en la clase standalone, float vale false por defecto para que funcionen crop/preview).
Cuando quieres que el documento principal recoja automáticamente los preámbulos de los archivos de figura, cárgalo como \usepackage[subpreambles=true]{standalone}. El preámbulo de cada figura se reúne en un archivo auxiliar y se incorpora al documento principal en la siguiente pasada. Añade la opción sort y los paquetes (con sus opciones) cargados por cada figura se acumulan sin duplicados y se cargan mediante \PassOptionsToPackage, evitando choques de opciones. Si prefieres copiarlos a mano al preámbulo principal, la opción print escribe la lista.
Construir imágenes y mecanismos parecidos
standalone también puede convertir una figura en una imagen en vez de incluir su fuente. En el documento principal, escribe \includestandalone{figure} en lugar de \input{figure} y compilará el archivo de figura por separado cuando haga falta para producir una imagen (un PDF, por ejemplo), que luego incorpora con \includegraphics. La ventaja es que las figuras complejas no se recompilan cada vez, así que la compilación principal es más rápida. Como esto llama a un comando externo, requiere la opción -shell-escape al compilar.
Además, opciones como convert, png, jpg y svg activan una función de conversión que exporta el propio archivo standalone a una imagen (requiere una herramienta externa de conversión). Es útil cuando quieres distribuir una figura por separado como PNG o SVG.
Dos mecanismos parecidos sirven a fines similares: subfiles y la biblioteca external de TikZ. subfiles trabaja en la dirección opuesta: un subarchivo importa el preámbulo del documento *principal*, mientras que standalone permite importar el preámbulo del subarchivo *en* el documento principal. Por eso standalone encaja con reutilizar una figura en varios documentos (artículo, presentación, tesis), mientras que subfiles encaja con una relación uno a uno entre principal y subarchivo. La biblioteca external de TikZ escribe imágenes temporales desde el archivo principal, justo en el sentido contrario a standalone.
Comprobaciones antes de fijar una figura
Un archivo standalone vale porque compila por sí solo, así que construye la figura aparte e inspecciona el PDF antes de incluirla en el documento principal. En una tesis o artículo a menudo se revisa solo una figura; nómbrala por su significado, como figures/experiment-flow.tex, y deja que el texto principal diga solo \input{figures/experiment-flow}. Así la sustitución, la reutilización y la revisión son más simples.
- Mira el margen. Si se recorta un borde, añade
border=2ptoborder=5pt; si el margen es demasiado amplio, sospecha de una línea en blanco final o de un\parinnecesario. - Mantén alineados los preámbulos. Los paquetes y ajustes usados por la figura, como
tikz, colores o fuentes, también deben cargarse en el documento principal. El preámbulo del subarchivo normalmente se omite al incluirlo. - Mantén los flotantes en el archivo principal. Pon el entorno
figure, la leyenda y la etiqueta en el documento principal; deja en el archivo standalone solo el dibujo. - Reconstruye antes de entregar. Si usas
\includestandaloneo conversión a imágenes, haz una compilación limpia antes de entregar para que no se cuelen PDF o PNG antiguos en caché.
Encajarlo en un proyecto
En un artículo o documento técnico real, trata el archivo standalone como la fuente de la figura, mantenida en una forma que pueda comprobarse aparte del texto principal. Por ejemplo, conserva el archivo principal como paper.tex, pon las figuras en figures/ y haz que el texto principal diga solo \input{figures/energy-flow}. Entonces quien revise la figura puede compilar figures/energy-flow.tex por sí solo, mientras el documento principal gestiona solo leyendas, numeración y referencias. En la revisión, adjunta ese PDF standalone y crea una pasada “solo de figuras”; la figura puede mejorar sin esperar a reconstruir todo el manuscrito.
paper.tex
figures/
energy-flow.tex
apparatus-layout.tex
timing-diagram.texHaz explícita también la decisión de entrega. Si simplemente haces \input de la fuente, no se necesita ningún comando externo y basta la compilación LaTeX normal. Si usas \includestandalone para construir la figura por separado e incluirla como imagen, incorpora -shell-escape y la regla de limpieza de archivos generados en la configuración de compilación. En trabajo colaborativo, indica también si los PDF generados se registran en el repositorio, para que no entren imágenes antiguas en la compilación final.