使用 \footcites 和 authoryear-ibid 在最后和倒数第二个引用之间添加“Und”

使用 \footcites 和 authoryear-ibid 在最后和倒数第二个引用之间添加“Und”

我需要更改\footcites/ \cites,使\multicitedelim最后一个和倒数第二个参数之间的最后一个分隔符 ( ) 为“und”( \bibstring{and}),而不是分号。我知道这对 有效\textcites

这是我的最小工作示例:

\documentclass[a4paper,12pt,twoside]{report}

\usepackage[ngerman]{babel}

\usepackage[backend=biber,
                        style=authoryear-ibid,
                        ibidtracker=context,
                        natbib=true]
                     {biblatex}     

\usepackage[babel,german=quotes]{csquotes}

\parindent 0pt

\usepackage{filecontents}

\begin{filecontents}{literatur.bib}
@book{Faulstich.1994,
 year = {1994},
 title = {Grundwissen Medien},
 address = {M{\"u}nchen},
 publisher = {Fink},
 editor = {Faulstich, Werner}
}


@book{Faulstich.2002,
 author = {Faulstich, Werner},
 year = {2002},
 title = {Einf{\"u}hrung in die Medienwissenschaft},
 address = {M{\"u}nchen},
 publisher = {Fink},
 subtitle = {Probleme -- Methoden -- Dom{\"a}nen}
}


@book{Faulstich.2004,
 year = {2004},
 title = {Grundwissen Medien},
 address = {M{\"u}nchen},
 publisher = {Fink},
 editor = {Faulstich, Werner}
}
\end{filecontents}

\addbibresource{literatur.bib}

\begin{document}

\textbf{Using textcites:}\\
\textcites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}\\
\textbf{Current (cites):}\\
\cites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}\\
\textbf{Objective (cites):}\\
Faulstich, 1994; Faulstich, 2002 und Faulstich, 2004\\
\textbf{Current (footcites)}\footcites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}\\
\textbf{Objective (footcites)}\footnote{Faulstich, 1994; Faulstich, 2002 und Faulstich, 2004.}

\end{document}

使用\footcites\cites我得到:

Faulstich,1994; Faulstich,2002; Faulstich,2004年。

但我需要得到:

Faulstich,1994; Faulstich,2002 年和 Faulstich,2004 年。

我尝试了论坛上的两种解决方案,但这两种解决方案都不适用于我的情况,尽管我在测试之前更新了所有软件包。相关帖子如下:

使用 \footcites 命令和 authoryear-icomp 在倒数第二个引用和倒数第二个引用之间添加“And”

citet 中最后一项和倒数第二项之间如何用作者年份样式进行区分?

\multicitedelim还有其他可能按照我需要的方式采取行动吗?

答案1

如果没有对引用宏或biblatex内部进行更深入的更改,这将非常棘手。另请参阅非常相关的问题Biblatex 在多个引用中更改作者之间的标点符号

这些\textcite命令非常特殊,它们的标点符号设置与其他引用命令的设置略有不同,这意味着它们很容易检查某个命令是否位于列表中的最后一个引用键。可以用类似的方式重新定义其他引用命令,但这需要繁琐的重新定义。

这里的主要问题是,对于其他引用命令,\multicitedelim两个引用键之间的XY使用 在 中找到的信息进行处理X。所以我们需要检查我们是否是倒数第二个引用。\textcite而是\textcitedelim使用 的信息进行处理Y,因此需要检查我们是否处于最后一个位置。citetotal( 中的键数\cite{sigfridsson,worman,geer})和multicitetotal中的组数\cites{sigfridsson}{worman,geer})的相互作用及其内部实现意味着可以检查我们是否处于总体上的最后一个键(即 和citetotalmulticitetotal,但无法检查我们是否处于总体上的倒数第二个键。(我们可以检查我们是否处于citetotal或的倒数第二个键multicitetotal,但总是可以构造一种检测无法确定倒数第二个条目的情况。)问题基本上是我们缺少“ overallcitecount/ overallcitetotal”。另请参阅https://tex.stackexchange.com/a/483189/35864以及评论中的讨论,以及 Phelype Oleinik 的链接作品https://gist.github.com/moewew/df9eb6e4f730350084b9a3fb371621a9(我应该很快就看一下)。

其次(在本例中这一点并不重要),这些\textcite命令通常以两遍方式实现,这意味着它们会两次处理引用键列表。这样它们就可以收集有关引用键列表的重要信息,并可以帮助命令决定将样式的“and”放在哪里-comp

如果您总是\cites引用多个键并且总是将每个键放在单独的组中,那么以下操作应该有效。

\documentclass[a4paper,12pt]{article}
\usepackage[ngerman]{babel}
\usepackage[autostyle, german=quotes]{csquotes}
\usepackage[backend=biber,
            style=authoryear-ibid,
            ibidtracker=context,
            natbib=true]{biblatex}     

% the name \iffinalcitedelim is already taken by the
% textcite-specific test :-(
% This might need to be adapted to the style,
% the definition here was tested with authoryear-ibid
% and should work for most non-comp styles
% but ONLY IF you only ever use the multi-cite commands
% and give each key a group of its own
% when you cite multiple works.
\newcommand*{\iffinalmulticitedelim}{%
  \ifnumequal{\value{multicitecount}}{\value{multicitetotal}-1}
}

\renewcommand*{\multicitedelim}{%
  \iffinalmulticitedelim
    {\addspace\bibstring{and}}
    {\addsemicolon}%
  \space}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Faulstich.1994,
 year      = {1994},
 title     = {Grundwissen Medien},
 address   = {München},
 publisher = {Fink},
 editor    = {Faulstich, Werner}
}
@book{Faulstich.2002,
 author    = {Faulstich, Werner},
 year      = {2002},
 title     = {Einführung in die Medienwissenschaft},
 address   = {München},
 publisher = {Fink},
 subtitle  = {Probleme -- Methoden -- Domänen}
}
@book{Faulstich.2004,
 year      = {2004},
 title     = {Grundwissen Medien},
 address   = {München},
 publisher = {Fink},
 editor    = {Faulstich, Werner}
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\textbf{Using textcites:}
\textcites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}

\textbf{Current (cites):}
\cites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}

\textbf{Objective (cites):}
Faulstich, 1994; Faulstich, 2002 und Faulstich, 2004

\textbf{Current (footcites)}\footcites{Faulstich.1994}{Faulstich.2002}{Faulstich.2004}

\textbf{Objective (footcites)}\footnote{Faulstich, 1994; Faulstich, 2002 und Faulstich, 2004.}
\end{document}

Faulstich,1994; Faulstich,2002 和 Faulstich,2004

相关内容