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]
\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}

129
doku.tex
View file

@ -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}