这是MWE:
\documentclass{article}
\usepackage{soul}
\usepackage{pdfcomment}
\begin{document}
\section*{\hl{Fine}}
\section{\hl{Error}}
\end{document}
显示以下错误信息:
! Use of \SOUL@n doesn't match its definition.
\SOUL@ulunderline #1->{\setbox \z@ \hbox {#1}
\dimen@ =\wd \z@ \dimen@i =\SOU...
l.10 \section{\hl{Error}}
?
未编号部分工作正常。此外,当我删除包时pdfcomment
,一切正常。
答案1
pdfcomment
加载hyperref
,hyperref
不知道如何处理\hl
书签,然后出现错误。使用例如\texorpdfstring
为书签提供替代文本:
\documentclass{article}
\usepackage{soul}
\usepackage{hyperref}
\begin{document}
\section*{\hl{Fine}}
%\section{\hl{Error}}
\section{\texorpdfstring{\hl{Fine}}{Fine}}
\end{document}
另外,你可以制作受\hl
保护的
\usepackage{etoolbox}
\AtBeginDocument{\robustify\hl}
然后hyperref
将以警告为代价放弃该命令:
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `\hl' on input line 74.
答案2
答案3
快速浏览一下pdfcomment
文档就会发现,它会加载soulpos
,然后又会加载soulutf8
,这是一个soul
替代。因此,您应该检查是否只使用 加载 就缺少了某些功能pdfcomment
。
答案4
pdfcomment
以与 不兼容的方式重新定义命令soul
。如果您能够使用LuaLaTeX
,这里有一个可能的解决方案(改用lua-ul
):
\documentclass{article}
\usepackage{xcolor,luacolor,lua-ul}
\LuaULSetHighLightColor{yellow}
\usepackage{pdfcomment}
\begin{document}
\section*{\highLight{Fine}}
\section{\highLight{Error}}
\end{document}
请注意我必须在代码中如何更改,因为灵魂兼容模式也失败了\hl
。\highLight