lovstudio-any2pdf
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseany2pdf — Markdown to Professional PDF
any2pdf — Markdown转专业级PDF
This skill converts any Markdown file into a publication-quality PDF using Python's
reportlab library. It was developed through extensive iteration on real Chinese
technical reports and solves several hard problems that naive MD→PDF converters
get wrong.
本技能使用Python的reportlab库将任意Markdown文件转换为出版级PDF。它是通过对真实中文技术报告进行大量迭代开发而成,解决了普通MD→PDF转换器常出错的几个难题。
When to Use
使用场景
- User wants to convert →
.md.pdf - User has a markdown report/document and wants professional typesetting
- Document contains CJK characters (Chinese/Japanese/Korean) mixed with Latin text
- Document has fenced code blocks, markdown tables, or nested lists
- User wants a cover page, table of contents, or watermark in their PDF
- 用户需要将文件转换为
.md文件.pdf - 用户拥有Markdown格式的报告/文档,需要专业排版
- 文档包含CJK(中文/日文/韩文)与拉丁文字混合内容
- 文档包含围栏代码块、Markdown表格或嵌套列表
- 用户希望PDF中包含封面、目录或水印
Quick Start
快速开始
bash
python md2pdf/scripts/md2pdf.py \
--input report.md \
--output report.pdf \
--title "My Report" \
--author "Author Name" \
--theme warm-academicAll parameters except are optional — sensible defaults are applied.
--inputbash
python md2pdf/scripts/md2pdf.py \
--input report.md \
--output report.pdf \
--title "My Report" \
--author "Author Name" \
--theme warm-academic除外,所有参数均为可选——会应用合理的默认值。
--inputPre-Conversion Options (MANDATORY)
转换前必选选项
IMPORTANT: You MUST use the tool to ask these questions BEFORE
running the conversion. Do NOT list options as plain text — use the tool so the user
gets a proper interactive prompt. Ask all options in a SINGLE call.
AskUserQuestionAskUserQuestionUse with the following template. The tone should be friendly and
concise — like a design assistant, not a config form:
AskUserQuestion开始转 PDF!先帮你确认几个选项 👇
━━━ 📐 设计风格 ━━━
a) 暖学术 — 陶土色调,温润典雅,适合人文/社科报告
b) 经典论文 — 棕色调,灵感源自 LaTeX classicthesis,适合学术论文
c) Tufte — 极简留白,深红点缀,适合数据叙事/技术写作
d) 期刊蓝 — 藏蓝严谨,灵感源自 IEEE,适合正式发表风格
e) 精装书 — 咖啡色调,书卷气,适合长篇专著/技术书
f) 中国红 — 朱红配暖纸,适合中文正式报告/白皮书
g) 水墨 — 纯灰黑,素雅克制,适合文学/设计类内容
h) GitHub — 蓝白极简,程序员熟悉的风格
i) Nord 冰霜 — 蓝灰北欧风,清爽现代
j) 海洋 — 青绿色调,清新自然
k) LaTeX 清爽 — pandoc+XeLaTeX 原生排版,无封面无装饰,干净学术风(需装 pandoc+texlive)
l) 咨询深蓝 — 深海军蓝色块 + 白底 + 大写左对齐标题,麦肯锡 / BCG / Deloitte 研究报告风格
━━━ 🖼 扉页图片(封面之后的全页插图) ━━━
1) 跳过
2) 我提供本地图片路径
3) AI 根据内容自动生成一张
━━━ 💧 水印 ━━━
1) 不加
2) 自定义文字(如 "DRAFT"、"内部资料")
可选调整:字号(默认52)、透明度(0-1)、角度(默认35°)、间距
━━━ 📇 封底物料(名片/二维码/品牌) ━━━
1) 跳过
2) 我提供图片
3) 纯文字信息
示例回复:"a, 扉页跳过, 水印:仅供学习参考, 封底图片:/path/qr.png"
直接说人话就行,不用记编号 😄重要提示:在运行转换前,必须使用工具询问以下问题。不要以纯文本形式列出选项——使用工具让用户获得合适的交互式提示。在单次调用中询问所有选项。
AskUserQuestionAskUserQuestion使用以下模板调用,语气应友好简洁——像设计助手而非配置表单:
AskUserQuestion开始转 PDF!先帮你确认几个选项 👇
━━━ 📐 设计风格 ━━━
a) 暖学术 — 陶土色调,温润典雅,适合人文/社科报告
b) 经典论文 — 棕色调,灵感源自 LaTeX classicthesis,适合学术论文
c) Tufte — 极简留白,深红点缀,适合数据叙事/技术写作
d) 期刊蓝 — 藏蓝严谨,灵感源自 IEEE,适合正式发表风格
e) 精装书 — 咖啡色调,书卷气,适合长篇专著/技术书
f) 中国红 — 朱红配暖纸,适合中文正式报告/白皮书
g) 水墨 — 纯灰黑,素雅克制,适合文学/设计类内容
h) GitHub — 蓝白极简,程序员熟悉的风格
i) Nord 冰霜 — 蓝灰北欧风,清爽现代
j) 海洋 — 青绿色调,清新自然
k) LaTeX 清爽 — pandoc+XeLaTeX 原生排版,无封面无装饰,干净学术风(需装 pandoc+texlive)
l) 咨询深蓝 — 深海军蓝色块 + 白底 + 大写左对齐标题,麦肯锡 / BCG / Deloitte 研究报告风格
━━━ 🖼 扉页图片(封面之后的全页插图) ━━━
1) 跳过
2) 我提供本地图片路径
3) AI 根据内容自动生成一张
━━━ 💧 水印 ━━━
1) 不加
2) 自定义文字(如 "DRAFT"、"内部资料")
可选调整:字号(默认52)、透明度(0-1)、角度(默认35°)、间距
━━━ 📇 封底物料(名片/二维码/品牌) ━━━
1) 跳过
2) 我提供图片
3) 纯文字信息
示例回复:"a, 扉页跳过, 水印:仅供学习参考, 封底图片:/path/qr.png"
直接说人话就行,不用记编号 😄Mapping User Choices to CLI Args
用户选择与CLI参数映射
| Choice | CLI arg |
|---|---|
| Design style a-k | |
| Frontispiece local | |
| Frontispiece AI | Generate image first, then |
| Watermark text | |
| Watermark style | |
| Image as cover | |
| Back cover image | |
| Back cover text | |
| 选择 | CLI 参数 |
|---|---|
| 设计风格a-k | |
| 本地扉页图片 | |
| AI生成扉页图片 | 先生成图片,再使用 |
| 水印文字 | |
| 水印样式 | |
| 图片作为封面 | |
| 封底图片 | |
| 封底文字 | |
Theme Name Mapping
主题名称映射
| Choice | | Inspiration |
|---|---|---|
| a) 暖学术 | | Lovstudio design system |
| b) 经典论文 | | LaTeX classicthesis |
| c) Tufte | | Edward Tufte's books |
| d) 期刊蓝 | | IEEE journal format |
| e) 精装书 | | LaTeX ElegantBook |
| f) 中国红 | | Chinese formal documents |
| g) 水墨 | | 水墨画 / ink wash painting |
| h) GitHub | | GitHub Markdown style |
| i) Nord | | Nord color scheme |
| j) 海洋 | | — |
| k) LaTeX 清爽 | | pandoc+XeLaTeX 原生排版,无封面 |
| l) 咨询深蓝 | | McKinsey / BCG / Deloitte deep-research report |
| 选择 | | 灵感来源 |
|---|---|---|
| a) 暖学术 | | Lovstudio设计系统 |
| b) 经典论文 | | LaTeX classicthesis |
| c) Tufte | | Edward Tufte的书籍 |
| d) 期刊蓝 | | IEEE期刊格式 |
| e) 精装书 | | LaTeX ElegantBook |
| f) 中国红 | | 中文正式文档 |
| g) 水墨 | | 水墨画 / ink wash painting |
| h) GitHub | | GitHub Markdown风格 |
| i) Nord | | Nord配色方案 |
| j) 海洋 | | — |
| k) LaTeX 清爽 | | pandoc+XeLaTeX原生排版,无封面 |
| l) 咨询深蓝 | | 麦肯锡/BCG/德勤深度研究报告 |
Handling AI-Generated Frontispiece
处理AI生成的扉页图片
If user chose AI generation: read the document title + first paragraphs, use an
image generation tool to create a themed illustration matching the chosen design
style, show for approval, then pass via
--frontispiece /path/to/image.png如果用户选择AI生成:读取文档标题+开头段落,使用图像生成工具创建与所选设计风格匹配的主题插图,展示供用户确认,然后通过传入。
--frontispiece /path/to/image.pngArchitecture
架构
Markdown → Preprocess (split merged headings) → Parse (code-fence-aware) → Story (reportlab flowables) → PDF buildKey components:
- Font system: Palatino (Latin body), Songti SC (CJK body), Menlo (code) on macOS; auto-fallback on Linux
- CJK wrapper: wraps CJK character runs in
_font_wrap()tags for automatic font switching<font> - Mixed text renderer: handles CJK/Latin mixed text on canvas (cover, headers, footers)
_draw_mixed() - Code block handler: preserves indentation and line breaks in reportlab Paragraphs
esc_code() - Smart table widths: Proportional column widths based on content length, with 18mm minimum
- Bookmark system: flowable creates PDF sidebar bookmarks + named anchors
ChapterMark - Heading preprocessor: splits merged headings like
_preprocess_md()into separate lines# Part## Chapter
Markdown → 预处理(拆分合并标题) → 解析(识别代码块) → 内容流(reportlab flowables) → PDF构建核心组件:
- 字体系统:macOS使用Palatino(拉丁正文)、Songti SC(CJK正文)、Menlo(代码字体);Linux自动 fallback
- CJK包装器:将CJK字符段包裹在
_font_wrap()标签中,实现自动字体切换<font> - 混合文本渲染器:处理画布上的CJK/拉丁混合文本(封面、页眉、页脚)
_draw_mixed() - 代码块处理器:在reportlab Paragraph中保留缩进和换行
esc_code() - 智能表格宽度:根据内容长度设置比例列宽,最小宽度18mm
- 书签系统:内容流创建PDF侧边栏书签+命名锚点
ChapterMark - 标题预处理器:将
_preprocess_md()这类合并标题拆分为单独行# Part## Chapter
Hard-Won Lessons
实战经验总结
CJK Characters Rendering as □
CJK字符显示为□
reportlab's only uses the font in ParagraphStyle. If but
text contains Chinese, they render as □. Fix: Always apply to ALL text
that might contain CJK, including code blocks.
ParagraphfontName="Mono"_font_wrap()reportlab的仅使用ParagraphStyle中的字体。如果但文本包含中文,会显示为□。解决方法:对所有可能包含CJK的文本(包括代码块)始终应用。
ParagraphfontName="Mono"_font_wrap()Code Blocks Losing Line Breaks
代码块丢失换行
reportlab treats as whitespace. Fix: converts → and
leading spaces → , applied BEFORE .
\nesc_code()\n<br/> _font_wrap()reportlab将视为空白字符。解决方法:将转换为,将前导空格转换为,且需在之前应用。
\nesc_code()\n<br/> _font_wrap()CJK/Latin Word Wrapping
CJK/拉丁文字换行
Default reportlab breaks lines only at spaces, causing ugly splits like "Claude\nCode".
Fix: Set on body/bullet styles to allow breaks at CJK character boundaries.
wordWrap='CJK'默认reportlab仅在空格处换行,导致类似"Claude\nCode"的丑陋拆分。解决方法:对正文/列表样式设置,允许在CJK字符边界处换行。
wordWrap='CJK'Canvas Text with CJK (Cover/Footer)
画布文本中的CJK(封面/页脚)
drawString()drawCentredString()_draw_mixed()使用拉丁字体的/无法渲染“年/月/日”等字符。解决方法:对所有用户提供的画布文本(日期、统计信息、免责声明)使用。
drawString()drawCentredString()_draw_mixed()Images Silently Dropped (Relative Paths)
图片被静默丢弃(相对路径)
main()input_dirWARN: image not found: ...Markdown文件中的曾被跳过且无警告,因为图片路径是相对于当前工作目录而非Markdown文件所在目录解析的。解决方法:现在将(.md文件所在目录)传入构建器,图片处理器基于该目录解析相对路径。缺失的图片现在会向stderr输出警告,而非静默丢弃。
main()input_dirWARN: image not found: ...Multi-Line Image References (pandoc --wrap=auto
)
--wrap=auto多行图片引用(pandoc --wrap=auto
)
--wrap=autoWhen feeding pandoc's output into md2pdf, pandoc's default (72 cols)
wraps long across multiple lines, which defeated
the single-line image regex. Fix: now collapses multi-line
image references into one line (outside code fences) before parsing.
--wrap=auto_preprocess_md()Pipeline tip: If you're piping HTML → markdown via pandoc, use
to avoid wrap-related parsing issues
for images and tables alike.
pandoc --wrap=none input.html -o output.md将pandoc的输出传入md2pdf时,pandoc默认的(72列)会将较长的拆分为多行,这会破坏单行图片正则表达式。解决方法:现在会在解析前将多行图片引用(代码块外的)合并为单行。
--wrap=auto_preprocess_md()管道技巧:如果通过pandoc将HTML转换为Markdown,使用以避免图片和表格的换行相关解析问题。
pandoc --wrap=none input.html -o output.mdInput Format
输入格式
This skill takes Markdown files only as input. If you have HTML, DOCX, or
other formats, convert them to markdown first (e.g. ).
Embedded HTML blocks in markdown are passed through as text — pre-process any
visual content (charts, complex tables) into plain markdown tables or image
references before invoking md2pdf.
pandoc --wrap=none本技能仅接受Markdown文件作为输入。如果是HTML、DOCX或其他格式,请先转换为Markdown(例如使用)。Markdown中的嵌入式HTML块会作为文本传递——在调用md2pdf之前,需将任何可视化内容(图表、复杂表格)预处理为纯Markdown表格或图片引用。
pandoc --wrap=noneConfiguration Reference
配置参考
| Argument | Default | Description |
|---|---|---|
| (required) | Path to markdown file |
| | Output PDF path |
| From first H1 | Document title for cover page |
| | Subtitle text |
| | Author name |
| Today | Date string |
| | Version string for cover |
| | Watermark text (empty = none) |
| | Color theme name |
| | Custom theme JSON file path |
| | Generate cover page |
| | Generate table of contents |
| | Page size (A4 or Letter) |
| | Full-page image after cover |
| bundled | Back cover banner image (pass |
| | Report title in page header |
| author | Brand/author in footer |
| | Stats on cover |
| | Second stats line |
| | Edition line at cover bottom |
| | Back cover disclaimer |
| | Back cover copyright |
| | Max lines per code block |
| | Use frontispiece as full-bleed cover (page 1), text cover becomes page 2 |
| | Top spacer before H1/H2 chapter titles in mm |
| auto (half page width) | Watermark font size; auto-scales so text width ≈ 50% of page width |
| | Watermark opacity (0.0–1.0) |
| | Watermark rotation angle in degrees |
| | Watermark horizontal spacing in pt (≥2000 = single centered per page) |
| | Watermark vertical spacing in pt (≥2000 = single centered per page) |
| 参数 | 默认值 | 描述 |
|---|---|---|
| 必填 | Markdown文件路径 |
| | 输出PDF路径 |
| 第一个H1标题 | 封面的文档标题 |
| | 副标题文本 |
| | 作者姓名 |
| 今日 | 日期字符串 |
| | 封面的版本字符串 |
| | 水印文字(空值表示无水印) |
| | 配色主题名称 |
| | 自定义主题JSON文件路径 |
| | 生成封面 |
| | 生成目录 |
| | 页面尺寸(A4或Letter) |
| | 封面后的全页图片 |
| 内置 | 封底横幅图片(传入 |
| | 页面页眉中的报告标题 |
| 作者 | 页脚中的品牌/作者信息 |
| | 封面的统计信息行 |
| | 第二行统计信息 |
| | 封面底部的版本行 |
| | 封底的免责声明 |
| | 封底的版权信息 |
| | 每个代码块的最大行数 |
| | 将扉页图片用作全 bleed 封面(第1页),文字封面变为第2页 |
| | H1/H2章节标题上方的间距(单位:mm) |
| 自动(页面宽度的一半) | 水印字体大小;自动缩放使文本宽度≈页面宽度的50% |
| | 水印透明度(0.0–1.0) |
| | 水印旋转角度(单位:度) |
| | 水印水平间距(单位:pt,≥2000表示每页居中单个水印) |
| | 水印垂直间距(单位:pt,≥2000表示每页居中单个水印) |
Themes
主题
Available: , , , ,
, , .
warm-academicnord-frostgithub-lightsolarized-lightpaper-classicocean-breezeconsulting-navyEach theme defines: page background, ink color, accent color, faded text, border, code background, watermark tint.
可用主题:、、、、、、。
warm-academicnord-frostgithub-lightsolarized-lightpaper-classicocean-breezeconsulting-navy每个主题定义:页面背景、文字颜色、强调色、淡色文本、边框、代码背景、水印色调。
Fallback: pandoc + XeLaTeX
备用方案:pandoc + XeLaTeX
When reportlab fails (e.g. wide/complex tables cause infinite loops in table width
calculation), fall back to pandoc with XeLaTeX. This produces high-quality CJK PDFs
with proper table handling.
当reportlab失败时(例如宽/复杂表格导致表格宽度计算无限循环),回退到使用XeLaTeX的pandoc。这可生成高质量CJK PDF,且表格处理更完善。
When to use pandoc engine
何时使用pandoc引擎
- User chose theme (k) — pandoc is the primary engine, not a fallback
latex-clean - Document has many wide multi-column tables (reportlab's table layout may hang)
- Document needs LaTeX-quality typesetting (justified text, hyphenation)
- reportlab md2pdf.py hangs or crashes on the input
- 用户选择主题(k)——pandoc是主引擎而非备用方案
latex-clean - 文档包含大量宽多列表格(reportlab的表格布局可能卡顿)
- 文档需要LaTeX级排版(对齐文本、断字)
- reportlab的md2pdf.py在处理输入时卡顿或崩溃
Basic command
基础命令
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
--toc -V toc-title="目录" -V documentclass=article
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
--toc -V toc-title="目录" -V documentclass=article
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
--toc -V toc-title="目录" -V documentclass=article
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
--toc -V toc-title="目录" -V documentclass=article
Adding watermark + headers/footers
添加水印 + 页眉/页脚
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 页眉左侧文字} \fancyhead[R]{\small 页眉右侧文字} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{水印文字} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 页眉左侧文字} \fancyhead[R]{\small 页眉右侧文字} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{水印文字} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 页眉左侧文字} \fancyhead[R]{\small 页眉右侧文字} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{水印文字} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 页眉左侧文字} \fancyhead[R]{\small 页眉右侧文字} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{水印文字} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
Pandoc theme presets
Pandoc主题预设
Each preset defines a complete set of pandoc flags. Use the full command from
"Adding watermark + headers/footers" above, replacing the color/link flags per preset.
-V| Theme | linkcolor | toccolor | urlcolor | Watermark color | Notes |
|---|---|---|---|---|---|
| chinese-red | | | | | 朱红正式,适合政企报告、白皮书 |
| warm-academic | | | | | 陶土色调,温润学术风 |
| classic-thesis | | | | | LaTeX classicthesis 灵感 |
| ieee-journal | | | | | 藏蓝严谨,期刊风格 |
| github-light | | | | | 极简蓝白,程序员友好 |
| ink-wash | | | | | 水墨素雅,文学/设计类 |
| nord-frost | | | | | 北欧冰霜蓝灰 |
| consulting-navy | | | | | 咨询深蓝,研究报告风 |
每个预设定义一套完整的pandoc 标志。使用上方“添加水印 + 页眉/页脚”中的完整命令,根据预设替换颜色/链接标志。
-V| 主题 | linkcolor | toccolor | urlcolor | 水印颜色 | 说明 |
|---|---|---|---|---|---|
| chinese-red | | | | | 朱红正式,适合政企报告、白皮书 |
| warm-academic | | | | | 陶土色调,温润学术风 |
| classic-thesis | | | | | LaTeX classicthesis 灵感 |
| ieee-journal | | | | | 藏蓝严谨,期刊风格 |
| github-light | | | | | 极简蓝白,程序员友好 |
| ink-wash | | | | | 水墨素雅,文学/设计类 |
| nord-frost | | | | | 北欧冰霜蓝灰 |
| consulting-navy | | | | | 咨询深蓝,研究报告风 |
chinese-red 完整示例(本次一滕项目实际使用)
chinese-red 完整示例(本次一滕项目实际使用)
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 报告标题 | 品牌名} \fancyhead[R]{\small 商业机密} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{商业机密} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 报告标题 | 品牌名} \fancyhead[R]{\small 商业机密} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{商业机密} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
pandoc input.md -o output.pdf
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 报告标题 | 品牌名} \fancyhead[R]{\small 商业机密} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{商业机密} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
--pdf-engine=xelatex
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo"
-V geometry:margin=2.5cm -V fontsize=11pt
-V colorlinks=true -V linkcolor=red -V toccolor=red -V urlcolor=red
--toc -V toc-title="目录" -V documentclass=article
-V header-includes=' \usepackage{fancyhdr} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small 报告标题 | 品牌名} \fancyhead[R]{\small 商业机密} \fancyfoot[C]{\thepage} \usepackage{draftwatermark} \SetWatermarkText{商业机密} \SetWatermarkScale{0.5} \SetWatermarkColor[gray]{0.9} '
latex-clean 完整示例(最简洁的 LaTeX 学术风格)
latex-clean 完整示例(最简洁的 LaTeX 学术风格)
选择 时,跳过 reportlab,直接使用 pandoc 生成。特点:无封面、无扉页、
无装饰色块,纯 LaTeX 排版 + 点线 TOC 引导符,适合内容为王的学术/技术文档。
latex-cleanpandoc input.md -o output.pdf \
--pdf-engine=xelatex \
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo" \
-V geometry:margin=2.5cm -V fontsize=11pt \
-V colorlinks=true -V linkcolor=brown -V toccolor=brown -V urlcolor=brown \
--toc -V toc-title="目录" -V documentclass=article如需添加页眉页脚或水印,参考上方 "Adding watermark + headers/footers" 追加 。
-V header-includes选择时,跳过reportlab,直接使用pandoc生成。特点:无封面、无扉页、无装饰色块,纯LaTeX排版 + 点线TOC引导符,适合内容为王的学术/技术文档。
latex-cleanpandoc input.md -o output.pdf \
--pdf-engine=xelatex \
-V CJKmainfont="Songti SC" -V mainfont="Palatino" -V monofont="Menlo" \
-V geometry:margin=2.5cm -V fontsize=11pt \
-V colorlinks=true -V linkcolor=brown -V toccolor=brown -V urlcolor=brown \
--toc -V toc-title="目录" -V documentclass=article如需添加页眉页脚或水印,参考上方“添加水印 + 页眉/页脚”追加。
-V header-includesKnown limitations (pandoc fallback)
pandoc备用方案的已知限制
- No cover page (pandoc article class has no built-in cover — use with a LaTeX snippet if needed)
--include-before-body - Frontispiece/back cover not supported (use md2pdf.py for these)
→★symbols may warn in Palatino — they render via CJK font fallback, safe to ignore☆- ASCII art diagrams render as code blocks (same as md2pdf.py)
- 无封面(pandoc的article类无内置封面——如需封面,可使用搭配LaTeX代码段)
--include-before-body - 不支持扉页/封底(如需这些功能,请使用md2pdf.py)
→★符号在Palatino字体下可能发出警告——它们会通过CJK字体 fallback 渲染,可忽略☆- ASCII艺术图会渲染为代码块(与md2pdf.py一致)
Dependencies (pandoc fallback)
pandoc备用方案的依赖
Requires and a TeX distribution with XeLaTeX:
pandocbrew install pandoc
brew install --cask mactex-no-gui # or basictex需要和包含XeLaTeX的TeX发行版:
pandocbrew install pandoc
brew install --cask mactex-no-gui # 或basictexDependencies
依赖
bash
pip install reportlab --break-system-packagesbash
pip install reportlab --break-system-packages