我正在用葡萄牙语写一篇文章,但大多数参考文献都有英文标题。我遵循 APA 引用格式。在参考书目中,我希望使用葡萄牙语的“翻译”等术语、日期格式和序数词,但根据 APA 规则使用句子大小写。
以下是一个例子:
\documentclass{article}
\usepackage[english,main=portuguese]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa, natbib=true]{biblatex}
\begin{filecontents}{foo.bib}
@article{en,
author={John},
title={This Should Be in Sentence Case},
journal={Title Case Journal},
language={english}
}
@article{pt,
author={João},
title={Título do Artigo},
journal={Título da Publicação},
language={portuguese}
}
\end{filecontents}
\addbibresource{foo.bib}
\begin{document}
\nocite{en}
\nocite{pt}
\printbibliography
\end{document}
其结果为:
如果我删除该babel
包,文章标题将正确转换为句子大小写。但我如何才能保留葡萄牙语的本地化功能以及正确的大写字母(至少对于英语标题而言)?
答案1
该biblatex
language
字段用于设置“作品的语言”,并可能被条目类型驱动程序用作内容。您要查找的是该 langid
字段,它告诉biblatex
bib 条目应以哪种语言排版。
\documentclass{article}
\usepackage[english,main=portuguese]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa, natbib=true]{biblatex}
\begin{filecontents}{foo.bib}
@article{en,
author={John},
title={This Should Be in Sentence Case},
journal={Title Case Journal},
langid={english}
}
@article{pt,
author={João},
title={Título do Artigo},
journal={Título da Publicação},
langid={portuguese}
}
\end{filecontents}
\addbibresource{foo.bib}
\begin{document}
\nocite{en}
\nocite{pt}
\printbibliography
\end{document}
我认为只有这个改变可能就足够了。但您可能对该选项感兴趣autolang
,它允许您控制参考书目条目使用哪种类型的语言环境。
答案2
我认为就目前我所知,我已经解决了这个问题。我需要使用langid
@gusbrs 指出的字段。我还为葡萄牙语的参考书目条目添加了句子大小写转换。由于我的 bib 文件中的大多数条目都是英文的,没有,而且文章的主要语言不是英语,所以我还添加了一些代码来为没有 的条目langid
添加默认值。langid
以下是更新后的示例:
\documentclass{article}
\usepackage[english,main=portuguese]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa, natbib=true]{biblatex}
\begin{filecontents}{foo.bib}
@article{en,
author={John},
title={This Should Be in Sentence Case},
journal={Title Case Journal},
translator={Fulano},
}
@article{pt,
author={João},
title={Título do Artigo},
journal={Título da Publicação},
langid={portuguese}
}
\end{filecontents}
\addbibresource{foo.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldset=langid, fieldvalue={english}]
}
}
}
\AtBeginDocument[biblatex/declarecaselangs]{ %needed because of a bug in biblatex; maybe fixed soon...
\DeclareCaseLangs*{portuguese}
}
\DeclareHookRule{begindocument}{biblatex/declarecaselangs}{after}{biblatex}
\begin{document}
\nocite{en}
\nocite{pt}
\printbibliography
\end{document}