梅威瑟:
\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
并让朋友添加不格式即可。