强制在 \url 中换行对 biblatex 和 menukeys 不起作用

强制在 \url 中换行对 biblatex 和 menukeys 不起作用

这个问题与“强制换行\url它的答案之一是将hyphens选项传递给 url 包:

\PassOptionsToPackage{hyphens}{url}
\usepackage{hyperref}

由于我有自己的类文件,因此我调整了命令如下:

\PassOptionsToPackage{hyphens}{url}
\RequirePackage{hyperref}

\PassOptionsToPackage{hyphens}{url}但是,我这边的线路发生冲突,我收到此错误消息: Option clash for package url. \let

然后,我尝试用 替换该行\requirePackage[hyphens]{url},但由于hyperref已经隐式定义url,因此出现错误Option clash for package url. \RequirePackage

我甚至尝试了hyperref包选项breaklinks=true,但这没有帮助,据报道后者只适用于斜线,而不是我想要的破折号。

有什么想法吗?可能是什么问题,我需要在哪里寻找?我不明白,其他人报告说上述命令运行正常,而在我这边却不起作用。

答案1

经过一段时间的调试,我终于找到了问题所在,或者实际上是导致该故障的包。我使用的是 BibLaTeX,正如以下最小工作示例所证明的那样,我们必须声明以下行\PassOptionsToPackage{hyphens}{url} BibLaTeX 已声明。

工作示例,链接包在之前声明:

\documentclass[twoside]{report}
\usepackage[margin=2cm]{geometry}
\usepackage{parskip}
\PassOptionsToPackage{hyphens}{url}
\usepackage[backend=biber,sorting=none,alldates=short]{biblatex}
\addbibresource{references.bib}
\usepackage{hyperref}
\begin{document}
Some very long URL: \url{http://subdomain.example.org/thread/Some-Great-Products/A-super-great-product-with-a-dedicated-page/number/322866/highlight/true\#M8821}
\end{document}

不起作用的,链接包在之后声明:

\documentclass[twoside]{report}
\usepackage[margin=2cm]{geometry}
\usepackage{parskip}
\usepackage[backend=biber,sorting=none,alldates=short]{biblatex}
\addbibresource{references.bib}
\PassOptionsToPackage{hyphens}{url}
\usepackage{hyperref}
\begin{document}
Some very long URL: \url{http://subdomain.example.org/thread/Some-Great-Products/A-super-great-product-with-a-dedicated-page/number/322866/highlight/true\#M8821}
\end{document}

\PassOptionsToPackage{hyphens}{url}另外,我使用了 menukeys,我意识到如果 menukeys 在 之前声明,编译就会失败hyperref。 移动menukeys到 之后hyperref解决了这个问题。

希望这可以帮助其他人。

相关内容