CTeX-org / ctex-kit

Macro Packages and Scripts for Chinese TeX users
976 stars 124 forks source link

xeCJK: 以特定方式使用 tikz 时,整篇文档的中文都无法显示 #517

Closed muzimuzhi closed 4 years ago

muzimuzhi commented 4 years ago

一个 xeCJK 文档中,如果

那么整篇文档的中文都无法显示

\documentclass{article}
\usepackage{xeCJK}
\usepackage{tikz}

\makeatletter
\tikzset{
  x name/.code={\setbox\@tempboxa=\hbox{中文}}
}
\makeatother

\begin{document}
\begin{tikzpicture}
  \node[draw, x name=名字] {测试};
\end{tikzpicture}
abc测试
\end{document}

其他信息:


上述例子的来源:

qinglee commented 4 years ago
  1. pgf 会在作图环境中将字体设置为 \nullfont , 见 https://github.com/pgf-tikz/pgf/blob/65bcaafffbd0b21974b085504b4853684d5ed8bc/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex#L227-L247 如果在作图环境中输入文本或者使用 \setbox 等排版命令,会导致 xeCJK 错误地将字体缓存为 \nullfont ,导致整篇文档对应字体的中文都不显示
  2. 如果在作图环境中使用 \setbox 等排版命令,需要在其内部使用 pgfinterruptpicture 环境。