Come aggiungere un bordo ai blocchi di codice in pandoc?
Sto scrivendo un file Markdown con blocchi di codice al suo interno, quindi lo sto creando sia in DOCX che in PDF con pandoc, in particolare:
pandoc myfile.md --to=docx --defaults=defaults.yml -o myfile.docx
pandoc myfile.md --to=latex --defaults=defaults.yml -o myfile.pdf
Il defaults.yml
file specifica solo i margini LaTeX e include un ToC.
L'output sembra molto carino, ma mi piacerebbe che ci fossero dei bordi intorno ai blocchi di codice, per renderli visivamente separati dal testo circostante.
Questa domanda su TeX StackExchange suggerisce di cambiare lo stile di evidenziazione in un tema scuro, ma i miei lettori preferiranno sicuramente uno chiaro.
Questa domanda SO suggerisce di passare al pacchetto elenchi, ma questo produce un codice molto più brutto rispetto a quello predefinito di pandoc. (Anche quel post ha 6 anni e da allora pandoc è cambiato molto.)
C'è un modo che non abbia uno di questi svantaggi?
Risposte
Per LaTeX, puoi utilizzare il pacchetto tcolorbox altamente personalizzabile per avvolgere il blocco di codice, inserendo il codice necessario tramite un filtro Lua :
function raw_tex (t)
return pandoc.RawBlock('tex', t)
end
--- Wrap code blocks in tcolorbox environments
function CodeBlock (cb)
return {raw_tex'\\begin{tcolorbox}', cb, raw_tex '\\end{tcolorbox}'}
end
--- Ensure that the longfbox package is loaded.
function Meta (m)
m['header-includes'] = {raw_tex '\\usepackage{tcolorbox}'}
return m
end
Vedere la documentazione di tcolorbox per maggiori dettagli.
Docx è più semplice: modifica lo stile del testo "Codice sorgente", quindi utilizza il documento modificato come --reference-doc
.