0

I want to use the biblatex package to manage my bibliography. I also want to cite a set of authors as one citation, therefore I use the option and command mcite.

I have to use the style alphabetic, but it does not give me what I would like. I would like the set of authors to appear in the text and the bibliography by their initials (all of the authors, not only the ones of the first key), and maybe a year (the older or the more recent, it does not really matter).

I found nothing about this kind of configuration on the internet, on SX or in the documentation. If anyone has an automatic or manual idea to obtain the wanted result, it would great!

Here is a MWE:

\documentclass{book}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{filecontent}

\begin{filecontents}{biblio.bib}
    @book{Yvon_1935,
        title = {La Th\'eorie Statistique Des Fluides et l'\'equation d'\'etat},
        series = {Actualit\'es Scientifiques et Industrielles ; {{Th\'eories}} M\'ecaniques (Hydrodynamique-Acoustique)},
        publisher = {{Hermann \& cie}},
        date = {1935},
        author = {Yvon, Jacques},
        lccn = {37018772}
    }

    @article{Born_1946,
        title = {A General Kinetic Theory of Liquids {{I}}. {{The}} Molecular Distribution Functions},
        volume = {188},
        issn = {2053-9169},
        doi = {10.1098/rspa.1946.0093},
        number = {1012},
        journaltitle = {Proceedings of the Royal Society of London. Series A. Mathematical and Physical Sciences},
        date = {1946-12-31},
        pages = {10-18},
        author = {Born, Max and Green, Herbert Sydney},
    }

    @article{Kirkwood_1946,
        title = {The {{Statistical Mechanical Theory}} of {{Transport Processes I}}. {{General Theory}}},
        volume = {14},
        issn = {0021-9606, 1089-7690},
        url = {http://aip.scitation.org/doi/10.1063/1.1724117},
        doi = {10.1063/1.1724117},
        number = {3},
        journaltitle = {The Journal of Chemical Physics},
        urldate = {2019-01-16},
        date = {1946-03},
        pages = {180-201},
        author = {Kirkwood, John Gamble},
    }

    @article{Bogolioubov_1945,
        title = {Kinetic {{Equations}}},
        volume = {10},
        number = {3},
        journaltitle = {Journal of Physics USSR},
        date = {1945},
        pages = {265-274},
        author = {Bogolioubov, Nikola\"i Nikola\"ievitch}
    }

    @article{Boncella_1984,
        author = {Boncella, James M. and Andersen, Richard A.},
        journal = {Inorg. Chem.},
        pages = {432--437},
        volume = {23},
        year = {1984}
    }

\end{filecontents}

\usepackage[citestyle=alphabetic,   %
    bibstyle=alphabetic,    %
    mcite=true,             %
    subentry,               %
    maxcitenames=3,         %
    backend=biber           %
    ]{biblatex}

    \addbibresource[datatype=bibtex]{biblio.bib}

\begin{document}
    A first citation~\cite{Boncella_1984}.
    And another that I want to cite as a set BBGKY45~\mcite{setBBGKY, *Yvon_1935,*Bogolioubov_1945,*Born_1946,*Kirkwood_1946}.

   \printbibliography
\end{document}
4
  • How is the reader supposed to find the citation in the list of references? If there are several of set citations in one document, I suppose this means a lot of searching until one finds the corresponding reference.
    – leandriis
    Jan 19, 2019 at 15:41
  • @leandriis I am not sure to understand well your question, but this is maybe because my question was first not clear. I would like set to appear in the text and the bibliography as [BBGKY35]. In that way the can find easily the citation in the list of reference.
    – R. N
    Jan 19, 2019 at 15:52
  • Sorry, this was a misunderstanding from my side. However: How does such a citation look like if there ara more than one or two authors per reference?
    – leandriis
    Jan 19, 2019 at 15:57
  • @leandriis let say that we have Author1, Author2 and Author3 from the first reference published in year 19XX plus Author4, Author5 and Author6 in 20YY from a second reference. Then I assume the citation should look like A1A2A3A4A5A6XX, with A1 to A6 the initials of the family name of the authors. Is it something that sounds logical ?
    – R. N
    Jan 19, 2019 at 16:21

1 Answer 1

2

In biblatex the concept of a @set on which \difbibentryset and also \mcite are built or modelled is mainly encountered and developed for numeric citations. It is also sort of supported for alphabetic styles and can be used with all other bibliography styles, but will not generate usable citation output with styles not from the numeric or alphabetic families. Even with alphabetic citations it is highly questionable what the expected outcome should be. Currently the default is to take the label that the first entry would generate.

If you think a different default would be better or would like this label to be customisable, you should open a feature request at https://github.com/plk/biblatex/issues.

If you go from dynamic sets created with \mcite and \defbibentryset to static @set entries in the .bib file you can manually determine the label for the entire set.

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[style=alphabetic,
  mcite=true,
  subentry,
  maxcitenames=3,
  backend=biber
  ]{biblatex}

\makeatletter
% warning the file called \blxmset@bibfile@name will be
% overwritten without warning
\def\blxmset@bibfile@name{\jobname -msets.bib}
\newwrite\blxmset@bibfile
\immediate\openout\blxmset@bibfile=\blxmset@bibfile@name
\immediate\write\blxmset@bibfile{%
  @comment{auxiliary file for \string\defbibentrysetlabel}^^J%
  @comment{This file may safely be deleted.
    It will be recreated as required.}}

\AtEndDocument{%
  \closeout\blxmset@bibfile}

\newrobustcmd*{\defbibentrysetlabel}[3]{%
  \@bsphack
  \immediate\write\blxmset@bibfile{%
    @set{#1, entryset = {\unexpanded{#3}}, %
          shorthand = {\unexpanded{#2}},}%
  }%
  \nocite{#1}%
  \@esphack}

\addbibresource{\blxmset@bibfile@name}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Yvon_1935,
  title     = {La Th\'eorie Statistique Des Fluides et l'\'equation d'\'etat},
  series    = {Actualit\'es Scientifiques et Industrielles ; {Th\'eories} M\'ecaniques (Hydrodynamique-Acoustique)},
  publisher = {Hermann \& cie},
  date      = {1935},
  author    = {Yvon, Jacques},
  lccn      = {37018772}
}
@article{Born_1946,
  title        = {A General Kinetic Theory of Liquids {I}. {The} Molecular Distribution Functions},
  volume       = {188},
  issn         = {2053-9169},
  doi          = {10.1098/rspa.1946.0093},
  number       = {1012},
  journaltitle = {Proceedings of the Royal Society of London. Series A. Mathematical and Physical Sciences},
  date         = {1946-12-31},
  pages        = {10-18},
  author       = {Born, Max and Green, Herbert Sydney},
}
@article{Kirkwood_1946,
  title        = {The Statistical Mechanical Theory of Transport Processes {I}. {General} Theory},
  volume       = {14},
  url          = {http://aip.scitation.org/doi/10.1063/1.1724117},
  doi          = {10.1063/1.1724117},
  number       = {3},
  journaltitle = {The Journal of Chemical Physics},
  urldate      = {2019-01-16},
  date         = {1946-03},
  pages        = {180-201},
  author       = {Kirkwood, John Gamble},
}
@article{Bogolioubov_1945,
  title        = {Kinetic Equations},
  volume       = {10},
  number       = {3},
  journaltitle = {Journal of Physics USSR},
  date         = {1945},
  pages        = {265-274},
  author       = {Bogolioubov, Nikola\"i Nikola\"ievitch}
}
@article{Boncella_1984,
  author  = {Boncella, James M. and Andersen, Richard A.},
  journal = {Inorg. Chem.},
  pages   = {432--437},
  volume  = {23},
  year    = {1984},
}
\end{filecontents}
\addbibresource[datatype=bibtex]{\jobname.bib}

\begin{document}
  \defbibentrysetlabel{setBBGKY}{BBGKY45}{Yvon_1935,Bogolioubov_1945,Born_1946,Kirkwood_1946}

  A first citation~\cite{Boncella_1984}.
  And another that I want to cite as a set BBGKY45\cite{setBBGKY}.

 \printbibliography
\end{document}

A first citation [BA84]. And another that I want to cite as a set BBGKY45 [YBBGK].


The following MWE implements a macro \defbibentrysetlabel{<set key>}{<set label>}{<key_1>,...,<key_n>} that can be used to manually specify the label for a set entry dynamically from the .bib file. That means that you have to use \defbibentrysetlabel and \cite instead of \mcite, but I guess that is acceptable.

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[style=alphabetic,
  mcite=true,
  subentry,
  maxcitenames=3,
  backend=biber
  ]{biblatex}

\makeatletter
% warning the file called \blxmset@bibfile@name will be
% overwritten without warning
\def\blxmset@bibfile@name{\jobname -msets.bib}
\newwrite\blxmset@bibfile
\immediate\openout\blxmset@bibfile=\blxmset@bibfile@name

\AtEndDocument{%
  \closeout\blxmset@bibfile}

\newrobustcmd*{\defbibentrysetlabel}[3]{%
  \@bsphack
  \begingroup
  \immediate\write\blxmset@bibfile{%
    @set{#1, entryset = {\unexpanded{#3}}, %
          shorthand = {\unexpanded{#2}},}%
  }%
  \nocite{#1}%
  \@esphack}

\addbibresource{\blxmset@bibfile@name}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Yvon_1935,
  title     = {La Th\'eorie Statistique Des Fluides et l'\'equation d'\'etat},
  series    = {Actualit\'es Scientifiques et Industrielles ; {Th\'eories} M\'ecaniques (Hydrodynamique-Acoustique)},
  publisher = {Hermann \& cie},
  date      = {1935},
  author    = {Yvon, Jacques},
  lccn      = {37018772}
}
@article{Born_1946,
  title        = {A General Kinetic Theory of Liquids {I}. {The} Molecular Distribution Functions},
  volume       = {188},
  issn         = {2053-9169},
  doi          = {10.1098/rspa.1946.0093},
  number       = {1012},
  journaltitle = {Proceedings of the Royal Society of London. Series A. Mathematical and Physical Sciences},
  date         = {1946-12-31},
  pages        = {10-18},
  author       = {Born, Max and Green, Herbert Sydney},
}
@article{Kirkwood_1946,
  title        = {The Statistical Mechanical Theory of Transport Processes {I}. {General} Theory},
  volume       = {14},
  url          = {http://aip.scitation.org/doi/10.1063/1.1724117},
  doi          = {10.1063/1.1724117},
  number       = {3},
  journaltitle = {The Journal of Chemical Physics},
  urldate      = {2019-01-16},
  date         = {1946-03},
  pages        = {180-201},
  author       = {Kirkwood, John Gamble},
}
@article{Bogolioubov_1945,
  title        = {Kinetic Equations},
  volume       = {10},
  number       = {3},
  journaltitle = {Journal of Physics USSR},
  date         = {1945},
  pages        = {265-274},
  author       = {Bogolioubov, Nikola\"i Nikola\"ievitch}
}
@article{Boncella_1984,
  author  = {Boncella, James M. and Andersen, Richard A.},
  journal = {Inorg. Chem.},
  pages   = {432--437},
  volume  = {23},
  year    = {1984},
}
\end{filecontents}
\addbibresource[datatype=bibtex]{\jobname.bib}

\begin{document}
  A first citation~\cite{Boncella_1984}.
  And another that I want to cite as a set BBGKY45 \defbibentrysetlabel{setBBGKY}{BBGKY45}{Yvon_1935,Bogolioubov_1945,Born_1946,Kirkwood_1946}\cite{setBBGKY}.

 \printbibliography
\end{document}
2
  • Because I am working on a large document I put your solution on a standalone file, and I use\input command to import it. I took care of having the same preamble. But I get an error ! Emergency stop. . Do you think it solvable ? (If you prefer I get ask a new question)
    – R. N
    Jan 22, 2019 at 14:56
  • @R.N Yes, please ask a new question. When you say standalone do you mean you use the standalone class/package? That shouldn't be necessary and could actually be detrimental. It should be enough to just copy the parts of the preamble you want to externalise into an empty .tex file. No further classes or packages should be required.
    – moewe
    Jan 22, 2019 at 15:21

You must log in to answer this question.

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