\newcommand 逐字参数

\newcommand 逐字参数

我正在尝试创建一个如下所示的命令:

\newcommand{\pdf}[1]{ 
    \includepdf[
        scale = 0.7,
        pagecommand = 
            \begin{verbatim} 
                #1             
            \end{verbatim}
    ]{#1}
}

使得

\pdf{Test.pdf}

包括 pdf 并在页面顶部打印文件名。

我得到了错误File ended while scanning use of \@xverbatim。我也尝试过不逐字逐句地执行此操作:

\newcommand{\pdf}[1]{\includepdf[scale=0.7,pagecommand= #1 ]{#1}}

这样可以正确显示 pdf,但是当文件名带有下划线(例如test_file.pdf)时,会出现错误Missing $ inserted,文件名无法正确显示。我该如何修复这个问题?

答案1

verbatim,例如\verb,不能用作另一个命令的参数。

你似乎需要的只是

\texttt{\detokenize{#1}}

因此下划线就可以打印了:

\newcommand{\pdf}[1]{%
  \includepdf[
    scale = 0.7,
    pagecommand = \texttt{\detokenize{#1}},
  ]{#1}%
}

相关内容