先说结论:对齐改分隔行,冒号位置决定方向
表头那一行自己没有任何对齐语法。真正控制表头居中、靠左、靠右的,是紧跟在表头下面的分隔行(全是短横线的那一行)——在对应列的短横线两侧加英文冒号:
:---—— 左对齐(冒号在左):---:—— 居中(两边都有)---:—— 右对齐(冒号在右)---—— 不加冒号,默认左对齐
改之前(三列都是默认左对齐):
| 姓名 | 金额 | 状态 |
| --- | --- | --- |
| 小明 | 1200 | 已发货 |
| 小红 | 860 | 待付款 |
改之后(分隔行加上冒号,表头跟着整列一起居中):
| 姓名 | 金额 | 状态 |
| :---: | :---: | :---: |
| 小明 | 1200 | 已发货 |
| 小红 | 860 | 待付款 |
注意:冒号是加在分隔行对应列的短横线上,不是加在表头文字旁边。在表头单元格里补空格、塞冒号,都改变不了对齐。
对齐不生效,先查两件事。一,符号必须是半角英文:冒号 : 不能写成中文全角「:」,短横线 - 也不能是全角——从别的文档复制粘贴最容易带进全角符号,渲染器直接不认(mdview 在 v1.0.104 修过对齐语法不生效的问题,遇到失效先查这个)。二,冒号加错了行:它是分隔行的语法,写在表头行或数据行里都没有用。
只想动表头、内容不动?标准语法做不到
分隔行冒号是按整列生效的:某一列写了 :---:,表头和这一列的所有内容一起居中。而实际写文档时非常常见的需求是「表头居中、内容左对齐」——标题醒目,正文好读。这种一半一半的对齐,标准 Markdown 里没有开关,两条路:
- HTML 兜底:把表格改写成
<table>,表头写<th style="text-align:center">。能实现,但整张表失去 Markdown 的简洁,维护起来也麻烦; - mdview 的表头独立对齐:源码层面支持给单个表头单元格写属性——
| [姓名]{style="text-align:center"} | 金额 |
| :--- | ---: |
| 小明 | 1200 |
| 小红 | 860 |
渲染出来:「姓名」表头单独居中,「金额」整列(含表头)右对齐。这套写法 mdview 直接支持,编辑后保存不丢;它属于属性扩展语法(Pandoc 一族),在 GitHub 等只认标准语法的场合会原样显示这串文字——文档要多平台流转的话,用前先想清楚。
记不住语法,就用菜单点
按 F2 就地编辑:右键列菜单,两组对齐各管各的
用 mdview 打开 .md 文件,按 F2,页面还是渲染好的样子,鼠标移到表格上边缘浮现列手柄,右键打开列菜单。对齐相关的正好两组:
- 「表头左对齐 / 表头居中 / 表头右对齐 / 表头默认对齐」——只动表头那一格,源码里自动写好属性语法,内容纹丝不动;「表头默认对齐」是撤掉单独设置,表头回到跟随整列的状态;
- 「内容左对齐 / 内容居中 / 内容右对齐」——标准的那套整列对齐,对应分隔行冒号,表头跟着内容一起动。
点完即时生效,改完自动保存(停笔一秒左右静默写入文件),Ctrl + Z 可撤销。冒号在左还是在右不用背,点一遍看效果就行。
按 F3 分屏编辑:手改冒号,右边当场验收
愿意自己写冒号的话,F3 分屏编辑更稳:左边改分隔行,右边表头的方向立刻跟着变。不小心敲成全角冒号,右边纹丝不动,当场就暴露了,不用存盘再切窗口验证。两个模式按 F2 / F3 可直接互切,都自动保存。
小结
| 想做的事 | 手改源码 | mdview F2 列菜单 |
|---|---|---|
| 表头随整列居中 / 靠右 | 分隔行对应列写 :---: / ---: | 「内容居中 / 内容右对齐」 |
| 只动表头、内容不动 | 标准语法做不到;HTML 表格或 mdview 属性语法 | 「表头居中 / 表头右对齐」 |
| 撤掉表头的单独设置 | 删掉表头里的属性写法 | 「表头默认对齐」 |
| 对齐写了没反应 | 查全角冒号、冒号是否加在分隔行 | F3 实时预览当场暴露 |
表格语法想系统过一遍(对齐、列宽、合并单元格),见表格完全指南;表头下面的各列内容怎么对齐、数字为什么该右对齐,下一篇专门讲;从零建一张表见怎样添加一个表格;mdview 编辑器的全部快捷键整理在这篇速查里。