Files
MorphDoc/samples/tutorials/formal-document-tutorial.md
T
SkyJourney 83e6559c2c release: 发布 v0.5.1
新增能力:内置 4 套红头、3 套正式文档和 3 套标书主题,支持主题推荐页边距、页面装饰、页眉页脚和页码;增加结构化公文、项目报告及标书 Front Matter,内置 Fandol 中文字体、两份教程和 14 份主题示例。

桌面工作流:重组更多菜单,增加新建、保存、另存为快捷键和未保存确认;另存为后跟随新路径,主题示例自动切换主题,Desktop 发行包完整携带教程、示例与字体。

问题修复:修正红头标题居中与正式文档字体;围栏代码按正文宽度自动换行,长内容安全断行,至少两行即可在当前页分页,并统一保留 8px 左侧内容留白;Docker Web 镜像正确打包 samples。

兼容与部署:未声明主题推荐设置时继续使用 16mm 默认页边距;Web 隐藏不适用的另存为。正式镜像 yixiong/md-to-pdf:v0.5.1 内容 ID 为 sha256:72f519a69bfd6cb2f6df30c2be938e58ceb6f20e4748a32551874de3d436b276,Compose 健康运行。

验证结果:最终修复前 65 个测试文件、286 项测试通过,最终代码块与主题定向测试 27 项通过;全项目类型检查、生产构建和 git diff --check 通过。容器检出 14 套主题、17 份 Markdown,代码块回归 PDF 为 2 页且无越界。NSIS SHA-256 为 676CCE73D782B0B15AC6BC68F253CFBC4740383583E4DAA98F746EDF9999C5CC,ZIP SHA-256 为 82BF6ADF1200604F145CC86FA3ED193955CF6741EBEE3DF8953483515CFF621F。
2026-07-29 16:58:17 +08:00

377 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 公文与正式文档主题使用教程
author: Markdown PDF 导出器
keywords: [公文, 红头文件, 正式文档, 标书, 教程]
---
# 公文与正式文档主题使用教程
本教程介绍政企红头、政企正式和标书主题的选择方法,以及如何通过文档
开头的 Front Matter YAML 生成红头、发文字号、签发人、简报刊头、项目
封面、投标封面和文末版记。
## 一、Front Matter 是什么
Front Matter 是 Markdown 文件最前面的 YAML 配置,必须由两行 `---`
包围。结束标记之后才开始写正文。
```yaml
---
title: 关于进一步规范项目管理工作的通知
author: 示例市人民政府办公室
subject: 项目管理工作通知
keywords: [公文, 通知, 项目管理]
document:
profile: official
issuer: 示例市人民政府办公室
number: 示例办发〔202612号
date: 2026年7月29日
---
```
注意:
- YAML 使用空格缩进,不要使用 Tab;
- `document` 下的字段需要比 `document:` 多缩进两个空格;
- 日期建议写成明确的中文字符串,例如 `2026年7月29日`
- 教程或主题示例从“更多”菜单打开时会自动切换主题;
- 普通 Markdown 文件中的 Front Matter 只描述文档结构,不会自动选择主题。
## 二、选择合适的主题
### 政企红头
- **政企红头·国家标准**:适合通知、决定、请示、报告等较完整的党政机关公文结构。
- **政企红头·信函格式**:适合函、征求意见、答复等信函式公文。
- **政企红头·企业简版**:适合企业内部通知、制度和管理文件。
- **政企红头·工作简报**:适合工作动态、专题简报和阶段性通报。
### 政企正式
- **政企正式·规章制度**:适合制度、办法、细则和管理规范。
- **政企正式·工作报告**:适合总结、汇报、调研和会议材料。
- **政企正式·可研报告**:适合可行性研究、项目建议书和建设方案。
### 标书正式
- **标书正式·经典版**:适合常规投标文件和技术方案。
- **标书正式·商务蓝**:适合企业方案、汇报材料和商务投标。
- **标书正式·暗标版**:适合需要弱化投标人识别信息的技术暗标。
## 三、通用元数据字段
这些字段位于 YAML 最外层,可用于所有主题和 profile。
| 字段 | 类型 | 功能 | 示例 |
| --- | --- | --- | --- |
| `title` | 字符串 | 文档标题;结构化主题会将其用于红头标题或封面标题 | `title: 关于开展专项检查的通知` |
| `author` | 字符串 | 作者或编制单位,同时可写入 PDF 作者元数据 | `author: 示例市人民政府办公室` |
| `subject` | 字符串 | 文档主题,可写入 PDF 主题元数据 | `subject: 专项检查工作通知` |
| `keywords` | 字符串数组 | 文档关键词,可写入 PDF 关键词元数据 | `keywords: [公文, 通知, 检查]` |
| `document` | 对象 | 启用并配置结构化公文、简报、项目报告或标书 | `document: { profile: official }` |
`title` 是结构化主题最重要的通用字段。使用 `official``project-report`
`tender` 时,正文通常不再重复书写同名一级标题。
字段路径也可以用点号快速定位,例如 `document.profile: official` 表示
YAML 中 `document` 对象下的 `profile: official`,点号路径仅用于说明,
不能直接照此写入 YAML。
## 四、红头公文:`official`
### 最小配置
最小配置适合企业简版红头或暂不需要文号、签发人的文件:
```yaml
---
title: 关于调整项目评审流程的通知
document:
profile: official
issuer: 示例科技集团有限公司
date: 2026年7月29日
---
```
### 完整配置
```yaml
---
title: 关于进一步规范项目管理工作的通知
author: 示例市人民政府办公室
subject: 项目管理工作通知
keywords: [公文, 通知, 项目管理]
document:
profile: official
issuer: 示例市人民政府办公室
number: 示例办发〔202612号
secrecy: 秘密
urgency: 加急
signatory: 张三
date: 2026年7月29日
copyTo:
- 市发展改革委
- 市财政局
- 市审计局
printingOffice: 示例市人民政府办公室
---
```
### `official` 字段表
| 字段 | 类型 | 必填 | 功能 | 示例 |
| --- | --- | --- | --- | --- |
| `profile` | 固定字符串 | 是 | 启用红头公文结构,必须为 `official` | `profile: official` |
| `issuer` | 字符串 | 否 | 红头发文机关名称,并用于文末落款机关 | `issuer: 示例市人民政府办公室` |
| `number` | 字符串 | 否 | 发文字号 | `number: 示例办发〔202612号` |
| `secrecy` | 字符串 | 否 | 密级或保密期限 | `secrecy: 秘密` |
| `urgency` | 字符串 | 否 | 紧急程度 | `urgency: 加急` |
| `signatory` | 字符串 | 否 | 签发人姓名 | `signatory: 张三` |
| `date` | 字符串 | 否 | 成文日期,并用于版记日期 | `date: 2026年7月29日` |
| `copyTo` | 字符串或数组 | 否 | 文末抄送机关,最多 30 项 | `copyTo: [市财政局, 市审计局]` |
| `printingOffice` | 字符串 | 否 | 文末版记中的印发机关 | `printingOffice: 市政府办公室` |
`copyTo` 支持两种写法:
```yaml
document:
profile: official
copyTo: 市发展改革委, 市财政局, 市审计局
```
```yaml
document:
profile: official
copyTo:
- 市发展改革委
- 市财政局
- 市审计局
```
抄送信息不需要手工写在正文末尾,结构化主题会自动生成;印发机关和日期
也会进入标准化版记区域。
## 五、工作简报:`briefing`
工作简报使用独立的刊头、期号、编发单位和报送说明。
```yaml
---
title: 重点项目建设工作推进情况
author: 示例市重点项目办公室
subject: 重点项目工作简报
keywords: [简报, 项目建设, 工作推进]
document:
profile: briefing
masthead: 工作简报
issue: 2026年第12期
publisher: 示例市重点项目办公室
signatory: 王五
date: 2026年7月29日
contact: "报送:市政府领导;发送:各区人民政府、市直有关单位。编辑:综合协调处,电话:0000-12345678。"
---
```
| 字段 | 类型 | 必填 | 功能 | 示例 |
| --- | --- | --- | --- | --- |
| `profile` | 固定字符串 | 是 | 启用简报结构,必须为 `briefing` | `profile: briefing` |
| `masthead` | 字符串 | 否 | 简报顶部刊头名称 | `masthead: 工作简报` |
| `issue` | 字符串 | 否 | 期号 | `issue: 2026年第12期` |
| `publisher` | 字符串 | 否 | 编发单位 | `publisher: 市重点项目办公室` |
| `signatory` | 字符串 | 否 | 签发或审核人员 | `signatory: 王五` |
| `date` | 字符串 | 否 | 编发日期 | `date: 2026年7月29日` |
| `contact` | 字符串 | 否 | 报送、发送、编辑及联系方式说明,最长 500 字符 | `contact: "报送:市政府领导;编辑:综合处。"` |
## 六、可研与项目报告:`project-report`
`project-report` 会生成项目报告封面,适合可行性研究报告、项目建议书和
建设方案。
```yaml
---
title: 可行性研究报告
author: 示例工程咨询有限公司
subject: 智慧园区建设项目可行性研究
keywords: [可行性研究, 项目建设, 投资估算]
document:
profile: project-report
projectName: 智慧园区一体化平台建设项目
documentType: 可行性研究报告
owner: 示例产业园区管理委员会
preparedBy: 示例工程咨询有限公司
version: 送审稿 V1.0
date: 2026年7月
---
```
| 字段 | 类型 | 必填 | 功能 | 示例 |
| --- | --- | --- | --- | --- |
| `profile` | 固定字符串 | 是 | 启用项目报告封面,必须为 `project-report` | `profile: project-report` |
| `projectName` | 字符串 | 否 | 项目完整名称 | `projectName: 智慧园区一体化平台建设项目` |
| `documentType` | 字符串 | 否 | 报告类型 | `documentType: 可行性研究报告` |
| `owner` | 字符串 | 否 | 建设、委托或申报单位 | `owner: 示例产业园区管理委员会` |
| `preparedBy` | 字符串 | 否 | 编制单位 | `preparedBy: 示例工程咨询有限公司` |
| `version` | 字符串 | 否 | 文件版本或送审状态 | `version: 送审稿 V1.0` |
| `date` | 字符串 | 否 | 编制日期 | `date: 2026年7月` |
封面之后直接从第一章开始书写,例如:
```markdown
# 第一章 总论
## 一、项目概况
本项目拟建设统一的园区管理、企业服务和运行监测平台。
```
## 七、投标文件:`tender`
### 常规投标文件
```yaml
---
title: 投标文件
author: 示例科技有限公司
subject: 数据中心建设项目投标文件
keywords: [投标文件, 技术方案, 项目实施]
document:
profile: tender
copyMark: 正本
projectName: 数据中心基础设施建设项目
projectNumber: ZB-2026-001
volume: 技术及商务文件
bidder: 示例科技有限公司
representative: 李四
date: 2026年7月29日
---
```
### 技术暗标
暗标通常省略投标人和代表信息,具体要求应以招标文件为准:
```yaml
---
title: 技术文件
subject: 城市运行管理平台技术暗标
keywords: [技术暗标, 技术方案, 项目实施]
document:
profile: tender
copyMark: 技术暗标
projectName: 城市运行管理平台建设项目
projectNumber: JS-2026-009
volume: 技术文件
date: 2026年7月
---
```
### `tender` 字段表
| 字段 | 类型 | 必填 | 功能 | 示例 |
| --- | --- | --- | --- | --- |
| `profile` | 固定字符串 | 是 | 启用标书封面,必须为 `tender` | `profile: tender` |
| `copyMark` | 字符串 | 否 | 正本、副本或技术暗标标记 | `copyMark: 正本` |
| `projectName` | 字符串 | 否 | 招标或采购项目名称 | `projectName: 数据中心基础设施建设项目` |
| `projectNumber` | 字符串 | 否 | 项目或招标编号 | `projectNumber: ZB-2026-001` |
| `volume` | 字符串 | 否 | 分册名称 | `volume: 技术及商务文件` |
| `bidder` | 字符串 | 否 | 投标人名称 | `bidder: 示例科技有限公司` |
| `representative` | 字符串 | 否 | 法定代表人或授权代表 | `representative: 李四` |
| `date` | 字符串 | 否 | 投标或编制日期 | `date: 2026年7月29日` |
## 八、普通正式文档
规章制度和工作报告不一定需要结构化封面。只使用通用元数据,并在正文中
正常书写一级标题即可:
```yaml
---
title: 信息系统项目管理办法
author: 示例集团有限公司
subject: 信息系统项目管理制度
keywords: [规章制度, 项目管理, 信息系统]
---
# 信息系统项目管理办法
## 第一章 总则
```
这种写法适用于“政企正式·规章制度”和“政企正式·工作报告”。不要添加
不存在的 `document.profile`,否则文档会显示配置错误。
## 九、正文写法
红头公文的 Front Matter 结束后直接书写主送机关和正文,不要再次添加
`title` 相同的一级标题,否则会重复显示公文标题。
```markdown
各区人民政府,市政府各部门、各直属机构:
为进一步加强全市重点项目全过程管理,现将有关事项通知如下。
## 一、完善项目分级管理机制
各单位应当按照投资规模、建设周期和社会影响建立动态管理台账。
## 二、规范项目建设过程
(一)严格执行项目建设程序。
(二)建立月度调度机制。
```
## 十、页边距、页眉页脚和页码
这些项目不属于 Front Matter 的 `document` 字段,而由主题推荐值和
“导出设置”控制:
| 配置 | 默认行为 | 自定义方式 |
| --- | --- | --- |
| 页边距 | 主题有推荐值时跟随主题,否则四边 `16mm` | 导出设置 → 页边距 → 自定义 |
| 页眉 | 正式主题可提供推荐内容和字体 | 导出设置 → 页眉 |
| 页脚 | 正式主题可提供推荐内容和字体 | 导出设置 → 页脚 |
| 页码 | 红头主题可推荐 `— 1 —` 等公文式页码 | 导出设置 → 页码 |
| 纸张与方向 | 默认 A4 纵向 | 导出设置 → 纸张 |
- 国家标准红头主题使用公文式页码;
- 双面文档页码可按奇偶页放在外侧;
- 信函格式首页可以不显示页码;
- 切换为“自定义”后,导出设置会覆盖主题推荐值。
不要在 Front Matter 中填写 `margin``header``footer``pageNumber`
并期待其生效;当前版本不把这些字段作为文档结构协议解析。
## 十一、字体说明
正式主题内置可再分发的 Fandol 中文字体资源,以减少不同电脑之间的显示
差异:
- 正文以宋体风格为主;
- 一级结构标题使用黑体风格;
- 二级结构标题使用楷体风格;
- 红头机关名称使用项目内置的小标宋近似字体方案;
- 页眉页脚使用正式文档主题规定的对应字体。
内置字体用于稳定排版效果,但不声称等同于需要单独授权的商业字体。对
字体有强制采购或归档要求的单位,应按本单位规定配置经授权字体。
## 十二、常见错误
| 现象 | 原因 | 处理方法 |
| --- | --- | --- |
| YAML 被显示成正文 | 文件开头不是 `---`,或缺少结束的 `---` | 确保 Front Matter 位于文件第一行 |
| 提示未知字段 | `document` 使用严格字段校验 | 对照对应 profile 的字段表删除拼写错误或多余字段 |
| 标题出现两次 | `title` 已生成结构标题,正文又写了同名 `#` 标题 | 删除正文中重复的一级标题 |
| 抄送未显示 | `copyTo` 写在了 `document` 外层 | 将其缩进到 `document:` 下面 |
| 主题没有自动切换 | 普通文件不能通过 Front Matter 选主题 | 手动选择主题,或从“更多 → 主题示例”打开 |
| 页边距字段无效 | 页边距不属于文档 profile | 在导出设置中选择“跟随主题”或“自定义” |
## 十三、导出前检查
1. 确认标题、发文机关、发文字号和日期无误。
2. 检查主送机关、落款和抄送信息是否完整。
3. 暗标文件必须再次对照招标要求检查身份信息和版式限制。
4. 使用“精确”预览核对页码、页边距和分页边界。
5. 检查表格、图片、图表和附件说明是否跨页异常。
6. 最终 PDF 应保持文字可搜索,并在归档前完成内容复核。