2

I need a pretty specific human-science citation style, that's why things got a bit difficult. I would like to use the et al. (andothers) in my short citations only. So when I cite something the first time and get a full citation and in my bibliography, there should be all names. But when I cite the same thing, only the first name and et al. should appear. I tried maxnames and maxbibnames, but the first one adresses both short and full citations and the second one only adresses the bibliography and not the full citations. Is there any way to make a difference between short and full citations for the et al.? Here the 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}

This will get me: enter image description here So the short citation (Pfister et al. 1995) is good, but the full citation (the first one) and the bibliography should include all names given in the author field. Thanks in advance!

3
  • Is there really no way to change the use of the andothers field for the short citations only?
    – Julian
    Feb 7, 2015 at 21:43
  • 1
    What about How do I instruct \fullcite to use maxbibnames rather than maxcitenames?. Where you would obviously set the maxbibname to a very high value (999 or thereabouts).
    – moewe
    Feb 10, 2015 at 7:01
  • This works! The thing is, I'd like biblatex to do this automatically,so I don't have to use /footfullcite the first time (just because when you have a long document and add some text it could come out wrong). So do you think there is a possibility to do this? Maybe through cite:short? Thanks anyways!
    – Julian
    Feb 10, 2015 at 14:15

1 Answer 1

3

The basic idea behind this answer is very similar to lockstep's answer to How do I instruct \fullcite to use maxbibnames rather than maxcitenames?, we want to change maxcitenames locally only for full citations though, so we cannot modify the entire citation command, we need to find and tweak the actual macro responsible for full citations (which is 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

Note the \makeatletter/\makeatother construct to make \blx@maxbibnames work as expected.

MWE

\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}

enter image description here

1
  • Thank you very much! I couldn't figure it out myself.. That's great, you're awesome.
    – Julian
    Feb 10, 2015 at 19:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .