From 1aaadbe896ad3e4e04f7e86b7c1f29f9328cd397 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 12 Dec 2024 19:26:10 +0100 Subject: [PATCH 01/10] fixes --- cccbform.cls | 2 +- doku.tex | 129 ++++++++++++++++++++++++++------------------------- 2 files changed, 66 insertions(+), 65 deletions(-) diff --git a/cccbform.cls b/cccbform.cls index c6f56a8..407d516 100644 --- a/cccbform.cls +++ b/cccbform.cls @@ -2,8 +2,8 @@ \ProvidesClass{cccbform}[2024/12/08 In the Beginning, There Was Chaos] \LoadClass{scrartcl} -\RequirePackage{geometry, calc, fontspec, tikz, hyperref, changepage, letltxmacro, csquotes} \RequirePackage[ngerman]{babel} +\RequirePackage{geometry, calc, fontspec, tikz, hyperref, changepage, letltxmacro, csquotes} \MakeOuterQuote{"} \usetikzlibrary{calc} diff --git a/doku.tex b/doku.tex index 6ad3b03..78bc1b2 100644 --- a/doku.tex +++ b/doku.tex @@ -1,18 +1,21 @@ %% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance… %% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.) \documentclass[ngerman,10pt]{scrartcl} -\usepackage{calc,tikz,minted,fontspec,luacode,csquotes,babel,hyperref,microtype} -\MakeOuterQuote{"} +\KOMAoptions{BCOR=1cm,DIV=10} +\usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} \linespread{1.05} % font definition (same as cccbform.cls) +%% FIXME: RawFeature +case x microtype fixes +%% see https://github.com/schlcht/microtype/issues/33 for fix notes +%% see https://fontdrop.info/?darkmode=true for character lookup \setmainfont[ Renderer=HarfBuzz, ItalicFont=Recursive, BoldFont=Recursive, BoldItalicFont=Recursive, UprightFeatures={ - RawFeature={+ss01,+ss02,+ss08,+case}, + RawFeature={+ss01,+ss02,+ss08}, RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} }, BoldFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}}, @@ -25,7 +28,7 @@ BoldFont=Recursive, BoldItalicFont=Recursive, UprightFeatures={ - RawFeature={+ss01,+ss02,+ss08,+case}, + RawFeature={+ss01,+ss02,+ss08}, RawFeature={+axis={MONO=1.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} }, BoldFeatures={RawFeature={+axis={MONO=1.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}}, @@ -38,13 +41,14 @@ BoldFont=Recursive, BoldItalicFont=Recursive, UprightFeatures={ - RawFeature={+ss01,+ss02,+ss08,+case}, + RawFeature={+ss01,+ss02,+ss08}, RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=0,CRSV=1,wght=500}} }, BoldFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=0,CRSV=1,wght=800}}}, BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=800}}}, ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=500}}} ]{Recursive} +\usepackage{microtype} % set up example build directory \directlua{ os.execute "mkdir -p cccbform-examples" } @@ -172,7 +176,8 @@ FOOTER = [[ \sloppy \raggedbottom -\title{\texttt{cccbform} -- Formulare für den CCCB} +\MakeOuterQuote{"} +\title{\texttt{cccbform} – Formulare für den CCCB} \author{Frank Nord} \begin{document} \maketitle @@ -181,11 +186,10 @@ FOOTER = [[ \section{TODO} \begin{itemize} -\item csquotes / MakeOuterQuote in cls -\item mehr \texttt{\textbackslash mintinline} \item Inline-Textfeld \item Grundsätze des aktuellen Designs \item Bug: Höhe Multiline-Textfeld in example +\item \TeX-Intro zum Ende, +build info \end{itemize} \section{Übersicht} @@ -216,7 +220,7 @@ Das meiste sollte auch ohne \TeX-Kenntnisse gehen, es gibt jedoch eine Reihe von Sonderzeichen, die besondere Bedeutung haben. Als eines der wichtigeren beginnt \texcode|%| einen Zeilenkommentar. Bei den meisten Symbolen reicht es, einen Backslash (\texttt{\textbackslash}) davorzusetzen, aber der -Backslash selbst wird z.~B. durch \mintinline{tex}{\textbackslash} und nicht +Backslash selbst wird z.~B. durch \texcode{\textbackslash} und nicht \texcode{\\} erzeugt. Bei Unsicherheit hilft auch \url{http://detexify.kirelabs.org/classify.html}. (Dort kann man Symbole malen und bekommt eine Liste möglicher Übereinstimmungen und wie man @@ -265,23 +269,22 @@ Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, \subsection{Titel} Aktuell gibt es zwei Arten von Titeln. In jedem Fall sollte genau einer und -unmittelbar in der Zeile hinter dem \texttt{\textbackslash begin\{document\}} -verwendet werden. +unmittelbar in der Zeile hinter dem \texcode{\begin{document}} verwendet +werden. -Bei langen Titeln ist ein manueller Zeilenumbruch -(\texttt{\textbackslash\textbackslash}) im Titel ggf. sinnvoll, da der Text -sonst über das Logo bis zum Seitenrand laufen kann. (Das Logo und ggf. die -Adresse werden nachträglich platziert, \TeX\ "sieht" diese also nicht beim -verarbeiten des restlichen Inhalts.) +Bei langen Titeln ist ein manueller Zeilenumbruch (\texcode{\\}) im Titel ggf. +sinnvoll, da der Text sonst über das Logo bis zum Seitenrand laufen kann. (Das +Logo und ggf. die Adresse werden nachträglich platziert, \TeX\ "sieht" diese +also nicht beim verarbeiten des restlichen Inhalts.) -\subsubsection{\texttt{\textbackslash LogoTitle\{Titel\}}} +\subsubsection{\texcode{\LogoTitle{Titel}}} \begin{ShortExample}[4.953cm]{logotitle}{Die einfache Variante -- Titel links, Logo rechts.} \LogoTitle{Beispieltitel} \Text{(...und hier geht's weiter.)} \end{ShortExample} -\subsubsection{\texttt{\textbackslash AddressTitle\{Titel\}}} +\subsubsection{\texcode{\AddressTitle{Titel}}} \begin{ShortExample}[8.865cm]{addresstitle}{Titel und Adresse} \AddressTitle{Beispieltitel} @@ -299,9 +302,9 @@ Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet. Hier gibt es größtenteils Befehle für Formularfelder. Anders als in normalen \TeX-Dokumenten ist es hier jedoch wichtig, für korrekte Abstände \emph{allen} -"losen" Text explizit als \texttt{\textbackslash Text} auszuzeichnen. Der -Befehl kümmert sich um korrekte Abstände, ohne diesen liegen Dinge zu eng -beieinander. Vergleiche: +"losen" Text explizit als \texcode{\Text} auszuzeichnen. Der Befehl kümmert +sich um korrekte Abstände, ohne diesen liegen Dinge zu eng beieinander. +Vergleiche: \begin{ShortExample}{textgood}{Text mit korrekten Abständen} \Text{Dieser Satz kein Verb.} @@ -315,8 +318,8 @@ Dieser Satz kein Verb. Die blöden Ösen! \end{ShortExample} -Auch lange Texte mit mehreren Absätzen können in \texttt{\textbackslash Text} -verwendet werden. +Auch lange Texte mit mehreren Absätzen können in \texcode{\Text} verwendet +werden. \begin{ShortExample}{textlong}{langer Text ist kein Problem} \Text{ @@ -340,10 +343,10 @@ verwendet werden. Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es. -\paragraph{\texttt{\textbackslash TextField}} Im Zweifel ist die einfachste -Variante die richtige. Ein einzeiliges Freitextfeld mit Label und einer für -die meisten Zwecke angemessenen Breite (welche auch z.~B. in mehrspaltigen -Bereichen von allein angepasst wird). +\paragraph{\texcode{\TextField}} Im Zweifel ist die einfachste Variante die +richtige. Ein einzeiliges Freitextfeld mit Label und einer für die meisten +Zwecke angemessenen Breite (welche auch z.~B. in mehrspaltigen Bereichen von +allein angepasst wird). \begin{ShortExample}{textfield}{normales Textfeld} \TextField{Bezeichnung} @@ -355,8 +358,8 @@ Wird die volle Breite benötigt gibt es auch die Variante mit Stern: \TextField*{Bezeichnung} \end{ShortExample} -\paragraph{\texttt{\textbackslash ShortTextField}} Wirkt die Breite hingegen zu -hoch (z.~B. für eine einzelne Zahl), so gibt es auch ein explizit kurzes Textfeld. +\paragraph{\texcode{\ShortTextField}} Wirkt die Breite hingegen zu hoch (z.~B. +für eine einzelne Zahl), so gibt es auch ein explizit kurzes Textfeld. \begin{ShortExample}{shorttextfield}{kurzes Textfeld} \ShortTextField{Stromverbrauch (TWh)} @@ -371,10 +374,10 @@ angegeben werden. Das Formular sieht aber einheitlicher aus, wenn das \ShortTextField[0.15]{Verbrauch (TWh)} \end{ShortExample} -\paragraph{\texttt{\textbackslash MultilineTextField}} Für mehr Text gibt es -auch mehrzeilige Textfelder. Auch wenn die Höhe technisch gesehen optional -ist, sollte sie immer angegeben werden -- ansonsten hat das Feld die -Standard-Höhe von normalen Textfeldern. +\paragraph{\texcode{\MultilineTextField}} Für mehr Text gibt es auch +mehrzeilige Textfelder. Auch wenn die Höhe technisch gesehen optional ist, +sollte sie immer angegeben werden -- ansonsten hat das Feld die Standard-Höhe +von normalen Textfeldern. \begin{ShortExample}{multilinetextfield}{mehrzeiliges Textfeld} %%% FIXME bug in preview (works in doc) @@ -437,8 +440,8 @@ Auch hier kann optional das Label geändert werden. \subsubsection{Checkboxen} \paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- -\texttt{\textbackslash Checkbox\{Label\}} für eine Checkbox (und das Label kann -auch ein kompletter Absatz sein.) +\texcode{\Checkbox{Label}} für eine Checkbox (und das Label kann auch ein +kompletter Absatz sein.) \begin{ShortExample}{checkbox}{Checkboxen} \Checkbox{Ich habe die AGB, @@ -454,8 +457,8 @@ auch ein kompletter Absatz sein.) \end{ShortExample} Für Freitextfelder als "Sonstige:" gibt es -\texttt{\textbackslash CheckboxOther[Breite]\{Label\}}, wieder mit optionaler -Breitenangabe (relativ zur Textbreite) für das Freitextfeld. +\texcode{\CheckboxOther[Breite]{Label}}, wieder mit optionaler Breitenangabe +(relativ zur Textbreite) für das Freitextfeld. \begin{ShortExample}{othercheckbox}{"Sonstiges"} \Text{Meine Lieblingstaste ist:} @@ -480,8 +483,8 @@ Checkboxen benötigt sein. Dafür gibt es die -- nur in Ausnahmefällen zu verwendende -- Inline-Variante, welche sich (fast) gar nicht um die Formatierung kümmert und nur die Box zur Verfügung stellt. (Das Einzige: ein Leerzeichen auf der rechten Seite wird sichergestellt, für gleichmäßige -Abstände sollte also genau \emph{nicht} \texttt{\{\}} oder -\texttt{\textbackslash} angehängt werden.) +Abstände sollte also genau \emph{nicht} \texcode{{}} oder \texcode{\ } +angehängt werden.) \begin{ShortExample}{inlinecheckbox}{Sonderfall -- Inline} \Text{Ich bin \InlineCheckbox groß, @@ -527,10 +530,10 @@ angegeben werden. \end{Indented} \end{ShortExample} -\paragraph{\texttt{\textbackslash RuleSection}} Dient zur Trennung von -Formularabschnitten, die durch verschiedene Personengruppen ausgefüllt werden. -Die Linie geht immer über die komplette Formularbreite und kann z.~B. nicht -innerhalb von mehrspaltigen Bereichen verwendet werden. +\paragraph{\texcode{\RuleSection}} Dient zur Trennung von Formularabschnitten, +die durch verschiedene Personengruppen ausgefüllt werden. Die Linie geht immer +über die komplette Formularbreite und kann z.~B. nicht innerhalb von +mehrspaltigen Bereichen verwendet werden. \begin{ShortExample}{rulesection}{Mehrere klar getrennte Abschnitte} \TextField{Name} @@ -540,8 +543,8 @@ innerhalb von mehrspaltigen Bereichen verwendet werden. \CheckboxOther[0.5]{Abgelehnt, weil:} \end{ShortExample} -\paragraph{\texttt{\textbackslash Rule}} Eine einfache Trennlinie, die an -verschiedenen Stellen zur grafischen Trennung eingesetzt werden kann. +\paragraph{\texcode{\Rule}} Eine einfache Trennlinie, die an verschiedenen +Stellen zur grafischen Trennung eingesetzt werden kann. \begin{ShortExample}{rule}{Mehr Trennlinien} \RuleSection{Bearbeiter} @@ -560,12 +563,12 @@ verschiedenen Stellen zur grafischen Trennung eingesetzt werden kann. \subsubsection{"klassische" Struktur} -In \TeX\ üblich sind \texttt{\textbackslash section}, -\texttt{\textbackslash subsection}, etc.; in Analogie dazu gibt es für ggf. -längere Formulare \texttt{\textbackslash Section} und -\texttt{\textbackslash Subsection}. Für die meisten Formulare ist das jedoch -vermutlich nicht nötig, insbesondere da ggf. per Einrückung via -\texttt{Indented} visuell schneller lesbare Struktur geschaffen werden kann. +In \TeX\ üblich sind \texcode{\section}, \texcode{\subsection}, etc.; in +Analogie dazu gibt es für ggf. längere Formulare \texcode{\Section} und +\texcode{\Subsection}. Für die meisten Formulare ist das jedoch vermutlich +nicht nötig, insbesondere da ggf. per Einrückung via +\texcode|\begin{Indented} ... \end{Indented}| visuell schneller lesbare +Struktur geschaffen werden kann. \begin{ShortExample}{sectioning}{Abschnittsunterteilung} \Section{Allgemeines} @@ -585,9 +588,9 @@ vermutlich nicht nötig, insbesondere da ggf. per Einrückung via Es gibt Unterstützung für 2, 3, und 5 Spalten (ggf. können diese auch ineinander geschachtelt werden.) Die Befehle heißen -- vermutlich wenig -überraschend -- \texttt{\textbackslash TwoColumns}, -\texttt{\textbackslash ThreeColumns}, und \texttt{\textbackslash FiveColumns} -und es sollten entsprechend viele \texttt{\{\}}-Gruppen folgen. +überraschend -- \texcode{\TwoColumns}, \texcode{\ThreeColumns}, und +\texcode{\FiveColumns} und es sollten entsprechend viele \texcode{{}}-Gruppen +folgen. \begin{ShortExample}{multicolumn}{Mehrspaltigkeit} \TwoColumns{ @@ -628,19 +631,17 @@ werden können\dots\ aber "weniger ist mehr" trifft insbesondere auch hier zu. Die meisten sollten also nur bei ernsthaftem Bedarf verwendet werden. Eine akzeptable Formatierungsmethode ist das Hervorheben von Text mit -\texttt{\textbackslash emph}. Üblicherweise typografisch eher verpönt, aber -schon irgendwie zum aktuellen Design passend, können mit -\texttt{\textbackslash ul} auch \emph{einzelne Worte oder sehr kurze Passagen} -unterstrichen werden, dabei ist jedoch zu beachten, dass innerhalb -unterstrichener Bereiche keine Zeilenumbrüche mehr möglich sind. (Der Bereich -wird als eine logische Box verpackt und kann nur noch als Ganzes verschoben -werden.) +\texcode{\emph}. Üblicherweise typografisch eher verpönt, aber schon irgendwie +zum aktuellen Design passend, können mit \texcode{\ul} auch \emph{einzelne +Worte oder sehr kurze Passagen} unterstrichen werden, dabei ist jedoch zu +beachten, dass innerhalb unterstrichener Bereiche keine Zeilenumbrüche mehr +möglich sind. (Der Bereich wird als eine logische Box verpackt und kann nur +noch als Ganzes verschoben werden.) Es gibt zwar eigentlich viele verschiedene Schriftgrößen, es ist jedoch keine gute Idee, alle quer durcheinander zu verwenden. Die Dokumentenklasse kümmert -sich ums meiste, als einzige Akzeptable gibt es \texttt{\textbackslash details} -(als semantischen Namen), welche für untergeordnete Bemerkungen zur Verfügung -steht. +sich ums meiste, als einzige Akzeptable gibt es \texcode{\details} (als +semantischen Namen), welche für untergeordnete Bemerkungen zur Verfügung steht. \begin{ShortExample}{formatting}{Formatierungsbeispiele} \Text{Die Formulare sind \ul{sofort} From 0ab08f7b83094c518e647ab290cf92eedd877095 Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 13 Dec 2024 00:20:59 +0100 Subject: [PATCH 02/10] partial conversion to scrreprt --- doku.tex | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doku.tex b/doku.tex index 78bc1b2..7812313 100644 --- a/doku.tex +++ b/doku.tex @@ -1,7 +1,7 @@ %% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance… %% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.) -\documentclass[ngerman,10pt]{scrartcl} -\KOMAoptions{BCOR=1cm,DIV=10} +\documentclass[ngerman,10pt]{scrreprt} +\KOMAoptions{BCOR=1cm,DIV=10,open=any} \usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} \linespread{1.05} @@ -183,7 +183,7 @@ FOOTER = [[ \maketitle \tableofcontents -\section{TODO} +\chapter{TODO} \begin{itemize} \item Inline-Textfeld @@ -192,7 +192,7 @@ FOOTER = [[ \item \TeX-Intro zum Ende, +build info \end{itemize} -\section{Übersicht} +\chapter{Übersicht} Die Grundstruktur für Formulare ist folgende: @@ -262,11 +262,11 @@ PDF-Formular-Felder erzeugt sondern nur die "falschen" als Bilder erzeugt. Das stellt sicher, dass reine Druckvorlagen (die eh nicht ausgefüllt werden sollen) mit allen Viewern fehlerfrei gedruckt werden können. -\section{Struktur} +\chapter{Befehle} Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, Hervorhebung. -\subsection{Titel} +\section{Titel} Aktuell gibt es zwei Arten von Titeln. In jedem Fall sollte genau einer und unmittelbar in der Zeile hinter dem \texcode{\begin{document}} verwendet @@ -277,14 +277,14 @@ sinnvoll, da der Text sonst über das Logo bis zum Seitenrand laufen kann. (Das Logo und ggf. die Adresse werden nachträglich platziert, \TeX\ "sieht" diese also nicht beim verarbeiten des restlichen Inhalts.) -\subsubsection{\texcode{\LogoTitle{Titel}}} +\subsection{\texcode{\LogoTitle{Titel}}} \begin{ShortExample}[4.953cm]{logotitle}{Die einfache Variante -- Titel links, Logo rechts.} \LogoTitle{Beispieltitel} \Text{(...und hier geht's weiter.)} \end{ShortExample} -\subsubsection{\texcode{\AddressTitle{Titel}}} +\subsection{\texcode{\AddressTitle{Titel}}} \begin{ShortExample}[8.865cm]{addresstitle}{Titel und Adresse} \AddressTitle{Beispieltitel} @@ -298,7 +298,7 @@ Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet. \Text{(...und hier geht's weiter.)} \end{ShortExample} -\subsection{Inhalt} +\section{Inhalt} Hier gibt es größtenteils Befehle für Formularfelder. Anders als in normalen \TeX-Dokumenten ist es hier jedoch wichtig, für korrekte Abstände \emph{allen} @@ -339,7 +339,7 @@ werden. } \end{ShortExample} -\subsubsection{Textfelder} +\subsection{Textfelder} Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es. @@ -437,7 +437,7 @@ Auch hier kann optional das Label geändert werden. \Text{} \end{ShortExample} -\subsubsection{Checkboxen} +\subsection{Checkboxen} \paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- \texcode{\Checkbox{Label}} für eine Checkbox (und das Label kann auch ein @@ -502,11 +502,11 @@ angehängt werden.) \end{Indented} \end{ShortExample} -\subsection{Struktur} +\section{Struktur} Drei Kategorien -- formularspezifisch, "klassische" Abschnitte, und mehrere Spalten. -\subsubsection{formularspezifisch angepasste Formen} +\subsection{formularspezifisch angepasste Formen} \paragraph{\texttt{Indented}} Visuelle Gruppierung durch Einrücken von zusammenhängenden bzw. untergeordneten Abschnitten ist eine sehr gute Option, @@ -561,7 +561,7 @@ Stellen zur grafischen Trennung eingesetzt werden kann. \clearpage -\subsubsection{"klassische" Struktur} +\subsection{"klassische" Struktur} In \TeX\ üblich sind \texcode{\section}, \texcode{\subsection}, etc.; in Analogie dazu gibt es für ggf. längere Formulare \texcode{\Section} und @@ -584,7 +584,7 @@ Struktur geschaffen werden kann. \clearpage -\subsubsection{mehrspaltige Bereiche} +\subsection{mehrspaltige Bereiche} Es gibt Unterstützung für 2, 3, und 5 Spalten (ggf. können diese auch ineinander geschachtelt werden.) Die Befehle heißen -- vermutlich wenig @@ -624,7 +624,7 @@ Bei zu vielen Spalten werden die Abstände unlesbar -- siehe hier die Foo/Bar/Baz-Gruppierung. Auf A4 geht diese Schachtelung aber üblicherweise noch problemlos. -\subsection{Hervorhebung} +\section{Hervorhebung} Es gibt verschiedene in \TeX\ eingebaute Befehle, die ebenfalls verwendet werden können\dots\ aber "weniger ist mehr" trifft insbesondere auch hier zu. From 6475efca6cd3a401c0b56d54e6cc87639bb2264a Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 13 Dec 2024 06:03:07 +0100 Subject: [PATCH 03/10] progress --- doku.tex | 106 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 23 deletions(-) diff --git a/doku.tex b/doku.tex index 7812313..6445d93 100644 --- a/doku.tex +++ b/doku.tex @@ -1,6 +1,8 @@ %% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance… %% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.) \documentclass[ngerman,10pt]{scrreprt} +\setcounter{secnumdepth}{\subsubsectionnumdepth} +\setcounter{tocdepth}{\subsubsectiontocdepth} \KOMAoptions{BCOR=1cm,DIV=10,open=any} \usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} @@ -52,8 +54,7 @@ % set up example build directory \directlua{ os.execute "mkdir -p cccbform-examples" } -\directlua{ os.execute "cp cccbform.cls cccbform-examples/" } -\directlua{ os.execute "cp logo.pdf cccbform-examples/" } +\directlua{ os.execute "cp cccbform.cls logo.pdf cccbform-examples/" } % stuff to add before/after examples to form a full document \begin{luacode*} HEADER1 = [[ @@ -214,7 +215,22 @@ Dieses Dokument gibt eine Übersicht über alles, was hilfreich sein könnte. Allein schon existierende Formulare anzusehen oder zu kopieren und anzupassen sollte jedoch für die meisten Zwecke ausreichen. -\subsection{Für \TeX-Neulinge} +\section{Voraussetzungen} + +Eine aktuelle \TeX-Distribution (auf den meisten Systemen vermutlich \TeX~Live) +inklusive ggf. dem \texttt{luatex}-Unterpaket, zusätzlich \texttt{latexmk} und +-- sofern noch nicht vorhanden -- \texttt{make} sollten auf der Programmseite +ausreichen. + +Die verwendete Schrift heißt "Recursive" und kann auf +\url{https://recursive.design} oder Google Fonts gefunden werden. Wir brauchen +nur die "Variable Font", die entweder \texttt{*\_vf*} oder +\texttt{*-VariableFont\_*} heißt, alle anderen Einzelschriften sind unnötig. +Die Schrift muss an einem Ort installiert werden, wo die +\texttt{luatex}-Font-Suche sie findet -- die meisten Standard-Ordner sollten +funktionieren. + +\section{Für \TeX-Neulinge} Das meiste sollte auch ohne \TeX-Kenntnisse gehen, es gibt jedoch eine Reihe von Sonderzeichen, die besondere Bedeutung haben. Als eines der wichtigeren @@ -226,25 +242,60 @@ Backslash selbst wird z.~B. durch \texcode{\textbackslash} und nicht Symbole malen und bekommt eine Liste möglicher Übereinstimmungen und wie man diese jeweils erzeugt. Das Symbol sollte generell ohne \texttt{\textbackslash usepackage} auskommen und im \texttt{textmode} -funktionieren -- diese Infos stehen ggf. über/unter dem Zeichen.) +funktionieren -- diese Infos stehen ggf. über/unter dem Zeichen.) -Zu Leerzeichen und Zeilenumbrüchen noch folgendes: Einfache Zeilenumbrüche -werden von \TeX{} generell ignoriert bzw. wie ein Leerzeichen zwischen Worten -behandelt. Eine leere Zeile (also (mindestens) zwei aufeinanderfolgende -Zeilenumbrüche) beginnt einen neuen Absatz. (Das geht auch mit -\mintinline{tex}{\par}.) \mintinline{tex}{\\} ist ein "einfacher" +\subsection{Leerzeichen \& Umbrüche} + +Zu Leerzeichen und Zeilenumbrüchen noch folgendes: \emph{Einfache +Zeilenumbrüche} werden von \TeX{} generell ignoriert bzw. wie ein Leerzeichen +zwischen Worten behandelt. Eine \emph{leere Zeile} (also (mindestens) zwei +aufeinanderfolgende Zeilenumbrüche) beginnt einen neuen Absatz. (Das geht auch +mit \texcode{\par}.) \texcode{\\} ist ein "einfacher" Zeilenumbruch in der Ausgabe (ohne den Absatz zu beenden), der hier aber -möglichst vermieden werden sollte. Ein oder mehrere Leerzeichen werden wie ein -einzelnes Leerzeichen gelesen, erlauben aber generell Zeilenumbrüche wenn die -Zeile voll ist. \mintinline{tex}{~} erzeugt geschützte Leerzeichen, die nicht -umbrechen dürfen (und z.~B. bei Abkürzungen (\mintinline{tex}{z.~B.}) oder -Zahlen mit Einheiten verwendet werden sollten.) Nach Befehlen -(\mintinline{tex}{\foo}) werden (beliebig viele) Leerzeichen generell als -Token-Trenner ignoriert und entfernt (\mintinline{tex}{\TeX test} = \TeX test), -ein Verdoppeln des Leerzeichen bringt ebenfalls nichts. Stattdessen kann man -entweder leere Argumente angeben (\mintinline{tex}{\TeX{} test} = \TeX{} test) -oder das Leerzeichen ebenfalls mit einem Backslash schützen -(\mintinline{tex}{\TeX\ test} = \TeX\ test.) +möglichst vermieden werden sollte. + +Ein oder mehrere Leerzeichen werden wie ein einzelnes Leerzeichen gelesen, +erlauben aber generell Zeilenumbrüche wenn die Zeile voll ist. +\texcode{~} erzeugt geschützte Leerzeichen, die nicht umbrechen dürfen +(und z.~B. bei Abkürzungen (\texcode{z.~B.}) oder Zahlen mit Einheiten +verwendet werden sollten.) + +Nach Befehlen (\texcode{\foo}) werden (beliebig viele) Leerzeichen +generell als Token-Trenner ignoriert und entfernt (\texcode{\TeX test} += \TeX test), ein Verdoppeln des Leerzeichen bringt ebenfalls nichts. +Stattdessen kann man entweder leere Argumente angeben +(\texcode{\TeX{} test} = \TeX{} test) oder das Leerzeichen ebenfalls mit einem +Backslash schützen (\texcode{\TeX\ test} = \TeX\ test.) + +\subsection{Befehlsstruktur} + +\TeX\ ist eine sehr flexible Makro-Sprache, aber sowohl \LaTeX\ als auch diese +Klasse geben sich Mühe, das meiste davon zu verstecken und sehr einheitliche +Struktur vorzugeben. Befehlsaufrufe haben generell die Form +\texcode{\Befehl{Arg1}{Arg2}...{ArgN}}, wobei Argumente in geschweiften +Klammern immer angegeben werden müssen. Einige Befehle akzeptieren auch +\emph{optionale Argumente}, welche als Konvention eckige Klammern benutzen -- +diese können entweder angegeben oder komplett weggelassen werden. +Zusätzlich gibt es manchmal auch "gesternte" Varianten, wo ein \texttt{*} +unmittelbar auf den Namen folgt. Diese machen in der Regel nahezu das gleiche +wie die normale Variante ohne Stern. + +\subsection{Erzeugen von PDFs} + +Sind alle Tools installiert, so sollte ein \texttt{make} ausreichen. (Das +Makefile findet automatisch alle neuen \texttt{.tex}-Dateien.) Soll nur ein +einzelnes Dokument gebaut werden, so sollte \texttt{make foo.pdf} zu einem +\texttt{foo.tex} genau dieses eine Dokument bauen. + +\emph{Wirklich} alle Dokumente zu bauen dürfte beim ersten Mal mehrere Minuten +dauern. (Diese Dokumentation hier enthält viele Beispiele, die tatsächlich +eigenständige Dokumente sind. Der Overhead für alle je $2\times$ +\texttt{lualatex} zu starten, mehrere temporäre Dateien zu schreiben, etc. etc. +kann gut 3--10 Minuten fressen.) + +\chapter{Befehle} + +Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, Hervorhebung. Zusätzlich hat die Klasse selbst ein paar Optionen. \section{Klassen-Optionen} @@ -257,14 +308,19 @@ drucken die Elemente mit, was dann wiederum anders komisch aussehen kann\dots \subsection{\texttt{noform}} Wird das Dokument also stattdessen mit -\mintinline{tex}|\documentclass[noform]{cccbform}| begonnen, werden keine +\texcode|\documentclass[noform]{cccbform}| begonnen, werden keine PDF-Formular-Felder erzeugt sondern nur die "falschen" als Bilder erzeugt. Das stellt sicher, dass reine Druckvorlagen (die eh nicht ausgefüllt werden sollen) mit allen Viewern fehlerfrei gedruckt werden können. -\chapter{Befehle} +\subsection{\texttt{example} und \texttt{shortexample}} -Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, Hervorhebung. +Diese sind lediglich für Beispiele -- wie hier in dieser Doku -- gedacht. +\texttt{example} wählt A6 als Format aus, reduziert die Ränder auf fast nichts, +und passt ein paar Befehle an das kleinere Format an. \texttt{shortexample} +macht das gleiche, berechnet aber am Ende die tatsächliche Höhe und verkürzt +das ausgegebene Dokument. Fast alle Beispiele hier sind +\texttt{[shortexample]}s. \section{Titel} @@ -291,7 +347,11 @@ also nicht beim verarbeiten des restlichen Inhalts.) \Text{(...und hier geht's weiter.)} \end{ShortExample} +\filbreak +\subsubsection{\texcode{\AddressTitle*{Titel}}} + Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet. +\nopagebreak[2] \begin{ShortExample}[8.865cm]{addresstitlestar}{Titel, Adresse und Logo} \AddressTitle*{Beispieltitel} From 53a83d838b1632de0458288ade91203a526922d8 Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 15 Dec 2024 00:20:47 +0100 Subject: [PATCH 04/10] noise / torn paper experiments --- .gitignore | 2 + Makefile | 2 +- doku.tex | 143 ++++++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 129 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index b8bc715..5c88e94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ *.aux +*.auxlock *.hd *.log *.out *.toc *.pdf +*.pyg _minted-* cccbform-examples *.fdb_latexmk diff --git a/Makefile b/Makefile index 94f3800..1d17f15 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ clean: distclean: latexmk -C - rm -fr _minted-doku cccbform-examples doku.hd + rm -fr _minted-doku cccbform-examples doku.hd doku.auxlock doku.pyg doku.pdf: doku.tex cccbform.cls logo.pdf latexmk -g -pdflua -lualatex="lualatex --shell-escape %O %S" $< diff --git a/doku.tex b/doku.tex index 6445d93..b8af3a9 100644 --- a/doku.tex +++ b/doku.tex @@ -1,10 +1,12 @@ -%% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance… -%% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.) +%% NB: Dieses Dokument baut beim ersten Mal so 3-10 Minuten je nach +%% Dateisystem-Performance… (Sehr viele Beispiele die jeweils komplette +%% eigenständige Dokumente sind.) Danach sollte es gehen. \documentclass[ngerman,10pt]{scrreprt} \setcounter{secnumdepth}{\subsubsectionnumdepth} \setcounter{tocdepth}{\subsubsectiontocdepth} \KOMAoptions{BCOR=1cm,DIV=10,open=any} -\usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref} +\usepackage{calc,tikz,minted,unicode-math,fontspec,luacode,babel,csquotes,hyperref} +\usetikzlibrary{calc} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} \linespread{1.05} % font definition (same as cccbform.cls) @@ -24,6 +26,19 @@ BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=700}}}, ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=400}}} ]{Recursive} +\setmathfont[ + Renderer=HarfBuzz, + ItalicFont=Recursive, + BoldFont=Recursive, + BoldItalicFont=Recursive, + UprightFeatures={ + RawFeature={+ss01,+ss02,+ss08}, + RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} + }, + BoldFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}}, + BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=700}}}, + ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=400}}} + ]{Recursive} \setmonofont[ Renderer=HarfBuzz, ItalicFont=Recursive, @@ -53,7 +68,7 @@ \usepackage{microtype} % set up example build directory -\directlua{ os.execute "mkdir -p cccbform-examples" } +\directlua{ os.execute "mkdir -p ./cccbform-examples/" } \directlua{ os.execute "cp cccbform.cls logo.pdf cccbform-examples/" } % stuff to add before/after examples to form a full document \begin{luacode*} @@ -68,6 +83,84 @@ FOOTER = [[ ]] \end{luacode*} +\begin{luacode*} +-- PARAM: number of layers, resulting in 2^LAYERS points +local LAYERS = 8 +-- PARAM: per layer, multiply component by (1/(2^K))^weight +-- (1 = default, larger = smoother, smaller = rougher) +local weight = 1.00 + +N = 1 << LAYERS + +function smoothstep( a, b, t ) + local t = t*t*(3-2*t) + return a + (b-a)*t +end + +function REFRESH_POINTS() + POINTS = { } + for i = 1, N do + POINTS[i] = (2*math.random()-1)/N^weight -- + 0.125*math.sin( 2*math.pi*i/N ) + end + + for l = 2, LAYERS-1 do + local K = 1< Date: Thu, 19 Dec 2024 05:29:39 +0100 Subject: [PATCH 05/10] fix multiline fields --- cccbform.cls | 38 +++++++++++++++++++------------------- doku.tex | 14 -------------- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/cccbform.cls b/cccbform.cls index 407d516..3d876c1 100644 --- a/cccbform.cls +++ b/cccbform.cls @@ -259,7 +259,7 @@ % TextField*{label} - a single-line input (starred version uses all available space) \RenewDocumentCommand{\TextField}{s m}{% - \par% + \par\addvspace{1.5\formskip}% \ifMultiColumn% \pgfmathsetmacro{\@tlen}{1.0}% \else% @@ -269,19 +269,19 @@ \fi% \begin{tikzpicture}[baseline] \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); - \node[anchor=west] at (0, 0) { + \node[anchor=base west] at (0, 0) { \full@TextField[\@tlen] }; - \node[anchor=west,rotate=\labelangle] at (-1em,0.4\formfieldheight) { + \node[anchor=base west,rotate=\labelangle] at (-1em,0.6\formfieldheight) { \ttfamily\footnotesize #2\strut }; \end{tikzpicture}% - \par\addvspace{1.5\formskip}% + \par\addvspace{\formskip}% } % ShortTextField[width]{label} - a single-line input with reduced width \NewDocumentCommand{\ShortTextField}{o m}{% - \par% + \par\addvspace{1.5\formskip}% \IfValueTF{#1}{\pgfmathsetmacro{\@tlen}{#1}}{% \ifMultiColumn% \pgfmathsetmacro{\@tlen}{\normalfieldwidth}% @@ -291,10 +291,10 @@ }% \begin{tikzpicture}[baseline] \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); - \node[anchor=west] at (0,0) { + \node[anchor=base west] at (0,0) { \full@TextField[\@tlen] }; - \node[anchor=west,rotate=\labelangle] at (-1em,0.4\formfieldheight) { + \node[anchor=base west,rotate=\labelangle] at (-1em,0.6\formfieldheight) { \ttfamily\footnotesize #2\strut }; \end{tikzpicture}% @@ -302,8 +302,8 @@ } % MultilineTextField*[height]{label} - a multi-line input, starred version uses all available width -\NewDocumentCommand{\MultilineTextField}{s O{} m}{% - \par\addvspace{\formskip}% +\NewDocumentCommand{\MultilineTextField}{s O{\formfieldheight} m}{% + \par\addvspace{1.5\formskip}% \ifMultiColumn% \pgfmathsetmacro{\@tlen}{1.0}% \else% @@ -312,11 +312,11 @@ {\pgfmathsetmacro{\@tlen}{\normalfieldwidth}}% \fi% \begin{tikzpicture}[baseline] - \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); - \node[anchor=west] at (0,0) { + \useasboundingbox (0,0) rectangle (\@tlen\textwidth, #2); + \node[anchor=base west] at (0,0) { \full@MultilineTextField<#2>[\@tlen] }; - \node[anchor=west,rotate=\labelangle] at (-1em,0.4\formfieldheight) { + \node[anchor=base west,rotate=\labelangle] at (-1em,#2 - 0.4\formfieldheight) { \ttfamily\footnotesize #3\strut }; \end{tikzpicture} @@ -325,7 +325,7 @@ % Signature[label] - a field not fillable on the computer, big enough for a signature \NewDocumentCommand{\Signature}{O{Datum, Unterschrift}}{% - \par\addvspace{\formskip}% + \par\addvspace{2\formskip}% \ifMultiColumn% \pgfmathsetmacro{\@tlen}{\normalfieldwidth}% \else% @@ -333,26 +333,26 @@ \fi% \begin{tikzpicture}[baseline] \useasboundingbox (0,0) rectangle (\@tlen\textwidth,1.0cm); - \node[anchor=west] at (0,0) { + \node[anchor=base west] at (0,0) { \fake@MultilineTextField<1.0cm>[\@tlen] }; - \node[anchor=north west,rotate=\labelangle] at (-1em,1cm -0.4\formfieldheight) { + \node[anchor=base west,rotate=\labelangle] at (-1em,1cm - 0.4\formfieldheight) { \ttfamily\footnotesize #1\strut }; \end{tikzpicture} - \par\addvspace{2\formskip}% + \par\addvspace{\formskip}% } % Notes[label] - a slightly taller fake field that fills the whole width \NewDocumentCommand{\Notes}{O{Vermerke}}{% - \par\addvspace{\formskip}% + \par\addvspace{1.5\formskip}% \pgfmathsetmacro{\@tlen}{1.0} \begin{tikzpicture}[baseline] \useasboundingbox (0,0) rectangle (\@tlen\textwidth,1.5cm); - \node[anchor=west] at (0,0) { + \node[anchor=base west] at (0,0) { \fake@MultilineTextField<1.5cm>[\@tlen] }; - \node[anchor=north west,rotate=\labelangle] at (-1em,1.5cm -0.9\formfieldheight) { + \node[anchor=base west,rotate=\labelangle] at (-1em,1.5cm - 0.4\formfieldheight) { \ttfamily\footnotesize #1\strut }; \end{tikzpicture} diff --git a/doku.tex b/doku.tex index b8af3a9..1e97340 100644 --- a/doku.tex +++ b/doku.tex @@ -297,7 +297,6 @@ end \begin{itemize} \item Inline-Textfeld \item Grundsätze des aktuellen Designs -\item Bug: Höhe Multiline-Textfeld in example \item \TeX-Intro zum Ende, +build info \end{itemize} @@ -549,26 +548,17 @@ sollte sie immer angegeben werden -- ansonsten hat das Feld die Standard-Höhe von normalen Textfeldern. \begin{ShortExample}{multilinetextfield}{mehrzeiliges Textfeld} -%%% FIXME bug in preview (works in doc) -\Text{} \MultilineTextField[2cm]{Kringel} -\Text{} \end{ShortExample} \begin{ShortExample}{multilinetextfieldbad}{einzeiliges mehrzeiliges Textfeld} -%%% FIXME bug in preview (works in doc) -\Text{} \MultilineTextField{Kringel} -\Text{} \end{ShortExample} Auch hier gibt es wieder die Variante mit Stern für volle Breite: \begin{ShortExample}{multilinetextfieldstar}{breites mehrzeiliges Textfeld} -%%% FIXME bug in preview (works in doc) -\Text{} \MultilineTextField*[2cm]{Kringel} -\Text{} \end{ShortExample} \paragraph{Spezialfälle} Unterschriften sollen üblicherweise händisch gesetzt @@ -593,17 +583,13 @@ Das Label kann optional geändert werden. Ebenfalls gibt es ein etwas größeres Feld für Notizen oder Vermerke. \begin{ShortExample}{notes}{großes Feld} -%%% FIXME bug in preview (works in doc) \Notes -\Text{} \end{ShortExample} Auch hier kann optional das Label geändert werden. \begin{ShortExample}{notesopt}{großes Feld} -%%% FIXME bug in preview (works in doc) \Notes[Stirnabdruck] -\Text{} \end{ShortExample} \subsection{Checkboxen} From 2f71b5589de37112825f5682ba94cef238bbb07d Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 19 Dec 2024 06:52:02 +0100 Subject: [PATCH 06/10] Inline-Textfeld --- cccbform.cls | 23 +++++++++++++++++ doku.tex | 70 +++++++++++++++++++++++++++++++++++++++------------- testdoc.tex | 15 +++++++++++ 3 files changed, 91 insertions(+), 17 deletions(-) create mode 100644 testdoc.tex diff --git a/cccbform.cls b/cccbform.cls index 3d876c1..3dc225e 100644 --- a/cccbform.cls +++ b/cccbform.cls @@ -359,6 +359,26 @@ \par\addvspace{\formskip}% } +% InlineTextField[width]{label} +\NewDocumentCommand{\InlineTextField}{o m}{% + \IfValueTF{#1}% + {\pgfmathsetmacro{\@tlen}{#1}}% + {\ifMultiColumn% + \pgfmathsetmacro{\@tlen}{\normalfieldwidth}% + \else% + \pgfmathsetmacro{\@tlen}{\shortfieldwidth}% + \fi}% + \begin{tikzpicture}[baseline] + \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); + \node[anchor=base west] at (0,0) { \full@TextField[\@tlen] }; + \IfBlankTF{#2}{}{ + \node[anchor=base west, rotate=\labelangle] at (-1em,0.6\formfieldheight) { + \ttfamily\footnotesize #2\strut + }; + } + \end{tikzpicture} +} + % Checkbox{label} - a checkbox; label can be long and will linebreak reasonably pretty \NewDocumentCommand{\Checkbox}{m}{% \par% @@ -512,6 +532,9 @@ }% } +% ensure line height is enough to fit a form field +\NewDocumentCommand{\formstrut}{}{\rule{0pt}{\formfieldheight}\strut} + % % % common title patterns % put the logo in the top right corner diff --git a/doku.tex b/doku.tex index 1e97340..e92e4d3 100644 --- a/doku.tex +++ b/doku.tex @@ -5,10 +5,10 @@ \setcounter{secnumdepth}{\subsubsectionnumdepth} \setcounter{tocdepth}{\subsubsectiontocdepth} \KOMAoptions{BCOR=1cm,DIV=10,open=any} -\usepackage{calc,tikz,minted,unicode-math,fontspec,luacode,babel,csquotes,hyperref} +\usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref} \usetikzlibrary{calc} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} -\linespread{1.05} +\linespread{1.10} % font definition (same as cccbform.cls) %% FIXME: RawFeature +case x microtype fixes %% see https://github.com/schlcht/microtype/issues/33 for fix notes @@ -26,19 +26,6 @@ BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=700}}}, ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=400}}} ]{Recursive} -\setmathfont[ - Renderer=HarfBuzz, - ItalicFont=Recursive, - BoldFont=Recursive, - BoldItalicFont=Recursive, - UprightFeatures={ - RawFeature={+ss01,+ss02,+ss08}, - RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} - }, - BoldFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}}, - BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=700}}}, - ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=-15,CRSV=1,wght=400}}} - ]{Recursive} \setmonofont[ Renderer=HarfBuzz, ItalicFont=Recursive, @@ -85,7 +72,7 @@ FOOTER = [[ \begin{luacode*} -- PARAM: number of layers, resulting in 2^LAYERS points -local LAYERS = 8 +local LAYERS = 7 -- PARAM: per layer, multiply component by (1/(2^K))^weight -- (1 = default, larger = smoother, smaller = rougher) local weight = 1.00 @@ -295,7 +282,6 @@ end \chapter{TODO} \begin{itemize} -\item Inline-Textfeld \item Grundsätze des aktuellen Designs \item \TeX-Intro zum Ende, +build info \end{itemize} @@ -592,6 +578,56 @@ Auch hier kann optional das Label geändert werden. \Notes[Stirnabdruck] \end{ShortExample} +Letztlich gibt es für Sonderfälle noch Inline-Textfelder. + +\begin{ShortExample}{inlinetextfield}{Sonderfall -- Inline} +\Text{Zur Fehlersuche wurden etwa +\InlineTextField[0.1]{} Stunden aufgewendet, +\InlineTextField[0.1]{} Gramm Koffein sowie +\InlineTextField{} konsumiert. +\formstrut % normierte Zeilenhöhe forcieren +} +\end{ShortExample} + +Hierbei ist zu beachten, dass Textfelder höher sind als der umliegende Text. +Ohne das \texcode{\formstrut} würde die letzte Zeile \emph{deutlich} dichter an +der darüberliegenden kleben, was -- insbesondere wenn es stattdessen eine Zeile in der Mitte betrifft -- komisch aussehen würde. Das muss also ggf. in ≈jede Zeile eingestreut werden. Vergleiche auch nochmal: + +\begin{ShortExample}{formstrutbad}{Wackeliger Text} +\Text{Zeile mit Feld \InlineTextField{} und +dann ganz viel Text, so dass dazwischen +mehrere Zeilen ohne Textfelder entstehen, +ein weiteres Feld \InlineTextField{}, mehr +Text der wieder etwas dichter beieinander +liegt, und dann irgendwann abschließend +nochmal eine Zeile mit noch einem Feld +\InlineTextField{} um den Unterschied zu +sehen. +} +\end{ShortExample} + +\begin{ShortExample}{formstrutgood}{Gleichmäßiger Text} +\Text{Zeile mit Feld \InlineTextField{} und +dann ganz viel Text, so dass dazwischen +\formstrut +mehrere Zeilen ohne Textfelder entstehen, +ein weiteres Feld \InlineTextField{}, mehr +Text der wieder etwas dichter beieinander +\formstrut +liegt, und dann irgendwann abschließend +\formstrut +nochmal eine Zeile mit noch einem Feld +\InlineTextField{} um den Unterschied zu +sehen.\formstrut +} +\end{ShortExample} + +Es wird hoffentlich deutlich, dass beide Varianten nicht ideal sind und +Inline-Felder nur in Ausnahmefällen die richtige Wahl sind. Dabei sollte aber +nochmal darauf hingewiesen werden, dass dieses Problem bei nur einer Zeile +Text nicht relevant ist, da dann die Abstände um die Block-Elemente herum +sowieso für ein einheitliches Aussehen sorgen. + \subsection{Checkboxen} \paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- diff --git a/testdoc.tex b/testdoc.tex new file mode 100644 index 0000000..da8a58b --- /dev/null +++ b/testdoc.tex @@ -0,0 +1,15 @@ +\documentclass[]{cccbform} +\begin{document} +\LogoTitle{Test-Dokument} +\TextField{Feld 1} +\TextField{Feld 2} +\ShortTextField{Feld 3} +\TextField{Feld 4} +\begin{Indented} + \TextField{Feld 5} + \TextField{Feld 6} +\end{Indented} +\TextField{Feld 7} +\Text{Abcd \InlineTextField{} efgh ijkl \InlineTextField{Feld 9} mnop qrst.} +\TextField{Feld 10} +\end{document} From 6ad266b3c675cacff07c045fcdf0e9a13222c078 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 19 Dec 2024 16:48:15 +0100 Subject: [PATCH 07/10] fold markers --- doku.tex | 83 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/doku.tex b/doku.tex index e92e4d3..1e04b32 100644 --- a/doku.tex +++ b/doku.tex @@ -1,6 +1,7 @@ %% NB: Dieses Dokument baut beim ersten Mal so 3-10 Minuten je nach %% Dateisystem-Performance… (Sehr viele Beispiele die jeweils komplette %% eigenständige Dokumente sind.) Danach sollte es gehen. +% header <<< \documentclass[ngerman,10pt]{scrreprt} \setcounter{secnumdepth}{\subsubsectionnumdepth} \setcounter{tocdepth}{\subsubsectiontocdepth} @@ -13,6 +14,7 @@ %% FIXME: RawFeature +case x microtype fixes %% see https://github.com/schlcht/microtype/issues/33 for fix notes %% see https://fontdrop.info/?darkmode=true for character lookup +% fonts <<< \setmainfont[ Renderer=HarfBuzz, ItalicFont=Recursive, @@ -52,8 +54,11 @@ BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=800}}}, ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=500}}} ]{Recursive} +% >>> \usepackage{microtype} +% embedded examples <<< + % set up example build directory \directlua{ os.execute "mkdir -p ./cccbform-examples/" } \directlua{ os.execute "cp cccbform.cls logo.pdf cccbform-examples/" } @@ -70,6 +75,7 @@ FOOTER = [[ ]] \end{luacode*} +% crinkly paper tears <<< \begin{luacode*} -- PARAM: number of layers, resulting in 2^LAYERS points local LAYERS = 7 @@ -145,8 +151,8 @@ function plotPoints( x1, x2, y1, y2, smooth_top ) buf = table.concat( buf, " -- " ) tex.print( buf ) end - \end{luacode*} +% >>> \begin{luacode*} function makeVerb( envname ) @@ -241,6 +247,8 @@ end \addvspace{4ex} } +% XXX now unused… keep while things are in flux and just delete if we don't add +% complete examples \NewDocumentEnvironment{StandaloneExample}{m}{ \VerbatimEnvironment% \begin{VerbatimOut}{cccbform-examples/#1.tex}}% @@ -265,6 +273,8 @@ end \end{tikzpicture} } +% >>> + \setminted{autogobble,bgcolor=black!10,frame=lines,framesep=1ex,tabsize=4,fontsize=\small} \setmintedinline{frame=none,framesep=0pt,fontsize=\small} \newmintinline[texcode]{tex}{} @@ -278,15 +288,18 @@ end \begin{document} \maketitle \tableofcontents +% >>> -\chapter{TODO} +\chapter{TODO} % <<< \begin{itemize} \item Grundsätze des aktuellen Designs \item \TeX-Intro zum Ende, +build info \end{itemize} -\chapter{Übersicht} +% >>> + +\chapter{Übersicht} % <<< Die Grundstruktur für Formulare ist folgende: @@ -364,14 +377,16 @@ Backslash schützen (\texcode{\TeX\ test} = \TeX\ test.) \TeX\ ist eine sehr flexible Makro-Sprache, aber sowohl \LaTeX\ als auch diese Klasse geben sich Mühe, das meiste davon zu verstecken und sehr einheitliche -Struktur vorzugeben. Befehlsaufrufe haben generell die Form +Struktur vorzugeben. Befehlsaufrufe haben hier generell die Form \texcode{\Befehl{Arg1}{Arg2}...{ArgN}}, wobei Argumente in geschweiften Klammern immer angegeben werden müssen. Einige Befehle akzeptieren auch \emph{optionale Argumente}, welche als Konvention eckige Klammern benutzen -- -diese können entweder angegeben oder komplett weggelassen werden. +diese können entweder angegeben oder komplett weggelassen werden +(\texcode{\Foo{Baz}} oder \texcode{\Foo[Bar]{Baz}}.) Zusätzlich gibt es manchmal auch "gesternte" Varianten, wo ein \texttt{*} -unmittelbar auf den Namen folgt. Diese machen in der Regel nahezu das gleiche -wie die normale Variante ohne Stern. +unmittelbar auf den Namen folgt (\texcode{\Fnord{23}} oder +\texcode{\Fnord*{23}}.) Konzeptuell ist das ein optionales +true/false-Argument, nur mit anderer Schreibweise. \subsection{Erzeugen von PDFs} @@ -380,18 +395,23 @@ Makefile findet automatisch alle neuen \texttt{.tex}-Dateien.) Soll nur ein einzelnes Dokument gebaut werden, so sollte \texttt{make foo.pdf} zu einem \texttt{foo.tex} genau dieses eine Dokument bauen. -\emph{Wirklich} alle Dokumente zu bauen dürfte beim ersten Mal mehrere Minuten +Wirklich \emph{alle} Dokumente zu bauen dürfte beim ersten Mal mehrere Minuten dauern. (Diese Dokumentation hier enthält viele Beispiele, die tatsächlich eigenständige Dokumente sind. Der Overhead für alle je 2× \texttt{lualatex} zu starten, mehrere temporäre Dateien zu schreiben, etc. etc. kann gut 3--10 -Minuten fressen.) +Minuten fressen.) Danach erkennen \texttt{make} bzw. \texttt{latexmk}, dass +sich in den meisten Dateien nichts verändert hat und es geht bei zukünftigen +Durchläufen deutlich schneller (solange nicht die Klasse verändert wird -- was +wieder alles neu bauen würde -- wenige Sekunden bis ca. eine Minute.) -\chapter{Befehle} +% >>> + +\chapter{Befehle} % <<< Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, Hervorhebung. Zusätzlich hat die Klasse selbst ein paar Optionen. -\section{Klassen-Optionen} +\section{Klassen-Optionen} % <<< PDF-Formulare haben eine ganze Reihe von Problemen. Das wichtigste ist, dass viele Viewer PDF-Formulare nicht mitdrucken. Die Elemente wie sie hier erzeugt @@ -416,7 +436,9 @@ macht das gleiche, berechnet aber am Ende die tatsächliche Höhe und verkürzt das ausgegebene Dokument. Fast alle Beispiele hier sind \texttt{[shortexample]}s. -\section{Titel} +% >>> + +\section{Titel} % <<< Aktuell gibt es zwei Arten von Titeln. In jedem Fall sollte genau einer und unmittelbar in der Zeile hinter dem \texcode{\begin{document}} verwendet @@ -452,7 +474,9 @@ Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet. \Text{(...und hier geht's weiter.)} \end{ShortExample} -\section{Inhalt} +% >>> + +\section{Inhalt} % <<< Hier gibt es größtenteils Befehle für Formularfelder. Anders als in normalen \TeX-Dokumenten ist es hier jedoch wichtig, für korrekte Abstände \emph{allen} @@ -493,7 +517,7 @@ werden. } \end{ShortExample} -\subsection{Textfelder} +\subsection{Textfelder} % <<< Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es. @@ -628,7 +652,9 @@ nochmal darauf hingewiesen werden, dass dieses Problem bei nur einer Zeile Text nicht relevant ist, da dann die Abstände um die Block-Elemente herum sowieso für ein einheitliches Aussehen sorgen. -\subsection{Checkboxen} +% >>> + +\subsection{Checkboxen} % <<< \paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- \texcode{\Checkbox{Label}} für eine Checkbox (und das Label kann auch ein @@ -693,11 +719,15 @@ angehängt werden.) \end{Indented} \end{ShortExample} -\section{Struktur} +% >>> + +% >>> + +\section{Struktur} % <<< Drei Kategorien -- formularspezifisch, "klassische" Abschnitte, und mehrere Spalten. -\subsection{formularspezifisch angepasste Formen} +\subsection{formularspezifisch angepasste Formen} % <<< \paragraph{\texttt{Indented}} Visuelle Gruppierung durch Einrücken von zusammenhängenden bzw. untergeordneten Abschnitten ist eine sehr gute Option, @@ -750,9 +780,9 @@ Stellen zur grafischen Trennung eingesetzt werden kann. \CheckboxOther[0.5]{Abgelehnt, weil:} \end{ShortExample} -\clearpage +% >>> -\subsection{"klassische" Struktur} +\subsection{"klassische" Struktur} % <<< In \TeX\ üblich sind \texcode{\section}, \texcode{\subsection}, etc.; in Analogie dazu gibt es für ggf. längere Formulare \texcode{\Section} und @@ -773,9 +803,9 @@ Struktur geschaffen werden kann. \Signature \end{ShortExample} -\clearpage +% >>> -\subsection{mehrspaltige Bereiche} +\subsection{mehrspaltige Bereiche} % <<< Es gibt Unterstützung für 2, 3, und 5 Spalten (ggf. können diese auch ineinander geschachtelt werden.) Die Befehle heißen -- vermutlich wenig @@ -815,7 +845,11 @@ Bei zu vielen Spalten werden die Abstände unlesbar -- siehe hier die Foo/Bar/Baz-Gruppierung. Auf A4 geht diese Schachtelung aber üblicherweise noch problemlos. -\section{Hervorhebung} +% >>> + +% >>> + +\section{Hervorhebung} % <<< Es gibt verschiedene in \TeX\ eingebaute Befehle, die ebenfalls verwendet werden können\dots\ aber "weniger ist mehr" trifft insbesondere auch hier zu. @@ -854,5 +888,10 @@ oder -12!) zum Kopieren per Fax zu verwenden.}} \end{ShortExample} +% >>> + +% >>> + \end{document} +% vim: set fdm=marker fmr=<<<,>>> : From b0dd3ad1efe4499bce215d8aacc8302b312730f7 Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 20 Dec 2024 01:08:04 +0100 Subject: [PATCH 08/10] exakte Pakete angeben --- doku.tex | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/doku.tex b/doku.tex index 1e04b32..2476755 100644 --- a/doku.tex +++ b/doku.tex @@ -328,13 +328,24 @@ inklusive ggf. dem \texttt{luatex}-Unterpaket, zusätzlich \texttt{latexmk} und -- sofern noch nicht vorhanden -- \texttt{make} sollten auf der Programmseite ausreichen. +Auf Debian heißen die konkreten Pakete:\\[1ex] +\null\hfill\begin{minipage}[t]{0.75\textwidth} +\texttt{make} \texttt{texlive} \texttt{texlive-pictures} +\texttt{texlive-latex-extra} \texttt{texlive-luatex} +\texttt{texlive-lang-german} \texttt{latexmk} +\end{minipage}\hfill\null\\[1ex] +auf anderen Systemen heißen sie hoffentlich ähnlich\dots{} ansonsten: viel Spaß +beim Suchen! + Die verwendete Schrift heißt "Recursive" und kann auf \url{https://recursive.design} oder Google Fonts gefunden werden. Wir brauchen -nur die "Variable Font", die entweder \texttt{*\_vf*} oder -\texttt{*-VariableFont\_*} heißt, alle anderen Einzelschriften sind unnötig. +nur die "Variable Font", die entweder \texttt{*\_VF\_*} +oder \texttt{*-VariableFont\_*} heißt, alle anderen Einzelschriften sind +unnötig.\footnote{Direktlink auf GitHub (ohne Gewähr): +\url{https://github.com/arrowtype/recursive/raw/refs/heads/main/fonts/ArrowType-Recursive-1.085/Recursive_Desktop/Recursive_VF_1.085.ttf}} Die Schrift muss an einem Ort installiert werden, wo die \texttt{luatex}-Font-Suche sie findet -- die meisten Standard-Ordner sollten -funktionieren. +funktionieren, z.~B. auch \texttt{\$\{HOME\}/.local/share/fonts}. \section{Für \TeX-Neulinge} From 3aa389f68059c6cee5fc3fa7ed404de81ccb59d3 Mon Sep 17 00:00:00 2001 From: nobody Date: Wed, 8 Jan 2025 00:14:18 +0100 Subject: [PATCH 09/10] some rewriting --- doku.tex | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/doku.tex b/doku.tex index 2476755..c717af8 100644 --- a/doku.tex +++ b/doku.tex @@ -11,7 +11,7 @@ \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} \linespread{1.10} % font definition (same as cccbform.cls) -%% FIXME: RawFeature +case x microtype fixes +%% FIXME: [RawFeature +case] x [microtype] fixes %% see https://github.com/schlcht/microtype/issues/33 for fix notes %% see https://fontdrop.info/?darkmode=true for character lookup % fonts <<< @@ -276,7 +276,8 @@ end % >>> \setminted{autogobble,bgcolor=black!10,frame=lines,framesep=1ex,tabsize=4,fontsize=\small} -\setmintedinline{frame=none,framesep=0pt,fontsize=\small} +% bgcolorvphantom is too new +\setmintedinline{frame=none,framesep=0pt,fontsize=\footnotesize} \newmintinline[texcode]{tex}{} \sloppy @@ -321,7 +322,7 @@ Dieses Dokument gibt eine Übersicht über alles, was hilfreich sein könnte. Allein schon existierende Formulare anzusehen oder zu kopieren und anzupassen sollte jedoch für die meisten Zwecke ausreichen. -\section{Voraussetzungen} +\section{Voraussetzungen} % <<< Eine aktuelle \TeX-Distribution (auf den meisten Systemen vermutlich \TeX~Live) inklusive ggf. dem \texttt{luatex}-Unterpaket, zusätzlich \texttt{latexmk} und @@ -347,7 +348,9 @@ Die Schrift muss an einem Ort installiert werden, wo die \texttt{luatex}-Font-Suche sie findet -- die meisten Standard-Ordner sollten funktionieren, z.~B. auch \texttt{\$\{HOME\}/.local/share/fonts}. -\section{Für \TeX-Neulinge} +% >>> + +\section{Für \TeX-Neulinge} % <<< Das meiste sollte auch ohne \TeX-Kenntnisse gehen, es gibt jedoch eine Reihe von Sonderzeichen, die besondere Bedeutung haben. Als eines der wichtigeren @@ -361,15 +364,15 @@ diese jeweils erzeugt. Das Symbol sollte generell ohne \texttt{\textbackslash usepackage} auskommen und im \texttt{textmode} funktionieren -- diese Infos stehen ggf. über/unter dem Zeichen.) -\subsection{Leerzeichen \& Umbrüche} +\subsection{Leerzeichen \& Umbrüche} % <<< Zu Leerzeichen und Zeilenumbrüchen noch folgendes: \emph{Einfache -Zeilenumbrüche} werden von \TeX{} generell ignoriert bzw. wie ein Leerzeichen -zwischen Worten behandelt. Eine \emph{leere Zeile} (also (mindestens) zwei -aufeinanderfolgende Zeilenumbrüche) beginnt einen neuen Absatz. (Das geht auch -mit \texcode{\par}.) \texcode{\\} ist ein "einfacher" -Zeilenumbruch in der Ausgabe (ohne den Absatz zu beenden), der hier aber -möglichst vermieden werden sollte. +Zeilenumbrüche} werden wie in Markdown und anderen Formaten als einfaches +Leerzeichen interpretiert und \emph{nicht} als Umbruch. Separate Absätze +werden erzeugt, wenn mindestens zwei Zeilenumbrüche aufeinander folgen (d.~h. +auch im Text visuell eine Lücke entsteht), alternativ auch mit dem +\texcode{\par}-Makro. Einen Zeilenumbruch innerhalb eines Absatzes erzeugt man +mit \texcode{\\}, das ist aber meistens das falsche Werkzeug. Ein oder mehrere Leerzeichen werden wie ein einzelnes Leerzeichen gelesen, erlauben aber generell Zeilenumbrüche wenn die Zeile voll ist. @@ -384,7 +387,9 @@ Stattdessen kann man entweder leere Argumente angeben (\texcode{\TeX{} test} = \TeX{} test) oder das Leerzeichen ebenfalls mit einem Backslash schützen (\texcode{\TeX\ test} = \TeX\ test.) -\subsection{Befehlsstruktur} +% >>> + +\subsection{Befehlsstruktur} % <<< \TeX\ ist eine sehr flexible Makro-Sprache, aber sowohl \LaTeX\ als auch diese Klasse geben sich Mühe, das meiste davon zu verstecken und sehr einheitliche @@ -399,7 +404,9 @@ unmittelbar auf den Namen folgt (\texcode{\Fnord{23}} oder \texcode{\Fnord*{23}}.) Konzeptuell ist das ein optionales true/false-Argument, nur mit anderer Schreibweise. -\subsection{Erzeugen von PDFs} +% >>> + +\subsection{Erzeugen von PDFs} % <<< Sind alle Tools installiert, so sollte ein \texttt{make} ausreichen. (Das Makefile findet automatisch alle neuen \texttt{.tex}-Dateien.) Soll nur ein @@ -417,6 +424,10 @@ wieder alles neu bauen würde -- wenige Sekunden bis ca. eine Minute.) % >>> +% >>> + +% >>> + \chapter{Befehle} % <<< Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, From 9c31d0df92bad9f7762e85332c10444afb34d01a Mon Sep 17 00:00:00 2001 From: nobody Date: Tue, 14 Jan 2025 23:56:10 +0100 Subject: [PATCH 10/10] mehr doku --- doku.tex | 169 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 120 insertions(+), 49 deletions(-) diff --git a/doku.tex b/doku.tex index c717af8..808b022 100644 --- a/doku.tex +++ b/doku.tex @@ -54,6 +54,7 @@ BoldItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=800}}}, ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=500}}} ]{Recursive} +\setkomafont{disposition}{\titlefont} % >>> \usepackage{microtype} @@ -291,15 +292,6 @@ end \tableofcontents % >>> -\chapter{TODO} % <<< - -\begin{itemize} -\item Grundsätze des aktuellen Designs -\item \TeX-Intro zum Ende, +build info -\end{itemize} - -% >>> - \chapter{Übersicht} % <<< Die Grundstruktur für Formulare ist folgende: @@ -420,7 +412,8 @@ starten, mehrere temporäre Dateien zu schreiben, etc. etc. kann gut 3--10 Minuten fressen.) Danach erkennen \texttt{make} bzw. \texttt{latexmk}, dass sich in den meisten Dateien nichts verändert hat und es geht bei zukünftigen Durchläufen deutlich schneller (solange nicht die Klasse verändert wird -- was -wieder alles neu bauen würde -- wenige Sekunden bis ca. eine Minute.) +wieder alles neu bauen würde -- braucht das wenige Sekunden bis ca. eine +Minute.) % >>> @@ -471,14 +464,16 @@ sinnvoll, da der Text sonst über das Logo bis zum Seitenrand laufen kann. (Das Logo und ggf. die Adresse werden nachträglich platziert, \TeX\ "sieht" diese also nicht beim verarbeiten des restlichen Inhalts.) -\subsection{\texcode{\LogoTitle{Titel}}} +\subsection{\texcode{\LogoTitle{Titel}}} % <<< \begin{ShortExample}*[4.953cm]{logotitle}{Die einfache Variante -- Titel links, Logo rechts.} \LogoTitle{Beispieltitel} \Text{(...und hier geht's weiter.)} \end{ShortExample} -\subsection{\texcode{\AddressTitle{Titel}}} +% >>> + +\subsection{\texcode{\AddressTitle{Titel}}} % <<< \begin{ShortExample}*[8.865cm]{addresstitle}{Titel und Adresse} \AddressTitle{Beispieltitel} @@ -498,6 +493,8 @@ Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet. % >>> +% >>> + \section{Inhalt} % <<< Hier gibt es größtenteils Befehle für Formularfelder. Anders als in normalen @@ -543,41 +540,50 @@ werden. Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es. -\paragraph{\texcode{\TextField}} Im Zweifel ist die einfachste Variante die -richtige. Ein einzeiliges Freitextfeld mit Label und einer für die meisten -Zwecke angemessenen Breite (welche auch z.~B. in mehrspaltigen Bereichen von -allein angepasst wird). +\subsubsection{\texcode{\TextField}} % <<< + +Im Zweifel ist die einfachste Variante die richtige: Ein einzeiliges +Freitextfeld mit Label und einer für die meisten Zwecke angemessenen Breite +(welche auch z.~B. in mehrspaltigen Bereichen von allein angepasst wird). \begin{ShortExample}{textfield}{normales Textfeld} \TextField{Bezeichnung} \end{ShortExample} -Wird die volle Breite benötigt gibt es auch die Variante mit Stern: +\paragraph{\texcode{\TextField*}} Wird die volle Breite benötigt gibt es auch +die Variante mit Stern: \begin{ShortExample}{textfieldstar}{maximale Breite} \TextField*{Bezeichnung} \end{ShortExample} -\paragraph{\texcode{\ShortTextField}} Wirkt die Breite hingegen zu hoch (z.~B. -für eine einzelne Zahl), so gibt es auch ein explizit kurzes Textfeld. +% >>> + +\subsubsection{\texcode{\ShortTextField}} % <<< + +Wirkt die Breite hingegen zu hoch (z.~B. für eine einzelne Zahl), so gibt es +auch ein explizit kurzes Textfeld. \begin{ShortExample}{shorttextfield}{kurzes Textfeld} \ShortTextField{Stromverbrauch (TWh)} \end{ShortExample} -Optional kann die Länge auch explizit als Faktor relativ zur Textbreite -angegeben werden. Das Formular sieht aber einheitlicher aus, wenn das -\emph{nicht} gemacht wird, also bitte zweimal überlegen, ob es das -\emph{wirklich} braucht. +\paragraph{\texcode{\ShortTextField[width]}} Optional kann die Länge auch +explizit als Faktor relativ zur Textbreite angegeben werden. Das Formular +sieht aber einheitlicher aus, wenn das \emph{nicht} gemacht wird, also bitte +zweimal überlegen, ob es das \emph{wirklich} braucht. \begin{ShortExample}{shorttextfieldopt}{besonders kurzes Textfeld} \ShortTextField[0.15]{Verbrauch (TWh)} \end{ShortExample} -\paragraph{\texcode{\MultilineTextField}} Für mehr Text gibt es auch -mehrzeilige Textfelder. Auch wenn die Höhe technisch gesehen optional ist, -sollte sie immer angegeben werden -- ansonsten hat das Feld die Standard-Höhe -von normalen Textfeldern. +% >>> + +\subsubsection{\texcode{\MultilineTextField}} % <<< + +Für mehr Text gibt es auch mehrzeilige Textfelder. Auch wenn die Höhe +technisch gesehen optional ist, sollte sie immer angegeben werden -- ansonsten +hat das Feld die Standard-Höhe von normalen Textfeldern. \begin{ShortExample}{multilinetextfield}{mehrzeiliges Textfeld} \MultilineTextField[2cm]{Kringel} @@ -587,15 +593,20 @@ von normalen Textfeldern. \MultilineTextField{Kringel} \end{ShortExample} -Auch hier gibt es wieder die Variante mit Stern für volle Breite: +\paragraph{\texcode{\MultilineTextField*}} Auch hier gibt es wieder die +Variante mit Stern für volle Breite: \begin{ShortExample}{multilinetextfieldstar}{breites mehrzeiliges Textfeld} \MultilineTextField*[2cm]{Kringel} \end{ShortExample} -\paragraph{Spezialfälle} Unterschriften sollen üblicherweise händisch gesetzt -werden, hierfür gibt es daher ein Feld was nur ein "falsches" Formularfeld ist -und nicht digital ausgefüllt werden kann. +% >>> + +\subsubsection{Spezialfälle} % <<< + +Unterschriften sollen üblicherweise händisch gesetzt werden, hierfür gibt es +daher ein Feld was nur ein "falsches" Formularfeld ist und nicht digital +ausgefüllt werden kann. (NB: Die Breite ist -- wie bei allem -- relativ zur Papierbreite definiert. Da diese bei diesen Beispielen deutlich schmaler als A4 ist, sieht das Feld hier @@ -612,7 +623,8 @@ Das Label kann optional geändert werden. \Signature[Unterschrift] \end{ShortExample} -Ebenfalls gibt es ein etwas größeres Feld für Notizen oder Vermerke. +\paragraph{\texcode{\Notes}} Ebenfalls gibt es ein etwas größeres Feld für +Notizen oder Vermerke. \begin{ShortExample}{notes}{großes Feld} \Notes @@ -624,7 +636,8 @@ Auch hier kann optional das Label geändert werden. \Notes[Stirnabdruck] \end{ShortExample} -Letztlich gibt es für Sonderfälle noch Inline-Textfelder. +\paragraph{\texcode{\InlineTextField}} Letztlich gibt es für Sonderfälle noch +Inline-Textfelder. \begin{ShortExample}{inlinetextfield}{Sonderfall -- Inline} \Text{Zur Fehlersuche wurden etwa @@ -676,11 +689,14 @@ sowieso für ein einheitliches Aussehen sorgen. % >>> +% >>> + \subsection{Checkboxen} % <<< -\paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- -\texcode{\Checkbox{Label}} für eine Checkbox (und das Label kann auch ein -kompletter Absatz sein.) +\subsubsection{\texcode{\Checkbox} -- normale Verwendung} % <<< + +Gibt es eigentlich nicht viel dazu zu sagen -- \texcode{\Checkbox{Label}} für +eine Checkbox (und das Label kann auch ein kompletter Absatz sein.) \begin{ShortExample}{checkbox}{Checkboxen} \Checkbox{Ich habe die AGB, @@ -695,6 +711,10 @@ kompletter Absatz sein.) zum Lesen von Anleitungen gelesen.} \end{ShortExample} +% >>> + +\subsubsection{\texcode{\CheckboxOther}} % <<< + Für Freitextfelder als "Sonstige:" gibt es \texcode{\CheckboxOther[Breite]{Label}}, wieder mit optionaler Breitenangabe (relativ zur Textbreite) für das Freitextfeld. @@ -715,7 +735,9 @@ einheitlicher sieht das Formular am Ende aus. Bei dem Beispiel würde ein einzelner Buchstabe auch in ein 0.05-er Feld passen, das wären dann aber 3 statt 2 verschiedener Breiten. -\paragraph{Spezielle Zwecke} +% >>> + +\subsubsection{Spezielle Zwecke -- \texcode{\InlineCheckbox}} % <<< In Sondersituationen könnten z.~B. in Aufzählungen innerhalb einer Zeile auch Checkboxen benötigt sein. Dafür gibt es die -- nur in Ausnahmefällen zu @@ -745,18 +767,21 @@ angehängt werden.) % >>> +% >>> + \section{Struktur} % <<< Drei Kategorien -- formularspezifisch, "klassische" Abschnitte, und mehrere Spalten. \subsection{formularspezifisch angepasste Formen} % <<< -\paragraph{\texttt{Indented}} Visuelle Gruppierung durch Einrücken von -zusammenhängenden bzw. untergeordneten Abschnitten ist eine sehr gute Option, -da ohne zusätzliche Tinte trotzdem klar die Struktur vermittelt wird. (Das -wurde auch schon bei den Checkboxen unmittelbar hier drüber verwendet.) -Optional kann ein Faktor (nicht zwingend ganzzahlig) für die Einrückungstiefe -angegeben werden. +\subsubsection{\texcode{\begin{Indented} ... \end{Indented}}} % <<< + +Visuelle Gruppierung durch Einrücken von zusammenhängenden bzw. untergeordneten +Abschnitten ist eine sehr gute Option, da ohne zusätzliche Tinte trotzdem klar +die Struktur vermittelt wird. (Das wurde auch schon bei den Checkboxen +unmittelbar hier drüber verwendet.) Optional kann ein Faktor (nicht zwingend +ganzzahlig) für die Einrückungstiefe angegeben werden. \begin{ShortExample}{indentation}{Einrückung, auch über mehrere Ebenen} \Text{abc} @@ -771,12 +796,19 @@ angegeben werden. \begin{Indented}[2] \Text{pqr} \end{Indented} +\begin{Indented}[1.4142] + \Text{stu} +\end{Indented} \end{ShortExample} -\paragraph{\texcode{\RuleSection}} Dient zur Trennung von Formularabschnitten, -die durch verschiedene Personengruppen ausgefüllt werden. Die Linie geht immer -über die komplette Formularbreite und kann z.~B. nicht innerhalb von -mehrspaltigen Bereichen verwendet werden. +% >>> + +\subsubsection{\texcode{\RuleSection}} % <<< + +Dient zur Trennung von Formularabschnitten, die durch verschiedene +Personengruppen ausgefüllt werden. Die Linie geht immer über die komplette +Formularbreite und kann z.~B. nicht innerhalb von mehrspaltigen Bereichen +verwendet werden. \begin{ShortExample}{rulesection}{Mehrere klar getrennte Abschnitte} \TextField{Name} @@ -786,8 +818,12 @@ mehrspaltigen Bereichen verwendet werden. \CheckboxOther[0.5]{Abgelehnt, weil:} \end{ShortExample} -\paragraph{\texcode{\Rule}} Eine einfache Trennlinie, die an verschiedenen -Stellen zur grafischen Trennung eingesetzt werden kann. +% >>> + +\subsubsection{\texcode{\Rule}} % <<< + +Eine einfache Trennlinie, die an verschiedenen Stellen zur grafischen Trennung +eingesetzt werden kann. \begin{ShortExample}{rule}{Mehr Trennlinien} \RuleSection{Bearbeiter} @@ -804,6 +840,8 @@ Stellen zur grafischen Trennung eingesetzt werden kann. % >>> +% >>> + \subsection{"klassische" Struktur} % <<< In \TeX\ üblich sind \texcode{\section}, \texcode{\subsection}, etc.; in @@ -914,6 +952,39 @@ verwenden.}} % >>> +\chapter{Hinweise zum Design} % <<< + +Das aktuelle Design ist iterativ entstanden und vermutlich erstmal \emph{gut genug}, +aber deutlich nicht komplett durchstrukturiert und -getestet. + +\section{Schrift} + +Die Schrift "Recursive" wird im Text mit \texttt{CASL=0.2} zwischen den +Extremen benutzt. Die anderen Achsen halten sich an die Standard-Werte +(\texttt{wght=400/700} für normal/fett, \texttt{slnt=0/-15} und +\texttt{CRSV=0/1} für normal/kursiv, und \texttt{MONO=0.0/1.0} für +normal/festbreite.) Für Titel wird sowohl das Gewicht leicht erhöht +(\texttt{wght=500/800}) als auch \texttt{CASL=0.4} verdoppelt. (Das ist schon +ziemlich kräftig, \texttt{CASL=1.0} ist zu extrem.) + +\section{Formularfelder} + +Textfeldhöhe plus Abstand zusammen sollten für Handschrift groß genug sein. +Die Grautöne wurden mit dem Drucker getestet und sollten sowohl bei direktem +Druck als auch bei einfacher Kopie lesbar bleiben. Mehr wurde da noch nicht +optimiert. + +Die schrägen Label (um 1em rausgeschoben und um 4.20° rotiert) sind relativ gut +durchgetestet und sehen zusammen mit der Schrift chaotisch aus ohne tatsächlich +chaotisch zu sein. Solange das Label nicht zu lang wird, ist es auch beim +Ausfüllen des Formulars nicht zu sehr im Weg. + +Abstände etc. sind eher so Bauchgefühl und nicht komplett durchdacht. Es gab +bisher noch keine offensichtlichen Probleme damit, aber müsste man mal nochmal +anschauen\dots + +% >>> + \end{document} % vim: set fdm=marker fmr=<<<,>>> :