我的情况有点不幸,因为我自动准备文件的方式,我最终得到了一个要附加的文件,但还有另一个同名但以扩展名结尾的文件.tex
。似乎在 TeX 中引用文件时,总是优先使用扩展名的文件.tex
。例如:
如果我有文件example.cpp.tex
和example.cpp
(没有.tex
扩展名),那么
\documentclass{article}
\usepackage{attachfile}
\begin{document}
\textattachfile{example.cpp}{link}
\end{document}
attachfile
将附加example.cpp.tex
而不是example.cpp
。这似乎也适用于许多 LaTeX 命令,例如\input
、\include
等embedfile
。
我如何强制使用指定的文件而不是.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 原生等效的正则表达式批处理文件重命名程序,我们将不胜感激。