
據我了解,biblatex-fields aseprint
和related
接受一個且唯一的字串/鍵,儘管我希望它們引用兩個或多個項目/地址。
舉一個例子可以清楚地說明我的意思(這個例子需要運行三次:latex --> biber --> Latex):
\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}
如果我在德里達案例中用逗號分隔兩個鍵,我會得到兩次引用,並用換行符號分隔。
答案1
要使這兩個crossref
s 正確,只需將它們放入同一crossref
欄位即可。引用我上面的評論
你必須將兩個相關條目放入一個
related
字段中(當然,用逗號分隔),否則 Biber 將只獲取該字段的最後一次出現,並忽略所有先前的條目(我本以為 Biber 會發出警告,但有如果您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:default
ibidem
現在,如果相關條目的日記帳與父親條目的日記帳相同,則列印通知。
並將其處理Barney:Notes
如下,注意Gottlieb:response
是 a 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
似乎確實包含一些錯誤和我不得不反擊的狡猾的重新定義。