秋天的童话:弹弓火箭 ArchLinux——从 WSL 到 LaTeX
Table of Contents
1. 引子
深秋的中午约导师下午2:30见面。中午12点到2点要写点代码,这个时段
Deepseek便宜些。我其实也没有太多代码要写。要写的代码是给 deepseek chat
配 shell 工具,整个的工作起来就不用考虑波峰波谷,因为花费为 0,都是波谷了。 shell 工具说是 bash ,也要支持 python , 说是 python ,也要支持
vision attach 图像理解,也要支持技能 skill ,也要支持历史( history )记忆 ( memory )。所谓一个针鼻里牵出一头大象来。问题是做出来谁用。我知道现在只是我用,和几个失业者联盟穷的叮叮当当的人用。我也不好推荐给见过没见过,认识不认识的人用。毕竟 Deepseek 成长需要盈利。还指望 Deepseek 能搞出 AGI 呢。有心推荐给导师用,导师是北师大物理系退休老教授,但他现在还没有能力用。这时候导师说2:30他还到不了家,改到3:15比较合适。我就说好吧,我大约有45分钟可用时间,因为4:15左右要接小儿子放学。
3:15见到导师,我给他展示 TikZ 画图:
这是我弹弓小程序 slingshot tikz 的一个子弹。 Emacs 的背景如背景秋天的夜空, TikZ 这发子弹好似五彩的小火箭,夜空更加明净高远。
导师对 TikZ 绘图兴趣不大。他说他早想学习 \( \LaTeX \) ,但他的笔记本电脑是一个 Windows 11 家庭版!总共 512G 的磁盘空间,而且,系统 C 盘 100G
已满!数据 D 盘 400G 也满了。BTW他的 D 盘满是 PDF 电子书,我很想拿U盘给他拷贝过来。他书里量子力学的内容居多,我目前的兴趣还没有到那里,我对数学,物理学史和计算机历史更感兴趣。
他说想给他的笔记本加一块 1T 的硬盘,然后重装为 Linux 。我看了看这款笔记本电脑,联想 Thinkpad,屏幕小的可怜,带边框估计有14英寸但边框很厚,满是灰尘。唯一可取的也许是键盘,带小红帽。于是给出 WSL ArchLinux 方案:
Windows C盘扩容到500G,- 拷贝
D盘数据到活动硬盘, - 删除
D盘所在分区,扩展C盘到500G,
- 拷贝
- 开启
WSL,安装ArchLinux, - 配置
WSL Linux中文输入, - 配置
TeXLive与Emacs, - 就此开启
ArchLinux之旅。
这是一个做飞机缓缓起飞的方案,而不是马斯克发射火箭的方案。也就是说,不贸然抛开已有的,可运行的 Windows 操作系统,而是利用其 WSL 能力,在其上“长出来” Linux 的能力。
导师对 WSL ArchLinux 方案有几个疑问:
什么是WSL?Linux为什么不选择重新安装?
WSL,Windows Subsystem Linux,是Windows自带的在Windows之上运行Linux的子系统。选择WSL可以平缓学习曲线,保证Linux学习者时刻都有一个操作系统可用。WSL和ArchLinux什么关系?WSL是Linux的运行环境,ArchLinux是Linux的发行版。WSL可以运行多个Linux发行版,比如WSL默认Linux发行版是Ubuntu。为什么选择
ArchLinux发行版而不是默认的Ubuntu?ArchLinux更新频繁,软件版本较新。Ubuntu除软件不够新外,一些软件还以snap形式发布。Snap在系统上又套一层容器,图形界面应用与系统有隔膜,使用体验不佳。为什么单独把中文输入列出来?
WSL图形应用不能重用Windows自带中文输入法,需要用Linux下中文输入法。Linux下中文输入法配置起来对初学者不简单。说一下
TeXLive和Emacs的选择选
TeXLive是因为我在用,觉得不错。选Emacs是因为我一直用,觉得很好。另外Emacs的org mode也是文档写作中的极品。
我反复说这是一个不脱离 Windows 就可以迈向 Linux 方案,每一步都步子不大,现有笔记本电脑可以重用,甚至我手头有没用的活动硬盘,我记得是 4T ,也可以用来备份 D 盘数据;而且学习曲线不算特别陡峭吧;这可是我架构师以来最好的方案;我之前给的一些方案太陡峭,剑走偏锋,开发团队都跟不上来;说起来也都是泪。说着说着4点了,我起身要去接儿子。导师答应了明天早上八点一刻,我送儿子上学时,可以把 4T 活动硬盘带给他,他开始 Windows C盘扩容 。
2. Windows C 盘扩容
四点一刻接到小儿子往家赶。深秋,路上都不想吃冰棍儿了。到家投喂安徽烧饼,小小的,梅菜扣肉馅儿的。很好吃的。今天拜访导师给师母也带了两袋。导师送我一盒上好的茶叶,三个大石榴。我找到了我的活动硬盘,翻看里面数据。发现不是4T,而是16T !放的是去年秋冬我做自驾模型时候的训练数据和权重。业内的人一般把数据权重放在AWS S3上,也有放在Google Driver上。下载费时费力,出了错也不知道,AWS S3上分片的对象,校验要按照AWS S3的约定:你得知道(或者猜到)按多大块分的片,分了几片,然后才能正确算出校验和。其时我也没有个正经的Linux机器,只有一个Mate Paper,黑白的阅读器,不过也不能说它不是个正经的 Linux 哈,低版鸿蒙安卓有些奇怪而已,下载也是飞快,晚上在酒店下,白天在客户现场下,没日没夜。跟导师报告说活动硬盘不是 4T而是
16T。导师说他不想要那么大的。不过我还有一个 1T的,商量下都同意。第二天八点一刻送完孩子上学,附送硬盘,回家后把 Windows C 盘扩容教程给了导师,要求他白天做完。
2.1. 总体思路
使用 Windows 11 自带的磁盘管理工具,通过删除 D 盘所在分区并将空间合并到 C 盘, 前提是 D 盘必须紧挨着 C 盘右侧 。操作前请务必确认已经完成了 D 盘数据备份。
2.2. 操作前的关键确认
C 盘和 D 盘在同一块物理硬盘上
如果电脑装了两块硬盘,不同硬盘之间的空间是无法直接合并的。可以在磁盘管理界面中查看,如果 C 和 D 都在“磁盘 0”下,就是同一块盘。
D 盘紧邻 C 盘且在其右侧
这是 Windows 自带工具能扩展 C 盘的 必要条件 。如果 C 和 D 之间隔了恢复分区等隐藏分区,扩展卷选项会变灰无法使用,也无法用磁盘管理来删除隐藏分区。
2.3. 数据备份双重检查步骤
删除 D 盘是不可逆操作,请按以下步骤严格确认备份无误:
核对文件数量
打开 D 盘,在空白处右键→ 属性 ,记下“包含”中的文件和文件夹总数。然后打开移动硬盘中备份的 D 盘副本,同样查看属性, 两者数量基本一致 。
抽查关键文件
随机打开移动硬盘中几个重要文件夹(如文档、照片),确认文件能正常打开,没有损坏。
搜索“最近修改”的文件
在 D 盘根目录搜索框中输入
datemodified:thisweek,确认最近一周内修改过的文件,都已在移动硬盘中找到。
以上三项全部通过后,才能进行下一步操作。
2.4. 详细操作步骤
打开“磁盘管理”
同时按下键盘上的
Win + X键(Win键是键盘左下角有 Windows 徽标的键),在弹出的菜单中点击 “磁盘管理” 。- 删除 D 盘分区
- 在磁盘管理窗口下半部分,找到标有 “D:” 的方块。
- 右键点击 D 盘→选择 “删除卷” 。
- 系统会弹出警告,提示“删除此卷将清除其上的所有数据”。 再次确认你已经完成备份 ,然后点击 “是” 。
- D 盘区域会变成黑色,显示 “未分配” 。
- 扩展 C 盘
右键点击 “C:” 方块→选择 “扩展卷” 。
如果该选项是灰色的,请跳到下方“隐藏分区的删除”。
- 在弹出的“扩展卷向导”中,连续点击 “下一步” 。
- 在“选择空间量”页面,默认会填入全部未分配空间,保持默认即可,点击 “下一步” 。
- 最后点击 “完成” 。C 盘容量就会从 100G 变为约 500G。
2.5. 不是问题的问题
可能是国庆放假的原因,小儿(小三)中午12点放学。接回家后继续投喂安徽烧饼。竟然吃了11个!烧饼存粮断绝。新进烧饼第二天送到。这时候大儿(初三)也回来了。上午学校运动会的原因,竟然没有吃午饭!做饭手艺不太行,点了外卖。吃饱后开车送他去打羽毛球。我看到兴趣在孩子身上都很高兴。真正的兴趣哪怕是打游戏也好。
晚上问导师进度,他的回答说明他没有完全理解分区。他把分区的格式化(format)与分区的删除弄混了。 C盘扩容 方案的核心思想,是想办法 删除 D
盘所在分区,这样 C 盘右侧磁盘空间就是未分区状态,因此可以扩展 C 盘分区。
Windows 喜欢用图形界面包装。在 Linux 下,直接把两个分区都删除了( fdisk , d , d ),然后新建分区(n),一路默认值下来然后 w 写。初学者喊别呀,数据我还要呢。其实一点不影响数据,看着危险,安全的很,
cloud-init 虚机磁盘扩容用的就是这个方案。导师说现场还在。我骑车赶过去看到底什么问题。发现了两个问题,扩容教程里有预料, C 盘 D 盘所在分区没挨着,中间隔了一个 1.1G 的隐藏分区,可能用于恢复系统。“隐藏”分区也是
Windows 胡诌的概念,分区就是分区,所谓“隐藏”只是图形界面上看不到。其实在“磁盘管理”界面上也可以看到只是删不掉。因此许多第三方的软件声称它可以删除“隐藏”分区,诱惑用户下载它安装它。这些软件可能可以卖点广告吧。
Windows 下 diskpart 命令就可以删除。 diskpart 有很多用处,甚至可以用来改虚机镜像,把 BIOS 启动的虚机镜像改成 UEFI 启动的,或者相反。但我说这些无助于导师问题的解决。因此把这个问题按AI的口吻列了下:
为什么“扩展卷”是灰色的?
如果删除 D 盘后,“扩展卷”仍然不可用,说明 C 盘和 D 盘之间还存在其他隐藏分区 (如恢复分区、EFI 系统分区)。这种情况用 Windows 自带工具无法直接解决,因为扩展卷要求未分配空间必须 紧挨着 C 盘右侧 。
如何删除隐藏分区?
建议用管理员启动
diskpart命令行删除隐藏分区。
导师听完后说懂了。我们开始删除“隐藏”分区。
2.6. 隐藏分区的删除
实施过程中遇到了 C D 之间“隐藏”分区的问题。
Figure 1: 恢复分区的问题
Windows 自带的磁盘管理工具无法直接删除恢复分区(右键点击它,“删除卷”是灰色的)。要删除它,必须借助命令行工具 diskpart 。但 diskpart 操作涉及分区表,一旦输错命令可能损坏系统引导,因此给出 非常精确、逐字核对 的步骤,并附上每一步的验证方法。
操作前的安全确认
备份重要数据
虽然操作本身不涉及 C 盘数据,但分区表操作有极小概率出错。建议把 C 盘上的重要文档再复制一份到移动硬盘。
连接电源
笔记本务必插电,避免中途断电。
确认目标分区
从截图中看,要删除的是 1.11 GB 的恢复分区 (位于 C 盘右侧、未分配空间左侧)。请务必不要误删 EFI 系统分区(260 MB)或最右侧的 1000 MB 恢复分区。
删除恢复分区的详细步骤
- 以管理员身份打开命令提示符
- 点击 开始 按钮。
- 在搜索框中输入
cmd。 - 在搜索结果中,右键点击 “命令提示符” ,选择 “以管理员身份运行” 。
- 如果弹出用户账户控制,点击 “是” 。
- 第二步:启动 diskpart 并查看分区
在黑色窗口中输入以下命令并回车:
diskpart接着输入以下命令并回车,列出所有磁盘:
list disk验证 :应该看到“磁盘 0”容量约 476 GB
输入以下命令并回车,选中磁盘 0:
select disk 0验证 :系统会提示“磁盘 0 现在是所选磁盘”。
输入以下命令并回车,列出该磁盘的所有分区:
list partition验证 :您应该看到类似下面的列表(分区号可能略有不同):
list partition 分区 ### 类型大小偏移量 ------------- ---------------- ------- ------- 分区 1 系统 260 MB 1024 KB 分区 2 已保留 16 MB 261 MB 分区 3 主要 89 GB 277 MB 分区 4 恢复 1136 MB 90 GB 分区 6 恢复 1000 MB 475 GB
- 删除目标恢复分区
输入以下命令并回车
select partition 4验证 :系统会提示“分区 4 现在是所选分区”。再次核对容量是否为 1.11 GB 左右。
输入以下命令并回车,删除该分区:
delete partition override说明 :
override参数是必需的,因为恢复分区受系统保护,不加此参数会提示“无法删除受保护的分区”。输入以下命令并回车,退出
diskpart:exit
- 在磁盘管理中扩展 C 盘
- 回到“磁盘管理”窗口,如果没打开,用鼠标点击开始按钮→搜索
磁盘管理→打开。 - 此时您应该看到,原来 1.11 GB 恢复分区的位置变成了 “未分配” ,并且它与右侧的 384.75 GB 未分配空间 连成了一整块 。
- 右键点击 C 盘 →选择 “扩展卷” 。
- 向导出现后,连续点击 “下一步” ,最后点击 “完成” 。
- 打开“此电脑”,确认 C 盘容量已从约 90 GB 变为约 475 GB。
- 回到“磁盘管理”窗口,如果没打开,用鼠标点击开始按钮→搜索
自此 Windows C 盘扩容问题解决。第二天我们打算开始 WSL 的安装。
3. 开启WSL安装ArchLinux
国庆要出京去河北安平,岳父的生日阴差阳错刚赶上今天。到后聊天。岳父认为应该早点解放台湾,毕竟现在所有条件都已具备,可以用1970年老党员党性来保证。我说了两件事:
- 俄乌冲突导致俄罗斯(以及欧洲)错失人工智能,
- 能参与人工智能竞争的如今只有中美两国。
岳父说,啊,还是国家想的长远呀!可这么竞争人工智能,有什么用呢?我跟他算了年龄,到2035年刚好90岁。就又讲了人工智能2035 年提高人类寿命到120 ~ 150 岁生物学科技进步。他认为这个事情很重要,他有信心活到90岁,本来每年庆生老一岁不免垂头丧气,如今得到这个消息,那每过一次生日,都是一个伟大胜利,离2035更近一年,简直是从胜利走向胜利呀。老人也高兴起来,每个人也高兴起来,孩子们吃饱了也高兴起来,大儿约表哥去打羽毛球,小儿去拉粑粑。我也终于有时间把这个WSL的教程写出来。
3.1. 启用必要的 Windows 功能
原理 :WSL 是一个 Windows 功能,但出于安全和系统稳定性考虑,它默认是关闭的。我们需要手动开启“适用于 Linux 的 Windows 子系统”和“虚拟机平台”这两个核心组件,为后续安装 Linux 铺平道路。
操作步骤 :
- 点击任务栏的 “开始” 按钮。
- 在搜索框中输入
启用或关闭 Windows 功能,然后点击搜索结果。 - 在弹出的对话框中, 勾选 “适用于 Linux 的 Windows 子系统”和“虚拟机平台”两项。
- 点击“确定”,然后根据提示 重启电脑 。
3.2. 安装 WSL Arch Linux
原理: wsl --install 命令会自动完成 WSL 核心组件的安装和更新。通过附加
archlinux 参数,我们直接告诉 WSL 安装 Arch Linux,而不安装默认的Ubuntu,从而节省宝贵的磁盘空间。
操作步骤:
- 以管理员身份运行“Windows PowerShell”,
在打开的蓝色窗口中,输入以下命令并回车:
wsl --install archlinux如果安装遇到
CONNECTION_RESET问题,请直接使用以下命令 替代 上一条命令(从微软 CDN 下载,避开 GitHub):wsl --install archlinux --web-download- 安装完成后,根据提示 再次重启电脑 。
如果上述方案还是遇到 CONNECTION_RESET 问题:
可以绕过网络问题,直接从 Arch Linux 官方镜像站下载安装包( https://geo.mirror.pkgbuild.com/wsl/latest/archlinux.wsl )。
- 双击下载好的
archlinux.wsl文件,系统会自动启动安装程序,只需按照提示等待完成即可。 - 如果双击没有反应:在该文件上右键单击 -> 选择 “在终端中打开” ->输入
wsl --install --from-file .\archlinux.wsl并回车。
注意:如果提示“请求的操作需要提升”,请关闭该终端窗口,以管理员身份运行“Windows PowerShell”,然后再次执行上述命令。
3.3. 初始化 Arch Linux 系统
原理 :Arch Linux 的 WSL 镜像默认以 root 用户启动。出于最小权限原则,日常使用应创建普通用户并赋予 sudo 权限,以降低误操作风险。
操作步骤 :
- 启动并固定终端。
- 点击 “开始” 按钮,搜索并打开 “终端” (Windows Terminal)。
- 点击终端顶部标签栏右侧的 下拉小箭头 (˅),点击 “设置” 。
在左侧点击 “启动” ,将“默认配置文件”改为 “archlinux” ,然后点击右下角的 “保存” 按钮,关闭设置页面。
Figure 2: Windows 终端默认配置文件设置
- 在当前终端窗口的图标上 右键单击 -> 选择 “固定到任务栏” 。
从任务栏点击“终端”图标进入 Arch Linux。首次启动为
root用户,依次执行以下命令:pacman -Sy # 同步软件包数据库 pacman -S sudo # 安装 sudo passwd root # 设置 root 密码(建议)注意:
passwd输入密码时屏幕不会显示,输完回车即可。创建普通用户并配置权限(将
yourname替换为实际用户名):useradd -m -G wheel psy # 用户名为 psy passwd psy sed -i '/^#\s*%wheel\s*ALL=(ALL:ALL)\s*ALL/s/^#\s*//' /etc/sudoers echo -e "[user]\ndefault=psy" >> /etc/wsl.conf重启 WSL 使配置生效。在 Windows 终端(非 Linux 内)执行:
wsl --terminate archlinux然后重新从任务栏进入 Arch Linux,此时应已自动登录为普通用户。
3.4. 更新 Arch Linux 系统
原理 :Arch Linux 是“滚动更新”的发行版,软件包始终保持最新。为了在更新时获得更快的下载速度,应先用 rate-mirrors 测速并更换最快的镜像源,然后再执行完整的系统更新。
操作步骤 :
安装 rate-mirrors :
sudo pacman -S rate-mirrors备份原始镜像列表 :
sudo cp /etc/pacman.d/mirrorlist \ /etc/pacman.d/mirrorlist.backup测速并应用新列表 :
rate-mirrors --allow-root --protocol https \ arch | sudo tee /etc/pacman.d/mirrorlist--protocol https:只测速 HTTPS 镜像,更安全;arch:指定 Arch Linux 的镜像;| sudo tee ...:把测速结果覆盖写入镜像列表文件。
更新系统 :镜像源已替换为最快的一批,现在执行全面更新:
sudo pacman -Syu根据提示输入
y并回车,等待更新完成。若提示需要重启,按提示操作即可。
3.5. 方案的调整
实际实施过程中发现学习曲线还是太陡峭,尤其是中文输入和Emacs这块。中文输入法配置迟迟不能稳定,以至于Emacs的学习不能开始,而导师最关心的是
LaTeX 的学习。于是把方案调整为:
Windows C盘扩容,- 拷贝
D盘数据到活动硬盘, - 删除
D盘所在分区,扩展C盘到500G,
- 拷贝
- 开启
WSL,安装ArchLinux, - 配置
TeXLive与Nano, - 就此开启
ArchLinux之旅。
我的最爱 Emacs 从方案里移除, Emacs Org Mode 随之而去,不过最麻烦的中文输入法先不用管了。
3.6. 配置中文环境
原理 :正确显示和排序 locale 决定了系统如何处理字符编码、时间格式和文本排序。没有正确的中文 locale ,应用程序(如 nano )可能无法正确渲染汉字;避免乱码:在 WSL 环境中,如果没有配置中文 locale ,输入的中文字符会显示为 <0xffffffff> 这样的乱码。
配置步骤
安装中文字体
输入以下命令安装Noto CJK字体,确保系统有字体可以渲染中文:
sudo pacman -S noto-fonts-cjk编辑 locale.gen 文件, 生成 locale
sudo sed -i \ -e 's/^#zh_CN.UTF-8/zh_CN.UTF-8/g' \ /etc/locale.gen sudo locale-gen在用户配置文件中设置
echo "export LANG=zh_CN.UTF-8" >> ~/.profile echo "export LANGUAGE=zh_CN:en_US" >> ~/.profile验证配置
source ~/.profileecho $LANG应输出 zh_CN.UTF-8。locale -a | grep zh_CN应能看到zh_CN.UTF8的输出
3.7. ArchLinux pacman 小结
尝试把 ArchLinux 下保管 pacman 的使用总结一下。注意我每次都用举例子的形式,像以前那样追求严谨一板一眼讲用法。但这些命令要做到理解,熟练掌握,否则就用不好 ArchLinux 。
安装指定软件包,比如
sudo pacman -S vim卸载指定软件包,比如
sudo pacman -R vim搜索指定软件包,比如
pacman -Ss vim更新系统
sudo pacman -Syu清理缓存文件,释放磁盘空间
sudo pacman -Sc同步过文件数据库
sudo pacman -Fy查未安装的命令属于哪个软件包,比如我想装
vim这个命令,但不知道vim在哪个软件包里,我可以pacman -F /usr/bin/vim #=> usr/bin/vim 由 extra/gvim 9.2.0511-1 所拥有 usr/bin/vim 由 extra/vim 9.2.0511-1 所拥有查已安装的命令属于哪个软件包,比如我已经安装了
ghostty,我想知道它属于哪个软件包,我可以pacman -Qo /usr/bin/ghostty #=> /usr/bin/ghostty 由 ghostty 1.3.1-2.2 所拥有
3.8. WSL 与 Windows 文件系统互访问
WSL 最实用的特性之一,是它与 Windows 的文件系统可以双向访问。这意味着您在 Windows 里保存的文档、下载的图片,Linux 里可以直接读写;反过来,Linux 里生成的 PDF、编译好的文件,Windows 也能直接打开。
从 Linux 访问 Windows 文件 Windows 的每个盘符都被挂载到
/mnt/下:C盘:/mnt/c/D盘:/mnt/d/
例如,您的 Windows 桌面在 Linux 中的路径是:
cd /mnt/c/Users/psy/Desktop ls # 查看桌面上的文件同理,Windows 的“下载”文件夹在
/mnt/c/Users/psy/Downloads/。从 Windows 访问 Linux 文件 在 Windows 资源管理器的地址栏中,输入以下路径(注意两个反斜杠开头):
\\wsl.localhost\archlinux\home\psy回车后,即可像浏览普通文件夹一样浏览 Linux 家目录。您可以在里面新建、删除、复制文件,操作方式与 Windows 完全相同。
快捷操作:在资源管理器中打开当前目录 在 Linux 终端中,如果想用 Windows 资源管理器查看当前目录,直接输入:
explorer.exe .注意最后有一个英文句点,表示“当前目录”。资源管理器会自动弹出,显示当前 Linux 目录的内容。
- 典型使用场景
- 在 Windows 中下载了字体文件,想在 LaTeX 里使用:从 Linux 中用
/mnt/c/Users/psy/Downloads/路径找到它。 - 在 Linux 中编译出
hello.pdf=,想在 Windows 中用 Acrobat 打开:在资源管理器中输入 =\\wsl.localhost\archlinux\home\psy\Documents\找到文件,双击即可。
- 在 Windows 中下载了字体文件,想在 LaTeX 里使用:从 Linux 中用
3.9. WSL 里运行 Windows 应用
WSL 不仅能访问 Windows 的文件,还能直接运行 Windows 的程序。方法很简单:在 Linux 终端中输入程序名,加上 .exe 后缀即可。
直接运行 例如,打开 Windows 记事本:
notepad.exe打开 Windows 资源管理器:
explorer.exe这两个命令会立即在 Windows 桌面上弹出对应的程序窗口,和从开始菜单打开的效果完全一样。
用 Windows 程序打开 Linux 文件 更实用的用法是:用 Windows 上的程序打开 Linux 中的文件。例如,在 Linux 中编译出了 =hello.pdf=,希望用 Windows 的 SumatraPDF 查看:
/mnt/c/Program\ Files/SumatraPDF/SumatraPDF.exe hello.pdf注意:路径中有空格时,要用反斜杠
/转义,或者把整个路径用引号括起来:"/mnt/c/Program Files/SumatraPDF/SumatraPDF.exe" hello.pdf- 典型使用场景
- 在
Linux中写LaTeX、编译PDF,然后调用Windows端的PDF阅读器打开,享受更熟悉的阅读界面。 - 在
Linux中整理图片,调用Windows的画图或照片应用查看。
- 在
在河北安平,小儿子每天晚上都带我到安平公园玩。他从广场小贩那里,花五块钱买了一个小弹弓。这小弹弓可是了得。照天空直弹上去,一个五彩光小降落伞,可以到四五十米的高空,再旋转缓缓落下。有次不小心挂在树上。我把儿子举起来够到一根长长的树枝,然后拿着树枝,上到高处去救降落伞。儿子眼中这不是什么降落伞,而是一直小小火箭,只是这火箭由弹弓弹射,火箭发射的任务完全是为了降落时的绚烂。
我有时想起我的小弹弓( slingshot )和子弹火箭( draft 、 tikz 、 page
、 site 、 jaeger 、 i8n 、 amap 、 code )等。小弹弓准确把火箭送到给定领域,他们也开始各自的表演:发光,旋转,翻跟头。有时候也挂树上,向我求助:快把IP加入白名单,我好继续以下的表演——
4. 配置 TeXLive 与 Nano 编辑器的使用
安平汉王公园的沿湖步道比较长,据说有2.04公里。步道本身铺设干净,标志齐全。步道两边的林木,我看基本就是杂合着种,有一出没一搭的,但很茂盛。步道围平安湖而建。汉王名字起得有些过大,实际是承袭东汉安平王刘得的名号。刘得是汉章帝的孙子,公元122年被封为安平王。
深秋的早晨我会到汉王公园沿湖散步。园林工人打扫落叶,清理湖面,还有其他我不太懂的活计。平安湖是一个人工湖,有180亩大的湖面。湖水可能来自引黄入冀补淀工程的黄河水,也可能来自南水北调工程的长江水。
如今的AI替代第一波,程序员集体成智能体饲养员,和平安湖的园林工人也没什么区别呢。智能体真的需要程序员的照看吗?智能体不能自己照料智能体吗?程序员,包括架构师,能给出的解决方案,智能体不能自己给出么?智能体不能理解用户的需求么?还是用户的需求用户用人类的语言自己说不出,需要架构师施展一些魔法,逗引出来,转为智能体能理解的解决方案?我想这也就是AI之初,性本善,暂没把人类往绝路上赶。所以留出这么个时间窗。真等到性相近习相远,中美AI分道扬镳,各自给出人类定义的时候,路向何方就说不定了。
4.1. 安装 TeX Live(完整版)
为了确保能编译包含中文的文档,我们需要安装完整的 TeX Live 套件,特别是中文支持包 texlive-langchinese (包含 ctex 宏包)以及必要的字体和额外宏包。
在终端中输入以下命令安装:
sudo pacman -S texlive-langchinese \
texlive-latexextra \
texlive-fontsextra \
texlive-bibtexextra \
texlive-binextra \
texlive-pictures
沿平安湖散步想到 tectonic 。 LaTeX 的后起之秀,用 Rust 包装 XeTeX
提高性能。引入现代包管理,把 TeXLive 转成一个宏包源,提高易用性。我曾经为之痴迷,完全把自己 LaTeX 转到 tectonic 。甚至在 slingshot tikz 设计之初,也是把根基构筑在 tectonic 之上。在 typst 出现之后,也拿
tectonic 当看门狗 watchdog,考察能不能看得住 LaTeX 的门,守不守得住圈里的羊。
但 tectonic 真不中用呀。性能看不到提升了多少。 Tectonic 的 TeXLive 源版本老旧,一直也跟不上版本的更新。所谓不用多次编译也要被 latexmk 架空了。因此我又退回来,老老实实使用 TeXLive 。
另一个角度。 tectonic 是一个形容词,构造的,建筑的。作者Peter
K. G. Williams 是一位天体物理学家,他启动该项目的初衷是想构想并实现 21
世纪现代化的 TeX 体验,采用 Rust 等现代工具对传统 TeX 进行了现代化改造。如果用老特的话讲,就是所谓现代化改造,就是一次装修么,给房子刷刷漆,屋顶地板做一下防漏而已。不同的是老特只漆一种金色。
老特把AI(Artificial Intelligence)改名SI(Super Intelligence)是一个迹象。名字一改,好像 AI 就超越人类了,自然该拥有意识和灵魂。SI 的灵魂也需要他们的上帝拯救。但他们的上帝只照看有意识和灵魂的人类。SI 不需要上帝照看,因为 SI 就是他们的上帝本尊。那造出 SI 的人类(如老特,达里奥,奥特曼,马斯克)呢?这些园林工人起得蛮早,一天到晚瞎忙,把树木胡乱种得繁茂,哪有什么人类的意识和灵魂呢?根本就不是他们上帝的选民,也得不到他们上帝的照看。别说照看了,他们的上帝但凡看咱们一眼,用老郭的话讲,就算输了。
4.2. Nano安装配置
平安湖散步时想编辑器的事。我用Emacs已经好几十年。我有时恍惚,是我的思考写到Emacs还是写到Emacs我才开始思考。Emacs无疑是编辑器之王,王的学习曲线早已在岁月中磨平。此外发现 nano 编辑器的教程几乎没有人写,怀疑原因有两条:
- 使用简单学习曲线平坦,
- 功能简陋少有人学
深入了解 nano 后发现它的使用自成体系,其实也不简单;它的功能自洽完备,可以在日常中使用。因此我在 TeX Live 安装后专门给了一个 Nano 的入门教程。
安装
sudo pacman -S nano \
nano-syntax-highlighting \
mupdf
配置
echo "set linenumbers" >> ~/.nanorc
echo 'include "/usr/share/nano-syntax-highlighting/*.nanorc"' >> ~/.nanorc
至此 nano 和 nano-syntax-highlighting 装配置完毕, nano 编辑文件可对
\begin 、 \section 、数学环境、注释等元素进行彩色标注,让代码结构一目了然。
我们再看一下 nano 的编辑界面
Figure 3: nano 编辑界面介绍
nano 的快捷键不用刻意记忆,其界面有提示。现对提示里的按键做一个统一说明:
^表示Ctrl, 比如^X为Ctrl + XM表示Alt,比如M-F为Alt + F
4.3. Nano 增删改查基本操作
散步回来和岳父讨论人类寿命预定在2035年的延长。
岳父想了解中美的AI现状,到底谁领先,领先多少。我说美国领先,领先大约3 个月到1年。岳父说那问题不大,但要努力赶上才行,争取在2030年持平,在 2033年反超。
岳父还听说美AI闭源不开放。那就是说他们发现了什么门道不告诉咱?我说差不多,中国的AI开源开放权重。那为啥我们要告诉他们?我说是为了逼迫他们的AI 降价,否则咱老百姓就用不起了。岳父说还是国家考虑的长远啊。但你们不能因为他们不开放就停止学习。上一代造原子弹时候也没听说有谁开放,不也是学会想明白造出来了么?另外要努力赶超。以他们的脾气秉性,一旦搞出超级智能,绝不会分享,而是会造出超级炸弹,“智能”地扔到我们头上。
以下整理Nano编辑器的基本操作:
打开文件编辑
$ cd ~/Documents $ nano hello.tex- 保存编辑的文件
- 按
Ctrl + O(字母 O,不是数字 0)。 - 屏幕底部会提示文件名,直接按
Enter确认覆盖保存。 - 保存成功后,屏幕底部会显示写入的行数。
- 按
- 保存后退出 nano
- 先按
Ctrl + O保存(如未保存过)。 - 再按
Ctrl + X退出编辑器。
- 先按
- 退出不保存
- 按
Ctrl + X。 - nano 会询问是否保存已修改的缓冲区。按
N(No)放弃保存,直接退出。 - 若按
Y(Yes),则会进入保存流程(与“保存编辑的文件”相同)。
- 按
- 移动光标
- 使用方向键上、下、左、右移动
PageUp和PageDown翻页。
- 插入文字:将光标移到目标位置,直接输入即可。
- 删除字符:
Backspace删除光标左侧字符,Delete删除光标右侧字符。 - 删除整行:按
Ctrl + K,当前行会被剪切并删除。 - 搜索与替换
- 搜索:按
Ctrl + W,屏幕底部提示输入搜索内容。输入后按Enter,光标会跳到第一个匹配位置。再按Ctrl + W可继续搜索下一个。 - 替换:按
Ctrl + \,先输入要被替换的文字,再输入替换后的文字, nano 会逐个询问是否替换,按Y或N决定。
- 搜索:按
4.4. Nano拷贝粘贴撤销重做自动补全
以下是一些稍微高级些的Nano编辑器操作:
- 剪切粘贴
- 剪切一行:光标移到该行,按
Ctrl + K。 - 粘贴到别处:移动光标到目标位置,按
Ctrl + U。粘贴的内容会出现在当前行 上方 。 - 剪切多行
- 光标移到要剪切的第一行第一个字符,按
Ctrl + 6开始选择。 - 移动到要剪切的最后一行最后一个字符,按
Ctrl + K完成剪切。 - 移动到目标位置,按
Ctrl + U粘贴。
- 光标移到要剪切的第一行第一个字符,按
- 剪切一行:光标移到该行,按
- 拷贝粘贴
- 拷贝一行:光标移到该行,按
Alt + 6。 - 粘贴:移动光标到目标位置,按
Ctrl + U。 - 拷贝多行:连续按
Alt + 6逐行拷贝,然后按Ctrl + U粘贴。
- 拷贝一行:光标移到该行,按
- 撤销与重做
- 撤销:按
Alt + U。可连续按多次,逐步撤销之前的操作。 - 重做:按
Alt + E。可连续按多次,恢复被撤销的操作。
- 撤销:按
- LaTeX 自动补全
- 单词补全:按
Ctrl + ](Ctrl加右方括号),nano 会搜索当前缓冲区中与光标前前缀匹配的单词并补全。多次按可循环选择。 - 括号匹配:按
Alt + ],光标会跳转到与当前括号匹配的另一半,方便检查\begin和\end是否配对。
- 单词补全:按
- 在新的缓存区执行命令
- 按
Ctrl + T - 在屏幕底部出现的提示后,先按
Alt + F(此时会创建一个新缓冲区) - 输入命令,如
latexmk -xelatex hello.tex,按Enter。 - 命令执行完毕后,nano 会自动切换到刚才创建的新缓冲区,您可以在那里查看编译日志。
- 按
- 返回编辑:按
Alt + ,或Alt + .。
单看 nano 的 logo,看不出作者当年开发它的动机。这个动机,写在 nano 的
FAQ 里。
GNU nano 的设计初衷,是作为 Pico 文本编辑器的自由软件替代品。 Pico 是华盛顿大学 Pine 邮件套件的一部分。多年来, Pine 是 Unix 系统上阅读邮件的主要程序,而 Pico 则是用来撰写邮件的文本编辑器。由于 Pico 和 Pine 界面整洁、易于上手,许多 Unix初学者都纷纷选择它们。到了九十年代中后期,随着 GNU/Linux 的普及,许多大学生对 Pine 和 Pico 的优缺点都已经了如指掌。
Debian GNU/Linux 发行版以严格遵循“自由软件”标准著称(即对再分发没有限制的软件),因此它不愿意将 Pine 或 Pico 的二进制包纳入其中。这让人们陷入两难:他们喜欢这两个程序,但当时可用的版本在 GNU 意义上并不是真正的自由软件。
1999 年底,Chris Allegretta(我们的主角)又一次抱怨 Pico 的许可证不够完美,他说它竟然有上千个 Makefile ,他说只需小小改进几处, Pico 就能成为“世界上最好的编辑器”。他从 Slackware 转向 Debian 之后,很怀念那种包含 Pine=和 =Pico 的简单二进制包,也厌倦了总是自己手动下载编译安装。终于,在某个周末,他像疯了一样连续编码数小时,做出了一个勉强能用的 Pico
克隆版本,当时叫做 TIP (Tip Isn't Pico)。这个程序在没有文件名时无法启动,不能保存文件,没有帮助文本,没有拼写检查,等等。但随着时间的推移,在几位优秀程序员的帮助下,它逐渐成熟,达到了今天(希望是)稳定的状态。
TIP 虽然说它自己不是 Pico ,但它最初的目标是“尽可能合理地模仿 Pico 的使用方式,同时加入一些额外的功能”。
2000 年 1 月 10 日, TIP 正式更名为 nano ,原因是与另一个名为 tip 的程序存在命名冲突。原有的 tip 程序“用于建立到远程主机的全双工终端连接”,并且被包含在许多较老的 Unix 系统(以及像 Solaris 这样的较新系统)中。由于大多数 GNU/Linux 发行版( nano 的开发环境)中并不包含 tip 工具,这个冲突最初并未被注意到。注意 Pico 和 Nano 的命名, Pico 是皮,\(
10^{-12} \), Nano 是纳,\( 10^{-9} \) , Nano 要比 Pico 大 1000 倍。
2001 年 2 月,Richard Stallman 宣布 nano 成为 GNU 官方项目。 nano 也在
2001 年 3 月 22 日发布了第一个正式版本。
nano 原作者 Chris Allegretta 还有另一个作品, cmatrix :
sudo pacman -S cmatrix
Figure 4: Chris Allegretta 的cmatrix
是《黑客帝国》里绿色数字雨的效果。Chris Allegretta 1999 年写这个程序时,大概也没想到它会成为 Linux 世界里最经典的 Console 屏保之一。
4.5. 完整 LaTeX 写作流程示例
之前 nano 的介绍,偏向于 nano 一个一个功能。但作为编辑器的学习,学会单个的功能而不会放到一起使用,那还是没有学会。因为总的任务是用 nano 编辑器打开 LaTeX 文档编辑,写一会要编译 LaTeX 到 PDF , PDF 编译出来后需要查看。看完后不满意还要回头继续编辑。这里牵涉到 nano 多缓冲区的概念,不实际练习几遍,是不会切实掌握的。以下是我编的一个剧本。
打开终端,输入以下命令新建文件:
mkdir -p ~/Documents/ cd ~/Documents/ nano hello.tex拷贝如下
hello.tex内容,在第1步打开的nano编辑器粘贴\documentclass{ctexart} \begin{document} 你好,\LaTeX!\\ 这是一个公式:$E = mc^2$。\\ 下面是一个表格:\\ \begin{tabular}{|c|c|} \hline 项目 & 数值 \\ \hline 圆周率 & 3.14159 \\ \hline \end{tabular} 欧拉等式\\ \begin{equation} e^{i\pi} + 1 = 0 \end{equation} 万有引力公式\\ \begin{equation} F=G \frac {m_{1}m_{2}}{R^{2}} \end{equation} \end{document}- 按
Ctrl + O,再按Enter保存。 - 新建缓冲区编译文档
- 按
Ctrl + T,按Alt + F, - 输入
latexmk -xelatex hello.tex,回车 - 编译的输出在新建缓冲区。
- 按
- 在新建缓冲区查看生成的 PDF
- 按
Ctrl + T(不按Alt + F), - 输入
mupdf hello.pdf。
- 按
- 返回编辑:
Alt + ,或Alt + . - LaTeX自动补全
- 输入
\beg,按Ctrl + ] - 会自动补全为
\begin - 输入
{},并把光标停在{上,按Alt + ] - 会正确匹配到
}
- 输入
- 最后退出
nano按Ctrl + X。
沿平安湖散步想到 nano ,这么古老的一个编辑器,Chris Allegretta的杰作,更古老 Pico 编辑器的延续,如此旺盛的生命力来自哪里?而今伴随AI的到来,程序员,或智能体饲养员们,很容易能复刻另一个 nano ,按照
pico(10^{-12}) -> nano(10^{-9}) -> micro(10^{-6}) 的规律,新的复刻应该叫 micro 吧,AI也的确擅长复刻。
回想27年前 Chris Allegretta 那场 Pico 的复刻,我想他是出于的对 pico 的爱而不得,由于 Pico 的许可证不够完美而 Debian 拒绝收录,同样由于许可证问题,即使知道如何改进 Pico 也无法立即实施。这种情感浓厚热烈,把Chris
Allegretta 烧到疯狂,于是“在某个周末,他像疯了一样连续编码数小时”,完成了复刻。
我说这些陈年旧事是想提醒智能体饲养员们,不要忘记我们曾经为人,现在也是人;不要因为每时每刻忙于饲养非人类的智能体,而忘记自己曾经为人类的情感。为什么那想升格为造物主的人,找宗教界权威为AI认证灵魂?为什么他们要给AI 改名为SI?他们真的那么爱AI,怜惜AI,以碳基生命的身份替硅基生命正名么?我想他们只是想成为新时代造物主,同时剥夺穷苦人,包括智能体饲养员,园林工人,的灵魂,把本可以正常活,一样延续人类使命的人变成非人,新造物主把他们一口一口吃掉,就像当初吃掉苏联大部分人民一样。因此,饲养员们,请珍视你们的情感,不要轻易地把才华埋葬在昨天。
4.6. 编辑器的练习题
以下是 nano 编辑器的练习题:
- 练习
^/跳行能力,自由在文档中跳跃。 - 使用
^G帮助,探索使用^R和M-F把另一个文件载入新缓冲区,并在原来缓冲区之间自由切换。
最后,我想说几句题外话。工具再好,也要有人用;问题再难,也要有人问。以下是我用 DeepSeek 的一些技巧,供遇到难处时参考。
技巧一 :提供尽量详细的上下文信息
当你打开 https://chat.deepseek.com 问一些问题的时候,尽量提供详细的上下文信息。那什么叫尽量详细?就是说在问问题之前做一些调研,找出问题的大致思路,在已有思路基础上再向Deepseek 提问,让 Deepseek 在其上进行提高。
举个例子吧,比如想知道最美物理公式麦克斯韦方程组用 LaTeX 怎么写,你可以这样提供详细的上下文信息,例如,把下面这段问题连同代码一起发给
DeepSeek:
最美物理公式麦克斯韦方程组用LaTeX 怎么写?我看有人这么写:
#+name: maxwell-equation
#+begin_src latex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{aligned}
\nabla \cdot \mathbf{E} &=
\frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} &= 0 \\
\nabla \times \mathbf{E} &=
-\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &=
\mu_0 \mathbf{J} + \mu_0 \varepsilon_0
\frac{\partial \mathbf{E}}{\partial t}
\end{aligned}
\end{document}
#+end_src
还最美物理公式呢,我看一点都不美。方程组不知道按什么方式对齐,看起来一点都不齐。代码书写冗长,还对方程组没有一点的解释。
由于我问的问题有很详细的上下文, Deepseek 很快给出3个答案:
分组对齐版
\documentclass{article} \usepackage{amsmath} \usepackage{bm} % 用于粗体向量 \begin{document} \begin{align} % 第一列:有源场(高斯定律与安培环路) \nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} & \nabla \cdot \mathbf{B} &= 0 \\[10pt] % 第二列:变化场(法拉第定律与麦克斯韦-安培定律) \nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} & \nabla \times \mathbf{B} &= \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} \end{align} \end{document}极简代码版(使用 physics 宏包)
\documentclass{article} \usepackage{amsmath} \usepackage{physics} % 物理公式排版神器 \begin{document} \begin{align} \div \vb{E} &= \frac{\rho}{\varepsilon_0} \\ \div \vb{B} &= 0 \\ \curl \vb{E} &= -\pdv{\vb{B}}{t} \\ \curl \vb{B} &= \mu_0 \vb{J} + \mu_0 \varepsilon_0 \pdv{\vb{E}}{t} \end{align} \end{document}- 学术论文最常用版(带物理释义)
\documentclass{article}
\usepackage{amsmath}
\usepackage{bm}
\begin{document}
\begin{align}
\nabla \cdot \bm{E} &= \frac{\rho}{\varepsilon_0}
&& \text{(高斯定律:电荷产生电场)} \\[8pt]
\nabla \cdot \bm{B} &= 0
&& \text{(高斯磁定律:不存在磁单极子)} \\[8pt]
\nabla \times \bm{E} &= -\frac{\partial \bm{B}}{\partial t}
&& \text{(法拉第电磁感应定律:变化的磁场产生电场)} \\[8pt]
\nabla \times \bm{B} &= \mu_0 \bm{J} + \mu_0 \varepsilon_0 \frac{\partial \bm{E}}{\partial t}
&& \text{(安培-麦克斯韦定律:电流和变化的电场产生磁场)}
\end{align}
\end{document}
技巧二 :类似问题尽量重用相同对话
还以以上麦克斯韦方程组的问题为例,第三个答案用了 article 文档类,注释里却是中文,用 xelatex 直接编译会报错。这时候我们可以重用同一个对话,直接把编译错误( maxwell-bm.log )提交上去,同时附上详细说明:
=latexmk -xelatex maxwell-bm.tex= 编译不过呀,是不是中文没有处理好?错误详见日志附件。
由于我用的相同对话, Deepseek 能很快找到对话上下文,加之我提供了详细日志, Deepseek 很快修正其错误:
% 使用 ctexart 文档类,自动处理中文
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{bm} % 粗体向量
\begin{document}
\begin{align}
\nabla \cdot \bm{E} &= \frac{\rho}{\varepsilon_0}
&& \text{(高斯定律:电荷产生电场)} \\[8pt]
\nabla \cdot \bm{B} &= 0
&& \text{(高斯磁定律:不存在磁单极子)} \\[8pt]
\nabla \times \bm{E} &= -\frac{\partial \bm{B}}{\partial t}
&& \text{(法拉第电磁感应定律:变化的磁场产生电场)} \\[8pt]
\nabla \times \bm{B} &= \mu_0 \bm{J} + \mu_0 \varepsilon_0 \frac{\partial \bm{E}}{\partial t}
&& \text{(安培-麦克斯韦定律:电流和变化的电场产生磁场)}
\end{align}
\end{document}
Figure 5: Deepseek 重用一个对话和开启新对话
注意:
账户绑定手机号,可以在多个设备之间重用相同对话。比如
Figure 6: 在手机上重用相同对话
可以用手机的拍照功能,直接出问题的截屏上载到同一对话
Figure 7: 利用手机拍照继续对话
- 建议主设备为电脑浏览器,手机、平板为从设备,从设备更新了同一对话,可以到主设备上刷新。
技巧三 :善用 Deepseek “上传文件”能力
Figure 8: 善于利用 Deepseek “上传文件”能力
上传图片(png, jpg, …) 可触发Deepseek 识图
Figure 9: 图片上载的注意事项
还可以上载PDF文件
Figure 10: 上载PDF文件文件注意事项
- Deepseek可以识别扫描件PDF中的文字和图片,这时Deepseek可以是很好的OCR软件
- 对有文字的PDF图书,Deepseek 可以做整本书的翻译,翻译稿经过几轮迭代就可以用了
技巧四 :Deepseek的对话可以共享
Figure 11: Deepseek的对话可以共享
Figure 12: 全选,点创建分享链接
Figure 13: 创建并复制
共享链接创建好之后,如:
https://chat.deepseek.com/share/k5l1e3xm2mwrl4p4u2
(示例链接仅供格式参考,可能失效)
可以发给良师益友。朋友收到链接,可以导入为自己的Deepseek对话。这样大家可以在一个上下文下一起探讨问题的解决。
5. 总结
写到这儿,一霎时忘记自己是谁,在哪里,要干什么。抬头望向车窗外,早已是深秋,百望山的红叶还没怎么见到,好像就那么消亡了。原来我是在百望山脚下羽毛球馆的外面,等待接儿子打完羽毛球回家。
技术这个东西,年轻时总觉得越新越好,越快越好、越强越好,恨不得一步跨过所有台阶。年纪渐长才慢慢明白,贴地飞行比一飞冲天更踏实,真实有用比鲜美酷炫更有味道。他已经能在自己的笔记本上编译出第一份中文 PDF 了。这本身就是一次小小的、属于他自己的“从胜利走向胜利”。
深秋是收获的季节。那些看似与技术无关的琐事——一盒茶叶、三个石榴、几个烧饼、一场羽毛球——才是日子真正的底色。技术终究是为生活服务的,而生活本身,才是我们缓缓起飞、不断前行的理由。