返回
Featured image of post Latex中文写作踩坑记录

Latex中文写作踩坑记录

总结了一些使用中文字体的经验,踩在前辈们的肩膀上

使用环境为Overleaf,如果是本地的latex编译器的话应该不会出什么问题,本文选择循序渐进地解释,确保理解每条命令的作用

中文

首先使用XeLaTex编译,点进左上角Menu更改

\usepackage{xeCJK}
\setCJKmainfont[AutoFakeBold={4}]{AR PL UKai CN}

Overleaf默认支持的字体见手册,但是可惜的是默认的字体大多都很丑很细,很多还缺失,好不容易有好看的但是标点符号不符合简体中文的习惯,譬如上面用的这个,标点符号都在中间

于是我们使用自己喜欢的字体,将自己下载好的ttf、otf文件拖拽至新建的fonts文件夹。

\documentclass类中添加cjk-font=none,例子如下

\documentclass[a4paper,11pt,cjk-font=none]{article}

接下来设置字体路径和中文字体

\defaultfontfeatures{Path=fonts/}

\setCJKmainfont[AutoFakeBold={4}]{LXGWWenKaiScreen.ttf}
\setCJKmonofont{simfang.ttf} % 设置等宽字体

AutoFakeBold是为了实现伪粗体,自由调节想要的视觉效果。

但是这样有个问题,就是我们整篇文章都是一种字体,连衬线都没有。以下以我想让所有\section显示衬线字体为例

\setCJKfamilyfont{stkaiti}{STKaiti-regular.ttf}[AutoFakeBold={4}]

% Sections formatting
\titleformat{\section}{
  \CJKfamily{stkaiti}\vspace{-4pt}\scshape\raggedright\large
}{}{0em}{}[\color{black}\titlerule \vspace{-7pt}]

这样就和正文区分开来了,同理可以用在任何一段文字上\CJKfamily{stkaiti}\textbf{xxxx}

英文

另外如果你想精准控制英文的显示效果,可以在对应的段落前添加\fontfamily{lmss}\selectfont

默认的有以下十几种

\documentclass{article}
\begin{document}
\begin{enumerate}\fontencoding{T1}
    \fontfamily{pag}\selectfont \item Avant Garde
    \fontfamily{fvs}\selectfont \item Bitstream Vera Sans
    \fontfamily{pbk}\selectfont \item Bookman
    \fontfamily{bch}\selectfont \item Charter
    \fontfamily{ccr}\selectfont \item Computer Concrete
    \fontfamily{cmr}\selectfont \item Computer Modern
    \fontfamily{pcr}\selectfont \item Courier
    \fontfamily{phv}\selectfont \item Helvetica
    \fontfamily{fi4}\selectfont \item Inconsolata
    \fontfamily{lmr}\selectfont \item Latin Modern
    \fontfamily{lmss}\selectfont\item Latin Modern Sans
    \fontfamily{lmtt}\selectfont\item Latin Modern Typewriter
    \fontfamily{pnc}\selectfont \item New Century Schoolbook
    \fontfamily{ppl}\selectfont \item Palatino
    \fontfamily{ptm}\selectfont \item Times
    \fontfamily{uncl}\selectfont\item Uncial
    \fontfamily{put}\selectfont \item Utopia
    \fontfamily{pzc}\selectfont \item Zapf Chancery
\end{enumerate}
\end{document}

效果如下

但是XeLaTex下还有坑,如果没有效果需要用\fontencoding{T1}显式指定字体编码

这样几乎所有的坑都踩完了,鬼知道我经历了多少折磨

上述操作未考虑字体版权问题,如涉及出版请仔细辨认


前几天出了个叫ANIMAL WELL的解谜神作,只有32MB!!!银河城的又一里程碑,没空玩啊
好想去看邓紫棋、老织的演唱会┭┮﹏┭┮,但是这次应该没机会了
至于我什么时候把春节广州和五一南京的游记补上,只能说有缘再见:)
最近没怎么听歌,这首还不错

致谢

Cover:@liyuliyuzhou
Package fontspec Error: The Font SimSun can’t be found
SJTUThesis
\fontfamily{…}\selectfont does not work with XeLaTeX engine
开源书和开源技术-PDF中蛋疼的中文字体

Licensed under CC BY-NC-SA 4.0
最后更新于 2024-05-13 06:27 CST
使用 Hugo 构建
主题 StackJimmy 设计
:shirakii
-->