From d796075ce4cd9fbab5df45a426405469a6635f6a Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Tue, 7 Jan 2025 15:31:28 -0800 Subject: [PATCH] auto-update(nvim): 2025-01-07 15:31:28 --- .../by-course/math-6a/course-notes/dvd.typ | 329 ++++++++++++++++++ .../by-course/math-6a/course-notes/main.typ | 13 + .../math-6a/course-notes/package.nix | 37 ++ 3 files changed, 379 insertions(+) create mode 100644 documents/by-course/math-6a/course-notes/dvd.typ create mode 100644 documents/by-course/math-6a/course-notes/main.typ create mode 100644 documents/by-course/math-6a/course-notes/package.nix diff --git a/documents/by-course/math-6a/course-notes/dvd.typ b/documents/by-course/math-6a/course-notes/dvd.typ new file mode 100644 index 0000000..1b6ae29 --- /dev/null +++ b/documents/by-course/math-6a/course-notes/dvd.typ @@ -0,0 +1,329 @@ +#import "@preview/ctheorems:1.1.3": * +#import "@preview/showybox:2.0.3": showybox + +#let colors = ( + rgb("#9E9E9E"), + rgb("#F44336"), + rgb("#E91E63"), + rgb("#9C27B0"), + rgb("#673AB7"), + rgb("#3F51B5"), + rgb("#2196F3"), + rgb("#03A9F4"), + rgb("#00BCD4"), + rgb("#009688"), + rgb("#4CAF50"), + rgb("#8BC34A"), + rgb("#CDDC39"), + rgb("#FFEB3B"), + rgb("#FFC107"), + rgb("#FF9800"), + rgb("#FF5722"), + rgb("#795548"), + rgb("#9E9E9E"), +) + +#let dvdtyp( + title: "", + subtitle: "", + author: "", + abstract: none, + bibliography: none, + paper-size: "a4", + date: "today", + body, +) = { + set document(title: title, author: author) + + set std.bibliography(style: "springer-mathphys", title: [References]) + + show: thmrules + + set page( + numbering: "1", + number-align: center, + header: locate(loc => { + if loc.page() == 1 { + return + } + box(stroke: (bottom: 0.7pt), inset: 0.4em)[#text( + font: "New Computer Modern", + )[ + *#author* --- #datetime.today().display("[day] [month repr:long] [year]") + #h(1fr) + *#title* + ]] + }), + paper: paper-size, + // The margins depend on the paper size. + margin: ( + left: (86pt / 216mm) * 100%, + right: (86pt / 216mm) * 100%, + ), + ) + + + set heading(numbering: "1.") + show heading: it => { + set text(font: "Libertinus Serif") + set par(first-line-indent: 0em) + + if it.numbering != none { + text(rgb("#2196F3"), weight: 500)[#sym.section] + + text(rgb("#2196F3"))[#counter(heading).display() ] + } + it.body + } + + set text(font: "New Computer Modern", lang: "en") + + show math.equation: set text(weight: 400) + + + // Title row. + align(center)[ + #set text(font: "Libertinus Serif") + #block(text(weight: 700, 26pt, title)) + + + #if subtitle != none [#text(12pt, weight: 500)[#( + subtitle + )]] + + #if author != none [#text(16pt)[#smallcaps(author)]] + #v(1.2em, weak: true) + + #if date == "today" { + datetime.today().display("[day] [month repr:long] [year]") + } else { + date + } + + ] + + if abstract != none [ + #v(2.2em) + #set text(font: "Libertinus Serif") + #pad(x: 14%, abstract) + #v(1em) + ] + + set outline(fill: repeat[~.], indent: 1em) + + show outline: set heading(numbering: none) + show outline: set par(first-line-indent: 0em) + + show outline.entry.where(level: 1): it => { + text(font: "Libertinus Serif", rgb("#2196F3"))[#strong[#it]] + } + show outline.entry: it => { + h(1em) + text(font: "Libertinus Serif", rgb("#2196F3"))[#it] + } + + + // Main body. + set par( + justify: true, + first-line-indent: 1em, + ) + + body + + // Display the bibliography, if any is given. + if bibliography != none { + show std.bibliography: set text(footnote-size) + show std.bibliography: set block(above: 11pt) + show std.bibliography: pad.with(x: 0.5pt) + bibliography + } +} + +#let thmtitle(t, color: rgb("#000000")) = { + return text( + font: "Libertinus Serif", + weight: "semibold", + fill: color, + )[#t] +} +#let thmname(t, color: rgb("#000000")) = { + return text(font: "Libertinus Serif", fill: color)[(#t)] +} + +#let thmtext(t, color: rgb("#000000")) = { + let a = t.children + if (a.at(0) == [ ]) { + a.remove(0) + } + t = a.join() + + return text(font: "New Computer Modern", fill: color)[#t] +} + +#let thmbase( + identifier, + head, + ..blockargs, + supplement: auto, + padding: (top: 0.5em, bottom: 0.5em), + namefmt: x => [(#x)], + titlefmt: strong, + bodyfmt: x => x, + separator: [#h(0.1em).#h(0.2em) \ ], + base: "heading", + base_level: none, +) = { + if supplement == auto { + supplement = head + } + let boxfmt(name, number, body, title: auto, ..blockargs_individual) = { + if not name == none { + name = [ #namefmt(name)] + } else { + name = [] + } + if title == auto { + title = head + } + if not number == none { + title += " " + number + } + title = titlefmt(title) + body = bodyfmt(body) + pad( + ..padding, + showybox( + width: 100%, + radius: 0.3em, + breakable: true, + padding: (top: 0em, bottom: 0em), + ..blockargs.named(), + ..blockargs_individual.named(), + [#title#name#titlefmt(separator)#body], + ), + ) + } + + let auxthmenv = thmenv( + identifier, + base, + base_level, + boxfmt, + ).with(supplement: supplement) + + return auxthmenv.with(numbering: "1.1") +} + +#let styled-thmbase = thmbase.with( + titlefmt: thmtitle, + namefmt: thmname, + bodyfmt: thmtext, +) + +#let builder-thmbox(color: rgb("#000000"), ..builderargs) = styled-thmbase.with( + titlefmt: thmtitle.with(color: color.darken(30%)), + bodyfmt: thmtext.with(color: color.darken(70%)), + namefmt: thmname.with(color: color.darken(30%)), + frame: ( + body-color: color.lighten(92%), + border-color: color.darken(10%), + thickness: 1.5pt, + inset: 1.2em, + radius: 0.3em, + ), + ..builderargs, +) + +#let builder-thmline( + color: rgb("#000000"), + ..builderargs, +) = styled-thmbase.with( + titlefmt: thmtitle.with(color: color.darken(30%)), + bodyfmt: thmtext.with(color: color.darken(70%)), + namefmt: thmname.with(color: color.darken(30%)), + frame: ( + body-color: color.lighten(92%), + border-color: color.darken(10%), + thickness: (left: 2pt), + inset: 1.2em, + radius: 0em, + ), + ..builderargs, +) + +#let problem-style = builder-thmbox( + color: colors.at(11), + shadow: (offset: (x: 2pt, y: 2pt), color: luma(70%)), +) + +#let exercise = problem-style("item", "Exercise") +#let problem = exercise + +#let theorem-style = builder-thmbox( + color: colors.at(6), + shadow: (offset: (x: 3pt, y: 3pt), color: luma(70%)), +) + +#let example-style = builder-thmbox( + color: colors.at(16), + shadow: (offset: (x: 3pt, y: 3pt), color: luma(70%)), +) + +#let theorem = theorem-style("item", "Theorem") +#let lemma = theorem-style("item", "Lemma") +#let corollary = theorem-style("item", "Corollary") + +#let definition-style = builder-thmline(color: colors.at(8)) + +// #let definition = definition-style("definition", "Definition") +#let proposition = definition-style("item", "Proposition") +#let remark = definition-style("item", "Remark") +#let observation = definition-style("item", "Observation") + +// #let example-style = builder-thmline(color: colors.at(16)) + +#let example = example-style("item", "Example") + +#let proof(body, name: none) = { + [_Proof_] + if name != none { + [ #thmname[#name]] + } + [.] + body + h(1fr) + + // Add a word-joiner so that the proof square and the last word before the + // 1fr spacing are kept together. + sym.wj + + // Add a non-breaking space to ensure a minimum amount of space between the + // text and the proof square. + sym.space.nobreak + + $square.stroked$ +} + +#let fact = thmplain( + "item", + "Fact", + titlefmt: strong, + separator: ".", + + inset: 0pt, +) +#let abuse = thmplain( + "item", + "Abuse of Notation", + titlefmt: strong, + separator: ".", + inset: 0pt, +) +#let definition = thmplain( + "item", + "Definition", + titlefmt: strong, + separator: ".", + inset: 0pt, +) diff --git a/documents/by-course/math-6a/course-notes/main.typ b/documents/by-course/math-6a/course-notes/main.typ new file mode 100644 index 0000000..fb3adb3 --- /dev/null +++ b/documents/by-course/math-6a/course-notes/main.typ @@ -0,0 +1,13 @@ +#import "./dvd.typ": * + +#show: dvdtyp.with( + title: "Math 6A Course Notes", + author: "Youwen Wu", + date: "Winter 2025", + subtitle: [Taught by Nathan Scheley], +) + +#outline() + += Course logistics + diff --git a/documents/by-course/math-6a/course-notes/package.nix b/documents/by-course/math-6a/course-notes/package.nix new file mode 100644 index 0000000..7879e7e --- /dev/null +++ b/documents/by-course/math-6a/course-notes/package.nix @@ -0,0 +1,37 @@ +{ + pkgs, + typstPackagesCache, + typixLib, + cleanTypstSource, + flakeSelf, + ... +}: +let + src = cleanTypstSource ./.; + commonArgs = { + typstSource = "main.typ"; + + fontPaths = [ + # Add paths to fonts here + # "${pkgs.roboto}/share/fonts/truetype" + ]; + + virtualPaths = [ + # Add paths that must be locally accessible to typst here + # { + # dest = "icons"; + # src = "${inputs.font-awesome}/svgs/regular"; + # } + ]; + + XDG_CACHE_HOME = typstPackagesCache; + SOURCE_DATE_EPOCH = builtins.toString flakeSelf.lastModified; + }; + +in +typixLib.buildTypstProject ( + commonArgs + // { + inherit src; + } +)