diff --git a/documents/by-course/math-8/pset-1/dvd.typ b/documents/by-course/math-8/pset-1/dvd.typ new file mode 100644 index 0000000..cb4d89b --- /dev/null +++ b/documents/by-course/math-8/pset-1/dvd.typ @@ -0,0 +1,320 @@ +#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) = { + thmtitle[Proof] + if name != none { + [ #thmname[#name]] + } + thmtitle[.] + body + h(1fr) + $square$ +} + +#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-8/pset-1/main.typ b/documents/by-course/math-8/pset-1/main.typ new file mode 100644 index 0000000..40f9cdb --- /dev/null +++ b/documents/by-course/math-8/pset-1/main.typ @@ -0,0 +1,109 @@ +#import "./dvd.typ": * + +#show: dvdtyp.with( + title: "Pset 1", + author: "Youwen Wu", +) + +#set heading( + numbering: ( + num => { + return "1." + str(num) + } + ), +) + +Problems: + +1.1: \#1ceij, 2c, 3cdeghjL, 4cdefh, 6, 7cg, 10ce, 11bei, 12a, 13 + +1.2: \#1bd, 2bd, 3, 5cfgh, 6bcg, 7be, 10bfg, 12bc, 13, 16cde + += Exercises + +1. \ + c. #[ + $x/2$ is a rational number. + + True. + ] \ + e. #[ + Either $pi$ is rational and $17$ is a prime, or $7 < 13$ and $81$ is a perfect square. + + True. + ] \ + i. #[ + It is not the case that $39$ is prime, or that 64 is a power of 2. + + False. + ] \ + j. #[ + There are more than three false statements in this book, and this statement is one of them. + + False. + ] + +2c. #[ + $P$ is $5^2 + 12^2 = 13^2$ and $Q$ is $sqrt(2) + sqrt(3) = sqrt(2 + 3)$ + + $P and Q: "false"$ + + $P or Q: "true"$ +] + +3. #[ + \ + c. $P and not Q$ + #[ + #table( + columns: 3, + align: center, + [$P$], [$Q$], [$P and not Q$], + [T], [T], [F], + [T], [F], [T], + [F], [T], [F], + [F], [F], [F], + ) + ] \ + d. $P and (Q or not Q)$ + #[ + #table( + columns: 5, + align: center, + [$P$], [$Q$], [$not Q$], [$Q or not Q$], [$P and (Q or not Q)$], + [T], [T], [F], [T], [T], + [T], [F], [T], [T], [T], + [F], [T], [F], [T], [F], + [F], [F], [T], [T], [F], + ) + ] \ + e. $(P and Q) or not Q$ \ + #[ + #table( + columns: 5, + align: center, + [$P$], [$Q$], [$P and Q$], [$not Q$], [$(P and Q) or not Q$], + [T], [T], [T], [F], [T], + [F], [T], [F], [F], [F], + [T], [F], [F], [T], [T], + [F], [F], [F], [T], [T], + ) + ] \ + g. $(P or S) and (P or K)$ + #table( + columns: (1fr, 1fr, 1fr, 1fr, 1fr, 2fr), + align: center, + [$P$], [$S$], [$K$], [$P or S$], [$P or K$], [$(P or S) and (P or K)$], + [T], [T], [T], [T], [T], [T], + [T], [T], [F], [T], [T], [T], + [T], [F], [T], [T], [T], [T], + [T], [F], [F], [T], [T], [T], + [F], [T], [T], [T], [T], [T], + [F], [T], [F], [T], [F], [F], + [F], [F], [T], [F], [T], [T], + [F], [F], [F], [F], [F], [F], + ) + ] + + += Exercises diff --git a/documents/by-course/math-8/pset-1/package.nix b/documents/by-course/math-8/pset-1/package.nix new file mode 100644 index 0000000..7879e7e --- /dev/null +++ b/documents/by-course/math-8/pset-1/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; + } +) diff --git a/documents/by-course/pstat-120a/course-notes/dvd.typ b/documents/by-course/pstat-120a/course-notes/dvd.typ index a71ddcc..cb4d89b 100644 --- a/documents/by-course/pstat-120a/course-notes/dvd.typ +++ b/documents/by-course/pstat-120a/course-notes/dvd.typ @@ -283,7 +283,7 @@ // #let example-style = builder-thmline(color: colors.at(16)) -#let example = example-style("item", "Example").with(numbering: none) +#let example = example-style("item", "Example") #let proof(body, name: none) = { thmtitle[Proof]