\textcites 的多个作者(姓名)作为所有格

\textcites 的多个作者(姓名)作为所有格

扩展先前的答案\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}

相关内容