我必须在我的论文中使用自己的 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 上的样子如下:
它已经超出了边缘。
另一个 URL 如下所示:
URL 应紧接着“URL:”开始,并在“/”或“-”之前有一个换行符。
我尝试了各种示例,但到目前为止对我都不起作用。
答案1
为了获得更好的带连字符的 URL,你可以url
使用以下行加载包:
\usepackage[hyphens]{url}
您给出的代码中有几个错误。我在以下 MWE 中更正了它们。请参阅代码中的注释。< =======
标记主要更改。
如果您使用自己的样式,则必须为其使用一个名称。我使用了文件ownstyle.bbx
,因此我(和您也是)必须使用样式名称ownstyle
。在您的文件中有一个错误heidelberg.bbx
,我猜您复制了部分代码?
套餐filecontents
仅用于我的 MWE全部需要的文件放在一起一个可编译的数学方程。
包showframe
用于可视化生成的打字区域。为了在一个结果页面上显示引用和参考书目,我使用scrartcl
了scrreprt
...
因此,有了以下 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}
我得到了你想要的结果: