我在用windycity
,我有一部作品,有一位作者和一位审校者。我可以添加一个editor
字段,但是有没有办法自定义输出,使其显示为revised by
andrev.
而不是edited by
and ed.
?
这里有一个非常类似的问题biblatex-chicago
,但这对我来说似乎不起作用。我猜想它们的内部结构在这方面有所不同。
梅威瑟:
\documentclass[12pt,letterpaper]{article}
\usepackage[style=windycity,backend=biber]{biblatex}
\addbibresource{jobname.bib}
\begin{filecontents}{jobname.bib}
@book{ dyer-apology-crito-2007,
author = {Louis Dyer},
title = {Plato's Apology and Crito},
editora = {Thomas Day Seymour}, % This may be the wrong approach.
editoratype = {reviser}, % This may be the wrong approach.
publisher = {Aristide D. Caratzas},
year = {2007},
address = {New Rochelle, NY},
keywords = {commentary,apology,crito,phaedo},
}
\end{filecontents}
\begin{document}
Blah, blah, blah.\footcite[][15]{dyer-apology-crito-2007}
\printbibliography
\end{document}
答案1
中的编辑器处理windycity
与其他biblatex
样式实现的有很大不同。特别windycity
是使用一组复杂的规则来确定显示哪些编辑器(哪种类型),请参阅§3.编辑、翻译和编译者文档windycity
。
以下内容增加了对 的支持reviser
,但是它使用标准biblatex
方法来处理这些感觉不太正确的事情。
\documentclass[12pt]{article}
\usepackage[style=windycity, backend=biber]{biblatex}
\newbibmacro{reviser}{%
\iffieldequalstr{editortype}{reviser}
{\ifnameundef{editor}
{}
{\newunit
\usebibmacro{bytypestrg}{editor}{editor}%
\setunit{\addspace}%
\printnames[byeditor]{editor}%
\newunit}}
{}}
\renewbibmacro*{edcombos+etc}{%
\togglefalse{noed}%
\togglefalse{notrans}%
\usebibmacro{test:ed}%
\usebibmacro{test:trans}%
\iftoggle{noed}
{}
{\usebibmacro{edcombos}%
\usebibmacro{pluga+etc}}%
\usebibmacro{reviser}}
\begin{filecontents}[force]{\jobname.bib}
@book{dyer-apology-crito-2007,
author = {Louis Dyer},
title = {Plato's Apology and Crito},
editor = {Thomas Day Seymour},
editortype = {reviser},
publisher = {Aristide D. Caratzas},
year = {2007},
address = {New Rochelle, NY},
keywords = {commentary,apology,crito,phaedo},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Blah, blah, blah.\footcite[][15]{dyer-apology-crito-2007}
\printbibliography
\end{document}
如果《芝加哥格式手册》书目样式允许修订,那么我建议您在以下网址打开功能请求:https://github.com/brianchase/windycity/issues。
答案2
在 GitHub 上,作者windycity
建议使用字段来处理这个问题note
。为了让这个过程更顺畅一些,他建议如下:
在 american-windycity.lbx 中,向 \DeclareBibliographyStrings 添加类似以下内容:
revisedby = {{revised by}{rev\adddot}},
在同一个文件中,您还需要添加一个前置声明:
\NewBibliographyString{revisedby}
然后我们可以note
像这样使用该字段:
note = {\bibstring{revisedby} Thomas Day Seymour}
这将在参考书目和注释中产生所需的结果。
作者说他可能会更新windycity
以包括revisedby
,所以整个问题很快就会变得毫无意义。
更新:作者windycity
已添加reviser
为内置编辑器角色,就像compiler
或一样translator
。更新尚未到达 CTAN,但如果您想立即使用它,您可以轻松地将文件复制到本地。这意味着今后您不必使用该note
字段。您只需执行以下操作:
@book{ dyer-apology-crito-2007,
author = {Louis Dyer},
title = {Plato's Apology and Crito},
shorttitle = {Apology and Crito},
editor = {Thomas Day Seymour},
editortype = {reviser},
publisher = {Aristide D. Caratzas},
year = {2007},
address = {New Rochelle, NY},
keywords = {commentary,apology,crito,phaedo},
}