当我在256GB存储的M1 MacBook Air上第一次安装BasicTeX时,本以为找到了完美的平衡点——轻量、省空间,又能满足偶尔的LaTeX需求。但现实很快给了我一记耳光:每次打开同事发来的.tex文件,总会出现各种宏包缺失的报错,而手动安装这些依赖的过程简直是一场噩梦。这让我开始重新思考:在M1芯片和有限存储空间的约束下,什么才是TeX发行版的最佳选择?
BasicTeX作为TeX Live的精简版本,最初吸引我的正是其小巧的体积。官方数据显示其基础安装包仅需约100MB空间,而完整版MacTeX则超过5GB。对于只有256GB存储的MacBook Air用户来说,这种空间节省似乎至关重要。
但问题很快显现:
sudo tlmgr install <package>的命令,并输入密码确认bash复制# 典型的基础宏包缺失场景
! LaTeX Error: File `algorithm2e.sty' not found.
更令人沮丧的是,某些模板需要的宏包数量惊人。我曾遇到一个学术会议模板需要额外安装23个宏包,整个过程花费了40多分钟。这种体验彻底打破了BasicTeX"即装即用"的幻想。
当BasicTeX的不足变得难以忍受时,我开始认真考虑MacTeX-no-gui这个折中方案。与完整版MacTeX相比,它去除了约2GB的GUI应用程序(如TeXShop),但保留了完整的TeX Live功能核心。
| 版本 | 基础安装大小 | 完整使用预估大小 | 包含内容 |
|---|---|---|---|
| BasicTeX | ~100MB | 1-3GB | 核心引擎+极少数宏包 |
| MacTeX-no-gui | ~3GB | 5-8GB | 完整引擎+常用宏包+文档 |
| 完整MacTeX | ~5GB | 8-12GB | 含GUI工具+示例+完整文档 |
对于256GB的MacBook Air,MacTeX-no-gui多出的2-3GB空间换取的是:
texdoc命令随时查阅)2021年起,MacTeX开始提供ARM原生支持。通过Universal Binary方式,同一安装包在Intel和M1芯片上都能获得最佳性能。实测显示:
bash复制# 检查TeX引擎的架构支持
lipo -archs /usr/local/texlive/2022/bin/universal-darwin/tex
# 输出应包含:x86_64 arm64
如果你也决定升级,以下是经过验证的安全迁移步骤:
bash复制# 通过Homebrew卸载(如果当初通过brew安装)
brew uninstall basictex
brew uninstall tex-live-utility
# 手动清理残留文件
sudo rm -rf /usr/local/texlive/2020basic
sudo rm -rf ~/Library/texlive/2020basic
通过Homebrew安装基础框架:
bash复制brew install --cask mactex-no-gui
下载Universal补丁包(从TUG官网获取):
bash复制curl -O https://tug.org/mactex/Universal.pkg
sudo installer -pkg Universal.pkg -target /
验证架构支持:
bash复制cd /usr/local/texlive/2022/bin/universal-darwin
lipo -archs pdflatex # 应显示"x86_64 arm64"
镜像源配置(大幅提升下载速度):
bash复制sudo tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet
智能缓存管理(节省空间):
bash复制tlmgr option autobackup 0 # 禁用自动备份
tlmgr option docfiles 0 # 不安装文档
tlmgr option srcfiles 0 # 不安装源代码
切换到MacTeX-no-gui三个月后,这些技巧让体验更上一层楼:
tlmgr install --dry-run预览依赖关系sudo tlmgr clean --all清除缓存tlmgr freeze锁定关键宏包版本遇到复杂学术期刊模板时,MacTeX-no-gui的完整宏包集合让编译成功率从BasicTeX的约60%提升到了95%以上。虽然多占用了几个GB的空间,但节省的时间和精神损耗绝对值得。
在M1芯片上,原生ARM支持的另一个优势是Xcode协同工作流的流畅性。当需要编译包含Python代码块的LaTeX文档时,原生ARM版的pythontex包能直接调用M1优化的Python环境,避免了架构转换的性能损失。