XeTeX中文解决方案(temp)

时间:2023-03-09 07:26:02
XeTeX中文解决方案(temp)

临时记录一下XeTeX的中文解决方案。一些包的文档只是走马观花得到的解决方法,所以可能有诸多纰漏。

另个人还是比较看好LuaTeX,但是在里边鼓捣中文还是一团糟,等探索一下再回来补充。

我使用的包是xeCJK, 推荐的调用方法是

\usepackage[LocalConfig=name]{xeCJK}

  

其中的LocalConfig=name表示在搜索路径中寻找名为"xeCJK-name.cfg"的配置文件。这样就可以复用关于中文自体的配置了。

在xeCJK中写有:

使用TeX Live的用户, 可以新建下列目录, 然后再把xeCJK-<name>.cfg放在里面:
      texlive/texmf-local/tex/xelatex/xecjk
最后还需要在命令行下执行mktexlsr,刷新文件名数据库以便TeX系统能找到它。

问题在于在类Linux系统中, 一般不会把文件写到~以外的地方的。关于在~应该放在那里,现在能从安装sty的guide里得到点提示。我直接把相关的命令扔在这里好了,有时间搞清楚了再整理~ 可以看出来的是TeX Live有些特别的环境变量。

kpsewhich -var-value=TEXMFHOME

texhash `kpsewhich -var-value=TEXMFHOME`

  

  

xeCJK的文档有几个奇怪的地方:复制中文出来的时候是乱码。虽然这间接实现了保护内容的作用,但是鉴于复制英文没有问题这显然是个bug,况且也有违开源精神,(⊙_⊙)有时间再看看神马情况、

OK 回归正题。xeCJK设置字体有两个常用的命令:

\setCJKmainfont{KaiTi}
\newCJKfontfamily[hei]\heiti{SimHei}

  详细解释看文档, 简要的说明是第一行设定默认的CJK字体, 第二行实际上定义了一个新的 \heiti, 可以改变当前环境的字体为SimHei。两点说明:

为了实现\textbf \emph, 对应的字体family要有Bold & Italic face, 但是很多中文字体实际上是没有这些face的,那么xeCJK提供了两个选项

AutoFakeBold=true, AutoFakeSlant=true

  来实现一个“伪”粗体和斜体。

但是中文环境中用该字体加粗和斜体是很难看的(至少我这么认为)。通常的做法是用黑体表示“加粗”来实现“重点”的作用。那么其实可以这样:

\setCJKmainfont[BoldFont=SimHei]{KaiTi}

  OK 相信不用解释了。

另外提到的第二个命令,个人实际上不推荐。LaTeX的思想更多的是按逻辑组织文档而不是dive into design,所以我一般会尽量避免在文档中出现直接控制排版的语句。遇到这样的需要我会首先考虑是不是我的文档组织或者逻辑的问题。