dsh-deeptutor 0.1.6 → 0.1.7

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.
@@ -1,420 +1,420 @@
1
- <!doctype html>
2
- <html lang="{{LANG}}" data-theme="{{THEME}}">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>{{TITLE}}</title>
7
- <style>
8
- :root {
9
- --bg: #fafaf8;
10
- --bg-alt: #f0efe9;
11
- --card: #ffffff;
12
- --fg: #1f2328;
13
- --fg-muted: #6a737d;
14
- --accent: #0a66c2;
15
- --accent-soft: rgba(10, 102, 194, 0.1);
16
- --border: #e2e2dc;
17
- --code-bg: #f4f3ee;
18
- --code-fg: #24292f;
19
- --th-bg: #f0efe9;
20
- --link: #0a66c2;
21
- --answer-bg: #fffdf3;
22
- --answer-border: #e8c84a;
23
- --shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.05);
24
- }
25
- [data-theme="dark"] {
26
- --bg: #16181d;
27
- --bg-alt: #1d2026;
28
- --card: #1e2128;
29
- --fg: #e6e6e6;
30
- --fg-muted: #9aa0a6;
31
- --accent: #7cb3ff;
32
- --accent-soft: rgba(124, 179, 255, 0.12);
33
- --border: #2e323a;
34
- --code-bg: #121419;
35
- --code-fg: #d7dae0;
36
- --th-bg: #262a33;
37
- --link: #7cb3ff;
38
- --answer-bg: #23261d;
39
- --answer-border: #8a7a2f;
40
- --shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);
41
- }
42
- * {
43
- box-sizing: border-box;
44
- }
45
- html {
46
- scroll-behavior: smooth;
47
- }
48
- body {
49
- margin: 0;
50
- background: var(--bg);
51
- color: var(--fg);
52
- font-family:
53
- -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
54
- "Microsoft YaHei", "Noto Sans CJK SC", Roboto, sans-serif;
55
- line-height: 1.75;
56
- font-size: 16px;
57
- }
58
- .page {
59
- max-width: 860px;
60
- margin: 0 auto;
61
- padding: 32px 24px 80px;
62
- }
63
- /* header bar */
64
- .topbar {
65
- position: sticky;
66
- top: 0;
67
- z-index: 10;
68
- display: flex;
69
- align-items: center;
70
- justify-content: space-between;
71
- gap: 12px;
72
- max-width: 860px;
73
- margin: 0 auto;
74
- padding: 10px 24px;
75
- background: color-mix(in srgb, var(--bg) 88%, transparent);
76
- backdrop-filter: blur(8px);
77
- border-bottom: 1px solid var(--border);
78
- }
79
- .topbar .doc-title {
80
- font-size: 13px;
81
- font-weight: 600;
82
- color: var(--fg-muted);
83
- overflow: hidden;
84
- text-overflow: ellipsis;
85
- white-space: nowrap;
86
- }
87
- .theme-toggle {
88
- flex-shrink: 0;
89
- appearance: none;
90
- border: 1px solid var(--border);
91
- background: var(--card);
92
- color: var(--fg);
93
- border-radius: 999px;
94
- padding: 5px 14px;
95
- font-size: 13px;
96
- cursor: pointer;
97
- transition:
98
- background 0.15s,
99
- border-color 0.15s;
100
- }
101
- .theme-toggle:hover {
102
- border-color: var(--accent);
103
- color: var(--accent);
104
- }
105
- /* headings */
106
- h1,
107
- h2,
108
- h3,
109
- h4,
110
- h5,
111
- h6 {
112
- line-height: 1.35;
113
- margin: 1.6em 0 0.6em;
114
- color: var(--fg);
115
- }
116
- h1 {
117
- font-size: 1.9em;
118
- padding-bottom: 0.4em;
119
- border-bottom: 3px solid var(--accent);
120
- margin-top: 0;
121
- }
122
- h1:not(:first-child) {
123
- margin-top: 1.8em;
124
- }
125
- h2 {
126
- font-size: 1.45em;
127
- padding-bottom: 0.3em;
128
- border-bottom: 1px solid var(--border);
129
- }
130
- h3 {
131
- font-size: 1.2em;
132
- }
133
- h4 {
134
- font-size: 1.05em;
135
- }
136
- /* toc */
137
- .toc {
138
- background: var(--card);
139
- border: 1px solid var(--border);
140
- border-radius: 10px;
141
- padding: 16px 20px;
142
- margin: 24px 0;
143
- box-shadow: var(--shadow);
144
- }
145
- .toc h2 {
146
- border: none;
147
- margin: 0 0 8px;
148
- font-size: 1em;
149
- color: var(--fg-muted);
150
- text-transform: uppercase;
151
- letter-spacing: 0.06em;
152
- }
153
- .toc ul {
154
- list-style: none;
155
- margin: 0;
156
- padding: 0;
157
- }
158
- .toc li {
159
- margin: 2px 0;
160
- }
161
- .toc a {
162
- color: var(--link);
163
- text-decoration: none;
164
- }
165
- .toc a:hover {
166
- text-decoration: underline;
167
- }
168
- .toc .toc-l3 {
169
- padding-left: 1.4em;
170
- font-size: 0.95em;
171
- }
172
- /* text */
173
- p {
174
- margin: 0.8em 0;
175
- }
176
- a {
177
- color: var(--link);
178
- }
179
- strong {
180
- font-weight: 650;
181
- }
182
- hr {
183
- border: none;
184
- border-top: 1px solid var(--border);
185
- margin: 2em 0;
186
- }
187
- blockquote {
188
- margin: 1em 0;
189
- padding: 0.4em 1.1em;
190
- border-left: 4px solid var(--accent);
191
- background: var(--accent-soft);
192
- border-radius: 0 8px 8px 0;
193
- color: var(--fg);
194
- }
195
- blockquote p {
196
- margin: 0.5em 0;
197
- }
198
- /* code */
199
- code {
200
- font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
201
- font-size: 0.88em;
202
- background: var(--code-bg);
203
- color: var(--code-fg);
204
- padding: 0.15em 0.4em;
205
- border-radius: 5px;
206
- }
207
- pre.code-block {
208
- position: relative;
209
- background: var(--code-bg);
210
- color: var(--code-fg);
211
- border: 1px solid var(--border);
212
- border-radius: 10px;
213
- padding: 14px 16px;
214
- overflow-x: auto;
215
- line-height: 1.55;
216
- margin: 1.1em 0;
217
- }
218
- pre.code-block code {
219
- background: none;
220
- padding: 0;
221
- font-size: 0.9em;
222
- }
223
- .lang-badge {
224
- position: absolute;
225
- top: 8px;
226
- right: 10px;
227
- font-size: 11px;
228
- color: var(--fg-muted);
229
- text-transform: uppercase;
230
- letter-spacing: 0.05em;
231
- background: var(--card);
232
- border: 1px solid var(--border);
233
- padding: 1px 8px;
234
- border-radius: 999px;
235
- }
236
- /* lists */
237
- ul,
238
- ol {
239
- padding-left: 1.6em;
240
- margin: 0.8em 0;
241
- }
242
- li {
243
- margin: 0.3em 0;
244
- }
245
- li.task {
246
- list-style: none;
247
- margin-left: -1.2em;
248
- }
249
- li.task input {
250
- accent-color: var(--accent);
251
- margin-right: 0.5em;
252
- }
253
- li.task.done {
254
- color: var(--fg-muted);
255
- text-decoration: line-through;
256
- }
257
- /* tables */
258
- .table-wrap {
259
- overflow-x: auto;
260
- margin: 1.1em 0;
261
- border-radius: 10px;
262
- border: 1px solid var(--border);
263
- }
264
- table {
265
- border-collapse: collapse;
266
- width: 100%;
267
- font-size: 0.95em;
268
- }
269
- th,
270
- td {
271
- padding: 8px 14px;
272
- text-align: left;
273
- border-bottom: 1px solid var(--border);
274
- }
275
- th {
276
- background: var(--th-bg);
277
- font-weight: 650;
278
- white-space: nowrap;
279
- }
280
- tr:last-child td {
281
- border-bottom: none;
282
- }
283
- tbody tr:hover {
284
- background: var(--accent-soft);
285
- }
286
- /* quiz answers */
287
- details.answer {
288
- background: var(--answer-bg);
289
- border: 1px solid var(--answer-border);
290
- border-radius: 10px;
291
- margin: 1.1em 0;
292
- overflow: hidden;
293
- }
294
- details.answer summary {
295
- cursor: pointer;
296
- padding: 12px 16px;
297
- font-weight: 600;
298
- user-select: none;
299
- display: flex;
300
- align-items: baseline;
301
- gap: 8px;
302
- }
303
- details.answer summary::-webkit-details-marker {
304
- display: none;
305
- }
306
- details.answer summary::before {
307
- content: "▶";
308
- font-size: 0.8em;
309
- color: var(--answer-border);
310
- transition: transform 0.15s;
311
- }
312
- details.answer[open] summary::before {
313
- transform: rotate(90deg);
314
- }
315
- details.answer summary .answer-tag {
316
- font-size: 0.78em;
317
- font-weight: 700;
318
- color: var(--answer-border);
319
- text-transform: uppercase;
320
- letter-spacing: 0.06em;
321
- }
322
- details.answer .answer-body {
323
- padding: 0 16px 14px;
324
- border-top: 1px dashed var(--answer-border);
325
- }
326
- details.answer .answer-body p:first-child {
327
- margin-top: 0.9em;
328
- }
329
- details.answer .answer-body > :last-child {
330
- margin-bottom: 0.4em;
331
- }
332
- /* footer */
333
- .footer {
334
- margin-top: 3em;
335
- padding-top: 1em;
336
- border-top: 1px solid var(--border);
337
- color: var(--fg-muted);
338
- font-size: 12px;
339
- text-align: center;
340
- }
341
- /* print */
342
- @media print {
343
- body {
344
- background: #fff;
345
- }
346
- .topbar {
347
- display: none;
348
- }
349
- .page {
350
- max-width: none;
351
- padding: 0;
352
- }
353
- details.answer {
354
- border-color: #ccc;
355
- background: #fff;
356
- }
357
- details.answer summary::before {
358
- content: "▸ ";
359
- }
360
- details.answer:not([open]) {
361
- border-style: dashed;
362
- }
363
- details.answer:not([open]) summary {
364
- color: #333;
365
- }
366
- pre.code-block,
367
- .table-wrap,
368
- blockquote {
369
- break-inside: avoid;
370
- }
371
- a {
372
- color: inherit;
373
- text-decoration: none;
374
- }
375
- }
376
- </style>
377
- </head>
378
- <body>
379
- <div class="topbar">
380
- <span class="doc-title">{{TITLE}}</span>
381
- <button class="theme-toggle" id="themeToggle" type="button" aria-label="切换主题">
382
- 🌓 主题
383
- </button>
384
- </div>
385
- <div class="page">
386
- {{TOC}} {{BODY}}
387
- <div class="footer">
388
- Generated {{GENERATED}} · html-doc skill ·
389
- <a
390
- href="#"
391
- onclick="
392
- window.print();
393
- return false;
394
- "
395
- >打印 / 导出 PDF</a
396
- >
397
- </div>
398
- </div>
399
- <script>
400
- (function () {
401
- var root = document.documentElement;
402
- var saved = null;
403
- try {
404
- saved = localStorage.getItem("html-doc-theme");
405
- } catch (e) {}
406
- if (saved === "dark" || saved === "light") root.setAttribute("data-theme", saved);
407
- var btn = document.getElementById("themeToggle");
408
- btn.textContent = root.getAttribute("data-theme") === "dark" ? "☀️ 浅色" : "🌓 深色";
409
- btn.addEventListener("click", function () {
410
- var next = root.getAttribute("data-theme") === "dark" ? "light" : "dark";
411
- root.setAttribute("data-theme", next);
412
- btn.textContent = next === "dark" ? "☀️ 浅色" : "🌓 深色";
413
- try {
414
- localStorage.setItem("html-doc-theme", next);
415
- } catch (e) {}
416
- });
417
- })();
418
- </script>
419
- </body>
420
- </html>
1
+ <!doctype html>
2
+ <html lang="{{LANG}}" data-theme="{{THEME}}">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>{{TITLE}}</title>
7
+ <style>
8
+ :root {
9
+ --bg: #fafaf8;
10
+ --bg-alt: #f0efe9;
11
+ --card: #ffffff;
12
+ --fg: #1f2328;
13
+ --fg-muted: #6a737d;
14
+ --accent: #0a66c2;
15
+ --accent-soft: rgba(10, 102, 194, 0.1);
16
+ --border: #e2e2dc;
17
+ --code-bg: #f4f3ee;
18
+ --code-fg: #24292f;
19
+ --th-bg: #f0efe9;
20
+ --link: #0a66c2;
21
+ --answer-bg: #fffdf3;
22
+ --answer-border: #e8c84a;
23
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.05);
24
+ }
25
+ [data-theme="dark"] {
26
+ --bg: #16181d;
27
+ --bg-alt: #1d2026;
28
+ --card: #1e2128;
29
+ --fg: #e6e6e6;
30
+ --fg-muted: #9aa0a6;
31
+ --accent: #7cb3ff;
32
+ --accent-soft: rgba(124, 179, 255, 0.12);
33
+ --border: #2e323a;
34
+ --code-bg: #121419;
35
+ --code-fg: #d7dae0;
36
+ --th-bg: #262a33;
37
+ --link: #7cb3ff;
38
+ --answer-bg: #23261d;
39
+ --answer-border: #8a7a2f;
40
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);
41
+ }
42
+ * {
43
+ box-sizing: border-box;
44
+ }
45
+ html {
46
+ scroll-behavior: smooth;
47
+ }
48
+ body {
49
+ margin: 0;
50
+ background: var(--bg);
51
+ color: var(--fg);
52
+ font-family:
53
+ -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
54
+ "Microsoft YaHei", "Noto Sans CJK SC", Roboto, sans-serif;
55
+ line-height: 1.75;
56
+ font-size: 16px;
57
+ }
58
+ .page {
59
+ max-width: 860px;
60
+ margin: 0 auto;
61
+ padding: 32px 24px 80px;
62
+ }
63
+ /* header bar */
64
+ .topbar {
65
+ position: sticky;
66
+ top: 0;
67
+ z-index: 10;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ gap: 12px;
72
+ max-width: 860px;
73
+ margin: 0 auto;
74
+ padding: 10px 24px;
75
+ background: color-mix(in srgb, var(--bg) 88%, transparent);
76
+ backdrop-filter: blur(8px);
77
+ border-bottom: 1px solid var(--border);
78
+ }
79
+ .topbar .doc-title {
80
+ font-size: 13px;
81
+ font-weight: 600;
82
+ color: var(--fg-muted);
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ white-space: nowrap;
86
+ }
87
+ .theme-toggle {
88
+ flex-shrink: 0;
89
+ appearance: none;
90
+ border: 1px solid var(--border);
91
+ background: var(--card);
92
+ color: var(--fg);
93
+ border-radius: 999px;
94
+ padding: 5px 14px;
95
+ font-size: 13px;
96
+ cursor: pointer;
97
+ transition:
98
+ background 0.15s,
99
+ border-color 0.15s;
100
+ }
101
+ .theme-toggle:hover {
102
+ border-color: var(--accent);
103
+ color: var(--accent);
104
+ }
105
+ /* headings */
106
+ h1,
107
+ h2,
108
+ h3,
109
+ h4,
110
+ h5,
111
+ h6 {
112
+ line-height: 1.35;
113
+ margin: 1.6em 0 0.6em;
114
+ color: var(--fg);
115
+ }
116
+ h1 {
117
+ font-size: 1.9em;
118
+ padding-bottom: 0.4em;
119
+ border-bottom: 3px solid var(--accent);
120
+ margin-top: 0;
121
+ }
122
+ h1:not(:first-child) {
123
+ margin-top: 1.8em;
124
+ }
125
+ h2 {
126
+ font-size: 1.45em;
127
+ padding-bottom: 0.3em;
128
+ border-bottom: 1px solid var(--border);
129
+ }
130
+ h3 {
131
+ font-size: 1.2em;
132
+ }
133
+ h4 {
134
+ font-size: 1.05em;
135
+ }
136
+ /* toc */
137
+ .toc {
138
+ background: var(--card);
139
+ border: 1px solid var(--border);
140
+ border-radius: 10px;
141
+ padding: 16px 20px;
142
+ margin: 24px 0;
143
+ box-shadow: var(--shadow);
144
+ }
145
+ .toc h2 {
146
+ border: none;
147
+ margin: 0 0 8px;
148
+ font-size: 1em;
149
+ color: var(--fg-muted);
150
+ text-transform: uppercase;
151
+ letter-spacing: 0.06em;
152
+ }
153
+ .toc ul {
154
+ list-style: none;
155
+ margin: 0;
156
+ padding: 0;
157
+ }
158
+ .toc li {
159
+ margin: 2px 0;
160
+ }
161
+ .toc a {
162
+ color: var(--link);
163
+ text-decoration: none;
164
+ }
165
+ .toc a:hover {
166
+ text-decoration: underline;
167
+ }
168
+ .toc .toc-l3 {
169
+ padding-left: 1.4em;
170
+ font-size: 0.95em;
171
+ }
172
+ /* text */
173
+ p {
174
+ margin: 0.8em 0;
175
+ }
176
+ a {
177
+ color: var(--link);
178
+ }
179
+ strong {
180
+ font-weight: 650;
181
+ }
182
+ hr {
183
+ border: none;
184
+ border-top: 1px solid var(--border);
185
+ margin: 2em 0;
186
+ }
187
+ blockquote {
188
+ margin: 1em 0;
189
+ padding: 0.4em 1.1em;
190
+ border-left: 4px solid var(--accent);
191
+ background: var(--accent-soft);
192
+ border-radius: 0 8px 8px 0;
193
+ color: var(--fg);
194
+ }
195
+ blockquote p {
196
+ margin: 0.5em 0;
197
+ }
198
+ /* code */
199
+ code {
200
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
201
+ font-size: 0.88em;
202
+ background: var(--code-bg);
203
+ color: var(--code-fg);
204
+ padding: 0.15em 0.4em;
205
+ border-radius: 5px;
206
+ }
207
+ pre.code-block {
208
+ position: relative;
209
+ background: var(--code-bg);
210
+ color: var(--code-fg);
211
+ border: 1px solid var(--border);
212
+ border-radius: 10px;
213
+ padding: 14px 16px;
214
+ overflow-x: auto;
215
+ line-height: 1.55;
216
+ margin: 1.1em 0;
217
+ }
218
+ pre.code-block code {
219
+ background: none;
220
+ padding: 0;
221
+ font-size: 0.9em;
222
+ }
223
+ .lang-badge {
224
+ position: absolute;
225
+ top: 8px;
226
+ right: 10px;
227
+ font-size: 11px;
228
+ color: var(--fg-muted);
229
+ text-transform: uppercase;
230
+ letter-spacing: 0.05em;
231
+ background: var(--card);
232
+ border: 1px solid var(--border);
233
+ padding: 1px 8px;
234
+ border-radius: 999px;
235
+ }
236
+ /* lists */
237
+ ul,
238
+ ol {
239
+ padding-left: 1.6em;
240
+ margin: 0.8em 0;
241
+ }
242
+ li {
243
+ margin: 0.3em 0;
244
+ }
245
+ li.task {
246
+ list-style: none;
247
+ margin-left: -1.2em;
248
+ }
249
+ li.task input {
250
+ accent-color: var(--accent);
251
+ margin-right: 0.5em;
252
+ }
253
+ li.task.done {
254
+ color: var(--fg-muted);
255
+ text-decoration: line-through;
256
+ }
257
+ /* tables */
258
+ .table-wrap {
259
+ overflow-x: auto;
260
+ margin: 1.1em 0;
261
+ border-radius: 10px;
262
+ border: 1px solid var(--border);
263
+ }
264
+ table {
265
+ border-collapse: collapse;
266
+ width: 100%;
267
+ font-size: 0.95em;
268
+ }
269
+ th,
270
+ td {
271
+ padding: 8px 14px;
272
+ text-align: left;
273
+ border-bottom: 1px solid var(--border);
274
+ }
275
+ th {
276
+ background: var(--th-bg);
277
+ font-weight: 650;
278
+ white-space: nowrap;
279
+ }
280
+ tr:last-child td {
281
+ border-bottom: none;
282
+ }
283
+ tbody tr:hover {
284
+ background: var(--accent-soft);
285
+ }
286
+ /* quiz answers */
287
+ details.answer {
288
+ background: var(--answer-bg);
289
+ border: 1px solid var(--answer-border);
290
+ border-radius: 10px;
291
+ margin: 1.1em 0;
292
+ overflow: hidden;
293
+ }
294
+ details.answer summary {
295
+ cursor: pointer;
296
+ padding: 12px 16px;
297
+ font-weight: 600;
298
+ user-select: none;
299
+ display: flex;
300
+ align-items: baseline;
301
+ gap: 8px;
302
+ }
303
+ details.answer summary::-webkit-details-marker {
304
+ display: none;
305
+ }
306
+ details.answer summary::before {
307
+ content: "▶";
308
+ font-size: 0.8em;
309
+ color: var(--answer-border);
310
+ transition: transform 0.15s;
311
+ }
312
+ details.answer[open] summary::before {
313
+ transform: rotate(90deg);
314
+ }
315
+ details.answer summary .answer-tag {
316
+ font-size: 0.78em;
317
+ font-weight: 700;
318
+ color: var(--answer-border);
319
+ text-transform: uppercase;
320
+ letter-spacing: 0.06em;
321
+ }
322
+ details.answer .answer-body {
323
+ padding: 0 16px 14px;
324
+ border-top: 1px dashed var(--answer-border);
325
+ }
326
+ details.answer .answer-body p:first-child {
327
+ margin-top: 0.9em;
328
+ }
329
+ details.answer .answer-body > :last-child {
330
+ margin-bottom: 0.4em;
331
+ }
332
+ /* footer */
333
+ .footer {
334
+ margin-top: 3em;
335
+ padding-top: 1em;
336
+ border-top: 1px solid var(--border);
337
+ color: var(--fg-muted);
338
+ font-size: 12px;
339
+ text-align: center;
340
+ }
341
+ /* print */
342
+ @media print {
343
+ body {
344
+ background: #fff;
345
+ }
346
+ .topbar {
347
+ display: none;
348
+ }
349
+ .page {
350
+ max-width: none;
351
+ padding: 0;
352
+ }
353
+ details.answer {
354
+ border-color: #ccc;
355
+ background: #fff;
356
+ }
357
+ details.answer summary::before {
358
+ content: "▸ ";
359
+ }
360
+ details.answer:not([open]) {
361
+ border-style: dashed;
362
+ }
363
+ details.answer:not([open]) summary {
364
+ color: #333;
365
+ }
366
+ pre.code-block,
367
+ .table-wrap,
368
+ blockquote {
369
+ break-inside: avoid;
370
+ }
371
+ a {
372
+ color: inherit;
373
+ text-decoration: none;
374
+ }
375
+ }
376
+ </style>
377
+ </head>
378
+ <body>
379
+ <div class="topbar">
380
+ <span class="doc-title">{{TITLE}}</span>
381
+ <button class="theme-toggle" id="themeToggle" type="button" aria-label="切换主题">
382
+ 🌓 主题
383
+ </button>
384
+ </div>
385
+ <div class="page">
386
+ {{TOC}} {{BODY}}
387
+ <div class="footer">
388
+ Generated {{GENERATED}} · html-doc skill ·
389
+ <a
390
+ href="#"
391
+ onclick="
392
+ window.print();
393
+ return false;
394
+ "
395
+ >打印 / 导出 PDF</a
396
+ >
397
+ </div>
398
+ </div>
399
+ <script>
400
+ (function () {
401
+ var root = document.documentElement;
402
+ var saved = null;
403
+ try {
404
+ saved = localStorage.getItem("html-doc-theme");
405
+ } catch (e) {}
406
+ if (saved === "dark" || saved === "light") root.setAttribute("data-theme", saved);
407
+ var btn = document.getElementById("themeToggle");
408
+ btn.textContent = root.getAttribute("data-theme") === "dark" ? "☀️ 浅色" : "🌓 深色";
409
+ btn.addEventListener("click", function () {
410
+ var next = root.getAttribute("data-theme") === "dark" ? "light" : "dark";
411
+ root.setAttribute("data-theme", next);
412
+ btn.textContent = next === "dark" ? "☀️ 浅色" : "🌓 深色";
413
+ try {
414
+ localStorage.setItem("html-doc-theme", next);
415
+ } catch (e) {}
416
+ });
417
+ })();
418
+ </script>
419
+ </body>
420
+ </html>