Biblatex:如何在简短引用中将 3+ 作者缩写为 et al.,但在完整引用和参考书目中所有名称都应出现

Biblatex:如何在简短引用中将 3+ 作者缩写为 et al.,但在完整引用和参考书目中所有名称都应出现

我需要一种非常具体的人文科学引用样式,这就是事情变得有点困难的原因。我只想在我的短引文中使用 et al.(和其他)。因此,当我第一次引用某些内容并获得完整引文时,在我的参考书目中应该有所有名称。但是当我引用同一件事时,只应该出现名字和 et al.。我尝试了 maxnames 和 maxbibnames,但第一个解决了短引文和完整引文,第二个只解决了参考书目而不是完整引文。有没有办法区分 et al. 的短引文和完整引文?这里是 MWE

\begin{filecontents}{MWE.bib}
@book{Pfister:Strom,
    author = {Christian Pfister and Muster, Hans and Muster, Beat and Muster, Friedrich},
    title = {Im Strom der Modernisierung},
    subtitle = {Bevölkerung, Wirtschaft und Umwelt 1700-1914},
    booktitle = {Geschichte des Kantons Bern seit 1798, Bd. 4},
    editor = {Junker, Beat and Pfister, Christian and Muster, Hans and Muster, Beat},
    date = {1995},
    location = {Bern},
}
\end{filecontents}

\documentclass[11pt, a4paper, tablecaptionabove]{scrartcl} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%=============BIBLIOGRAPHIE, ZITIERWEISE=================== %
\usepackage[babel,german=guillemets]{csquotes}
\usepackage[%
style=alphabetic,
style=verbose-ibid,
labeldate,
dashed=false, %bei mehreren Werken desselben Autors kein Strich
backend=bibtex8,
idemtracker=false,
ibidtracker=constrict,
citepages=omit,
]{biblatex}

\usepackage{xpatch}

%Hg. bzw Hgg. in Klammern hinter Herausgeber, statt davor und vor Titel
\renewbibmacro*{byeditor+others}{%
    \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
        \setunit{\addspace}%
        \usebibmacro{editor+othersstrg}%
        \clearname{editor}%
        \newunit}%
    \usebibmacro{byeditorx}%
    \usebibmacro{bytranslator+others}
    \setunit{\addcolon\space}
    \usebibmacro{booktitle}}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}

\DefineBibliographyStrings{german}{%
    andothers = {et\ al\adddot}, %et al. statt u.a.
    editor = {\mkbibparens{Hg\adddot}}, %Hg. statt Hrsg.
    editors = {\mkbibparens{Hgg\adddot}}, %Hgg. plural
    byeditor = {\mkbibparens {Hg\adddot}}, 
}
\DeclareFieldFormat{postnote}{#1} %unterdrückt Präfix S.
\DeclareFieldFormat{multipostnote}{#1} %unterdrückt Präfix S.
\DeclareNameAlias{default}{last-first} %Autoren immer Nachname, Vorname sortieren
\renewbibmacro*{cite:short}{%
    \printnames{labelname}%
    \setunit*{\nameyeardelim}%
    \iffieldundef{labelyear}
    {}
    {\printtext[\addcolon]{\printtext[bibhyperlink]{%
                \printfield{labelyear}%
                \printfield{extrayear}}}}}

%Edition Feld superscript, wenn erlaubt
\DeclareFieldFormat{edition}{%
    \ifinteger{#1}
    {\textsuperscript{#1}}

    {\isdot\setunit{}}}

%\DeclareNameFormat{default}{%
%\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
%\usebibmacro{name:andothers}}
\renewcommand{\multinamedelim}{\addsemicolon\space} %Semikolon zum trennen der Autoren
\renewcommand{\finalnamedelim}{\addsemicolon\space}
\renewcommand{\labelnamepunct}{\addcolon\space} %Zwischen Autor und Titel Doppelpunkt, kein Punkt
\renewcommand{\postnotedelim}{\addcolon\space} %Zwischen Jahrzahl und Seitenzahl Doppelpunkt, kein Komma
\renewcommand{\nametitledelim}{\addspace}
\renewbibmacro*{publisher+location+date}{% %Zwischen Ort und Jahr kein Komma
    \printlist{location}%
    {\setunit*{\addspace}}
    \printfield{edition}%
    \usebibmacro{date}%
    \newunit}

%überflüssiges Editionsfeld entfernen
\newcommand{\replaceedition}[1]
{%
    \xpatchbibdriver{#1}
    {\printfield{edition}%
        \newunit}
    {}%
    {}
    {\typeout{failed to patch driver #1}}
}
\replaceedition{book}
\replaceedition{collection}
\replaceedition{inbook}
\replaceedition{incollection}
\replaceedition{manual}

\renewbibmacro*{maintitle+booktitle}{%
    \iffieldundef{maintitle}
    {}
    {\usebibmacro{maintitle}%
        \newunit\newblock
        \iffieldundef{volume}
        {}
        {\printfield{volume}%
            \printfield{part}%
            \setunit{\addcolon\space}}}%
    %\usebibmacro{booktitle}%
    \newunit}

\xpatchbibdriver{inbook}{%
    \usebibmacro{maintitle+booktitle}%
    \newunit\newblock
    \usebibmacro{byeditor+others}%
}%
{%
    \usebibmacro{byeditor+others}%
    \setunit{\addcolon\space}\newblock
    \usebibmacro{maintitle+booktitle}%
}%
{}{}%

\xpatchbibdriver{inbook}{%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
}%
{%
    \addcolon\space
    \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{inbook}{%
    \newunit
    \iffieldundef{maintitle}
}%
{%
    \setunit{\addcomma\space}
    \iffieldundef{maintitle}
}%
{}{}

\xpatchbibdriver{incollection}{%
    \usebibmacro{maintitle+booktitle}%
    \newunit\newblock
    \usebibmacro{byeditor+others}%
}%
{%
    \usebibmacro{byeditor+others}%
    \setunit{\addcolon\space}\newblock
    \usebibmacro{maintitle+booktitle}%
}%
{}{}%

\xpatchbibdriver{incollection}{%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
}%
{%
    \addcolon\space
    \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{incollection}{%
    \newunit
    \iffieldundef{maintitle}
}%
{%
    \setunit{\addcomma\space}
    \iffieldundef{maintitle}
}%
{}{}

\xpatchbibdriver{inproceedings}{%
    \usebibmacro{maintitle+booktitle}%
    \newunit\newblock
    \usebibmacro{byeditor+others}%
}%
{%
    \usebibmacro{byeditor+others}%
    \setunit{\addcolon\space}\newblock
    \usebibmacro{maintitle+booktitle}%
}%
{}{}%

\xpatchbibdriver{inproceedings}{%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
}%
{%
    \addcolon\space
    \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{inproceedings}{%
    \newunit
    \iffieldundef{maintitle}
}%
{%
    \setunit{\addcomma\space}
    \iffieldundef{maintitle}
}%
{}{}

%Titel nicht in Anführungszeichen; S. vor Seitenangabe entfernen
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{pages}{#1}
\DeclareFieldFormat[inbook]{title}{#1}
\DeclareFieldFormat[inbook]{pages}{#1}
\DeclareFieldFormat[incollection]{title}{#1} 
\DeclareFieldFormat[incollection]{pages}{#1}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{pages}{#1}


%\renewcommand{\nametitledelim}{\space}

% Titel nicht schräg
\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{citetitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}

% Journal Titel nicht schräg
\DeclareFieldFormat{journaltitle}{#1}

\bibliography{MWE} %name des .bib-Files

%=============ENDE BIBLIOGRAPHIE, ZITIERWEISE=================== %

\begin{document}
\autocite{Pfister:Strom}
\autocite{irrelevant}
\autocite{Pfister:Strom}

\printbibliography
\end{document}

这会让我明白: 在此处输入图片描述 所以简短的引文(Pfister 等人,1995 年)很好,但完整引文(第一个)和参考书目应包括作者字段中给出的所有名称。提前致谢!

答案1

这个答案背后的基本思想与 lockstep 对我如何指导\fullcite使用maxbibnames而不是maxcitenames,但我们只想对完整引用进行maxcitenames本地更改,因此我们无法修改整个引用命令,我们需要找到并调整负责完整引用的实际宏(即cite:full

\makeatletter
\renewbibmacro*{cite:full}{%
  \defcounter{maxnames}{\blx@maxbibnames}%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{default}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}
\makeatother

注意\makeatletter/\makeatother构造以使其\blx@maxbibnames按预期工作。

平均能量损失

\documentclass{article}
\usepackage[style=verbose-ibid,backend=biber,maxbibnames=999]{biblatex}
\addbibresource{biblatex-examples.bib}

\makeatletter
\renewbibmacro*{cite:full}{%
  \defcounter{maxnames}{\blx@maxbibnames}%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{default}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}
\makeatother

\begin{document}
Lorem\footcite{aksin} ipsum\footcite{herrmann} dolor\footcite{aksin} sit\footcite{herrmann}.

\printbibliography
\end{document}

在此处输入图片描述

相关内容