有没有办法控制 url 中断biblatex
?我正在使用ACS 指南上面写着:
笔记:不同的 Web 浏览器会在 URL 的不同位置中断文本。在印刷作品中,如果需要在行末中断 URL,则应在冒号或双斜线之后中断;在单斜线、波浪号、句号、逗号、连字符、下划线、问号、数字符号或百分号之前中断;或在等号或与号之前或之后中断。
我还使用该url
包排版 URL,字体与文本相同。我阅读了包文档,对宏\UrlBreaks
和有点困惑\UrlBigBreaks
,但据我所知,这些只能用于在列出的字符后允许中断,而不能在之前中断,这是样式指南的一些要求(我个人肯定不喜欢在句号前中断!)。有办法吗?
答案1
我认为这应该能满足您的要求。它定义了一种新样式\urlstyle{acs}
,重新定义\UrlBreaks
并\UrlSpecials
符合您的规则。
有一个小问题。它更倾向于在 和 之间而不是 之间中断:
,//
但//
如果您在//
其他地方,则有可能在 之间中断。我尝试修复此问题,但无法使其工作。不过,我不认为这种情况会在实际示例中发生。
平均能量损失
\documentclass{article}
\usepackage{url}
\makeatletter
\def\url@acsstyle{%
\def\UrlBreaks{\do\/}%
\def\UrlSpecials{%
\do\~{\penalty\UrlBreakPenalty\mathchar`~}%
\do\.{\penalty\UrlBreakPenalty\mathchar`.}%
\do\,{\penalty\UrlBreakPenalty\mathchar`,}%
\do\-{\penalty\UrlBreakPenalty\mathchar`-}%
\do\_{\penalty\UrlBreakPenalty\mathchar`_}%
\do\?{\penalty\UrlBreakPenalty\mathchar`?}%
\do\#{\penalty\UrlBreakPenalty\mathchar"23}%
\do\%{\Url@percent}%
\do\={\penalty\UrlBreakPenalty\mathchar`=\penalty\UrlBreakPenalty}%
\do\&{\penalty\UrlBreakPenalty\mathchar`&\penalty\UrlBreakPenalty}%
\do\ {\Url@space}\do\^^M{\Url@space}%
\Url@force@Tilde}%
}
\makeatother
\raggedright
\begin{document}
\hsize 5cm
\section*{Default Style}
\url{https://tex.stackexchange.com/questions/477945/control-url-breaking}
\section*{ACS Style}
\urlstyle{acs}
\url{https://tex.stackexchange.com/questions/477945/control-url-breaking}
\end{document}
答案2
您需要三个不同的包,因此请将其包含在您的代码中:
\usepackage{url}
\usepackage{breakurl}
\usepackage[breaklinks]{hyperref}
现在,您只需添加\def\UrlBreaks{\do\/\do-}
是否能够在 a/
或 a之后中断它-
。
例如,如果条目是这样的:
@misc{GartnerNFC,
author = "Clark, Sarah",
howpublished = "nfcworld.com",
month = aug,
note = "Cited July 3rd 2012",
title = "{Gartner’s Hype Cycle places NFC at ‘Peak of Inflated Expectations’}",
url = "http://www.nfcworld.com/2011/08/11/39008/gartner-hype-cycle-places-nfc-at-peak-of-inflated-expectations",
year = "2011"
}
它看起来会像这样:
对于其他选项,请查看url
包文档。