BibLaTeX:使所有非拉丁字符以灰色显示

BibLaTeX:使所有非拉丁字符以灰色显示

如果我希望我的 BibLaTeX 样式对所有非拉丁字符执行以下操作,我应该如何修改它?

bibtex 代码:

@book{makajev1966probljemy,
  title = {Probljemy lingvistichekogo analiza: Fonologija, grammatika, ljeksikologija Проблемы лингвистического анализа: Фонология, грамматика, лексикология [Problems of linguistic analysis: Phonology, grammar, lexicology]},
  author={Makajev Макаев, E. A. Э. А.},
  address = {Moscow Москва},
  publisher = {Nauka Наука},
  year = {1966}
}

答案1

使用 XeLaTeX 进行编译时,您可以使用该ucharclasses包。此包为命令提供了\setTransitionsForCyrillics两个参数。第一个参数在字体变为西里尔文时执行,第二个参数在字体不再为西里尔文时执行。在这种情况下,您可以使用以下命令:

\setTransitionsForCyrillics{\color{gray}}{\color{black}}

为了防止\color转换中的命令吞噬空间,您可以添加一个空组。

\setTransitionsForCyrillics{\color{gray}}{\color{black}{}}

但请注意,逗号、分号等被视为拉丁字母,因此它们不会被着色。MWE:

\begin{filecontents}{\jobname.bib}
@book{makajev1966probljemy,
  title = {Probljemy lingvistichekogo analiza: Fonologija, grammatika, ljeksikologija Проблемы лингвистического анализа: Фонология, грамматика, лексикология [Problems of linguistic analysis: Phonology, grammar, lexicology]},
  author={Makajev Макаев, E. A. Э. А.},
  address = {Moscow Москва},
  publisher = {Nauka Наука},
  year = {1966}
}
\end{filecontents}
\documentclass{article}
\usepackage{fontspec}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\usepackage{ucharclasses}
\usepackage{xcolor}
\setTransitionsForCyrillics{\color{gray}}{\color{black}{}}
\setmainfont{Noto Serif}
\begin{document}
Dual script citation: \cite{makajev1966probljemy}
\printbibliography
\end{document}

结果:

在此处输入图片描述

如果您确实希望所有非拉丁字符(如希腊语、阿拉伯语、CJK 等)具有不同的颜色,那么您可以使用\setTransitionsForLatin

相关内容