自己的 bibstyle 中 bib 中的 URL 换行

自己的 bibstyle 中 bib 中的 URL 换行

我必须在我的论文中使用自己的 bibstyle,但是在处理较长的 URL 时遇到了一些麻烦,因为这些 URL 在行末无法正确断开。

这是我的 MWE:

\documentclass{scrreprt}

\usepackage[
        citestyle=authoryear-comp,
        bibstyle=ownstyle,
        firstinits=true,
        terseinits=true,
        dashed=false,
        backend=biber,
        isbn=false,
        url=true,
        maxnames=2,
        maxbibnames=99
    ]{biblatex} 
\addbibresource{lit.bib}

\begin{document}

Plain text \cite{Name}.

\printbibliography

\end{document}

这是我的 lit.bib 文件

@misc{Name,
 author = {Author},
 editor = {Editor},
 title = {{title}},
 url = {http://www.asd.org/text-text-text/texttexttexttext-texttexttext-texttexttext-text-text-texttexttext-texttexttext},
 urldate = {2015-01-08},
 urltime = {17:21}
}

这是我自己的小胸围风格

\ProvidesFile{heidelberg.bbx}
[\abx@bbxid]

\RequireBibliographyStyle{authoryear}

\renewcommand*{\bibsetup}{\raggedright}

\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{urltime}

\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{urltime}{#1}
\DeclareFieldFormat{urldate}{%
  \iffieldundef{urlday}
    {}
    {\stripzeros{\thefield{urlday}}\adddot}%
  \iffieldundef{urlmonth}
    {}
    {\stripzeros{\thefield{urlmonth}}\adddot}%
  \printfield{urlyear}%
}

\renewbibmacro{url+urldate}{%
    \iffieldundef{url}{}{%
        \printtext{\newline[Online im Internet:]}%
        \addspace%
        \printtext{URL:}%
        \addspace%
        \printfield{url}
        \printtext[brackets]{%
            \printtext{Stand:}%
            \addspace%
            \printurldate\addcomma\addspace
            \printfield{urltime}%
        }%
    }%
}

它在 ATM 上的样子如下: enter image description here

它已经超出了边缘。

另一个 URL 如下所示:

enter image description here

URL 应紧接着“URL:”开始,并在“/”或“-”之前有一个换行符。

我尝试了各种示例,但到目前为止对我都不起作用。

答案1

为了获得更好的带连字符的 URL,你可以url使用以下行加载包:

\usepackage[hyphens]{url}

您给出的代码中有几个错误。我在以下 MWE 中更正了它们。请参阅代码中的注释。< =======标记主要更改。

如果您使用自己的样式,则必须为其使用一个名称。我使用了文件ownstyle.bbx,因此我(和您也是)必须使用样式名称ownstyle。在您的文件中有一个错误heidelberg.bbx,我猜您复制了部分代码?

套餐filecontents仅用于我的 MWE全部需要的文件放在一起一个可编译的数学方程。

showframe用于可视化生成的打字区域。为了在一个结果页面上显示引用和参考书目,我使用scrartclscrreprt...

因此,有了以下 MWE

\RequirePackage{filecontents} % <=======================================
% < ===== creates bib file
\begin{filecontents*}{\jobname.bib}
@misc{Name,
  author = {Author},
  editor = {Editor},
  title  = {{title}},
  url    = {http://www.asd.org/text-text-text/texttexttexttext-texttexttext-texttexttext-text-text-texttexttext-texttexttext},
  urldate = {2015-01-08},
  urltime = {17:21}
}
\end{filecontents*}

% < ===== creates ownstyle.bbx
\begin{filecontents*}{ownstyle.bbx}
\ProvidesFile{ownstyle.bbx}
[\abx@bbxid]

\RequireBibliographyStyle{authoryear}

\renewcommand*{\bibsetup}{\raggedright}

\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{urltime}

\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{urltime}{#1}
\DeclareFieldFormat{urldate}{%
  \iffieldundef{urlday}
    {}
    {\stripzeros{\thefield{urlday}}\adddot}%
  \iffieldundef{urlmonth}
    {}
    {\stripzeros{\thefield{urlmonth}}\adddot}%
  \printfield{urlyear}%
}

\renewbibmacro{url+urldate}{%
    \iffieldundef{url}{}{%
        \printtext{\newline[Online im Internet:]}%
        \addspace%
        \printtext{URL:}%
        \addspace%
        \printfield{url}
        \printtext[brackets]{%
            \printtext{Stand:}%
            \addspace%
            \printurldate\addcomma\addspace
            \printfield{urltime}%
        }%
    }%
}
\end{filecontents*}


\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{showframe}

\usepackage[hyphens]{url} % <=============================== better urls
\usepackage{csquotes} % < ============================= to avoid warning
\usepackage[%
  citestyle=authoryear,%-comp
  bibstyle=ownstyle, % <================================================
  backend=biber,
  isbn=false,
  url=true,
  maxnames=2,
  maxbibnames=99
]{biblatex} 
\addbibresource{\jobname.bib} % <=======================================


\begin{document}
Plain text \cite{Name}.
\printbibliography
\end{document}

我得到了你想要的结果:

enter image description here

相关内容