\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{soulutf8}
\usepackage[unicode]{hyperref}
\begin{document}
\section{\ul{Introduction}}
\end{document}
我试图使用soul
(soulutf8
准确地说是) 为我的节标题加下划线。但是当我也导入时hyperref
,我得到了 100 多个错误:
Use of \SOUL@n doesn't match its definition.
Use of \HyPsd@RemoveMask doesn't match its definition.
Undefined control sequence. \HyPsd@ProtectSpaces ...d@RemoveMask #1\HyPsd@End
Use of \HyPsd@RemoveMask doesn't match its definition.\Hy@temp@A #1#2->\define@key
Argument of \Hy@temp@A has an extra }.
Paragraph ended before \Hy@temp@A was complete.
列表还在继续。如果我尝试为常规文本添加下划线,它会起作用,但对于节标题则不起作用。如果我不导入,它也会起作用hyperref
。
这里的问题是什么?如何解决?
答案1
部分文本也用于书签中,为此它被扩展,并且像 \ul 这样的复杂命令可能会出错。您可以使用 \textorpdfstring 提供特定的书签文本。
当前的 LaTeX 不需要 inputenc 和 unicode。无论如何,现在两者都是默认的。
\documentclass{article}
\usepackage{soulutf8}
\usepackage{hyperref}
\begin{document}
\section{\texorpdfstring{\ul{Introduction}}{Introduction}}
\end{document}
如果你经常使用 \ul,你也可以禁用它:
\documentclass{article}
\usepackage{soulutf8}
\usepackage{hyperref}
\pdfstringdefDisableCommands{\def\ul#1{#1}}
\begin{document}
\section{\ul{Introduction}}
\end{document}