@chengzhao-dev/dsh-quarto-book 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/package.json +5 -2
  4. package/skills/designing-theme/SKILL.md +2 -2
  5. package/skills/designing-theme/assets/theme/css/base.css +216 -55
  6. package/skills/designing-theme/assets/theme/css/callouts.css +32 -23
  7. package/skills/designing-theme/assets/theme/css/code.css +84 -2
  8. package/skills/designing-theme/assets/theme/css/content.css +152 -36
  9. package/skills/designing-theme/assets/theme/css/landing.css +150 -52
  10. package/skills/designing-theme/assets/theme/css/nav.css +462 -35
  11. package/skills/designing-theme/assets/theme/css/sidebar.css +76 -31
  12. package/skills/designing-theme/assets/theme/css/tokens.css +34 -16
  13. package/skills/designing-theme/assets/theme/includes/fonts.html +1 -1
  14. package/skills/designing-theme/assets/theme/includes/footer.html +16 -7
  15. package/skills/designing-theme/assets/theme/includes/palette.html +420 -0
  16. package/skills/designing-theme/assets/theme/palettes/flexoki/brand-mark.svg +3 -0
  17. package/skills/designing-theme/assets/theme/palettes/flexoki/favicon-dark.svg +5 -0
  18. package/skills/designing-theme/assets/theme/palettes/flexoki/favicon-light.svg +5 -0
  19. package/skills/designing-theme/assets/theme/palettes/flexoki/highlight-dark.theme +214 -0
  20. package/skills/designing-theme/assets/theme/palettes/flexoki/highlight-light.theme +214 -0
  21. package/skills/designing-theme/assets/theme/palettes/flexoki/meta.md +53 -0
  22. package/skills/designing-theme/assets/theme/palettes/flexoki/theme-dark.scss +43 -0
  23. package/skills/designing-theme/assets/theme/palettes/flexoki/theme-light.scss +40 -0
  24. package/skills/designing-theme/assets/theme/palettes/flexoki/tokens.css +156 -0
  25. package/skills/designing-theme/assets/theme/palettes/hill-light/brand-mark.svg +3 -0
  26. package/skills/designing-theme/assets/theme/palettes/hill-light/favicon-dark.svg +5 -0
  27. package/skills/designing-theme/assets/theme/palettes/hill-light/favicon-light.svg +5 -0
  28. package/skills/designing-theme/assets/theme/palettes/hill-light/meta.md +78 -0
  29. package/skills/designing-theme/assets/theme/palettes/hill-light/syntax.css +150 -0
  30. package/skills/designing-theme/assets/theme/palettes/hill-light/tokens.css +322 -0
  31. package/skills/designing-theme/assets/theme/palettes/solarized/brand-mark.svg +3 -0
  32. package/skills/designing-theme/assets/theme/palettes/solarized/favicon-dark.svg +5 -0
  33. package/skills/designing-theme/assets/theme/palettes/solarized/favicon-light.svg +5 -0
  34. package/skills/designing-theme/assets/theme/palettes/solarized/highlight-dark.theme +214 -0
  35. package/skills/designing-theme/assets/theme/palettes/solarized/highlight-light.theme +214 -0
  36. package/skills/designing-theme/assets/theme/palettes/solarized/meta.md +66 -0
  37. package/skills/designing-theme/assets/theme/palettes/solarized/syntax.css +67 -0
  38. package/skills/designing-theme/assets/theme/palettes/solarized/theme-dark.scss +43 -0
  39. package/skills/designing-theme/assets/theme/palettes/solarized/theme-light.scss +41 -0
  40. package/skills/designing-theme/assets/theme/palettes/solarized/tokens.css +154 -0
  41. package/skills/designing-theme/knowledge/reading-surface.md +27 -15
  42. package/skills/designing-theme/references/theme-spine.md +2 -2
  43. package/skills/designing-theme/references/theme-system.md +82 -36
  44. package/skills/designing-theme/scripts/checking-layout.py +306 -48
  45. package/skills/designing-theme/scripts/measuring-pages.mjs +40 -3
  46. package/skills/writing-quarto/quarto/render.md +2 -2
  47. package/skills/writing-quarto/scripts/checking-dom.py +14 -7
  48. package/skills/designing-theme/assets/theme/assets/brand-mark.svg +0 -4
  49. package/skills/designing-theme/assets/theme/assets/favicon.svg +0 -9
  50. package/skills/designing-theme/assets/theme/palettes/github/highlight-dark.theme +0 -213
  51. package/skills/designing-theme/assets/theme/palettes/github/highlight-light.theme +0 -213
  52. package/skills/designing-theme/assets/theme/palettes/github/meta.md +0 -38
  53. package/skills/designing-theme/assets/theme/palettes/github/theme-dark.scss +0 -35
  54. package/skills/designing-theme/assets/theme/palettes/github/theme-light.scss +0 -34
  55. package/skills/designing-theme/assets/theme/palettes/github/tokens.css +0 -160
@@ -0,0 +1,214 @@
1
+ {
2
+ "metadata": {
3
+ "name": "Quarto Book Solarized Dark",
4
+ "revision": 1,
5
+ "license": "SPDX-License-Identifier: MIT",
6
+ "copyright": [
7
+ "SPDX-FileCopyrightText: Ethan Schoonover (Solarized, MIT)",
8
+ "SPDX-FileCopyrightText: 2020 Waqar Ahmed <waqar.17a@gmail.com> (skylighting 结构基础)"
9
+ ]
10
+ },
11
+ "background-color": "#073642",
12
+ "editor-colors": {
13
+ "BackgroundColor": "#073642",
14
+ "BracketMatching": "#0a3f4c",
15
+ "CodeFolding": "#073642",
16
+ "CurrentLine": "#073642",
17
+ "CurrentLineNumber": "#93a1a1",
18
+ "IconBorder": "#073642",
19
+ "IndentationLine": "#0a3f4c",
20
+ "LineNumbers": "#93a1a1",
21
+ "MarkBookmark": "#51a0d5",
22
+ "MarkBreakpointActive": "#dc322f",
23
+ "MarkBreakpointDisabled": "#6c71c4",
24
+ "MarkBreakpointReached": "#b58900",
25
+ "MarkError": "#dc322f",
26
+ "MarkExecution": "#6c71c4",
27
+ "MarkWarning": "#cb4b16",
28
+ "ModifiedLines": "#dc322f",
29
+ "ReplaceHighlight": "#859900",
30
+ "SavedLines": "#859900",
31
+ "SearchHighlight": "#b58900",
32
+ "Separator": "#586e75",
33
+ "SpellChecking": "#dc322f",
34
+ "TabMarker": "#586e75",
35
+ "TextSelection": "#0a3f4c",
36
+ "WordWrapMarker": "#586e75"
37
+ },
38
+ "text-styles": {
39
+ "Alert": {
40
+ "bold": true,
41
+ "selected-text-color": "#dc322f",
42
+ "text-color": "#dc322f"
43
+ },
44
+ "Annotation": {
45
+ "selected-text-color": "#93a1a1",
46
+ "text-color": "#93a1a1"
47
+ },
48
+ "Attribute": {
49
+ "selected-text-color": "#b58900",
50
+ "text-color": "#b58900"
51
+ },
52
+ "BaseN": {
53
+ "selected-text-color": "#6c71c4",
54
+ "text-color": "#6c71c4"
55
+ },
56
+ "BuiltIn": {
57
+ "selected-text-color": "#51a0d5",
58
+ "text-color": "#51a0d5"
59
+ },
60
+ "Char": {
61
+ "selected-text-color": "#2aa198",
62
+ "text-color": "#2aa198"
63
+ },
64
+ "Comment": {
65
+ "selected-text-color": "#93a1a1",
66
+ "text-color": "#93a1a1"
67
+ },
68
+ "CommentVar": {
69
+ "selected-text-color": "#93a1a1",
70
+ "text-color": "#93a1a1"
71
+ },
72
+ "Constant": {
73
+ "selected-text-color": "#6c71c4",
74
+ "text-color": "#6c71c4"
75
+ },
76
+ "ControlFlow": {
77
+ "selected-text-color": "#859900",
78
+ "text-color": "#859900"
79
+ },
80
+ "DataType": {
81
+ "selected-text-color": "#b58900",
82
+ "text-color": "#b58900"
83
+ },
84
+ "DecVal": {
85
+ "selected-text-color": "#6c71c4",
86
+ "text-color": "#6c71c4"
87
+ },
88
+ "Documentation": {
89
+ "selected-text-color": "#93a1a1",
90
+ "text-color": "#93a1a1"
91
+ },
92
+ "Error": {
93
+ "selected-text-color": "#dc322f",
94
+ "text-color": "#dc322f",
95
+ "underline": true
96
+ },
97
+ "Extension": {
98
+ "bold": true,
99
+ "selected-text-color": "#dc322f",
100
+ "text-color": "#dc322f"
101
+ },
102
+ "Float": {
103
+ "selected-text-color": "#6c71c4",
104
+ "text-color": "#6c71c4"
105
+ },
106
+ "Function": {
107
+ "selected-text-color": "#51a0d5",
108
+ "text-color": "#51a0d5",
109
+ "bold": true
110
+ },
111
+ "Import": {
112
+ "selected-text-color": "#cb4b16",
113
+ "text-color": "#cb4b16"
114
+ },
115
+ "Information": {
116
+ "selected-text-color": "#93a1a1",
117
+ "text-color": "#93a1a1"
118
+ },
119
+ "Keyword": {
120
+ "selected-text-color": "#859900",
121
+ "text-color": "#859900"
122
+ },
123
+ "Normal": {
124
+ "selected-text-color": "#839496",
125
+ "text-color": "#839496"
126
+ },
127
+ "Operator": {
128
+ "selected-text-color": "#859900",
129
+ "text-color": "#859900"
130
+ },
131
+ "Others": {
132
+ "selected-text-color": "#6c71c4",
133
+ "text-color": "#6c71c4"
134
+ },
135
+ "Preprocessor": {
136
+ "selected-text-color": "#cb4b16",
137
+ "text-color": "#cb4b16"
138
+ },
139
+ "RegionMarker": {
140
+ "selected-text-color": "#93a1a1",
141
+ "text-color": "#93a1a1"
142
+ },
143
+ "SpecialChar": {
144
+ "selected-text-color": "#dc322f",
145
+ "text-color": "#dc322f"
146
+ },
147
+ "SpecialString": {
148
+ "selected-text-color": "#2aa198",
149
+ "text-color": "#2aa198"
150
+ },
151
+ "String": {
152
+ "selected-text-color": "#2aa198",
153
+ "text-color": "#2aa198"
154
+ },
155
+ "Variable": {
156
+ "selected-text-color": "#51a0d5",
157
+ "text-color": "#51a0d5"
158
+ },
159
+ "VerbatimString": {
160
+ "selected-text-color": "#2aa198",
161
+ "text-color": "#2aa198"
162
+ },
163
+ "Warning": {
164
+ "selected-text-color": "#cb4b16",
165
+ "text-color": "#cb4b16"
166
+ }
167
+ },
168
+ "custom-styles": {
169
+ "INI Files": {
170
+ "Section": {
171
+ "selected-text-color": "#6c71c4",
172
+ "text-color": "#6c71c4"
173
+ }
174
+ },
175
+ "Python": {
176
+ "Builtin Function": {
177
+ "selected-text-color": "#51a0d5",
178
+ "text-color": "#51a0d5"
179
+ },
180
+ "Import": {
181
+ "selected-text-color": "#cb4b16",
182
+ "text-color": "#cb4b16"
183
+ },
184
+ "Special Variable": {
185
+ "selected-text-color": "#6c71c4",
186
+ "text-color": "#6c71c4"
187
+ }
188
+ },
189
+ "Rust": {
190
+ "Attribute": {
191
+ "selected-text-color": "#b58900",
192
+ "text-color": "#b58900"
193
+ },
194
+ "Macro": {
195
+ "selected-text-color": "#51a0d5",
196
+ "text-color": "#51a0d5"
197
+ },
198
+ "Self": {
199
+ "selected-text-color": "#d33682",
200
+ "text-color": "#d33682"
201
+ },
202
+ "Trait": {
203
+ "selected-text-color": "#cb4b16",
204
+ "text-color": "#cb4b16"
205
+ }
206
+ },
207
+ "XML": {
208
+ "Element": {
209
+ "selected-text-color": "#51a0d5",
210
+ "text-color": "#51a0d5"
211
+ }
212
+ }
213
+ }
214
+ }
@@ -0,0 +1,214 @@
1
+ {
2
+ "metadata": {
3
+ "name": "Quarto Book Solarized Light",
4
+ "revision": 1,
5
+ "license": "SPDX-License-Identifier: MIT",
6
+ "copyright": [
7
+ "SPDX-FileCopyrightText: Ethan Schoonover (Solarized, MIT)",
8
+ "SPDX-FileCopyrightText: 2020 Waqar Ahmed <waqar.17a@gmail.com> (skylighting 结构基础)"
9
+ ]
10
+ },
11
+ "background-color": "#eee8d5",
12
+ "editor-colors": {
13
+ "BackgroundColor": "#eee8d5",
14
+ "BracketMatching": "#e7e0cb",
15
+ "CodeFolding": "#eee8d5",
16
+ "CurrentLine": "#eee8d5",
17
+ "CurrentLineNumber": "#556c73",
18
+ "IconBorder": "#eee8d5",
19
+ "IndentationLine": "#e7e0cb",
20
+ "LineNumbers": "#556c73",
21
+ "MarkBookmark": "#1b6ea3",
22
+ "MarkBreakpointActive": "#dc322f",
23
+ "MarkBreakpointDisabled": "#6c71c4",
24
+ "MarkBreakpointReached": "#b58900",
25
+ "MarkError": "#dc322f",
26
+ "MarkExecution": "#6c71c4",
27
+ "MarkWarning": "#cb4b16",
28
+ "ModifiedLines": "#dc322f",
29
+ "ReplaceHighlight": "#859900",
30
+ "SavedLines": "#859900",
31
+ "SearchHighlight": "#b58900",
32
+ "Separator": "#93a1a1",
33
+ "SpellChecking": "#dc322f",
34
+ "TabMarker": "#93a1a1",
35
+ "TextSelection": "#e7e0cb",
36
+ "WordWrapMarker": "#93a1a1"
37
+ },
38
+ "text-styles": {
39
+ "Alert": {
40
+ "bold": true,
41
+ "selected-text-color": "#dc322f",
42
+ "text-color": "#dc322f"
43
+ },
44
+ "Annotation": {
45
+ "selected-text-color": "#556c73",
46
+ "text-color": "#556c73"
47
+ },
48
+ "Attribute": {
49
+ "selected-text-color": "#b58900",
50
+ "text-color": "#b58900"
51
+ },
52
+ "BaseN": {
53
+ "selected-text-color": "#6c71c4",
54
+ "text-color": "#6c71c4"
55
+ },
56
+ "BuiltIn": {
57
+ "selected-text-color": "#1b6ea3",
58
+ "text-color": "#1b6ea3"
59
+ },
60
+ "Char": {
61
+ "selected-text-color": "#2aa198",
62
+ "text-color": "#2aa198"
63
+ },
64
+ "Comment": {
65
+ "selected-text-color": "#556c73",
66
+ "text-color": "#556c73"
67
+ },
68
+ "CommentVar": {
69
+ "selected-text-color": "#556c73",
70
+ "text-color": "#556c73"
71
+ },
72
+ "Constant": {
73
+ "selected-text-color": "#6c71c4",
74
+ "text-color": "#6c71c4"
75
+ },
76
+ "ControlFlow": {
77
+ "selected-text-color": "#859900",
78
+ "text-color": "#859900"
79
+ },
80
+ "DataType": {
81
+ "selected-text-color": "#b58900",
82
+ "text-color": "#b58900"
83
+ },
84
+ "DecVal": {
85
+ "selected-text-color": "#6c71c4",
86
+ "text-color": "#6c71c4"
87
+ },
88
+ "Documentation": {
89
+ "selected-text-color": "#556c73",
90
+ "text-color": "#556c73"
91
+ },
92
+ "Error": {
93
+ "selected-text-color": "#dc322f",
94
+ "text-color": "#dc322f",
95
+ "underline": true
96
+ },
97
+ "Extension": {
98
+ "bold": true,
99
+ "selected-text-color": "#dc322f",
100
+ "text-color": "#dc322f"
101
+ },
102
+ "Float": {
103
+ "selected-text-color": "#6c71c4",
104
+ "text-color": "#6c71c4"
105
+ },
106
+ "Function": {
107
+ "selected-text-color": "#1b6ea3",
108
+ "text-color": "#1b6ea3",
109
+ "bold": true
110
+ },
111
+ "Import": {
112
+ "selected-text-color": "#cb4b16",
113
+ "text-color": "#cb4b16"
114
+ },
115
+ "Information": {
116
+ "selected-text-color": "#556c73",
117
+ "text-color": "#556c73"
118
+ },
119
+ "Keyword": {
120
+ "selected-text-color": "#859900",
121
+ "text-color": "#859900"
122
+ },
123
+ "Normal": {
124
+ "selected-text-color": "#657b83",
125
+ "text-color": "#657b83"
126
+ },
127
+ "Operator": {
128
+ "selected-text-color": "#859900",
129
+ "text-color": "#859900"
130
+ },
131
+ "Others": {
132
+ "selected-text-color": "#6c71c4",
133
+ "text-color": "#6c71c4"
134
+ },
135
+ "Preprocessor": {
136
+ "selected-text-color": "#cb4b16",
137
+ "text-color": "#cb4b16"
138
+ },
139
+ "RegionMarker": {
140
+ "selected-text-color": "#556c73",
141
+ "text-color": "#556c73"
142
+ },
143
+ "SpecialChar": {
144
+ "selected-text-color": "#dc322f",
145
+ "text-color": "#dc322f"
146
+ },
147
+ "SpecialString": {
148
+ "selected-text-color": "#2aa198",
149
+ "text-color": "#2aa198"
150
+ },
151
+ "String": {
152
+ "selected-text-color": "#2aa198",
153
+ "text-color": "#2aa198"
154
+ },
155
+ "Variable": {
156
+ "selected-text-color": "#1b6ea3",
157
+ "text-color": "#1b6ea3"
158
+ },
159
+ "VerbatimString": {
160
+ "selected-text-color": "#2aa198",
161
+ "text-color": "#2aa198"
162
+ },
163
+ "Warning": {
164
+ "selected-text-color": "#cb4b16",
165
+ "text-color": "#cb4b16"
166
+ }
167
+ },
168
+ "custom-styles": {
169
+ "INI Files": {
170
+ "Section": {
171
+ "selected-text-color": "#6c71c4",
172
+ "text-color": "#6c71c4"
173
+ }
174
+ },
175
+ "Python": {
176
+ "Builtin Function": {
177
+ "selected-text-color": "#1b6ea3",
178
+ "text-color": "#1b6ea3"
179
+ },
180
+ "Import": {
181
+ "selected-text-color": "#cb4b16",
182
+ "text-color": "#cb4b16"
183
+ },
184
+ "Special Variable": {
185
+ "selected-text-color": "#6c71c4",
186
+ "text-color": "#6c71c4"
187
+ }
188
+ },
189
+ "Rust": {
190
+ "Attribute": {
191
+ "selected-text-color": "#b58900",
192
+ "text-color": "#b58900"
193
+ },
194
+ "Macro": {
195
+ "selected-text-color": "#1b6ea3",
196
+ "text-color": "#1b6ea3"
197
+ },
198
+ "Self": {
199
+ "selected-text-color": "#d33682",
200
+ "text-color": "#d33682"
201
+ },
202
+ "Trait": {
203
+ "selected-text-color": "#cb4b16",
204
+ "text-color": "#cb4b16"
205
+ }
206
+ },
207
+ "XML": {
208
+ "Element": {
209
+ "selected-text-color": "#1b6ea3",
210
+ "text-color": "#1b6ea3"
211
+ }
212
+ }
213
+ }
214
+ }
@@ -0,0 +1,66 @@
1
+ # Palette: solarized
2
+
3
+ 运行时可选色板。默认页面是 Flexoki;读者在导航栏选择 Solarized 后,`html[data-palette="solarized"]` 生效,本目录的 `tokens.css` 覆盖语义颜色、`syntax.css` 覆盖语法色。亮色用 Solarized 官方 base3 页面(`#FDF6E3`),暗色用 base03 页面(`#002B36`);正文与注释按 4.5:1 抬一档:亮色正文 `#526C74`、注释 `#556C73`;暗色正文 `#839496`、注释 `#93A1A1`。链接遵循官方 `rebase`:亮色 base01 `#586E75`、暗色 base1 `#93A1A1`,hover 才转官方蓝(亮 `#268BD2` / 暗 `#51A0D5`);语法里的标识符蓝仍用抬过的 `#1B6EA3` / `#51A0D5`。本目录另带一对 skylighting 主题,供「整本按 Solarized 编译」时替换 `highlight-style` 使用。
4
+
5
+ ## 接线
6
+
7
+ | 项 | 路径 / 值 |
8
+ | --- | --- |
9
+ | tokens | `palettes/solarized/tokens.css` |
10
+ | syntax 覆盖 | `palettes/solarized/syntax.css` |
11
+ | SCSS light | `palettes/solarized/theme-light.scss` |
12
+ | SCSS dark | `palettes/solarized/theme-dark.scss` |
13
+ | highlight light | `assets/theme/palettes/solarized/highlight-light.theme` |
14
+ | highlight dark | `assets/theme/palettes/solarized/highlight-dark.theme` |
15
+ | brand mark | `palettes/solarized/brand-mark.svg` |
16
+ | favicon light | `palettes/solarized/favicon-light.svg` |
17
+ | favicon dark | `palettes/solarized/favicon-dark.svg` |
18
+
19
+ 当前 `_quarto.yml` **不**引用本目录的 SCSS 与 highlight 主题,只挂 `tokens.css` + `syntax.css`:Quarto 只能编译一对高亮样式,编译期保留 Flexoki 那对,Solarized 的语法色由 `syntax.css` 按 `html[data-palette="solarized"]` 覆盖 `code span.*`。当前目录只服务运行时层。若以后要整本编译 Solarized,需要另写不带 `html[data-palette]` 前缀的 tokens 版本,再换 `theme` 与 `highlight-style` 并删掉 `syntax.css` 这层覆盖。
20
+
21
+ ## 书标与标签图标
22
+
23
+ 两套色板共用同一枚「打开的书」:`brand-mark.svg` 是纯黑剪影、中缝镂空,16px 仍可辨认,顶栏用 mask 取 `--navbar-fg`,一份覆盖该色板明暗;`favicon-light.svg` / `favicon-dark.svg` 是圆角方底加同一枚书,底色/书/中缝分别用该色板的纸色、墨色、动作色。Solarized 亮色 `#FDF6E3`/`#526C74`/`#268BD2`,暗色 `#002B36`/`#839496`/`#51A0D5`。
24
+
25
+ 用书项目在 `_quarto.yml` 设 `book.favicon: theme/palettes/flexoki/favicon-light.svg`,并把另外三份 favicon 放进 `resources`。`includes/palette.html` 在 head 内按 `book-palette` 与明暗改 `link[rel=icon]` 的 href,只替换 URL 里的色板名与 `favicon-light|dark`,保留 Quarto 写好的 `./` / `../` 前缀;发布 URL 仍带 `palettes/<name>/`。
26
+
27
+ ## 页面分层
28
+
29
+ | 表面 | 亮色 | 暗色 |
30
+ | --- | --- | --- |
31
+ | page / navbar | `#FDF6E3` | `#002B36` |
32
+ | surface-raised / code | `#EEE8D5` | `#073642` |
33
+ | 代码标题条(派生) | `#E7E0CB` | `#0A3F4C` |
34
+ | 代码标题字(派生) | `#4C6166` | `#A9B7B7` |
35
+ | 边框 | `#93A1A1` | `#586E75` |
36
+ | 正文 / 次要文字 | `#526C74` / `#586E75` | `#839496` / `#93A1A1` |
37
+ | 链接常态 / hover | `#586E75` / `#268BD2` | `#93A1A1` / `#51A0D5` |
38
+
39
+ 代码标题条不是官方 base 色,是在 base2 / base02 上各压一档得到的派生表面,用来把标题条与代码底分开;其余页面色取官方值。
40
+
41
+ ## 对比度记录
42
+
43
+ Solarized 官方正文与注释在各自底色上低于 4.5:1;这里只抬正文与注释,链接回到官方 rebase,页面底色、强调色与 callout 条保持官方值:
44
+
45
+ | 组合 | 比值 |
46
+ | --- | --- |
47
+ | 亮色正文 `#526C74` / `#FDF6E3` | 5.18:1 |
48
+ | 亮色正文 `#526C74` / `#EEE8D5` | 4.56:1 |
49
+ | 亮色链接 `#586E75` / `#FDF6E3` | 4.99:1 |
50
+ | 亮色链接 `#586E75` / `#EEE8D5` | 4.39:1(代码内,正文链接不在代码底) |
51
+ | 亮色注释 `#556C73` / `#EEE8D5` | 4.54:1 |
52
+ | 暗色正文 `#839496` / `#002B36` | 4.75:1 |
53
+ | 暗色链接 `#93A1A1` / `#002B36` | 5.61:1 |
54
+ | 暗色链接 `#93A1A1` / `#073642` | 4.86:1 |
55
+ | 暗色注释 `#93A1A1` / `#073642` | 4.86:1 |
56
+ | 亮色代码标题字 `#4C6166` / `#E7E0CB` | 4.96:1 |
57
+ | 暗色代码标题字 `#A9B7B7` / `#0A3F4C` | 5.55:1 |
58
+
59
+ 注释以官方 base01(亮)/ base1(暗)为起点:亮色 base1 `#93A1A1` 在 base2 上只有 2.18:1,不可用;暗色 base01 `#586E75` 在 base02 上只有 2.42:1,也不可用。亮色注释取更深的 `#556C73`(代码底 4.54:1),暗色注释保持官方 base1 `#93A1A1`(代码底 4.86:1)。强调色仍是 base01 `#586E75`(亮,4.99:1);callout 左条用官方语义色(note base01/base1、warning orange `#CB4B16`、tip green `#859900`)。取舍见 `knowledge/reading-surface.md`。
60
+
61
+ ## 来源
62
+
63
+ - [Solarized](https://ethanschoonover.com/solarized/)(Ethan Schoonover,MIT)
64
+ - Solarized 官方 palette:base03 `#002B36`、base02 `#073642`、base01 `#586E75`、base00 `#657B83`、base0 `#839496`、base1 `#93A1A1`、base2 `#EEE8D5`、base3 `#FDF6E3`;accent:yellow `#B58900`、orange `#CB4B16`、red `#DC322F`、magenta `#D33682`、violet `#6C71C4`、blue `#268BD2`、cyan `#2AA198`、green `#859900`
65
+
66
+ 本目录 10 个文件随主题资产走;项目副本只同步到 `_quarto.yml` 实际引用的那份。
@@ -0,0 +1,67 @@
1
+ /* ============================================================
2
+ Palette: solarized · 语法高亮覆盖层
3
+ Quarto 只能按明暗编译一对 highlight-style,默认那对是 Flexoki;
4
+ Solarized 的语法色在这里按 html[data-palette="solarized"] 覆盖。
5
+ 只写颜色,不改字号、字重与布局。
6
+ ============================================================ */
7
+
8
+ /* 基础文字(无 token 类名的 span 与 sourceCode 容器) */
9
+ html[data-palette="solarized"] code span:not([class]),
10
+ html[data-palette="solarized"] div.sourceCode,
11
+ html[data-palette="solarized"] div.sourceCode pre.sourceCode {
12
+ color: #526C74;
13
+ }
14
+
15
+ html[data-palette="solarized"] code span.al { color: #DC322F; font-weight: 600; }
16
+ html[data-palette="solarized"] code span.an { color: #556C73; }
17
+ html[data-palette="solarized"] code span.at { color: #B58900; }
18
+ html[data-palette="solarized"] code span.bn { color: #6C71C4; }
19
+ html[data-palette="solarized"] code span.bu { color: #1B6EA3; }
20
+ html[data-palette="solarized"] code span.cf { color: #859900; }
21
+ html[data-palette="solarized"] code span.ch { color: #2AA198; }
22
+ html[data-palette="solarized"] code span.cn { color: #6C71C4; }
23
+ html[data-palette="solarized"] code span.co { color: #556C73; }
24
+ html[data-palette="solarized"] code span.cv { color: #556C73; }
25
+ html[data-palette="solarized"] code span.do { color: #556C73; }
26
+ html[data-palette="solarized"] code span.dt { color: #B58900; }
27
+ html[data-palette="solarized"] code span.dv { color: #6C71C4; }
28
+ html[data-palette="solarized"] code span.er { color: #DC322F; text-decoration: underline; }
29
+ html[data-palette="solarized"] code span.ex { color: #DC322F; font-weight: 600; }
30
+ html[data-palette="solarized"] code span.fl { color: #6C71C4; }
31
+ html[data-palette="solarized"] code span.fu { color: #1B6EA3; }
32
+ html[data-palette="solarized"] code span.im { color: #CB4B16; }
33
+ html[data-palette="solarized"] code span.in { color: #556C73; }
34
+ html[data-palette="solarized"] code span.kw { color: #859900; }
35
+ html[data-palette="solarized"] code span.op { color: #859900; }
36
+ html[data-palette="solarized"] code span.ot { color: #6C71C4; }
37
+ html[data-palette="solarized"] code span.pp { color: #CB4B16; }
38
+ html[data-palette="solarized"] code span.re { color: #556C73; }
39
+ html[data-palette="solarized"] code span.sc { color: #DC322F; }
40
+ html[data-palette="solarized"] code span.ss { color: #2AA198; }
41
+ html[data-palette="solarized"] code span.st { color: #2AA198; }
42
+ html[data-palette="solarized"] code span.va { color: #1B6EA3; }
43
+ html[data-palette="solarized"] code span.vs { color: #2AA198; }
44
+ html[data-palette="solarized"] code span.wa { color: #CB4B16; }
45
+
46
+ /* 暗色:base03 页面上用 base0 / base1 保持官方明暗关系 */
47
+ html[data-palette="solarized"] body.quarto-dark code span:not([class]),
48
+ html[data-palette="solarized"] body.quarto-dark div.sourceCode,
49
+ html[data-palette="solarized"] body.quarto-dark div.sourceCode pre.sourceCode {
50
+ color: #93A1A1;
51
+ }
52
+
53
+ html[data-palette="solarized"] body.quarto-dark code span.an,
54
+ html[data-palette="solarized"] body.quarto-dark code span.co,
55
+ html[data-palette="solarized"] body.quarto-dark code span.cv,
56
+ html[data-palette="solarized"] body.quarto-dark code span.do,
57
+ html[data-palette="solarized"] body.quarto-dark code span.in,
58
+ html[data-palette="solarized"] body.quarto-dark code span.re {
59
+ color: #93A1A1;
60
+ }
61
+
62
+ /* 暗色语法蓝也要比 base03 上的官方 #268BD2 再亮一档 */
63
+ html[data-palette="solarized"] body.quarto-dark code span.bu,
64
+ html[data-palette="solarized"] body.quarto-dark code span.fu,
65
+ html[data-palette="solarized"] body.quarto-dark code span.va {
66
+ color: #51A0D5;
67
+ }
@@ -0,0 +1,43 @@
1
+ /*-- scss:defaults --*/
2
+
3
+ $font-family-sans-serif: "LXGW Bright Medium", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", "Apple Color Emoji", "Segoe UI Emoji", sans-serif !default;
4
+
5
+ $font-family-monospace: "LXGW Bright Code", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", monospace !default;
6
+
7
+ $web-font-path: false !default;
8
+
9
+ $font-size-root: 16px !default;
10
+ $line-height-base: 1.75 !default;
11
+ $font-size-base: 1rem !default;
12
+
13
+ // Solarized Dark:base03 页面 + base0 正文;链接按官方 rebase 取 base1,blue 只作 accent。
14
+ $primary: #51A0D5 !default;
15
+
16
+ $body-color: #839496 !default;
17
+ $link-color: #93A1A1 !default;
18
+
19
+ $code-bg: #073642 !default;
20
+ $code-color: #839496 !default;
21
+
22
+ $body-secondary: #93A1A1 !default;
23
+
24
+ $navbar-fg: #839496 !default;
25
+
26
+ $callout-color-note: #93A1A1 !default;
27
+ $callout-color-tip: #859900 !default;
28
+ $callout-color-warning: #CB4B16 !default;
29
+ $callout-color-important: #6C71C4 !default;
30
+ $callout-color-caution: #DC322F !default;
31
+ $callout-color-danger: #DC322F !default;
32
+
33
+ $border-color: rgba(147, 161, 161, 0.18) !default;
34
+
35
+ // 面包屑用页面底色:清除 darkly 默认灰底与内边距,明暗布局一致
36
+ $breadcrumb-bg: transparent !default;
37
+ $breadcrumb-padding-y: 0 !default;
38
+ $breadcrumb-padding-x: 0 !default;
39
+ $breadcrumb-margin-bottom: 0 !default;
40
+
41
+ $table-bg: transparent !default;
42
+
43
+ /*-- scss:rules --*/
@@ -0,0 +1,41 @@
1
+ /*-- scss:defaults --*/
2
+
3
+ $font-family-sans-serif: "LXGW Bright Medium", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", "Apple Color Emoji", "Segoe UI Emoji", sans-serif !default;
4
+
5
+ $font-family-monospace: "LXGW Bright Code", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", monospace !default;
6
+
7
+ $web-font-path: false !default;
8
+
9
+ $font-size-root: 16px !default;
10
+ $line-height-base: 1.75 !default;
11
+ $font-size-base: 1rem !default;
12
+
13
+ // Solarized Light:base3 页面 + 抬到 4.5:1 的 base00 系正文;
14
+ // 链接按官方 rebase 取 base01,蓝色只留作 primary/action。
15
+ $primary: #268BD2 !default;
16
+
17
+ $body-color: #526C74 !default;
18
+ $link-color: #586E75 !default;
19
+ $code-bg: #EEE8D5 !default;
20
+ $code-color: #526C74 !default;
21
+ $border-color: #93A1A1 !default;
22
+
23
+ // 面包屑用页面底色:清除 darkly 默认灰底与内边距,明暗布局一致
24
+ $breadcrumb-bg: transparent !default;
25
+ $breadcrumb-padding-y: 0 !default;
26
+ $breadcrumb-padding-x: 0 !default;
27
+ $breadcrumb-margin-bottom: 0 !default;
28
+
29
+
30
+ $navbar-bg: #FDF6E3 !default;
31
+ $navbar-fg: #526C74 !default;
32
+
33
+ // Callout 语义色(与 palettes/solarized/tokens.css --callout-*-border 亮色一致;驱动编译期图标 data URI)
34
+ $callout-color-note: #586E75 !default;
35
+ $callout-color-tip: #859900 !default;
36
+ $callout-color-warning: #CB4B16 !default;
37
+ $callout-color-important: #6C71C4 !default;
38
+ $callout-color-caution: #DC322F !default;
39
+ $callout-color-danger: #DC322F !default;
40
+
41
+ /*-- scss:rules --*/