我知道你可以AtEveryBibItem
像这样使用:
\AtEveryBibitem{
\clearlist{language}
}
但这会从每个参考文献中删除语言字段;您可以只对英语(或任何其他特定语言)抑制它,而不对其他语言抑制它吗?
编辑:应该说清楚我正在使用该beamer
包 - 所以也许这会影响到一些东西?
还:
最小示例:
\documentclass[english, aspectratio = 169, notes]{beamer}
\usepackage[english]{babel}
\usepackage[none]{hyphenat}
\usepackage[style=authoryear, doi=false]{biblatex}
\bibliography{references}
%\AtEveryBibitem{
% \clearlist{language}
%}
\usepackage{nameref}
\makeatletter
\newcommand*{\currentname}{\@currentlabelname}
\makeatother
\usepackage{pgfpages}
\setbeameroption{show notes on second screen}
\begin{document}
\section{Blah blah blah}
\begin{frame}{Blah 1}
blah blah blah \cite{cited_reference}
\end{frame}
\section{References and further reading}
\begin{frame}[allowframebreaks]{References and further reading}
\setbeamertemplate{bibliography item}[text]
\printbibliography
\end{frame}
\end{document}
输出:
编辑2:
@moewe 这是来源cited_reference
:
@article{cited_reference,
title = {The frame/content theory of evolution of speech production},
volume = {21},
issn = {0140-525X, 1469-1825},
url = {https://www.cambridge.org/core/product/identifier/S0140525X98001265/type/journal_article},
doi = {10.1017/S0140525X98001265},
abstract = {ABSTRACT REMOVED AS IS TOO LONG},
language = {en},
number = {4},
urldate = {2021-11-17},
journal = {Behavioral and Brain Sciences},
author = {MacNeilage, Peter F.},
month = aug,
year = {1998},
pages = {499--511},
}
好像要en
改为english
会删除语言字段。但是我有不少条目是 en
由于它们是从 Zotero 自动传输的,因此手动更改会很麻烦。
那么有没有什么办法可以排除这些en
字段而不影响其他字段?
答案1
biblatex
language
如果字段值与当前文档语言一致,则具有抑制字段输出的功能。此功能( clearlang
)默认启用。
为了使此功能正常工作,language
必须用可以理解的值填充该字段biblatex
。biblatex
文档说
作品的语言。语言可以按字面意思指定,也可以作为本地化关键字指定。如果使用本地化关键字,前缀
lang
可以省略。
该clearlang
功能基本上只有当作品的语言通过本地化键给出时才有效(可能没有lang
)提供时才有效。所有已知的本地化关键字均列于 §4.9.2.18语言名称的biblatex
文件。
因此,对于英语作品,您需要language = {english},
或language = {langenglish},
代替language = {en},
它才能工作。
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{cited_reference,
title = {The frame/content theory of evolution of speech production},
volume = {21},
doi = {10.1017/S0140525X98001265},
language = {english},
number = {4},
journal = {Behavioral and Brain Sciences},
author = {MacNeilage, Peter F.},
month = aug,
year = {1998},
pages = {499--511},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,cited_reference}
\printbibliography
\end{document}
如果必须继续使用,language = {en},
可以尝试以下解决方法之一。
使用源映射映射
en
到english
。\DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=language, match=\regexp{\Aen\Z}, replace={english}] } } }
用来
\DeclareRedundantLanguages
告诉biblatex
这en
对于英语来说是多余的。\DeclareRedundantLanguages{en}{english,american,british, canadian,australian,newzealand,USenglish,UKenglish}