我知道您可以应用类似的方法\ch{...}
来渲染特定语言(例如中文),但是,有没有办法让它在不对内容应用命令的情况下渲染内容,而且还可以在 LuaLaTeX 或 XeLaTeX 2018 版本(最新稳定版本)中工作。
例如,如何才能使下面的内容正常工作,不会丢失字符,不会在某些字符上出现方形白框,并可以在 2018 版的 Latex 中使用?
\documentclass{article}
\usepackage{xeCJK}
\begin{document}
Japanese: フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる
Chinese: 关于数学部分
Korean: 전체 문서에 대한 기본 정보를 소개 단락.
\end{document}
非常感谢您的帮助。
答案1
更新:希望下面的代码可以解决丢失的字符。
\documentclass{article}
\usepackage{parskip}
\usepackage[fallback]{xeCJK}
\setCJKmainfont[BoldFont=HaranoAjiMincho-Bold.otf]{HaranoAjiMincho-Regular.otf}
\setCJKfallbackfamilyfont{\CJKrmdefault}{gulim.ttf}
\begin{document}
Japanese:
読サ統転ン務6危キリイ日記属して帯記ネヌイナ分碁モチワエ返地ゅびはン広沼とおは通国ふま指区ロウイ観提ニユ族曲トク車也むンり拡極保なにづか揚状侍勃ねラび。操みん強智そた締窟ねぴ悪6上手ルぜづて種当止タセ説当ね読寮クや減8様ケリトク認川るす差禁音策きがぜえ足94練ぴむびょ。
Japanese: フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる
Chinese: 关于数学部分
Korean: 전체 문서에 대한 기본 정보를 소개 단락.
\end{document}
====== 以下是我通过 TeX Live 2021 进行的原始尝试,所有软件包均已更新:
\documentclass{article}
\usepackage[fallback]{xeCJK}
\setCJKmainfont[BoldFont=FandolSong-Bold.otf]{FandolSong-Regular.otf}
\setCJKsansfont[BoldFont=FandolHei-Bold.otf]{FandolHei-Regular.otf}
\setCJKmonofont{FandolFang-Regular.otf}
\newCJKfontfamily\kaiti{FandolKai-Regular.otf}
\setCJKfallbackfamilyfont{\CJKrmdefault}{gulim.ttf}
\begin{document}
Japanese: フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる
Chinese: 关于数学部分
Korean: 전체 문서에 대한 기본 정보를 소개 단락.
\end{document}
我的答案是通过结合以下信息得出的 如何查看我的 MacTeX 安装中安装了哪些中文字体?和 使用 xeCJK 合并中文、日文和韩文文本。
答案2
如果没有语言标记,就不可能正确地做到这一点。Unicode 的原罪就是认为 16 位就足够了。为了实现这一点,Unicode 联盟为中文字符和日文汉字(以及相同中文字符的传统韩文和越南文形式)分配了相同的代码点。然后他们不得不放弃 16 位,这让他们陷入了两全其美的妥协。
babel
您可以在或中标记多个表意文字polyglossia
。此示例需要您下载Noto CJK 字体并在 LuaLaTeX 或 XeLaTeX 中编译。
\documentclass{article}
\tracinglostchars=3 % Make it an error if characters are missing.
\usepackage[english]{babel}
\usepackage{parskip}
\babelprovide[import]{japanese}
\babelprovide[import]{korean}
\babelprovide[import=zh-hant]{chinese} % Or zh-hans for Simplified Chinese
\babelfont{rm}
{Noto Serif}
\babelfont[chinese]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK tc}
\babelfont[japanese]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK jp}
\babelfont[korean]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK kr}
\begin{document}
Japanese: \foreignlanguage{japanese}{フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる}
Chinese: \foreignlanguage{chinese}{关于数学部分}
Korean: \foreignlanguage{korean}{전체 문서에 대한 기본 정보를 소개 단락.}
\end{document}
如果您尝试自动检测所有三种语言,您将得到以下结果:
\documentclass{article}
\tracinglostchars=3 % Make it an error if characters are missing.
\usepackage[english]{babel}
\usepackage{parskip}
\babelprovide[import, onchar=fonts ids]{japanese}
\babelprovide[import, onchar=fonts ids]{korean}
\babelprovide[import=zh-hant, onchar=fonts ids]{chinese} % Or zh-hans for Simplified Chinese
\babelfont{rm}
{Noto Serif}
\babelfont[chinese]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK tc}
\babelfont[japanese]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK jp}
\babelfont[korean]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK kr}
\begin{document}
Japanese: フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる
Chinese: 关于数学部分
Korean: 전체 문서에 대한 기본 정보를 소개 단락.
\end{document}
如果您在这幅图和上图之间切换,您会看到汉字以繁体中文形式显示。如果您最后加载了日文,则汉字将以日文形式显示。