밑줄이 포함된 문자열을 파일 이름과 인쇄된 문자열로 사용하려면 어떻게 해야 합니까?

밑줄이 포함된 문자열을 파일 이름과 인쇄된 문자열로 사용하려면 어떻게 해야 합니까?

아래 코드에서 의 두 번째 인수는 \examplecode파일 이름과 프레임 제목입니다. 파일 이름에 밑줄이 포함되어 있으면 실패합니다.

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

이 두 가지 목적으로 모두 사용할 수 있도록 #2를 어떻게 처리합니까?

답변1

_텍스트 모드에서 사용할 수 없기 때문에 코드가 실패합니다 . 가장 쉬운 해결책은 \_명령에서 로컬로 재정의하는 것입니다.

\newcommand{\examplecode}[2]{
    \mdfsetup{frametitle={\colorbox{white}{\space #2 \space}}}
    \begin{mdframed}
        \def\_{_}
        \inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{src/#2}
    \end{mdframed}
}

통화에서 사용하세요.

\examplecode{c}{text\_file.c}

답변2

제가 수행한 또 다른 방법은 파일 이름 인수를 다음과 같은 또 다른 중괄호 쌍으로 묶는 것입니다.

\inputminted[linenos,fontsize=\footnotesize,baselinestretch=.7]{#1}{{src/#2}}

관련 정보