根据以下评论的新答案

根据以下评论的新答案

在一些重印本中,增加了序言、介绍等部分。在德文书目中,必须提到这些添加内容。据我所知,风格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}

MWE 输出


原始答案

这是部分解决方案,但其中存在一个错误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}
}

最后,我建议使用babellualatex代替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}

MWE 输出


使用该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}

相关内容