![使用 ulem 和 hyperref 时,章节标题中的自动换行功能失效](https://linux22.com/image/293096/%E4%BD%BF%E7%94%A8%20ulem%20%E5%92%8C%20hyperref%20%E6%97%B6%EF%BC%8C%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E4%B8%AD%E7%9A%84%E8%87%AA%E5%8A%A8%E6%8D%A2%E8%A1%8C%E5%8A%9F%E8%83%BD%E5%A4%B1%E6%95%88.png)
我正在尝试使用该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}