From 9d8f47ca315889d4967d22a4e4354343d86e4294 Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Mon, 19 Jan 2026 20:30:49 +0100 Subject: [PATCH] =?UTF-8?q?Template=20=C3=BCbernommen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Band2/Band2.typ | 65 +++++-- Band2/mein_Template.typ | 388 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 434 insertions(+), 19 deletions(-) create mode 100644 Band2/mein_Template.typ diff --git a/Band2/Band2.typ b/Band2/Band2.typ index fc4bdf0..911286b 100644 --- a/Band2/Band2.typ +++ b/Band2/Band2.typ @@ -1,5 +1,8 @@ -#import "@preview/biz-report:0.3.1": authorwrap, dropcappara, infobox, report +//#import "@preview/biz-report:0.3.1": authorwrap, dropcappara, infobox, report +#import "mein_Template.typ": authorwrap, dropcappara, infobox, report + +#import "@preview/colorful-boxes:1.4.3":* #import "@preview/marge:0.1.0": sidenote @@ -7,23 +10,28 @@ #set par(justify: true) - - -#show text: set text(spacing: 100%) // Erhöht den Abstand zwischen den Wörtern/Zeilen +//#show text: set text(spacing: 100%) // Erhöht den Abstand zwischen den Wörtern/Zeilen // ODER (effektiver): -#show par: set par(leading: 1em) +//#show par: set par(leading: 1em) /*#set page( paper: "iso-b5" )*/ +//#set text(lang: "de", region: "de") + + #show: report.with( title: "Mathematik Lehrprogrammbücher Hochschulstudium 2 - Einführung in die Technik des Integrierens", + publishdate: {}, mycolor: rgb("#000000"), myfont: "DejaVu Sans" ) +#show: set text(lang: "de") +//#show par: set par(leading: 1.5em) + /*#set par( leading: 1.5em, // Zeilenabstand spacing: 2em, // Abstand zwischen Absätzen @@ -80,10 +88,7 @@ font: "TeX Gyre Heros", size: 10pt )*/ -#set par( - justify: true, - leading: 0.52em, -) + = Voraussetzungen für die Durcharbeitung des Programms @@ -113,7 +118,7 @@ Nach dem Durcharbeiten des Programms wird der Lernende #pagebreak() - == Hinweise zur Arbeit mit dem Programm + == Hinweise zur Arbeit mit dem Programm Das vorliegende Programm hat die Aufgabe, Sie in die Technik des Integrierens einzuführen, d.h. Ihnen bei der selbständigen Aneignung gewisser technischer Fertigkeiten im Integrieren gegebener Funktionen zu helfen. Die Arbeitsweise unterscheidet sich vom Studium eines herkömmlichen Lehrbuches. Vielleicht brauchen Sie eine gewisse Zeit, bis Sie mit der neuen Form des Lernens vertraut sind. Wenn Sie jedoch gewissenhaft arbeiten und die Hinweise im Programm genau befolgen, werden Sie bald Freude an dieser Art zu lernen finden. - Das Integrieren kann man nur erlernen, wenn man selbst zahlreiche Aufgaben löst. Aus diesem Grunde nehmen Übungen einen breiten Raum ein, andere Teile sind dafür bewußt knapp gehalten. Sätze werden nur genannt, auf Beweise wird verzichtet. Das Programm ist seinem Charakter nach ein Übungsprogramm. Beachten Sie bitte im einzelnen folgende Hinweise! @@ -144,11 +149,19 @@ In der *Differentialrechnung* wurde folgende Aufgabenstellung betrachtet: #margi ​#h(1cm)_gesucht_ wird die erste Ableitung dieser Funktion $F^{prime}(x)=f(x)$. -*Beispiel* - +#colorbox( + title: "Beispiel", + color: "blue", + radius: 2pt, + width: auto, +)[ #h(1cm)_Gegeben:_ $F(x)=x^3$, #h(1cm)_gesucht:_ $F^{prime}(x)=f(x)=3 x^2$. +] +*Beispiel* +#v(3mm) + Die Aufgabenstellung in der *Integralrechnung* ist die Umkehrung des Grundproblems der Differentialrechnung: @@ -158,14 +171,26 @@ Gegeben ist eine Funktion $f(x)$, gesucht wird eine Funktion $F(x)$ mit der Eige $F^{prime}(x)=f(x) .$ -/*Die Ableitung der gesuchten Funktion soll also gleich der gegebenen Funktion sein. -Beispiel -Gegeben : $f(x)=3 x^2$, -gesucht: $F(x)$ mit der Eigenschaft, daß $F^{\prime}(x)=3 x^2$ ist; also $F(x)=x^3$. - -Definition: Die Funktion $y=f(x)$ sei reell und stetig im Intervall $(a, b)$. Jede dort definierte reelle Funktion $F(x)$, deren erste Ableitung gleich $f(x)$ ist, heißt Stammfunktion von $f(x)$ in diesem Intervall.*/ +Die Ableitung der gesuchten Funktion soll also gleich der gegebenen Funktion sein. +#v(3mm) +*Beispiel* +#v(3mm) +_Gegeben:_ $f(x)=3 x^2$, + +_gesucht:_ $F(x)$ mit der Eigenschaft, daß $F^{prime}(x)=3 x^2$ ist; also $F(x)=x^3$. +#v(3mm) + + +#colorbox( + title: "Definition", + color: "red", + radius: 2pt, + width: auto, +)[ + Die Funktion $y=f(x)$ sei reell und stetig im Intervall $(a, b)$. Jede dort definierte reelle Funktion $F(x)$, deren erste Ableitung gleich $f(x)$ ist, heißt Stammfunktion von $f(x)$ in diesem Intervall. +] @@ -204,4 +229,6 @@ Bart is the rebellious son who often gets into trouble, and Lisa is the intelligent and talented daughter #sidenote[Lisa is known for her saxophone playing and academic achievements.]. Baby Maggie, though silent, has had moments of surprising brilliance -#sidenote[Maggie once shot Mr. Burns in a dramatic plot twist.].*/ \ No newline at end of file +#sidenote[Maggie once shot Mr. Burns in a dramatic plot twist.].*/ + + diff --git a/Band2/mein_Template.typ b/Band2/mein_Template.typ new file mode 100644 index 0000000..df22a76 --- /dev/null +++ b/Band2/mein_Template.typ @@ -0,0 +1,388 @@ +#import "@preview/droplet:0.3.1": dropcap +#import "@preview/fontawesome:0.6.0": * +#import "@preview/wrap-it:0.1.1": wrap-content + +#let __st-theme = state("theme") + +// +// Template for a paragaph with a dropped capital and +// the first sentence in theme color +// + +#let dropcappara( + firstline: none, + body +) = { + context { + let theme = __st-theme.final() + set text(fill: theme.themecolor, weight: "semibold") + dropcap(height: 3, gap: 4pt,)[#firstline.first()][#firstline.slice(2) + #set text(fill: black, weight: "regular") + #body + ] + } +} + +// +// Template for a paragaph with an author picture in a circle bottom right +// +#let authorwrap( + authorimage: none, + authorcaption: none, + body, +) = { + context { + let theme = __st-theme.final() + wrap-content( + box(width: 3cm, height:3.5cm, + figure( + box(clip: true, stroke: 5pt + theme.themecolor, radius: 1.5cm, width: 2.5cm, height: 2.5cm, + authorimage), + caption: authorcaption, + numbering: none)), + body, + align: bottom + right, + ) + } +} + +// +// Template for an information box. Can over-ride the icon shown. +// +#let infobox( + info, + icon: "info-circle", +) = { + context { + let theme = __st-theme.final() + box( + fill: theme.themecolor.lighten(90%), + stroke: 1pt, + radius: 8pt, + width: 100%, + grid( + columns: (1fr, 8fr), + inset: 8pt, + align(horizon+center, fa-icon(icon, size: 2.5em)), + align(horizon + left, info) + ) + ) + } +} + +// +// Main Report Template. Can over-ride title and publication date. +// +#let report( + title: "Title of the Work", + publishdate: "Some Date", + mylogo: none, + myfeatureimage: none, + myvalues: "VALUE1 | VALUE2 | VALUE3 | VALUE4", + mycolor: rgb(166, 0, 120), + myfont: "Arial", + body, +) = { + // Set Theme into context + context { + __st-theme.update(( + themefont: myfont, + themecolor: mycolor, + )) + } + + // Set table to have alterate shaded rows + set table( + align: left, + inset: 10pt, + fill: (_, y) => if calc.even(y) { mycolor.lighten(90%) } + ) + // Set table to have bold header + show table.cell: it => { + if it.y == 0 { + strong(it) + } else { + it + } + } + // Make links blue and underlined + show link: set text(fill: mycolor) + show link: underline + // Cover page + page( + margin: 0cm, + numbering: none, + )[ + // Left colored bar + #place( + left + top, + rect( + width: 2cm, + height: 100%, + fill: mycolor, + ), + ) + + #place( + bottom + left, + move(dx: 1.25cm, dy: -5cm, + rotate(-90deg, origin: bottom + left, + text(size: 28pt, fill: white, spacing: 140%, font: myfont, myvalues)) + ) + ) + + #place( + left + bottom, + polygon( + fill: mycolor.lighten(80%), + stroke: none, + (0pt, 0pt), + (50%, 0pt), + (50%, -8cm), + ) + ) + + #place( + bottom + right, + rect( + width: 50%, + height: 8cm, + fill: mycolor.lighten(80%), + ), + ) + + // Tech Image + #place( + bottom + right, + move( + dx: -7.5cm, dy: -5cm, + box(clip: true, stroke: 5pt + mycolor, radius: 3cm, + width: 6cm, height: 6cm, + myfeatureimage) + ) + ) + + // logo + #place( + bottom + right, + move( + dx: -1cm, dy: -1cm, + mylogo + ) + ) + + // Content + #pad( + left: 2cm, + right: 2cm, + top: 3cm, + bottom: 3cm, + { + set text(font: myfont) + set text(size: 12pt) + + // Header info + v(1fr) + + // Title + set text(size: 28pt, weight: "semibold") + set par(leading: 0.5em, justify: false) + title + linebreak() + set text(size: 14pt, weight: "regular") + publishdate + + v(1.2fr) + }, + ) + ] + + // Table of Contents + page( + header: none, + numbering: none, + )[ + // Style the outline entries + #show outline.entry.where(level: 1): it => { + v(18pt, weak: true) + text()[#strong(it)] + } + + // Style level 2 entries in blue + #show outline.entry.where(level: 2): it => { + v(12pt, weak: true) + text()[#it] + } + + #set text(size: 10pt, font: myfont) + + // Custom title styled like chapter headings + #block( + above: 0pt, + below: 25pt, + { + set text(size: 20pt, weight: "semibold", font: myfont, fill: mycolor) + align(right)[Inhaltsverzeichnis] + v(2em) + }, + ) + + #set par(leading: 1.8em) + + #outline( + title: none, + depth: 2, + indent: auto, + ) + ] + + // Page setup for content + set page( + paper: "a4", + margin: (top: 3.5cm, bottom: 3cm, left: 2.5cm, right: 2.5cm), + header: context { + let page-num = counter(page).get().first() + + // Don't show header on first page + if page-num <= 1 { + return + } + + // Check if current page has a chapter heading + let current-page = here().page() + let headings-on-page = query(heading.where(level: 1)).filter(h => h.location().page() == current-page) + + // Don't show header on pages with chapter headings + if headings-on-page.len() > 0 { + return + } + + // Show header on all other pages + set text(fill: mycolor, size: 10pt, font: myfont) + + let chapter-title = { + let elems = query(heading.where(level: 1)) + if elems.len() > 0 { + let relevant = elems.filter(h => h.location().page() <= current-page) + if relevant.len() > 0 { + upper(relevant.last().body) + } + } + } + + grid( + columns: (1fr, auto), + align: (left, right), + chapter-title, counter(page).display(), + ) + line(length: 100%, stroke: 0.5pt + mycolor) + }, + ) + + // Reset page counter for main content + counter(page).update(1) + + // Text setup + set text(size: 10pt, font: myfont) + + set par( + leading: 1em, + spacing: 1.2em, + justify: true, + first-line-indent: 0pt, + ) + + // Chapter headings (level 1) + show heading.where(level: 1): it => { + pagebreak(weak: true) + set text(size: 18pt, weight: "semibold") + block( + //above: 0pt, + //below: 20pt, + //spacing: 0pt, + { + set par(leading: 0.5em) + if it.numbering != none { + grid( + columns: (auto, 1fr), + column-gutter: 0.6em, + align: (left, left), // Überschrift alles links,war vorher left right + text(fill: mycolor)[#counter(heading).display().], + // Right side: heading text in black + text(fill: mycolor)[#it.body], + ) + } else { + // If no numbering, just right-align the text + align(left, it.body) + } + v(1em) + }, + ) + } + + // Section headings (level 2) + show heading.where(level: 2): it => { + set text(size: 14pt, weight: "semibold") + block( + above: 1.5em, + below: 1em, + { + if it.numbering != none { + counter(heading).display() + [. ] + } + //h(0.6em) + it.body + }, + ) + } + + // Subsection headings (level 3) + show heading.where(level: 3): it => { + set text(size: 16pt, weight: "medium") + block( + above: 1.2em, + below: 0.8em, + { + if it.numbering != none { + counter(heading).display() + [. ] + } + h(0.6em) + it.body + }, + ) + } + + set heading(numbering: "1.1") + + body + + // Back cover page + page( + margin: 0cm, + numbering: none, + header: none, + fill: black, + )[ + #place( + top + left, + rect( + width: 100%, + height: 100%, + fill: mycolor, + ), + ) + + // logo centered in bottom half + #place( + center + horizon, + dy: 25%, + rect( + fill: white, + radius: 0.5cm, + mylogo, + ) + ) + ] +} \ No newline at end of file