Unicode 字符 x (U+xxxx) 未设置为与 Latex 一起使用(我所有的日本汉人都标记了错误)

Unicode 字符 x (U+xxxx) 未设置为与 Latex 一起使用(我所有的日本汉人都标记了错误)

处理多种语言(例如《冰雪奇缘》的多种翻译:这是日语):

降り始めた雪は 足跡消して
真っ白な世界に一人の私

我收到一条消息,每个字符都会标记“Unicode 字符 X (U+xxxx) 未设置为用于 Latex”,例如“Unicode 字符 降 (U+964D) 未设置为用于 Latex”。我还需要处理中文(例如,《冰雪奇缘》有 3 个中文翻译版,分别针对中国大陆、香港和台湾)。

例如一些汉字(不是日语汉字)像“我”(我 U+6211)仍然不行。

其他答案使用

- 将其分开或 - 逐个进行,即通过

“\DeclareUnicodeCharacter{00A0}{\nobreakspace}”等等。

但我显然无法对整个日语汉字(2000个字符)甚至中文汉字(20万个字符)进行一一定义。

另一个选择是使用 texlive extra。除了使用 ports(我使用 brew)外无需安装,因此我不确定我是否可以走这条路,因为它完全重新定义了我的系统。事实上,一个台湾网站说你可以安装 MacTex,它适用于 UNICODE。我有完整的 MacTex。似乎不起作用

如何解决这个问题?不知何故我错过了一些解决方案,因为我被其他路径分散了注意力。但如果坚持使用 pdflatex,解决方案仍然存在。因此可以关闭它。

答案1

如果您需要多种东亚语言的短文,您可以使用 LuaLaTeX 中的 Babel 在它们之间切换。(或者 LuaLaTeX 或 XeLaTeX 中的 Babel 或 Polyglossia 的任意组合。)

传统的 8 位 TeX 字体不适合用于多语言文本。有些出版商在 2022 年仍要求你使用 PDFTeX,但这里的情况并非如此。

以下是使用 MWE 的Noto 字体,来自 Google来自该网站的一对中文翻译。对于任何错误,我深表歉意,但您可以比较三个版本中的字符“雪”,并查看它是否显示正确。

\documentclass{article}
\tracinglostchars=3
\usepackage[english]{babel}
\usepackage{fontspec}
\usepackage{parskip}

\babelprovide[import]{japanese}
\babelprovide[import]{chinese-simplified}
\babelprovide[import]{chinese-traditional}

\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX, Renderer=HarfBuzz }

\babelfont{rm}
          [Scale=1.0]{Noto Serif}
\babelfont[japanese]{rm}
          {Noto Serif CJK jp}
\babelfont[chinese-simplified]{rm}
          {Noto Serif CJK sc}
\babelfont[chinese-traditional]{rm}
          {Noto Serif CJK tc}

\begin{document}
\subsection*{English}
The snow glows white on the mountain tonight

Not a footprint to be seen

\subsection*{Japanese}
\begin{otherlanguage}{japanese}
降り始めた雪は 足跡消して

真っ白な世界に一人の私
\end{otherlanguage}

\subsection*{Chinese (Simplified)}
\begin{otherlanguage}{chinese-simplified}
今晚山上的雪发出白光看不见脚印
\end{otherlanguage}

\subsection*{Chinese (Traditional)}
\begin{otherlanguage}{chinese-traditional}
嶺上積雪今夜泛著白光

不見蹤跡的地方
\end{otherlanguage}

\end{document}

Noto 字体样本

答案2

该解决方案基于https://tex.stackexchange.com/a/285836/2388在 Latex2e 中编写日语重点介绍 latexPDF 下的多语言切换。我自己会听取一些意见并尝试其他解决方案(除了不能使用 Port,因此没有额外提供)。但考虑到我当前的环境是 latexPDF,我坚持这样做。

%...
\usepackage{CJKutf8}
%...
\begin{CJK}{UTF8}{min}
降り始めた雪は 足跡消して
真っ白な世界に一人の
\end{CJK}
%...
\begin{CJK*}{UTF8}{gbsn}你有问题吗?\end{CJK*}

\begin{CJK*}{UTF8}{gkai}你有问题吗?\end{CJK*}

\begin{CJK*}{UTF8}{bsmi}你有問題嗎?\end{CJK*}
    
\begin{CJK*}{UTF8}{bkai}你有問題嗎?\end{CJK*} 
%...

关键是使用 CJK 和 CJK*。仍然不确定为什么,但它有效。顺便说一句,不包括 {verbatim},它不适用于日语 CJK 最小选项。

相关内容