Ab zweiter Referenz nur noch der erste Autor

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Ab zweiter Referenz nur noch der erste Autor

von sqq » Mi 7. Dez 2016, 18:08

Herzlichen Dank, Dein erster Vorschlag scheint mein Problem komplett zu lösen. :D

von Gast » Mi 7. Dez 2016, 16:24

Dankenswerterweise benutzt Du nicht natbib, sondern biblatex (das allerdings mit dem natbib-Kompatibilitätsmodus).

Als ersten Vorschlag hätte ich
\AtEveryCitekey{\ifciteseen{}{\defcounter{maxnames}{5}}}
anzubieten. Dazu brauchst Du als Option maxcitenames=2.

Der Stil biblatex-apa implementiert etwas der Art und von dort könntest Du
\makeatletter
\newbibmacro*{labelname:doname}[8]{%
  \ifboolexpr{test {\ifnumcomp{\value{listcount}}{>}{1}}
              or
              test {\ifuniqueprimaryauthor}}
    {\setcounter{uniquename}{0}}
    {}%
  \ifcase\value{uniquename}%
    \ifuseprefix
      {\usebibmacro{name:family}{#1}{#3}{#5}{\relax}}
      {\usebibmacro{name:family}{#1}{#3}{\relax}{\relax}}%
  \or
     \ifuseprefix
       {\usebibmacro{name:given-family}{#1}{#4}{#5}{\relax}}
       {\usebibmacro{name:given-family}{#1}{#4}{\relax}{\relax}}%
  \or
     \ifuseprefix
       {\usebibmacro{name:given-family}{#1}{#3}{#5}{\relax}}
       {\usebibmacro{name:given-family}{#1}{#3}{\relax}{\relax}}%
  \fi
  \usebibmacro{name:andothers}}

\DeclareNameFormat{labelname}{%
  % First set the truncation point
  \ifthenelse{\value{uniquelist}>1}
    {\numdef\cbx@min{\value{uniquelist}}}
    {\numdef\cbx@min{\value{minnames}}}%
  % Always print the first name and the second if there are only two since
  % "et al" must always be plural
  \ifboolexpr{test {\ifnumcomp{\value{listcount}}{=}{1}}
              or test {\ifnumcomp{\value{listtotal}}{=}{2}}}
    {\usebibmacro{labelname:doname}%
      {\namepartfamily}%
      {\namepartfamilyi}%
      {\namepartgiven}%
      {\namepartgiveni}%
      {\namepartprefix}%
      {\namepartprefixi}%
      {\namepartsuffix}%
      {\namepartsuffixi}}
    % We are looking at name >=3
    % If the list is 6 or more names or we have seen citation before, potential truncation
    {\ifboolexpr{test {\ifnumcomp{\value{listtotal}}{>}{5}}
                 or test {\ifciteseen}}
     % Less than the truncation point, print normally
     {\ifnumcomp{\value{listcount}}{<}{\cbx@min + 1}
       {\usebibmacro{labelname:doname}%
         {\namepartfamily}%
         {\namepartfamilyi}%
         {\namepartgiven}%
         {\namepartgiveni}%
         {\namepartprefix}%
         {\namepartprefixi}%
         {\namepartsuffix}%
         {\namepartsuffixi}}
       {}%
      % At potential truncation point ...
      \ifnumcomp{\value{listcount}}{=}{\cbx@min + 1}
        % but enforce plurality of et al - only truncate here if there is at
        % least one more element after the current potential truncation point
        % so that "et al" covers at least two elements.
        {\ifnumcomp{\value{listcount}}{<}{\value{listtotal}}
          {\andothersdelim\bibstring{andothers}}
          {\usebibmacro{labelname:doname}%
            {\namepartfamily}%
            {\namepartfamilyi}%
            {\namepartgiven}%
            {\namepartgiveni}%
            {\namepartprefix}%
            {\namepartprefixi}%
            {\namepartsuffix}%
            {\namepartsuffixi}}}
        {}%
      % After truncation point, do not print name
      \ifnumcomp{\value{listcount}}{>}{\cbx@min + 1}
       {\relax}%
       {}}%
     % We are looking at name >=3
     % Name list is < 6 names or we haven't seen this citation before, print normally
     {\usebibmacro{labelname:doname}%
       {\namepartfamily}%
       {\namepartfamilyi}%
       {\namepartgiven}%
       {\namepartgiveni}%
       {\namepartprefix}%
       {\namepartprefixi}%
       {\namepartsuffix}%
       {\namepartsuffixi}}}}

\newbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
          {\usebibmacro{cite:label}%
           \setunit{\printdelim{nonameyeardelim}}%
           \usebibmacro{cite:labelyear+extrayear}%
           \usebibmacro{cite:reinit}}
          {\iffieldequals{namehash}{\cbx@lasthash}
             {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
                          \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
                {\setunit{\addcomma}%
                 \usebibmacro{cite:extrayear}}
                {\setunit{\compcitedelim}%
                 \usebibmacro{cite:labelyear+extrayear}%
                 \savefield{labelyear}{\cbx@lastyear}}}
             {\printnames[labelname][-\value{listtotal}]{labelname}%
              \setunit{\printdelim{nameyeardelim}}%
              \usebibmacro{cite:labelyear+extrayear}%
              \savefield{namehash}{\cbx@lasthash}%
              \savefield{labelyear}{\cbx@lastyear}}}}}
    {\usebibmacro{cite:shorthand}%
     \usebibmacro{cite:reinit}}%
  \setunit{\multicitedelim}}
\makeatother
klauen.

Ich hätte gesagt, dass meine erste Lösung eigentlich schon tun sollte, was Du brauchst, Aber es kann sein, dass bei bestimmten Sonderfällen die Lösung von biblatex-apa stabiler ist. (Ich wüsste allerdings wirklich nicht, wo und wie.)

Ab zweiter Referenz nur noch der erste Autor

von sqq » Di 6. Dez 2016, 21:22

Bei meiner Masterarbeit besteht folgende Anforderung: Stammt ein Werk von drei bis fünf AutorInnen, werden bei der ersten Nennung dieser Quelle alle Namen aufgeführt, bei jeder weiteren Nennung nur noch der Name des ersten Autors / der ersten Autorin, gefolgt von „u.a..“. Ich arbeite mit Natbib. Gibt es eine Möglichkeit das zu realisieren? Hier einmal das Minimalbeispiel:
\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[ngerman]{babel}

\usepackage[style=authoryear-icomp, natbib=true, maxbibnames=50, maxcitenames=5, uniquelist=false, backend=biber]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
	@book{SechsNamen,
		author = {Ersternachname, Erstervorname and Zweiternachname, Zweitervorname and Drittervorname, Dritternachname and Vierternachname, Viertrevorname and Fuenfternachname, Fuenftervorname and Sechsternachname, Sechstervorname},
		title = {Sechs Namen},
		date = {2011},
		
	}
	
	
	@book{FuenfNamen,
		author = {Ersternachname, Erstervorname and Zweiternachname, Zweitervorname and Drittervorname, Dritternachname and Vierternachname, Viertrevorname and Fuenfternachname, Fuenftervorname},
		title = {Fuenf Namen},
		date = {2011},	
	}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}


\section{Wie gewünscht}

Beim ersten Vorkommen sollen alle 5 Autoren angezeigt werden. \citep{FuenfNamen}. Nun kommt ein anderes Zitat mit 6 Namen von \citep{SechsNamen}. 
 
\section{Hier weiss ich nicht weiter} 
Beim zweiten Aufruf soll nur noch der erste Autor mit u.a. angezeigt werden und nicht mehr alle 5 Namen:  \citep{FuenfNamen}
 
 


\printbibliography


\end{document}



Nach oben