无法在 soul 包中的 \hl 内包含 \url

无法在 soul 包中的 \hl 内包含 \url

我想在一些突出显示的文本中包含一个链接。突出显示当前由灵魂包但以下示例显示它返回了一堆警告并且无法呈现链接:

\documentclass{book}

% Package used for highlighting
\usepackage{soul}

% Link setup
\usepackage[ps2pdf]{hyperref}
\hypersetup{breaklinks=true, colorlinks=true, linkcolor=black, urlcolor=blue}
\usepackage[anythingbreaks]{breakurl}

\begin{document}

Link works here: \url{http://google.co.uk/}

Link within highlight fails: \hl{ Highlight \url{http://google.co.uk/} link }

\end{document}

包 hyperref 警告:重新运行以获取 /PageLabels 条目。

! 未定义的控制序列。l.14 当链接在突出显示内时抱怨:\hl {突出显示链接\url{http...

知道如何让链接出现在\hl命令中吗?

答案1

\url命令很脆弱。以下内容有效。

\documentclass{book}

% Package used for highlighting
\usepackage{soul}

% Link setup
\usepackage{hyperref}
\hypersetup{breaklinks=true, colorlinks=true, linkcolor=black, urlcolor=blue}
\usepackage[anythingbreaks]{breakurl}

\begin{document}

Link works here: \url{http://google.co.uk/}

Complains when link is within highlight: \hl{ Highlight link \protect\url{http://google.co.uk/} }

\end{document}

答案2

似乎将强健的\hbox命令包裹在命令周围\url可以防止命令的脆弱性url干扰hl命令。这确实意味着 URL 不能在行之间中断,但目前只能这样做,除非有人能找到更好的解决方案。

\documentclass{book}

% Package used for highlighting
\usepackage{soul}

% Link setup
\usepackage[ps2pdf]{hyperref}
\hypersetup{breaklinks=true, colorlinks=true, linkcolor=black, urlcolor=blue}
\usepackage[anythingbreaks]{breakurl}

\begin{document}

Link: \url{http://google.co.uk/}

Link within highlight: \hl{Highlight \hbox{\url{http://google.co.uk/}} link}

\end{document}

相关内容