Template:图书排版/doc:修订间差异
删除的内容 添加的内容
修正文档格式:把 Markdown 的 **粗体** 修正为 MediaWiki 的 '''粗体''' |
以 heti 官方规则为底补齐版式类,并把版式改为模板参数开关({{图书排版|行间注}} 等) |
||
| (未显示2个用户的32个中间版本) | |||
第3行:
== 用法 ==
在页面'''顶部'''引入模板、在正文'''结束处闭合容器'''(153 个既有页面均已如此):
<pre>
<nowiki>{{
(正文……)
<nowiki>{{图书排版/尾}}</nowiki>
</pre>
'''头部与尾部必须成对。''' 头部模板总是输出一个基础容器 <code><div class="tushu-body"></code>(不传参数时也一样,只是不带版式类),闭合靠 <code>{{tl|图书排版/尾}}</code> 或文末手写 <code></div></code>。
* 漏写尾部'''不会报错''',但容器会自动延伸到页面末尾,把后续章节与页尾导航一并包进版式里。
* 尾部应放在 <code>----</code> 与 <code><references /></code> '''之上''',使参考资料节留在容器内、页尾导航与分类留在容器外。
样式'''只作用于正文段落与标题''':
* 段落 <code><p></code>:字号、行高
* 标题 <code><h1></code>–<code><h6></code>:字号阶梯、行高
表格、列表、链接、引用、代码块、<code>mark</code>/<code>q</code>/<code>sup</code>/<code>sub</code> 等元素'''不受影响'''——导航框、目录表、信息框的版式不会被改动。
第17行 ⟶ 第26行:
== 默认排版效果 ==
=== 字体分派:中文 / 西文
正文字体栈按「西文 → 黑体 → 宋体 → 扩展区」的顺序回退:
{| class="wikitable"
! 字符范围 !! 实际字体 !! 说明
|-
| 拉丁字母、数字(ASCII) ||
|-
| 汉字、假名等 CJK || '''PingFang SC / Microsoft YaHei'''(黑体栈) → Hiragino Sans GB →
|-
| 标点(<code>,。、:;!?()“”《》「」</code>) || 跟随正文字体(上两行同源) || 2026-09 起不再单独指定字体;引号字形随各字体而异
|}
=== 字号阶梯 ===
第36行 ⟶ 第43行:
! 元素 !! 字号 !! 行高
|-
| <code><h1></code> ||
|-
| <code><h2></code> ||
|-
| <code><h3></code> ||
|-
| <code><h4></code> ||
|-
| <code><h5></code> ||
|-
| <code><h6></code> ||
|-
| 正文 <code><p></code> ||
|}
'''单位策略''':'''正文与标题用 <code>rem</code>'''——相对根字号(<code>html { font-size: 100% }</code> = 16px),嵌套时不会叠乘,与 MediaWiki 的 <code>--font-size-medium</code> 做法一致;'''辅助类字号用 <code>em</code>'''——相对所在元素的字号,随环境自动缩放。
=== 段落与对齐 ===
* 字
* 段距:不自行声明,用站点默认(<code>.mw-body p</code> 为 <code>0.5em</code> 上 / <code>1em</code> 下)
* 首行缩进 <code>2em</code>
* 两端对齐 <code>text-align: justify</code>
* 行高 <code>2</code>;标题行高 <code>1.4</code>
* 非中文段落自动左对齐、取消缩进
* 长串西文自动断行(<code>overflow-wrap</code> / <code>hyphens</code>)
第65行 ⟶ 第76行:
岁乙未,吾邑疫疠大作,予家臧获率六七就枕席。予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”Latin check: Georgia ABC abc 0123 — “quoted latin”。
== 可选版式(
下列版式默认不生效
参数可以'''叠加'''——多写几个,类名会拼在同一个容器上,两种版式同时生效:<code><nowiki>{{图书排版|诗词|限宽}}</nowiki></code> → <code><div class="heti--poetry heti--line-length"></code>。
{| class="wikitable"
! 参数 !! 英文别名 !! 容器类 !! 效果
|-
| <code>诗词</code> || <code>poetry</code> || <code>heti--poetry</code> || 居中、不缩进
|-
| <code>限宽</code> || <code>line-length</code> || <code>heti--line-length</code> || 正文限宽 42em 并居中
|-
| <code>双栏</code> || <code>columns-2</code> || <code>heti--columns-2</code> || 两栏(栏目数固定为 2)
|}
=== 诗词体(参数 <code>诗词</code>) ===
正文居中、不缩进,适合诗词、铭文。
<pre>
<nowiki>{{图书排版|诗词}}</nowiki>
(诗句,每句之间空一行)
<nowiki>{{图书排版/尾}}</nowiki>
</pre>
{{图书排版|诗词}}
'''静夜思'''
<p>床前明月光,疑是地上霜。</p>
<p>举头望明月,低头思故乡。</p>
{{图书排版/尾}}
=== 分栏诗词(推荐配 <code><poem></code>) ===
Poem 扩展的 <code><poem></code> 负责把换行变成 <code><br></code>(因此诗句'''不必每句空行'''),<code>|双栏</code> 负责分栏并把诗句改为左对齐(<code>|诗词|双栏</code> 组合与参数顺序无关)。诗词名与作者放在分栏容器'''之外''',只有诗块参与分栏。
<pre>
<nowiki>{{图书排版|诗词|双栏}}</nowiki>
==静夜思==
——唐·李白
<nowiki><poem></nowiki>
床前明月光
疑是地上霜
举头望明月
低头思故乡
<nowiki></poem></nowiki>
<nowiki>{{图书排版/尾}}</nowiki>
</pre>
该组合也可手写为 <code><div class="heti--poetry heti--columns-2"></code>(与 <code>|诗词|双栏</code> 等价,参数顺序无关)。
注意 <code>|双栏</code> 自带 <code>max-width: none</code>(多栏需要宽度),'''不要再叠加 <code>|限宽</code>'''。
用法(尾部可选,见[[#容器与闭合]]):
<pre>
<nowiki>{{图书排版|诗词}}</nowiki>
(正文)
<nowiki>{{图书排版/尾}}</nowiki>
</pre>
下方各节仍可用手写 class 的方式实现同样效果。
=== 多栏(参数 <code>
把正文排成
<pre>
<nowiki>{{图书排版|双栏}}</nowiki>
(较长的正文)
<nowiki>{{图书排版/尾}}</nowiki>
</pre>
{{图书排版|双栏}}
<p>予曰:“吾闻是书于家大夫之日久矣,而书肆间绝不可得。”君曰:“予诚有之。”吾吴和缓明卿沈君南昉在海虞,藉其力而起死亡殆徧,予家得大造于沈君矣。不知沈君操何术而若斯之神,因询之。</p>
{{图书排版/尾}}
=== 字体族切换 ===
第130行 ⟶ 第154行:
! class !! 中文字体
|-
| <code>heti--
|}
字体族类是这套样式里'''没有模板参数入口'''的,需要时这样手写。注意'''只写这一个类名''',不要写成 <code>class="heti heti--song"</code>——本站'''没有引入''' heti 的 <code>.heti</code> 容器类。
<div class="heti--song">
<p>宋体示例:予曰:“吾闻是书于家大夫之日久矣。”</p>
</div>
* 只影响 <code>p</code>、<code>h1</code>–<code>h6</code> 与各版式容器;其余标签一律不碰。
* 段落规则会命中'''模板输出里的 p'''(少数模板会生成段落),影响很小但存在。
* 纸色背景 <code>#f6f4f0</code> 需要选中内容容器自身,TemplateStyles 无法做到,需站点级 CSS。
* 未引入 heti 的 JavaScript 增强(中西文自动间距、标点挤压):需要改站点 JS,且其挤压方向与「标点要有留白」相反。
== 容器与闭合 ==
<code><nowiki>{{图书排版}}</nowiki></code> 会输出一个基础容器 <code><div class="tushu-body"></code>,正文限宽(42em + 居中)就挂在这个容器上——容器继承正文字号,因此 <code>em</code> 的基准就是正文,标题与段落因而同宽对齐。(若把 <code>max-width</code> 分别写在 <code>p</code> 与 <code>h1</code>–<code>h6</code> 上,<code>em</code> 会按各元素自身字号计算,h1 的 42em 宽达 1344px,标题反而无法与正文对齐。)
'''写上 <code><nowiki>{{图书排版/尾}}</nowiki></code> 显式闭合'''(等价于手写 <code></div></code>)。153 个既有页面均已如此。
'''尾部应放在 <code>----</code> 与 <code><references /></code> 之上''',这样参考资料节留在容器内,而页尾导航、目录、分类留在容器外。若两者都不存在,则放在 <code><nowiki>{{daohang-f}}</nowiki></code> 之上。
若不写尾部,容器会由 HTML5 解析器自动闭合到内容区末尾:页面不会报错,但页末的导航、目录也会被一并限宽。
* 传了版式参数也一样:容器始终只有一个,参数是它的附加类,例如 <code>class="tushu-body heti--poetry"</code>。
* 本版式仅用于'''页面正文内容''';本站阅读器(Gadget BookVerticalReader)是独立的书籍阅读器,与本模板的版式开关无关。
* 版式类名沿用 heti([https://github.com/sivan/heti sivan/heti])的官方命名;本站样式表以 heti 官方规则为底、按需补齐,全部内容都在 [[Template:图书排版/styles.css]] 内,'''不加载任何外部 heti 文件'''。
== 繁体(zh-Hant)的字体 ==
简体视图正文用黑体栈(苹方 SC → 微软雅黑 → …);繁体视图由 <code>:lang(zh-hant)</code> 规则改用繁体系字体栈(苹方 TC → '''微軟正黑體''' → 思源黑體 TC → 明體 → …),与站内 Vector 皮肤一致。两套栈只在中文段不同:西文、标点(<code>@font-face</code>)与扩展区兜底(<code>SimSun-ExtB</code>/<code>SimSun-ExtG</code>/<code>Jigmo</code>/<code>HanaMin</code>)相同。
== 参见 ==
| |||