将 unicode/变音符号输入到包选项中

将 unicode/变音符号输入到包选项中

我想为我的图片定义一组新标签,如下所示:

\usepackage{newfloat}
\DeclareFloatingEnvironment[listname={Seznam grafů}]{Graf}

然而,LaTeX 拒绝识别包选项中的“ů”并向我抛出一个错误:

! Package inputenc Error: Keyboard character used is undefined

最小工作示例是这样的:

\documentclass[12pt,a4paper]{article}\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
\usepackage[nottoc]{tocbibind}
\usepackage{newfloat}
\DeclareFloatingEnvironment[listname={Seznam grafů}]{Graf}
\begin{document}

\tableofcontents


\listoffigures
\listofGrafs
\end{document}

第一次编译成功,但第二次编译失败,因为生成的.toc文件有问题(所以这类似于.toc 文件中的特殊字符问题但那里接受的解决方案没有帮助,因为我指定inputenc得足够早)。生成的.toc文件如下:

\select@language {czech}
\contentsline {section}{Seznam obr\'azk\r {u}}{1}
\contentsline {section}{Seznam graf·}{1}

如果我·\r {u}} 替换,下一次编译会顺利进行,并生成带有目录的乳胶文档,但我必须在每次编译之前执行此操作,这并不方便。使用\r{u}如下:

\DeclareFloatingEnvironment[listname={Seznam graf\r{u}}]{Graf}

没有帮助。

更新:此问题现已解决:http://sourceforge.net/p/latex-caption/tickets/22/(截至 2015 年 9 月 16 日,该漏洞应于 2015 年 9 月 20 日上传至 CTAN - 预计需要一段时间才会影响到您的发行版)

答案1

当需要使用时,该newfloat包会做很多事情\edef,至少在某些情况下\protected@edef

您可以通过间接传递来解决这个问题:

\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
\usepackage{lmodern}
\usepackage[nottoc]{tocbibind}
\usepackage{newfloat}
\protected\def\listGrafsname{Seznam grafů}
\DeclareFloatingEnvironment[listname={\listGrafsname}]{Graf}

\begin{document}

\tableofcontents

\listoffigures
\listofGrafs
\end{document}

因此宏\listGrafsname将传递任何\edef未修改的内容。

因为hyperref您必须添加另一条信息:

\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
\usepackage{lmodern}
\usepackage[nottoc]{tocbibind}
\usepackage{newfloat}
\usepackage[unicode]{hyperref}

\protected\def\listGrafsname{Seznam grafů}
\DeclareFloatingEnvironment[listname={\listGrafsname}]{Graf}
\pdfstringdefDisableCommands{\def\listGrafsname{Seznam grafů}}

\begin{document}

\tableofcontents

\listoffigures
\listofGrafs
\end{document}

相关内容