中日韩格式化指南
VMark 内置了一套全面的中文、日文和韩文排版规则。这些工具有助于在混合中日韩与拉丁字符时保持一致的排版风格。
快速开始
使用 格式 → 格式化中日韩文档,或按 Alt + Mod + Shift + F 格式化整个文档。
若只格式化选中内容,使用 Mod + Shift + F。
格式化规则
1. 中日韩与拉丁字符间距
自动在中日韩字符与拉丁字符/数字之间添加空格。
| 格式化前 | 格式化后 |
|---|---|
| 学习 Python 编程 | 学习 Python 编程 |
| 共 100 个 | 共 100 个 |
| 使用 macOS 系统 | 使用 macOS 系统 |
2. 全角标点
在中日韩语境中将半角标点转换为全角。
| 格式化前 | 格式化后 |
|---|---|
| 你好,世界 | 你好,世界 |
| 什么? | 什么? |
| 注意:重要 | 注意:重要 |
3. 全角字符转换
将全角字母和数字转换为半角。
| 格式化前 | 格式化后 |
|---|---|
| 1234 | 1234 |
| ABC | ABC |
4. 括号转换
将半角括号在包围中日韩内容时转换为全角。
| 格式化前 | 格式化后 |
|---|---|
| (注意) | (注意) |
| [重点] | 【重点】 |
| (English) | (English) |
5. 破折号转换
将双连字符转换为正确的中文破折号。
| 格式化前 | 格式化后 |
|---|---|
| 原因--结果 | 原因 —— 结果 |
| 说明--这是 | 说明 —— 这是 |
6. 智能引号转换
VMark 使用 基于栈的引号配对算法,能正确处理:
- 缩略语:
don't、it's、l'amour等缩略形式保持不变 - 所有格:
Xiaolai's保持原样 - 英尺英寸符号:
5'10"(英尺/英寸)等测量符号保持不变 - 年代缩写:
'90s等年代简写被正确识别 - 中日韩语境检测:包围中日韩内容的引号使用弯引号或角括号
| 格式化前 | 格式化后 |
|---|---|
| 他说"hello" | 他说 "hello" |
| "don't worry" | "don't worry" |
| 5'10" tall | 5'10" tall |
启用角括号选项时:
| 格式化前 | 格式化后 |
|---|---|
| "中文内容" | 「中文内容」 |
| 「包含'嵌套'」 | 「包含『嵌套』」 |
7. 省略号规范化
统一省略号格式。
| 格式化前 | 格式化后 |
|---|---|
| 等等... | 等等... |
| 然后... 继续 | 然后... 继续 |
8. 重复标点
限制连续标点符号的数量(可配置上限)。
| 格式化前 | 格式化后(上限=1) |
|---|---|
| 太棒了!!! | 太棒了! |
| 真的吗??? | 真的吗? |
9. 其他清理
- 多余空格压缩:
多个 空格→多个 空格 - 移除行尾空格
- 斜杠间距:
A / B→A/B - 货币符号间距:
$ 100→$100
受保护的内容
以下内容 不受 格式化影响:
- 代码块(
```) - 内联代码(
`) - 链接 URL
- 图片路径
- HTML 标签
- YAML 前置内容
- 反斜杠转义的标点(例如
\,保持为,)
技术性结构
VMark 的 拉丁文段落扫描器 会自动检测并保护技术性结构,防止标点转换:
| 类型 | 示例 | 保护 |
|---|---|---|
| URL | https://example.com | 所有标点保持不变 |
| 邮件地址 | user@example.com | @ 和 . 保持不变 |
| 版本号 | v1.2.3、1.2.3.4 | 点号保持不变 |
| 小数 | 3.14、0.5 | 点号保持不变 |
| 时间 | 12:30、1:30:00 | 冒号保持不变 |
| 千位数 | 1,000、1,000,000 | 逗号保持不变 |
| 域名 | example.com | 点号保持不变 |
示例:
| 格式化前 | 格式化后 |
|---|---|
| 版本 v1.2.3 发布 | 版本 v1.2.3 发布 |
| 访问 https://example.com 获取 | 访问 https://example.com 获取 |
| 温度是 3.14 度 | 温度是 3.14 度 |
反斜杠转义
在任何标点前加 \ 可防止转换:
| 输入 | 输出 |
|---|---|
价格\,很贵 | 价格,很贵(逗号保持半角) |
测试\.内容 | 测试.内容(点号保持半角) |
配置
中日韩格式化选项可在 设置 → 语言 中配置:
- 启用/禁用特定规则
- 设置标点重复上限
- 选择引号样式(标准弯引号或角括号)
上下文引号
启用 上下文引号(默认)时:
- 包围中日韩内容的引号 → 弯引号
"" - 包围纯拉丁内容的引号 → 直引号
""
这样可以在正确格式化中日韩内容的同时,保留英文文本的自然外观。
中日韩字符间距
VMark 内置了专用的中日韩文字间距功能,通过在字符间添加细微间距来提高可读性。
设置
在 设置 → 编辑器 → 字体排印 → 中日韩字符间距 中配置:
| 选项 | 值 | 描述 |
|---|---|---|
| 关闭 | 0 | 无字符间距(默认) |
| 细微 | 0.02em | 几乎不明显的间距 |
| 轻微 | 0.03em | 轻微间距 |
| 正常 | 0.05em | 适合大多数场景的推荐值 |
| 宽松 | 0.08em | 较明显的间距 |
工作原理
- 对中日韩字符片段应用 letter-spacing CSS
- 排除代码块和内联代码
- 在所见即所得模式和导出的 HTML 中均有效
- 对拉丁文和数字无影响
示例
无字符间距:
这是一段中文文字,没有任何字间距。
0.05em 字符间距:
这 是 一 段 中 文 文 字 , 有 轻 微 的 字 间 距 。
差异细微,但能提高可读性,尤其是较长的段落。
智能引号样式
VMark 可以在中日韩格式化时自动将直引号转换为排版正确的智能引号,并支持多种引号样式。
引号样式
| 样式 | 双引号 | 单引号 |
|---|---|---|
| 弯引号 | "文字" | '文字' |
| 角括号 | 「文字」 | 『文字』 |
| 法式引号 | «文字» | ‹文字› |
基于栈的配对算法
VMark 使用复杂的基于栈的算法进行引号配对:
- 分词:识别文本中的所有引号字符
- 分类:根据上下文判断每个引号是开引号还是闭引号
- 缩略语检测:识别缩略形式(don't、it's)并保留
- 英尺英寸符号检测:识别测量符号(5'10")并保留
- 中日韩语境检测:检查被引用内容是否包含中日韩字符
- 孤立引号处理:优雅地处理不匹配的引号
示例
| 格式化前 | 格式化后(弯引号) |
|---|---|
| "hello" | "hello" |
| 'world' | 'world' |
| it's | it's |
| don't | don't |
| 5'10" | 5'10" |
| '90s | '90s |
缩略语中的撇号(如"it's"或"don't")被正确保留。
切换光标处的引号样式
无需重新格式化整个文档,即可快速切换已有引号的样式。将光标放在任意引号对内,按 Shift + Mod + ' 切换。
简单模式(默认):在直引号和首选样式之间切换。
| 格式化前 | 格式化后 | 再次格式化 |
|---|---|---|
| "hello" | "hello" | "hello" |
| 'world' | 'world' | 'world' |
完整循环模式:循环遍历所有四种样式。
| 步骤 | 双引号 | 单引号 |
|---|---|---|
| 1 | "text" | 'text' |
| 2 | "text" | 'text' |
| 3 | 「text」 | 『text』 |
| 4 | «text» | ‹text› |
| 5 | "text"(回到开始) | 'text' |
嵌套引号:当引号嵌套时,该命令切换包含光标的 最内层 引号对。
智能检测:撇号(don't)、英尺英寸符号(5'10")和年代缩写('90s)不会被视为引号对。
TIP
在 设置 → 语言 → 中日韩格式化 → 引号切换模式 中切换简单模式和完整循环模式。
配置
在 设置 → 语言 → 中日韩格式化 中启用智能引号转换,还可从下拉菜单中选择首选引号样式。
中日韩角括号转换
启用 中日韩角括号 时,包围中日韩内容的弯引号会自动转换为角括号。
支持的字符
角括号转换在被引用内容包含 汉字(CJK 统一表意文字 U+4E00–U+9FFF)时触发:
| 内容类型 | 示例 | 是否转换? |
|---|---|---|
| 中文 | "中文" | ✓ 「中文」 |
| 含汉字的日文 | "日本語" | ✓ 「日本語」 |
| 仅平假名 | "ひらがな" | ✗ 保持为 "ひらがな" |
| 仅片假名 | "カタカナ" | ✗ 保持为 "カタカナ" |
| 韩文 | "한글" | ✗ 保持为 "한글" |
| 英文 | "hello" | ✗ 保持为 "hello" |
提示: 对于仅含假名的日文文本,请手动使用角括号 「」,或包含至少一个汉字。
测试段落
将以下未格式化的文本复制到 VMark 中,然后按 Alt + Mod + Shift + F 进行格式化:
最近我在学习TypeScript和React,感觉收获很大.作为一个developer,掌握这些modern前端技术是必须的.
目前已经完成了3个projects,代码量超过1000行.其中最复杂的是一个dashboard应用,包含了数据可视化,用户认证,还有API集成等功能.
学习过程中遇到的最大挑战是--状态管理.Redux的概念. . .说实话有点难理解.后来换成了Zustand,简单多了!
老师说"don't give up"然后继续讲"写代码要注重可读性",我觉得很有道理.
访问https://example.com/docs获取v2.0.0版本文档,价格$99.99,时间12:30开始.
项目使用的技术栈如下:
- **Frontend**--React + TypeScript
- **Backend**--Node.js + Express
- **Database**--PostgreSQL
总共花费大约$200美元购买了学习资源,包括书籍和online courses.虽然价格不便宜,但非常值得.预期结果
格式化后,文本如下所示:
最近我在学习 TypeScript 和 React,感觉收获很大。作为一个 developer,掌握这些 modern 前端技术是必须的。
目前已经完成了 3 个 projects,代码量超过 1000 行。其中最复杂的是一个 dashboard 应用,包含了数据可视化,用户认证,还有 API 集成等功能。
学习过程中遇到的最大挑战是 —— 状态管理。Redux 的概念... 说实话有点难理解。后来换成了 Zustand,简单多了!
老师说 "don't give up" 然后继续讲 "写代码要注重可读性",我觉得很有道理。
访问 https://example.com/docs 获取 v2.0.0 版本文档,价格 $99.99,时间 12:30 开始。
项目使用的技术栈如下:
- Frontend —— React + TypeScript
- Backend —— Node.js + Express
- Database —— PostgreSQL
总共花费大约 $200 美元购买了学习资源,包括书籍和 online courses。虽然价格不便宜,但非常值得。
已应用的更改:
- 添加了中日韩与拉丁字符间距(学习 TypeScript)
- 转换了全角标点(,。!)
- 规范化了全角数字(3→3,1000→1000,200→200)
- 将双连字符转换为破折号(-- → ——)
- 规范化了省略号(... → ... )
- 应用了智能引号,保留了撇号(don't)
- 保护了技术性结构(https://example.com/docs,v2.0.0,$99.99,12:30)