如何避免文件名中自动出现 .tex 扩展名?

如何避免文件名中自动出现 .tex 扩展名?

我的情况有点不幸,因为我自动准备文件的方式,我最终得到了一个要附加的文件,但还有另一个同名但以扩展名结尾的文件.tex。似乎在 TeX 中引用文件时,总是优先使用扩展名的文件.tex。例如:

如果我有文件example.cpp.texexample.cpp(没有.tex扩展名),那么

\documentclass{article}
\usepackage{attachfile}
\begin{document}
\textattachfile{example.cpp}{link}
\end{document}

attachfile将附加example.cpp.tex而不是example.cpp。这似乎也适用于许多 LaTeX 命令,例如\input\includeembedfile

我如何强制使用指定的文件而不是.tex通常或特别终止的文件\attachfile

(注意:问题不在于双重扩展名;文件example和也会出现意外结果example.tex。)

答案1

据我所知,没有办法解决这个问题。

TeX 如何处理包含异常点数的文件(其中“异常”是任何不等于 1 的数字)是相当难以预测的,并且随着时间的推移也发生了变化。在 miktex 2.4 中,例如\input{file.cfg}会先尝试file.cfg然后file.cfg.tex,在 miktex 2.5 中它只尝试file.cfg,在当前的 2.9 中它先尝试file.cfg.tex然后file.cfg

我唯一能给出的建议是:尽量避免在 TeX 中使用多个点。

答案2

如果这些文件是自动生成的,那么我建议使用一些正则表达式来消除文件的歧义。显然,根据文件的自动命名方案,您可能需要更改模式,但这应该是相当通用的。

rename 's/\.tex/-tex.tex/' *.tex

这会将每个example.tex文件重命名为example-tex.tex。现在执行的操作\input{example}将输入example,而不是example-tex.tex

好的。虽然有点丑陋,但还是可以的。如果文件实际上是这样的example.cpp.tex,那么不那么丑陋的重命名将是:

rename 's/\.cpp\.tex/-cpp.tex/' *.tex

这需要一个类似 UNIX 的终端或类似的东西赛格威. 如果能在评论中提示与 Windows 原生等效的正则表达式批处理文件重命名程序,我们将不胜感激。

相关内容