在 BibLaTeX 中使用 langid 作为条目标题,使用本地化的引号、连字符和标点符号

在 BibLaTeX 中使用 langid 作为条目标题,使用本地化的引号、连字符和标点符号

我得到的是:

A. 作者,“某些文章标题?”。无论什么期刊。

B. Buthor,“一篇论文?”。另一期刊。

我想要的是:

A. 作者,“一些文章标题?”。无论什么期刊。

B. Buthor,“一篇论文?”。另一期刊。

当然,连字符应该与语言相关。;)

autolang=other不是一个选择,因为它会翻译一些我不想受到影响的参考书目其他部分。

我偶然发现BibLaTeX langid 和 autolang=hyphen 使 csquotes 使用本地化引号并且旧的行为基本上是我想要的(小问题是我不知道它如何表现得像上面的问号这样的标点符号)。

MNWE:

\documentclass{scrartcl}

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article ?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

答案1

您可以尝试以下操作。

关于标点符号的备注。您的示例中有两种类型:

  • 字段中的标点符号,例如标题中的问号:{Some article title?}

  • 由 biblatex 的宏创建的标点符号,例如 后的冒号In:

第一种很难适应pdflatex语言,因为catcodes已经冻结了。使用lualatex就可以了。

\documentclass{scrartcl}
\usepackage{ifluatex}
\ifluatex\else
 \usepackage[T1]{fontenc} %with pdflatex
\fi

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
  editor={D. Editor}
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
  editor={D. Editor}
}

\end{filecontents*}
\addbibresource{\jobname.bib}

\makeatletter
\def\blx@hook@initlang{%
 \csq@reset=0 \csq@setstyle{\abx@field@langid}%
 %optional for the colon after "In":
 \ifdefstring{\abx@field@langid}{french}{}
  {\def\FDP@colonspace{}%
   \def\FDP@thinspace{}}%
 }
\makeatletter
\begin{document}

\nocite{*}
\printbibliography
\end{document}

使用 lualatex 输出:

在此处输入图片描述

使用 pdflatex 输出

在此处输入图片描述

答案2

使用autolang=other(并加载T1字体编码)可以完成以下工作:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=other]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article ?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}
\printbibliography

\end{document} 

在此处输入图片描述

相关内容