我引用的大部分新闻文章。许多来自报纸和杂志,这种@article
条目类型似乎很合适。然而,许多也来自通讯社(如美联社、法新社和路透社),我一直使用@misc
。使用这种编码方案,通讯社报道的标题最终与期刊标题的样式相同,这对我来说没有意义。
理想情况下,我希望至少为非印刷新闻文章*分配一个自定义条目类型,@news
其工作方式类似于@misc
文章样式的标题(即默认情况下在引号内使用罗马字体),同时保留@misc
真正的杂项。但是,如果需要自己定义输出样式,我会谨慎定义新的条目类型,因为这只是一份手稿,而不是完成的书。我还没有真正决定使用哪种引文系统,现在也不想决定。我只希望新闻引文具有一致的外观。
任何简单的解决方案都将受到赞赏。这解决方案moewe 的这个定义似乎有点过了,但我并不反对一些新的定义,只要它们简单就行。谢谢。
* 我还没有决定是否应该指定此条目类型,而不是@article
打印新闻文章,以实现完美的一致性。欢迎提出建议。
最小的例子。
\documentclass{article}
\usepackage[style=verbose-ibid]{biblatex}
\addbibresource{news.bib}
\usepackage{subfiles}
\begin{filecontents}{news.bib}
@article{NYT:Pelletiere:A_War_Crime,
author = {Pelletiere, Stephen C.},
title = {A War Crime Or an Act of War?},
journal = {New York Times},
pages = {A29},
date = {2003-01-31},
}
@misc{AP:Hunt:Bush_Says_Saddam,
author = {Terence Hunt},
title = {Bush Says Saddam Would `Get His Ass Kicked' in Gulf War},
organization = {Associated Press},
date = {1990-12-20},
}
\end{filecontents}
\begin{document}
Foo\autocites{NYT:Pelletiere:A_War_Crime}{AP:Hunt:Bush_Says_Saddam}.
\end{document}
答案1
如果你想要一个新的条目类型,标准方法是定义一个新的条目类型,如下所示如何使用 BibLaTeX/Biber 创建全新的数据类型?。需要在数据模型中定义一个新的条目类型,并且需要一个参考书目驱动程序(该驱动程序可以是别名),因此需要一些额外的代码。
一种更便宜的替代方案是为文件设置一种新的条目类型.bib
,然后由后端 (Biber) 将其重新映射到具有一些附加属性的已知条目类型。由于您希望除了标题格式之外的@news
行为类似于,我们可以重新映射到+ 。然后我们检查格式。这与 的方法相同,后者被重新映射到+ 。@misc
@news
@misc
entrysubtype = {news},
title
entrysubtype = {news},
biblatex
@phdthesis
@thesis
type = {phdthesis},
请注意,使用这种设置,您只能通过其字段区分 a@news
和 a 。特别是,您不能直接过滤,您需要过滤+ 。如果您想同时过滤和,这可能没有影响。@misc
entrysubtype
\printbibliography
@news
@misc
entrysubtype = {news},
@news
@misc
\documentclass{article}
\usepackage[style=verbose-ibid]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[typesource=news, typetarget=misc]
\step[fieldset=entrysubtype, fieldvalue=news]
}
}
}
\DeclareFieldFormat[misc]{title}{%
\iffieldequalstr{entrysubtype}{news}
{\mkbibquote{#1}}
{\mkbibemph{#1}}}
\begin{filecontents}{\jobname.bib}
@article{NYT:Pelletiere:A_War_Crime,
author = {Pelletiere, Stephen C.},
title = {A War Crime Or an Act of War?},
journal = {New York Times},
pages = {A29},
date = {2003-01-31},
}
@news{AP:Hunt:Bush_Says_Saddam,
author = {Terence Hunt},
title = {Bush Says Saddam Would \mkbibquote{Get His Ass Kicked} in Gulf War},
organization = {Associated Press},
date = {1990-12-20},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Foo\autocites{NYT:Pelletiere:A_War_Crime}{AP:Hunt:Bush_Says_Saddam}.
\end{document}