Exporte exemplos de código E exiba literalmente

Exporte exemplos de código E exiba literalmente

Gostaria de escrever um documento LaTeX com exemplos de código em um ambiente literal. Também gostaria de exportar esses exemplos de código para arquivos nomeados para que possam ser criados e executados. Isso me permite executar testes facilmente em meus exemplos de código para garantir que meu documento não contenha código com erros. Então, eu gostaria de escrever LaTeX assim

\begin{code}[test1.hs]
main = do
    print "Hello, world!"
\end{code}

e fazer com que esse exemplo de código apareça literalmente em meu documento e, como efeito colateral, no arquivo test1.hs.

Infelizmente, minhas tentativas de escrever LaTeX tanto para exibir o código literalmente quanto para o código de saída para um arquivo acabaram me amarrando em nós. Existe uma maneira fácil de fazer isso?

Responder1

Uma possível solução com tcolorbox.

Claro, você pode personalizar a caixa como quiser, também sem moldura.

\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}

insira a descrição da imagem aqui

informação relacionada