overleaf 支持中文

基本操作

左上角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 支持中文_第1张图片
这说明

  1. 在overleaf运行环境中ctex无法检测系统类型。
  2. 因为无法检测系统类型,启用了保底模式,默认使用了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}

你可能感兴趣的:(草稿箱,template,method)