This commit is contained in:
nobody 2024-12-12 19:26:10 +01:00
parent 443a456154
commit 1aaadbe896
2 changed files with 66 additions and 65 deletions

View file

@ -2,8 +2,8 @@
\ProvidesClass{cccbform}[2024/12/08 In the Beginning, There Was Chaos] \ProvidesClass{cccbform}[2024/12/08 In the Beginning, There Was Chaos]
\LoadClass{scrartcl} \LoadClass{scrartcl}
\RequirePackage{geometry, calc, fontspec, tikz, hyperref, changepage, letltxmacro, csquotes}
\RequirePackage[ngerman]{babel} \RequirePackage[ngerman]{babel}
\RequirePackage{geometry, calc, fontspec, tikz, hyperref, changepage, letltxmacro, csquotes}
\MakeOuterQuote{"} \MakeOuterQuote{"}
\usetikzlibrary{calc} \usetikzlibrary{calc}

129
doku.tex
View file

@ -1,18 +1,21 @@
%% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance… %% NB: Dieses Dokument baut so 3-10 Minuten je nach Dateisystem-Performance…
%% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.) %% (Sehr viele Beispiele die jeweils komplette eigenständige Dokumente sind.)
\documentclass[ngerman,10pt]{scrartcl} \documentclass[ngerman,10pt]{scrartcl}
\usepackage{calc,tikz,minted,fontspec,luacode,csquotes,babel,hyperref,microtype} \KOMAoptions{BCOR=1cm,DIV=10}
\MakeOuterQuote{"} \usepackage{calc,tikz,minted,fontspec,luacode,babel,csquotes,hyperref}
\hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}} \hypersetup{colorlinks,urlcolor={magenta!75!black},linkcolor={green!50!black}}
\linespread{1.05} \linespread{1.05}
% font definition (same as cccbform.cls) % 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[ \setmainfont[
Renderer=HarfBuzz, Renderer=HarfBuzz,
ItalicFont=Recursive, ItalicFont=Recursive,
BoldFont=Recursive, BoldFont=Recursive,
BoldItalicFont=Recursive, BoldItalicFont=Recursive,
UprightFeatures={ UprightFeatures={
RawFeature={+ss01,+ss02,+ss08,+case}, RawFeature={+ss01,+ss02,+ss08},
RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} 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}}}, BoldFeatures={RawFeature={+axis={MONO=0.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}},
@ -25,7 +28,7 @@
BoldFont=Recursive, BoldFont=Recursive,
BoldItalicFont=Recursive, BoldItalicFont=Recursive,
UprightFeatures={ UprightFeatures={
RawFeature={+ss01,+ss02,+ss08,+case}, RawFeature={+ss01,+ss02,+ss08},
RawFeature={+axis={MONO=1.0,CASL=0.2,slnt=0,CRSV=0,wght=400}} 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}}}, BoldFeatures={RawFeature={+axis={MONO=1.0,CASL=0.2,slnt=0,CRSV=0,wght=700}}},
@ -38,13 +41,14 @@
BoldFont=Recursive, BoldFont=Recursive,
BoldItalicFont=Recursive, BoldItalicFont=Recursive,
UprightFeatures={ UprightFeatures={
RawFeature={+ss01,+ss02,+ss08,+case}, RawFeature={+ss01,+ss02,+ss08},
RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=0,CRSV=1,wght=500}} 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}}}, 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}}}, 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}}} ItalicFeatures={RawFeature={+axis={MONO=0.0,CASL=0.4,slnt=-15,CRSV=1,wght=500}}}
]{Recursive} ]{Recursive}
\usepackage{microtype}
% set up example build directory % set up example build directory
\directlua{ os.execute "mkdir -p cccbform-examples" } \directlua{ os.execute "mkdir -p cccbform-examples" }
@ -172,7 +176,8 @@ FOOTER = [[
\sloppy \sloppy
\raggedbottom \raggedbottom
\title{\texttt{cccbform} -- Formulare für den CCCB} \MakeOuterQuote{"}
\title{\texttt{cccbform} Formulare für den CCCB}
\author{Frank Nord} \author{Frank Nord}
\begin{document} \begin{document}
\maketitle \maketitle
@ -181,11 +186,10 @@ FOOTER = [[
\section{TODO} \section{TODO}
\begin{itemize} \begin{itemize}
\item csquotes / MakeOuterQuote in cls
\item mehr \texttt{\textbackslash mintinline}
\item Inline-Textfeld \item Inline-Textfeld
\item Grundsätze des aktuellen Designs \item Grundsätze des aktuellen Designs
\item Bug: Höhe Multiline-Textfeld in example \item Bug: Höhe Multiline-Textfeld in example
\item \TeX-Intro zum Ende, +build info
\end{itemize} \end{itemize}
\section{Übersicht} \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 von Sonderzeichen, die besondere Bedeutung haben. Als eines der wichtigeren
beginnt \texcode|%| einen Zeilenkommentar. Bei den meisten Symbolen beginnt \texcode|%| einen Zeilenkommentar. Bei den meisten Symbolen
reicht es, einen Backslash (\texttt{\textbackslash}) davorzusetzen, aber der 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 \texcode{\\} erzeugt. Bei Unsicherheit hilft auch
\url{http://detexify.kirelabs.org/classify.html}. (Dort kann man \url{http://detexify.kirelabs.org/classify.html}. (Dort kann man
Symbole malen und bekommt eine Liste möglicher Übereinstimmungen und wie 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} \subsection{Titel}
Aktuell gibt es zwei Arten von Titeln. In jedem Fall sollte genau einer und Aktuell gibt es zwei Arten von Titeln. In jedem Fall sollte genau einer und
unmittelbar in der Zeile hinter dem \texttt{\textbackslash begin\{document\}} unmittelbar in der Zeile hinter dem \texcode{\begin{document}} verwendet
verwendet werden. werden.
Bei langen Titeln ist ein manueller Zeilenumbruch Bei langen Titeln ist ein manueller Zeilenumbruch (\texcode{\\}) im Titel ggf.
(\texttt{\textbackslash\textbackslash}) im Titel ggf. sinnvoll, da der Text sinnvoll, da der Text sonst über das Logo bis zum Seitenrand laufen kann. (Das
sonst über das Logo bis zum Seitenrand laufen kann. (Das Logo und ggf. die Logo und ggf. die Adresse werden nachträglich platziert, \TeX\ "sieht" diese
Adresse werden nachträglich platziert, \TeX\ "sieht" diese also nicht beim also nicht beim verarbeiten des restlichen Inhalts.)
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.} \begin{ShortExample}[4.953cm]{logotitle}{Die einfache Variante -- Titel links, Logo rechts.}
\LogoTitle{Beispieltitel} \LogoTitle{Beispieltitel}
\Text{(...und hier geht's weiter.)} \Text{(...und hier geht's weiter.)}
\end{ShortExample} \end{ShortExample}
\subsubsection{\texttt{\textbackslash AddressTitle\{Titel\}}} \subsubsection{\texcode{\AddressTitle{Titel}}}
\begin{ShortExample}[8.865cm]{addresstitle}{Titel und Adresse} \begin{ShortExample}[8.865cm]{addresstitle}{Titel und Adresse}
\AddressTitle{Beispieltitel} \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 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} \TeX-Dokumenten ist es hier jedoch wichtig, für korrekte Abstände \emph{allen}
"losen" Text explizit als \texttt{\textbackslash Text} auszuzeichnen. Der "losen" Text explizit als \texcode{\Text} auszuzeichnen. Der Befehl kümmert
Befehl kümmert sich um korrekte Abstände, ohne diesen liegen Dinge zu eng sich um korrekte Abstände, ohne diesen liegen Dinge zu eng beieinander.
beieinander. Vergleiche: Vergleiche:
\begin{ShortExample}{textgood}{Text mit korrekten Abständen} \begin{ShortExample}{textgood}{Text mit korrekten Abständen}
\Text{Dieser Satz kein Verb.} \Text{Dieser Satz kein Verb.}
@ -315,8 +318,8 @@ Dieser Satz kein Verb.
Die blöden Ösen! Die blöden Ösen!
\end{ShortExample} \end{ShortExample}
Auch lange Texte mit mehreren Absätzen können in \texttt{\textbackslash Text} Auch lange Texte mit mehreren Absätzen können in \texcode{\Text} verwendet
verwendet werden. werden.
\begin{ShortExample}{textlong}{langer Text ist kein Problem} \begin{ShortExample}{textlong}{langer Text ist kein Problem}
\Text{ \Text{
@ -340,10 +343,10 @@ verwendet werden.
Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es. Die vermutlich wichtigste Komponente, entsprechend viele Varianten gibt es.
\paragraph{\texttt{\textbackslash TextField}} Im Zweifel ist die einfachste \paragraph{\texcode{\TextField}} Im Zweifel ist die einfachste Variante die
Variante die richtige. Ein einzeiliges Freitextfeld mit Label und einer für richtige. Ein einzeiliges Freitextfeld mit Label und einer für die meisten
die meisten Zwecke angemessenen Breite (welche auch z.~B. in mehrspaltigen Zwecke angemessenen Breite (welche auch z.~B. in mehrspaltigen Bereichen von
Bereichen von allein angepasst wird). allein angepasst wird).
\begin{ShortExample}{textfield}{normales Textfeld} \begin{ShortExample}{textfield}{normales Textfeld}
\TextField{Bezeichnung} \TextField{Bezeichnung}
@ -355,8 +358,8 @@ Wird die volle Breite benötigt gibt es auch die Variante mit Stern:
\TextField*{Bezeichnung} \TextField*{Bezeichnung}
\end{ShortExample} \end{ShortExample}
\paragraph{\texttt{\textbackslash ShortTextField}} Wirkt die Breite hingegen zu \paragraph{\texcode{\ShortTextField}} Wirkt die Breite hingegen zu hoch (z.~B.
hoch (z.~B. für eine einzelne Zahl), so gibt es auch ein explizit kurzes Textfeld. für eine einzelne Zahl), so gibt es auch ein explizit kurzes Textfeld.
\begin{ShortExample}{shorttextfield}{kurzes Textfeld} \begin{ShortExample}{shorttextfield}{kurzes Textfeld}
\ShortTextField{Stromverbrauch (TWh)} \ShortTextField{Stromverbrauch (TWh)}
@ -371,10 +374,10 @@ angegeben werden. Das Formular sieht aber einheitlicher aus, wenn das
\ShortTextField[0.15]{Verbrauch (TWh)} \ShortTextField[0.15]{Verbrauch (TWh)}
\end{ShortExample} \end{ShortExample}
\paragraph{\texttt{\textbackslash MultilineTextField}} Für mehr Text gibt es \paragraph{\texcode{\MultilineTextField}} Für mehr Text gibt es auch
auch mehrzeilige Textfelder. Auch wenn die Höhe technisch gesehen optional mehrzeilige Textfelder. Auch wenn die Höhe technisch gesehen optional ist,
ist, sollte sie immer angegeben werden -- ansonsten hat das Feld die sollte sie immer angegeben werden -- ansonsten hat das Feld die Standard-Höhe
Standard-Höhe von normalen Textfeldern. von normalen Textfeldern.
\begin{ShortExample}{multilinetextfield}{mehrzeiliges Textfeld} \begin{ShortExample}{multilinetextfield}{mehrzeiliges Textfeld}
%%% FIXME bug in preview (works in doc) %%% FIXME bug in preview (works in doc)
@ -437,8 +440,8 @@ Auch hier kann optional das Label geändert werden.
\subsubsection{Checkboxen} \subsubsection{Checkboxen}
\paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen -- \paragraph{Normale Verwendung} Gibt es eigentlich nicht viel dazu zu sagen --
\texttt{\textbackslash Checkbox\{Label\}} für eine Checkbox (und das Label kann \texcode{\Checkbox{Label}} für eine Checkbox (und das Label kann auch ein
auch ein kompletter Absatz sein.) kompletter Absatz sein.)
\begin{ShortExample}{checkbox}{Checkboxen} \begin{ShortExample}{checkbox}{Checkboxen}
\Checkbox{Ich habe die AGB, \Checkbox{Ich habe die AGB,
@ -454,8 +457,8 @@ auch ein kompletter Absatz sein.)
\end{ShortExample} \end{ShortExample}
Für Freitextfelder als "Sonstige:" gibt es Für Freitextfelder als "Sonstige:" gibt es
\texttt{\textbackslash CheckboxOther[Breite]\{Label\}}, wieder mit optionaler \texcode{\CheckboxOther[Breite]{Label}}, wieder mit optionaler Breitenangabe
Breitenangabe (relativ zur Textbreite) für das Freitextfeld. (relativ zur Textbreite) für das Freitextfeld.
\begin{ShortExample}{othercheckbox}{"Sonstiges"} \begin{ShortExample}{othercheckbox}{"Sonstiges"}
\Text{Meine Lieblingstaste ist:} \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 verwendende -- Inline-Variante, welche sich (fast) gar nicht um die
Formatierung kümmert und nur die Box zur Verfügung stellt. (Das Einzige: ein 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 Leerzeichen auf der rechten Seite wird sichergestellt, für gleichmäßige
Abstände sollte also genau \emph{nicht} \texttt{\{\}} oder Abstände sollte also genau \emph{nicht} \texcode{{}} oder \texcode{\ }
\texttt{\textbackslash} angehängt werden.) angehängt werden.)
\begin{ShortExample}{inlinecheckbox}{Sonderfall -- Inline} \begin{ShortExample}{inlinecheckbox}{Sonderfall -- Inline}
\Text{Ich bin \InlineCheckbox groß, \Text{Ich bin \InlineCheckbox groß,
@ -527,10 +530,10 @@ angegeben werden.
\end{Indented} \end{Indented}
\end{ShortExample} \end{ShortExample}
\paragraph{\texttt{\textbackslash RuleSection}} Dient zur Trennung von \paragraph{\texcode{\RuleSection}} Dient zur Trennung von Formularabschnitten,
Formularabschnitten, die durch verschiedene Personengruppen ausgefüllt werden. die durch verschiedene Personengruppen ausgefüllt werden. Die Linie geht immer
Die Linie geht immer über die komplette Formularbreite und kann z.~B. nicht über die komplette Formularbreite und kann z.~B. nicht innerhalb von
innerhalb von mehrspaltigen Bereichen verwendet werden. mehrspaltigen Bereichen verwendet werden.
\begin{ShortExample}{rulesection}{Mehrere klar getrennte Abschnitte} \begin{ShortExample}{rulesection}{Mehrere klar getrennte Abschnitte}
\TextField{Name} \TextField{Name}
@ -540,8 +543,8 @@ innerhalb von mehrspaltigen Bereichen verwendet werden.
\CheckboxOther[0.5]{Abgelehnt, weil:} \CheckboxOther[0.5]{Abgelehnt, weil:}
\end{ShortExample} \end{ShortExample}
\paragraph{\texttt{\textbackslash Rule}} Eine einfache Trennlinie, die an \paragraph{\texcode{\Rule}} Eine einfache Trennlinie, die an verschiedenen
verschiedenen Stellen zur grafischen Trennung eingesetzt werden kann. Stellen zur grafischen Trennung eingesetzt werden kann.
\begin{ShortExample}{rule}{Mehr Trennlinien} \begin{ShortExample}{rule}{Mehr Trennlinien}
\RuleSection{Bearbeiter} \RuleSection{Bearbeiter}
@ -560,12 +563,12 @@ verschiedenen Stellen zur grafischen Trennung eingesetzt werden kann.
\subsubsection{"klassische" Struktur} \subsubsection{"klassische" Struktur}
In \TeX\ üblich sind \texttt{\textbackslash section}, In \TeX\ üblich sind \texcode{\section}, \texcode{\subsection}, etc.; in
\texttt{\textbackslash subsection}, etc.; in Analogie dazu gibt es für ggf. Analogie dazu gibt es für ggf. längere Formulare \texcode{\Section} und
längere Formulare \texttt{\textbackslash Section} und \texcode{\Subsection}. Für die meisten Formulare ist das jedoch vermutlich
\texttt{\textbackslash Subsection}. Für die meisten Formulare ist das jedoch nicht nötig, insbesondere da ggf. per Einrückung via
vermutlich nicht nötig, insbesondere da ggf. per Einrückung via \texcode|\begin{Indented} ... \end{Indented}| visuell schneller lesbare
\texttt{Indented} visuell schneller lesbare Struktur geschaffen werden kann. Struktur geschaffen werden kann.
\begin{ShortExample}{sectioning}{Abschnittsunterteilung} \begin{ShortExample}{sectioning}{Abschnittsunterteilung}
\Section{Allgemeines} \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 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 ineinander geschachtelt werden.) Die Befehle heißen -- vermutlich wenig
überraschend -- \texttt{\textbackslash TwoColumns}, überraschend -- \texcode{\TwoColumns}, \texcode{\ThreeColumns}, und
\texttt{\textbackslash ThreeColumns}, und \texttt{\textbackslash FiveColumns} \texcode{\FiveColumns} und es sollten entsprechend viele \texcode{{}}-Gruppen
und es sollten entsprechend viele \texttt{\{\}}-Gruppen folgen. folgen.
\begin{ShortExample}{multicolumn}{Mehrspaltigkeit} \begin{ShortExample}{multicolumn}{Mehrspaltigkeit}
\TwoColumns{ \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. Die meisten sollten also nur bei ernsthaftem Bedarf verwendet werden.
Eine akzeptable Formatierungsmethode ist das Hervorheben von Text mit Eine akzeptable Formatierungsmethode ist das Hervorheben von Text mit
\texttt{\textbackslash emph}. Üblicherweise typografisch eher verpönt, aber \texcode{\emph}. Üblicherweise typografisch eher verpönt, aber schon irgendwie
schon irgendwie zum aktuellen Design passend, können mit zum aktuellen Design passend, können mit \texcode{\ul} auch \emph{einzelne
\texttt{\textbackslash ul} auch \emph{einzelne Worte oder sehr kurze Passagen} Worte oder sehr kurze Passagen} unterstrichen werden, dabei ist jedoch zu
unterstrichen werden, dabei ist jedoch zu beachten, dass innerhalb beachten, dass innerhalb unterstrichener Bereiche keine Zeilenumbrüche mehr
unterstrichener Bereiche keine Zeilenumbrüche mehr möglich sind. (Der Bereich möglich sind. (Der Bereich wird als eine logische Box verpackt und kann nur
wird als eine logische Box verpackt und kann nur noch als Ganzes verschoben noch als Ganzes verschoben werden.)
werden.)
Es gibt zwar eigentlich viele verschiedene Schriftgrößen, es ist jedoch keine Es gibt zwar eigentlich viele verschiedene Schriftgrößen, es ist jedoch keine
gute Idee, alle quer durcheinander zu verwenden. Die Dokumentenklasse kümmert gute Idee, alle quer durcheinander zu verwenden. Die Dokumentenklasse kümmert
sich ums meiste, als einzige Akzeptable gibt es \texttt{\textbackslash details} sich ums meiste, als einzige Akzeptable gibt es \texcode{\details} (als
(als semantischen Namen), welche für untergeordnete Bemerkungen zur Verfügung semantischen Namen), welche für untergeordnete Bemerkungen zur Verfügung steht.
steht.
\begin{ShortExample}{formatting}{Formatierungsbeispiele} \begin{ShortExample}{formatting}{Formatierungsbeispiele}
\Text{Die Formulare sind \ul{sofort} \Text{Die Formulare sind \ul{sofort}