|
1 | | -#import "@preview/tablex:0.0.8": tablex, colspanx, rowspanx, hlinex, vlinex, cellx |
| 1 | +#import "@preview/tablex:0.0.9": tablex, colspanx, rowspanx, hlinex, vlinex, cellx |
2 | 2 | #import "@preview/showybox:2.0.1": showybox |
3 | 3 |
|
4 | 4 | #let state_course = state("course", none) |
|
20 | 20 | h |
21 | 21 | } |
22 | 22 | }, |
23 | | - columns: (1fr), |
| 23 | + columns: 1fr, |
24 | 24 | content, |
25 | 25 | ) |
26 | 26 | } |
|
127 | 127 | show raw: set text(font: font_mono) |
128 | 128 | show math.equation: set text(weight: 400) |
129 | 129 |
|
130 | | - show par: set block(above: 1.2em, below: 1.2em) |
131 | | - |
132 | | - set par(leading: 0.75em) |
| 130 | + set par(spacing: 1.2em, leading: 0.75em) |
133 | 131 |
|
134 | 132 | // Update global state |
135 | 133 | state_course.update(course) |
|
190 | 188 | box(width: 75%)[ |
191 | 189 | #set text(size: 1.2em) |
192 | 190 | #tablex( |
193 | | - columns: (6.5em + 5pt, 1fr), |
194 | | - align: center + horizon, |
195 | | - stroke: 0pt, |
196 | | - // stroke: 0.5pt + red, // this line is just for testing |
197 | | - inset: 1pt, |
198 | | - map-cells: cell => { |
199 | | - if (cell.x == 0) { |
200 | | - _underlined_cell([#cell.content#":"], color: white) |
201 | | - } else { |
202 | | - _underlined_cell(cell.content, color: black) |
203 | | - } |
204 | | - }, |
205 | | - ..rows, |
206 | | - ) |
| 191 | + columns: (6.5em + 5pt, 1fr), |
| 192 | + align: center + horizon, |
| 193 | + stroke: 0pt, |
| 194 | + // stroke: 0.5pt + red, // this line is just for testing |
| 195 | + inset: 1pt, |
| 196 | + map-cells: cell => { |
| 197 | + if (cell.x == 0) { |
| 198 | + _underlined_cell([#cell.content#":"], color: white) |
| 199 | + } else { |
| 200 | + _underlined_cell(cell.content, color: black) |
| 201 | + } |
| 202 | + }, |
| 203 | + ..rows, |
| 204 | + ) |
207 | 205 | ], |
208 | 206 | ) |
209 | 207 | v(2fr) |
210 | 208 | pagebreak() |
211 | | - |
212 | 209 | } else if (theme == "project") { |
213 | 210 | v(1fr) |
214 | 211 | box( |
|
245 | 242 | ) |
246 | 243 | v(4fr) |
247 | 244 | pagebreak() |
248 | | - |
249 | 245 | } else if (theme == "nocover") { |
250 | 246 | // no cover page |
251 | | - |
252 | 247 | } else { |
253 | 248 | set text(fill: red, size: 3em, weight: 900) |
254 | 249 | align(center)[Theme not found!] |
|
264 | 259 | set table(align: center + horizon, stroke: 0.5pt) |
265 | 260 |
|
266 | 261 | if (theme == "lab") { |
267 | | - set heading(numbering: (..args) => { |
268 | | - let nums = args.pos() |
269 | | - if nums.len() == 1 { |
270 | | - return none |
271 | | - } else if nums.len() == 2 { |
272 | | - return numbering("一、", ..nums.slice(1)) |
273 | | - } else { |
274 | | - return numbering("1.1)", ..nums.slice(1)) |
275 | | - } |
276 | | - }) |
| 262 | + set heading( |
| 263 | + numbering: (..args) => { |
| 264 | + let nums = args.pos() |
| 265 | + if nums.len() == 1 { |
| 266 | + return none |
| 267 | + } else if nums.len() == 2 { |
| 268 | + return numbering("一、", ..nums.slice(1)) |
| 269 | + } else { |
| 270 | + return numbering("1.1)", ..nums.slice(1)) |
| 271 | + } |
| 272 | + }, |
| 273 | + ) |
277 | 274 |
|
278 | 275 | show heading.where(level: 1): it => block( |
279 | 276 | width: 100%, |
|
287 | 284 |
|
288 | 285 | body |
289 | 286 | } else { |
290 | | - set heading(numbering: (..args) => { |
291 | | - let nums = args.pos() |
292 | | - if nums.len() == 1 { |
293 | | - return none |
294 | | - } else { |
295 | | - return numbering("1.1)", ..nums) |
296 | | - } |
297 | | - }) |
| 287 | + set heading( |
| 288 | + numbering: (..args) => { |
| 289 | + let nums = args.pos() |
| 290 | + if nums.len() == 1 { |
| 291 | + return none |
| 292 | + } else { |
| 293 | + return numbering("1.1)", ..nums) |
| 294 | + } |
| 295 | + }, |
| 296 | + ) |
298 | 297 |
|
299 | 298 | body |
300 | 299 | } |
|
374 | 373 | colspanx( |
375 | 374 | 2, |
376 | 375 | _underlined_cell(if course == none { |
377 | | - state_course.display() |
| 376 | + context state_course.get() |
378 | 377 | } else { |
379 | 378 | course |
380 | 379 | }), |
|
393 | 392 | colspanx( |
394 | 393 | 2, |
395 | 394 | _underlined_cell(if author == none { |
396 | | - state_author.display() |
| 395 | + context state_author.get() |
397 | 396 | } else { |
398 | 397 | author |
399 | 398 | }), |
|
403 | 402 | colspanx( |
404 | 403 | 2, |
405 | 404 | _underlined_cell(if school_id == none { |
406 | | - state_school_id.display() |
| 405 | + context state_school_id.get() |
407 | 406 | } else { |
408 | 407 | school_id |
409 | 408 | }), |
|
416 | 415 | colspanx( |
417 | 416 | 2, |
418 | 417 | _underlined_cell(if date == none { |
419 | | - state_date.display() |
| 418 | + context state_date.get() |
420 | 419 | } else { |
421 | 420 | date |
422 | 421 | }), |
|
435 | 434 | grade: none, |
436 | 435 | name: none, |
437 | 436 | ) = { |
438 | | - |
439 | | - align(center)[ |
440 | | - #grid(columns: 3, column-gutter: (-15pt, 20pt),[ |
| 437 | + align(center)[ |
| 438 | + #grid( |
| 439 | + columns: 3, |
| 440 | + column-gutter: (-15pt, 20pt), |
| 441 | + [ |
441 | 442 | #pad(y: -4pt)[] |
442 | 443 | #image("./images/ZJU-Banner.png", width: 75%) |
443 | | - ],[ |
444 | | - #text(size: -10pt)[] \ #text(size: 30pt, stroke: 1pt)[实验报告] |
445 | | - ], [ |
| 444 | + ], |
| 445 | + [ |
| 446 | + #text(size: -10pt)[] \ #text(size: 30pt, stroke: 1pt)[实验报告] |
| 447 | + ], |
| 448 | + [ |
446 | 449 | #align(left)[ |
447 | 450 | #text(size: 1em)[ |
448 | 451 | 专业:#major\ |
|
451 | 454 | 日期:#date\ |
452 | 455 | ] |
453 | 456 | ] |
454 | | - ]) |
455 | | - ] |
456 | | - |
| 457 | + ], |
| 458 | + ) |
| 459 | + ] |
| 460 | + |
457 | 461 | tablex( |
458 | 462 | columns: (1.3fr, 2fr, 1.3fr, 1fr, 1fr, 0.5fr), |
459 | 463 | align: left, |
460 | 464 | stroke: 0pt, |
461 | 465 | inset: 1pt, |
462 | 466 | _underlined_cell("课程名称:", color: white), |
463 | | - colspanx(1, _underlined_cell( |
464 | | - if course == none { |
465 | | - state_course.display() |
| 467 | + colspanx( |
| 468 | + 1, |
| 469 | + _underlined_cell(if course == none { |
| 470 | + context state_course.get() |
466 | 471 | } else { |
467 | 472 | course |
468 | | - } |
469 | | - )), |
| 473 | + }), |
| 474 | + ), |
470 | 475 | _underlined_cell("指导老师:", color: white), |
471 | | - colspanx(1, _underlined_cell( |
472 | | - teacher |
473 | | - )), |
| 476 | + colspanx(1, _underlined_cell(teacher)), |
474 | 477 | _underlined_cell("成绩:", color: white), |
475 | | - colspanx(1, _underlined_cell( |
476 | | - grade |
477 | | - )), |
| 478 | + colspanx(1, _underlined_cell(grade)), |
478 | 479 | _underlined_cell("实验名称:", color: white), |
479 | | - colspanx(4, _underlined_cell( |
480 | | - name |
481 | | - )), (), (), (), |
| 480 | + colspanx(4, _underlined_cell(name)), |
| 481 | + (), |
| 482 | + (), |
| 483 | + (), |
482 | 484 | ) |
483 | 485 | } |
484 | 486 |
|
485 | | -#let table3( // 三线表 |
| 487 | +#let table3( |
| 488 | + // 三线表 |
486 | 489 | ..args, |
487 | 490 | inset: 0.5em, |
488 | 491 | stroke: 0.5pt, |
489 | 492 | align: center + horizon, |
490 | | - columns: (1fr), |
| 493 | + columns: 1fr, |
491 | 494 | ) = { |
492 | 495 | tablex( |
493 | | - columns: (1fr), |
| 496 | + columns: 1fr, |
494 | 497 | inset: 0pt, |
495 | 498 | stroke: 0pt, |
496 | 499 | map-hlines: h => { |
|
0 commit comments