跳转到内容

Template:图书排版/styles.css

勤求古训,博采众方
WikiBot​(留言 | 贡献)2026年9月19日 (六) 17:42的版本 (以 heti 官方规则为底补齐版式类,并把版式改为模板参数开关({{图书排版|行间注}} 等))
/* ===== 字体别名:中文标点走全角字体(修复引号贴字)===== */
@font-face {
	font-family: "TemplateStyles CJK Punct";
	src: local("Noto Serif SC"), local("NotoSerifSC-Regular"),
	     local("Source Han Serif SC"), local("Songti SC"),
	     local("STSong"), local("SimSun"), local("宋体"), local("Microsoft YaHei UI");
	unicode-range: U+2000-206F, U+3000-303F;
}
@font-face {
	font-family: "TemplateStyles CJK Body";
	src: local("Noto Serif SC"), local("NotoSerifSC-Regular"),
	     local("Source Han Serif SC"), local("SourceHanSerifSC-Regular"),
	     local("Songti SC"), local("SongtiSC-Regular"), local("STSong"),
	     local("SimSun"), local("宋体"),
	     local("PingFang SC Regular"), local("PingFang SC"), local("PingFangSC-Regular"),
	     local("Hiragino Sans GB"), local("HiraginoSansGB-W3"),
	     local("Microsoft YaHei UI"), local("Microsoft YaHei"),
	     local("WenQuanYi Micro Hei"), local("ST Heiti");
	unicode-range: U+2E80-2EFF, U+31C0-31EF, U+3200-32FF,
	               U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE10-FE6F, U+FF00-FFEF,
	               U+1F200-1F2FF, U+20000-2A6DF;
}

p {
margin-top:12px;margin-bottom:24px;text-align:justify
}
p:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)), p:not(:lang(zh)) {
text-align:start
}
h1, h2, h3, h4, h5, h6 {
position:relative;margin:0;margin-top:24px;margin-bottom:12px;font-weight:600
}
h1 {
margin-bottom:24px;font-size:32px;line-height:48px
}
h2 {
font-size:28px;line-height:36px
}
h3 {
font-size:24px;line-height:36px
}
h4 {
font-size:20px;line-height:24px
}
h5 {
font-size:18px;line-height:24px
}
h6 {
font-size:16px;line-height:24px
}
h1, h2, h3 {
letter-spacing:.05em
}
h1:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)), h1:not(:lang(zh)), h2:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)), h2:not(:lang(zh)), h3:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)), h3:not(:lang(zh)) {
letter-spacing:0
}
h1+h2, h2+h3, h3+h4, h4+h5, h5+h6 {
margin-top:12px
}

.heti--serif {
font-family:"TemplateStyles CJK Punct","Songti SC","SimSun","Noto Serif SC",Georgia,serif
}
.heti--classic {
font-family:"TemplateStyles CJK Punct","Songti SC","SimSun","Noto Serif SC",Georgia,serif
}
.heti--classic h1, .heti--classic h2, .heti--classic h3, .heti--classic h4, .heti--classic h5, .heti--classic h6 {
font-family:"TemplateStyles CJK Punct","Kaiti SC","STKaiti","KaiTi",Georgia,serif;font-weight:800
}
.heti--classic blockquote, .heti--classic cite, .heti--classic q {
font-family:"TemplateStyles CJK Punct","Kaiti SC","STKaiti","KaiTi",Georgia,serif
}
.heti--classic figcaption, .heti--classic caption, .heti--classic th {
font-family:"TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif
}
.heti--hei {
font-family:"TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif
}
.heti--song {
font-family:"TemplateStyles CJK Punct","Songti SC","SimSun","Noto Serif SC",Georgia,serif
}
.heti--kai {
font-family:"TemplateStyles CJK Punct","Kaiti SC","STKaiti","KaiTi",Georgia,serif
}
.heti--columns-1, .heti--columns-2, .heti--columns-3, .heti--columns-4, .heti--columns-16em, .heti--columns-20em, .heti--columns-24em, .heti--columns-28em, .heti--columns-32em, .heti--columns-36em, .heti--columns-40em, .heti--columns-44em, .heti--columns-48em {
max-width:none;column-gap:2em
}
.heti--columns-1 p, .heti--columns-2 p, .heti--columns-3 p, .heti--columns-4 p, .heti--columns-16em p, .heti--columns-20em p, .heti--columns-24em p, .heti--columns-28em p, .heti--columns-32em p, .heti--columns-36em p, .heti--columns-40em p, .heti--columns-44em p, .heti--columns-48em p {
margin-top:6px;margin-bottom:12px;text-indent:2em
}
.heti--columns-1 {
column-count:1
}
.heti--columns-2 {
column-count:2
}
.heti--columns-3 {
column-count:3
}
.heti--columns-4 {
column-count:4
}
.heti--columns-16em {
column-width:16em
}
.heti--columns-20em {
column-width:20em
}
.heti--columns-24em {
column-width:24em
}
.heti--columns-28em {
column-width:28em
}
.heti--columns-32em {
column-width:32em
}
.heti--columns-36em {
column-width:36em
}
.heti--columns-40em {
column-width:40em
}
.heti--columns-44em {
column-width:44em
}
.heti--columns-48em {
column-width:48em
}
.heti--vertical {
max-width:none;max-height:42em;writing-mode:vertical-rl;letter-spacing:.125em
}
.heti--vertical h1, .heti--vertical h2, .heti--vertical h3, .heti--vertical h4, .heti--vertical h5, .heti--vertical h6 {
text-align:start
}
.heti--vertical q {
quotes:"「" "」" "『" "』"
}
.heti--ancient, .heti--poetry {
font-family:"TemplateStyles CJK Punct","Songti SC","SimSun","Noto Serif SC",Georgia,serif
}
.heti--ancient h1, .heti--ancient h2, .heti--ancient h3, .heti--ancient h4, .heti--ancient h5, .heti--ancient h6, .heti--poetry h1, .heti--poetry h2, .heti--poetry h3, .heti--poetry h4, .heti--poetry h5, .heti--poetry h6 {
font-family:"TemplateStyles CJK Punct","Kaiti SC","STKaiti","KaiTi",Georgia,serif;font-weight:800;text-align:center
}
.heti--ancient h1 .heti-meta, .heti--ancient h2 .heti-meta, .heti--ancient h3 .heti-meta, .heti--ancient h4 .heti-meta, .heti--ancient h5 .heti-meta, .heti--ancient h6 .heti-meta, .heti--poetry h1 .heti-meta, .heti--poetry h2 .heti-meta, .heti--poetry h3 .heti-meta, .heti--poetry h4 .heti-meta, .heti--poetry h5 .heti-meta, .heti--poetry h6 .heti-meta {
font-weight:400
}
@media screen and (min-width: 640px){
.heti--ancient h1 .heti-meta, .heti--ancient h2 .heti-meta, .heti--ancient h3 .heti-meta, .heti--ancient h4 .heti-meta, .heti--ancient h5 .heti-meta, .heti--ancient h6 .heti-meta, .heti--poetry h1 .heti-meta, .heti--poetry h2 .heti-meta, .heti--poetry h3 .heti-meta, .heti--poetry h4 .heti-meta, .heti--poetry h5 .heti-meta, .heti--poetry h6 .heti-meta {
position:absolute;line-height:inherit;text-indent:0;display:inline;margin-top:4px;margin-left:8px
}

}
.heti--ancient .heti-meta, .heti--poetry .heti-meta {
line-height:24px;text-align:center;text-indent:0
}
.heti--ancient p {
text-indent:2em
}
.heti--poetry p {
text-align:center;text-indent:0
}
.heti--annotation p {
margin-top:12px;margin-bottom:24px;line-height:2.25;text-indent:2em
}
.heti--annotation .heti-meta {
margin-top:12px;margin-bottom:24px
}
.heti-meta {
display:block;text-indent:0
}
.heti-verse {
text-align:center;text-indent:0
}
.heti-large {
font-size:18px;line-height:24px
}
.heti-x-large {
font-size:20px;line-height:30px;letter-spacing:.05em
}
.heti-small {
font-size:14px;line-height:24px
}
.heti-x-small {
font-size:12px;line-height:18px
}
.heti-list-latin {
list-style-type:upper-latin
}
.heti-list-latin ol {
list-style-type:lower-roman
}
.heti-list-latin ol ol {
list-style-type:lower-latin
}
.heti-list-han {

}
.heti-list-han ol {
list-style-type:decimal
}
.heti-list-han ol ol {
list-style-type:decimal-leading-zero
}
.heti-fn {
margin-top:59px;border-top:1px solid;border-top-color:#ccc;font-size:14px;font-family:"TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif;line-height:24px
}
.heti-fn ol {
margin-top:12px;margin-bottom:0
}
.heti-fn li:target {
background-color:#dbedff
}
.heti-hang {
position:absolute;line-height:inherit;text-indent:0
}
.heti-em {
text-emphasis:filled circle;text-emphasis-position:under right
}
.heti-em:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)), .heti-em:not(:lang(zh)) {
text-emphasis:none
}
/* ===== 基础正文排版(自 heti 字号阶梯)===== *//* ===== 页面底色与文字色(站点原有)===== *//* ===== 中文标点与中文字体别名 ===== *//* ===== 正文与标题字体栈(引号走全角字体)===== */
h1, h2, h3, h4, h5, h6 {
	font-family: "TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif;
	font-weight: 600;
}
h2, h3, h4, h5, h6 { font-weight: bold; }
p { text-indent: 2em; }
p:not(:lang(zh)) { text-align: start; text-indent: 0; }

/* ===== 正文段落(仅 p)===== */
p {
	font-size: 17px;
	letter-spacing: .02em;
	overflow-wrap: break-word;
	word-wrap: break-word;
	hyphens: auto;
	text-indent: 2em;
	color: #202122;
	font-family: "TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif;
}
p:not(:lang(zh)) {
	text-align: start;
	text-indent: 0;
}

/* ===== 标题(仅 h1-h6)===== */
h1, h2, h3, h4, h5, h6 {
	color: #202122;
	font-family: "TemplateStyles CJK Punct","TemplateStyles CJK Body",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti",sans-serif;
}

/* ===== 2026-09 补齐(依据 scripts/survey-heti.js --diff)==============================
   1) heti 官方有而本站缺的 5 个类(.heti 容器类本体有意不引入,理由见 content/tushu/DESIGN.md §2);
   2) 参考 Wikisource SKQS 的两项:正文行宽、楷体字体栈。
   ================================================================================== */
.heti--sans {
	font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"
}
.heti-adjacent-half {
	margin-inline-end:-0.5em
}
.heti-adjacent-quarter {
	margin-inline-end:-0.25em
}
.heti-spacing-start {
	margin-inline-end:.25em
}
.heti-spacing-end {
	margin-inline-start:.25em
}

/* 正文行宽 —— 参考 Wikisource SKQS 的 .skqs-body(max-width:42em + 居中);
   heti 的 $line-length 也是 42em(两处独立收敛到同一值)。由 {{图书排版|限宽}} 触发。 */
.heti--line-length {
	max-width: 42em;
	margin-inline: auto;
}

/* 楷体字体栈 —— 取自 Wikisource [[Template:楷體/style.css]] 的完整栈;
   删去本站不会命中的 :lang(zh-tw)/(zh-hk)/(zh-mo) 变体覆盖(本站只有 zh/zh-hans/zh-hant)。 */
.heti--kai, .heti--kai p {
	font-family: "TemplateStyles CJK Punct", Times, "Kaiti SC", 楷体, KaiTi, 楷体_GB2312, 华文楷体, STKaiti, "Kaiti TC", 標楷體, DFKai-SB, "TW-Kai", 全字庫正楷體, serif;
}

/* 楷体字号:楷体字形偏小(笔画细、中宫宽),同 px 下视觉上小于宋体,
   故放大 1.2em(≈20.4px)。用相对值而非 px,改正文字号时自动跟随。
   注意必须写在 .heti--kai p 上——p 的 font-size:17px 是绝对值,
   写在容器 .heti--kai 上对它无效。 */
.heti--kai p {
	font-size: 1.2em;
}

/* 诗词 + 多栏:诗句不缩进。多栏规则(.heti--columns-* p)设了 text-indent:2em,
   而用 <br /> 连接的诗句同属一个 <p>,会造成"只有第一句空两格"。
   此处以更高特异性(两个类 + p)覆盖,并放在样式表末尾确保生效。 */
.heti--poetry.heti--columns-1 p,
.heti--poetry.heti--columns-2 p,
.heti--poetry.heti--columns-3 p,
.heti--poetry.heti--columns-4 p {
	text-indent: 0;
}

/* <poem> 在多栏内:诗行不缩进。
   多栏规则(.heti--columns-* p)设了 text-indent:2em,对诗行不合适——
   <poem> 输出 <div class="poem"><p>…</p></div>,故用「多栏类 + .poem + p」
   提升特异性覆盖它。这样 {{图书排版|双栏}} + <poem> 即为「左对齐、不缩进、多栏」的诗栏。 */
.heti--columns-1 .poem p,
.heti--columns-2 .poem p,
.heti--columns-3 .poem p,
.heti--columns-4 .poem p {
	text-indent: 0;
}

/* ===== 基础容器 ================================================================
   .tushu-body 由 Module:图书排版 **总是**输出(无参数时也输出),但本身不设任何样式。
   保留它的唯一原因是:153 个页面已于 2026-09 加上 {{图书排版/尾}},
   若模板不输出容器,那些 </div> 会变成孤立的闭合标签。
   正文限宽已于 2026-09 改回**由 |限宽 参数触发**(见下方 .heti--line-length)。
   ============================================================================== */