扩展先前的答案\textcite 的作者姓名为所有格我想知道如何调整建议的代码,以便如果倒数第二个引用条目的作者字段包含多个名称,则后续的“and”(用于分隔不同的条目)将被“漂亮地”替换为,例如“as well as”。
\begin{filecontents*}{database.bib}
@book{texbook,
author = {Donald E. Knuth and Someone Else},
title = {The {{\TeX}book}},
publisher = {Addison-Wesley},
date = {1984}
}
@inproceedings{foo,
author = {Foo Bar and {Yet Another} Person},
title = {Some article},
abstract = {Here is the abstract.},
crossref = {acl2015},
year = {2015}
}
\end{filecontents*}
在 tex 文件中我想使用
\posscites{foo}{texbook}
并且应该打印为
Knuth and Else's (1984) as well as Bar and Person's (2015)
接下来是不太小的 MWE
\documentclass{article}
\usepackage[british,ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[authordate,backend=biber,bibencoding=utf8,safeinputenc,strict,pagetracker= true,loccittracker=constrict,citetracker=true,maxbibnames=99,maxcitenames=3,isbn=false,uniquelist=false]{biblatex-chicago}
\usepackage{filecontents,iflang}
%http://tex.stackexchange.com/questions/22273/author-name-of-textcite-as-possessive
\DeclareNameFormat{labelname:poss}{% Based on labelname from biblatex.def
\nameparts{#1}% Not needed if using Biblatex 3.4
\ifcase\value{uniquename}%
\usebibmacro{name:family}{\namepartfamily}{\namepartgiven} {\namepartprefix}{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:first-last}{\namepartfamily}{\namepartgiveni} {\namepartprefix}{\namepartsuffixi}}
{\usebibmacro{name:first-last}{\namepartfamily}{\namepartgiveni} {\namepartprefixi}{\namepartsuffixi}}%
\or
\usebibmacro{name:first-last}{\namepartfamily}{\namepartgiven} {\namepartprefix}{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}%
\IfLanguageName{ngerman}{%true:German language
\ifnumequal{\value{listcount}}{\value{liststop}}{s}{}%
}{%false:nonGerman language
\ifnumequal{\value{listcount}}{\value{liststop}}{'s}{}%
}
}%
\IfLanguageName{ngerman}{%true:German language
\DeclareFieldFormat{shorthand:poss}{%
\ifnameundef{labelname}{#1s}{#1}%
}%
}{%false:nonGerman language
\DeclareFieldFormat{shorthand:poss}{%
\ifnameundef{labelname}{#1's}{#1}%
}%
}%
\IfLanguageName{ngerman}{%true:German language
\DeclareFieldFormat{citetitle:poss}{\mkbibemph{#1}s}
\DeclareFieldFormat{label:poss}{#1s}%
}{%false:nonGerman language
\DeclareFieldFormat{citetitle:poss}{\mkbibemph{#1}s}
\DeclareFieldFormat{label:poss}{#1's}%
}%
\newrobustcmd*{\posscitealias}{%
\AtNextCite{%
\DeclareNameAlias{labelname}{labelname:poss}%
\DeclareFieldAlias{shorthand}{shorthand:poss}%
\DeclareFieldAlias{citetitle}{citetitle:poss}%
\DeclareFieldAlias{label}{label:poss}}}
\newrobustcmd*{\posscite}{%
\posscitealias%
\textcite}
\newrobustcmd*{\Posscite}{\bibsentence\posscite}
\newrobustcmd*{\posscites}{%
\posscitealias%
\textcites}
\begin{filecontents}{\jobname.bib}
@Article{bertram:sa,
author = {Bertram, Aaron and Wentworth, Richard},
title = {Gromov invariants for holomorphic maps on Riemann surfaces},
journaltitle = {J.~Amer. Math. Soc.},
volume = {9},
number = {2},
date = {1996},
pages = {529--571}}
@Article{bertram:i,
author = {Bertram, Aaron and Wentworth, Richard and Brianny Winner},
title = {Gromov invariants for holomorphic maps on Riemann surfaces imagined elsewhere},
journaltitle = {J.~Amer. Math. Soc.},
volume = {9},
number = {2},
date = {2088},
pages = {529--571},
note= {unpublished}}
\end{filecontents}
\addbibresource{\jobname.bib}
\bibliography{biblatex-examples}
\renewcommand{\baselinestretch}{1.25}
\begin{document}
\begin{otherlanguage}{british}
\subsection*{cases british}
1 posscite single item with several authors: \posscites[30]{aksin} \\
2 posscite multiple items: \posscites[e.g.][4]{bertram:sa}{aristotle:poetics} \\
3 posscite multiple items including final item with many authors: \posscites[e.g.][4]{bertram:sa}{aristotle:poetics}[55]{bertram:i} \\
\end{otherlanguage}
I would like the final case, #, to result in:
Bertram and Wentworth’s (e.g. 1996, 4), Aristotle’s (1968) \textbf{as well as} Bertram, Wentworth and Winner’s (2088, 55).
That is, for the case of british english.
\begin{otherlanguage}{ngerman}
\subsection*{cases negerman}
1 posscite single item with several authors: this would be another question \\
2 posscite multiple items: \posscites[z.B.][4]{bertram:sa} {aristotle:poetics} \\
3 posscite multiple items including final item with many authors: \posscites[z.B.][4]{bertram:sa}{aristotle:poetics}[55]{bertram:i} \\
\end{otherlanguage}
I would like the final case, 3, to result in: Bertram und Wentworths (z.B. 1996, 4), Aristotles (1968) \textbf{sowie} Bertram, Wentworth und Winners (2088, 55)
\end{document}
答案1
您需要做的就是添加一个参考书目字符串(带有定义),然后如果最终引用中包含多个名称,则将aswellas
的定义更改为在最终引用之前\textcitedelim
使用aswellas
而不是作为分隔符。and
将其添加到上面的 MWE 序言中:
\NewBibliographyString{aswellas}
\DefineBibliographyStrings{english}{%
aswellas = {as well as}
}
\DefineBibliographyStrings{ngerman}{%
aswellas = {sowei}
}
\renewcommand*{\textcitedelim}{%
\iffinalcitedelim
{\ifnumgreater{\value{textcitetotal}}{2}
{\iftextcitepunct{\finalandsemicolon}{\finalandcomma}}{}%
\addspace
\ifnumgreater{\value{labelname}}{1}
{\bibstring{aswellas}}
{\bibstring{and}}}
{\iftextcitepunct{\addsemicolon}{\addcomma}}%
\space}