
使用 Pandoc 将 Markdown 转换为 HTML 时,若未启用独立文档模式(-s 或 --standalone),默认仅生成片段 HTML(无 <html>、<head> 和 <title> 标签);添加 -s 并配合元数据或 YAML 头即可精准控制 <title> 内容。
使用 pandoc 将 markdown 转换为 html 时,若未启用独立文档模式(`-s` 或 `--standalone`),默认仅生成片段 html(无 ``、`
` 和 `Pandoc 默认以“片段模式”(fragment mode)运行:它只将 Markdown 内容转换为 HTML 片段(如 <h1>...</h1><p>...</p>),不生成完整的 HTML 文档结构(即不含 <html>、<head>、<title>、<body> 等根级标签)。因此,即使你通过 --metadata title="Custom title" 或 YAML 元数据指定了标题,若缺少 -s(--standalone)选项,Pandoc 也不会将其渲染进 <head><title>...</title></head> 中——这正是你此前尝试失败的根本原因。
✅ 正确做法是:始终搭配 -s 选项启用独立文档模式。此时 Pandoc 才会构建完整 HTML 页面,并将 title 元数据写入 <title> 标签:
pandoc -s --metadata title="Custom title" input.md -o output.html
输出 HTML 将包含:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <title>Custom title</title> </head> <body> <h1 id="name">Name</h1> <p>Contents</p> </body> </html>
? 补充说明:
立即学习“前端免费学习笔记(深入)”;
--title 选项(如 pandoc -s --title="Custom title")虽也能设置标题,但默认会追加源文件名(如 – input),且强制启用默认 CSS 和文档结构;而 --metadata title=... 更灵活,不会自动拼接后缀,推荐优先使用。
-
也可在 Markdown 源文件顶部用 YAML front matter 声明标题,效果等同命令行元数据:
--- title: Custom title --- # Name Contents
然后执行 pandoc -s input.md -o output.html 即可。
⚠️ 注意事项:
- 忘记 -s 是最常见的标题失效原因,务必检查;
- 若需进一步定制 <head>(如添加 favicon、meta 描述或自定义 CSS),可使用 --include-in-header 或 --template 选项;
- 所有元数据(包括 title)仅在 -s 模式下生效,片段模式下完全忽略。
掌握 -s + title 组合,即可干净、可控地生成带自定义标题的标准 HTML 页面。



















