BibLaTeX - 在引文中用简称或 Idem/Eadem 替换重复的作者

BibLaTeX - 在引文中用简称或 Idem/Eadem 替换重复的作者

我目前正在定义(法语)引用样式。有一件事我还没能做到,那就是在引用中用简短形式替换重复作者的名字。我想做的是:

  • 简·史密斯 (Jane Smith),第一部作品,巴黎,1900 年。[该作者的首次引用]。
  • J. Smith,其他作品,巴黎,1901 年(如果不是直接延续上一部作品的话)。

或者 :

  • Ead.,其他作品,巴黎,1901 年 [如果直接跟随]。

有办法吗?我尝试过,\ifentryseen{author}但至今没有成功。

[编辑] 这是我尝试做的方法(但出现错误! extra \else):

\newbibmacro*{author-fullnote}{%  
  \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
    {\ifthenelse{\iffieldequals{namehash}{\bbx@lasthash}\AND\NOT\iffirstonpage}
       {\bibstring[\mkidem]{idem\thefield{gender}}}
       {\ifthenelse{\ifentryseen{author}}{\printnames{labelname}}{
       \printnames[upshape][1-10]{author}
        \savefield{namehash}{\bbx@lasthash}}}}
    {\global\undef\bbx@lasthash}}

答案1

以下是我最终使用样式中的代码完成此操作的方法Biblatex-dw。我添加了cbx

% Option 'nameseen'
\newcommand*{\cbx@seennames}{}
\newrobustcmd*{\cbx@nameseen}[1]{%
\listxadd{\cbx@seennames}{\detokenize{#1}}}
\newrobustcmd*{\cbx@ifnameseen}[1]{%
\xifinlist{\detokenize{#1}}{\cbx@seennames}}

\AtBeginDocument{%
\DeclareNameFormat{citeauthor}{%
    \cbx@ifnameseen{#1#3#5#7}
        {\usebibmacro{name:first-last-upshape}{#1}{#4}{#5}{#7}%
        }%
        {\usebibmacro{name:first-last-upshape}{#1}{#3}{#5}{#7}%
        \cbx@nameseen{#1#3#5#7}}%
   \usebibmacro{name:andothers}}
}

first-last-upshape注释中使用的格式在哪里,第一次使用全名,其他时间只使用首字母。然后,我在 中bbx定义了两个宏,灵感来自该historische-zeitschrift样式,应用于完整注释(et al. 仅在十个名字后)和简短注释(et al. 在三个名字后),每次都指定 idem/eadem/etc. 应用于以下两个参考文献中的同一作者:

\newbibmacro*{author-fullnote}{%
    \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
        {\ifthenelse
            {\iffieldequals{namehash}{\cbx@lasthash}}%
            {\bibstring{idem\thefield{gender}},}%
            {\printnames[citeauthor][1-10]{author}%        
        \savefield{namehash}{\cbx@lasthash}
    }}%
    {\global\undef\cbx@lasthash}}

\newbibmacro*{author-shortnote}{%
    \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
        {\ifthenelse
            {\iffieldequals{namehash}{\cbx@lasthash}}%
            {\bibstring{idem\thefield{gender}},}%
            {\printnames[citeauthor][1-3]{author}%        
        \savefield{namehash}{\cbx@lasthash}
    }}%
    {\global\undef\cbx@lasthash}}

它看起来是这样的:

在以下参考文献中:

在以下参考文献中

进一步参考:

在进一步的参考中

相关内容