使用带有 Unicode 字符的 endfloat 时出错

使用带有 Unicode 字符的 endfloat 时出错

我对 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}

相关内容