使用具有字母样式的 biblatex,我怎样才能插入换行符(\\ 或 \linebreak)URL 输出之前(目的是减少 URL 中的换行符)?(我使用 url 和 hyperref)
答案1
\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage[style=authoryear,backend=biber,]{biblatex}
\usepackage[colorlinks=true,urlcolor=red!50!black]{hyperref}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{formaturl}{\newline #1}
\newbibmacro*{url+urldate}{%
\printtext[formaturl]{%
\printfield{url}}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\printtext[urldate]{\printurldate}}}
\begin{document}
\cite{ctan}
\printbibliography
\end{document}
您 DeclaredFieldFormat
可以格式化整个 url 和 urldate 字符串。在本例中,我\newline
在输出前面插入了一个。
编辑:
添加printtext
答案2
我发现以下包对于 URL 换行很有用。在前言中,只需将其放在\usepackage{breakurl}
之后的某个位置即可\usepackage{hyperref}
。该\burl
命令已定义,并且默认情况下,该包还会将该\url
命令转换为 的同义词\burl
。
答案3
我认为最干净的解决方案是重新定义相应的字段格式。我会将\space
后面的“URL”替换为,\nobreakspace
而不是明确添加换行符。这允许 TeX 决定换行符是否是最佳解决方案。(我建议设置参考书目,\raggedright
以便在这里给 TeX 更多的回旋余地。)
\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\nobreakspace\url{#1}}
如果你真的想要明确的\newline
,你当然也可以这样做。我仍然会保留,\nobreakspace
以避免“URL”单独占一行。
\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\nobreakspace\url{#1}}
答案4
这是 OP 作为问题的编辑发布的,但它显然是一个答案。
稍微增强一下@Marco 的原始答案:
如果它应该与原始内容完全一样但带有换行符,请使用
\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\space\url{#1}}
\newbibmacro*{url+urldate}{%
\printfield[url]{url}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\printtext[urldate]{\printurldate}}}