biblatex-dw:在 xref 条目之前进行特殊格式 @incollection

biblatex-dw:在 xref 条目之前进行特殊格式 @incollection

梅威瑟:

\documentclass{book}
\usepackage[style=authortitle-dw,
edsuper=true,
namefont=smallcaps,
useprefix=true,
ibidemfont=smallcaps,
idemfont=smallcaps,
idembibformat=dash,
shorthandibid=true,
backref=false,
backrefstyle=none,
hyperref=true,
isbn=false,
backend=biber,
citereset=chapter,
edstringincitations=false,
bibencoding=utf8,
mincrossrefs=0]{biblatex}

% ----------- mistake is somewhere in here ------------
%% bilbiography driver to display only shorttitle of referenced collection for incollection items
\DeclareBibliographyDriver{incollection}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{in:}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:full}}
    {\usebibmacro{crossref:label}}
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:extrainfo}}
    {}
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \usebibmacro{finentry}}

\newbibmacro{crossref:full}{%
    \usebibmacro{maintitle+booktitle}%
    \newunit\newblock
    \usebibmacro{event+venue+date}%
    \newunit\newblock
    \usebibmacro{byeditor+others}%
    \newunit\newblock
    \iffieldundef{maintitle}
    {\printfield{volume}%
        \printfield{part}}
    {}%
    \newunit
    \printfield{volumes}%
    \newunit\newblock
    \usebibmacro{series+number}%
    \newunit\newblock
    \printfield{note}%
    \newunit\newblock
    \printlist{organization}%
    \newunit
    \usebibmacro{publisher+location+date}}

\newbibmacro{crossref:label}{%
    \entrydata{\strfield{crossref}}
    {\DeclareNameAlias{labelname}{given-family}%
        \printnames{labelname}%
        \setunit*{\addspace}%
        %\printtext[parens]{\usebibmacro{editorstrg}}%
        \setunit*{\addcomma\space}%
        \printfield[shorttitle]{labeltitle}}}

\newbibmacro{crossref:extrainfo}{%
    \newunit\newblock
    \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
    \newunit\newblock
    \usebibmacro{doi+eprint+url}%
    \newunit\newblock
    \usebibmacro{addendum+pubstate}}

% ----------- mistake is somewhere above here ------------

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{albrechtbirkner,
    crossref = {kampmann},
    author = {Albrecht-Birkner, Veronika},
    title = {Die Zwei-Reiche-Lehre in der DDR: Vortrag im Rahmen der Tagung Die lutherische Zwei-Reiche-Lehre in politischen Kontexten des 20. Jahrhunderts},
    shorttitle = {Reiche},
    gender = {sf}
}
@incollection{banchelli2008,
    crossref = {cambi2008},
    author = {Banchelli, Eva},
    title = {Ostalgie: eine vorläufige Bilanz},
    shorttitle = {Ostalgie},
    gender = {sf}
}

@collection{cambi2008,
    year = {2008},
    title = {Gedächtnis und Identität: Die deutsche Literatur nach der Vereinigung},
    address = {Würzburg},
    isbn = {382603788X},
    editor = {Cambi, Fabrizio},
    shorttitle = {Gedächtnis},
    gender = {sm}
}

@collection{kampmann,
    year = {2017},
    title = {Angewandtes Luthertum?},
    address = {Gütersloh},
    isbn = {382603788X},
    editor = {Kampmann, Jürgen and Otte, Hans},
    shorttitle = {Luthertum},
    gender = {pp}
}
@incollection{pelz2015,
    crossref = {kampmann},
    year = {2017},
    title = {Von der Deutschen Demokratischen Repunlik zur deutschen Pastorenrepublik? Mecklenburgische und Pommersche, evangelisch-lutherische Predigten von 1989/90 als Spiegel der Interpretationen einer lutherischen Zwei-Reiche-Lehre im 20. Jahrhundert},
    author = {Pelz, Birge-Dorothea},
    shorttitle = {Kirche}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
    \cite{pelz2015,banchelli2008,albrechtbirkner}
    \printbibliography
\end{document}

我的书的编辑要求做以下修改:

在此处输入图片描述

1)@incollection 条目结束后应该有一个点,而不是逗号。

2)“in”应该以大写字母“In”开头。

3)合集的编辑者姓名应使用普通字体,而不是小写字母

答案1

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \setunit{\addperiod\space}\newblock
  \usebibmacro{in:}%
  \iffieldundef{crossref}
    {\usebibmacro{crossref:full}}
    {\usebibmacro{crossref:label}}
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \iffieldundef{crossref}
    {\usebibmacro{crossref:extrainfo}}
    {}
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

应解决 1) 和 2)。 相关更改是在 之前行中用\setunit{\addperiod\space}代替。\newunit\usebibmacro{in:}%

对于 3) 我们可以使用

\newbibmacro{crossref:label}{%
  \entrydata{\strfield{crossref}}
  {\DeclareNameAlias{labelname}{given-family}%
   \renewcommand*{\mkbibnamefamily}[1]{##1}%
   \renewcommand*{\mkbibnamegiven}[1]{##1}%
   \renewcommand*{\mkbibnameprefix}[1]{##1}%
   \renewcommand*{\mkbibnamesuffix}[1]{##1}%
   \printnames{labelname}%
   \setunit*{\addcomma\space}%
   \printfield[shorttitle]{labeltitle}}}

我们只需重置\mkbibnamefamily并让朋友添加不格式即可。

相关内容