Использование системы цитирования "et Int"

Использование системы цитирования "et Int"

Я пишу заявку на грант, в которой финансирующее агентство указывает следующий стиль для экономии места в записях в библиографии:

Публикации с несколькими авторами могут цитироваться следующим образом: первый автор, второй автор, et int, последний автор.

По-видимому, это не изобретение финансирующего агентства; стиль цитирования «et Int» был предложен вНаучный редактореще в 2003 году [1], так что, очевидно, с тех пор он набрал обороты. Но я не могу понять, как это сделать (или возможно ли это вообще) в Biblatex. Я что-то упустил из виду в руководстве (для версии 3.7) или мне нужно будет разработать собственное решение?

Я знаю, что ты можешьусекатьколичество имен, напечатанных с использованием параметров minbibnamesи maxbibnames, но, насколько я могу судить, усеченные списки имен всегда заканчиваются фиксированной строкой "и другие." (или каково бы ни было значение andothersв стиле библиографии). Возможно ли динамически изменять значение andothersтак, чтобы оно было "и т.д., " а затем имя последнего автора (или редактора) того библиографического элемента, который он печатает?

[1] Сергей А. Грандо и Джеффри Д. Бернхард.«Первый автор, второй автор и т. д. и последний автор»: предлагаемая система цитирования для биомедицинских статей. Научный редактор26(4):122–123, июль–август 2003 г.

решение1

К сожалению, в статье не были достаточно ясно изложены реальные детали предлагаемого стиля, поэтому вам пока придется смириться с моей интерпретацией.

Эта реализация не учитывает 'промежуточных авторов', если их двое или больше (кажется несправедливым заменять только одного автора на 'et int.', мы могли бы также назвать ее полностью) после номера автора bbx:etinttruncи перед последним автором. В примере bbx:etinttruncустановлено два, как в вашем вопросе.

Полагаю, что все было бы проще, если бы Biber изначально поддерживал это, но это работает и так.

МВЭ

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

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@inproceedings{cheshkov,
  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},
  date      = {2001-05},
  volume    = {569},
  pages     = {163-176},
}
@article{dehant,
  author = {Veronique Dehant and Bruce Banerdt and Philippe Lognonné and Matthias Grott
            and Sami Asmar and Jens Biele and Doris Breuer and François Forget 
            and Ralf Jaumann and Catherine Johnson and Martin Knapmeyer and Benoit Langlais
            and Le Feuvre, Mathieu and David Mimoun and Antoine Mocquet and Peter Read
            and Attilio Rivoldini and Oliver Romberg and Gerald Schubert and Sue Smrekar
            and Tilman Spohn and Paolo Tortora and Stephan Ulamec and Susanne Vennerstrøm},
  journal = {Planetary and Space Science},
  number  = {1},
  pages   = {123 - 145},
  title   = {Future {Mars} geophysical observatories for understanding its internal structure, rotation, and evolution},
  volume  = {68},
  year    = {2012},
}
\end{filecontents*}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

%\renewcommand*{\finalnamedelim}{\multinamedelim}

\NewBibliographyString{etint}
\DefineBibliographyStrings{english}{etint = {et\addabbrvspace int\adddot}}

\newcounter{bbx:etinttrunc}
\setcounter{bbx:etinttrunc}{2}
\newtoggle{bbx:showetint}
\DeclareNameFormat{given-family-etint}{%
  \ifnumequal{\value{listcount}}{1}
    {\toggletrue{bbx:showetint}}
    {}%
  \ifboolexpr{
    test {\ifnumless{\value{listcount}}{\value{bbx:etinttrunc}+1}}
    or test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    or 
      ( test {\ifnumequal{\value{listcount}}{\value{bbx:etinttrunc}+1}}
        and test {\ifnumequal{\value{liststop}}{\value{bbx:etinttrunc}+2}})
    }
    {\ifgiveninits
       {\usebibmacro{name:given-family}
          {\namepartfamily}
          {\namepartgiveni}
          {\namepartprefix}
          {\namepartsuffix}}
        {\usebibmacro{name:given-family}
          {\namepartfamily}
          {\namepartgiven}
          {\namepartprefix}
          {\namepartsuffix}}}
    {\iftoggle{bbx:showetint}
       {\usebibmacro{name:delim}{\bibstring{etint}}%
        \bibstring{etint}%
        \togglefalse{bbx:showetint}}
       {}}%
  \usebibmacro{name:andothers}}

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

\begin{document}
\cite{aksin,worman,sigfridsson,companion,cotton,cheshkov,dehant}
\printbibliography
\end{document}

пример вывода


Если вам необходимо исключить третьего автора из работы с четырьмя авторами, вам понадобится немного более простой \DeclareNameFormat{given-family-etint}.

\DeclareNameFormat{given-family-etint}{%
  \ifnumequal{\value{listcount}}{1}
    {\toggletrue{bbx:showetint}}
    {}%
  \ifboolexpr{
    test {\ifnumless{\value{listcount}}{\value{bbx:etinttrunc}+1}}
    or test {\ifnumequal{\value{listcount}}{\value{liststop}}}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
          {\namepartfamily}
          {\namepartgiveni}
          {\namepartprefix}
          {\namepartsuffix}}
        {\usebibmacro{name:given-family}
          {\namepartfamily}
          {\namepartgiven}
          {\namepartprefix}
          {\namepartsuffix}}}
    {\iftoggle{bbx:showetint}
       {\usebibmacro{name:delim}{\bibstring{etint}}%
        \bibstring{etint}%
        \togglefalse{bbx:showetint}}
       {}}%
  \usebibmacro{name:andothers}}

решение2

Дата автора и подробные стили, объединенные в biblatex-archaeologyпакет, предоставляют preservelastauthorопцию, которая делает именно то, что вы просите. et IntВыражение направляется командой \finalnameellipsisтам.

Связанный контент