Markdown to PDF: Pandoc + XeLaTeX 简历导出实践

投递职位需要 PDF 版简历,但内容仍希望用 Markdown 维护。这次在 Arch Linux 上搭了一套 Pandoc + XeLaTeX 流程,把中英文简历稳定导出为 PDF,并沉淀了定制 LaTeX 模板与一键脚本。本文记录选型、依赖安装、流水线、排版分工,以及模板优化上踩过的坑。 背景 源文件是 Markdown:多级标题、表格、列表、加粗混排。需要: 中英文各一份 PDF,字体分别可调 改 Markdown 后能一条命令重新导出 排版达到简历水准(页眉、列表间距、技能表行间线等) 早期试过 cmark + Chromium headless(Markdown → HTML → 打印 PDF),能跑通,但 CSS 调版费时;最终选用 Pandoc 生成 LaTeX,再用 XeLaTeX 编译 PDF——排版可控,适合反复迭代。 工具链概览 组件 作用 LaTeX 中间排版语言(.tex);详见 LaTeX 简介 Pandoc Markdown → LaTeX(--standalone);详见 Pandoc 介绍 XeLaTeX 编译 .tex 为 PDF;详见 XeLaTeX 介绍 resume.latex 定制 Pandoc LaTeX 模板(基于默认模板,统一入口) resume-style.tex 标题层级、列表间距、页眉样式、技能表行间线 pandoc-pdf.sh 串联上述步骤的一键脚本 整体流水线: Resume.md → pandoc(--template resume.latex + resume-style.tex + 字体变量) → input.tex → xelatex × 2 → Resume.pdf 相比早期实现,已去掉 Python 后处理:表格行间 \midrule 与标题样式一并写在 LaTeX 模板层(resume-style.tex),由 Pandoc 在生成 .tex 时注入导言区。 ...

Created 22226-06-22 · Updated 23236-06-23 · 5 min · 871 words · -

LaTeX: 标记语言与排版系统简介

LaTeX 是一套基于 TeX 的文档排版系统:用纯文本写 .tex 源文件,交给编译器生成 PDF。学术论文、书籍、简历等需要稳定版式的场景里很常见。若你用 Pandoc 把 Markdown 转成 PDF,中间产物通常就是 LaTeX,再由 XeLaTeX 等引擎编译。 TeX 与 LaTeX 名称 是什么 TeX Donald Knuth 在 1970 年代设计的底层排版程序与语言 LaTeX Leslie Lamport 在 1980 年代于 TeX 之上构建的宏集,提供章节、列表、表格、交叉引用等高层命令 日常说的「写 LaTeX」「装 TeX Live」,通常指:用 LaTeX 语法写文档,用 TeX 发行版里的引擎编译。 人物与历史 谁创造了什么 LaTeX 与 Linux 常被一起提起(学术写作、Arch 上装 TeX Live 等),但作者之间没有直接关系: 项目 主要作者 年代 做什么 TeX Donald Knuth 1970 年代起 底层排版程序与语言 LaTeX Leslie Lamport 1984 年起 建立在 TeX 上的文档宏集 Linux Linus Torvalds 1991 年起 操作系统内核 LaTeX 后来的标准与维护由 LaTeX Project 社区延续(如 Frank Mittelbach 等),并非 Knuth 个人在管 LaTeX。生态里还有大量宏包作者(如 beamer、TikZ 的 Till Tantau)。 ...

Created 22226-06-22 · Updated 22226-06-22 · 2 min · 424 words · -

XeLaTeX: Unicode 友好的 LaTeX 引擎

XeLaTeX 是 TeX Live 发行版中的一种 LaTeX 编译引擎,与 pdfLaTeX、LuaLaTeX 并列。处理中文、英文混排或需要调用系统 OpenType 字体时,XeLaTeX 是最常用的选择之一。若还不熟悉 LaTeX 本身,建议先读该文建立概念,再回来看引擎差异。 LaTeX 与引擎是什么关系 可以先这样理解: 概念 角色 LaTeX 排版语言与宏集;你写 .tex 源文件 引擎(pdfLaTeX、XeLaTeX、LuaLaTeX) 读取 .tex,输出 PDF TeX Live 引擎 + 海量宏包 + 字体的发行版 document.tex → xelatex → document.pdf Pandoc 生成 PDF 时,也是先写出 .tex,再调用你指定的 --pdf-engine(如 xelatex)完成最后一步。 为什么需要 XeLaTeX pdfLaTeX 的局限 传统的 pdfLaTeX 历史悠久,但: 字体接入方式偏旧(多为 T1 编码、内置字体) 中文等非拉丁文字支持麻烦,常要额外宏包和配置 直接调用系统里的 Noto、Inter 等 OpenType 字体不直观 XeLaTeX 的优势 XeLaTeX 原生支持 Unicode,并通过 fontspec 宏包直接加载系统字体: \usepackage{fontspec} \setmainfont{Inter} \setCJKmainfont{Noto Sans CJK SC} % via xeCJK 因此适合: ...

Created 22226-06-22 · Updated 22226-06-22 · 2 min · 283 words · -