这个问题与“强制换行\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
解决了这个问题。
希望这可以帮助其他人。