
내가 이해하는 바에 따르면, biblatex-fields는 하나의 문자열/키만 eprint
허용 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}
Derrida 사례에서 두 개의 키를 쉼표로 구분하면 줄 바꿈으로 구분된 참조가 두 번 표시됩니다.
답변1
두 개의 을 올바르게 얻으려면 crossref
동일한 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
는 이고 참조 필드는 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},
}
우리는 상당히 바람직한 결과를 얻을 수 있다고 생각합니다.
MWE
\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
제가 반박해야 했던 몇 가지 버그와 교묘한 재정의가 포함되어 있는 것 같습니다.