SuperAPI AI 工具集

pdf-generation

办公与效率

查看项目

更新于 10-14 17:54

技能介绍

用途

pdf-generation 用于把 Markdown 文件转换为专业排版的 PDF。它基于 Pandoc,配合 Eisvogel 模板样式,支持英文与俄文文档,可定制主题、目录与专业排版(俄文使用 EB Garamond 字体)。

主要能力

  • 使用 Pandoc 与 xelatex 引擎从 Markdown 生成 PDF。
  • 支持自动生成目录(--toc),可控制目录深度(--toc-depth)。
  • 提供桌面/打印版式(A4,210mm x 297mm,边距 2.5cm,字号 11pt)适合打印、大屏阅读与归档。
  • 提供移动端版式(6in x 9in,边距 0.5in,字号 10pt,行距 1.2),适合手机/平板阅读与 Telegram 等消息应用分享;移动版输出文件名自动追加 -mobile.pdf 后缀。
  • 支持俄文:使用 EB Garamond 作为主字体(-V mainfont="EB Garamond")。
  • 支持通过 YAML frontmatter 设置标题页与主题色。文档主题色对应关系为:白皮书 - 蓝色(1e3a8a)、营销 - 绿色(059669)、研究 - 紫色(7c3aed)、技术 - 灰色(374151)。
  • 提供 YAML 模板参考(references/frontmatter_templates.md)与 Pandoc 命令参考(references/pandoc_reference.md)。
  • 提供预处理脚本 scripts/fix_markdown.py,用于自动检测并修复列表格式问题:冒号后的列表、标题后的列表、嵌套列表间距。
  • 提供自动化生成脚本 scripts/generate_pdf.py,支持 -t 主题参数、--russian、--mobile 等选项。

使用方式

基础命令示例:

桌面/打印 PDF(A4)

pandoc doc.md -o doc.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:margin=2.5cm -V fontsize=11pt -V documentclass=article

移动端友好 PDF

pandoc doc.md -o doc-mobile.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:paperwidth=6in -V geometry:paperheight=9in -V geometry:margin=0.5in -V fontsize=10pt -V linestretch=1.2

俄文 PDF

pandoc doc-ru.md -o doc.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:margin=2.5cm -V fontsize=11pt -V documentclass=article -V mainfont="EB Garamond"

俄文移动版:

pandoc doc-ru.md -o doc-mobile.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:paperwidth=6in -V geometry:paperheight=9in -V geometry:margin=0.5in -V fontsize=10pt -V linestretch=1.2 -V mainfont="EB Garamond"

使用脚本:

scripts/generate_pdf.py doc.md -t white-paper scripts/generate_pdf.py doc.md -t marketing --russian scripts/generate_pdf.py doc.md --mobile

预处理 Markdown:

scripts/fix_markdown.py input.md output.md

YAML frontmatter 示例:


title: "Document Title" subtitle: "Subtitle" author: "Author" date: "2025-11-18" titlepage: true titlepage-color: "1e3a8a" titlepage-text-color: "ffffff" book: true

Markdown 格式最佳实践

  • 列表前需要空行(正确渲染列表所必需)。
  • 标题后加空行,改善间距。
  • 嵌套列表缩进使用 3 个空格。
  • 常见问题:冒号后的列表需要空行。若无空行,会被渲染为行内文本。例如“Your data spans 9 years with complete tracking:”后接列表项时应保留空行。

生成工作流

  1. 简单 PDF:检查上下文(Telegram 用移动版,否则桌面版);检查是否俄文(是则用 EB Garamond);运行相应 pandoc 命令;验证输出。
  2. 专业标题页:添加带主题色的 YAML frontmatter,包含元数据(标题、作者、日期),选择版式(移动或桌面),用 xelatex 生成。
  3. 使用脚本生成。

适用场景

  • 白皮书、营销资料、研究报告、技术文档。
  • 需要通过 Telegram 或消息应用分享的移动端阅读文档。
  • 便携参考文档与随时随地快速阅读。
  • 默认上下文:通过 Telegram 机器人生成 PDF 时默认使用移动版式,除非用户明确要求打印/桌面版本。

限制与要求

  • 需要安装 Pandoc 与 LaTeX:brew install pandoc、brew install --cask mactex。
  • 具体可用的主题、模板及脚本的完整参数范围暂未提供。