![\includegraphics 在 Linux 下似乎不区分大小写](https://linux22.com/image/457190/%5Cincludegraphics%20%E5%9C%A8%20Linux%20%E4%B8%8B%E4%BC%BC%E4%B9%8E%E4%B8%8D%E5%8C%BA%E5%88%86%E5%A4%A7%E5%B0%8F%E5%86%99.png)
\includegraphics 似乎没有注意文件名的大小写。这是一个简单的例子:
\documentclass[justified,marginals=raggedright]{tufte-book}
\usepackage{graphics}
\begin{document}
\includegraphics{Simpson}
\end{document}
我在这个目录中有两个文件,一个名为 Simpson.jpeg(一张托马斯·辛普森的照片,因《辛普森规则》而出名,不是荷马·辛普森),另一个名为 simpson.pdf(一张说明辛普森规则的图表)。当我使用 pdflatex 处理上面的 latex 文件时,我在日志中看到以下内容:
<Simpson.pdf, id=4, pagebox=cropbox, 361.35pt x 252.945pt>
File: Simpson.pdf Graphic file (type pdf)
<use Simpson.pdf>
Package pdftex.def Info: Simpson.pdf used on input line 5. on input line 5.
Package pdftex.def Info: Requested size: 361.34912pt x 252.94438pt on input lin
e 5.
没有任何名为 Simpson.pdf 的文件。插入到输出文件中的是 simpson.pdf 中的图表。
我知道我可以通过将 Simpson.jpeg 作为文件名来解决这个问题,但我对 \includegraphics 不区分大小写感到困惑,我担心以后会再次遇到这个问题。
不管怎样,这是在 Linux 下,我最希望区分大小写。如果这是预期的行为,有什么方法可以关闭它吗?
更新:
Marcel Krüger 在下面提供了一个解决方案,但我只想指出几点,以便遇到此问题的人能够从中受益。
首先,我假设 \includegraphics 会首先查找所有可能的扩展名的精确匹配项,然后如果未找到任何匹配项,则查找不区分大小写的匹配项。我还没有进行足够的测试来确定,但看起来它实际上是按相反的顺序执行操作:查找每个可能的扩展名的精确匹配项,然后查找该扩展名的不区分大小写的匹配项,然后转到下一个扩展名并重复。
其次,我认为在日志中报告文件名的方式存在错误。日志应该告诉您它找到的文件的实际名称,而不是不存在文件的虚构名称。根据不区分大小写的搜索的工作方式,可能很难获得真实名称,但最好能修复这个问题。
答案1
在 TeX Live 中,库 kpathsea 用于查找文件,自 2018 年起,如果未找到具有给定名称的文件且区分大小写,则默认情况下它会恢复到不区分大小写的查找。您可以通过将环境变量设置texmf_casefold_search
为或在配置文件中0
添加来禁用此行为。texmf_casefold_search = 0
texmf.cnf