使用 ulem 和 hyperref 时,章节标题中的自动换行功能失效

使用 ulem 和 hyperref 时,章节标题中的自动换行功能失效

我正在尝试使用该ulem包来强调章节标题,同时仍然能够自动换行:

\documentclass{scrartcl} 
\usepackage[normalem]{ulem}
\begin{document}
    \addtokomafont{section}{\uline}
    \section{A section title so long that it causes a line break. A section title so long that it causes a line break.}
\end{document}

这就像预期的那样。一旦我添加了hyperref包,自动换行似乎就被禁用了,例如

\documentclass{scrartcl} 
\usepackage[normalem]{ulem}
\usepackage{hyperref}
\begin{document}
    \addtokomafont{section}{\uline}
    \section{A section title so long that it causes a line break. A section title so long that it causes a line break.}
\end{document}

产生章节标题的超满行。

如果删除,\addtokomafont{section}{\uline}换行符又会回来,但当然不再有下划线了......

如何实现启用自动换行的下划线章节标题?

注意:我知道不应该在章节标题中使用下划线,但这不是我的决定。

注2:对于那些抱怨使用下划线的人:如果我使用删除线\sout而不是,也会出现此问题\uline,这在文档的编辑过程中绝对有用。

答案1

这要求所有章节标题都使用可选参数,但至少可以满足您的要求。

\documentclass{scrartcl}
\usepackage[normalem]{ulem}
\usepackage{hyperref}

\renewcommand\othersectionlevelsformat[3]{%
  \ifnum\pdfstrcmp{#3}{\thesection}=0
    \uline{#3\autodot\enskip}%
  \else
    #3\autodot\enskip
  \fi
}

\begin{document}

\section
 [A section title so long that it causes a line break.
  A section title so long that it causes a line break.]
 {\uline{A section title so long that it causes a line break.
  A section title so long that it causes a line break.}}

\subsection{Whatever}

\end{document}

必须使用一些技巧来为章节编号加下划线,但不要对小节执行相同的操作。

在此处输入图片描述

答案2

\uline在标题本身中使用可选参数和:

\documentclass{scrartcl} 
\usepackage[normalem]{ulem}
\usepackage{hyperref}
\begin{document}
    \section[A section title so long that it causes a line break. A section title so long that it causes a line break.]
    {\uline{A section title so long that it causes a line break. A section title so long that it causes a line break.}}
\end{document}

相关内容