From 9bba9a337a9e9267a946c194db2a1825d4966be3 Mon Sep 17 00:00:00 2001 From: alexander Date: Sun, 14 Dec 2025 16:36:05 +0100 Subject: [PATCH] Added a build script --- .gitea/workflows/build-script.yaml | 46 +++++++++ compile-all.bash | 35 +++++-- src/Analysis_rewrite.typ | 141 ++++++++++++++++++++++++++++ src/images/analysis1/beschränkt.png | Bin 0 -> 23868 bytes 4 files changed, 214 insertions(+), 8 deletions(-) create mode 100644 .gitea/workflows/build-script.yaml create mode 100644 src/Analysis_rewrite.typ create mode 100644 src/images/analysis1/beschränkt.png diff --git a/.gitea/workflows/build-script.yaml b/.gitea/workflows/build-script.yaml new file mode 100644 index 0000000..3bf78e7 --- /dev/null +++ b/.gitea/workflows/build-script.yaml @@ -0,0 +1,46 @@ +# .gitea/workflows/typst-build.yml +name: Build Typst PDFs (Docker) + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +# Change this to the folder that contains your .typ files (relative to repo root) +env: + TYPST_SOURCE_DIR: src + BUILD_DIR: build + +jobs: + build-typst: + runs-on: ubuntu-latest + + # Run the whole job inside a Docker container that has Typst installed + container: + image: ghcr.io/typst/typst:latest + options: --user root + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Show Typst & OS versions + run: | + typst --version || true + uname -a + + - name: Compile all .typ files + shell: bash + run: | + TYPST_SOURCE_DIR="${TYPST_SOURCE_DIR}" + BUILD_DIR="${BUILD_DIR}" + ./compile-all.bash + + - name: Upload PDFs + if: always() + uses: actions/upload-artifact@v4 + with: + name: typst-pdfs + path: ${{ env.BUILD_DIR }}/ + if-no-files-found: warn \ No newline at end of file diff --git a/compile-all.bash b/compile-all.bash index 16d4f98..9675a09 100755 --- a/compile-all.bash +++ b/compile-all.bash @@ -1,11 +1,30 @@ -#!/bin/bash +#!/usr/bin/env bash -# Find all .typ files under src/ (recursive) into an array -mapfile -d '' LIST_OF_TYPST_FILES < <(find src -maxdepth 1 -type f -name '*.typ' -print0) +set -euo pipefail +SRC_DIR="${TYPST_SOURCE_DIR}" +OUT_DIR="${BUILD_DIR}" -rm -rf output -mkdir -p output +if [[ ! -d "$SRC_DIR" ]]; then + echo "Source directory '$SRC_DIR' does not exist." + exit 1 +fi -for FILE in "${LIST_OF_TYPST_FILES[@]}"; do - typst compile "$FILE" output/"$(basename "${FILE%.*}").pdf" -done \ No newline at end of file +mkdir -p "$OUT_DIR" + +# Find all .typ files under $SRC_DIR (excluding hidden dirs) +mapfile -d '' files < <(printf '%s\0' "$SRC_DIR"/*.typ 2>/dev/null) + +if [[ ${#files[@]} -eq 0 ]]; then + echo "No .typ files found in '$SRC_DIR'." + exit 0 +fi + +for f in "${files[@]}"; do + # Trim leading ./ if present + rel="${f#./}" + # Destination path: build//.pdf + dest_pdf="${OUT_DIR}/$(basename "${rel%.typ}").pdf" + + echo "Compiling: $f -> $dest_pdf" + typst compile "$f" "$dest_pdf" +done diff --git a/src/Analysis_rewrite.typ b/src/Analysis_rewrite.typ new file mode 100644 index 0000000..e96d0f3 --- /dev/null +++ b/src/Analysis_rewrite.typ @@ -0,0 +1,141 @@ +#set page( + paper: "a4", + margin: ( + bottom: 10mm, + top: 5mm, + left: 5mm, + right: 5mm + ), + flipped:true, + numbering: "— 1 —", + number-align: center +) + +#set text( + size: 8pt, +) + +#place(top+center, scope: "parent", float: true, heading( + [Analysis 1 (IE)] +)) + + + +#let subHeading(it: content, fill: color) = { + box( + align( + top+center, + text( + it, + size: 10pt, + weight: "regular", + style: "italic", + ) + ), + fill: fill, + width: 100%, + inset: 1mm, + height: auto + ) +} + +#let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.3mm)) +#let MathAlignLeft(e) = { + align(left, block(e)) +} + +#let colorFolgen = color.hsl(202.05deg, 92.13%, 75.1%) +#let colorReihen = color.hsl(280deg, 92.13%, 75.1%) +#let colorAbleitung = color.hsl(356.92deg, 92.13%, 75.1%) +#let colorIntegral = color.hsl(34.87deg, 92.13%, 75.1%) + +#columns(5, gutter: 2mm)[ + #subHeading(fill: colorFolgen, it: [Folgen]) + $ lim_(x -> infinity) a_n $ + + *Beschränkt:* $exists k in RR$ sodass $abs(a_n) <= k$ + - Beweiße: durch Induktion + - Beweiße: Hat min. ein konvergent Teilefolge + - (Beweiße: Ungleichung $abs(a_n) <= k$) + + *Monoton fallend/steigended* + - Beweise: Induktion + #grid(columns: (1fr, 1fr), + gutter: 1mm, + row-gutter: 2mm, + align(top+center, [*Fallend*]), align(top+center, [*Fallend*]), + [$ a_(n+1) <= a_(n) $], + [$ a_(n+1) >= a_(n) $], + [$ a_(n+1)/a_(n) > 1 $], + [$ a_(n+1)/a_(n) < 1 $], + ) + + *Konvergentz Allgemein* + $ lim_(n -> infinity) a_n = a $ + + $forall epsilon > 0 space exists n_epsilon in NN$ sodass \ + - Konvergent $-> a$: $a_n in [a - epsilon, a + epsilon] $ + - Divergent $-> infinity$: $a_n in [epsilon, infinity) $ + - Divergent $-> infinity$: $a_n in (-infinity, epsilon) $ + + $space forall n > n_epsilon$ + + *Konvergentz Häufungspunkte* + - $a_n -> a <=>$ Alle Teilfolgen $-> a$ + + *Konvergenz Beweißen* + - Monoton UND Beschränkt $=>$ Konvergenz + NICHT Umgekehert + - (Cauchyfolge \ + $forall epsilon > 0 space exists n_epsilon in NN space$ sodass \ + $forall m,n >= n_epsilon : abs(a_n - a_m) < epsilon$ \ + Cauchyfolge $=>$ Konvergenz) + + *Konvergent Grenzwert finden* + - Von Bekannten Ausdrücken aufbauen + - Fixpunk Gleichung: $a = f(a)$ \ + für $a_(n+1) = f(a_n)$ + - Bernoulli-Ungleichung Folgen der Art $(a_n)^n$: \ + $(1 + a)^n >= 1 + n a$ + + #subHeading(fill: colorFolgen, it: [Konvergent Folge Regeln]) + #grid( + columns: (auto, auto), + align: bottom, + gutter: 2mm, + [$ lim_(n->infinity) (a_n + b_n) = a + b $], + grid.cell( + rowspan: 2, + [$ lim_(n->infinity) (a_n / b_n) = a / b $ für ($b != 0$)], + ), + MathAlignLeft($ lim_(n->infinity) (a_n dot b_n) = a dot b $), + MathAlignLeft($ lim_(n->infinity) sqrt(a_n) = sqrt(a) $), + MathAlignLeft($ lim_(n->infinity) abs(a_n) = abs(a) $), + MathAlignLeft($ lim_(n->infinity) c dot a_n = c dot lim_(n->infinity) a_n $), + ) + + #subHeading(fill: colorFolgen, it: [Bekannte Folgen]) + #grid( + columns: (auto, auto, auto), + column-gutter: 4mm, + row-gutter: 2mm, + align: bottom, + MathAlignLeft($ lim_(n->infinity) 1/n = 0 $), + MathAlignLeft($ lim_(n->infinity) q^n = 0 $), + MathAlignLeft($ lim_(n->infinity) q^n = 0 $), + grid.cell(colspan: 2, MathAlignLeft($ lim_(n->infinity) sqrt(n) = + infinity $)), [], + grid.cell(colspan: 2, MathAlignLeft($ lim_(n->infinity) k = k, k in RR $)), [], + grid.cell(colspan: 2, MathAlignLeft($ exp(x) = e^x = lim_(n->infinity) (1 + x/n)^n $)) + ) + + + #subHeading(fill: colorReihen, it: [Reihen]) + + #subHeading(fill: colorReihen, it: [Potenzreihen]) + + #subHeading(fill: colorAbleitung, it: [Funktionen]) + + #subHeading(fill: colorAbleitung, it: [Ableitung]) + + #colbreak() +] \ No newline at end of file diff --git a/src/images/analysis1/beschränkt.png b/src/images/analysis1/beschränkt.png new file mode 100644 index 0000000000000000000000000000000000000000..cc31427dd97dff11f7ba1dccda6c0e49ad4eaebe GIT binary patch literal 23868 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 literal 0 HcmV?d00001