使用 hyperref 时无法在 \section 内使用 soulutf8 的下划线

使用 hyperref 时无法在 \section 内使用 soulutf8 的下划线
\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}

相关内容