为什么 glossaries-extra 包和 bib2gls 应用程序会给出错误的 utf8 西里尔字符?

为什么 glossaries-extra 包和 bib2gls 应用程序会给出错误的 utf8 西里尔字符?

我不知道这个问题的根源以及如何解决它。有人能帮助我吗?非常感谢!这是我使用 glossaries-extra 包和 bib2gls 以及西里尔文(非拉丁文)字符的工作示例 (test.tex)。

\documentclass{report}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{substitutefont}
\substitutefont{T2A}{\familydefault}{Tempora-TLF}
\usepackage[record]{glossaries-extra}
\GlsXtrLoadResources[src={test-gloss}]

\begin{document}
\tableofcontents
\chapter{Sample}
Первое применение: \gls{zither}, \gls{shch-fish}.

Следующее применение: \gls{zither}, \gls{shch-fish}.
\printunsrtglossaries
\end{document}

test-gloss.bib 文件包含以下内容:

% Encoding = UTF-8
@index{zither, description={type of stringed musical instrument}}
@abbreviation{shch-fish, short={Щ},long={Щука}}

我期望看到这样的事情: 正确的字符集

但我得到了错误的西里尔字符: 错误的字符集

尽管如此,文件 test.glg 包含正确的编码 UTF-8:

bib2gls version 2.3 (2020-03-23)
Reading test.aux
TeX character encoding: UTF-8
Initialising resource test.glstex.
Parsing bib files for resource test.glstex.
Default encoding: not set
Reading test-gloss.bib
Cross-resource references allowed.
Processing resource test.glstex.
...
Encoding: UTF-8

答案1

在 Windows 上,我必须通过设置环境变量来通知 Java 需要 utf8

   JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"

此设置后,bib2gls 报告:

Picked up JAVA_TOOL_OPTIONS: "-Dfile.encoding=UTF8"
bib2gls version 2.7 (2020-07-11)
Reading test-utf8.aux
Reading test-gloss.bib

并且 glstex 包含正确的 utf8。

在此处输入图片描述

在此处输入图片描述

相关内容