LuaTeX 或 XeTeX 中多字节字符 (`^^xx^^xx`) 的两个插入符号输入有错误吗?

LuaTeX 或 XeTeX 中多字节字符 (`^^xx^^xx`) 的两个插入符号输入有错误吗?

当使用十六进制代码输入字符时,LuaTeX 和 XeTeX 不允许对多字节字符使用两个插入符号 ^^xx。虽然可以^^^^041f正常工作(显示西里尔字母“Т”),^^d0^^9f但(与 UTF-8 中的“Т”相同)会显示两个字形。MWE:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\usepackage[russian]{babel}
\begin{document}
A word in Russian: ^^d0^^9f^^d1^^80^^d0^^b8^^d0^^b2^^d0^^b5^^d1^^82^^21

Four carets work fine: ^^^^041f^^^^0440^^^^0438^^^^0432^^^^0435^^^^0442^^^^0021
\end{document}

在此处输入图片描述

对于 PdFTeX 引擎,^^xx^^xx只要inputenc使用正确的编码,该符号就可以起作用:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\begin{document}
A word in Russian: ^^d0^^9f^^d1^^80^^d0^^b8^^d0^^b2^^d0^^b5^^d1^^82^^21
\end{document}

在此处输入图片描述

所以,问题是:这真的是 LuaTeX 和 XeTeX 引擎中的错误吗?或者我应该向应该与这些引擎一起使用的软件包报告错误,并使用^^xx^^xx符号(例如https://ctan.org/tex-archive/biblio/bibtex/contrib/gost?lang=en ugost2008.bst具体来说)?

答案1

这不是一个错误,只是你输入了错误的字符。输入

^^d0^^9f

有效,但是两个字符序列 U+00D0 U+009F 不是单个字符 U+0422

没有必要使用^^编码 UTF-8 字节,只需直接使用^^^^0422\Uchar"0422或字符即可Т。最后一种形式,使用 Т 的优点是 pdflatex 的 inputenc 解码器也能理解它。

相关内容