跳转到内容

Template:图书排版/doc:修订间差异

勤求古训,博采众方
删除的内容 添加的内容
以 heti 官方规则为底补齐版式类,并把版式改为模板参数开关({{图书排版|行间注}} 等)
以 heti 官方规则为底补齐版式类,并把版式改为模板参数开关({{图书排版|行间注}} 等)
 
(未显示同一用户的2个中间版本)
第26行: 第26行:
== 默认排版效果 ==
== 默认排版效果 ==


=== 字体分派:中文 / 西文 / 标点 ===
=== 字体分派:中文 / 西文 ===
正文字体栈按「西文 → 黑体 → 宋体 → 扩展区」的顺序回退:
样式用两个 <code>@font-face</code> 配 <code>unicode-range</code>,把不同码位分给不同字体:


{| class="wikitable"
{| class="wikitable"
! 字符范围 !! 实际字体 !! 说明
! 字符范围 !! 实际字体 !! 说明
|-
|-
| 拉丁字母、数字(ASCII) || Georgia 等西文字体 || 保留原有西文观感
| 拉丁字母、数字(ASCII) || Verdana / Arial(黑体栈的西文) || 保留原有西文观感
|-
|-
| 汉字、假名等 CJK || '''PingFang SC / Microsoft YaHei'''(黑体栈) → Hiragino Sans GB → SimSun → SimSun-ExtB/G → Jigmo → HanaMin || 黑体优先,屏幕阅读舒适;生僻字自动往后掉到扩展区字体。繁体视图由 <code>:lang(zh-hant)</code> 换成繁体系(苹方 TC / 微軟正黑體)
| 汉字、假名等 CJK || '''Noto Serif SC''' → Source Han Serif SC → Songti SC → SimSun → PingFang SC Regular → … || 宋体类优先(思源宋体 → macOS 宋体 → Windows 宋体),苹方、雅黑等黑体仅作最后兜底;可用名称因系统而异 —— '''Windows 上安装的苹方其注册名为 <code>PingFang SC Regular</code>''',写成家族名 <code>PingFang SC</code> 或 macOS 的 <code>PingFangSC-Regular</code> 都不会匹配。(<code>local()</code> 只认字体全名 / PostScript 名)
|-
|-
| 标点(<code>,。、:;!?()“”《》「」</code>) || 跟随正文字体(上两行同源) || 2026-09 起不再单独指定字体;引号字形随各字体而异
| 中文标点(引号、破折号、顿号、书名号等) || Noto Serif SC → Source Han Serif SC → Songti SC → SimSun(宋体类) || 标点占满一个全角字身,两侧留白正常
|}
|}

'''为什么标点要单独处理:'''全角引号 <code>“ ”</code> 的码位是 U+201C / U+201D,Georgia、苹方、微软雅黑都含这两个字形,且做成'''西文风格的窄引号'''——此前因此出现「引号与后一个字贴在一起」。现在标点固定交给宋体类全角字体,任何设备上都不会再贴字。


=== 字号阶梯 ===
=== 字号阶梯 ===
第90行: 第88行:
| <code>限宽</code> || <code>line-length</code> || <code>heti--line-length</code> || 正文限宽 42em 并居中
| <code>限宽</code> || <code>line-length</code> || <code>heti--line-length</code> || 正文限宽 42em 并居中
|-
|-
| <code>双栏</code> || <code>columns-2</code> || <code>heti--columns-2</code> || 两栏。(需三栏/四栏时可手写 <code>&lt;div class="heti--columns-3"&gt;</code> 或 <code>&lt;div class="heti--columns-4"&gt;</code>)
| <code>双栏</code> || <code>columns-2</code> || <code>heti--columns-2</code> || 两栏(栏目数固定为 2)
|}
|}


第140行: 第138行:


=== 多栏(参数 <code>双栏</code>) ===
=== 多栏(参数 <code>双栏</code>) ===
把正文排成两栏。注意'''不要叠加 <code>|限宽</code>'''——多栏自带 <code>max-width: none</code>(分栏需要宽度),限宽 42em 再分两栏每栏只剩约 350px。栏宽类(<code>heti--columns-16em</code> 到 <code>heti--columns-48em</code>)无参数入口,需要时手写。
把正文排成两栏。注意'''不要叠加 <code>|限宽</code>'''——多栏自带 <code>max-width: none</code>(分栏需要宽度),限宽 42em 再分两栏每栏只剩约 350px。
<pre>
<pre>
<nowiki>{{图书排版|双栏}}</nowiki>
<nowiki>{{图书排版|双栏}}</nowiki>

2026年9月22日 (二) 21:16的最新版本

该模板用于书籍内容页(如“伤寒论/章节”页面)的正文排版,本身不输出任何可见内容,只通过 TemplateStyles 引入 Template:图书排版/styles.css。

用法

在页面顶部引入模板、在正文结束处闭合容器(153 个既有页面均已如此):

{{图书排版}}

(正文……)

{{图书排版/尾}}

头部与尾部必须成对。 头部模板总是输出一个基础容器 <div class="tushu-body">(不传参数时也一样,只是不带版式类),闭合靠 {{图书排版/尾}} 或文末手写 </div>。

  • 漏写尾部不会报错,但容器会自动延伸到页面末尾,把后续章节与页尾导航一并包进版式里。
  • 尾部应放在 ---- 与 <references /> 之上,使参考资料节留在容器内、页尾导航与分类留在容器外。

样式只作用于正文段落与标题:

  • 段落 <p>:字号、行高、首行缩进、两端对齐、断行规则
  • 标题 <h1>–<h6>:字号阶梯、行高、字重

表格、列表、链接、引用、代码块、mark/q/sup/sub 等元素不受影响——导航框、目录表、信息框的版式不会被改动。

默认排版效果

字体分派:中文 / 西文

正文字体栈按“西文 → 黑体 → 宋体 → 扩展区”的顺序回退:

字符范围 实际字体 说明
拉丁字母、数字(ASCII) Verdana / Arial(黑体栈的西文) 保留原有西文观感
汉字、假名等 CJK PingFang SC / Microsoft YaHei(黑体栈) → Hiragino Sans GB → SimSun → SimSun-ExtB/G → Jigmo → HanaMin 黑体优先,屏幕阅读舒适;生僻字自动往后掉到扩展区字体。繁体视图由 :lang(zh-hant) 换成繁体系(苹方 TC / 微软正黑体)
标点(,。、:;!?()“”《》「」) 跟随正文字体(上两行同源) 2026-09 起不再单独指定字体;引号字形随各字体而异

字号阶梯

元素 字号 行高
<h1> 2.25rem(36px) 1.4
<h2> 1.875rem(30px) 1.4
<h3> 1.625rem(26px) 1.4
<h4> 1.5rem(24px) 1.4
<h5> 1.375rem(22px) 1.4
<h6> 1.25rem(20px) 1.4
正文 <p> 1.25rem(20px) 2

单位策略:正文与标题用 rem——相对根字号(html { font-size: 100% } = 16px),嵌套时不会叠乘,与 MediaWiki 的 --font-size-medium 做法一致;辅助类字号用 em——相对所在元素的字号,随环境自动缩放。

段落与对齐

  • 字号 1.25rem(= 20px)
  • 段距:不自行声明,用站点默认(.mw-body p 为 0.5em 上 / 1em 下)
  • 首行缩进 2em
  • 两端对齐 text-align: justify
  • 行高 2;标题行高 1.4
  • 非中文段落自动左对齐、取消缩进
  • 长串西文自动断行(overflow-wrap / hyphens)
  • 相邻标题自动收紧间距(h1+h2、h2+h3 … 上边距 12px)

实时效果(本页即为演示):

刻《仲景全书》序

岁乙未,吾邑疫疠大作,予家臧获率六七就枕席。予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”Latin check: Georgia ABC abc 0123 — “quoted latin”。

可选版式(模板参数)

下列版式默认不生效;给模板传参数即可打开对应容器(英文别名等效)。

参数可以叠加——多写几个,类名会拼在同一个容器上,两种版式同时生效:{{图书排版|诗词|限宽}} → <div class="heti--poetry heti--line-length">。

参数 英文别名 容器类 效果
诗词 poetry heti--poetry 居中、不缩进
限宽 line-length heti--line-length 正文限宽 42em 并居中
双栏 columns-2 heti--columns-2 两栏(栏目数固定为 2)

诗词体(参数 诗词)

正文居中、不缩进,适合诗词、铭文。

{{图书排版|诗词}}

(诗句,每句之间空一行)

{{图书排版/尾}}

静夜思

床前明月光,疑是地上霜。

举头望明月,低头思故乡。

分栏诗词(推荐配 <poem>)

Poem 扩展的 <poem> 负责把换行变成 <br>(因此诗句不必每句空行),|双栏 负责分栏并把诗句改为左对齐(|诗词|双栏 组合与参数顺序无关)。诗词名与作者放在分栏容器之外,只有诗块参与分栏。

{{图书排版|诗词|双栏}}

==静夜思==

——唐·李白

<poem>
床前明月光
疑是地上霜
举头望明月
低头思故乡
</poem>

{{图书排版/尾}}

该组合也可手写为 <div class="heti--poetry heti--columns-2">(与 |诗词|双栏 等价,参数顺序无关)。 注意 |双栏 自带 max-width: none(多栏需要宽度),不要再叠加 |限宽。

用法(尾部可选,见#容器与闭合):

{{图书排版|诗词}}
(正文)
{{图书排版/尾}}

下方各节仍可用手写 class 的方式实现同样效果。

多栏(参数 双栏)

把正文排成两栏。注意不要叠加 |限宽——多栏自带 max-width: none(分栏需要宽度),限宽 42em 再分两栏每栏只剩约 350px。

{{图书排版|双栏}}

(较长的正文)

{{图书排版/尾}}

予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”吾吴和缓明卿沈君南昉在海虞,藉其力而起死亡殆遍,予家得大造于沈君矣。不知沈君操何术而若斯之神,因询之。

字体族切换

class 中文字体
heti--song / heti--serif 宋体(Songti SC / SimSun)

字体族类是这套样式里没有模板参数入口的,需要时这样手写。注意只写这一个类名,不要写成 class="heti heti--song"——本站没有引入 heti 的 .heti 容器类。

宋体示例:予曰:“吾闻是书于家大夫之日久矣。”

作用范围与限制

  • 只影响 p、h1–h6 与各版式容器;其余标签一律不碰。
  • 段落规则会命中模板输出里的 p(少数模板会生成段落),影响很小但存在。
  • 纸色背景 #f6f4f0 需要选中内容容器自身,TemplateStyles 无法做到,需站点级 CSS。
  • 未引入 heti 的 JavaScript 增强(中西文自动间距、标点挤压):需要改站点 JS,且其挤压方向与“标点要有留白”相反。

容器与闭合

{{图书排版}} 会输出一个基础容器 <div class="tushu-body">,正文限宽(42em + 居中)就挂在这个容器上——容器继承正文字号,因此 em 的基准就是正文,标题与段落因而同宽对齐。(若把 max-width 分别写在 p 与 h1–h6 上,em 会按各元素自身字号计算,h1 的 42em 宽达 1344px,标题反而无法与正文对齐。)

写上 {{图书排版/尾}} 显式闭合(等价于手写 </div>)。153 个既有页面均已如此。

尾部应放在 ---- 与 <references /> 之上,这样参考资料节留在容器内,而页尾导航、目录、分类留在容器外。若两者都不存在,则放在 {{daohang-f}} 之上。

若不写尾部,容器会由 HTML5 解析器自动闭合到内容区末尾:页面不会报错,但页末的导航、目录也会被一并限宽。

  • 传了版式参数也一样:容器始终只有一个,参数是它的附加类,例如 class="tushu-body heti--poetry"。
  • 本版式仅用于页面正文内容;本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的版式开关无关。
  • 版式类名沿用 heti(sivan/heti)的官方命名;本站样式表以 heti 官方规则为底、按需补齐,全部内容都在 Template:图书排版/styles.css 内,不加载任何外部 heti 文件。

繁体(zh-Hant)的字体

简体视图正文用黑体栈(苹方 SC → 微软雅黑 → …);繁体视图由 :lang(zh-hant) 规则改用繁体系字体栈(苹方 TC → 微软正黑体 → 思源黑体 TC → 明体 → …),与站内 Vector 皮肤一致。两套栈只在中文段不同:西文、标点(@font-face)与扩展区兜底(SimSun-ExtB/SimSun-ExtG/Jigmo/HanaMin)相同。

参见