“永远不要在文件名中使用非 ASCII 字符和空格。永远不要!”
这是我多年来一直告诉我的学生的。但是,如果出于任何原因,迫切需要在文件名中包含带变音符号的图像文件,则grffile
可以使用该软件包。
不幸的是,我无法编译以下示例:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[extendedchars]{grffile}
\begin{document}
\includegraphics{Bäckerstraße}
\end{document}
我在 Windows 7 上使用 MiKTeX(最近更新)。我的 MWE 以 Windows 编码保存。这对我的文件系统上的Cp1252
现有文件同样有效。Bäckerstraße.png
我使用 进行编译pdflatex
。编译没有产生 PDF 输出,日志文件中也没有错误消息。编译停止,命令 shell 中出现错误消息:
pdflatex: Windows API error 1113: F��r das Unicode-Zeichen ist kein zugeordnetes Zeichen in der Mehrbytecodepage vorhanden.
我用 Google 搜索了这个问题,发现 2011 年和 2012 年的一些论坛讨论表明这可能是pdflatex
使用 MiKTeX 的一个普遍问题。
我问的是,MWE 代码中是否存在我的愚蠢错误,或者是否没有机会使用 MiKTeX 运行它。
如果 MWE 中有错误,请告诉我如何更正。但如果这根本无法运行,请不要再浪费时间尝试了。
答案1
由于文件名编码似乎是 UTF-8,因此需要将文件名从 Latin-1 重新编码为 UTF-8。包也支持此功能grffile
:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage[encoding,filenameencoding=utf8]{grffile}
\begin{document}
\includegraphics{Bäckerstraße}
\end{document}
或者,TeX 源可以完全以 UTF-8 编码。
顺便说一句,CP 1252 的完整代码页范围由选项ansinew
或x-cp1252
包提供inputenc
(后一个选项来自包inputenx
,可在那里使用cp1252
)。