biblatex-chicago 两本或两本以上书籍的书评

biblatex-chicago 两本或两本以上书籍的书评

在评论多本书的书评参考文献中,我试图让它包括所有评论书籍的标题/作者,遵循芝加哥格式手册的实施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 的审查”)。但我甚至不知道这是否是正确的方法。revdauthor3revdtitle3.bibchicago-authordate.dbxrevd...

这是 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}

示例输出

相关内容