葡萄牙语文章,如何在参考书目中获取句子大小写?

葡萄牙语文章,如何在参考书目中获取句子大小写?

我正在用葡萄牙语写一篇文章,但大多数参考文献都有英文标题。我遵循 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字段,它告诉biblatexbib 条目应以哪种语言排版。

\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}

相关内容