在macOS上使用LaTeX进行中文排版,首先需要确保基础环境配置正确。我刚开始接触LaTeX时,花了不少时间折腾环境,现在把这些经验分享给你,能帮你少走弯路。
MacTeX是macOS上最完整的LaTeX发行版,它包含了TeX Live和常用的编辑器。安装完成后,建议用TeX Live Utility更新所有宏包到最新版本。这里有个小技巧:更新时选择"仅安装必要更新",能节省大量时间。我实测完整更新需要3小时以上,而必要更新通常30分钟就能搞定。
中文排版最关键的是字体支持。macOS自带的字体和Windows不同,这导致直接用pdflatex编译中文文档会遇到各种问题。CJK宏包提供了基础的中文支持,但字体选择有限。我建议新手从ctex宏包开始,它封装了CJK功能并简化了配置流程。
CJK宏包是LaTeX处理中日韩文字的传统方案。在macOS上使用时,要注意它只支持有限的几种标准字体:
latex复制\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
这是宋体(gbsn)显示效果
\end{CJK}
\begin{CJK}{UTF8}{gkai}
这是楷体(gkai)显示效果
\end{CJK}
\end{document}
gbsn对应宋体,gkai对应楷体,这两个适合简体中文。bkai和bsmi则是繁体中文的楷体和明体。我在实际使用中发现,如果文档中同时需要简繁体,最好统一使用UTF-8编码。
编译时如果遇到字体找不到的错误,可以尝试以下方法:
我遇到过最棘手的问题是文档中混合了不同CJK环境。建议每个\begin{CJK}都有对应的\end{CJK},避免嵌套使用。
ctex宏包极大简化了中文排版:
latex复制\documentclass[UTF8]{article}
\usepackage{ctex}
\begin{document}
这是默认字体 \par
{\kaishu 楷体} {\songti 宋体} {\heiti 黑体} \par
{\fangsong 仿宋} {\lishu 隶书} {\youyuan 幼圆}
\end{document}
ctex自动处理了字体加载、标点压缩等细节。我特别喜欢它的字体切换命令,比CJK直观多了。比如\kaishu直接切换楷体,不需要记忆字体代码。
macOS下ctex有三种字体配置方案:
我建议先用默认配置,遇到特定字体需求再调整。比如要使用Windows传过来的文档时,可以临时改用fontset=windows:
latex复制\documentclass[UTF8,fontset=windows]{article}
\usepackage{ctex}
在macOS上中文排版,编译引擎的选择很关键:
我习惯用xelatex,它能自动识别系统安装的所有字体。配置TeXStudio使用xelatex的方法:
遇到"CTeX fontset `mac' is unavailable"错误时,通常是字体配置冲突。我的解决步骤:
对于字体缺失问题,可以先用fc-list命令检查系统字体列表。如果确实缺少必要字体,建议通过Homebrew安装:
bash复制brew tap homebrew/cask-fonts
brew install --cask font-sarasa-gothic
处理Windows创建的LaTeX文档时,经常会遇到字体不匹配问题。我的解决方案是:
latex复制\documentclass[fontset=windows]{ctexart}
\begin{document}
% 文档内容
\end{document}
写学术论文时,这些技巧很实用:
latex复制\documentclass[UTF8]{ctexart}
\title{论文标题}
\begin{document}
\maketitle
\section{引言}
正文内容...
\end{document}
中文文档编译较慢,可以通过这些方法优化:
如果需要更灵活的字体控制,可以手动配置:
latex复制\setCJKmainfont{STSong}[
Path = /usr/local/share/fonts/,
Extension = .ttf,
BoldFont = STZhongsong,
ItalicFont = STKaiti
]
这个配置指定了主字体为宋体,粗体用中宋,斜体用楷体。我建议把这类配置单独放在.sty文件中,方便多文档共享。
配置latexmkrc文件可以极大简化工作流程:
perl复制$pdflatex = 'xelatex -synctex=1 -interaction=nonstopmode %O %S';
这个配置让latexmk默认使用xelatex编译。我在写长篇文档时,配合VSCode的LaTeX插件,能实现自动编译和实时预览。