你知道,有些期刊有专门的期刊标题和编辑。目前使用 biblatex 我得到以下结果:
Danon, Gabi (2008)。“希伯来语构造状态中的确定性扩展”。在:Lingua 118.7(词汇类别中的形态句法不匹配)。由 I. Nikolaeva 和 A. Spencer 编辑,第 872-906 页。
不过,我希望将期刊标题和编辑者放在括号中,如下所示:
Danon, Gabi (2008)。“确定性在希伯来语构造状态中的传播”。在:Lingua 118.7(词汇类别中的形态句法不匹配。I. Nikolaeva 和 A. Spencer(编辑)),第 872-906 页。
我可以通过重新定义 journal+issue bibmacro 从原始参考文献中删除冒号:
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addspace}%
\usebibmacro{issue}%
\newunit}
然后我可以通过声明轻松地在问题标题周围加上括号
\DeclareFieldFormat{issuetitle}{\mkbibparens{\textit{#1}}}
但我也希望编辑信息也在那里。
这是一个 MWE(我使用 XeLaTeX,但我认为它在这里并不重要):
\documentclass[]{article}
\usepackage[style=authoryear-comp, dashed=true, natbib=true,backend=biber]{biblatex}
\bibliography{danon.bib}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addspace}%
\usebibmacro{issue}%
\newunit}
\DeclareFieldFormat{issuetitle}{\mkbibparens{\textit{#1}}}
\begin{document}
\cite{Danon}
\printbibliography
\end{document}
以及参考书目文件:
@Article{Danon,
author = {Gabi Danon},
title = {Definiteness spreading in the {Hebrew} construct state},
journal = {Lingua},
year = {2008},
volume = {118},
number = {7},
pages = {872--906},
issuetitle = {Morphosyntactic mismatches in lexical categories},
editor = {I. Nikolaeva and A. Spencer}
}
答案1
您不能只包装issuetitle
,因为就目前情况而言,它由issue
bibmacro 打印,而编辑器稍后打印。因此,需要issue
以包含编辑器的方式重新定义 bibmacro,然后清除editor
名称字段,以便byeditor+others
在驱动程序的下一部分调用时不会打印它。这也是以这样的方式完成的,即只有在存在单独的 时才会发生这种情况issuetitle
。因此:
\renewbibmacro*{issue}{%
\iffieldundef{issuetitle}%
{}%
{\setunit{\addspace\bibopenparen}%
\printfield{issuetitle}%
\newunit%
\ifnameundef{editor}%
{}%
{\printnames{editor}%
\printtext{\space(}%
\usebibmacro{editor+othersstrg}%
\printtext{)}}%
\printtext{\bibcloseparen\space}%
\clearname{editor}}}