如果我希望我的 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
。