Líneas horizontales para code-block en Sphinx

Publicado: 2021-06-11

De manera predeterminada, Sphinx coloca un recuadro completo alrededor de los code-block cuando traduces a PDF a través de LaTeX. Es decir, al correr

make latexpdf

tendrás bloques de código con una caja negra que no es muy agradable a la vista. Lo primero que hay que hacer para eliminarla es agregar lo siguiente al archivo conf.py:

latex_elements = {
	'sphinxsetup': '''
		verbatimwithframe=false
	''',
}

Al volver a generar, ya no estará el cuadro feo. No obstante, no se puede configurar que solamente aparezcan las líneas horizontales a través de Sphinx. Esto debe realizarse a través de un paquete adicional, llamado etoolbox, por lo que la configuración ahora debe contener:

latex_elements = {
	'sphinxsetup': '''
		verbatimwithframe=false
	''',
	'extrapackages': r'''
		% Para colocar contenido antes y después de un entorno ya definido.
		\usepackage{etoolbox}
	''',
}

Y ya en el archivo de preámbulo incluyes lo siguiente:

\BeforeBeginEnvironment{sphinxVerbatim}{%
    \noindent{\rule{\linewidth}{0.4pt}}\vspace{-3.75mm}%
}
\AfterEndEnvironment{sphinxVerbatim}{%
    \vspace*{-7mm}%
    \noindent{\rule{\linewidth}{0.4pt}}%
}

Eso dibujará las líneas verticales alrededor de tus bloques de código. Las distancias para las instrucciones \vspace fueron colocadas de manera empírica, tras varias compilaciones del código, para determinar la ubicación óptima. Recomiendo hacer lo mismo.

Si quieres cambiar el color de la línea vertical, esta respuesta de Stack Overflow puede servir.

Y con eso estamos listos, ya podemos crear un bloque de código con Sphinx y LaTeX de una manera más presentable.

¿Tienes algún comentario?

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *