
Im folgenden Code \examplecode
ist das zweite Argument gleichzeitig der Name einer Datei und der Titel eines Frames. Es schlägt fehl, wenn der Dateiname einen Unterstrich enthält.
\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}
Wie gehe ich mit Nr. 2 um, damit es für beide Zwecke verwendet werden kann?
Antwort1
Ihr Code schlägt fehl, weil Sie ihn nicht _
im Textmodus verwenden können. Die einfachste Lösung wäre, ihn \_
lokal in Ihrem Befehl neu zu definieren:
\newcommand{\examplecode}[2]{
\mdfsetup{frametitle={\colorbox{white}{\space #2 \space}}}
\begin{mdframed}
\def\_{_}
\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{src/#2}
\end{mdframed}
}
und verwenden Sie es im Anruf:
\examplecode{c}{text\_file.c}
Antwort2
Eine andere Möglichkeit, die ich hierfür genutzt habe, besteht darin, das Dateinamenargument in ein weiteres Paar geschweifter Klammern einzuschließen, wie:
\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{{src/#2}}