使用 ctex 加粗中文字符

使用 ctex 加粗中文字符

我正在做一些带有中文字符和包装的文档ctex

\usepackage[UTF8]{ctex}

然而,当我尝试用粗体排版时,说

\begin{tikzpicture} \node at (0,0) {\textbf{固态}}; \end{tikzpicture}

我立即收到错误

!pdfTeX error: pdflatex.exe (file simhei.ttf): cannot open TrueType font file for reading
 ==> Fatal error occurred, no output PDF file produced! 

中间也有一些警告

File: CJK.enc 2015/04/18 4.8.4
Now handling font encoding C00 ...
... no UTF-8 mapping file for font encoding C00
Now handling font encoding C05 ...
... no UTF-8 mapping file for font encoding C05
Now handling font encoding C09 ...
... no UTF-8 mapping file for font encoding C09
etc.

我在用miktex

现在的问题是,所有文档都是中文的,但我不会说任何中文......

答案1

ctex包有一个fontset=选项,支持以下值

adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|none

在 Windows 上,您可以从“应用和功能”控制面板中安装中文字体作为可选功能。这将使用 SimSun。我使用 LuaLaTeX 而不是 PDFLaTeX 进行编译:

\documentclass{article}
\usepackage[UTF8, fontset=windows]{ctex}

\begin{document}
regular 固态

\textbf{bold 固态}
\end{document}

SimSun 字体示例

检查第 66 页的来源手册,ctex它定义了命令,与我能读懂的中文不同\setCJKmainfont,您可以使用它来设置任意字体。(它还有\setCJKsansfont\setCJKmonofont。)这将允许其他操作系统上的某人编译您的文档并获得相同的输出。这适用于 LuaLaTeX 或 XeLaTeX:

\documentclass{article}
\usepackage[UTF8, fontset=none]{ctex}

\setCJKmainfont[Scale=MatchUppercase]{Noto Serif CJK SC}

\begin{document}
regular 固态

\textbf{bold 固态}
\end{document}

Noto Serif CJK SC 示例

但是,如果我们俩都看不懂中文手册,那么我们真正需要的(或者我能做到的)很可能只是将一些简短的中文短语复制粘贴到我们母语的文档中。这个babel软件包非常适合这样做。这需要 LuaLaTeX:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{fontspec}

\babelprovide[import=zh-Hans, onchar=ids fonts]{chinese}
\defaultfontfeatures{ Scale=MatchUppercase, Ligatures=TeX }
\babelfont{rm}
          [Ligatures={Common,Discretionary}, Scale=1.0]{New Computer Modern Book}
\babelfont[chinese]{rm}
          {Noto Serif CJK SC}

\begin{document}
regular 固态

\textbf{bold 固态}
\end{document}

新计算机现代 + Noto Serif CJK SC 示例

它甚至可以在同一个文档中在简体中文、繁体中文、日文汉字等之间切换。

在您的评论中,您提到遇到了 的一个大问题babel:它的许多软件包选项都已过时,您必须使用\babelprovide来加载某些语言。在我撰写本文时,Javier Bezos 目前正在更新文档以警告用户这一点。

相关内容