pdf 中不会出现一个汉字

pdf 中不会出现一个汉字

我正在排版一段德英文本,其中包含一些中文字符。我知道这里经常有人问类似的问题,但没有任何答案能提供任何帮助。我尝试了以下方法:

    % Version 1: 
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\usepackage{xltxtra,xunicode}
\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}
  %Version 2
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures[FandolSong]{Script=Default}
\usepackage{xeCJK}
\usepackage{xltxtra,xunicode}
\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}
  % Version 3
\documentclass[fontset=windows]{ctexbook}
\usepackage{fontspec}
\defaultfontfeatures[FandolSong]{Script=Default}
\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}
% Version 4
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{CJKutf8}
\AtBeginDvi{\input{zhwinfonts}}
\usepackage[ngerman]{babel}
\begin{document}
\begin{CJK*}{UTF8}{zhsong}
    waijiaquan, 外家拳
    neijiaquan, 內家拳
    \end{CJK*}
\end{document}

我总是收到缺少字体的警告,例如 Fandol 或 SimHei。但是:我在 CTAN 上看到它们包含在 TexLive 和 Miktex 中,我都使用这两个字体。那么这里的基本错误是什么,还剩下哪些选项?

答案1

您的字体缺少该字符。您可以添加命令\tracinglostchars=2以在控制台上打印警告消息,而不是将其默默打印到.log文件中。

对于这种多语言文档,只有简短的中文短语,我推荐使用 Babel。此 MWE 适用于 LuaLaTeX。

\documentclass{article}
\tracinglostchars=2 % Warn if a character is missing from the font!
\usepackage[english, ngerman]{babel}
\usepackage{fontspec}

\babelprovide[import=zh-Hans, onchar=ids fonts]{chinese} % Or zh-Hant for Traditional.
\defaultfontfeatures{ Scale=MatchUppercase, Ligatures=TeX }
\babelfont{rm}
          [Scale=1.0, Ligatures={Common,Discretionary}]{New Computer Modern Book}
% From: https://www.google.com/get/noto/#serif-hans or https://www.ctan.org/pkg/notocjksc
\babelfont[chinese]{rm}
          {Noto Serif CJK SC}
% Set up \babelfont{sf} and \babelfont{tt} here, if needed.

\babeltags{chinese=chinese}
\babeltags{english=english}
\babeltags{ngerman=german}

\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}

这将为您提供德语字幕和连字符,但当您开始输入中文时会自动切换。它还允许您使用 、 等切换\textenglish{...}语言\begin{english}

要使文档在 XeLaTeX 上编译,请删除该onchar=ids fonts选项并将所有中文文本换行\textchinese{外家拳}。这也与兼容polyglossia

ctex软件包比 XeCJK 更新,并且也可以在其他引擎上运行,它提供了两种选择不同字体的方式:fontset=\setCJKmainfont(也\setCJKsansfont\setCJKmonofont)。

\documentclass{article}
\tracinglostchars=2 % Warn if a character is missing from the font!
\usepackage[UTF8, fontset=none]{ctex}

% From: https://www.google.com/get/noto/#serif-hans or https://www.ctan.org/pkg/notocjksc
\setCJKmainfont[Scale=MatchUppercase]{Noto Serif CJK SC}

\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}

答案2

使用 SimSun(我在 Windows 10 中安装)你的角色也都在那里

\documentclass{article}
\usepackage{fontspec}
\setmainfont{SimSun}
\begin{document}
waijiaquan, 外家拳
neijiaquan, 內家拳
\end{document}

在此处输入图片描述

答案3

如果你可以下载谷歌的Noto Serif CJK 和 Noto Sans CJK 字体系列,您可能想尝试以下版本,标记为“版本 5”,该版本可在 XeLaTeX 和 LuaLaTeX 下运行。Noto Serif CJK TC 字体系列提供 6 种字体粗细(从“Extra Light”到“Black”),Noto Sans CJK TC 字体系列提供 7 种字体粗细(从“Thin”到“Black”)。

在此处输入图片描述

 % Version 5
\documentclass{article}
\usepackage[english,ngerman]{babel}

\usepackage{fontspec}
\setmainfont{Noto Serif CJK TC} 
\setsansfont{Noto Sans CJK TC}[Scale=MatchLowercase]

\begin{document}
    Hello World. 
    waijiaquan, 外家拳.
    neijiaquan, 內家拳.
    
\sffamily
    Hello World. 
    waijiaquan, 外家拳.
    neijiaquan, 內家拳.
\end{document}

相关内容