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