Biblatex: поле соавтора(ов)

Biblatex: поле соавтора(ов)

Последние несколько дней я рвал на себе волосы, пытаясь настроить biblatex для обработки записей библиографии от одного и нескольких соавторов.Раздраженный вздох.

Рассмотрим следующий пример:

\documentclass{article}

\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{LadymanRoss07,
   author = {Ladyman, James and Ross, Don},
   collaborator = {David Spurrett and Collier, John},
   title = {Every Thing Must Go: Metaphysics Naturalized},
   publisher = {Oxford University Press},
   year = {2007}
}
\end{filecontents}

\addbibresource{\jobname.bib}
\nocite{*}

\begin{document}
\printbibliography
\end{document}

как я могу элегантно добиться:

Ladyman, James and Don Ross (2007). Every Thing Must Go: Metaphysics Naturalized. 
With collaborators: David Spurrett and John Collier. Oxford University Press.

в выходных данных, и With collaborator:если бы был задействован только один соавтор?

К вашему сведению, мое самое неудовлетворительное «исправление» на данный момент заключается в изменении collaborator =того annotator =места, где оно появляется в моих файлах .bib, и добавлении

\DefineBibliographyStrings{english}{
  withannotator = With collaborators:\addspace ,
}

в мой код конфигурации biblatex. (Это явно ужасное «решение» во многих отношениях!)

решение1

Я думаю, что наиболее подходящий способ позволить вам иметь «коллаборатора» в базе данных и по-прежнему использовать стандартные стили без возни с драйверами — это добавить исходную карту (вам понадобятся Biber 1.0+ и biblatex 2.0+).

«Магия» здесь кроется в \DeclareSourcemapразделе, который в основном работает следующим образом:

  1. Определите записи с полем соавтора: если запись не имеет такого поля, дальнейшая обработка прекращается:\step[fieldsource=collaborator, final=true]

  2. Скопируйте поле соавтора в поле редактора:\step[fieldtarget=editora, origfieldval]

  3. Установите поле editoratype на «collaborator»:\step[fieldset=editoratype, fieldvalue=collaborator

Если вас устраивало форматирование "стандарт" ("В соавторстве с"), то это все, что вам нужно. Немного дополнительной сложности возникает, потому что вам нужен другой формат, "С соавтором(ами)". Проблема здесь в том, что в строке "bytype" стандартные стили biblatex не пытаются различать одиночные и множественные имена. В этот момент у вас есть три варианта:

  1. Если вы хотите сохранить простоту, смиритесь с трудностями и примите формат, который может работать для одного или нескольких соавторов, например, формат по умолчанию. Это самый простой, и если вы не привязаны к формуле «с соавторами», то, вероятно, лучший. Если так, вы можете удалить весь второй шаг карты, \newbibliographystringи определение строки bycollaborators.

  2. Если вы хотите быть "правильными", перепишите внутренние макросы для идентификации нескольких имен и вывода соответствующих различных вводных строк. Это будет довольно большой объем работы, и, вероятно, больше, чем это действительно оправдано.

  3. Проведите различие в .bibсамом файле между одним и несколькими соавторами, используя "соавтор" для одного и "соавторы" для двух. Что касается biblatex, то он имеет дело с совершенно разными "типами" ("соавторы" могли бы быть "репейниками", если говорить о нем), но определение подходящей формы bibstringдля обработки множественного числа решает проблему. Это не идеально, но кажется приемлемым, и поэтому я так и сделал.

Конечный результат, при условии частичного изменения вашего ввода таким образом, что «соавтор» становится «соавторами» (по причинам, изложенным выше), следующий:

введите описание изображения здесь

\documentclass{article}
\usepackage{filecontents}

\usepackage[style=authoryear,backend=biber]{biblatex}

\DeclareSourcemap{
 \maps[datatype=bibtex,overwrite=false]{
  \map{
    \step[fieldsource=collaborator, final=true]
    \step[fieldset=editora, origfieldval]
    \step[fieldset=editoratype, fieldvalue=collaborator]
  }
  % THIS MAP STEP IS ONLY THERE TO ENABLE US TO USE "COLLABORATORS"
  % AS WELL AS "COLLABORATOR", BECAUSE THE QUESTION WANTS TO USE THE
  % "WITH COLLABORATORS" INTRODUCTION
  \map{
    \step[fieldsource=collaborators, final=true]
    \step[fieldset=editora, origfieldval]
    \step[fieldset=editoratype, fieldvalue=collaborators]
   }
 }
}
\NewBibliographyString{bycollaborators}% ONLY FOR "WITH COLLABORATORS"

\DefineBibliographyStrings{english}{%
  bycollaborator  = {with collaborator\addcolon\space},
  % AND ONLY FOR "WITH COLLABORATORS"
  bycollaborators = {with collaborators\addcolon\space}}

\begin{filecontents}{\jobname.bib}
@book{LadymanRoss07,
   author = {Ladyman, James and Ross, Don},
   collaborators = {David Spurrett and Collier, John},
   title = {Every Thing Must Go: Metaphysics Naturalized},
   publisher = {Oxford University Press},
   year = {2007}
}
\end{filecontents}

\addbibresource{\jobname.bib}
\nocite{*}

\begin{document}
\printbibliography
\end{document}

решение2

Согласно руководству biblatex, управление соавторами может быть достигнуто путем настройки списка в полях редактора и использования editortype=collaborator.

Для biblatex это семантически означает, что вы хотите, чтобы он считал, что вы даете не запись редактора, а запись соавтора, поскольку они не хотели слишком сильно умножать новые ключи, чтобы сохранить стандартность.

Вы также можете указать, как следует обращаться к соавтору.

  • По умолчанию collaboratorключевое слово переводится в collaboratorили collab.для короткой версии.
  • Ключевое bycollaboratorслово переводится как in collaboration withили in collab with.
  • Вы также можете использовать ключ collaborators, который преобразуется в collaboratorsили collab..

Однако следует отметить, что, похоже, все происходит не совсем так, как описано в документации на моем компьютере, и переводы ключевых слов доступны не для всех языков.

Кроме того, за этими клавишами следует ряд % FIXME: unsureв языковых файлах, так что, возможно, они все равно работают не совсем правильно.

Когда вы даете biblatex список имен, вы должны разделять каждое имя andключевым словом, так как запятая распознается как разделитель имени/фамилии. Поэтому biblatex интерпретирует вашу запись как David Spurettи John Collier.

Итак, у вас должно получиться что-то вроде этого:

@book{LadymanRoss07,
   author = {Ladyman, James and Ross, Don},
   editor = {David Spurrett and Collier, John},
   editortype = {collaborator},
   title = {Every Thing Must Go: Metaphysics Naturalized},
   publisher = {Oxford University Press},
   year = {2007}
}

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

[1] James Ladyman and Don Ross. Every Thing Must Go: Metaphysics Naturalized. In collab.
    with David Spurrett, Collier, and John. Oxford University Press, 2007.

Похоже, это именно то, чего вы ожидаете.

решение3

Вот пример другой книги с такой же проблемой. Это решение из MathSciNet. Они используют поле noteв таком случае.

@BOOK{Buergisser1997,
      AUTHOR = {B{\"u}rgisser, Peter and Clausen, Michael and Shokrollahi, M. Amin},
       TITLE = {{A}lgebraic {C}omplexity {T}heory},
      SERIES = {Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences]},
      VOLUME = {315},
        NOTE = {With the collaboration of Thomas Lickteig},
   PUBLISHER = {Springer-Verlag},
     ADDRESS = {Berlin},
        YEAR = {1997},
       PAGES = {xxiv+618},
        ISBN = {3-540-60582-7},
     MRCLASS = {68-02 (12Y05 65Y20 68Q05 68Q15 68Q25 68Q40)},
    MRNUMBER = {1440179 (99c:68002)},
  MRREVIEWER = {Alexander I. Barvinok},
}

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