1 つの biblatex フィールド内の複数の文字列 -- 複数の参照

1 つの biblatex フィールド内の複数の文字列 -- 複数の参照

私の理解では、biblatex-fields は1 つの文字列/キーのみを受け入れますが、2 つ以上の項目/アドレスを参照するようにしたいeprintと考えています。related

私の言いたいことを明確にする例を挙げます (この例では、latex --> biber --> latex の 3 回の実行が必要です)。

\begin{filecontents}{MyBib.bib}
@Article{Barney:Notes,
  author =   {Rachel Barney},
  title =    {Notes on Plato on the \mkbibemph{Kalon} and the Good},
  journaltitle = {Classical Philology},
  year =     2010,
  commentator =  {Paula Gottlieb},
  eprint =   {10.1086/657026, 10.1086/659326}, %the first number is
                                     % the article, the second one the
                                     % comment, which I want to appear in one entry
  eprinttype =   {jstor},
  volume =   105,
  number =   4,
  pages =    {363-77, 378-80} % the same as with eprint
  }

@Article{Derrida:Pharmacie1-1,
  author =   {Jacques Derrida},
  title =    {La pharmacie de Platon},
  journaltitle = {Tel Quel},
  year =     1968,
  volume =   32,
  pages =    {3-48}
}

@Article{Derrida:Pharmacie1-2,
  author =   {Jacques Derrida},
  title =    {La pharmacie de Platon},
  journaltitle = {Tel Quel},
  year =     1968,
  volume =   33,
  pages =    {18-59}
}

@InBook{Derrida:Pharmacie2,
  title =    {La pharmacie de Platon},
  year =     1993,
  bookauthor =   {Jacques Derrida},
  author =   {Jacques Derrida},
  gender =   {sm},
  booktitle =    {La Diss{\'e}mination},
  bookauthor =   {Jacques Derrida},
  publisher =    {{\'E}dition Points},
  location =     {Paris},
  pages =    {77-213}, % perhaps: {77-148, 149-213}
  related =  {Derrida:Pharmacie1-1}, % both articles are reprinted in one book,
                   % the unity of the deconstructed separation, which might duly be called 
                          % the voice of the separated unification as voiced deconstruction
                          % of no-pposites
  related =      {Derrida:Pharmacie1-2},
  relatedstring ={Nachdruck von}
}
\end{filecontents}
\documentclass{scrartcl}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\input{ix-utf8enc.dfu}
\usepackage[english]{babel}
\usepackage{xpatch}
\usepackage[pdftex]{hyperref}
\usepackage{csquotes}
\usepackage[style=philosophy-modern, sorting=nyvt,
            backend=biber, citetracker=constrict,
            opcittracker=constrict, 
            idemtracker=constrict, relatedformat=parens, 
            autolang=hyphen, clearlang=true]{biblatex}
\addbibresource{MyBib.bib}
\begin{document}

\nocite{*}
\printbibliography
\end{document}

Derrida の場合、2 つのキーをコンマで区切ると、改行で区切られた 2 回の参照が得られます。

答え1

2つのcrossrefsを正しく入力するには、同じcrossrefフィールドに入力するだけです。上記のコメントを引用すると

関連するエントリの両方を 1 つのフィールドに入力する必要がありますrelated(もちろん、カンマで区切ってください)。そうしないと、Biber はフィールドの最後の出現のみを取得し、それ以前のすべてを無視します (Biber による警告が出ると思っていましたが、何もありませんでした。エントリに 2 番目の (異なる) フィールドを追加すると、この動作が非常に明確にわかりますauthor)。

@InBook{Derrida:Pharmacie2,
  title         = {La pharmacie de Platon},
  year          = 1993,
  bookauthor    = {Jacques Derrida},
  author        = {Jacques Derrida},
  gender        = {sm},
  booktitle     = {La Diss{\'e}mination},
  bookauthor    = {Jacques Derrida},
  publisher     = {{\'E}dition Points},
  location      = {Paris},
  pages         = {77-213}, % perhaps: {77-148, 149-213}
  related       = {Derrida:Pharmacie1-1,Derrida:Pharmacie1-2},
  relatedtype   = {reprintof},
  %relatedstring = {Nachdruck von}
}

あなたが と書いたのでrelatedstring ={Nachdruck von}relatedtype = {reprintof}ここでは適切と思われます。

ただし、default関連するマクロがbiblatex-philosophy少しおかしくなって、壊れてしまうようなので、代わりにどうするかをreprintof指定する必要があります。biblatex

\newbibmacro*{related:reprintof}[1]{%
  \entrydata*{#1}{%
    \usedriver
      {\ifnameundef{savedauthor}
         {\ifnameundef{savededitor}
            {}
            {\ifnamesequal{editor}{savededitor}
               {\clearname{editor}}
               {}}}
         {\ifnamesequal{author}{savedauthor}
            {\clearname{author}}
            {}}%
       \renewbibmacro*{related:init}{}%
       \DeclareNameAlias{sortname}{default}%
       \ifbibmacroundef{date+extrayear}
         {}
         {\renewbibmacro*{date+extrayear}{}%
          \renewbibmacro*{date}{\printdate}}%
       \renewbibmacro*{pageref}{}}
      {\thefield{entrytype}}}}

この基準をさらに再定義するrelated:default

\renewbibmacro*{related:default}[1]{%
  \entrydata*{#1}{%
    \usedriver
      {\renewcommand*{\labelnamepunct}{\addcolon\space}%
       \renewbibmacro*{author/translator+others}{\printnames{author}}%
       \iffieldsequal{savedjournaltitle}{journaltitle}%
         {\renewbibmacro*{journal}{\bibstring{ibidem}}%
          \ifboolexpr{test {\iffieldsequal{savedvolume}{volume}} and test {\iffieldsequal{savednumber}{number}}}
            {\renewbibmacro*{volume+number+eid}{}}
            {}%
         }
         {}
       \ifnameundef{savedauthor}
         {\ifnameundef{savededitor}
            {}
            {\ifnamesequal{editor}{savededitor}
               {\clearname{editor}}
               {}}}
         {\ifnamesequal{author}{savedauthor}
            {\clearname{author}}
            {}}%
       \renewbibmacro*{related:init}{}%
       \DeclareNameAlias{sortname}{default}%
       \ifbibmacroundef{date+extrayear}
         {}
         {\renewbibmacro*{date+extrayear}{}%
          \renewbibmacro*{date}{\printdate}}%
       \renewbibmacro*{pageref}{}}
      {\thefield{entrytype}}}}

アップデート related:defaultibidem関連エントリのジャーナルが親エントリのジャーナルと同じである場合、通知が印刷されるようになりました。

Barney:Notesを次のように扱う。Gottlieb:responseは でありdataonly、のrelatedフィールドはBarney:Notesを参照する。Gottlieb:response

@Article{Barney:Notes,
  author =   {Rachel Barney},
  title =    {Notes on Plato on the \mkbibemph{Kalon} and the Good},
  journaltitle = {Classical Philology},
  year =     2010,
  doi =   {10.1086/657026},
  volume =   105,
  number =   4,
  pages =    {363-377},
  related={Gottlieb:response},
  relatedstring = {Commentary:},
}

@Article{Gottlieb:response,
  author =   {Paula Gottlieb},
  title =    {Response to Barney},
  journaltitle = {Classical Philology},
  year =     2010,
  doi =   {10.1086/659326},
  volume =   105,
  number =   4,
  pages =    {378-380},
  options = {dataonly},
}

かなり望ましい出力が得られると思います。

ムウェ

\documentclass{scrartcl}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xpatch}
\usepackage[pdftex]{hyperref}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[style=philosophy-modern, sorting=nyvt,
            backend=biber, citetracker=constrict,
            opcittracker=constrict,
            idemtracker=constrict, relatedformat=parens,
            autolang=hyphen, clearlang=true]{biblatex}

\begin{filecontents*}{\jobname.bib}
@Article{Barney:Notes,
  author =   {Rachel Barney},
  title =    {Notes on Plato on the \mkbibemph{Kalon} and the Good},
  journaltitle = {Classical Philology},
  year =     2010,
  doi =   {10.1086/657026},
  volume =   105,
  number =   4,
  pages =    {363-377},
  related={Gottlieb:response},
  relatedstring = {Commentary:},
}

@Article{Gottlieb:response,
  author =   {Paula Gottlieb},
  title =    {Response to Barney},
  journaltitle = {Classical Philology},
  year =     2010,
  doi =   {10.1086/659326},
  volume =   105,
  number =   4,
  pages =    {378-380},
  options = {dataonly},
}


@Article{Derrida:Pharmacie1-1,
  author =   {Jacques Derrida},
  title =    {La pharmacie de Platon},
  journaltitle = {Tel Quel},
  year =     1968,
  volume =   32,
  pages =    {3-48}
}

@Article{Derrida:Pharmacie1-2,
  author =   {Jacques Derrida},
  title =    {La pharmacie de Platon},
  journaltitle = {Tel Quel},
  year =     1968,
  volume =   33,
  pages =    {18-59}
}

@InBook{Derrida:Pharmacie2,
  title =    {La pharmacie de Platon},
  year =     1993,
  bookauthor =   {Jacques Derrida},
  author =   {Jacques Derrida},
  gender =   {sm},
  booktitle =    {La Diss{\'e}mination},
  bookauthor =   {Jacques Derrida},
  publisher =    {{\'E}dition Points},
  location =     {Paris},
  pages =    {77-213}, % perhaps: {77-148, 149-213}
  related =  {Derrida:Pharmacie1-1,Derrida:Pharmacie1-2},
  relatedtype = {reprintof},
  %relatedstring ={Nachdruck von}
}
\end{filecontents*}

\newbibmacro*{related:reprintof}[1]{%
  \entrydata*{#1}{%
    \usedriver
      {\ifnameundef{savedauthor}
         {\ifnameundef{savededitor}
            {}
            {\ifnamesequal{editor}{savededitor}
               {\clearname{editor}}
               {}}}
         {\ifnamesequal{author}{savedauthor}
            {\clearname{author}}
            {}}%
       \renewbibmacro*{related:init}{}%
       \DeclareNameAlias{sortname}{default}%
       \ifbibmacroundef{date+extrayear}
         {}
         {\renewbibmacro*{date+extrayear}{}%
          \renewbibmacro*{date}{\printdate}}%
       \renewbibmacro*{pageref}{}}
      {\thefield{entrytype}}}}

\renewcommand*{\relateddelim}{\adddot\space}

%\renewbibmacro*{related:clearauthors}{}

\renewbibmacro*{related:default}[1]{%
  \entrydata*{#1}{%
    \usedriver
      {\renewcommand*{\labelnamepunct}{\addcolon\space}%
       \renewbibmacro*{author/translator+others}{\printnames{author}}%
       \iffieldsequal{savedjournaltitle}{journaltitle}%
         {\renewbibmacro*{journal}{\bibstring{ibidem}}%
          \ifboolexpr{test {\iffieldsequal{savedvolume}{volume}} and test {\iffieldsequal{savednumber}{number}}}
            {\renewbibmacro*{volume+number+eid}{}}
            {}%
         }
         {}
       \ifnameundef{savedauthor}
         {\ifnameundef{savededitor}
            {}
            {\ifnamesequal{editor}{savededitor}
               {\clearname{editor}}
               {}}}
         {\ifnamesequal{author}{savedauthor}
            {\clearname{author}}
            {}}%
       \renewbibmacro*{related:init}{}%
       \DeclareNameAlias{sortname}{default}%
       \ifbibmacroundef{date+extrayear}
         {}
         {\renewbibmacro*{date+extrayear}{}%
          \renewbibmacro*{date}{\printdate}}%
       \renewbibmacro*{pageref}{}}
      {\thefield{entrytype}}}}

\addbibresource{\jobname.bib}
\begin{document}

\nocite{*}
\printbibliography
\end{document}

ここに画像の説明を入力してください

ここでの解決策は多少脆弱で、他の使用例では機能しない可能性があります。ただし、関連エントリのデフォルトの処理には、philosophy-modern対処しなければならないバグや巧妙な再定義が含まれているようです。

関連情報