在一些重印本中,增加了序言、介绍等部分。在德文书目中,必须提到这些添加内容。据我所知,风格biblatex-sbl
没有提到这一点,或者?
例如,有这本书
名字,姓氏:历史:贡献。伦敦,1908 年。Ndr.,Lens:Avant,1977 年。
本书中,XYZ 教授添加了介绍。在这种情况下,通常会给出以下注释(在注释和参考书目中):
名字,姓氏:历史:贡献。伦敦,1908 年。Ndr. 由 XYZ 教授作序,Lens:Avant,1977 年。
有人知道我怎么会得到这样的结果吗?我在另一个论坛上问过这个问题,但一个星期以来,我还没有收到任何答复。
我的第二个问题是:重印版的缩写“Ndr.”(德语:Neudruck)非常不典型。是否可以用常见的“ND”代替这个缩写“Ndr.”?
这是我的 MWE:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Name.1908,
author = {Name, Surname},
title = {History},
subtitle = {Contribution},
shorttitle = {History},
location = {Lens},
origlocation = {London},
publisher = {Avant},
origdate = {1908},
date = {1977},
}
\end{filecontents}
\usepackage{polyglossia}
\setmainlanguage[variant=new]{german}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage[style=sbl, backend=biber,
sblfootnotes=false, ibidpage=true,
sorting=nyvt,
url=false, isbn=false, doi=false,
clearlang=false,
uniquename=false]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\null\vfill
Filler text \autocite{Name.1908}.
Filler text \autocite{Name.1908}.
\printbiblist{abbreviations}
\printbibliography
\end{document}
答案1
根据以下评论的新答案
鉴于您下面的评论,重印本与其他任何作品都截然不同biblatex-sbl
,我会以完全不同的方式来做事。
您将看到,注释输出与参考书目输出相同。但对于所有其他条目类型,应保留relatedtype={reprint}
标准行为。biblatex-sbl
平均能量损失
查看评论了解发生了什么。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
% use note for original publication information so it isn't put in parentheses
@book{Familyname.1977,
author = {Familyname, Givenname},
title = {History},
subtitle = {Contribution},
shorttitle = {History},
note = {London, 1908},
related = {Familyname.1977.repr},
relatedtype = {reprint},
}
@book{Familyname.1977.repr,
note = {with an introduction by Prof\adddot\space XYZ},
location = {Lens},
publisher = {Avant},
date = {1977}
}
\end{filecontents}
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage[style=sbl, language=ngerman, sblfootnotes=false,
ibidtracker=constrict, ibidpage=true, sorting=nyvt, url=false, isbn=false,
doi=false, clearlang=false, uniquename=false]{biblatex}
\addbibresource{\jobname.bib}
% Change reprint abbreviation to ND
\DefineBibliographyStrings{ngerman}{%
reprint = {ND}
}
% Put reprint information in parentheses and change beginning punctuation to a
% space
\newcommand*{\begrelateddelimreprint}{\addspace}
\DeclareFieldFormat{related:reprint}{\mkbibparens{#1}}
% Set \newunitpunct to comma and remove parentheses around publication info
\renewbibmacro*{related:reprint}[1]{%
\entrydata*{#1}{%
\usedriver
{\renewbibmacro*{related:init}{}%
\renewcommand*{\newunitpunct}{\addcomma\space}%
\renewbibmacro*{parens+publisher+location+date}{%
\newunit
\usebibmacro{publisher+location+date}}}
{\ifbibliography
{\thefield{entrytype}}
{cite:\thefield{entrytype}}}}}
% use family, given and change \newunitpunct to a point just for related
% entries (I have serious misgivings about this as it seems very
% inconsistent.)
\usepackage{xpatch}
\xpretobibmacro{cite}
{\iffieldequalstr{relatedtype}{reprint}
{\DeclareNameAlias{default}{family-given}%
\renewcommand*{\newunitpunct}{\addperiod\space}}
{}}
{}
{}
\begin{document}
\null\vfill
Filler text \autocite{Familyname.1977}.
Filler text \autocite{Familyname.1977}.
\printbibliography
\end{document}
原始答案
这是部分解决方案,但其中存在一个错误biblatex
。
您的请求并由用英语几乎可以保证一个单独的问题,因为我不确定设置langid
重印信息是否是做到这一点的最佳方式。
我认为设置 bib 条目的最佳方式如下:
@book{Familyname.1977,
author = {Familyname, Givenname},
title = {History},
subtitle = {Contribution},
shorttitle = {History},
location = {London},
date = {1908},
related = {Familyname.1977.repr},
relatedtype = {reprint}
}
@book{Familyname.1977.repr,
introduction = {{Prof\adddot\space XYZ}},
location = {Lens},
publisher = {Avant},
date = {1977},
langid = {american}
}
包含该字段的理论langid
是确保重印本中的字符串以英文打印,但主条目中的字符串以您的主文档语言德语打印。这还需要autolang=other, language=auto
在主biblatex
选项中添加(并添加american
到您的babel
选项中)。问题是这会破坏所有带有的字符串,biblatex-sbl
并且它们都以英文打印。我会尝试找到错误并修复它。同时,我提供了第二个使用该note
字段的 MWE(无论如何这可能是更好的选择)来实现您想要的输出。(在您的 MWE 中,没有看到任何差异,但如果您的书使用editor
而不是author
,您会看到编辑打印出来而不是人力资源) 看https://github.com/dcpurton/biblatex-sbl/issues/106。事实证明,这实际上是 中的一个错误biblatex
。请参阅https://github.com/plk/biblatex/issues/903。
另一个问题是,开箱后无法打印并由因为有一个测试可以确保该title
字段已定义。我们可以通过重新定义宏来解决这个问题,byauthor/byeditor+others/bytranslator+others
如下所示:
\renewbibmacro*{byauthor/byeditor+others/bytranslator+others}{%
\usebibmacro{byauthor}%
\newunit
\usebibmacro{ifbooktitleormaintitle}
{\usebibmacro{byeditor/bytranslator}}
{\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{bytranslator+others}}}
我还没有测试过这个重新定义是否会破坏其他东西(但如果会,那也只会出现在相当不明显的情况下,可能不会影响到你)。我会进一步研究这个问题。
您可以reprint
使用以下方法重新定义字符串\DefineBibliographyStrings
:
\DefineBibliographyStrings{ngerman}{%
reprint = {ND}
}
最后,我建议使用babel
和lualatex
代替polyglossia
,因为它与 配合不佳biblatex
。
因此完整的 MWE 变成:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Familyname.1977,
author = {Familyname, Givenname},
title = {History},
subtitle = {Contribution},
shorttitle = {History},
location = {London},
date = {1908},
related = {Familyname.1977.repr},
relatedtype = {reprint},
langid = {ngerman}
}
@book{Familyname.1977.repr,
introduction = {{Prof\adddot\space XYZ}},
location = {Lens},
publisher = {Avant},
date = {1977},
langid = {american}
}
\end{filecontents}
\usepackage[american,ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage[style=sbl, autolang=other, language=auto, sblfootnotes=false,
ibidpage=true, sorting=nyvt, url=false, isbn=false, doi=false,
clearlang=false, uniquename=false]{biblatex}
\addbibresource{\jobname.bib}
\DefineBibliographyStrings{ngerman}{%
reprint = {ND}
}
\newbibmacro*{byauthor/byeditor+others/bytranslator+others}{%
\usebibmacro{byauthor}%
\newunit
\usebibmacro{ifbooktitleormaintitle}
{\usebibmacro{byeditor/bytranslator}}
{\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{bytranslator+others}}}
\begin{document}
\null\vfill
Filler text \autocite{Familyname.1977}.
Filler text \autocite{Familyname.1977}.
\printbibliography
\end{document}
使用该note
字段的解决方法:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Familyname.1977,
author = {Familyname, Givenname},
title = {History},
subtitle = {Contribution},
shorttitle = {History},
location = {London},
date = {1908},
related = {Familyname.1977.repr},
relatedtype = {reprint},
}
@book{Familyname.1977.repr,
note = {with an \ifbibliography{introduction}{intro\adddot} by Prof\adddot\space XYZ},
location = {Lens},
publisher = {Avant},
date = {1977}
}
\end{filecontents}
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage[style=sbl, sblfootnotes=false, ibidpage=true, sorting=nyvt,
url=false, isbn=false, doi=false, clearlang=false,
uniquename=false]{biblatex}
\addbibresource{\jobname.bib}
\DefineBibliographyStrings{ngerman}{%
reprint = {ND}
}
\renewbibmacro*{byauthor/byeditor+others/bytranslator+others}{%
\usebibmacro{byauthor}%
\newunit
\usebibmacro{ifbooktitleormaintitle}
{\usebibmacro{byeditor/bytranslator}}
{\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{bytranslator+others}}}
\begin{document}
\null\vfill
Filler text \autocite{Familyname.1977}.
Filler text \autocite{Familyname.1977}.
\printbibliography
\end{document}