使用 biblatex mcite 命令时使用所有姓名首字母

使用 biblatex mcite 命令时使用所有姓名首字母

我想使用该biblatex包来管理我的参考书目。我还想将一组作者作为一个引文引用,因此我使用选项和命令mcite

我必须使用样式alphabetic,但它没有给我我想要的东西。我希望作者集以他们的首字母出现在文本和参考书目中(所有作者,而不仅仅是第一个键的作者),也许还有年份(较早或较近,这并不重要)。

我在互联网、SX 或文档中找不到有关这种配置的任何信息。如果有人有自动或手动获取所需结果的方法,那就太好了!

以下是 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}

答案1

biblatex概念中@set\difbibentryset和也是\mcite建立或建模的,主要遇到和开发用于数字引用。它也支持alphabetic样式,可以与所有其他一起使用参考书目样式,但不会使用不属于numericalphabetic系列的样式生成可用的引文输出。即使有alphabetic引文,预期结果应该是什么也值得怀疑。目前默认采用第一个条目将生成的标签。

如果您认为其他默认设置更好,或者希望此标签可自定义,则应在以下位置打开功能请求:https://github.com/plk/biblatex/issues

如果您从使用创建的动态集转到\mcite文件中的\defbibentryset静态@set条目.bib,您可以手动确定整个集的标签。

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

第一个引用 [BA84]。另一个我想引用为集合 BBGKY45 [YBBGK]。


以下 MWE 实现了一个宏\defbibentrysetlabel{<set key>}{<set label>}{<key_1>,...,<key_n>},可用于从.bib文件中动态地手动指定集合条目的标签。这意味着您必须使用\defbibentrysetlabel\cite而不是\mcite,但我想这是可以接受的。

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

相关内容