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:단 한 명의 협력자만 참여했다면 어떻게 될까요?

참고로 현재 가장 불만족스러운 "수정"은 .bib 파일에 나타나는 위치 collaborator =로 변경하고 추가하는 것입니다.annotator =

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

내 biblatex 구성 코드에. (이것은 분명히 여러 면에서 끔찍한 "해결책"입니다!)

답변1

데이터베이스에 "협력자"를 두고 드라이버를 조작하지 않고도 표준 스타일을 계속 사용할 수 있도록 하는 가장 적절한 방법은 소스 맵을 추가하는 것이라고 생각합니다(Biber 1.0+ 및 biblatex 2.0+ 필요).

여기서 "마법"은 섹션에 있으며 \DeclareSourcemap기본적으로 다음과 같이 작동합니다.

  1. 공동작업자 필드가 있는 항목을 식별합니다. 항목에 해당 필드가 없으면 더 이상 처리하지 않습니다.\step[fieldsource=collaborator, final=true]

  2. 협력자 필드를 editora 필드에 복사합니다.\step[fieldtarget=editora, origfieldval]

  3. editoratype 필드를 "collaborator"로 설정합니다.\step[fieldset=editoratype, fieldvalue=collaborator

"표준" 형식("공동 작업 중")에 만족한다면 그게 전부일 것입니다. "협력자 포함"이라는 다른 형식을 원하기 때문에 약간의 복잡성이 발생합니다. 여기서 문제는 "bytype" 문자열에서 표준 biblatex 스타일이 단일 이름과 다중 이름을 구별하려고 시도하지 않는다는 것입니다. 이때 세 가지 옵션이 있습니다.

  1. 일을 단순하게 유지하려면 기본 형식과 같이 한 명 또는 여러 명의 공동작업자에게 적합할 수 있는 형식을 적용하세요. 이것은 가장 간단하며 "협력자와 함께" 공식에 얽매이지 않는 한 아마도 가장 좋을 것입니다. 그렇다면 두 번째 맵 단계 전체 \newbibliographystring와 문자열 정의를 삭제할 수 있습니다 bycollaborators.

  2. "정확"하려면 내부 매크로를 다시 작성하여 여러 이름을 식별하고 적절하게 다른 소개 문자열을 인쇄하십시오. 이것은 상당한 작업이 될 것이며 아마도 실제로 정당한 것 이상일 것입니다.

  3. .bib한 명은 "협력자", 두 명은 "협력자"를 사용하여 파일 자체 에서 한 명과 여러 명의 공동작업자를 구별합니다 . biblatex에 관한 한 그것은 매우 다른 "유형"("협력자"는 "turnipwrangler"일 수도 있음)을 다루지만 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 within collab with
  • 또는 collaborators로 변환되는 키를 사용할 수도 있습니다 .collaboratorscollab.

그러나 이것이 내 컴퓨터의 문서에 설명된 대로 작동하지 않는 것 같고 키워드 번역이 모든 언어에 제공되지는 않습니다.

% 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},
}

관련 정보