Archivo para preámbulo de LaTeX en Sphinx
Publicado: 2021-05-31A pesar de que hay algunas opciones que se configuran con variables en Sphinx, como los márgenes, otras aún se configuran mediante el preámbulo.
Para incluir un archivo independiente como preámbulo para configurar nuestro PDF es necesario tomar en cuenta tres cosas:
1. No pueden existir más archivos *.tex. Esto quiere decir que no podemos crear un archivo llamado preambulo.tex
, porque Sphinx trata de compilar todo archivo *.tex de manera independiente, lo que lleva irremediablemente a errores de compilación.
Por lo tanto, el nombre de nuestro archivo debe ser algo como preambulo.tex.txt
(no importa mucho la extensión, solo no debe ser *.tex a secas).
2. Es necesario establecer preamble
dentro de latex_elements
. Para que se puedan leer todas nuestras instrucciones en un archivo, es necesario utlizar la instrucción de LaTeX \input
:
% Formato general de instrucción en LaTeX: \input{nombre_de_archivo.tex} % Instrucción para llamar desde Sphinx: \input{nombre_de_archivo.tex.txt}
Aquí es necesario recordar que el archivo debe finalizar con extensión diferente de *.tex. Ya hablando del código Python en el archivo conf.py
, tenemos:
latex_elements = { 'preamble': r'\input{preambulo.tex.txt}', }
Es decir, utilizamos la llave preamble
dentro de la variable latex_elements
, y le asignamos el valor de la instrucción input
sin necesidad de escapar diagonales.
La r
antes de la cadena es importante porque nos permite que las diagonales invertidas se interpreten como tal, sin necesidad de escaparlas.
3. Agregar el nombre del archivo a latex_additional_files
. Si dejamos todo hasta allí, la compilación del PDF fallará diciendo que el archivo preambulo.tex.txt
no se encuentra:
(/usr/local/texlive/2020/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty ))) (/usr/local/texlive/2020/texmf-dist/tex/latex/oberdiek/hypcap.sty) (./sphinxmessages.sty) ! LaTeX Error: File `preambulo.tex.txt' not found.
Esto sucede porque el archivo preambulo.tex.txt
no se copia automáticamente al directorio donde Sphinx realiza la compilación de LaTeX. Para que se copie el archivo es necesario dar de alta el nombre dentro de la variable latex_additional_files
:
latex_additional_files = [ 'preambulo.tex.txt', ]
Ya con esto, la compilación es un éxito.
Es decir, para agregar el preámbulo a Sphinx desde un archivo externo se utiliza lo siguiente:
latex_elements = { 'preamble': r'\input{preambulo.tex.txt}', } latex_additional_files = [ 'preambulo.tex.txt', ]