This commit is contained in:
nobody 2024-12-09 00:11:55 +01:00
parent c97298ed18
commit 8dc20badd6
4 changed files with 415 additions and 69 deletions

View file

@ -13,11 +13,8 @@ clean:
distclean: distclean:
latexmk -C latexmk -C
mwe.pdf: mwe.tex
latexmk -pdflua -lualatex="lualatex --shell-escape %O %S" $<
doku.pdf: doku.tex cccbform.cls logo.pdf doku.pdf: doku.tex cccbform.cls logo.pdf
latexmk -pdflua -lualatex="lualatex --shell-escape %O %S" $< latexmk -g -pdflua -lualatex="lualatex --shell-escape %O %S" $<
%.pdf :: %.tex cccbform.cls logo.pdf %.pdf :: %.tex cccbform.cls logo.pdf
latexmk -pdflua $< latexmk -g -pdflua $<

View file

@ -1,10 +1,4 @@
\documentclass[]{cccbform} \documentclass[]{cccbform}
\NewDocumentCommand{\ul}{m}{%
\tikz[baseline=(word.base)]{%
\node[inner sep=1pt] (word) {#1};
\draw[thick] (word.south west) -- (word.south east);
}%
}
\begin{document} \begin{document}
\TwoColumns{% \TwoColumns{%
\vbox to 0pt{% \vbox to 0pt{%

View file

@ -23,7 +23,7 @@
\@Exampletrue \@Exampletrue
} }
\DeclareOption{shortexample}{ \DeclareOption{shortexample}{
\geometry{paperwidth=105mm, paperheight=74mm, margin=2ex} \geometry{a6paper, margin=2ex}
\@Exampletrue \@Exampletrue
\AtEndDocument{% \AtEndDocument{%
\pageheight=\pagetotal \pageheight=\pagetotal
@ -262,7 +262,9 @@
\ifMultiColumn% \ifMultiColumn%
\pgfmathsetmacro{\@tlen}{1.0}% \pgfmathsetmacro{\@tlen}{1.0}%
\else% \else%
\IfBooleanTF{#1}{\pgfmathsetmacro{\@tlen}{1.0}}{\pgfmathsetmacro{\@tlen}{\normalfieldwidth}}% \IfBooleanTF{#1}%
{\pgfmathsetmacro{\@tlen}{1.0}}%
{\pgfmathsetmacro{\@tlen}{\normalfieldwidth}}%
\fi% \fi%
\begin{tikzpicture}[baseline] \begin{tikzpicture}[baseline]
\useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight);
@ -304,7 +306,9 @@
\ifMultiColumn% \ifMultiColumn%
\pgfmathsetmacro{\@tlen}{1.0}% \pgfmathsetmacro{\@tlen}{1.0}%
\else% \else%
\IfBooleanTF{#1}{\pgfmathsetmacro{\@tlen}{1.0}}{\pgfmathsetmacro{\@tlen}{\normalfieldwidth}}% \IfBooleanTF{#1}%
{\pgfmathsetmacro{\@tlen}{1.0}}%
{\pgfmathsetmacro{\@tlen}{\normalfieldwidth}}%
\fi% \fi%
\begin{tikzpicture}[baseline] \begin{tikzpicture}[baseline]
\useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight); \useasboundingbox (0,0) rectangle (\@tlen\textwidth,\formfieldheight);
@ -370,7 +374,7 @@
% CheckboxOther[width]{label} - a checkbox for a write-in option % CheckboxOther[width]{label} - a checkbox for a write-in option
\NewDocumentCommand{\CheckboxOther}{O{\shortfieldwidth} m}{% \NewDocumentCommand{\CheckboxOther}{O{\shortfieldwidth} m}{%
\par% \par%
\full@CheckBox\quad#2\quad\smash{\full@TextField[#1]}% \full@CheckBox\quad\IfBlankTF{#2}{}{#2\quad}\smash{\full@TextField[#1]}%
\par\addvspace{\formskip}% \par\addvspace{\formskip}%
} }
@ -426,57 +430,71 @@
% TwoColumns{left}{right} - put two sections side-by-side % TwoColumns{left}{right} - put two sections side-by-side
\NewDocumentCommand{\TwoColumns}{+m +m}{% \NewDocumentCommand{\TwoColumns}{+m +m}{%
\MultiColumntrue
\begin{minipage}[t]{0.5\linewidth - 0.5\colsep}% \begin{minipage}[t]{0.5\linewidth - 0.5\colsep}%
\MultiColumntrue%
#1% #1%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.5\linewidth - 0.5\colsep}% \begin{minipage}[t]{0.5\linewidth - 0.5\colsep}%
\MultiColumntrue%
#2% #2%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\MultiColumnfalse
\par\addvspace{\formskip}% \par\addvspace{\formskip}%
} }
\NewDocumentCommand{\ThreeColumns}{+m +m +m}{% \NewDocumentCommand{\ThreeColumns}{+m +m +m}{%
\MultiColumntrue
\begin{minipage}[t]{0.333\linewidth - 0.66\colsep}% \begin{minipage}[t]{0.333\linewidth - 0.66\colsep}%
\MultiColumntrue%
#1% #1%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.333\linewidth - 0.66\colsep}% \begin{minipage}[t]{0.333\linewidth - 0.66\colsep}%
\MultiColumntrue%
#2% #2%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.333\linewidth - 0.66\colsep}% \begin{minipage}[t]{0.333\linewidth - 0.66\colsep}%
\MultiColumntrue%
#3% #3%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\MultiColumnfalse
\par\addvspace{\formskip}% \par\addvspace{\formskip}%
} }
\NewDocumentCommand{\FiveColumns}{+m +m +m +m +m}{% \NewDocumentCommand{\FiveColumns}{+m +m +m +m +m}{%
\MultiColumntrue
\begin{minipage}[t]{0.2\linewidth - 0.8\colsep}% \begin{minipage}[t]{0.2\linewidth - 0.8\colsep}%
\MultiColumntrue%
#1% #1%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.2\linewidth - 0.8\colsep}% \begin{minipage}[t]{0.2\linewidth - 0.8\colsep}%
\MultiColumntrue%
#2% #2%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.2\linewidth - 0.8\colsep}% \begin{minipage}[t]{0.2\linewidth - 0.8\colsep}%
\MultiColumntrue%
#3% #3%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.2\linewidth - 0.8\colsep}% \begin{minipage}[t]{0.2\linewidth - 0.8\colsep}%
\MultiColumntrue%
#4% #4%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\hfill \hfill
\begin{minipage}[t]{0.2\linewidth - 0.8\colsep}% \begin{minipage}[t]{0.2\linewidth - 0.8\colsep}%
\MultiColumntrue%
#5% #5%
\MultiColumnfalse%
\end{minipage}% \end{minipage}%
\MultiColumnfalse
\par\addvspace{\formskip}% \par\addvspace{\formskip}%
} }
@ -485,19 +503,29 @@
{\scriptsize #1}% {\scriptsize #1}%
} }
% ul{text} - underline a single word or short phrase
\NewDocumentCommand{\ul}{m}{%
\tikz[baseline=(word.base)]{%
\node[inner sep=1pt] (word) {#1};
\draw[thick] (word.south west) -- (word.south east);
}%
}
% % % common title patterns % % % common title patterns
% put the logo in the top right corner % put the logo in the top right corner
\NewDocumentCommand{\@logo}{}{ \NewDocumentCommand{\@logo}{}{
\if@Example \if@Example
\begin{tikzpicture}[remember picture, overlay] \begin{tikzpicture}[remember picture, overlay]
\node[anchor=north east] at (current page.north east) [xshift=-0.5cm, yshift=-0.5cm] {% \node[anchor=north east]
at (current page.north east) [xshift=-0.5cm, yshift=-0.5cm] {%
\includegraphics[width=1.5cm]{logo.pdf}% \includegraphics[width=1.5cm]{logo.pdf}%
}; };
\end{tikzpicture}% \end{tikzpicture}%
\else \else
\begin{tikzpicture}[remember picture, overlay] \begin{tikzpicture}[remember picture, overlay]
\node[anchor=north east] at (current page.north east) [xshift=-1.5cm, yshift=-1.5cm] {% \node[anchor=north east]
at (current page.north east) [xshift=-1.5cm, yshift=-1.5cm] {%
\includegraphics[width=3cm]{logo.pdf}% \includegraphics[width=3cm]{logo.pdf}%
}; };
\end{tikzpicture}% \end{tikzpicture}%

419
doku.tex
View file

@ -1,8 +1,9 @@
\documentclass{ltxdoc} \documentclass{ltxdoc}
\usepackage{tikz,geometry,minted,fontspec,luacode}
\usepackage[ngerman]{babel} \usepackage[ngerman]{babel}
\usetikzlibrary{positioning} \usepackage{tikz,geometry,minted,fontspec,luacode,csquotes}
\MakeOuterQuote{"}
\geometry{a4paper,margin=2cm} \geometry{a4paper,margin=2cm}
% font definition (same as cccbform.cls)
\setmainfont[ \setmainfont[
Renderer=HarfBuzz, Renderer=HarfBuzz,
ItalicFont=Recursive, ItalicFont=Recursive,
@ -46,13 +47,16 @@
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}
% 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 cccbform-examples/" } \directlua{ os.execute "cp cccbform.cls cccbform-examples/" }
\directlua{ os.execute "cp logo.pdf cccbform-examples/" } \directlua{ os.execute "cp logo.pdf cccbform-examples/" }
% stuff to add before/after examples to form a full document
\begin{luacode*} \begin{luacode*}
HEADER = [[ HEADER1 = [[
\documentclass[shortexample]{cccbform} \documentclass[shortexample]{cccbform}
]]
HEADER2 = [[
\begin{document} \begin{document}
]] ]]
FOOTER = [[ FOOTER = [[
@ -80,51 +84,59 @@ FOOTER = [[
end end
return luaverbstart, luaverbend return luaverbstart, luaverbend
end end
\end{luacode*}
\begin{luacode*}
function CMD(name) return "\\"..name end function CMD(name) return "\\"..name end
LF = "\n"
function EndExample( EndFun, x1, x2 )
CONTENT = EndFun( )
if x1 ~= "" then
EXTRALINES, EXTRASTUFF = 1, "\\geometry{paperheight="..x1.."}\n"
else
EXTRALINES, EXTRASTUFF = 0, ""
end
local f = io.open( "cccbform-examples/"..x2..".tex", "w" )
f:write( HEADER1, EXTRASTUFF, HEADER2, CONTENT, FOOTER )
f:close( )
os.execute( "cd cccbform-examples ; latexmk -pdflua "..x2..".tex" )
local n, f = 0, io.open( "cccbform-examples/"..x2..".tex" )
for l in f:lines( ) do n = n + 1 end
tex.print( "\\def\\lc{"..(n - 1).."}" )
tex.print( "\\def\\ls{"..(3 + EXTRALINES).."}" )
end
\end{luacode*} \end{luacode*}
\directlua{ ShortExampleStart, ShortExampleEnd = makeVerb "ShortExample" } \directlua{ ShortExampleStart, ShortExampleEnd = makeVerb "ShortExample" }
\NewDocumentEnvironment{ShortExample}{m m}{ \NewDocumentEnvironment{ShortExample}{O{} m m}{
\directlua{ShortExampleStart()}}{\directlua{ \addvspace{1em}
CONTENT = ShortExampleEnd( ) \directlua{ShortExampleStart()}
local f = io.open( "cccbform-examples/#1.tex", "w" ) }{
f:write( HEADER, CONTENT, FOOTER ) \directlua{ EndExample( ShortExampleEnd, "#1", "#2" ) }
f:close( ) \par
os.execute( "cd cccbform-examples ; latexmk -pdflua #1.tex" ) \vbox{
local n, f = 0, io.open( "cccbform-examples/#1.tex" ) \noindent
for l in f:lines( ) do n = n + 1 end \begin{tikzpicture}
tex.print( CMD"def"..CMD"lc".."{" .. (n-1) .. "}" ) \node[anchor=north east] (code) at (-0.5ex,0) {
\begin{minipage}[t]{0.5\textwidth - 3ex}
\vspace{-2ex}
\inputminted[firstline=\ls,lastline=\lc]{tex}{cccbform-examples/#2.tex}
\end{minipage}
};
\node[anchor=north west, draw=black!50] (output) at (0.5ex,0) {
\begin{minipage}[t]{0.5\textwidth - 2ex}
\includegraphics[width=\linewidth]{cccbform-examples/#2.pdf}
\end{minipage}
};
\end{tikzpicture}
\par
\vspace{-2ex}
{\null\hfill\bfseries #3 \hfill\null}
} }
\par
\begin{tikzpicture}[example frame/.style={draw=gray!50, thick, inner sep=1ex}] \addvspace{4ex}
\node[draw=gray!30, fill=gray!5, inner sep=1ex, rounded corners, minimum width=\textwidth] (example container) {};
\node[example frame, anchor=north west, minimum height=7cm] (code) at (example container.north west) {
\begin{minipage}[t]{0.45\textwidth}
\inputminted[firstline=3,lastline=\lc]{tex}{cccbform-examples/#1.tex}
\end{minipage}
};
\node[example frame, anchor=north west, right=2mm of code, minimum height=7cm] (output) {
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\linewidth]{cccbform-examples/#1.pdf}
\end{minipage}
};
\node[anchor=north west, font=\small\itshape] at (example container.north west |- code.north west) {Example: #2};
\end{tikzpicture}
% \begin{tikzpicture}
% \node[anchor=north west, inner sep=1ex, draw] (code) {
% \begin{minipage}[t]{0.45\textwidth}
% \inputminted[firstline=3,lastline=\lc]{tex}{cccbform-examples/#1.tex}
% \end{minipage}
% };
% \node[anchor=north west, right=2mm of code, draw] (output) {
% \begin{minipage}[t]{0.45\textwidth}
% \includegraphics[width=\linewidth]{cccbform-examples/#1.pdf}
% \end{minipage}
% };
% \end{tikzpicture}
} }
\NewDocumentEnvironment{StandaloneExample}{m}{ \NewDocumentEnvironment{StandaloneExample}{m}{
@ -151,6 +163,11 @@ FOOTER = [[
\end{tikzpicture} \end{tikzpicture}
} }
\setminted{autogobble,bgcolor=black!10,frame=lines,framesep=1ex,tabsize=4}
\sloppy
\raggedbottom
\title{\texttt{cccbform} -- Formulare für den CCCB} \title{\texttt{cccbform} -- Formulare für den CCCB}
\author{Frank Nord} \author{Frank Nord}
\begin{document} \begin{document}
@ -159,16 +176,326 @@ FOOTER = [[
\section{Übersicht} \section{Übersicht}
\begin{ShortExample}{text}{Text} Die Grundstruktur für Formulare ist folgende:
\Text{Test}
\begin{center}
\begin{minipage}{0.5\textwidth}
\begin{minted}{tex}
\documentclass{cccbform}
\begin{document}
% Inhalt hier
\end{document}
\end{minted}
\end{minipage}
\end{center}
\texttt{cccbform} kümmert sich um die Details mit PDF-Formularen und definiert
Hilfsbefehle zur rein semantischen Erstellung von Formularen. Mit einer Reihe
von Befehlen kann dann recht bequem ein Formular definiert werden.
\subsection{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
beginnt \texttt{\%} einen Zeilenkommentar. Bei den meisten Symbolen reicht es,
einen Backslash (\texttt{\textbackslash}) davorzusetzen, aber der Backslash
selbst wird z.~B. durch \texttt{\textbackslash textbackslash} und nicht
\texttt{\textbackslash\textbackslash} 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 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.)
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
\texttt{\textbackslash par}.) \texttt{\textbackslash\textbackslash} 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. \texttt{\textasciitilde} erzeugt
geschützte Leerzeichen, die nicht umbrechen dürfen (und z.~B.
(\texttt{z.\textasciitilde B.}) bei Abkürzungen oder Zahlen mit Einheiten
verwendet werden sollten.) Nach Befehlen (\texttt{\textbackslash irgendwas})
werden Leerzeichen generell als Trenner des Namens von nachfolgenden Zeichen
ignoriert und ein Verdoppeln des Leerzeichen bringt ebenfalls nichts.
Stattdessen kann man entweder leere Argumente angeben
(\texttt{\textbackslash TeX\{\} test}) oder das Leerzeichen ebenfalls mit einem
Backslash schützen (\texttt{\textbackslash TeX\textbackslash\ test}.)
\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
werden sind also in Wirklichkeit ein Bild, was wie ein Formularfeld aussieht und
dann ein "echtes" Feld direkt darüber platziert. \emph{Manche} Viewer hingegen
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
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}
Bereitgestellte Befehle fallen grob in 4 Kategorien -- Titel, Inhalt, Struktur, Hervorhebung.
\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.
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.)
\subsubsection{\texttt{\textbackslash LogoTitle\{Titel\}}}
\begin{ShortExample}[4.953cm]{logotitle}{Die einfache Variante -- Titel links, Logo rechts.}
\LogoTitle{Beispieltitel}
\Text{(...und hier geht's weiter.)}
\end{ShortExample} \end{ShortExample}
\subsubsection{\texttt{\textbackslash AddressTitle\{Titel\}}}
\begin{ShortExample}[8.865cm]{addresstitle}{Titel und Adresse}
\AddressTitle{Beispieltitel}
\Text{(...und hier geht's weiter.)}
\end{ShortExample}
Es gibt auch die Variante mit \texttt{*}, welche zusätzlich das Logo einbettet.
\begin{ShortExample}[8.865cm]{addresstitlestar}{Titel, Adresse und Logo}
\AddressTitle*{Beispieltitel}
\Text{(...und hier geht's weiter.)}
\end{ShortExample}
\subsection{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}
"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:
\begin{ShortExample}{textgood}{Text mit korrekten Abständen}
\Text{Dieser Satz kein Verb.}
\TextField{Lachhubel}
\Text{Die blöden Ösen!}
\end{ShortExample}
\begin{ShortExample}{textbad}{lose Worte -- nicht gut!}
Dieser Satz kein Verb.
\TextField{Lachhubel}
Die blöden Ösen!
\end{ShortExample}
Auch lange Texte mit mehreren Absätzen können in \texttt{\textbackslash Text}
verwendet werden.
\begin{ShortExample}{textlong}{langer Text ist kein Problem}
\Text{
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit.
Aenean commodo ligula eget dolor.
}
\TextField{Aenean massa.}
\Text{
Cum sociis natoque penatibus et
magnis dis parturient montes,
nascetur ridiculus mus.
Donec quam felis, ultricies nec,
pellentesque eu, pretium quis, sem.
Nulla consequat massa quis enim.
}
\end{ShortExample}
\subsubsection{Textfelder}
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).
\begin{ShortExample}{textfield}{normales Textfeld} \begin{ShortExample}{textfield}{normales Textfeld}
\TextField{abc} \TextField{Bezeichnung}
\end{ShortExample} \end{ShortExample}
Wird die volle Breite benötigt gibt es auch die Variante mit Stern:
\begin{ShortExample}{textfieldstar}{maximale Breite}
\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.
\begin{ShortExample}{shorttextfield}{kurzes Textfeld} \begin{ShortExample}{shorttextfield}{kurzes Textfeld}
\ShortTextField{abc} \ShortTextField{Stromverbrauch (TWh)}
\end{ShortExample} \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.
\begin{ShortExample}{shorttextfieldopt}{besonders kurzes Textfeld}
\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.
\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
werden, hierfür gibt es daher ein Feld was nur ein "falsches" Formularfeld ist.
\begin{ShortExample}{signature}{Feld für Unterschriften}
\Signature
\end{ShortExample}
Das Label kann optional geändert werden.
\begin{ShortExample}{signatureopt}{Unterschrift mit anderem Label}
\Signature[Unterschrift]
\end{ShortExample}
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[Platz zum Malen]
\Text{}
\end{ShortExample}
\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.)
\begin{ShortExample}{checkbox}{Checkboxen}
\Checkbox{Ich habe die AGB,
Datenschmutzerklärung,
Beitragsordnung, Satzung, Hausordnung
(inklusive Durchführungsverordnung
zur Pflanzenpflege im Treppenhaus),
Geheimhaltungsvereinbarung, die
Datenschutzgrundsätze in leichter
Sprache (PDF, 451 Seiten), das
Hygienekonzept, sowie die Anleitung
zum Lesen von Anleitungen gelesen.}
\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.
\begin{ShortExample}{othercheckbox}{"Sonstiges"}
\Text{Meine Lieblingstaste ist:}
\begin{Indented}
\Checkbox{Escape}
\Checkbox{Enter}
\CheckboxOther[0.1]{Buchstabe}
\CheckboxOther[0.1]{F\hspace{-1em}}
\CheckboxOther{}
\end{Indented}
\end{ShortExample}
\goodbreak
\paragraph{Spezielle Zwecke}
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
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}-\nobreak Leerzeichen angehängt werden.)
\begin{ShortExample}{inlinecheckbox}{Sonderfall -- Inline}
\Text{Ich bin \InlineCheckbox groß,
\InlineCheckbox grau, und/oder
\InlineCheckbox unwichtig.
}
\begin{Indented}
\Text{(Bearbeitungsvermerk: Bei
Anwahl von zwei oder mehr ist der/die
Ausfüllende möglicherweise ein
Irrelefant und vor Aufnahme
\ul{zwingend} eine
Löschdiskussionsrecherche
durchzuführen.)}
\end{Indented}
\end{ShortExample}
\subsection{Struktur}
% Environment: Indented {O{}}
% \RuleSection {m}
% \Rule {}
\subsubsection{"klassische" Struktur}
% \Section {m}
% \Subsection {m}
\subsubsection{mehrspaltige Bereiche}
% \TwoColumns {+m +m}
% \ThreeColumns {+m +m +m}
% \FiveColumns {+m +m +m +m +m}
\subsection{Hervorhebung}
% \details {m}
% \ul {m}
\end{document} \end{document}