用 LaTeX 写情书给女朋友?这个开源项目把浪漫编译成了 PDF
> 一个用 LaTeX 排版的情书模板,把对女朋友的爱意编译成优雅的 PDF 文档。
## 项目初印象
`HEJustinSun/my-girlfriend-jingtian-latex` 是一个在 GitHub 上拥有 3767 颗星的小众但极具趣味性的项目。它本质上是一份用 LaTeX 写的情书模板,作者通过 TeX 语言的排版能力,将一段真挚的感情表达以学术论文般的严谨格式呈现出来。项目名中的 "jingtian" 显然是作者女朋友的名字,而整个仓库就是一份可编译、可修改、可复用的“浪漫源代码”。
如果你以为这只是一个普通的文本情书,那就大错特错了。它利用了 LaTeX 的全部特性:数学公式、自定义章节、优雅的字体、甚至可能的 TikZ 绘图——把情书变成了一部结构严谨、视觉精美的“爱情论文”。
## 它解决了什么痛点?
在数字化时代,表达感情的方式千篇一律:微信消息、朋友圈、或者一张电子贺卡。这些东西虽然便捷,但缺乏**仪式感**和**持久性**。很多人想写一封纸质情书,但手写字体难看、排版混乱、难以修改;用 Word 排版又显得平庸。
这个项目提供了一种**极客式浪漫**:用写科研论文的方式写情书。它解决了以下痛点:
1. **排版焦虑**:LaTeX 自动处理页边距、字体、段落间距、页眉页脚,输出的 PDF 拥有出版级别的排版质量,完全不需要手动调整。
2. **修改困难**:手写情书改一个字都要重写,LaTeX 只需改一行源码重新编译即可。
3. **表达深度**:LaTeX 支持数学公式,你可以用符号表达爱意(比如用欧拉公式、傅里叶变换、或者一个精心设计的 TikZ 爱心图)。
4. **可版本控制**:情书也有 Git 历史,你可以记录每一次修改,甚至用 `git diff` 展示你的感情变化。
## 快速上手:安装与使用
### 环境准备
你需要一个 LaTeX 发行版,推荐 TeX Live(Linux/Windows)或 MacTeX(macOS)。如果你不想本地安装,也可以用 Overleaf(在线编辑器)直接打开项目。
bash
# Ubuntu/Debian
sudo apt install texlive-full
# macOS
brew install --cask mactex
# 或者用 Overleaf,无需安装,直接上传项目文件夹
### 获取项目
bash
git clone https://github.com/HEJustinSun/my-girlfriend-jingtian-latex.git
cd my-girlfriend-jingtian-latex
### 编译 PDF
项目主文件通常是一个 `.tex` 文件(比如 `main.tex`)。编译命令:
bash
pdflatex main.tex
# 或者用更完整的编译链(处理交叉引用和索引)
latexmk -pdf main.tex
编译后你会得到一个 `main.pdf`,这就是你的情书成品。
### 个性化修改
打开 `main.tex`,找到类似下面的结构:
latex
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{geometry}
\geometry{a4paper, margin=2.5cm}
\title{\textbf{致亲爱的晴天}}
\author{你的名字}
\date{\today}
\begin{document}
\maketitle
\section*{序言}
亲爱的晴天,当你看到这封编译自 \LaTeX 的信时,我已经用代码表达了我的心意……
\section*{为什么是你}
\begin{equation}
\text{我对你的爱} = \int_{0}^{\infty} e^{-t} \cdot \text{幸福}(t) \, dt
\end{equation}
\section*{未来计划}
\begin{itemize}
\item 一起看日出(用 TikZ 画一个太阳)
\item 一起旅行(附上地图坐标)
\end{itemize}
\end{document}
你只需要修改文字内容、章节标题、数学公式,然后重新编译即可。如果你懂一点 LaTeX,甚至可以加入自定义命令、参考文献(比如你们之间的小纸条)或者目录。
## 核心亮点深度解析
### 1. 数学公式的浪漫表达
这个项目最迷人的地方在于它允许你用数学语言表达情感。例如:
- **欧拉公式**:$e^{i\pi} + 1 = 0$,可以用来说明“你的存在让我的世界从零变成完整”。
- **极限**:$\lim_{n \to \infty} \frac{1}{n}\sum_{i=1}^{n} \text{爱你的天数} = \infty$
- **概率论**:$P(\text{你喜欢我} | \text{我写了这封信}) = 1$
这些公式在 LaTeX 中排版出来非常美观,比手写或者截图有质感得多。
### 2. TikZ 绘图
TikZ 是 LaTeX 中最强大的绘图宏包。你可以用它画一个爱心、一朵玫瑰、两把椅子、或者一个你们相遇的地图。这个项目里很可能包含了精心设计的 TikZ 图形,让情书不只是文字,还有视觉元素。
### 3. 结构化的情感叙事
LaTeX 的章节结构(`\section`、`\subsection`)让情书有了清晰的逻辑:序言、相识、心动瞬间、未来展望、结语。这种结构化的表达方式反而更能体现用心。
### 4. 版本控制与 Git 集成
因为源码是纯文本,你可以用 Git 管理情书的每次修改。比如:
bash
git log --oneline
# 3f2a1b4 (HEAD) 增加周年纪念日段落
# 8c9d0e2 修改表白公式为更浪漫的版本
# 1a2b3c4 初始提交:第一封情书
这种技术手段赋予了情书一种“迭代开发”的浪漫——每一次 commit 都是爱的积累。
## 适用场景
这个项目适合以下人群:
- **程序员/工程师**:想用自己熟悉的领域表达感情,给另一半一个惊喜。
- **科研人员/学生**:经常使用 LaTeX,顺手用同样的工具写情书。
- **极客浪漫主义者**:追求独一无二的表达方式,不满足于普通礼物。
- **LaTeX 学习者**:通过一个有趣的项目学习 LaTeX 的排版原理,比枯燥的教程更有动力。
不适合的场景:如果你完全不懂 LaTeX,且不愿意花时间学习,那建议直接用 Word 或手写。
## 同类项目对比
在 GitHub 上,类似的“用代码表达爱意”的项目有不少,但各有侧重:
| 项目 | 语言/工具 | 特点 | 与本项目对比 |
|------|-----------|------|-------------|
| `love-letter` (Python) | Python + PDF | 用脚本生成情书,但排版粗糙 | 本项目排版更精致,LaTeX 输出质量远超 Python 的 reportlab |
| `valentine-html` (HTML/CSS) | 网页 | 动态效果强,但依赖浏览器 | 本项目是静态 PDF,更适合打印和保存 |
| `git-commit-love` (纯文本) | Markdown | 简单直接,但无排版 | 本项目有完整 LaTeX 排版,视觉冲击力强 |
| `love-letter-generator` (JS) | 随机生成 | 批量生成,但缺乏个性化 | 本项目完全手工定制,每个细节都可控 |
**本项目的核心优势**:
1. **LaTeX 的排版质量**:无可挑剔的字体、间距、对齐。
2. **数学公式支持**:这是其他工具难以实现的。
3. **可扩展性**:你可以加入代码清单、表格、引用,甚至嵌入图片。
4. **跨平台**:编译一次,PDF 在任何设备上显示一致。
## 深入思考:为什么这种项目会火?
这个项目能获得 3767 颗星,说明很多人被这种“技术浪漫”打动。它反映了当代程序员的一种心理需求:**用自己最熟悉的方式去表达最陌生的情感**。写代码是日常,写情书是挑战;把两者结合,既降低了情感表达的门槛,又增加了表达的独特性。
同时,这个项目也是一个很好的 LaTeX 教学案例。很多初学者对 LaTeX 望而却步,但通过修改这份情书模板,他们可以快速理解文档结构、宏包使用、公式排版等核心概念。
## 如何进一步定制?
如果你想超越原项目,可以尝试:
- **加入 Beamer 幻灯片**:把情书变成一份“爱情答辩”PPT。
- **使用 `biblatex`**:把你们之间的聊天记录做成参考文献。
- **嵌入音乐谱**:用 `lilypond` 宏包写一首五线谱情歌。
- **生成 QR 码**:用 `qrcode` 宏包放一个链接,指向你们共同的回忆相册。
- **多语言支持**:用 `babel` 宏包,写中英双语情书。
## 结语
`HEJustinSun/my-girlfriend-jingtian-latex` 不是一个工具库,也不是一个框架,它是一个**情感与技术的完美结合体**。它教会我们:技术不是冷冰冰的,它可以承载温度;代码不是枯燥的,它可以写出最动人的句子。
如果你有一个爱的人,为什么不试试用 LaTeX 写一封情书?编译通过的那一刻,你不仅得到了一个 PDF,更得到了一份独一无二的、充满心意的礼物。
> 项目链接:[https://github.com/HEJustinSun/my-girlfriend-jingtian-latex](https://github.com/HEJustinSun/my-girlfriend-jingtian-latex)