跳转到内容

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

勤求古训,博采众方
删除的内容 添加的内容
修正 heti-list-latin 用法:应写在 <ol> 上(原写成外层 div,导致显示为罗马数字)
移除注音(HTML ruby)样式,行间注改为 图书排版 参数开关
第11行: 第11行:
* 段落 <code>&lt;p&gt;</code>:字号、行高、字距、首行缩进、两端对齐、断行规则
* 段落 <code>&lt;p&gt;</code>:字号、行高、字距、首行缩进、两端对齐、断行规则
* 标题 <code>&lt;h1&gt;</code>–<code>&lt;h6&gt;</code>:字号阶梯、行高、字距、字重
* 标题 <code>&lt;h1&gt;</code>–<code>&lt;h6&gt;</code>:字号阶梯、行高、字距、字重
* <code>&lt;ruby&gt;</code> / <code>&lt;rt&gt;</code>:行间注注音


表格、列表、链接、引用、代码块、<code>mark</code>/<code>q</code>/<code>sup</code>/<code>sub</code> 等元素'''不受影响'''——导航框、目录表、信息框的版式不会被改动。
表格、列表、链接、引用、代码块、<code>mark</code>/<code>q</code>/<code>sup</code>/<code>sub</code> 等元素'''不受影响'''——导航框、目录表、信息框的版式不会被改动。
第105行: 第104行:
</div>
</div>


=== 行间注 <code>heti--annotation</code> ===
行距放大到 2.25,便于行间标注;<code>&lt;em&gt;</code> 自动变成着重号(字下点)。
<pre>
&lt;div class="heti heti--annotation"&gt;
&lt;p&gt;…正文&lt;em&gt;需着重的字&lt;/em&gt;…&lt;/p&gt;
⚫
&lt;/div&gt;
</pre>
<div class="heti heti--annotation">
<p>予读而知其为<em>成无己</em>所解之书也。然而鱼亥不可正,句读不可离矣。</p>
</div>


=== 多栏 <code>heti--columns-2</code> / <code>heti--columns-3</code> ===
=== 多栏 <code>heti--columns-2</code> / <code>heti--columns-3</code> ===
第160行: 第149行:
| <code>heti-em</code> || 着重号(字下点)
| <code>heti-em</code> || 着重号(字下点)
|-
|-
| <code>heti-ruby--inline</code> || 行内 ruby 紧凑排版
|-
|-
| <code>heti-list-latin</code> || 用在 <code>&lt;ol&gt;</code> 上:A B C…(其内层 ol 为罗马数字,再内层为小写字母)
| <code>heti-list-latin</code> || 用在 <code>&lt;ol&gt;</code> 上:A B C…(其内层 ol 为罗马数字,再内层为小写字母)
第210行: 第198行:
</pre>
</pre>
<p>予读而知其为<span class="heti-em">成无己</span>所解之书也。</p>
<p>予读而知其为<span class="heti-em">成无己</span>所解之书也。</p>

'''heti-ruby--inline'''(行内 ruby 紧凑排版)
<pre>
&lt;span class="heti-ruby--inline"&gt;&lt;ruby&gt;疫&lt;rt&gt;yì&lt;/rt&gt;&lt;/ruby&gt;&lt;/span&gt;
</pre>
<p>吾邑<span class="heti-ruby--inline"><ruby>疫<rt>yì</rt></ruby></span>疠大作。</p>


'''heti-list-latin'''(列表编号:拉丁字母)
'''heti-list-latin'''(列表编号:拉丁字母)
第235行: 第217行:





== 行间注(注音 / 训诂) ==
=== 行间注版式(<code><nowiki>{{图书排版|行间注}}</nowiki></code>) ===
styles.css 自 2026-09 起支持 '''HTML ruby 行间注''',注文显示在字上方小字,无需任何扩展,在 wikitext 里直接写:
需要整段留出较大行间空间时(夹批、行间标注等),给模板传第 1 参数 <code>行间注</code>:
<pre>
<pre>
<nowiki>{{图书排版|行间注}}</nowiki>
&lt;ruby&gt;被注字&lt;rt&gt;pīn yīn&lt;/rt&gt;&lt;/ruby&gt;
(正文)
⚫
&lt;/div&gt;
</pre>
</pre>
它把段落行距放大到 <code>2.25</code>、首行缩进 <code>2em</code>;容器由模板打开,需在页面末尾手动写 <code>&lt;/div&gt;</code> 闭合。不传参数时本模板不输出任何可见内容。
上方注文默认 0.55em 小字;若整段都要注音,建议配合上面的行间注版式(行距 2.25)使用。

示例:注音与行间注渲染效果如下

<div class="heti heti--annotation">
吾邑<ruby>疫<rt>yì</rt></ruby>疠大作,予家<ruby>臧<rt>zāng</rt></ruby>获<ruby>率<rt>shuài</rt></ruby>六七就枕席。
</div>

== 作用范围与限制 ==
== 作用范围与限制 ==
* 只影响 <code>p</code>、<code>h1</code>–<code>h6</code>、<code>ruby</code>;其余标签一律不碰。
* 只影响 <code>p</code>、<code>h1</code>–<code>h6</code>、行间注容器 <code>.tushu-annotation</code>;其余标签一律不碰。
* 段落规则会命中'''模板输出里的 p'''(少数模板会生成段落),影响很小但存在。
* 段落规则会命中'''模板输出里的 p'''(少数模板会生成段落),影响很小但存在。
* 纸色背景 <code>#f6f4f0</code> 需要选中内容容器自身,TemplateStyles 无法做到,需站点级 CSS。
* 纸色背景 <code>#f6f4f0</code> 需要选中内容容器自身,TemplateStyles 无法做到,需站点级 CSS。
第255行: 第233行:


== 注意事项 ==
== 注意事项 ==
⚫
* 本版式仅用于'''页面正文内容''';本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的行间注功能无关。
* 一个 <code>&lt;ruby&gt;</code> 只注一音,要注多义请按需拆开显示。
⚫
* 行间注版式仅用于'''页面正文内容''';本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的行间注功能无关。
* 可选版式的 class 名沿用 <code>heti--*</code> 命名(来自中文排版方案 heti),但本站'''不依赖任何 heti 文件''',全部样式都在 [[Template:图书排版/styles.css]] 内。
* 可选版式的 class 名沿用 <code>heti--*</code> 命名(来自中文排版方案 heti),但本站'''不依赖任何 heti 文件''',全部样式都在 [[Template:图书排版/styles.css]] 内。



2026年9月17日 (四) 22:20的版本

该模板用于书籍内容页(如“伤寒论/章节”页面)的正文排版,本身不输出任何可见内容,只通过 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”。

可选版式(需加 class)

下列版式默认不生效,需要把内容包进对应 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-large(18px):予曰:“吾闻是书于家大夫之日久矣。”
heti-x-large(20px):予曰:“吾闻是书于家大夫之日久矣。”
heti-small(14px):予曰:“吾闻是书于家大夫之日久矣。”
heti-x-small(12px):予曰:“吾闻是书于家大夫之日久矣。”

heti-fn(文末注释区)

<div class="heti-fn">
<ol>
<li>……</li>
</ol>
</div>
  1. 赵开美,字清常,海虞(今江苏常熟)人,明代刻书家。
  2. 所刻《仲景全书》为《伤寒论》传世重要版本之一。

heti-em(着重号:字下点)

<span class="heti-em">成无己</span>

予读而知其为成无己所解之书也。

heti-list-latin(列表编号:拉丁字母)

<ol class="heti-list-latin">
<li>……</li>
</ol>
  1. 太阳病
  2. 阳明病
  3. 少阳病

heti-hang(悬挂:用于标题内落款。此类为 position:absolute 且未设偏移量,单独使用没有视觉变化,需按具体版式配合定位属性)

<h2>刻《仲景全书》序<span class="heti-hang">赵开美</span></h2>


行间注版式({{图书排版|行间注}})

需要整段留出较大行间空间时(夹批、行间标注等),给模板传第 1 参数 行间注:

{{图书排版|行间注}}
(正文)
</div>

它把段落行距放大到 2.25、首行缩进 2em;容器由模板打开,需在页面末尾手动写 </div> 闭合。不传参数时本模板不输出任何可见内容。

作用范围与限制

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

注意事项

  • 本版式仅用于页面正文内容;本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的行间注功能无关。
  • 可选版式的 class 名沿用 heti--* 命名(来自中文排版方案 heti),但本站不依赖任何 heti 文件,全部样式都在 Template:图书排版/styles.css 内。

参见