模板:图书排版/doc
该模板用于书籍内容页(如“伤寒论/章节”页面)的正文排版,本身不输出任何可见内容,只通过 TemplateStyles 引入 Template:图书排版/styles.css。
用法
在页面顶部引用:
{{图书排版}}
样式只作用于正文段落与标题:
- 段落
<p>:字号、行高、字距、首行缩进、两端对齐、断行规则 - 标题
<h1>–<h6>:字号阶梯、行高、字距、字重
表格、列表、链接、引用、代码块、mark/q/sup/sub 等元素不受影响——导航框、目录表、信息框的版式不会被改动。
默认排版效果
字体分派:中文 / 西文 / 标点
样式用两个 @font-face 配 unicode-range,把不同码位分给不同字体:
| 字符范围 | 实际字体 | 说明 |
|---|---|---|
| 拉丁字母、数字(ASCII) | Georgia 等西文字体 | 保留原有西文观感 |
| 汉字、假名等 CJK | Noto Serif SC → Source Han Serif SC → Songti SC → SimSun → PingFang SC Regular → … | 宋体类优先(思源宋体 → macOS 宋体 → Windows 宋体),苹方、雅黑等黑体仅作最后兜底;可用名称因系统而异 —— Windows 上安装的苹方其注册名为 PingFang SC Regular,写成家族名 PingFang SC 或 macOS 的 PingFangSC-Regular 都不会匹配。(local() 只认字体全名 / PostScript 名)
|
| 中文标点(引号、破折号、顿号、书名号等) | Noto Serif SC → Source Han Serif SC → Songti SC → SimSun(宋体类) | 标点占满一个全角字身,两侧留白正常 |
为什么标点要单独处理:全角引号 “ ” 的码位是 U+201C / U+201D,Georgia、苹方、微软雅黑都含这两个字形,且做成西文风格的窄引号——此前因此出现“引号与后一个字贴在一起”。现在标点固定交给宋体类全角字体,任何设备上都不会再贴字。
字号阶梯
| 元素 | 字号 | 行高 |
|---|---|---|
<h1> |
32px | 48px |
<h2> |
28px | 36px |
<h3> |
24px | 36px |
<h4> |
20px | 24px |
<h5> |
18px | 24px |
<h6> |
16px | 24px |
正文 <p> |
17px | 继承皮肤(约 1.5–1.6) |
段落与对齐
- 字距
.02em(标题 h1–h3 为.05em) - 首行缩进
2em - 两端对齐
text-align: justify - 行高:正文不固定,继承皮肤默认(Vector 2022 的
--line-height-content,约 1.5–1.6);标题行高固定为 48/36/36/24/24/24px - 非中文段落自动左对齐、取消缩进
- 长串西文自动断行(
overflow-wrap/hyphens) - 相邻标题自动收紧间距(
h1+h2、h2+h3… 上边距 12px)
实时效果(本页即为演示):
刻《仲景全书》序
岁乙未,吾邑疫疠大作,予家臧获率六七就枕席。予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”Latin check: Georgia ABC abc 0123 — “quoted latin”。
可选版式(模板参数)
下列版式默认不生效;给模板传参数即可打开对应容器(英文别名等效)。
参数可以叠加——多写几个,类名会拼在同一个容器上,两种版式同时生效:{{图书排版|古籍|限宽}} → <div class="heti--ancient heti--line-length">。
| 参数 | 英文别名 | 容器类 | 效果 |
|---|---|---|---|
行间注 |
annotation |
heti--annotation |
行距 2.25、首行缩进 2em(夹批、行间标注) |
古籍 |
ancient |
heti--ancient |
标题居中、正文宋体(序跋) |
诗词 |
poetry |
heti--poetry |
居中、不缩进 |
楷体 |
kai |
heti--kai |
楷体字体栈 |
黑体 |
sans |
heti--sans |
黑体字体栈 |
限宽 |
line-length |
heti--line-length |
正文限宽 42em 并居中(2026-09 起已默认生效,此参数只用于显式重申) |
竖排 |
vertical |
heti--vertical |
竖排,附横/直排切换条 |
双栏 / 三栏 / 四栏 |
columns-2 / columns-3 / columns-4 |
heti--columns-2/3/4 |
多栏 |
用法(尾部可选,见#容器与闭合):
{{图书排版|行间注}}
(正文)
{{图书排版/尾}}
下方各节仍可用手写 class 的方式实现同样效果。
古籍体 heti--ancient
标题居中、正文宋体,适合序跋。
<div class="heti heti--ancient"> (正文) </div>
刻《仲景全书》序 予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”
诗词体 heti--poetry
正文居中、不缩进,适合诗词、铭文。
<div class="heti heti--poetry"> <p>床前明月光,疑是地上霜。</p> </div>
静夜思
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
竖排 heti--vertical
自上而下、右起排列,适合牌记、题签。
<div class="heti heti--vertical"> <p>岁乙未,吾邑疫疠大作。</p> </div>
岁乙未,吾邑疫疠大作,予家臧获率六七就枕席。
多栏 heti--columns-2 / heti--columns-3
把正文排成多栏;也可用 heti--columns-16em 到 heti--columns-48em 指定栏宽。
<div class="heti heti--columns-2"> <p>(较长的正文)</p> </div>
予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”吾吴和缓明卿沈君南昉在海虞,藉其力而起死亡殆遍,予家得大造于沈君矣。不知沈君操何术而若斯之神,因询之。
字体族切换
| class | 中文字体 |
|---|---|
heti--hei(默认) |
黑体(PingFang SC / Microsoft YaHei UI) |
heti--song / heti--serif / heti--classic |
宋体(Songti SC / SimSun) |
heti--kai |
楷体(Kaiti SC / STKaiti / KaiTi) |
宋体示例:予曰:“吾闻是书于家大夫之日久矣。”
楷体示例:予曰:“吾闻是书于家大夫之日久矣。”
辅助类速查
| class | 用途 |
|---|---|
heti-meta |
落款、副题(块级、不缩进) |
heti-verse |
诗句(居中、不缩进) |
heti-large / heti-x-large / heti-small / heti-x-small |
字号微调 18px / 20px / 14px / 12px |
heti-fn |
文末注释区 |
heti-hang |
悬挂缩进 |
heti-em |
着重号(字下点) |
heti-list-latin |
用在 <ol> 上:A B C…(其内层 ol 为罗马数字,再内层为小写字母)
|
heti-list-han |
暂不可用:汉字编号(cjk-ideographic)不在 TemplateStyles 白名单内,规则已被剔除,仅剩 ol 的数字回退
|
辅助类演示
下面每个类的效果都是本页实时渲染的。
heti-meta(落款、副题:块级、不缩进)
<div class="heti-meta">万历己亥三月谷旦 海虞清常道人赵开美序</div>
heti-verse(诗句:居中、不缩进)
<div class="heti-verse">床前明月光,疑是地上霜。</div>
heti-large / heti-x-large / heti-small / heti-x-small(四档字号)
<div class="heti-large">……</div>
heti-fn(文末注释区)
<div class="heti-fn"> <ol> <li>……</li> </ol> </div>
- 赵开美,字清常,海虞(今江苏常熟)人,明代刻书家。
- 所刻《仲景全书》为《伤寒论》传世重要版本之一。
heti-em(着重号:字下点)
<span class="heti-em">成无己</span>
予读而知其为成无己所解之书也。
heti-list-latin(列表编号:拉丁字母)
<ol class="heti-list-latin"> <li>……</li> </ol>
- 太阳病
- 阳明病
- 少阳病
heti-hang(悬挂:用于标题内落款。此类为 position:absolute 且未设偏移量,单独使用没有视觉变化,需按具体版式配合定位属性)
<h2>刻《仲景全书》序<span class="heti-hang">赵开美</span></h2>
行间注版式 行间注
需要整段留出较大行间空间时(夹批、行间标注等)使用,把段落行距放大到 2.25、首行缩进 2em:
{{图书排版|行间注}}
(正文)
{{图书排版/尾}}
容器由头部模板打开、由尾部模板闭合;尾部不可省(也可在文末直接手写 </div>)。不传参数时本模板不输出任何可见内容。
作用范围与限制
- 只影响
p、h1–h6与各版式容器(如行间注的.heti--annotation);其余标签一律不碰。 - 段落规则会命中模板输出里的 p(少数模板会生成段落),影响很小但存在。
- 纸色背景
#f6f4f0需要选中内容容器自身,TemplateStyles 无法做到,需站点级 CSS。 - 未引入 heti 的 JavaScript 增强(中西文自动间距、标点挤压):需要改站点 JS,且其挤压方向与“标点要有留白”相反。
容器与闭合
{{图书排版}} 会输出一个基础容器 <div class="tushu-body">,正文限宽(42em + 居中)就挂在这个容器上——容器继承正文字号,因此 em 的基准就是正文,标题与段落因而同宽对齐。(若把 max-width 分别写在 p 与 h1–h6 上,em 会按各元素自身字号计算,h1 的 42em 宽达 1344px,标题反而无法与正文对齐。)
不写闭合标签也可以。 容器由 HTML5 解析器自动闭合到内容区末尾,因此页末的导航、表格也会落在容器内并一并限宽(多数情况下反而更整齐)。这正是 2026-09 起 153 个既有页面无需任何改动就能生效的原因。
- 若只想让容器包住正文、把页末导航排除在外,在正文结束时写
{{图书排版/尾}}(等价于手写</div>)。 - 传了版式参数也一样:容器始终只有一个,参数是它的附加类,例如
class="tushu-body heti--ancient"。 - 本版式仅用于页面正文内容;本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的版式开关无关。
- 版式类名沿用 heti(sivan/heti)的官方命名;本站样式表以 heti 官方规则为底、按需补齐,全部内容都在 Template:图书排版/styles.css 内,不加载任何外部 heti 文件。