This is a character sheet for the German pen and paper fantasy roleplaying game (RPG) Midgard (4th ed.). It’s an application of ConTeXt’s interactive form capabilities. Probably some problems could have been solved better.
It’s originally from 2009 but updated in 2025.
You can find the resulting PDF and sample form data (FDF) on Codeberg.
\mainlanguage[de] %\showframe % Covington fonts by Apostrophe Labs (free), see e.g. % http://moorstation.org/typoasis/designers/lab/index.htm \definefontfamily[midfont][rm][Covington] \definefontfamily[midfont][ss][Covington-Exp] \setupbodyfont[midfont,rm,7.5pt] \setupbodyfontenvironment [default][em=italic] %\setuptolerance[verytolerant] \setupindenting[0pt] \setuppapersize[A4,landscape]%[A4,landscape] \setuplayout[ location=singlesided, grid=no, topspace=5mm, backspace=6mm, header=10mm, height=200mm, footer=0mm, width=285mm, %leftmargin=6mm, rightmargin=6mm, leftmargindistance=0mm, rightmargindistance=0mm, headerdistance=0mm, ] \setuppagenumbering [state=stop] \setupinteraction [ state=start, title={Midgard Charakterbogen}, author={Henning Hraban Ramm}, keyword={Midgard Rollenspiel RPG Fantasy Character Sheet SpF}] \setupcolors[state=start] \setupblank[small] \definelayer[Text][width=1tw,height=1th,voffset=3mm] \setupbackgrounds[text][background=Text] \definelayer[Kopf][width=1tw,height=6mm,repeat=yes] \setupbackgrounds[header][text][background=Kopf,state=repeat] \setlayer[Kopf]{\externalfigure[midgard-kopf][width=1tw]} %\tracefieldstrue % DEBUG % define text fields % 1: Außenrahmen % 2: Label % 3: Entry %\setupfields [label,frame,horizontal] % [frame=off, offset=0pt, height=10pt] % [frame=off, offset=0pt, width=35mm, align=right, height=10pt] % [frame=off, width=5mm, offset=0pt, height=10pt] %\setupfield [fett][label, frame, horizontal] % [] % [style=\bf] % [] %\setupfields [line][frame=off, height=10pt, width=5mm] %\setupfield [Grundwert][line][style=\bf] \setupfields[option=printable, offset=0pt] \setupfield [MidWert][reset,horizontal] [frame=off, height=11pt, width=6.5mm, offset=0pt] \setupfield [MidBon][reset,horizontal] [frame=off, height=11pt, width=14mm, offset=0pt] \setupfield [MidFert][reset,horizontal] [frame=off, height=11pt, width=4.5mm, offset=0pt] \setupfield [MidWide0][reset,horizontal] [frame=off, height=11pt, width=25mm, offset=0pt] \setupfield [MidWide1][reset,horizontal] [frame=off, height=11pt, width=30mm, offset=0pt] \setupfield [MidWide2][reset,horizontal] [frame=off, height=11pt, width=71mm, offset=0pt] \setupfield [MidWide3][reset,horizontal] [frame=off, height=11pt, width=122mm, offset=0pt] \setupfield [MidSchad][reset,horizontal] [frame=off, height=11pt, width=9mm, offset=0pt] \setupfield [MidMagic][reset,horizontal] [frame=off, height=11pt, width=78mm, offset=0pt] \setupfield [MidMagicFert][reset,horizontal] [frame=off, height=11pt, width=6mm, offset=0pt] \setupfield [MidNotes] [frame=off, height=22em, width=1tw, offset=overlay] % \DivFeld{Name}{Typ} \def\DivFeld#1#2{\bTD\definefield[#1][line][#2][]\field[#1]\eTD} \def\Leerzeile#1{\bTR\bTD[nc=#1]\strut\eTD�\eTR} \def\WertFeld#1#2{\bTR\bTD #1\hfill(#2)\eTD\DivFeld{#2}{MidWert}\eTR} \def\GrundwertFeld#1#2{\bTR\bTD{\ss\bf #1}\hfill(#2)\eTD\bTD\bf\definefield[#2][line][MidWert][]\field[#2]\eTD\eTR} \def\BonusFeld#1{\DivFeld{#1}{MidBon}} \def\Sprache#1{\bTR\DivFeld{Sprache#1Name}{MidWide1}\DivFeld{Sprache#1Sprechen}{MidFert}\DivFeld{Sprache#1Schreiben}{MidFert}\eTR} % \SinnFeld[+8][Hoeren]{Hören} \def\SinnFeld{\dodoubleempty\doSinnFeld} \def\doSinnFeld[#1][#2]#3{\bTR\bTD[nc=2] #3 \doifelsenothing{#1}{}{\hfill (#1)} \eTD \bTD \doifelsenothing{#2}% {\definefield[#3][line][MidFert][#1]\field[#3]}% {\definefield[#2][line][MidFert][#1]\field[#2]} \eTD\eTR} % \SkillFeld[+8][Aergern]{Ärgern} \def\SkillFeld{\dodoubleempty\doSkillFeld} \def\doSkillFeld[#1][#2]#3{\bTR\bTD #3 \iffirstargument\hfill (#1)\fi \eTD \bTD \doifelsenothing{#2}{ \definefield[#3][line][MidFert][#1]\field[#3] }{ \definefield[#2][line][MidFert][#1]\field[#2] } \eTD\eTR} % \SkillFeld[+8][Ueberleben]{Überleben}{(Heimat)} \def\SkillFeldHoch{\dodoubleempty\doSkillFeldHoch} \def\doSkillFeldHoch[#1][#2]#3#4{\bTR[bottomframe=off]\bTD #3 \iffirstargument\hfill (#1)\fi \eTD \bTD \doifelsenothing{#2}{ \definefield[#3][line][MidFert][#1]\field[#3] }{ \definefield[#2][line][MidFert][#1]\field[#2] } \eTD\eTR \bTR[topframe=off] \bTD #4\eTD\bTD\strut\eTD\eTR} \def\SkillFeldLeer#1{\bTR \DivFeld{Fertigkeit#1Name}{MidWide1} \DivFeld{Fertigkeit#1Wert}{MidFert} \eTR} \def\MagicZeile#1{\bTR \DivFeld{Zauber#1Name}{MidMagic} \DivFeld{Zauber#1AP}{MidMagicFert} \DivFeld{Zauber#1Art}{MidMagicFert} \DivFeld{Zauber#1Wz}{MidMagicFert} \DivFeld{Zauber#1Zd}{MidMagicFert} \DivFeld{Zauber#1Wd}{MidMagicFert} \DivFeld{Zauber#1Wb}{MidMagicFert} \DivFeld{Zauber#1Rw}{MidMagicFert} \DivFeld{Zauber#1ArcS}{MidMagicFert} \eTR} \def\WaffenZeile#1{\bTR \DivFeld{Waffe#1Name}{MidWide1} \DivFeld{Waffe#1EW}{MidFert} \DivFeld{Waffe#1Schaden}{MidSchad} \DivFeld{Waffe#1Nah}{MidFert} \eTR} \def\Kampfrunde#1#2{\DivFeld{#1KR#2}{MidWert}} \setupheader[text][state=start, style={\bfa}] \setuphead[title][style={\ss\bfd}, align=center, page=no, before={}, after={}] %\hw\bfd\sc \setuphead[subject][style={\ss}] \setupcaptions[align=right, style={\ss}, location=top] \setupcombinations[align=right, style={\ss}, location=high, width=fit] % hw: plain=first / it=cond / sl=light / bd=exp %%% ENDE DEFINITIONEN \starttext %\title{Midgard Charakterblatt} %\externalfigure[midgard-kopf][width=1tw,height=4em] %\blank \setupTABLE[row][each][height=5mm,boffset=0pt]% \setlayerframed[Text][x=0pt,y=0mm,offset=overlay,align=flushright,frame=off,width=.45tw]{% % LINKE SEITE %\setupTABLE[width=fit] \setupTABLE[column][1,3,4][width=25mm]% \setupTABLE[column][2][width=72mm]% \bTABLE \bTR\bTD \bf Name der Figur \eTD\bTD\bf\definefield[SpfName][line][MidWide2][]\field[SpfName]\eTD\bTD SpielerIn \eTD\DivFeld{Spieler}{MidWide0}\eTR \bTR\bTD Typ/Spezialisierung \eTD\DivFeld{Typ}{MidWide2} \bTD Grad \eTD\DivFeld{Grad}{MidWide0}\eTR \bTR\bTD Heimat \eTD\DivFeld{Heimat}{MidWide2} \bTD Geburtstag/Alter \eTD\DivFeld{Alter}{MidWide0}\eTR \bTR\bTD Glaube \eTD\DivFeld{Glaube}{MidWide2} \bTD Gestalt \eTD\DivFeld{Gestalt}{MidWide0}\eTR \bTR\bTD Stand \eTD\DivFeld{Stand}{MidWide2} \bTD Gewicht/Größe \eTD\DivFeld{Gewicht}{MidWide0}\eTR \bTR\bTD Berufe \eTD\DivFeld{Berufe}{MidWide2} \bTD Händigkeit \eTD\DivFeld{haendig}{MidWide0}\eTR \bTR\bTD Merkmale \eTD \bTD[nc=3]\definefield[Merkmale][line][MidWide3][]\field[Merkmale]\eTD\eTR %\bTR\bTD Merkmale \eTD \bTD[nr=2,nc=3] {\strut}\eTD\eTR %\bTR\bTD {\strut}\eTD\eTR \eTABLE \blank % \setupTABLE[column][1][width=40mm] \setupTABLE[column][2][width=7.25mm] \startcombination[3*2]% {\bTABLE \GrundwertFeld{Stärke}{St} \GrundwertFeld{Konstitution}{Ko} \WertFeld{Aussehen}{Au} \WertFeld{Selbstbeherrschung}{Sb} \WertFeld{Göttliche Gnade}{GG} \eTABLE}{} {\bTABLE \GrundwertFeld{Geschicklichkeit}{Gs} \GrundwertFeld{Intelligenz}{In} \WertFeld{pers. Ausstrahlung}{pA} \WertFeld{Willenskraft}{Wk} \WertFeld{Schicksalsgunst}{SG} \eTABLE}{} {\bTABLE \GrundwertFeld{Gewandtheit}{Gw} \GrundwertFeld{Zaubertalent}{Zt} \WertFeld{Bewegungsweite}{B} \GrundwertFeld{AP-Maximum}{APmax} \GrundwertFeld{LP-Maximum}{LPmax} \eTABLE}{} % {\bTABLE \bTR\bTD[nc=2]\ss Boni\eTD\eTR \WertFeld{Ausdauerbonus}{AusB} \WertFeld{Schadensbonus}{SchB} \WertFeld{Angriffsbonus}{AnB} \WertFeld{Abwehrbonus}{AbB} \WertFeld{Zauberbonus}{ZauB} \eTABLE}{}%{Boni} {\bTABLE \bTR\bTD[nc=2]\ss Resistenzen\eTD\eTR \WertFeld{Geistesmagie}{psyR} \WertFeld{Körpermagie}{phsR} \WertFeld{Umgebungsmagie}{phkR} \Leerzeile{2} \WertFeld{Gifttoleranz}{GiT} \eTABLE}{}%{Resistenzen} {\bTABLE \bTR\bTD[nc=2]\ss Rüstung\eTD\eTR \WertFeld{Rüstungsklasse (–\hfill LP)}{RK} \WertFeld{Bewegungsweite i.R.}{B iR} \WertFeld{Gewandtheit i.R.}{Gw iR} \WertFeld{Angriffsbonus i.R.}{AnB iR} \WertFeld{Abwehrbonus i.R.}{AbB iR} \eTABLE}{}%{Rüstung} \stopcombination } \setlayerframed[Text][x=.5tw,y=0mm,offset=overlay,align=flushright,frame=off,width=.5tw]{% % RECHTE SEITE \setupTABLE[row][each][height=5.125mm,boffset=0pt]% \setupTABLE[column][1][width=79mm]% \setupTABLE[column][2,3,4,5,6,7,8,9][width=7mm]% \bTABLE% Zauber \bTR\bTD{\ss Zauber/Magische Gegenstände}\eTD\bTD\tooltip{AP}{AP-Kosten}\eTD\bTD Art \eTD\bTD\tooltip{Wz}{Wirkungszeit}\eTD\bTD\tooltip{Zd}{Zauberdauer}\eTD\bTD\tooltip{Wd}{Wirkungsdauer}\eTD\bTD \tooltip{Wb}{Wirkungsbereich}\eTD\bTD\tooltip{Rw}{Reichweite}\eTD\bTD\tooltip{S.}{Seite Arkanum}\eTD\eTR \dorecurse{17}{\expanded{\MagicZeile{\recurselevel}}} \bTR[frame=off, align=low]\bTD[nc=8]\vfilll\eTD\eTR \eTABLE% Zauber } \strut \vfill % UNTEN \setupTABLE[column][1][width=30.25mm] \setupTABLE[column][2,3,4][width=5mm] \startcombination[7*1]% {\bTABLE %\dorecurse{8}{\bTR\bTD \strut \eTD \bTD \strut \eTD \bTD \strut \eTD\eTR} %\dorecurse{8}{\expandafter{\Sprache{\recurselevel}}} %%%%%%%%%%%%%%%%%%% Wie geht das?? \bTR\bTD[nc=3]{\ss Sprachen}\hfill{\tfx sprechen/schreiben}\eTD\eTR \dorecurse{10}{\expanded{\Sprache{\recurselevel}}} %\Leerzeile{3} \bTR\bTD[nc=3]{\ss Sinne}\eTD\eTR \SinnFeld[+8]{Sehen} \SinnFeld[+8][Hoeren]{Hören} \SinnFeld[+8]{Riechen} \SinnFeld[+8]{Schmecken} \SinnFeld[+8]{Tasten} \SinnFeld[+2][SechsterSinn]{6. Sinn} \eTABLE}{}%{\tooltip{Sprachen}{sprechen/schreiben} \& Sinne} {\bTABLE \SkillFeld[+11][Abwehr]{\bf Abwehr (+AbB)} \SkillFeld[+8]{Akrobatik} \SkillFeld[+8]{Balancieren} \SkillFeld[+3]{Beredsamkeit} \SkillFeld[+3]{Beschatten} \SkillFeld[+0]{Erste Hilfe} \SkillFeld[+4][Erzaehlen]{Erzählen} \SkillFeld[+0]{Fallen entdecken} \SkillFeld[+1]{Fallen stellen} \SkillFeld[+0]{Fallenmechanik} \SkillFeld[+8]{Fangen} \SkillFeld[+1][Geheimmechanismen]{Geh.mech. öffn.} \SkillFeld[+8][Gelaendelauf]{Geländelauf} \SkillFeld[+5]{Kampftaktik} \SkillFeld[+8]{Klettern} \SkillFeldHoch[+8]{Landeskunde}{(Heimat)} \SkillFeld[+3][Menschenkenntnis]{Menschenkennt.} \eTABLE}{}%{Fertigkeiten} {\bTABLE \SkillFeld[+0/+6]{Meucheln} \SkillFeld[+0]{Naturkunde} \SkillFeld[+0]{Pflanzenkunde} \SkillFeld[+5]{Reiten} \SkillFeld[+3]{Rudern} \SkillFeld[+0]{Sagenkunde} \SkillFeld[+3]{Schleichen} \SkillFeld[+3]{Schlitten fahren} \SkillFeld[+0][SchloesserOeffnen]{Schlösser öffnen} \SkillFeld[+3]{Schwimmen} \SkillFeld[+4]{Seilkunst} \SkillFeld[+4]{Singen} \SkillFeld[+8]{Springen} \SkillFeld[+0]{Spuren lesen} \SkillFeld[+3]{Stehlen} \SkillFeld[+3]{Suchen} \SkillFeld[+8]{Tanzen} \SkillFeld[+3]{Tarnen} \eTABLE}{}%{Fertigkeiten} {\bTABLE \SkillFeld[+9]{Tauchen} \SkillFeld[+0]{Tierkunde} \SkillFeld[+Ko/10]{Trinken} \SkillFeldHoch[+6][Ueberleben]{Überleben}{(Heimat)} %\bTR[bottomframe=off]\bTD Überleben\eTD\bTD +6\eTD\eTR %\bTR[topframe=off]\bTD (Heimat)\eTD\bTD\strut\eTD\eTR \SkillFeld[+3]{Verbergen} \SkillFeld[+3][Verfuehren]{Verführen} \SkillFeld[+3][Verhoeren]{Verhören} \SkillFeld[+5]{Verkleiden} \SkillFeld[+3]{Wagen lenken} \SkillFeld[+2]{Wahrnehmung} \SkillFeld[+4]{Werfen} \SkillFeld[+0]{Winden} \SkillFeld[+0]{Zauberkunde} \SkillFeld[+2][Zaubern]{\bf Zaubern (+ZauB)} \dorecurse{3}{\expanded{\SkillFeldLeer{0.\recurselevel}}} %\dorecurse{4}{\bTR\bTD\strut\eTD\bTD\strut\eTD\eTR} %\dorecurse{6}{\SkillFeld{?}} \eTABLE}{}%{Fertigkeiten} {\bTABLE \dorecurse{18}{\expanded{\SkillFeldLeer{1.\recurselevel}}} \eTABLE}{}%{Fertigkeiten} {\bTABLE \dorecurse{18}{\expanded{\SkillFeldLeer{2.\recurselevel}}} \eTABLE}{}%{Fertigkeiten} {\setupTABLE[column][3][width=11mm] \bTABLE \bTR\bTD\ss Waffenfertigkeit \eTD \bTD EW \eTD\bTD{\tfx Schaden}\eTD\bTD Nah \eTD\eTR \bTR\bTD\bf Raufen\eTD\DivFeld{RaufenEW}{MidFert}\bTD 1W6–4 \eTD\bTD \eTD\eTR \dorecurse{16}{\expanded{\WaffenZeile{\recurselevel}}} \eTABLE}{}%{Waffenfertigkeiten} \stopcombination \page\strut %\title{Aktuelles Abenteuer} \setlayerframed[Text][x=0pt,y=0mm,offset=overlay,align=flushleft,frame=off,width=.45tw]{% % LINKE SEITE \setupTABLE[column][1,3,4][width=24mm]% \setupTABLE[column][2][width=70mm]% \bTABLE \bTR\bTD \bf Name der Figur \eTD\bTD\bf\definefield[SpfName][line][MidWide2][]\field[SpfName]\eTD\bTD SpielerIn \eTD\DivFeld{Spieler}{MidWide0}\eTR \bTR\bTD Typ/Spezialisierung \eTD\DivFeld{Typ}{MidWide2} \bTD Grad \eTD\DivFeld{Grad}{MidWide0}\eTR \eTABLE } \blank[3*line] \startcolumns \subject{Besitz} {\setupTABLE[column][1,2,3][width=24mm]% \setupTABLE[column][4][width=69.75mm]% \bTABLE \bTR\bTD Gold\eTD\bTD Silber\eTD\bTD Kupfer\eTD\bTD Edelsteine\eTD\eTR \bTR\DivFeld{GS}{MidWide0}\DivFeld{SS}{MidWide0}\DivFeld{KS}{MidWide0}\DivFeld{ES}{MidWide2}\eTR \eTABLE} {\setupTABLE[column][1][width=72mm]% \setupTABLE[column][2,3,4][width=23.25mm]% \bTABLE \bTR\bTD Waffe/Gegenstand\eTD\bTD wo getragen\eTD\bTD Wert\eTD\bTD Bonus\eTD\eTR \dorecurse{19}{\bTR \expanded{% \DivFeld{WaffeName\recurselevel}{MidWide2} \DivFeld{WaffeWo\recurselevel}{MidWide0} \DivFeld{WaffeWert\recurselevel}{MidWide0} \DivFeld{WaffeBonus\recurselevel}{MidWide0}} \eTR} \eTABLE} {\setupTABLE[column][1][width=95.25mm]% \setupTABLE[column][2,3][width=23.25mm]% \bTABLE \bTR\bTD Verbrauchsmaterialien/Munition für\eTD\bTD Wert\eTD\bTD Anwendungen übrig\eTD\eTR \dorecurse{10}{\bTR \expanded{% \DivFeld{VerbrauchName\recurselevel}{MidWide2} \DivFeld{VerbrauchWert\recurselevel}{MidWide0} \DivFeld{VerbrauchAnzahl\recurselevel}{MidWide0} \eTR}} \eTABLE } \column \subject{Lernen}% \hbox{% % Lernpunkte je Abenteuer oder Datum {\setupTABLE[column][1][width=20mm]% \setupTABLE[column][2][style=boldface]% \setupTABLE[column][2,3,4,5][width=10mm]% \bTABLE \bTR\bTD Anlass/Datum\eTD\bTD\bf GFP\eTD\bTD KEP\eTD\bTD ZEP\eTD\bTD AEP\eTD\eTR \dorecurse{20}{\bTR \expanded{% \DivFeld{LernAnlass\recurselevel}{MidWide0} \DivFeld{LernGFP\recurselevel}{MidSchad} \DivFeld{LernKEP\recurselevel}{MidSchad} \DivFeld{LernZEP\recurselevel}{MidSchad} \DivFeld{LernAEP\recurselevel}{MidSchad}} \eTR} \eTABLE} \quad % Praxispunkte {\setupTABLE[column][1][width=30mm]% \setupTABLE[column][2][width=10mm]% \bTABLE \bTR\bTD Fertigkeit/Waffe\eTD\bTD\bf PP\eTD\eTR \dorecurse{20}{\bTR \expanded{% \DivFeld{PPName\recurselevel}{MidWide0} \DivFeld{PPWert\recurselevel}{MidWert}} \eTR} \eTABLE} } %Notizfeld \definefield[Notizen][text][MidNotes][]\field[Notizen] \stopcolumns \setlayerframed[Text][x=.5tw,y=0mm,offset=overlay,align=flushright,frame=off,width=.45tw]{% \setupTABLE[column][each,1,2,3,4,5][width=7mm]% \setupTABLE[column][1,2][style=boldface,rulethickness=1pt,offset=1pt]% \bTABLE \bTR \bTD LP\eTD \DivFeld{LPmax}{MidWert} \dorecurse{18}{\expanded{\Kampfrunde{LP}{\recurselevel}}} \eTR \bTR \bTD AP\eTD \DivFeld{APmax}{MidWert} \dorecurse{18}{\expanded{\Kampfrunde{AP}{\recurselevel}}} \eTR \eTABLE} \stoptext