使用 getfiledate 包在文件名中加下划线

使用 getfiledate 包在文件名中加下划线

我正在尝试使用该getfiledate包来CTAN获取建议的最后文件修改日期。

我已经正确导入了该包并使用另一个文件进行了测试,该文件已命名table/classe.tex并且运行良好。

当按照以下方式测试时,我收到错误

\getfiledate{tables/classification_Full.tex}

PS:当文件不存在时,错误会按预期正确显示。

答案1

打印文件名时会出现此问题。

如果你没有特殊需求(例如文件名中的宏),最简单的解决方法是

\getfiledate{\detokenize{tables/classification_Full.tex}}

否则,必须采用不同的方式制作字符串:

\begin{filecontents*}{clifte_test.tex}
Hello
\end{filecontents*}

\documentclass{article}
\usepackage{getfiledate}

\makeatletter
\def\gfd@prefix@a#1{%
  \ifcsempty{gfd@marker}{}{\gfd@marker@a}%
  \begingroup\edef\x{\endgroup
    \unexpanded{\gfd@prefix\space\textcolor{\gfd@filenamecolor}}%
    {\noexpand\ttfamily\noexpand\detokenize{#1}}%
    \unexpanded{\space\gfd@postfix\space}%
  }\x
}
\makeatother

\begin{document}

\getfiledate{clifte_test.tex}

\newcommand{\MYPREFIX}{clifte}% just to see macros can be used
\getfiledate{\MYPREFIX_test.tex}

\end{document}

我添加了\noexpand\ttfamily,这样文件名就会以等宽字体打印(原始定义中并非如此)。如果您不想要等宽字体,请删除这两个标记;但是,如果您想要,请记住这样做,\usepackage[T1]{fontenc}否则下划线将不会被打印(而是会出现一个点)。如果您使用较短的解决方法(并且文件名中没有宏),情况也是如此。

在此处输入图片描述

相关内容