我想获得最准确的引文http://link.springer.com/book/10.1007/978-3-642-29099-2使用 biblatex+biber。但是,无论我尝试哪种输入类型,我得到的要么是 ISBN,要么是 ISSN,而我希望同时得到这两种类型。到目前为止,最好的近似值是使用 实现的book
:
\documentclass{article}
\pagestyle{empty}
\usepackage[USenglish,ngerman]{babel}
\usepackage[backend=biber,style=alphabetic,sortcites=true,maxnames=99,useprefix=true,dateabbrev=true,autolang=other,abbreviate=false]{biblatex}%%% this line stays as it is
\usepackage{filecontents}
\begin{filecontents*}{mwe.bib}
@string{spvl = "Sprin\-ger Ver\-lag"}
@book{Geisberger_Broy_-_agendaCPS,
series={acatech STUDIE},
title={agendaCPS},
subtitle={Integrierte Forschungsagenda \foreignlanguage{USenglish}{cyber-physical systems}},
author={Eva Geisberger and Manfred Broy},
date={2012-10-10},
publisher=spvl,
isbn={978-3-642-29098-5},
doi={10.1007/978-3-642-29099-2},
pagetotal=297,
note={\mkbibacro{\foreignlanguage{USenglish}{eBook ISBN}}: 978-3-642-29099-2. \mkbibacro{\foreignlanguage{USenglish}{ISSN}}: 2192-6174. \mkbibacro{\foreignlanguage{USenglish}{Series E-ISSN}}: 2193-8962},
langid={ngerman}}
\end{filecontents*}
\addbibresource{mwe.bib}
\begin{document}
\cite{Geisberger_Broy_-_agendaCPS}
\printbibliography
\end{document}
将其输入到循环中pdflatex mwe && biber --isbn-normalise mwe
,我们得到
如您所见,源代码中包含了相当多的内容note
(我不喜欢;我更希望有issn={2192-6174}
,也许在线 ISBN 和在线 ISSN 也类似),“电子书”和“Series E-ISSN”在 PDF 中以小写字母打印(与出版商的网页相反,因此,大写字母的差异消失了),并且 ISBN 与电子书 ISBN 相差太远(而将它们移近是合乎逻辑的)。有没有更好的方法?(是否可以修改book
或periodical
条目样式以同时包含 ISBN 和 ISSN(最好也包含它们的在线版本),或者甚至基于这两种条目样式创建一种新的自定义条目样式来解决缺陷?)
顺便问一下,为什么我们会在日志文件中收到“包 biblatex 警告:不支持语言‘usenglish’。”?
答案1
这里似乎有三个问题。我将反向回答它们,以节省代码到最后。
- 如何才能让
book
条目显示issn
字段? - 在一个来源中显示多个版本的元数据的最佳方法是什么?
- Biblatex 为什么会发出警告
usenglish
?
第三个问题必须由其他人来回答,因为 Biblatex做在某些情况下,它似乎usenglish
通过自动跳转回 来加载american
,但它仍然会发出警告。(顺便说一句,用 替换所有提及的内容usenglish
会american
消除这些警告。)
第二个问题也许最好用另一个问题来回答:在一个来源中包含多个版本的元数据是一个好主意吗?您在问题开始时提到您想要包含最准确的来源引文,但您的参考书目理想情况下应该反映您引用的来源。一本书的电子版和印刷版是不同的版本。如果您没有参考两者或者它们之间没有根本区别,那么额外的数据可能没有必要。如果您引用两者是因为它们之间存在一些根本区别,那么您最好制作两个不同的书目条目,以便您可以区分在特定时刻引用哪一个。如果您为了完整性而包含数据,您可能仍会制作两个条目,然后使用字段引用第二版本的简化版本related
(见下文)。
第一个问题需要重新定义条目类型的书目驱动程序book
。默认情况下,alphabetic.bbx
不会关注issn
书籍的字段,就像它忽略isbn
文章的字段一样。但引用卷的印刷系列可能是合理的,因此您可以复制书目驱动程序alphabetic.bbx
(实际上在中找到standard.bbx
)并插入引用该字段的额外行issn
。此重新定义应出现在文档的序言中:
\documentclass{article}
\pagestyle{empty}
\usepackage[USenglish,ngerman]{babel}
\usepackage[backend=biber,style=alphabetic,sortcites=true,maxnames=99,useprefix=true,dateabbrev=true,autolang=other,abbreviate=false]{biblatex}%%% this line stays as it is
\usepackage{filecontents}
\begin{filecontents*}{mwe.bib}
@string{spvl = "Sprin\-ger Ver\-lag"}
@book{Geisberger_Broy_-_agendaCPS_print,
title={agendaCPS},
author={Geisberger and Broy},
isbn={978-3-642-29098-5},
issn={2192-6174},
langid={ngerman}}
@book{Geisberger_Broy_-_agendaCPS,
series={acatech STUDIE},
title={agendaCPS},
subtitle={Integrierte Forschungsagenda \foreignlanguage{usenglish}{cyber-physical systems}},
author={Eva Geisberger and Manfred Broy},
date={2012-10-10},
publisher=spvl,
isbn={978-3-642-29099-2},
issn={2193-8962},
doi={10.1007/978-3-642-29099-2},
pagetotal=297,
langid={ngerman},
related={Geisberger_Broy_-_agendaCPS_print},
relatedtype={reprintof}}
\end{filecontents*}
\addbibresource{mwe.bib}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}%
\newunit
\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\begin{document}
\cite{Geisberger_Broy_-_agendaCPS}
\printbibliography
\end{document}
请注意,我简化了印刷版的条目,该条目在related
电子版字段中引用。排版后,PDF 如下所示:
最好将“Reprint of”(“Nachdruck von”)替换为“E-print of”。通过创建一个 bibstring 并reprintof
用新的 bibstring 进行更改来实现此目的。