我目前正在使用该hyperref
软件包,目前收到很多错误消息。目前所有章节和部分标题都出现同样的错误。我决定尝试制作一个最小示例,目前:
\documentclass{amsbook}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage[dvipsnames,usenames]{color}
\begin{document}
\pagenumbering{roman}
\chapter{Preface}
\mainmatter
\pagenumbering{arabic}
\part{The}
\end{document}
向我发出以下警告:
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) \kern 5.0pt
(hyperref) replaced by space on input line 18.
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing '\noindent' on input line 18.
这是软件包的错误hyperref
还是因为我没有正确设置?我该如何修复这个问题或让警告消息静音?
答案1
这其实不是一个错误,而是一个无害的“功能”。你可以在书签准备期间禁用有问题的命令来解决这个问题:
\documentclass{amsbook}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[dvipsnames,usenames]{color}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
\let\enspace\empty % this causes the warning for \kern
\let\noindent\empty % this causes the warning for \indent
}
\begin{document}
\frontmatter
\chapter{Preface}
\mainmatter
\part{The}
\end{document}
该宏的\pdfstringdefDisableCommand
目的正是:为书签中没有意义的命令添加定义。几个命令已被重新定义为安全版本(例如\<space>
),但如果包含所有能想到的命令,编译速度会变慢。因此,只重新定义最常见的命令,其他命令可以在需要时添加。
另外,请注意,文档的前面部分\frontmatter
应优先使用。后面\pagenumbering{roman}
不需要。\pagenumbering{arabic}
\mainmatter