grace/dots

dotfiles/nix configs

git clone https://git.gae.moe/grace/dots

Grace Yoderhx and vcs changesddf0c79

idk
10.0 KiB511 linesraw
1#import "@preview/rose-pine:0.2.1": apply, rose-pine-moon
2
3#let dt(date_str) = {
4  let parts = date_str.split("-")
5  datetime(
6    year: int(parts.at(0)),
7    month: int(parts.at(1)),
8    day: int(parts.at(2))
9  )
10}
11
12#let grace_header_block(
13  title: str,
14  subtitle: str,
15  course: str,
16  author: str,
17  date: datetime,
18  text-color: color,
19  font-size: length,
20  header-color: color,
21) = block[
22  #rect(
23    width: 100%,
24    height: auto,
25    fill: header-color,
26    radius: .5em,
27    stroke: none,
28    inset: (x: 1em, y: 0em),
29    [
30      #set align(center + horizon)
31      #set text(fill: text-color, size: font-size, weight: "medium")
32      #v(1em)
33      #grid(
34        columns: (1fr),
35        rows: (auto, auto, auto),
36        row-gutter: 1em,
37        [
38          #set text(size: font-size + 8pt, weight: "bold")
39          #title
40        ],
41        [
42          #if subtitle != none [
43            #set text(size: font-size + 4pt, weight: "light", style: "italic")
44            #subtitle
45          ]
46        ],
47        [
48          #set text(size: font-size + 2pt, weight: "regular")
49          #v(2em)
50          #grid(
51            columns: (1fr, 1fr, 1fr),
52            align: (left, center, right),
53            [#if author != none [#author]],
54            [#if course != none [#course]],
55            [#date.display("[month repr:long] [day padding:none], [year]")]
56          )
57          #v(1em)
58        ]
59      )
60    ]
61  )
62]
63
64
65
66
67#let grace_template(
68  title: "Document Title",
69  author: "Grace Yoder",
70  subtitle: none,
71  course: none,
72  date: datetime.today(),
73  header-color: rose-pine-moon.overlay,
74  footer-color: rose-pine-moon.overlay,
75  text-color: white,
76  font-size: 11pt,
77  in_outline: bool,
78  doc
79) = {
80  set document(title: title, author: author, date: date)
81  set page(
82    paper: "us-letter",
83    margin: (top: 2.2cm, bottom: 2.2cm, left: 2cm, right: 2cm),
84    header: context {
85      set text(fill: text-color, size: font-size, style: "italic")
86      let page-num = counter(page).get().first()
87
88      if page-num != 1 {
89        rect(
90          width: 100%,
91          height: .8cm,
92          fill: header-color,
93          radius: .5em,
94          stroke: none,
95          inset: (x: 1em, y: 0em),
96          [
97            #set align(center + horizon)
98            #grid(
99              columns: (1fr, auto),
100              align: (left + horizon, right + horizon),
101              [#title],
102              [#date.display("[year].[month].[day]")]
103            )
104          ]
105        )
106      }
107    },
108    footer: [
109      #set text(fill: text-color, size: font-size, style: "italic")
110      #rect(
111        width: 100%,
112        height: 0.8cm,
113        fill: footer-color,
114        radius: .5em,
115        stroke: none,
116        inset: (x: 1em, y: 0em),
117        [
118          #set align(center + horizon)
119          #grid(
120            columns: (1fr, auto),
121            align: (left + horizon, right + horizon),
122            [#if author != none [#author] else []],
123            [#context counter(page).display()]
124          )
125        ]
126      )
127    ]
128  )
129  set text(font: "Montserrat", size: 11pt)
130  set par(justify: true, leading: 0.75em)
131  show math.equation: set text(font: "Fira Math", fallback: false)
132
133  set raw(theme: rose-pine-moon.codeThemePath)
134  show raw.where(block: false): it => [
135    #set text(fill: rose-pine-moon.text)
136    #set text(top-edge: "ascender", bottom-edge: "descender")
137    #box(
138      fill: rose-pine-moon.overlay,
139      inset: (x: 3pt, y: 2pt),
140      radius: 3pt,
141      it
142    )
143  ]
144  show raw.where(block: true): it => [
145    #set text(fill: rose-pine-moon.text)
146    #block(
147      fill: rose-pine-moon.overlay,
148      inset: 8pt,
149      radius: 5pt,
150      breakable: true,
151
152      it
153    )
154  ]
155
156  show heading.where(level: 1): it => [
157    #set text(size: 18pt, weight: "bold")
158    #pad(top: 1.2em, bottom: 0.6em)[#it]
159  ]
160  show heading.where(level: 2): it => [
161    #set text(size: 15pt, weight: "bold")
162    #pad(top: 1em, bottom: 0.4em)[#it]
163  ]
164  show heading.where(level: 3): it => [
165    #set text(size: 13pt, weight: "bold")
166    #pad(top: 0.8em, bottom: 0.3em)[#it]
167  ]
168  place(top + center, dy: -1.5cm,
169    grace_header_block(
170      title: title,
171      subtitle: subtitle,
172      author: author,
173      course: course,
174      date: date,
175      text-color: text-color,
176      font-size: font-size,
177      header-color: header-color,
178    )
179  )
180  if in_outline == true {
181    set heading(outlined: false)
182    show heading.where(outlined: true): set text(size: 100pt)
183    place(
184      dx: -200%,
185      dy: -20%,
186      heading(outlined: true, )[#title]
187    )
188  }
189  v(7em)
190  doc
191}
192
193
194#import "@preview/zero:0.6.0": num, set-num, format-table, ztable, zi, nonum
195
196#let page_num_function(cur: num, last: num) = {
197  [Page #cur of #last]
198}
199
200#let ecet227_report(
201  title: str,
202  week: num,
203  course: "ECET 227",
204  prof: "Professor Weissbach",
205  author: "Grace Yoder",
206  ymd: (num, num, num),
207  section: "Monday 11:30",
208  doc
209) = {
210  set heading(numbering: "1.1 ")
211  set text(font: "Times New Roman", size: 12pt)
212  set image(width: 80%)
213  show ref: it => strong(it)
214  show figure.caption: it => context [
215    *#it.supplement~#it.counter.display()#it.separator*#it.body
216  ]
217  show figure.where(kind: table): set figure.caption(position: top)
218  let date = datetime(year: ymd.at(0), month: ymd.at(1), day: ymd.at(2))
219  set grid(column-gutter: 15pt)
220  set page(
221    margin: (
222      top: 1.7in,
223      bottom: 1in,
224      left: 1in,
225      right: 1in,
226    ),
227    paper: "us-letter",
228    header: {
229      set text(size: 10pt)
230      v(5pt)
231      set par(spacing: .8em)
232      align(right)[
233        #author
234
235        #course
236
237        #prof
238
239        #week: #title
240
241        #section
242
243        #date.display("[month repr:long] [day], [year]")
244      ]
245      v(-15pt)
246    },
247    footer: context {
248      align(center)[Page #counter(page).display() of #counter(page).final().first()]
249    },
250  )
251
252  // set-num(
253  //   exponent: "eng"
254  // )
255
256  doc
257}
258
259// For usage in ztables
260#let t = (
261  // Volt
262  Tv: nonum[TV],
263  Gv: nonum[GV],
264  Mv: nonum[MV],
265  kv: nonum[kV],
266  v: nonum[V],
267  mv: nonum[mV],
268  uv: nonum[#sym.mu\V],
269  nv: nonum[nV],
270  pv: nonum[pV],
271
272  // Volt rms
273  Tvrms: nonum[TV#sub[rms]],
274  Gvrms: nonum[GV#sub[rms]],
275  Mvrms: nonum[MV#sub[rms]],
276  kvrms: nonum[kV#sub[rms]],
277  vrms: nonum[V#sub[rms]],
278  mvrms: nonum[mV#sub[rms]],
279  uvrms: nonum[#sym.mu\V#sub[rms]],
280  nvrms: nonum[nV#sub[rms]],
281  pvrms: nonum[pV#sub[rms]],
282
283  // Volt peak
284  Tvp: nonum[TV#sub[p]],
285  Gvp: nonum[GV#sub[p]],
286  Mvp: nonum[MV#sub[p]],
287  kvp: nonum[kV#sub[p]],
288  vp: nonum[V#sub[p]],
289  mvp: nonum[mV#sub[p]],
290  uvp: nonum[#sym.mu\V#sub[p]],
291  nvp: nonum[nV#sub[p]],
292  pvp: nonum[pV#sub[p]],
293
294  // Volt p to p
295  Tvpp: nonum[TV#sub[pp]],
296  Gvpp: nonum[GV#sub[pp]],
297  Mvpp: nonum[MV#sub[pp]],
298  kvpp: nonum[kV#sub[pp]],
299  vpp: nonum[V#sub[pp]],
300  mvpp: nonum[mV#sub[pp]],
301  uvpp: nonum[#sym.mu\V#sub[pp]],
302  nvpp: nonum[nV#sub[pp]],
303  pvpp: nonum[pV#sub[pp]],
304
305  // Volt dc
306  Tvdc: nonum[TV#sub[dc]],
307  Gvdc: nonum[GV#sub[dc]],
308  Mvdc: nonum[MV#sub[dc]],
309  kvdc: nonum[kV#sub[dc]],
310  vdc: nonum[V#sub[dc]],
311  mvdc: nonum[mV#sub[dc]],
312  uvdc: nonum[#sym.mu\V#sub[dc]],
313  nvdc: nonum[nV#sub[dc]],
314  pvdc: nonum[pV#sub[dc]],
315
316  // Farad
317  Tf: nonum[TF],
318  Gf: nonum[GF],
319  Mf: nonum[MF],
320  kf: nonum[kF],
321  f: nonum[F],
322  mf: nonum[mF],
323  uf: nonum[#sym.mu\F],
324  nf: nonum[nF],
325  pf: nonum[pF],
326
327
328  // Ohm
329  To: nonum[T#sym.Omega],
330  Go: nonum[G#sym.Omega],
331  Mo: nonum[M#sym.Omega],
332  ko: nonum[k#sym.Omega],
333  o: nonum[#sym.Omega],
334  mo: nonum[m#sym.Omega],
335  uo: nonum[#sym.mu#sym.Omega],
336  no: nonum[n#sym.Omega],
337  po: nonum[p#sym.Omega],
338
339  // Henry
340  Th: nonum[TH],
341  Gh: nonum[GH],
342  Mh: nonum[MH],
343  kh: nonum[kH],
344  h: nonum[H],
345  mh: nonum[mH],
346  uh: nonum[#sym.mu\H],
347  nh: nonum[nH],
348  ph: nonum[pH],
349
350  // Amp
351  Ta: nonum[TA],
352  Ga: nonum[GA],
353  Ma: nonum[MA],
354  ka: nonum[kA],
355  a: nonum[A],
356  ma: nonum[mA],
357  ua: nonum[#sym.mu\A],
358  na: nonum[nA],
359  pa: nonum[pA],
360
361  // Hertz
362  Thz: nonum[THz],
363  Ghz: nonum[GHz],
364  Mhz: nonum[MHz],
365  khz: nonum[kHz],
366  hz: nonum[Hz],
367  mhz: nonum[mHz],
368  uhz: nonum[#sym.mu\Hz],
369  nhz: nonum[nHz],
370  phz: nonum[pHz],
371)
372
373// For usage everywhere but ztables
374#let u = (
375  // Volt
376  Tv: [TV],
377  Gv: [GV],
378  Mv: [MV],
379  kv: [kV],
380  v: [V],
381  mv: [mV],
382  uv: [#sym.mu\V],
383  nv: [nV],
384  pv: [pV],
385
386  // Volt rms
387  Tvrms: [TV#sub[rms]],
388  Gvrms: [GV#sub[rms]],
389  Mvrms: [MV#sub[rms]],
390  kvrms: [kV#sub[rms]],
391  vrms: [V#sub[rms]],
392  mvrms: [mV#sub[rms]],
393  uvrms: [#sym.mu\V#sub[rms]],
394  nvrms: [nV#sub[rms]],
395  pvrms: [pV#sub[rms]],
396
397  // Volt peak
398  Tvp: [TV#sub[p]],
399  Gvp: [GV#sub[p]],
400  Mvp: [MV#sub[p]],
401  kvp: [kV#sub[p]],
402  vp: [V#sub[p]],
403  mvp: [mV#sub[p]],
404  uvp: [#sym.mu\V#sub[p]],
405  nvp: [nV#sub[p]],
406  pvp: [pV#sub[p]],
407
408  // Volt p to p
409  Tvpp: [TV#sub[pp]],
410  Gvpp: [GV#sub[pp]],
411  Mvpp: [MV#sub[pp]],
412  kvpp: [kV#sub[pp]],
413  vpp: [V#sub[pp]],
414  mvpp: [mV#sub[pp]],
415  uvpp: [#sym.mu\V#sub[pp]],
416  nvpp: [nV#sub[pp]],
417  pvpp: [pV#sub[pp]],
418
419  // Volt dc
420  Tvdc: [TV#sub[dc]],
421  Gvdc: [GV#sub[dc]],
422  Mvdc: [MV#sub[dc]],
423  kvdc: [kV#sub[dc]],
424  vdc: [V#sub[dc]],
425  mvdc: [mV#sub[dc]],
426  uvdc: [#sym.mu\V#sub[dc]],
427  nvdc: [nV#sub[dc]],
428  pvdc: [pV#sub[dc]],
429
430  // Farad
431  Tf: [TF],
432  Gf: [GF],
433  Mf: [MF],
434  kf: [kF],
435  f: [F],
436  mf: [mF],
437  uf: [#sym.mu\F],
438  nf: [nF],
439  pf: [pF],
440
441
442  // Ohm
443  To: [T#sym.Omega],
444  Go: [G#sym.Omega],
445  Mo: [M#sym.Omega],
446  ko: [k#sym.Omega],
447  o: [#sym.Omega],
448  mo: [m#sym.Omega],
449  uo: [#sym.mu#sym.Omega],
450  no: [n#sym.Omega],
451  po: [p#sym.Omega],
452
453  // Henry
454  Th: [TH],
455  Gh: [GH],
456  Mh: [MH],
457  kh: [kH],
458  h: [H],
459  mh: [mH],
460  uh: [#sym.mu\H],
461  nh: [nH],
462  ph: [pH],
463
464  // Amp
465  Ta: [TA],
466  Ga: [GA],
467  Ma: [MA],
468  ka: [kA],
469  a: [A],
470  ma: [mA],
471  ua: [#sym.mu\A],
472  na: [nA],
473  pa: [pA],
474
475  // Hertz
476  Thz: [THz],
477  Ghz: [GHz],
478  Mhz: [MHz],
479  khz: [kHz],
480  hz: [Hz],
481  mhz: [mHz],
482  uhz: [#sym.mu\Hz],
483  nhz: [nHz],
484  phz: [pHz],
485
486  // Watt
487  Tw: [TW],
488  Gw: [GW],
489  Mw: [MW],
490  kw: [kW],
491  w: [W],
492  mw: [mW],
493  uw: [#sym.mu\W],
494  nw: [nW],
495  pw: [pW],
496
497  // Sec
498  Ts: [Ts],
499  Gs: [Gs],
500  Ms: [Ms],
501  ks: [ks],
502  s: [s],
503  ms: [ms],
504  us: [#sym.mu\s],
505  ns: [ns],
506  ps: [ps],
507)
508
509#let blackcell = table.cell(
510  fill: black,
511)[]