使用 biblatex/alphabetic 在 URL 前换行

使用 biblatex/alphabetic 在 URL 前换行

使用具有字母样式的 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}}}

相关内容