在评论多本书的书评参考文献中,我试图让它包括所有评论书籍的标题/作者,遵循芝加哥格式手册的实施biblatex-chicago
。这是一个示例:
Geertz, Clifford。1998 年。“Deep Hanging out。”评论瓜亚基印第安人纪事,作者:皮埃尔·克拉斯特(Pierre Clastres),译者:保罗·奥斯特(Paul Auster),路线:二十世纪末的旅行与翻译,作者:詹姆斯·克利福德。《纽约书评》,10 月 22 日。访问日期:2014-05-01。http://www.nybooks.com/articles/archives/1998/oct/22/deep-hanging-out/。
我尝试遵循以下答案这个问题,但不幸的是,我的能力不足以修改它以包含两个或更多个标题和作者。
我考虑过在文件中包含revdauthor2
、、、等等,将它们添加到文件中,然后相应地修改序言,以便根据找到的字段数量revdtitle2
使用正确的语法(“X、Y 和 Z 的审查”)。但我甚至不知道这是否是正确的方法。revdauthor3
revdtitle3
.bib
chicago-authordate.dbx
revd...
这是 bib 条目:
@review{geertz1998deep-hanging,
author = {Geertz, Clifford},
revdauthor = {Clastres, Pierre},
revdauthor2 = {Clifford, James},
revdtitle = {Chronicle of the {Guayaki} {Indians}},
revdtitle2 = {Routes: Travel and Translation in the Late Twentieth Century},
journal = {The New York Review of Books},
title = {Deep Hanging out},
revdtranslator = {Auster, Paul},
url = {http://www.nybooks.com/articles/archives/1998/oct/22/deep-hanging-out/},
urldate = {2014-05-01},
year = {1998}
}
此外,评论的其中一本书是翻译的,由于这是一本相当重要的译本,我想知道是否可以也包括进去revdtranslator
?任何提示都非常感谢。
答案1
这个解决方案建立在我回答biblatex-chicago 中的书评条目,但对其进行了扩展,以便我们也能使用 -feature related
。这允许评论标题的数量可变,因为我们可以简单地循环遍历所有相关条目。
我们将要使用的类型是relatedtype={reviewof}
@review{geertz,
author = {Geertz, Clifford},
journal = {The New York Review of Books},
title = {Deep Hanging out},
url = {http://www.nybooks.com/articles/archives/1998/oct/22/deep-hanging-out/},
urldate = {2014-05-01},
year = {1998},
related = {clastres,clifford},
relatedtype = {reviewof},
}
@book{clastres,
author = {Clastres, Pierre},
title = {Chronicle of the {Guayaki} {Indians}},
translator = {Auster, Paul},
}
@book{clifford,
author = {Clifford, James},
title = {Routes: Travel and Translation in the Late Twentieth Century},
}
首先,我们定义一个宏来reviewof
表示
\newbibmacro*{related:reviewof}[1]{%
\entrydata*{#1}{%
\usebibmacro{title}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{author}{author}%
\setunit{\addspace}%
\printnames[byauthor]{author}
\setunit{\addcomma\space}%
\usebibmacro{byeditor+others}%
\setunit{\addcomma\space}}}
然后我们将这个宏放入驱动程序的适当位置。请注意,我们实际上有related
两次 -block,并有一个保护程序在适当的位置执行它。
\DeclareBibliographyDriver{review}{%
\usebibmacro{bibindex}%
\iffieldequalstr{entrysubtype}{magazine}%
{\usebibmacro{mag+news+author}}%
{\usebibmacro{author/editor}}%
\setunit{\addspace}%
\printfield{nameaddon}%
\newunit\newblock
\ifboolexpr{test {\ifundef{\bbx@lasthash}} and not test {\iffieldundef{title}}}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
{}%
\usebibmacro{cmsbibsortdate}%
\newunit\newblock
\ifboolexpr{test {\ifundef{\bbx@lasthash}} or test {\iffieldundef{title}}}
{}%
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit\newblock
\iffieldequalstr{relatedtype}{reviewof}
{\renewcommand*{\relateddelim}{%
\ifnumless{\value{bbx:relatedcount}}{\value{bbx:relatedtotal}}{\multilistdelim}{\finallistdelim}}%
\usebibmacro{related:init}%
\usebibmacro{related}}
{\ifboolexpr{
test {\iffieldundef{revdtitle}}
and
test {\iffieldundef{revdsubtitle}}
}
{}
{\bibstring{reviewof}%
\setunit{\addspace}%
\printtext[emph]{%
\printfield[titlecase]{revdtitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{revdsubtitle}}%
\setunit{\addcomma\space}}%
\ifnameundef{revdauthor}
{}
{\bibstring{byauthor}%
\setunit{\addspace}%
\printnames[byauthor]{revdauthor}}}%
\newcunit\newblock
\usebibmacro{music+eventdate}% 16th ed.
\setunit{\addspace}%
\usebibmacro{language+transtitle}%
\newunit\newblock%
\usebibmacro{part+editor+translator}%
\newunit\newblock%
\usebibmacro{bibreprint}%
% \newunit\newblock
\usebibmacro{issuetitle}%
\setunit*{\addcomma\addspace}%
\usebibmacro{byeditor+others}%
\usebibmacro{editorpunct}%\newunit\newblock
\printfield{note}%
\setunit*{\addcomma\addspace}\newblock%
\iffieldequalstr{entrysubtype}{magazine}
{\usebibmacro{mag+news+date}%
\newcunit\newblock
\usebibmacro{chap+pag}}%
{\usebibmacro{journal+issue+year+pages}}%
\newunit\newblock
\usebibmacro{pubstate}%
\newunit\newblock
\printfield{addendum}%
\setunit*{\addcomma\addspace}\newblock%
\iftoggle{cms@isbn}%
{\printfield{issn}}%
{}%
\setunit*{\addcomma\addspace}\newblock%
\usebibmacro{bib+doi+url}%
\newunit\newblock
\usebibmacro{pageref}%
\newunit\newblock
\ifboolexpr{test {\iftoggle{cms@related}} and not test {\iffieldequalstr{relatedtype}{reviewof}}}%
{\usebibmacro{related:init}%
\usebibmacro{related}%
\newunit}%
{}%
\usebibmacro{originally+published+as}%
\usebibmacro{finentry}}
总计(用于filecontents
创建.dbx
和.bib
文件:如果有同名文件,它们将被覆盖)
\documentclass[american]{article}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[authordate, backend=biber]{biblatex-chicago}
\usepackage{filecontents}
\usepackage{hyperref}
\begin{filecontents}{chicago-authordate.dbx}
\ProvidesFile{chicago-authordate.dbx}
\RequireBiber[3]
\DeclareDatamodelFields[type=field,datatype=literal]{revdtitle,revdsubtitle}
\DeclareDatamodelEntryfields[review]{revdtitle,revdsubtitle}
\DeclareDatamodelFields[type=list,datatype=name]{revdauthor}
\DeclareDatamodelEntryfields[review]{revdauthor}
\DeclareDatamodelConstraints[review]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{revdtitle}
\constraintfieldsxor{
\constraintfield{date}
\constraintfield{year}
}
}
}
\DeclareDatamodelEntryfields[review]{
author,
journaltitle,
title,
day,
endday,
endmonth,
endyear,
month,
year,
addendum,
annotator,
commentator,
doi,
editor,
editora,
editorb,
editorc,
editoratype,
editorbtype,
editorctype,
eid,
eprint,
eprintclass,
eprinttype,
issn,
issue,
issuetitle,
issuesubtitle,
journalsubtitle,
language,
note,
number,
origlanguage,
pages,
pubstate,
series,
subtitle,
titleaddon,
translator,
url,
urlday,
urlendday,
urlendmonth,
urlendyear,
urlmonth,
urlyear,
version,
volume}
\endinput
\end{filecontents}
\DeclareLanguageMapping{american}{cms-american}
\renewcommand{\subtitlepunct}{\addcolon\space}
\DefaultInheritance[\except{*}{review}{all=false}]{all=true,override=false}
\DeclareDataInheritance{book}{review}{
\inherit{author}{revdauthor}
\inherit{title}{revdtitle}
\inherit{subtitle}{revdsubtitle}
}
\DeclareFieldFormat[review]{citetitle}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[review]{title}{\mkbibquote{#1\isdot}}
\makeatletter
\DeclareBibliographyDriver{review}{%
\usebibmacro{bibindex}%
\iffieldequalstr{entrysubtype}{magazine}%
{\usebibmacro{mag+news+author}}%
{\usebibmacro{author/editor}}%
\setunit{\addspace}%
\printfield{nameaddon}%
\newunit\newblock
\ifboolexpr{test {\ifundef{\bbx@lasthash}} and not test {\iffieldundef{title}}}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
{}%
\usebibmacro{cmsbibsortdate}%
\newunit\newblock
\ifboolexpr{test {\ifundef{\bbx@lasthash}} or test {\iffieldundef{title}}}
{}%
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit\newblock
\iffieldequalstr{relatedtype}{reviewof}
{\renewcommand*{\relateddelim}{%
\ifnumless{\value{bbx:relatedcount}}{\value{bbx:relatedtotal}}{\multilistdelim}{\finallistdelim}}%
\usebibmacro{related:init}%
\usebibmacro{related}}
{\ifboolexpr{
test {\iffieldundef{revdtitle}}
and
test {\iffieldundef{revdsubtitle}}
}
{}
{\bibstring{reviewof}%
\setunit{\addspace}%
\printtext[emph]{%
\printfield[titlecase]{revdtitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{revdsubtitle}}%
\setunit{\addcomma\space}}%
\ifnameundef{revdauthor}
{}
{\bibstring{byauthor}%
\setunit{\addspace}%
\printnames[byauthor]{revdauthor}}}%
\newcunit\newblock
\usebibmacro{music+eventdate}% 16th ed.
\setunit{\addspace}%
\usebibmacro{language+transtitle}%
\newunit\newblock%
\usebibmacro{part+editor+translator}%
\newunit\newblock%
\usebibmacro{bibreprint}%
% \newunit\newblock
\usebibmacro{issuetitle}%
\setunit*{\addcomma\addspace}%
\usebibmacro{byeditor+others}%
\usebibmacro{editorpunct}%\newunit\newblock
\printfield{note}%
\setunit*{\addcomma\addspace}\newblock%
\iffieldequalstr{entrysubtype}{magazine}
{\usebibmacro{mag+news+date}%
\newcunit\newblock
\usebibmacro{chap+pag}}%
{\usebibmacro{journal+issue+year+pages}}%
\newunit\newblock
\usebibmacro{pubstate}%
\newunit\newblock
\printfield{addendum}%
\setunit*{\addcomma\addspace}\newblock%
\iftoggle{cms@isbn}%
{\printfield{issn}}%
{}%
\setunit*{\addcomma\addspace}\newblock%
\usebibmacro{bib+doi+url}%
\newunit\newblock
\usebibmacro{pageref}%
\newunit\newblock
\ifboolexpr{test {\iftoggle{cms@related}} and not test {\iffieldequalstr{relatedtype}{reviewof}}}%
{\usebibmacro{related:init}%
\usebibmacro{related}%
\newunit}%
{}%
\usebibmacro{originally+published+as}%
\usebibmacro{finentry}}
\newbibmacro*{related:reviewof}[1]{%
\entrydata*{#1}{%
\usebibmacro{title}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{author}{author}%
\setunit{\addspace}%
\printnames[byauthor]{author}
\setunit{\addcomma\space}%
\usebibmacro{byeditor+others}%
\setunit{\addcomma\space}}}
\makeatother
\begin{filecontents}{\jobname.bib}
@review{barcott:review,
journaltitle = {New York Times Book Review},
author = {Barcott, Bruce},
date = {2000-04-16},
entrysubtype = {magazine},
revdtitle = {The Last Marlin},
revdsubtitle = {Story of a Family at Sea},
revdauthor = {Fred Waitzkin},
pages = 7,
}
@review{geertz,
author = {Geertz, Clifford},
journal = {The New York Review of Books},
title = {Deep Hanging out},
url = {http://www.nybooks.com/articles/archives/1998/oct/22/deep-hanging-out/},
urldate = {2014-05-01},
year = {1998},
related = {clastres,clifford},
relatedtype = {reviewof},
}
@book{clastres,
author = {Clastres, Pierre},
title = {Chronicle of the {Guayaki} {Indians}},
translator = {Auster, Paul},
}
@book{clifford,
author = {Clifford, James},
title = {Routes: Travel and Translation in the Late Twentieth Century},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}