列出名称/路径中带有下划线的文件

列出名称/路径中带有下划线的文件

我正在用 LaTeX 写一份报告,需要列出一些源代码。其中一个文件的路径/名称中有一些下划线。编译以下行时:

\lstinputlisting[label=source_code,caption=test_file.c]{abcd/test_file.c}

我收到以下错误:

! 软件包清单错误:文件“abcd/test\unhbox \voidb@x \penalty \@M \hskip \ z@skip \unhbox \voidb@x \kern .06em\vbox {\hrule width.3em}\discretionary {-}{} {}\penalty \@M \hskip \z@skip file(.c)”未找到。

下划线显然没有得到正确处理,但到目前为止我还没能找到如何纠正它(尝试用“\_”转义它)。有人知道如何解决这个问题吗?

测试代码(在最小版本中有效,使用“下划线”包时停止工作):

% Declarations
\documentclass[a4paper, 11pt,twoside]{article}
\usepackage[utf8x]{inputenc} 
\usepackage[french]{babel}
%\usepackage{underscore}

% Code listing
\usepackage{listings}

% Begin document
\begin{document}
\pagestyle{empty}

Listing of test\_file.c :
\lstinputlisting{abcd/test_file.c}

\end{document}

回答

当您的文本中有大量下划线需要转义时,“下划线”包可以帮助您,但您必须小心文件名、引用或参考标签:

跳过和惩罚会破坏任何使用下划线字符的字距调整(当使用字符时)。但是,EC 字体中似乎没有太多这样的字距调整,而且从来没有任何使用规则的字距调整。您必须避免在文件名和引用或引用标签中使用“_”,或者您必须使用 babel 包及其活动字符控件,或者您必须提供 [strings] 选项,该选项会尝试重新定义几个命令(并且可能无法完美运行)。即使没有 [strings] 选项或 babel,您也可以偶尔使用下划线,例如:“\include{file\string_name}”。

来源

答案1

转义参数中的下划线caption,但不是在强制论点中:

lstinputlisting[label=source_code,caption=test\_file.c]{abcd/test_file.c}
%                                            ^^^^^             ^^^^^

相关内容