Files
ProjectAGiPrompt/0-pandoc电子书转换/转换pandoc.md
2025-09-17 20:15:28 +08:00

4.0 KiB
Raw Blame History

在windows系统中使用pandoc将一个markdown文件转换为epub文件请基于如下的条件转换

  1. 完整保留markdown的语法去除掉特殊符号
  2. epub中的字体使用思源黑体CN-Medium
  3. markdown中的表格注意在epub中有合适的表格结构
  4. markdown中的mermaid图像请解析为合适的图片嵌入至epub中
  5. markdown中的代码块请合理的解析在epub中有引用或者突出显示

请基于上面的要求,给出转换命令

3. 创建CSS样式文件

创建一个名为epub-style.css的文件:

/* 设置思源黑体为主字体 */
@font-face {
    font-family: "Source Han Sans CN";
    font-style: normal;
    font-weight: 500;
    src: url("../fonts/SourceHanSansCN-Medium.ttf");
}

body {
    font-family: "Source Han Sans CN", sans-serif;
    font-size: 1.2em;
    line-height: 1.6;
    margin: 0;
    padding: 1em;
}

/* 表格样式 */
table {
    border-collapse: collapse;
    width: 100%;
    margin: 1em 0;
}

th, td {
    border: 1px solid #ddd;
    padding: 8px 12px;
    text-align: left;
}

th {
    background-color: #f5f5f5;
    font-weight: bold;
}

tr:nth-child(even) {
    background-color: #f9f9f9;
}

/* 代码块样式 */
pre {
    background-color: #f4f4f4;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 1em;
    overflow-x: auto;
    margin: 1em 0;
}

code {
    font-family: "Courier New", monospace;
    background-color: #f4f4f4;
    padding: 2px 4px;
    border-radius: 2px;
}

pre code {
    background-color: transparent;
    padding: 0;
}

/* 标题样式 */
h1, h2, h3, h4, h5, h6 {
    font-family: "Source Han Sans CN", sans-serif;
    font-weight: bold;
    margin-top: 1.5em;
    margin-bottom: 0.5em;
}

完整的转换命令

使用以下pandoc命令进行转换

pandoc input.md \
  --from markdown+pipe_tables+fenced_code_blocks+fenced_code_attributes \
  --to epub3 \
  --filter mermaid-filter.cmd \
  --epub-embed-font="SourceHanSansCN-Medium.otf" \
  --css="epub-style.css" \
  --highlight-style=pygments \
  --standalone \
  --toc \
  --toc-depth=3 \
  --epub-metadata=metadata.xml \
  --output output.epub

Windows命令行版本单行

pandoc input.md --from markdown+pipe_tables+fenced_code_blocks+fenced_code_attributes --to epub3 --filter mermaid-filter.cmd --epub-embed-font="SourceHanSansCN-Medium.ttf" --css="epub-style.css" --highlight-style=pygments --standalone --toc --toc-depth=3 --output output.epub

命令参数解释

输入格式设置

  • --from markdown+pipe_tables+fenced_code_blocks+fenced_code_attributes:启用表格、代码块和代码属性支持[^1][^2]

Mermaid图像处理

  • --filter mermaid-filter.cmd在Windows下使用mermaid-filter处理mermaid图像[^3][^4]

字体设置

  • --epub-embed-font="SourceHanSansCN-Medium.ttf":嵌入思源黑体字体文件[^5]
  • --css="epub-style.css"应用自定义CSS样式[^6]

代码高亮

  • --highlight-style=pygments使用pygments风格的代码语法高亮[^7][^8]

输出选项

  • --to epub3输出为EPUB3格式
  • --standalone:生成完整的独立文档
  • --toc:生成目录
  • --toc-depth=3目录深度为3级

可选的元数据文件

创建metadata.xml文件来设置EPUB元数据

<dc:title>您的书名</dc:title>
<dc:creator>作者姓名</dc:creator>
<dc:language>zh-CN</dc:language>
<dc:date>2025-09-17</dc:date>
<dc:rights>版权信息</dc:rights>

注意事项

  1. 文件路径确保所有文件字体、CSS、输入文件都在正确的路径下
  2. mermaid-filter在Windows下必须使用mermaid-filter.cmd而不是mermaid-filter[^3]
  3. 字体路径CSS中的字体路径使用相对路径../fonts/[^9]
  4. 表格支持pandoc原生支持多种表格格式包括pipe tables[^10]
  5. 代码块:支持语法高亮和属性设置[^11]

这个命令将完整保留您的markdown语法正确处理表格结构将mermaid图转换为图片为代码块添加高亮显示并使用思源黑体作为EPUB的字体。