Det hender at jeg bruker plain TeX, selv om favoritten er og blir LaTeX. For noen år siden lagde jeg en bursdagskalender som regner ut hvor gamle folk blir. Under finner du et sensurert eksempel. Du kan sniktitte på denne PDF-fila dersom du lurer på hvordan en slik kalender kan se ut.

% bursdagskalender.tex - genererer en bursdagskalender

\font\seventeenbf=cmbx12 at 17pt
\font\fourteenbf=cmbx12 at 14pt
\font\twelvebf=cmbx12 at 12pt
\font\twelvett=cmtt12 at 12pt
\font\twelverm=cmr12 at 12pt

\twelverm
\baselineskip=14pt plus0pt minus0pt
\lineskip=0pt plus0pt minus0pt
\lineskiplimit=0pt

% Originale verdier fra plain.tex:
%\hsize=6.5in
%\vsize=8.9in
% Dette tilsvarer hhv 165.1mm og 226.06mm

% A4-ark er 210mm bred og 297mm høy.
% Jeg håper dette er vettuge verdier.
%\hoffset=-5.4mm % skulle gi 2cm venstremarg
%  \hsize=170mm  % skulle gi 2cm høyremarg
%\voffset=-5.4mm % skulle gi 2cm toppmarg
%  \vsize=257mm  % skulle gi 2cm bunnmarg

%\hoffset=-10.4mm % skulle gi 1.5cm venstremarg
%  \hsize=180mm   % skulle gi 1.5cm høyremarg
%\voffset=-10.4mm % skulle gi 1.5cm toppmarg
%  \vsize=267mm   % skulle gi 1.5cm bunnmarg

\hoffset=-15.4mm % skulle gi 1cm venstremarg
  \hsize=190mm   % skulle gi 1cm høyremarg
\voffset=-15.4mm % skulle gi 1cm toppmarg
  \vsize=277mm   % skulle gi 1cm bunnmarg

% Trenger ikke sidetall og heller ikke blokkjustering.
\nopagenumbers
\raggedright

% Tillate æ-ø-å.
\catcode`Æ=13
\catcode`Ø=13
\catcode`Å=13
%
\catcode`æ=13
\catcode`ø=13
\catcode`å=13
%
\uccode`Æ=`Æ
\uccode`æ=`Æ
\uccode`Ø=`Ø
\uccode`ø=`Ø
\uccode`Å=`Å
\uccode`å=`Å
%
\lccode`Æ=`æ
\lccode`æ=`æ
\lccode`Ø=`ø
\lccode`ø=`ø
\lccode`Å=`å
\lccode`å=`å
%
\defÆ{{\AE}}
\defØ{{\O}}
\defÅ{{\AA}}
%
\defæ{{\ae}}
\defø{{\o}}
\defå{{\aa}}

%%%

% Experimenter for å få til to spalter pr side, knabbet fra The TeXbook, side 257:

\newdimen\fullhsize
%\fullhsize=170mm \hsize=80mm % 2cm marger + 1cm spalteluft
%\fullhsize=180mm \hsize=85mm % 1.5cm marger + 1cm spalteluft
\fullhsize=190mm \hsize=90mm % 1cm marger + 1cm spalteluft
\def\fullline{\hbox to\fullhsize}

\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
  \fullline{\vbox to8.5pt{}\the\headline}\vss}\nointerlineskip}

\def\makefootline{\baselineskip=24pt \lineskiplimit=0pt
  \fullline{\the\footline}}

\let\lr=L \newbox\leftcolumn

\def\tospalter{\if L\lr
    \global\setbox\leftcolumn=\columnbox \global\let\lr=R
  \else \doubleformat \global\let\lr=L\fi
  \ifnum\outputpenalty>-20000 \else\dosupereject\fi}

\output={\tospalter}

\def\doubleformat{\shipout\vbox{\makeheadline
    \fullline{\box\leftcolumn\hfil\columnbox}
    \makefootline}
  \advancepageno}

\def\columnbox{\leftline{\pagebody}}

% Noen makroer knabbet fra cwebmac.tex og tilpasset norske forhold.
\def\today{\number\day.~\ifcase\month\or
  januar\or februar\or mars\or april\or mai\or juni\or
  juli\or august\or september\or oktober\or november\or desember\fi
  \space\number\year}
\newcount\twodigits
\def\hours{\twodigits=\time \divide\twodigits by60 \printtwodigits
  \multiply\twodigits by-60 \advance\twodigits by\time :\printtwodigits}
\def\gobbleone1{}
\def\printtwodigits{\advance\twodigits100
  \expandafter\gobbleone\number\twodigits
  \advance\twodigits-100 }

% Knabbet fra svaret til oppgave 11.6 i The TeXbook, side 311.
\def\frac#1/#2{\leavevmode\kern.1em
\raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}

\newcount\aar

\def\lesaar{
  \message{Tast inn året: }
  \read-1 to\nyttaar
  \aar=\nyttaar}

\def\maaned#1{
  \filbreak
  \bigskip
  \noindent
  {\twelvebf #1}
  \gdef\maanedsnavn{\lowercase{#1}}
  \par
  \nobreak}

\newcount\antallnavn
\newcount\alder

\def\beregnalder#1{
  \advance\antallnavn by1
  \alder=\aar
  \advance\alder by-#1}

\def\toposisjoner#1{
  \ifnum#1<10 % må ha mellomrom her
    \phantom{0}
  \fi
  #1}

\def\goodlinebreak{\hfil\penalty200\hfilneg }

% #1 = dag, #2 = fødselsår, #3 = navn
\def\bursdag#1#2#3{
  \gdef\dagnummer{#1}
  \beregnalder{#2}
  \item{\toposisjoner{#1}.} #3 \goodlinebreak (#2) \goodlinebreak blir \the\alder~år.
  \par
  \nobreak}

% #1 = fødselsår, #2 = navn
\def\sammedag#1#2{
  \beregnalder{#1}
  \item{\phantom{00.}} #2 \goodlinebreak (#1) \goodlinebreak blir \the\alder~år.
  \par
  \nobreak}

% #1 = dag, #2 = fødselsår, #3 = navn, #4 = dødsår, #5 = max alder
\def\xbursdag#1#2#3#4#5{
  \gdef\dagnummer{#1}
  \beregnalder{#2}
  \item{\toposisjoner{#1}.} #3 \goodlinebreak (#2--#4) \goodlinebreak
  \ifnum#4=\aar % må ha mellomrom her
    ble #5~år.
  \else
    kunne ha blitt \the\alder~år, men ble #5~år.
  \fi
  \par
  \nobreak}

% #1 = fødselsår, #2 = navn, #3 = dødsår, #4 = max alder
\def\xsammedag#1#2#3#4{
  \beregnalder{#1}
  \item{\phantom{00.}} #2 \goodlinebreak (#1--#3) \goodlinebreak
  \ifnum#3=\aar % må ha mellomrom her
    ble #4~år.
  \else
    kunne ha blitt \the\alder~år, men ble #4~år.
  \fi
  \par
  \nobreak}

% #1 = dag, #2 = fødselsår, #3 = navn, #4 = dødsdag, #5 = dødsmåned, #6 = dødsår, #7 = max alder
\def\xxbursdag#1#2#3#4#5#6#7{
  \gdef\dagnummer{#1}
  \beregnalder{#2}
  \item{\toposisjoner{#1}.} #3 \goodlinebreak (#2--#4.~#5~#6) \goodlinebreak
  \ifnum#6=\aar % må ha mellomrom her
    ble #7~år.
  \else
    kunne ha blitt \the\alder~år, men ble #7~år.
  \fi
  \par
  \nobreak}

% #1 = fødselsår, #2 = navn, #3 = dødsdag, #4 = dødsmåned, #5 = dødsår, #6 = max alder
\def\xxsammedag#1#2#3#4#5#6{
  \beregnalder{#1}
  \item{\phantom{00.}} #2 \goodlinebreak (#1--#3.~#4~#5) \goodlinebreak
  \ifnum#5=\aar % må ha mellomrom her
    ble #6~år.
  \else
    kunne ha blitt \the\alder~år, men ble #6~år.
  \fi
  \par
  \nobreak}

%%%

% Oppbygningen av kalenderen er fanget inn i en egen makro.
\def\kalender{
% Eventuelt lese inn året fra tastaturet.
\ifnum\aar=0 \lesaar\fi

% Nullstille \antallnavn. Kjekt når flere kalendere skal lages i samme omgangen.
\antallnavn=0

%\centerline{\seventeenbf Bursdagskalender for \the\aar}
\leftline{\seventeenbf Bursdagskalender for \the\aar}

\maaned{Januar}

\bursdag{10}{1938}{Donald Ervin Knuth}

%\maaned{Februar}

\maaned{Mars}

\xxbursdag{ 3}{1920}{James ``Scotty'' Doohan}{20}{juli}{2005}{85}
\bursdag{ 4}{1923}{Sir Patrick Caldwell-Moore}
\bursdag{20}{1951}{Carl Palmer}
\bursdag{21}{1993}{NetBSD}

\maaned{April}

\xbursdag{13}{1911}{Donald James Leslie}{2004}{93}

\maaned{Mai}

\bursdag{17}{1814}{Grunnlovsdag}
\sammedag{1949}{Andrew Latimer}
\xxbursdag{23}{1934}{Robert A. Moog}{21}{august}{2005}{71}

\maaned{Juni}

\bursdag{19}{1993}{FreeBSD}
\xxbursdag{27}{1947}{Tron Øgrim}{23}{mai}{2007}{59}

\maaned{Juli}

\bursdag{ 4}{1776}{U.S. Independence Day}

\maaned{August}

\xxbursdag{27}{1926}{Kristen Nygaard}{10}{august}{2002}{76}

\maaned{September}

\bursdag{17}{1787}{U.S. Constitution Day}

\maaned{Oktober}

\bursdag{ 1}{1996}{OpenBSD}
\xxbursdag{12}{1931}{Ole-Johan Dahl}{29}{juni}{2002}{71}
\bursdag{20}{1969}{Arpanet/Internett}

\maaned{November}

\bursdag{ 2}{1944}{Keith Emerson}
\bursdag{10}{1948}{Greg Lake}

%\maaned{Desember}

\vskip3\baselineskip
%\noindent
\rightline{\the\antallnavn\ navn på lista.}

\vskip 0pt plus 1filll
\noindent
Mekket med plain \TeX\ + noen hjemmesnekrede makroer.
Sist kvernet av \TeX\ den \today, kl.~\hours.

% For å bygge opp en tom høyrespalte på siste side ved behov.
\supereject
\if R\lr \null\vfill\eject\fi
}

%%%%

\aar=\the\year\kalender % Lage kalender for inneværende år.

% Andre eksempler som gir en kalender på hvert sitt ark:

%\advance\aar by1\kalender % Kalender for det påfølgende året.
%\aar=2009\kalender % Kalender for 2009.
%\lesaar\kalender % Kalender for et brukervalgt år.

\bye

Local Variables:
TeX-PDF-mode:t
End: