\includegraphics
无法处理包含多个点的文件名,将文件名与扩展名分开。显然,它使用第一个点之后的所有内容作为扩展名,然后,当然,抱怨未知的图形扩展名。
这很烦人,因为我经常有包含参数值的文件名,例如plot_a0.4_b0.6.pdf
。
有没有办法让 LaTeX 仅将最后一个点后面的字符串解释为扩展名?
答案1
您可以使用 屏蔽 TeX 标记扫描器中的其他点,从而隐藏它们{ }
,即:
\includegraphics{{plot_a0.4_b0.6}.pdf}
工作正常。
请注意,也可以删除扩展名,然后使用默认扩展名列表。请参阅graphicx
手册中了解更多信息。如果要执行此操作,您需要对文件名进行双重分组,这样与参数的文件名一起构成了三个文件名:
\includegraphics{{{plot_a0.4_b0.6}}}
答案2
您可以使用包grffile
带有选项multidot
。
答案3
实际上,支持此类文件名是 的初始设计规范的一部分graphicx
。文件类型默认来自扩展名,但对于这种情况,有一个类型键,因此您可以选择type=eps
或type=bmp
或任何需要的内容。
(从标记为重复的问题中复制答案)
例如,为了告诉 latex 它是 eps 类型以及文件本身使用的扩展名并找到边界框,您可以使用:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=5cm,type=eps,ext=.1.eps,read=.1.eps]{example}
\end{document}
这包括example.1.eps
使用 xelatex、或 latex/dvips 等。
答案4
虽然该问题针对一般情况进行了回答 - 我经常遇到这样一种情况,即我有一些具有常量(不变)但不标准扩展名的文件;并且我想pdflatex
在批处理脚本上下文中“按原样”使用这些文件作为输入(这意味着,我不想在 Latex 代码或批处理代码中编写任何与文件名相关的解析逻辑)。
例如,通常\includegraphics{mydir/file01.csv_.pdf}
会失败:
! LaTeX Error: Unknown graphics extension: .csv_.pdf.
有一件事是可行的,按照答案@DavidCarlisle:
\includegraphics[ext=.csv_.pdf,type=pdf,read=*]{mydir/file01}
...但这需要我从文件名中去除扩展名,所以我必须在某处引入文件名解析逻辑。
然而,对我来说真正有效的是使用\DeclareGraphicsRule{ext}{type}{read-file}{command}
(见grfguide.pdf:'graphics' 包中的软件包):
% preamble:
\DeclareGraphicsRule{.csv_.pdf}{pdf}{*}{}
% ...
\begin{document}
% ...
\includegraphics{mydir/file01.csv_.pdf}
... 这似乎工作正常,无需对 的文件名参数进行任何更改\includegraphics
。请注意,command
参数可以留空(否则用于系统转换),read-file
我们从哪里读取大小/边界框信息:由于 是.csv_.pdf
一个.pdf
合适的文件,*
我们只需说 - 从与声明的扩展名匹配的同一文件中读取大小。