基本操作
左上角menu中,切换compiler 到xelatex
。
然后在\documentclass
声明下面加一个
\usepackage{ctex}
。
使用
\usepackage{xecjk}
可能也可以,但会有警告。
警告分析
Font “FandolSong-Regular” does not contain requested Script “CJK”。
网上搜到的解法是 \documentclass中间加一个字符集设置[fontset=windows]
,
比如
\documentclass[fontset=windows]{article}
。
寻找一下报错原因。
根据ctex文档, http://mirrors.ctan.org/language/chinese/ctex/ctex.pdf ,
ctex在无法识别系统类型(即otherwise)的时候使用fandol字体。
这说明
- 在overleaf运行环境中ctex无法检测系统类型。
- 因为无法检测系统类型,启用了保底模式,默认使用了
fandol
字体。
为什么用fandol
就有警告呢?
这有一个讲原因的文章 https://zhuanlan.zhihu.com/p/145429470。
摘录如下
xeCJK
为每个 CJK 字体默认添加特性Script=CJK
,- 部分(中文)字体没有声明对应的特性。
xeCJK
的设定是合理的(luatex-ja
默认添加了相同特性),这是字体文件的问题,和 LaTeX 无关。- LaTeX 能做的,最多是抑制这类警告,假装问题不存在。
我的理解大概就是fandol
字体里没有包含声明信息。因为fandol
字体不是为了ctex
发明的,没想过去兼容ctex
的设计。
既然如此为什么ctex
还要使用fandol呢,因为fandol是一个免费的,兼容大部分样式,环境的,中文字体包。找不到别的免费开放许可的更好更全的中文字体了。
综上来看,最好的方式就是不使用fandol。
改成别的ctex支持的字体。
根据github 讨论 https://github.com/CTeX-org/forum/issues/34
,
ctex可以支持下面的字体:
ctex-fontset-adobe.def,
ctex-fontset-fandol.def,
ctex-fontset-founder.def,
ctex-fontset-mac.def,
ctex-fontset-macnew.def,
ctex-fontset-macold.def,
ctex-fontset-ubuntu.def,
ctex-fontset-windows.def,
特别注意到,ctex是因为在overloeaf环境中无法识别系统类型才启用了保底策略fandol。
我们只需要显式地告知ctex这是一个ubuntu类型的环境就好了。
(overleaf的编译环境显然是一个linux环境)
经过测试overleaf上, mac, macnew, macold都不能用。
adobe不能用。windows不能用。founder不能用。
fandol 可以用但报警告。
ubuntu才是正确答案。
总结
在overleaf上使用ctex + 中文。
应该设置fontset=ubuntu
。
示例
\documentclass[fontset=founder, 10pt,twocolumn,letterpaper]{article}
\usepackage{ctex}