
En el código siguiente, el segundo argumento \examplecode
es simultáneamente el nombre de un archivo y el título de un fotograma. Falla cuando el nombre del archivo contiene un guión bajo.
\documentclass[a4paper,10pt,openany]{scrbook}
\usepackage{minted}
\usepackage{mdframed}
\newcommand{\examplecode}[2]
{
\mdfsetup{frametitle={\colorbox{white}{\space #2 \space}}}
\begin{mdframed}
\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{src/#2}
\end{mdframed}
}
\begin{document}
\examplecode{c}{testfile.c} % ok
\examplecode{c}{test_file.c} % error
\end{document}
¿Cómo manejo el número 2 para que pueda usarse para ambos propósitos?
Respuesta1
Su código falla porque no puede usarlo _
en modo texto. La solución más sencilla sería redefinir \_
localmente en su comando:
\newcommand{\examplecode}[2]{
\mdfsetup{frametitle={\colorbox{white}{\space #2 \space}}}
\begin{mdframed}
\def\_{_}
\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{src/#2}
\end{mdframed}
}
y usarlo en la llamada:
\examplecode{c}{text\_file.c}
Respuesta2
Otra forma en que he hecho esto es envolver el argumento del nombre del archivo entre otro par de llaves como:
\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{{src/#2}}