typora是一个轻量级的所见几乎即所得的Markdown书写浏览工具。css主题可定制性强,但定制的很多主题总有各种问题。如果碰到下面问题。

大模型的方法都是修修补补,按下葫芦浮起瓢
真正核心的方案其实是换一个成熟主题,分页控制我觉得比较好的是github.css主题;而喜欢其它风格,可以让大模型来一个不同主题的杂交
Typora添加CSS解决PDF分页问题详细教程
第一步:打开主题文件夹
- 启动Typora软件
- 打开偏好设置 :
- Windows/Linux:点击顶部菜单栏的
文件→偏好设置 - Mac:点击顶部菜单栏的
Typora→偏好设置
- Windows/Linux:点击顶部菜单栏的
- 找到主题文件夹 :
- 在偏好设置窗口中,点击左侧的
外观选项 - 点击右侧的
打开主题文件夹按钮 - 此时会打开一个文件资源管理器(Windows)或Finder(Mac)窗口,显示Typora的主题文件夹
- 在偏好设置窗口中,点击左侧的
第二步:创建自定义主题
-
复制现有主题:
- 在打开的主题文件夹中,找到你喜欢的主题文件(通常以
.css结尾) - 右键点击该文件,选择
复制 - 粘贴一个副本,并重命名为
custom-pdf.css(名称可以自定义,但建议使用英文)
- 在打开的主题文件夹中,找到你喜欢的主题文件(通常以
-
编辑CSS文件:
- 右键点击你刚创建的
custom-pdf.css文件 - 选择
打开方式→ 用文本编辑器打开(推荐使用VS Code、Notepad++或系统自带的记事本/文本编辑)
- 右键点击你刚创建的
第三步:添加分页控制CSS代码
- 在文件末尾添加以下CSS代码:
css
/* PDF导出分页控制 */
@media print {
/* 防止段落、标题、表格等在中间被分页 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote, figure {
page-break-inside: avoid;
break-inside: avoid;
}
/* 为标题设置分页前空间 */
h1, h2, h3 {
page-break-after: avoid;
page-break-before: auto;
}
/* 为代码块添加特殊处理 */
pre {
page-break-inside: avoid;
break-inside: avoid;
white-space: pre-wrap;
}
/* 为图片添加保护 */
img {
page-break-inside: avoid;
break-inside: avoid;
}
/* 设置页面边距 */
@page {
margin: 1.5cm;
}
/* 为表格行添加保护 */
tr {
page-break-inside: avoid;
break-inside: avoid;
}
/* 为列表项添加保护 */
li {
page-break-inside: avoid;
break-inside: avoid;
}
}
/* 在屏幕显示时也应用部分规则 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote {
orphans: 3; /* 段落末尾至少保留3行 */
widows: 3; /* 段落开头至少保留3行 */
}
- 保存文件 :
- 按
Ctrl + S(Windows)或Cmd + S(Mac)保存文件 - 关闭文本编辑器
- 按
第四步:应用自定义主题
-
重启Typora:
- 完全关闭Typora应用程序
- 重新启动Typora
-
选择自定义主题:
- 点击顶部菜单栏的
主题选项 - 在下拉菜单中找到并选择你创建的
custom-pdf主题 - 如果没有看到,可以尝试重启Typora
- 点击顶部菜单栏的
第五步:设置PDF导出
-
配置导出设置:
- 点击
文件→偏好设置 - 选择
导出选项卡 - 在
PDF部分,确保使用当前主题选项被选中
- 点击
-
测试PDF导出:
- 打开一个包含多页内容的Markdown文档
- 点击
文件→导出→PDF - 选择保存位置,点击
保存 - 检查生成的PDF文件,确认分页是否正常
备用方案:创建专门的PDF导出CSS
如果上述方法不完全解决问题,可以创建专门用于PDF导出的CSS:
- 在主题文件夹中创建新文件 :
pdf-export.css - 添加以下内容:
css
/* 专门用于PDF导出的样式 */
@media print {
body {
font-size: 12pt;
line-height: 1.5;
}
/* 强制分页控制 */
.page-break {
page-break-after: always;
break-after: always;
}
/* 重要内容保护 */
.no-break {
page-break-inside: avoid;
break-inside: avoid;
}
}
- 在Markdown文档中手动添加分页标记:
markdown
<!-- 在需要分页的地方添加 -->
<div class="page-break"></div>
<!-- 包裹重要内容防止分页 -->
<div class="no-break">
这是一个不会被分页打断的重要段落...
</div>
常见问题解决
- 如果主题不显示:重启Typora,或者检查文件名是否包含中文或特殊字符
- 如果CSS不生效:检查CSS语法是否正确,特别是括号和分号是否匹配
- 如果PDF仍然分页异常 :尝试调整
orphans和widows的值,或者增加页面边距
这个方案已经帮助很多用户解决了Typora导出PDF时的分页问题。如果仍有问题,可以考虑在Typora官方GitHub仓库提交issue反馈这个bug。
css
/* PDF导出分页控制 */
@media print {
/* 防止段落、标题、表格等在中间被分页 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote, figure {
page-break-inside: avoid;
break-inside: avoid;
}
/* 为标题设置分页前空间 */
h1, h2, h3 {
page-break-after: avoid;
page-break-before: auto;
}
/* 为代码块添加特殊处理 */
pre {
page-break-inside: avoid;
break-inside: avoid;
white-space: pre-wrap;
}
/* 为图片添加保护 */
img {
page-break-inside: avoid;
break-inside: avoid;
}
/* 设置页面边距 */
@page {
margin: 1.5cm;
}
/* 为表格行添加保护 */
tr {
page-break-inside: avoid;
break-inside: avoid;
}
/* 为列表项添加保护 */
li {
page-break-inside: avoid;
break-inside: avoid;
}
}
/* 在屏幕显示时也应用部分规则 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote {
orphans: 3; /* 段落末尾至少保留3行 */
widows: 3; /* 段落开头至少保留3行 */
}