Me gustaría escribir un documento LaTeX con ejemplos de código en un entorno textual. También me gustaría exportar esos ejemplos de código a archivos con nombre para que puedan compilarse y ejecutarse. Esto me permite ejecutar pruebas fácilmente en mis ejemplos de código para asegurarme de que mi documento no contenga código con errores. Entonces me gustaría escribir LaTeX así.
\begin{code}[test1.hs]
main = do
print "Hello, world!"
\end{code}
y hacer que ese ejemplo de código aparezca tanto en mi documento palabra por palabra como, como efecto secundario, en el archivo test1.hs
.
Desafortunadamente, mis intentos de escribir LaTeX para mostrar el código palabra por palabra y generar el código en un archivo terminaron enredándome en un nudo. ¿Hay una forma fácil de hacer esto?
Respuesta1
Una posible solución con tcolorbox
.
Por supuesto, puedes personalizar la caja como quieras, también sin marco.
\documentclass{book}
\usepackage{tcolorbox}
\tcbuselibrary{breakable,listings}
\newtcbinputlisting{\mylisting}[2][]{%
listing file={#2},
title=Listing of \texttt{#2},
colframe=red,fonttitle=\bfseries,
listing only,breakable, #1}
\begin{document}
This creates a file \texttt{test1.hs}:
\begin{tcbverbatimwrite}{test1.hs}
main = do
print "Hello, world!"
\end{tcbverbatimwrite}
And this use it:
\mylisting{test1.hs}
\end{document}