导出与打印
VMark 提供多种方式导出和分享你的文档。
导出的产物
文件 → 导出 → HTML 会写出一个以文档命名的文件夹,其中始终同时包含以下两个文件 —— 无需选择模式:
MyDocument/
├── index.html ← 链接 assets/ 下的文件
├── standalone.html ← 所有内容以 data URI 形式嵌入(CSS、JS、图片、字体)
└── assets/
├── vmark-reader.css
├── vmark-reader.js
├── images/
│ ├── image1.png
│ └── ...
└── fonts/ ← 仅当文档含数学公式或你使用了网络字体时出现按需选用其中一个文件:
| 文件 | 适用场景 | 取舍 |
|---|---|---|
index.html | 托管到静态网站(URL 简洁,如 /MyDocument/)、在其他工具中编辑、控制体积 | 需要旁边的 assets/ 文件夹 |
standalone.html | 通过邮件或聊天发送单个文件,且不会丢失图片 | 体积较大 —— 所有资源都已内联 |
两个文件都使用与编辑器相同的所见即所得渲染器和样式表进行渲染,并且都包含 VMark 阅读器。
如何导出
导出 HTML
- 使用 文件 → 导出 → HTML
- 选择保存位置并输入名称 —— 它会成为文件夹名称(末尾的
.html会被去掉) - 在新文件夹中打开
index.html或standalone.html
重新导出到曾经使用过的文件夹
HTML 导出要么全部完成,要么完全不生效。所有内容会先写入你所选目标位置中的一个临时 .vmark-export-… 文件夹,只有在每个文件都已生成后才会移动到最终位置 —— 因此中途失败的导出会让上一次导出保持原样,而不会只覆盖一半。
你可能会遇到两种情况:
- "另一个导出正在写入此文件夹。" 同一时间只能有一个导出写入某个文件夹,跨窗口也是如此。请等待另一个导出完成;或者 —— 如果确实没有其他导出在运行 —— 删除提示中给出的
.vmark-export.lock文件后重试。 - 遗留了一个
.vmark-export-…文件夹。 VMark 完成后会将其删除。只有在恢复你之前的文件也失败时它才会保留,此时它保存着这些文件,错误信息会明确告诉你它们的位置。在它是唯一副本期间,不会删除任何内容。
打印 / 导出 PDF
在 macOS、Windows 和 Linux 上均可使用。
导出 PDF(文件 → 导出 → PDF)会直接写出 PDF,使用你在导出对话框中选择的纸张大小、方向、边距和排版。
打印(Cmd/Ctrl + P,或 文件 → 打印)则会打开系统打印对话框,你可以把文档发送到打印机,或使用操作系统自带的"存储为 PDF"。在 macOS 和 Linux 上,打印任务完成后 VMark 会显示一条简短提示,取消对话框时则不作提示;Windows 的打印界面不会回报结果,因此在那里不会显示提示。
导出对话框在三个平台上都会显示相同的进度阶段 —— 加载、生成、完成中、完成。
macOS 上的纸张大小
你在对话框中选择的纸张大小和方向在所有平台上都决定导出的页面。在 macOS 上它们会覆盖系统设置的纸张大小 —— 如果你的 Mac 默认是 Letter 而你选择了 A4,PDF 就是 A4。
侧边栏大纲。 在三个平台上,导出的 PDF 都带有标题大纲 —— 即 PDF 阅读器在侧边栏中显示的可点击目录。
页码
对话框中的 页码 部分会为每一页添加页码。它默认开启,位于底部居中。
| 设置 | 选项 |
|---|---|
| 位置 | 底部居中、底部右侧或关闭 |
| 格式 | 7、7 / 12 或 第 7 页,共 12 页 |
| 跳过首页 | 第 1 页不编号,这是标题页的常见处理方式 |
页码位于你所选的底部边距内,并随正文字号缩放。页码始终对应真实页序,因此跳过首页后,后续页面显示为 2、3、4……,而不会重新从 1 开始编号。
页码使用拉丁字母
页码使用阅读器无需下载的标准 PDF 字体绘制,这正是导出速度快且自包含的原因 —— 但该字体无法显示中文、日文、韩文或西里尔字母。两种纯数字格式在所有语言中都能正常使用。如果你的界面语言用该字体无法绘制的文字书写 Page 7 of 12(例如"第 7 页,共 12 页"),VMark 会改为输出数字形式 7 / 12,而不是留空或显示错误字符。
通过 Pandoc 导出
VMark 集成了 Pandoc —— 一款通用文档转换工具 —— 可将 Markdown 导出为其他格式。直接从菜单选择格式:
文件 → 导出 → 通过 Pandoc →
| 菜单项 | 扩展名 |
|---|---|
| Word (.docx) | .docx |
| EPUB (.epub) | .epub |
| LaTeX (.tex) | .tex |
| OpenDocument (.odt) | .odt |
| 富文本 (.rtf) | .rtf |
| 纯文本 (.txt) | .txt |
安装步骤:
- 从 pandoc.org/installing 安装 Pandoc,或通过包管理器安装:
- macOS:
brew install pandoc - Windows:
winget install pandoc - Linux:
apt install pandoc
- macOS:
- 重启 VMark(或进入 设置 → 文件与图片 → 文档工具 并点击 检测)
- 使用 文件 → 导出 → 通过 Pandoc → [格式] 进行导出
如果未安装 Pandoc,通过 Pandoc 子菜单只显示一项 —— "安装 Pandoc 以导出 Word、EPUB、LaTeX…" —— 点击后会打开 Pandoc 安装指南。
你可以在 设置 → 文件与图片 → 文档工具 中确认 Pandoc 是否已被检测到。
复制为 HTML
按 Cmd/Ctrl + Shift + C 将渲染后的文档以 HTML 源码形式复制。标记会以纯文本、不带样式的形式放入剪贴板,因此请把它粘贴到需要 HTML 代码的地方 —— 例如 CMS 的 HTML 视图、模板或代码编辑器;Word、邮件等富文本编辑器会把标签原样显示出来。本地图片以 data URI 形式嵌入,因此 HTML 离开 VMark 后图片仍能正常显示。
VMark 阅读器
每个 HTML 导出都包含 VMark 阅读器 —— 一种交互式阅读体验,拥有自己的设置、导航和灯箱。
设置面板
点击齿轮图标(右下角)打开设置面板;按 Esc 将其关闭。你的选择会由浏览器记住(localStorage),下次打开该文件时依然生效。
| 设置 | 选项 |
|---|---|
| 字体大小 | 12px – 28px |
| 行高 | 1.2 – 2.4 |
| 内容宽度 | 30em – 80em |
| 西文字体 | System、Athelas、Palatino、Georgia、Charter、Literata |
| 中日韩字体 | System、PingFang、Songti、Kaiti、Noto Serif、Source Han |
| 主题 | White、Paper(默认)、Mint、Sepia、Night |
| 中日韩字间距 | 0.02em – 0.12em |
| 中日韩-拉丁间距 | 切换中日韩和拉丁字符之间的自动间距 |
| 目录 | 切换目录侧边栏(与按 T 相同) |
| 展开所有章节 | 展开每个可折叠的 <details> 块 |
| 恢复默认 | 将所有设置恢复为默认值 |
目录
目录侧边栏帮助导航长文档:
- 切换:点击页面边缘的标签或按
T - 导航:点击任意标题跳转
- 高亮:滚动时高亮当前章节
阅读进度
页面顶部有一个细微的进度条,显示你已读了多少文档。
回到顶部
向下滚动时会出现一个浮动按钮。点击它返回顶部。
图片灯箱
点击任意图片以全屏灯箱查看:
- 关闭:点击外部、按
Esc或点击 X 按钮 - 缩放:图片以其自然大小显示
代码块
每个代码块包含交互控件:
| 按钮 | 功能 |
|---|---|
| 行号切换 | 显示/隐藏该块的行号 |
| 复制按钮 | 将代码复制到剪贴板 |
复制成功时显示复选标记。
脚注导航
脚注完全交互式:
- 点击脚注引用
[1]跳转到其定义 - 点击
↩反向链接返回原来阅读的位置
键盘快捷键
| 按键 | 操作 |
|---|---|
Esc | 关闭设置面板或灯箱 |
T | 切换目录 |
+ / = | 增大字号 |
- | 减小字号 |
导出快捷键
| 操作 | 快捷键 |
|---|---|
| 导出 HTML | (仅菜单) |
| 导出 PDF | (仅菜单) |
| 打印 | Mod + P |
| 复制为 HTML | Mod + Shift + C |
技巧
托管导出的 HTML
文件夹导出结构非常适合任何静态文件服务器:
# Python
cd MyDocument && python -m http.server 8000
# Node.js (npx)
npx serve MyDocument
# 直接打开
open MyDocument/index.html离线查看
两个文件都可离线打开,但对于含数学公式的文档有一点区别:
standalone.html完全自包含 —— KaTeX 样式表和字体在导出时已内联,因此无需联网即可渲染公式。index.html从 CDN(jsDelivr)加载 KaTeX 样式表,因此打开页面时公式需要联网;阅读器、图片以及assets/下的字体都是本地文件。
字体会在导出时下载:文档含有公式时下载 KaTeX 字体;你的拉丁字体和等宽字体若是 VMark 认识的网络字体(Literata、JetBrains Mono、Fira Code、IBM Plex Mono),也会一并下载。CJK 字体设置从不嵌入,系统字体或自定义字体族也不会嵌入 —— 对于这些字体,导出的页面会使用读者的系统字体栈。如果希望嵌入字体,请在能联网的机器上导出 —— 离线导出会回退到系统字体。
哪些图片会被嵌入
导出的文件携带真实的图片数据,而导出的文件会被分享出去 —— 因此 VMark 限定了这些数据可以来自哪里:
| 你的文档… | 图片可以来自 |
|---|---|
| 位于已打开的工作区内 | 该工作区内的任意位置 |
| 单独打开 | 文档所在文件夹及其子文件夹 |
| 未保存(从未存入磁盘) | 任何位置都不行 —— 即使打开了工作区,也不会嵌入本地图片;远程图片不受影响 |
对于未保存的文档,请先保存,再重新导出。这一点适用于 HTML、打印、PDF 和“复制为 HTML”。
相对路径从文档所在文件夹解析,与编辑器中完全一致 —— 因此只要目标仍在上述范围内,../images/photo.png 就能正常工作。超出范围的任何内容(~/.ssh/id_rsa、/etc/passwd、磁盘上其他位置的绝对路径)都会被拒绝,并导出为"Image not found"占位符,计入导出的警告中。
如果某张 ../ 图片被导出为占位符,请将其所在文件夹作为工作区打开后重新导出。
最佳实践
- 托管
index.html用于你要发布的文档 —— 让assets/文件夹保持在它旁边 - 发送
standalone.html用于通过电子邮件或聊天快速分享 - 为图片添加描述性替代文本 以提升可访问性
- 在不同浏览器中测试导出的 HTML