现有的文档代码如下:
\documentclass[12pt, final, a4paper]{article}
\usepackage[backend=biber,style=authoryear-icomp,sorting=nyt,isbn=false,doi=true,dashed=false,maxbibnames=99,uniquename=init,giveninits]{biblatex}
\addbibresource{referenser.bib}
\begin{document}
Here is one sentence.\cite{Knuth:ct-a}
Here is another sentence.\cite{noauthor_solcell_2020}
\printbibliography
\end{document}
.bib 文件代码如下:
@Book{Knuth:ct-a,
author = "Donald E. Knuth",
title = "The {\TeX}book",
publisher = "Addison-Wesley",
year = "1986",
volume = "A",
series = "Computers and Typesetting",
pages = "ix + 483",
}
@online{noauthor_solcell_2020,
titleaddon = {Nationalencyklopedin},
title = {solcell},
url = {https://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/solcell},
urldate = {2020-04-13},
date = {2020}
}
截至目前,它打印出:
当没有作者时,如何让它打印出journaltitle
/而不是标题?titleaddon
编辑:
以下是修改后使用哈佛引用代替默认引用的完整代码:
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear-icomp,sorting=nyc,isbn=false,doi=true,dashed=false,maxbibnames=99,uniquename=init,giveninits]{biblatex}
\addbibresource{references.bib}
\DeclareFieldFormat[article]{title}{#1}
\renewbibmacro{in:}{}
\renewcommand*{\finalnamedelim}{\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}\addspace\&\space}
\DefineBibliographyStrings{swedish}{andothers={et\addabbrvspace al\adddot}}
\newcommand{\mkbibnodate}{u\adddot å\adddot}
\AtEveryCitekey{\iffieldundef{year}{\restorefield{labelyear}{\mkbibnodate}}{}}
\DeclareFieldFormat{urldate}{\mkbibbrackets{#1}}
\NewBibliographyString{available}
\DefineBibliographyStrings{swedish}{available={Tillgänglig}}
\DeclareFieldFormat{url}{\bibstring{available}\addcolon\space\url{#1}}
\DeclareFieldFormat[article]{volume}{vol. #1}
\renewbibmacro*{volume+number+eid}{\setunit{\addcomma\space}\printfield{volume}\setunit*{\addnbspace}\printfield{number}\setunit{\addcomma\space}\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\DeclareFieldFormat[article]{pages}{ss. #1 \adddot}
\DeclareNameAlias{sortname}{family-given}
\renewcommand*{\bibfont}{\footnotesize}
\DeclareSortingTemplate{nyc}{\sort{\field{presort}}\sort[final]{\field{sortkey}}\sort{\field{sortname}\field{author}\field{editor}\field{translator}\field{journaltitle}\field{sorttitle}\field{title}}\sort{\field{sortyear}\field{year}}\sort{\citeorder}}
我可以实现一些代码,从没有作者时默认的 URL创建一个titleaddon
或label
另一个吗?由于所有 URL 都有 www.websitename.xxx,是否有一些命令可以让除两个点之间的内容之外的所有内容消失?如果没有提供作者,是否有某种方法可以重新定义?author
author
由于我不完全理解上面的代码中发生了什么,您能否演示一下将这些更改放在哪里才是安全的,以使其正常工作?
提前致谢!/亚历山大
答案1
为什么这些问题可能很难回答。通常,答案取决于常见的(观察到的)做法或传统。但对于这种不太常见的极端情况,通常直接且不太有帮助的答案是:因为开发人员或向开发人员询问此功能的人认为这是有用的行为。
biblatex
在没有作者/编辑/... 时需要显示一些内容,因为它不能只显示年份。 是title
显而易见的选择,因为大多数条目都应该有标题,而且标题很有可能是相当独特的。(选择journaltitle
或titleaddon
似乎不太有希望,因为并非所有条目都会有一个标题,而且journaltitle
不能合理地期望 s 是唯一的。)所以选择并不是完全不合理的。APA 风格似乎遵循结构上类似的方法。
在这种情况下,biblatex
您可以为该领域的作者/编辑/……提出后备建议label
。例如
@online{noauthor_solcell_2020,
label = {Nationalencyklopedin},
titleaddon = {Nationalencyklopedin},
title = {solcell},
url = {https://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/solcell},
urldate = {2020-04-13},
date = {2020},
}
不过,我认为在这里“升级”Nationalencyklopedin
到author
(或至少editor
)是完全没问题的。不仅个人可以成为作者,法人实体也可以成为作者,只要记住如果法人实体的名称由多个单词组成,请用括号括起来(在书目条目的“作者”字段中使用“公司作者”(完整拼写出姓名))
@online{noauthor_solcell_2020,
author = {Nationalencyklopedin},
title = {solcell},
url = {https://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/solcell},
urldate = {2020-04-13},
date = {2020},
}
短暂点击文章信息在 https://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/solcell揭示
梅德韦尔坎德
达格·西格德、拉尔斯·斯托尔特
所以可能
@online{noauthor_solcell_2020,
author = {Dag Sigurd and Lars Stolt},
title = {solcell},
titleaddon = {Nationalencyklopedin},
url = {https://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/solcell},
urldate = {2020-04-13},
date = {2020},
}
也是一个有效的替代方案。
最后,在这种情况下,可以biblatex
选择 而titleaddon
不是title
。在生成 时做出决定labeltitle
。 的默认指令labeltitle
是
\DeclareLabeltitle{%
\field{shorttitle}
\field{title}
\field{maintitle}
}
但你可以把它读成
\DeclareLabeltitle{%
\field{titleaddon}
\field{shorttitle}
\field{title}
\field{maintitle}
}
titleaddon
更喜欢title
……