惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
D
Docker
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
U
Unit 42
Recorded Future
Recorded Future
G
Google Developers Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
The Blog of Author Tim Ferriss
C
Cyber Attacks, Cyber Crime and Cyber Security
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
WordPress大学
WordPress大学
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
M
MIT News - Artificial intelligence
月光博客
月光博客
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
K
Kaspersky official blog
Simon Willison's Weblog
Simon Willison's Weblog
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
I
Intezer
Y
Y Combinator Blog
P
Proofpoint News Feed
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
Schneier on Security
Schneier on Security
B
Blog
Jina AI
Jina AI
V2EX - 技术
V2EX - 技术
雷峰网
雷峰网
Last Week in AI
Last Week in AI
V
V2EX
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
Latest news
Latest news
Google DeepMind News
Google DeepMind News
L
Lohrmann on Cybersecurity
The Last Watchdog
The Last Watchdog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
App+1 | 搭建本地版 Latex 编辑器,为你的毕业论文排版「减减负」 - 少数派
2023-11-04 · via 少数派

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


无论是本科、硕士、还是博士,论文撰写是每个学生在不同的学习阶段都会遇到的任务。目前主流的论文排版工具主要有两个阵营,Word 和 Latex,不同的工具都有其优缺点和适用范围。本篇文章记录我使用 Latex 撰写博士论文遇到的困难和解决方案,同时也会展开聊聊我为什么做出这样的选择,希望给还在观望 Latex 和使用 Latex 遇到困难的同学们一点启发。

在撰写毕业论文的时候,作者只有毕业生一个人,因此协同编辑文档的需求其实已经不复存在了。但是对于为什么仍然使用 Latex 作为排版工具,除了专业背景是最老生常谈的理由,还有两个重要的原因使我更坚定地选择 Latex 作为毕业论文的排版工具。

由 StableDiffusionXL 生成

第一点是沉没成本。在很多理工科的领域,毕业论文约等于文献综述+一系列的现有论文已成为一个事实标准。因此,原有论文的排版工具是什么,就成为了你转用其他排版工具的负担,也就是这里说的沉没成本。对我而言,由于前期大量地和导师一起用 Latex 合写文章,基本上我也不得不继续使用 Latex。

第二点是格式统一。不同的论文由于投稿的会议和期刊不同,他们排版的图表和段落格式都不一样。但是对于一份合格的毕业论文来说,在一份论文里至少要做到内部格式一致才会被学校图书馆接收,学生才能顺利毕业。对于一个编译型的语言,能够做到一份源代码+库文件生成一致的程序输出。对于 Latex 这个编译型语言来说,就是一份论文源码+模版文件生成一份格式一致的 PDF 输出。因此,对我而言,使用 Latex 能减少大量的编辑成本。

关联阅读:万字解析 | 感性与理性认识 LaTeX,学术论文排版的「行业标准」

在线 Latex 工具无法满足编辑需求

Overleaf 已经成为了在线 Latex 编辑器的事实标准。它提供了大量的国内外出版商的模版供用户直接使用甚至一键投稿;它允许免费用户邀请其他人一起在线协同编辑同一份文档;它的编辑器提供了自动补全、格式化、实时编辑、实时预览等一系列方便的功能。

但是,由于编译这个步骤需要花费相对多的计算资源,因此对于免费版的 Overleaf 来说,它限制了单次编译的最长时间。尽管官方没有明确说明超时时间为多少,但从我的经验来看,大约编译一份 ACM 或 IEEE 的标准会议模板(约 12 页)就比较接近超时的上限了。

Overleaf.com 官方价格

对于我们想要编译的博士论文来说,其一般为几十页至上百页不等,远远超过 Overleaf 免费账户的限制。想要绕过这个限制,一般来说有如下几个方法:

  • 选择性地只编译部分章节
  • 花钱购买 Premium 版本
  • 使用本地的 Latex 工具

减少待编译的数量毫无疑问是一个直接了当的解决办法,但是一般来说,不断往下撰写论文的内容的时候也需要偶尔回顾性地看看上文自己是怎么表述的,而部分编译打破了这一回顾的需求;购买 Premium 花钱解决问题诚然是一个万能的钞能力,21 美刀一个月的价格,是否值当就看个人的心理预期了;最后,如果选项二不满足于你,那么使用本地 Latex 工具编译就变成了唯一选项。本地的 Latex 工具在集成性上总是略微逊色于 Overleaf 开箱即用的环境,且我们已经对 Overleaf 的编辑器有着熟练的使用经验,那么是否可以复刻一个运行在本地的 Overleaf 编辑器来绕过编译时长的限制呢?

自建 Overleaf 本地版本

好消息是,Overleaf 开源了自家的编辑器供用户私有部署,因此上述的问题似乎可以有效解决。但是这里还需要强调一点,开源代码和其官方部署版本不一定是一致的。在我们这个文章的术语里,Overleaf 团队仅开源了其编辑器的部分,其集成性环境 overleaf.com 版本并非是开源的。但是,overleaf.com 才是我们理想中 Latex 排版工具,因此本章节主要向大家介绍如何尽量复刻 overleaf.com 这个版本以满足我们理想的编辑体验。

安装 Docker 环境

Docker 是目前部署工作中最方便的工具之一。因此,我个人比较推荐使用 docker 做部署,且后面 Overleaf 提供的部署工具也是基于 docker 环境的。安装 docker 环境建议还是参考 docker 网站上官方的安装方式,这里做一个简单的搬运。假设是在 Ubuntu 环境。

第一步需要添加 docker 的仓库到 apt 的列表中

# Add Docker's official GPG key:sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

第二步安装 docker 和 docker compose 最新版本到系统中,使用系统默认的包管理器方式安装能够很好地自动配置守护进程。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第三步,使用非管理员权限用户直接与 docker 守护进程通信,每次使用 docker 命令的时候不必记得加上 sudo 关键字,在 docker 安装文档里其实也有说明。个人来说比较推荐配置这一步,因为大部分教程默认没有 sudo 提权命令,配置非管理员权限用户能更好地避开一下不必要的麻烦。

sudo groupadd docker
sudo usermod -aG docker $USER

然后,退出你的终端或 SSH 链接,再重新打开终端或重连 SSH。这一步是为了让上述的权限配置在新的会话中生效。

第四步,测试一下 docker 环境是否能免提权直接运行。注意,该步骤需要必要且顺畅的网络连接,如无法成功下载镜像,则需要先解决网络问题再行尝试。

docker run hello-world

部署 Overleaf 容器

Overleaf 的编辑器在 Github 开源,主体代码在主仓库中,但实际安装步骤非常冗长,Overleaf 官方还贴心地把脚本制作成一个工具包给用户快捷安装。根据我的实际操作体验,我会展开讲讲其中比较关键的配置。

首先需要把工具包下载到本地环境中,这里需要 git 命令,可以通过系统包管理器以 git 为关键字安装。

git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit

切换目录到工具包中,然后初始化配置文件并查看,它会生成三份文件 overleaf.rc,variables.envversion .

cd ./overleaf-toolkit
./bin/init
ls config

三份配置文件中比较重要的配置项如下:

  • overleaf.rc
    • SHARELATEX_PORT 默认为 80 端口,但这个一般会被系统各大应用抢占,如果和你的有冲突,建议修改为 1024~65535 之间的一个数值。
  • variables.env
    • SHARELATEX_APP_NAME 这个名字可以自定义,没什么特别的影响。
    • SHARELATEX_SITE_URL 这个会影响生成用户激活链接里的 URL 的域名地址,建议根据自己的实际情况修改。注意,该域名必须能够被有效解析到服务器,否则请填写 ip 地址作为替代。
    • SHARELATEX_NAV_TITLE 标签页里的标题,可以自定义。
    • SHARELATEX_HEADER_IMAGE_URL 为了和 overleaf.com 的区分,我把这个 URL 指向了我们学校的 logo
    • SHARELATEX_LEFT_FOOTER 显示在注册界面的提示信息,由于没有实际的注册功能,因此需要显示一段文字说明管理员的联系方式,就是这个字段的配置内容。
  • version
    • 不需要更改。

然后就可以下载和启动容器了,toolkit 中提供了一键启动脚本。

./bin/up

该脚本可以将启动过程中的 log 输出到终端中方便诊断启动进程。一般情况下,网络条件良好的话是没有问题的。如果出现下载失败的情况,可以重新执行该命令。

待一切都正常运行起来后,可以按 CTRL+C将进程停止。然后使用另一个脚本将 Overleaf 容器在后台运行。

./bin/start

创建 Overleaf 实例账号

由于是自建 Overleaf,该实例下的账号与 overleaf.com 里的账号不互通,需要创建该实例自己的账号。

假设上文中的环境变量 SHARELATEX_SITE_URL 和 SHARELATEX_PORT 分别为 overleaf.abbr.edu.cn 和 8001,那么使用浏览器打开 http://overleaf.abbr.edu.cn:8001/launchpad 即可注册本地账号。

值得注意的是,第一个在这个实例下注册的账号将会被设定为唯一的管理员账号(我没有找到哪里能够授予别的账号管理员权限的功能),因此请不要随便设置测试账号。

然后,使用浏览器打开 http://overleaf.abbr.edu.cn:8001/login 登录刚才注册的账号便可如同 overleaf.com 一样使用这个熟悉的编辑器了。

如果打算分享该实例与小伙伴一起用的话,需要创建 Overleaf 普通用户账号。登录了管理员账号后,可以在右上角找到 Admin 相关的功能,创建账号的功能就在这里。

创建账号需要两步,输入一个邮箱地址,系统会生成一个激活链接,自己将该激活链接发给别人完成激活,便可登入到系统中了。

增强 Overleaf 实例编译环境

如果这时候你把很多期刊和会议的 Latex 模板扔到这个自建的 Overleaf 实例中编译,你会发现大部分情况下都是无法编译成功的。上面说到,overleaf.com 是一个开箱即用的集成化环境,而这个实例中仅包含编辑器部分和基本的 Latex 编译器。而两者之间的差别主要在于以下几个部分:

  • Latex 宏包
  • 系统字体
  • TikZ & Syntax highlighter 的依赖
  • TexLive 版本

手动把这几个部分的差别补足就是本文的重点。

Latex 宏包。Latex 对于学术排版比较好用的地方就是它对于学术内容的元素有着大量的宏包支持,比如伪代码等。宏包可以理解为 HTML/CSS 代码里的第三方库,只要调用相应的模板片段(接口)并填入自己的内容(参数),就能生成宏包原本定义好的漂亮的格式。

安装宏包并不困难,我们需要进入到 Overleaf 容器的内部,通过 TexLive 自带的包管理器 tlmgr 就能安装指定的宏包。但这里并不推荐单独安装缺少了宏包,因为 Latex 背后的宏包依赖层层嵌套且依赖关系不明确,最好的办法是用存储空间换省心,一次性把所有的宏包都安装了。

cd ./overleaf-toolkit
./bin/shell
tlmgr install scheme-full

Scheme-full 指代了 CTAN 中所有的 Latex 宏包,大约需要至少 2G 的存储空间,整个下载过程非常的漫长,建议耐心等待。

系统字体。overleaf.com 中包含了数百种字体 以供不同的模板无痛编译。但由于字体文件比较大且容易产生版权问题,因此需要我们自行安装。Overleaf 容器是以 Ubuntu 镜像为底层容器,因此字体的安装方法和 Ubuntu 一样,可以通过 Google 搜索很容易得到答案。

比如,我需要安装 Times New Roman 这个毕业论文格式中指定的字体,在 Windows 中自带但 Ubuntu 系统中没有。大部分常见的字体可以通过 Ubuntu 自带的 apt 包管理器安装,包的名称可以通过 Google 搜索获得。

cd ./overleaf-toolkit
./bin/shell
apt install ttf-mscorefonts-installer

对于少部分比较小众的字体,需要手动复制字体到 Overleaf 容器中,并刷新字体索引。

docker cp /path/to/your/font sharelatex:/usr/local/share/fonts/
cd ./overleaf-toolkit
./bin/shell
fc-cache -f -v

TikZ & Syntax highlighter 的依赖。TikZ 是 Latex 中画图的工具包,也是 Latex 强大的代表功能。TikZ 实际使用中会因为缺少 SVG 支持遇到一些错误,需要 inkscape 系统依赖。而 Syntax highlighter 是代码片段中高亮功能所需要的依赖,需要安装 python3-pygments 包。

cd ./overleaf-toolkit
./bin/shell
apt install inkscape python3-pygments

(Optional) TexLive 版本。还有一些编译错误是由于 TexLive 版本过低导致的,toolkit 一般会在 TexLive 新版本释放后更新容器的最新版本。toolkit 中自带了升级脚本,可以一键命令升级。

cd ./overleaf-toolkit
./bin/upgrade

实际体验感受

我测试了自己发表的多份文章,在自建平台上都可以顺利编译生成 PDF。在约 100 页毕业论文的编译任务上,从无缓存开始的编译时间只需要不到 10s,当然这也取决于你的服务器的性能,但自己本机的性能总是能比 overleaf.com 平台上共享的性能高不少。

容器化的安装部署能够将 Latex 杂乱的环境依赖都封印起来,不用污染本地环境,以及与 Overleaf 一致的编辑体验,是这个方案的优势所在。

有兴趣的同学不妨一试。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀