5

I am looking for a way to always list one specific author in references with many authors, when the number of authors to show is limited and abbreviated by et al.

For example

These are the relevant papers:
\fullcite{paper1}
\fullcite{paper2}

should result in

These are the relevant papers:
Author, A., ..., Alwaysthisauthor, X., ..., et al. 
Buthor, B., ..., Alwaysthisauthor, X., ..., et al.

As requested a minimal example is below:

\documentclass{article}

\usepackage{filecontents}
\usepackage[backend=biber,natbib]{biblatex}

\begin{filecontents}{\jobname.bib}
  @INPROCEEDINGS{2001AIPC..569..163C,
   author = {{Cheshkov}, S. and {Tajima}, T. and {Chiu}, C. and {Breitling}, F. },
    title = "{Emittance control in Laser Wakefield Accelerator}",
booktitle = {American Institute of Physics Conference Series},
     year = 2001,
   volume = 569,
    month = may,
    pages = {163-176},
}

@ARTICLE{2001RScI...72.1339B,
   author = {{Breitling}, F. and {Weigel}, R.~S. and {Downer}, M.~C. and
    {Tajima}, T.},
    title = "{Laser pointing stabilization and control in the 
        submicroradian regime with neural networks}",
  journal = {Review of Scientific Instruments},
     year = 2001,
    month = feb,
   volume = 72,
    pages = {1339-1342},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Results in

References

  1. F. Breitling et al. “Laser pointing stabilization and control in the submicro-radian regime with neural networks”. In: Review of Scientific Instruments 72 (Feb. 2001), pp. 1339–1342.

  2. S. Cheshkov et al. “Emittance control in Laser Wakefield Accelerator”. In: American Institute of Physics Conference Series. Vol. 569. May 2001, pp. 163–176.

But I need the name Breitling to always appear explicitly also if the author list is truncated with et al.

  • 1
    Does Excluding one certain author from et al. look like what you are after? You probably will not be able to get the code from the answer working because of the changes in version 3.3, but if that is what you are looking for I can try and adapt the code for versions >=3.3. – moewe Dec 8 '16 at 18:33
  • 1
    Just out of curiosity: Why are you encasing all surnames in curly braces? AFAICT, it adds nothing but code clutter. – Mico Dec 8 '16 at 21:15
  • @Mico This is the way I retrieve the bibtex entries from ADS (see example). I don't know in which situations this is necessary. – Frank Breitling Dec 9 '16 at 10:05
  • @moewe Yes, this seems to be my question. However the title seem misleading since it is more about including than excluding authors. Should we change the title accordingly? If you could update the answer as necessary that would be great! – Frank Breitling Dec 9 '16 at 10:13
3

The following is adapted for biblatex >= 3.3 from my answer to Excluding one certain author from [et al.].

In order to make this solution work you will need the hash of your name, see Highlight an author in bibliography using biblatex allowing bibliography style to format it for details on how to retrieve the hash for specific names from the .bbl file.

If you wrap your name into braces, the hash for F. {Breitling}/{Breitling}, F. is f9c1127a739dfe7ad337f89c98aebf51.

With

\newcounter{namesnotimportant}
\newtoggle{ellipsis}
\DeclareNameFormat{given-family-etal}{%
  \ifnumcomp{\value{listcount}}{=}{1}
    {\setcounter{namesnotimportant}{0}%
     \toggletrue{ellipsis}}
    {}%
  \ifboolexpr{test {\ifnumcomp{\value{listcount}}{=}{1}}
              or test {\ifnumcomp{\value{listtotal}}{=}{2}}}
    {\ifgiveninits
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
    {\iffieldequalstr{hash}{f9c1127a739dfe7ad337f89c98aebf51}%% <----- put the correct hash here
      {\toggletrue{ellipsis}%
       \ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}%
      {\stepcounter{namesnotimportant}%
       \iftoggle{ellipsis}
         {\addcomma\space\textellipsis\togglefalse{ellipsis}\isdot}
         {}}}%
  \ifnumcomp{\value{namesnotimportant}}{>}{0}
    {\toggletrue{abx@bool@more\currentname}}
    {}%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\andothersdelim\bibstring{andothers}}
    {}}

\DeclareNameAlias{sortname}{given-family-etal}
\DeclareNameAlias{author}{given-family-etal}
\DeclareNameAlias{editor}{given-family-etal}
\DeclareNameAlias{translator}{given-family-etal}

in your MWE:

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,backend=biber, maxnames=999]{biblatex}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@INPROCEEDINGS{2001AIPC..569..163C,
   author = {{Cheshkov}, S. and {Tajima}, T. and {Chiu}, C. and {Breitling}, F. },
    title = "{Emittance control in Laser Wakefield Accelerator}",
booktitle = {American Institute of Physics Conference Series},
     year = 2001,
   volume = 569,
    month = may,
    pages = {163-176},
}

@ARTICLE{2001RScI...72.1339B,
   author = {{Breitling}, F. and {Weigel}, R.~S. and {Downer}, M.~C. and
    {Tajima}, T.},
    title = "{Laser pointing stabilization and control in the 
        submicroradian regime with neural networks}",
  journal = {Review of Scientific Instruments},
     year = 2001,
    month = feb,
   volume = 72,
    pages = {1339-1342},
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\newcounter{namesnotimportant}
\newtoggle{ellipsis}
\DeclareNameFormat{given-family-etal}{%
  \ifnumcomp{\value{listcount}}{=}{1}
    {\setcounter{namesnotimportant}{0}%
     \toggletrue{ellipsis}}
    {}%
  \ifboolexpr{test {\ifnumcomp{\value{listcount}}{=}{1}}
              or test {\ifnumcomp{\value{listtotal}}{=}{2}}}
    {\ifgiveninits
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
    {\iffieldequalstr{hash}{f9c1127a739dfe7ad337f89c98aebf51}%% <----- put the correct hash here
      {\toggletrue{ellipsis}%
       \ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}%
      {\stepcounter{namesnotimportant}%
       \iftoggle{ellipsis}
         {\addcomma\space\textellipsis\togglefalse{ellipsis}\isdot}
         {}}}%
  \ifnumcomp{\value{namesnotimportant}}{>}{0}
    {\toggletrue{abx@bool@more\currentname}}
    {}%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\andothersdelim\bibstring{andothers}}
    {}}

\DeclareNameAlias{sortname}{given-family-etal}
\DeclareNameAlias{author}{given-family-etal}
\DeclareNameAlias{editor}{given-family-etal}
\DeclareNameAlias{translator}{given-family-etal}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

you thus get

reference section of MWE


If you only want this special format for \fullcite, move the four \DeclareNameAlias lines into the pre-code hook of \usedriver in \DeclareCiteCommand{\fullcite} like so

\DeclareCiteCommand{\fullcite}
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{given-family-etal}%
      \DeclareNameAlias{author}{given-family-etal}%
      \DeclareNameAlias{editor}{given-family-etal}%
      \DeclareNameAlias{translator}{given-family-etal}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

If you want to define a special command for that so that you can use 'normal' \fullcite and the new name format simultaneously, you could define a starred \fullcite* via

\DeclareCiteCommand*{\fullcite}
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{given-family-etal}%
      \DeclareNameAlias{author}{given-family-etal}%
      \DeclareNameAlias{editor}{given-family-etal}%
      \DeclareNameAlias{translator}{given-family-etal}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

instead.


If you want to 'filter' several names (additionally also, say {Tajima}, T.), you can combine the hash comparisons into one \ifboolexpr. Just use

\ifboolexpr{test {\iffieldequalstr{hash}{f9c1127a739dfe7ad337f89c98aebf51}}
            or 
            test {\iffieldequalstr{hash}{67bbebbc19c3d65d07202eac52047d5e}}}%% <----- put the correct hash here

instead of \iffieldequalstr{hash}{f9c1127a739dfe7ad337f89c98aebf51} in \DeclareNameFormat{given-family-etal}:

\DeclareNameFormat{given-family-etal}{%
  \ifnumcomp{\value{listcount}}{=}{1}
    {\setcounter{namesnotimportant}{0}%
     \toggletrue{ellipsis}}
    {}%
  \ifboolexpr{test {\ifnumcomp{\value{listcount}}{=}{1}}
              or test {\ifnumcomp{\value{listtotal}}{=}{2}}}
    {\ifgiveninits
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
      {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
    {\ifboolexpr{test {\iffieldequalstr{hash}{f9c1127a739dfe7ad337f89c98aebf51}}
                 or 
                 test {\iffieldequalstr{hash}{67bbebbc19c3d65d07202eac52047d5e}}}%% <----- put the correct hash here
      {\toggletrue{ellipsis}%
       \ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}%
      {\stepcounter{namesnotimportant}%
       \iftoggle{ellipsis}
         {\addcomma\space\textellipsis\togglefalse{ellipsis}\isdot}
         {}}}%
  \ifnumcomp{\value{namesnotimportant}}{>}{0}
    {\toggletrue{abx@bool@more\currentname}}
    {}%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\andothersdelim\bibstring{andothers}}
    {}}
  • I am also wondering if it is possible to switch back and forth between this new formatting and the default? – Frank Breitling Dec 9 '16 at 17:43
  • @FrankBreitling If your version is from around October 2014 it is way older than version 3.3, in that case you can try to get the code in the other answer running. But it might be that that doesn't even work because your biblatex is really old (certainly more than two years now). – moewe Dec 9 '16 at 18:12
  • @FrankBreitling I'm not sure what you mean by 'switch back and forth'. The new name format is really only enabled by the four \DeclareNameAlias lines. If you comment these out, you get the standard format, if you uncomment them you get the new format. – moewe Dec 9 '16 at 18:13
  • Sorry, this was my mistake. It wasn't testing, but still stable. That's why the package was so old. Now it works! I will remove my first comment. How can I check my biblatex version? – Frank Breitling Dec 9 '16 at 20:17
  • I mean if it is possible to use for example \fullcite{} at one part of the document and obtain this new reference format and later obtain the bibliography with the default format. – Frank Breitling Dec 9 '16 at 20:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.