我对 endfloat 包和 unicode 字符有疑问。当我编译以下内容时,一切都按预期工作:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\caption{Ö}
\end{figure}
\end{document}
但是,当我还加载 endfloat 包(\usepackage{endfloat}
)时,出现以下错误消息:
! Package inputenc Error: Unicode char \u8:ÖÖ not set up for use with LaTeX.
这可能是一个错误,但我怀疑我在某个地方犯了错误。我并不是第一个在 endfloat 包中使用特殊字符的人。但是,上面的例子非常简单,我看不出我可能在哪里犯了错误。任何建议都值得赞赏。
编辑:该文件当然是使用 utf-8 编码的。
答案1
大约九个月前,我在 GuIT 论坛上解决了同样的问题,建议提交错误报告:请参阅更改图片位置以查看所有精彩内容。
问题出在哪里?该包在其辅助文件中endfloat
使用了进行写入,而实际上应该使用 。\write
\protected@write
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{endfloat}
% patch \efloat@iwrite to use \protected@write
\makeatletter
\renewcommand\efloat@iwrite[1]{%
\immediate\expandafter\protected@write\csname efloat@post#1\endcsname{}}
\makeatother
\begin{document}
\begin{figure}
\caption{Ö}
\end{figure}
\end{document}