Input and compilation/Sample documents/Midgard PC sheet

Unofficial ConTeXt Wiki mirror

Last modified: 2026-02-09

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