summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/othello
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/othello
Initial commit
Diffstat (limited to 'macros/latex/contrib/othello')
-rw-r--r--macros/latex/contrib/othello/boards.tex570
-rw-r--r--macros/latex/contrib/othello/ot.bat1
-rw-r--r--macros/latex/contrib/othello/ot.mf1
-rw-r--r--macros/latex/contrib/othello/ot1.bat.bat1
-rw-r--r--macros/latex/contrib/othello/ot10.mf1
-rw-r--r--macros/latex/contrib/othello/ot15.mf1
-rw-r--r--macros/latex/contrib/othello/ot1bla10.mf1
-rw-r--r--macros/latex/contrib/othello/ot1bla15.mf1
-rw-r--r--macros/latex/contrib/othello/ot1bla20.mf1
-rw-r--r--macros/latex/contrib/othello/ot1black.mf735
-rw-r--r--macros/latex/contrib/othello/ot1neu.mf702
-rw-r--r--macros/latex/contrib/othello/ot1neu10.mf1
-rw-r--r--macros/latex/contrib/othello/ot1neu15.mf1
-rw-r--r--macros/latex/contrib/othello/ot1neu20.mf1
-rw-r--r--macros/latex/contrib/othello/ot1whi10.mf1
-rw-r--r--macros/latex/contrib/othello/ot1whi15.mf1
-rw-r--r--macros/latex/contrib/othello/ot1whi20.mf1
-rw-r--r--macros/latex/contrib/othello/ot1white.mf735
-rw-r--r--macros/latex/contrib/othello/othello.sty211
-rw-r--r--macros/latex/contrib/othello/othello.tex635
20 files changed, 3602 insertions, 0 deletions
diff --git a/macros/latex/contrib/othello/boards.tex b/macros/latex/contrib/othello/boards.tex
new file mode 100644
index 0000000000..4103226d49
--- /dev/null
+++ b/macros/latex/contrib/othello/boards.tex
@@ -0,0 +1,570 @@
+\def\startposition{
+\inifulldiagram
+\gofontsize{10}
+\pos{d}{5}=\black{.}
+\pos{d}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{4}=\black{.}
+\centerline{\showfulldiagram}\caption{Othello start position}
+}
+
+\def\cornerpositions{
+\inifulldiagram
+\gofontsize{10}
+\pos{b}{2}=\neutral{65}
+\pos{b}{7}=\neutral{65}
+\pos{g}{2}=\neutral{65}
+\pos{g}{7}=\neutral{65}
+\pos{a}{2}=\neutral{66}
+\pos{a}{7}=\neutral{66}
+\pos{b}{1}=\neutral{66}
+\pos{b}{8}=\neutral{66}
+\pos{g}{8}=\neutral{66}
+\pos{g}{1}=\neutral{66}
+\pos{h}{7}=\neutral{66}
+\pos{h}{2}=\neutral{66}
+\centerline{\showfulldiagram}\caption{Special positions around the corners} \label{cornerpositions}
+}
+
+\def\makingamove{
+\inifulldiagram
+\gofontsize{10}
+\pos{d}{5}=\black{.}
+\pos{d}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{4}=\black{.}
+\pos{c}{4}=\neutral{65}
+\pos{d}{3}=\neutral{65}
+\pos{e}{6}=\neutral{65}
+\pos{f}{5}=\neutral{65}
+\centerline{\showfulldiagram}\caption{Black can place his first stone at these
+places}\label{makingamove}
+}
+
+\def\validmoves{
+\inifulldiagram
+\gofontsize{10}
+\pos{d}{5}=\black{.}
+\pos{d}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{4}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{c}{3}=\white{.}
+\centerline{\showfulldiagram}\label{validmoves}\caption{Opening
+c4,c3}
+}
+
+\def\fliponlyonce{
+\inifulldiagram \gofontsize{10} \pos{c}{3}=\white{.}
+\pos{d}{3}=\white{.} \pos{e}{3}=\white{.} \pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.} \pos{f}{5}=\white{.} \pos{f}{6}=\white{.}
+\pos{e}{6}=\white{.} \pos{d}{6}=\white{.} \pos{c}{6}=\white{.}
+\pos{d}{4}=\black{.} \pos{e}{4}=\black{.} \pos{d}{5}=\black{.}
+\pos{e}{5}=\black{.}
+\centerline{\showfulldiagram}\caption{Stones do not flip recursively}\label{fliponlyonce} }
+
+\def\stablestones{
+\inifulldiagram \gofontsize{10} \pos{a}{1}=\black{.}
+\pos{b}{1}=\black{.} \pos{a}{2}=\black{.} \pos{a}{3}=\black{.}
+\pos{b}{2}=\black{.} \pos{a}{4}=\black{.} \pos{h}{1}=\white{.}
+\pos{h}{2}=\white{.} \pos{g}{1}=\white{.} \pos{g}{2}=\white{.}
+\pos{g}{3}=\white{.} \pos{h}{3}=\white{.} \pos{f}{1}=\white{.}
+\centerline{\showfulldiagram}\caption{Example of stable
+stones}\label{stablestones} }
+
+\def\maximumdisk{
+\inifulldiagram
+\gofontsize{10}
+\pos{a}{3}=\white{.}
+\pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{a}{6}=\white{.}
+\pos{b}{3}=\white{.}
+\pos{b}{4}=\white{.}
+\pos{b}{5}=\white{.}
+\pos{b}{6}=\white{.}
+\pos{c}{1}=\white{.}
+\pos{c}{2}=\white{.}
+\pos{c}{3}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{c}{6}=\white{.}
+\pos{c}{7}=\white{.}
+\pos{c}{8}=\white{.}
+\pos{d}{1}=\white{.}
+\pos{d}{2}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{4}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\white{.}
+\pos{d}{7}=\white{.}
+\pos{d}{8}=\white{.}
+\pos{e}{1}=\white{.}
+\pos{e}{2}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.}
+\pos{e}{8}=\white{.}
+\pos{f}{1}=\white{.}
+\pos{f}{2}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\pos{f}{6}=\white{.}
+\pos{f}{7}=\white{.}
+\pos{f}{8}=\white{.}
+\pos{g}{3}=\white{.}
+\pos{g}{4}=\white{.}
+\pos{g}{5}=\white{.}
+\pos{g}{6}=\white{.}
+\pos{h}{3}=\white{.}
+\pos{h}{4}=\white{.}
+\pos{h}{5}=\white{.}
+\pos{h}{6}=\white{.}
+\centerline{\showfulldiagram}\caption{Maximum disk strategy: black to play and win (46-18)}\label{maximumdisk}
+}
+
+\def\stabledisks{
+\inifulldiagram \gofontsize{10} \pos{a}{1}=\white{.}
+\pos{a}{2}=\white{.} \pos{a}{3}=\white{.} \pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.} \pos{a}{6}=\white{.} \pos{b}{1}=\white{.}
+\pos{b}{2}=\white{.} \pos{b}{3}=\white{.} \pos{b}{4}=\white{.}
+\pos{b}{5}=\white{.} \pos{b}{6}=\white{.} \pos{c}{1}=\white{.}
+\pos{c}{2}=\white{.} \pos{c}{3}=\white{.} \pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.} \pos{c}{6}=\white{.} \pos{c}{7}=\white{.}
+\pos{c}{8}=\white{.} \pos{d}{1}=\white{.} \pos{d}{2}=\white{.}
+\pos{d}{3}=\white{.} \pos{d}{4}=\black{.} \pos{d}{5}=\black{.}
+\pos{d}{6}=\white{.} \pos{d}{7}=\white{.} \pos{d}{8}=\white{.}
+\pos{e}{1}=\white{.} \pos{e}{2}=\white{.} \pos{e}{3}=\white{.}
+\pos{e}{4}=\white{.} \pos{e}{5}=\white{.} \pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.} \pos{e}{8}=\white{.} \pos{f}{1}=\white{.}
+\pos{f}{2}=\white{.} \pos{f}{3}=\white{.} \pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.} \pos{f}{6}=\white{.} \pos{f}{7}=\white{.}
+\pos{f}{8}=\white{.} \pos{g}{3}=\white{.} \pos{g}{4}=\white{.}
+\pos{g}{5}=\white{.} \pos{g}{6}=\white{.} \pos{h}{3}=\white{.}
+\pos{h}{4}=\white{.} \pos{h}{5}=\white{.} \pos{h}{6}=\white{.}
+\centerline{\showfulldiagram}\caption{Examples of stable disks in an end game}\label{stabledisks} }
+
+
+
+\def\quietmove{\inifulldiagram
+\gofontsize{10}
+\pos{b}{5}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{f}{3}=\black{.}
+\pos{g}{3}=\black{.}
+\pos{g}{4}=\black{.}
+\pos{b}{3}=\white{.}
+\pos{b}{4}=\white{.}
+\pos{c}{3}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{4}=\white{.}
+\pos{d}{5}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\pos{g}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{Example of a quiet move}\label{quietmove}}
+
+\def\frontiermovetwo{\inifulldiagram
+\gofontsize{10}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{e}{3}=\black{.}
+\pos{f}{3}=\black{.}
+\pos{f}{4}=\black{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{d}{4}=\white{.}
+\pos{d}{5}=\white{.}
+\pos{e}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{}\label{frontiermovetwo}}
+
+\def\frontierstones{\inifulldiagram
+\gofontsize{10}
+\pos{b}{3}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{4}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{d}{7}=\black{.}
+\pos{e}{3}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{e}{5}=\black{.}
+\pos{f}{3}=\black{.}
+\pos{f}{4}=\black{.}
+\pos{f}{5}=\black{.}
+\pos{b}{4}=\white{.}
+\pos{b}{5}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{c}{6}=\white{.}
+\pos{c}{7}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.}
+\pos{f}{6}=\white{.}
+\centerline{\showfulldiagram}\caption{Frontiers in the beginning of the game}\label{frontierstones}}
+
+\def\mobilityexampletwo{\inifulldiagram
+\gofontsize{10}
+\pos{a}{4}=\black{.}
+\pos{b}{3}=\black{.}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{6}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{3}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{e}{5}=\black{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{White to play and win a corner}\label{mobilityexampletwo}}
+
+\def\mobiuitween{\inifulldiagram
+\gofontsize{10}
+\pos{a}{4}=\white{.}
+\pos{b}{3}=\black{.}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{6}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{3}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{e}{5}=\black{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{b}{7}=\black{.}
+\pos{a}{2}=\white{.}
+\pos{a}{3}=\white{.}
+\pos{a}{7}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{a}{6}=\white{.}
+\centerline{\showfulldiagram}\caption{}\label{mobiuitween}}
+
+\def\frontiermoveone{\inifulldiagram
+\gofontsize{10}
+\pos{a}{2}=\black{.}
+\pos{b}{3}=\black{.}
+\pos{c}{1}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{d}{1}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{e}{1}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{f}{1}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{a}{6}=\white{.}
+\pos{a}{7}=\white{.}
+\pos{b}{4}=\white{.}
+\pos{b}{5}=\white{.}
+\pos{b}{6}=\white{.}
+\pos{b}{8}=\white{.}
+\pos{c}{3}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{c}{6}=\white{.}
+\pos{c}{7}=\white{.}
+\pos{c}{8}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{4}=\white{.}
+\pos{d}{5}=\white{.}
+\pos{d}{6}=\white{.}
+\pos{d}{7}=\white{.}
+\pos{d}{8}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\pos{f}{6}=\white{.}
+\pos{f}{7}=\white{.}
+\centerline{\showfulldiagram}\caption{Frontier moves: h6 is devastating for black}\label{frontiermoveone}
+}
+
+\def\wedge{
+\inifulldiagram
+\gofontsize{10}
+\pos{a}{2}=\black{.}
+\pos{a}{3}=\black{.}
+\pos{a}{4}=\black{.}
+\pos{a}{5}=\black{.}
+\pos{a}{6}=\black{.}
+\pos{b}{1}=\black{.}
+\pos{b}{3}=\black{.}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{c}{1}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{6}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{1}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{f}{1}=\black{.}
+\pos{g}{1}=\black{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{4}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{f}{2}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{White plays a4, wedging the first column}\label{wedge}}
+
+\def\wedgetwo{\inifulldiagram
+\gofontsize{10}
+\pos{a}{3}=\black{.}
+\pos{a}{4}=\black{.}
+\pos{a}{5}=\black{.}
+\pos{a}{6}=\black{.}
+\pos{a}{7}=\black{.}
+\pos{b}{1}=\black{.}
+\pos{b}{3}=\black{.}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{c}{1}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{6}=\black{.}
+\pos{d}{1}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{1}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{f}{1}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{g}{1}=\black{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{d}{2}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{4}=\white{.}
+\pos{e}{2}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{Wedging by sacrificing a corner}\label{wedgetwo}
+}
+
+\def\tempo{
+\inifulldiagram
+\gofontsize{10}
+\pos{b}{3}=\black{.}
+\pos{b}{4}=\black{.}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{c}{2}=\black{.}
+\pos{c}{3}=\black{.}
+\pos{c}{6}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{d}{5}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{e}{4}=\black{.}
+\pos{e}{5}=\black{.}
+\pos{e}{6}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{f}{6}=\black{.}
+\pos{a}{3}=\white{.}
+\pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\centerline{\showfulldiagram}\caption{White to move: gaining tempo}\label{tempo}
+}
+
+\def\parity{
+\inifulldiagram
+\gofontsize{10}
+\pos{b}{5}=\black{.}
+\pos{b}{6}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{d}{6}=\black{.}
+\pos{e}{3}=\black{.}
+\pos{e}{5}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{f}{4}=\black{.}
+\pos{g}{1}=\black{.}
+\pos{g}{6}=\black{.}
+\pos{a}{3}=\white{.}
+\pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{a}{6}=\white{.}
+\pos{a}{7}=\white{.}
+\pos{b}{1}=\white{.}
+\pos{b}{3}=\white{.}
+\pos{b}{4}=\white{.}
+\pos{c}{1}=\white{.}
+\pos{c}{2}=\white{.}
+\pos{c}{3}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{5}=\white{.}
+\pos{c}{6}=\white{.}
+\pos{c}{7}=\white{.}
+\pos{c}{8}=\white{.}
+\pos{d}{1}=\white{.}
+\pos{d}{2}=\white{.}
+\pos{d}{3}=\white{.}
+\pos{d}{5}=\white{.}
+\pos{d}{7}=\white{.}
+\pos{d}{8}=\white{.}
+\pos{e}{1}=\white{.}
+\pos{e}{2}=\white{.}
+\pos{e}{4}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.}
+\pos{e}{8}=\white{.}
+\pos{f}{1}=\white{.}
+\pos{f}{3}=\white{.}
+\pos{f}{5}=\white{.}
+\pos{f}{6}=\white{.}
+\pos{f}{7}=\white{.}
+\pos{f}{8}=\white{.}
+\pos{g}{2}=\white{.}
+\pos{g}{3}=\white{.}
+\pos{g}{4}=\white{.}
+\pos{g}{5}=\white{.}
+\pos{g}{8}=\white{.}
+\pos{h}{1}=\white{.}
+\pos{h}{2}=\white{.}
+\pos{h}{3}=\white{.}
+\pos{h}{4}=\white{.}
+\pos{h}{5}=\white{.}
+\pos{h}{6}=\white{.}
+\pos{h}{7}=\white{.}
+\centerline{\showfulldiagram}\caption{Black to play and win}\label{parity}}
+
+\def\paritytwo{
+\inifulldiagram
+\gofontsize{10}
+\pos{c}{5}=\black{.}
+\pos{c}{7}=\black{.}
+\pos{d}{1}=\black{.}
+\pos{d}{2}=\black{.}
+\pos{d}{3}=\black{.}
+\pos{d}{4}=\black{.}
+\pos{e}{1}=\black{.}
+\pos{e}{2}=\black{.}
+\pos{f}{2}=\black{.}
+\pos{f}{3}=\black{.}
+\pos{f}{6}=\black{.}
+\pos{f}{8}=\black{.}
+\pos{g}{3}=\black{.}
+\pos{g}{4}=\black{.}
+\pos{g}{5}=\black{.}
+\pos{g}{8}=\black{.}
+\pos{h}{3}=\black{.}
+\pos{h}{4}=\black{.}
+\pos{h}{5}=\black{.}
+\pos{h}{6}=\black{.}
+\pos{h}{7}=\black{.}
+\pos{h}{8}=\black{.}
+\pos{a}{2}=\white{.}
+\pos{a}{3}=\white{.}
+\pos{a}{4}=\white{.}
+\pos{a}{5}=\white{.}
+\pos{a}{6}=\white{.}
+\pos{a}{7}=\white{.}
+\pos{a}{8}=\white{.}
+\pos{b}{3}=\white{.}
+\pos{b}{4}=\white{.}
+\pos{b}{5}=\white{.}
+\pos{b}{6}=\white{.}
+\pos{b}{7}=\white{.}
+\pos{b}{8}=\white{.}
+\pos{c}{1}=\white{.}
+\pos{c}{2}=\white{.}
+\pos{c}{3}=\white{.}
+\pos{c}{4}=\white{.}
+\pos{c}{6}=\white{.}
+\pos{c}{8}=\white{.}
+\pos{d}{5}=\white{.}
+\pos{d}{6}=\white{.}
+\pos{d}{7}=\white{.}
+\pos{d}{8}=\white{.}
+\pos{e}{3}=\white{.}
+\pos{e}{4}=\white{.}
+\pos{e}{5}=\white{.}
+\pos{e}{6}=\white{.}
+\pos{e}{7}=\white{.}
+\pos{e}{8}=\white{.}
+\pos{f}{1}=\white{.}
+\pos{f}{4}=\white{.}
+\pos{f}{5}=\white{.}
+\pos{f}{7}=\white{.}
+\pos{g}{6}=\white{.}
+\centerline{\showfulldiagram}\caption{Black to play and draw}\label{paritytwo}}
+
+\def\overviewboard{
+\inifulldiagram
+\gofontsize{10}
+\pos{d}{5}=\black{.}
+\pos{d}{4}=\white{.}
+\pos{e}{5}=\white{23}
+\pos{e}{4}=\black{62}
+\pos{d}{3}=\neutral{43}
+\pos{b}{2}=\neutral{65}
+\pos{b}{1}=\neutral{66}
+\centerline{\showfulldiagram}\caption{All possible characters using the Othello package}
+}
+
+\def\overviewboardcorner{
+\inifulldiagram
+\gofontsize{10}
+\pos{d}{5}=\black{.}
+\pos{d}{4}=\white{.}
+\pos{e}{5}=\white{23}
+\pos{e}{4}=\black{62}
+\pos{d}{3}=\neutral{43}
+\pos{b}{2}=\neutral{65}
+\pos{b}{1}=\neutral{66}
+\centerline{\showdiagram a-d:1-4 }\caption{The northwest corner of the overview board}
+}
diff --git a/macros/latex/contrib/othello/ot.bat b/macros/latex/contrib/othello/ot.bat
new file mode 100644
index 0000000000..05901d34ee
--- /dev/null
+++ b/macros/latex/contrib/othello/ot.bat
@@ -0,0 +1 @@
+mf286 &plain \mode=hplaser; input ot1bla15 gftopk ot1bla15.300 mf286 &plain \mode=hplaser; input ot2bla15 gftopk ot2bla15.300 mf286 &plain \mode=hplaser; input ot1whi15 gftopk ot1whi15.300 mf286 &plain \mode=hplaser; input ot2whi15 gftopk ot2whi15.300 mf286 &plain \mode=hplaser; input ot15 gftopk ot15.300 \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot.mf b/macros/latex/contrib/othello/ot.mf
new file mode 100644
index 0000000000..c4947c124e
--- /dev/null
+++ b/macros/latex/contrib/othello/ot.mf
@@ -0,0 +1 @@
+mode_setup; define_pixels(size); define_pixels(line_thickness,border_line_thickness); picture black_circle; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def set_black_circle = currentpicture := nullpicture; pickup pencircle scaled line_thickness; lft x1=1/22size; y1=1/2size; rt x2=23/22size; y2=1/2size; filldraw z1..z2..cycle; black_circle := currentpicture; clearxy; clearit; clearpen; enddef; set_black_circle; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beginchar(0,24/22size#,23/22size#,1/22size#); "punkt hoshi"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; z5=(.5w-.1size,11/24w); z6=(.5w+.1size,11/24w); filldraw z5..z6..cycle; showit; endchar; % stop""; beginchar(1,24/22size#,23/22size#,1/22size#); "pelny krzyz"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; showit; endchar; % stop""; beginchar(2,24/22size#,23/22size#,1/22size#); "lewy brzeg"; pickup pencircle scaled line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(3,24/22size#,23/22size#,1/22size#); "prawy brzeg"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(4,24/22size#,23/22size#,1/22size#); "gorny brzeg"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(5,24/22size#,23/22size#,1/22size#); "dolny brzeg"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(6,24/22size#,23/22size#,1/22size#); "lewy gorny rog"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(7,24/22size#,23/22size#,1/22size#); "prawy gorny rog"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(8,24/22size#,23/22size#,1/22size#); "lewy dolny rog"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(9,24/22size#,23/22size#,1/22size#); "prawy dolny rog"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(10,24/22size#,23/22size#,1/22size#); "pelny krzyz - pion"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(11,24/22size#,23/22size#,1/22size#); "lewy brzeg - pion"; pickup pencircle scaled line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(12,24/22size#,23/22size#,1/22size#); "prawy brzeg - pion"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(13,24/22size#,23/22size#,1/22size#); "gorny brzeg - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(14,24/22size#,23/22size#,1/22size#); "dolny brzeg - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(15,24/22size#,23/22size#,1/22size#); "lewy gorny rog - pion"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(16,24/22size#,23/22size#,1/22size#); "prawy gorny rog - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(17,24/22size#,23/22size#,1/22size#); "lewy dolny rog - pion"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(18,24/22size#,23/22size#,1/22size#); "prawy dolny rog - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; end; \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1.bat.bat b/macros/latex/contrib/othello/ot1.bat.bat
new file mode 100644
index 0000000000..05901d34ee
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1.bat.bat
@@ -0,0 +1 @@
+mf286 &plain \mode=hplaser; input ot1bla15 gftopk ot1bla15.300 mf286 &plain \mode=hplaser; input ot2bla15 gftopk ot2bla15.300 mf286 &plain \mode=hplaser; input ot1whi15 gftopk ot1whi15.300 mf286 &plain \mode=hplaser; input ot2whi15 gftopk ot2whi15.300 mf286 &plain \mode=hplaser; input ot15 gftopk ot15.300 \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot10.mf b/macros/latex/contrib/othello/ot10.mf
new file mode 100644
index 0000000000..68b420cc46
--- /dev/null
+++ b/macros/latex/contrib/othello/ot10.mf
@@ -0,0 +1 @@
+font_identifier:="OT"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=7/10size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot15.mf b/macros/latex/contrib/othello/ot15.mf
new file mode 100644
index 0000000000..30fdb409f9
--- /dev/null
+++ b/macros/latex/contrib/othello/ot15.mf
@@ -0,0 +1 @@
+font_identifier:="OT"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=7/10size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1bla10.mf b/macros/latex/contrib/othello/ot1bla10.mf
new file mode 100644
index 0000000000..98817cd917
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1bla10.mf
@@ -0,0 +1 @@
+font_identifier:="OT1BLACK"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1bla15.mf b/macros/latex/contrib/othello/ot1bla15.mf
new file mode 100644
index 0000000000..e05a02e3a5
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1bla15.mf
@@ -0,0 +1 @@
+font_identifier:="OT1BLACK"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1bla20.mf b/macros/latex/contrib/othello/ot1bla20.mf
new file mode 100644
index 0000000000..f2156ced2b
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1bla20.mf
@@ -0,0 +1 @@
+font_identifier:="OT1BLACK"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1black.mf b/macros/latex/contrib/othello/ot1black.mf
new file mode 100644
index 0000000000..a6c44c89bf
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1black.mf
@@ -0,0 +1,735 @@
+\mode_setup;
+
+define_pixels(size);
+define_pixels(line_thickness,border_line_thickness);
+define_pixels(dig_h,dig_w,dig_pen);
+
+picture digit[];
+picture black_circle;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+def digit_zero =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.5dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=dig_w; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ draw z1...z2...z3...z4...cycle;
+ digit[0] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_one =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.5dig_w; bot y1=0;
+ x2=.5dig_w; top y2=dig_h;
+ draw z1--z2;
+ digit[1] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_two =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.8dig_w; y3=.9dig_h;
+ lft x4=0; bot y4=0;
+ draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4;
+ z5=z4;
+ rt x6=dig_w; bot y6=0;
+ draw z5--z6;
+ digit[2] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_three =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.8dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.52dig_h);
+ rt x5=dig_w; y5=.2dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7;
+ digit[3] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_four =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.75dig_w; bot y1=0;
+ x2=x1; top y2=dig_h;
+ lft x3=0; y3=.3dig_h;
+ rt x4=dig_w; y4=y3;
+ draw z1--z2--z3--z4;
+ digit[4] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_five =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=.95dig_w; top y1=dig_h;
+ lft x2=.05dig_w; y2=y1;
+ lft x3=0; y3=.45dig_h;
+ z4=(.5dig_w,.6dig_h);
+ rt x5=dig_w; y5=.3dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=.15dig_h;
+ draw z1--z2--z3{up}..z4..z5..z6...{up}z7;
+ digit[5] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_six =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=dig_w; y1=.8dig_h;
+ x2=.45dig_w; top y2=dig_h;
+ lft x3=0; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ rt x5=dig_w; y5=.3dig_h;
+ z6=(.53dig_w,.55dig_h);
+ z7=(.03dig_w+.6dig_pen,.25dig_h);
+ draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7;
+ digit[6] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_seven =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; top y1=dig_h;
+ rt x2=dig_w; y2=y1;
+ lft x3=.2dig_w; bot y3=0;
+ draw z1--z2--z3;
+ digit[7] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_eight =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.55dig_h);
+ rt x5=dig_w; y5=.25dig_h;
+ x6=.5dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1...z2...z3...z4...cycle;
+ draw z4...z5...z6...z7...cycle;
+ digit[8] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_nine =
+ currentpicture := nullpicture;
+ currentpicture := digit[6] rotated 180;
+ digit[9] := currentpicture shifted (dig_w,dig_h);
+ clearxy; clearit; clearpen;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight; digit_nine;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(0,24/22size#,23/22size#,1/22size#); "pion czarny";
+ pickup pencircle scaled line_thickness;
+ lft x1=13/24w; y1=-1/24w;
+ rt x2=35/24w; y2=-1/24w;
+ filldraw z1..z2..cycle;
+ black_circle := currentpicture;
+showit;
+endchar;
+
+% stop"";
+
+beginchar(1,24/22size#,23/22size#,1/22size#); "pion czarny z 1";
+ currentpicture :=black_circle
+ - digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(2,24/22size#,23/22size#,1/22size#); "pion czarny z 2";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(3,24/22size#,23/22size#,1/22size#); "pion czarny z 3";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(4,24/22size#,23/22size#,1/22size#); "pion czarny z 4";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(5,24/22size#,23/22size#,1/22size#); "pion czarny z 5";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(6,24/22size#,23/22size#,1/22size#); "pion czarny z 6";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(7,24/22size#,23/22size#,1/22size#); "pion czarny z 7";
+ currentpicture := black_circle
+ - digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(8,24/22size#,23/22size#,1/22size#); "pion czarny z 8";
+ currentpicture := black_circle
+ - digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(9,24/22size#,23/22size#,1/22size#); "pion czarny z 9";
+ currentpicture := black_circle
+ - digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+dig_w := .7dig_w;
+%%%dig_pen := .7dig_pen;
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight; digit_nine;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(10,24/22size#,23/22size#,1/22size#); "pion czarny z 10";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(11,24/22size#,23/22size#,1/22size#); "pion czarny z 11";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(12,24/22size#,23/22size#,1/22size#); "pion czarny z 12";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(14,24/22size#,23/22size#,1/22size#); "pion czarny z 14";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[5] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(16,24/22size#,23/22size#,1/22size#); "pion czarny z 16";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[6] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(18,24/22size#,23/22size#,1/22size#); "pion czarny z 18";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[8] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19";
+ currentpicture := black_circle
+ - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ - digit[9] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(20,24/22size#,23/22size#,1/22size#); "pion czarny z 20";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(22,24/22size#,23/22size#,1/22size#); "pion czarny z 22";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(24,24/22size#,23/22size#,1/22size#); "pion czarny z 24";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(26,24/22size#,23/22size#,1/22size#); "pion czarny z 26";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(28,24/22size#,23/22size#,1/22size#); "pion czarny z 28";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(30,24/22size#,23/22size#,1/22size#); "pion czarny z 30";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(32,24/22size#,23/22size#,1/22size#); "pion czarny z 32";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(34,24/22size#,23/22size#,1/22size#); "pion czarny z 34";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(36,24/22size#,23/22size#,1/22size#); "pion czarny z 36";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(38,24/22size#,23/22size#,1/22size#); "pion czarny z 38";
+ currentpicture := black_circle
+ - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
+ currentpicture := black_circle
+ - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(40,24/22size#,23/22size#,1/22size#); "pion czarny z 40";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(42,24/22size#,23/22size#,1/22size#); "pion czarny z 42";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(44,24/22size#,23/22size#,1/22size#); "pion czarny z 44";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(46,24/22size#,23/22size#,1/22size#); "pion czarny z 46";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(48,24/22size#,23/22size#,1/22size#); "pion czarny z 48";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49";
+ currentpicture := black_circle
+ - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(50,24/22size#,23/22size#,1/22size#); "pion czarny z 50";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(52,24/22size#,23/22size#,1/22size#); "pion czarny z 52";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(54,24/22size#,23/22size#,1/22size#); "pion czarny z 54";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(56,24/22size#,23/22size#,1/22size#); "pion czarny z 56";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(58,24/22size#,23/22size#,1/22size#); "pion czarny z 58";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59";
+ currentpicture := black_circle
+ - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(60,24/22size#,23/22size#,1/22size#); "pion czarny z 60";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(62,24/22size#,23/22size#,1/22size#); "pion czarny z 62";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(64,24/22size#,23/22size#,1/22size#); "pion czarny z 64";
+ currentpicture := black_circle
+ - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+end;
diff --git a/macros/latex/contrib/othello/ot1neu.mf b/macros/latex/contrib/othello/ot1neu.mf
new file mode 100644
index 0000000000..0592ef5598
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1neu.mf
@@ -0,0 +1,702 @@
+mode_setup;
+
+define_pixels(size);
+define_pixels(line_thickness,border_line_thickness);
+define_pixels(dig_h,dig_w,dig_pen);
+
+picture digit[];
+picture white_circle;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+def digit_zero =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.5dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=dig_w; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ draw z1...z2...z3...z4...cycle;
+ digit[0] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_one =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.5dig_w; bot y1=0;
+ x2=.5dig_w; top y2=dig_h;
+ draw z1--z2;
+ digit[1] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_two =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.8dig_w; y3=.9dig_h;
+ lft x4=0; bot y4=0;
+ draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4;
+ z5=z4;
+ rt x6=dig_w; bot y6=0;
+ draw z5--z6;
+ digit[2] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_three =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.8dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.52dig_h);
+ rt x5=dig_w; y5=.2dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7;
+ digit[3] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_four =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.75dig_w; bot y1=0;
+ x2=x1; top y2=dig_h;
+ lft x3=0; y3=.3dig_h;
+ rt x4=dig_w; y4=y3;
+ draw z1--z2--z3--z4;
+ digit[4] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_five =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=.95dig_w; top y1=dig_h;
+ lft x2=.05dig_w; y2=y1;
+ lft x3=0; y3=.45dig_h;
+ z4=(.5dig_w,.6dig_h);
+ rt x5=dig_w; y5=.3dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=.15dig_h;
+ draw z1--z2--z3{up}..z4..z5..z6...{up}z7;
+ digit[5] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_six =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=dig_w; y1=.8dig_h;
+ x2=.45dig_w; top y2=dig_h;
+ lft x3=0; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ rt x5=dig_w; y5=.3dig_h;
+ z6=(.53dig_w,.55dig_h);
+ z7=(.03dig_w+.6dig_pen,.25dig_h);
+ draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7;
+ digit[6] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_seven =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; top y1=dig_h;
+ rt x2=dig_w; y2=y1;
+ lft x3=.2dig_w; bot y3=0;
+ draw z1--z2--z3;
+ digit[7] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_eight =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.55dig_h);
+ rt x5=dig_w; y5=.25dig_h;
+ x6=.5dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1...z2...z3...z4...cycle;
+ draw z4...z5...z6...z7...cycle;
+ digit[8] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_nine =
+ currentpicture := nullpicture;
+ currentpicture := digit[6] rotated 180;
+ digit[9] := currentpicture shifted (dig_w,dig_h);
+ clearxy; clearit; clearpen;
+enddef;
+
+def letter_x =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ draw (0.4dig_w,0.1dig_h)--(1.2dig_w,0.9dig_h);
+ draw (0.4dig_w,0.9dig_h)--(1.2dig_w,0.1dig_h);
+ digit[10] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def letter_c =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ draw (dig_w,0.3dig_h)..(0.85dig_w,0.1dig_h)..(0.3dig_w,0.5dig_h)..(0.85dig_w,0.9dig_h)..(dig_w,0.7dig_h);
+ digit[11] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight;digit_nine;
+letter_x;letter_c;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(0,24/22size#,23/22size#,1/22size#); "pion bialy";
+ pickup pencircle scaled line_thickness;
+ lft x1=13/24w; y1=-1/24w;
+ rt x2=35/24w; y2=-1/24w;
+ draw z1..z2..cycle;
+ white_circle := currentpicture;
+showit;
+endchar;
+
+% stop"";
+
+beginchar(1,24/22size#,23/22size#,1/22size#); "pion bialy z 1";
+ currentpicture := digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(2,24/22size#,23/22size#,1/22size#); "pion bialy z 2";
+ currentpicture := digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(3,24/22size#,23/22size#,1/22size#); "pion bialy z 3";
+ currentpicture := digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(4,24/22size#,23/22size#,1/22size#); "pion bialy z 4";
+ currentpicture := digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(5,24/22size#,23/22size#,1/22size#); "pion bialy z 5";
+ currentpicture := digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(6,24/22size#,23/22size#,1/22size#); "pion bialy z 6";
+ currentpicture := digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(7,24/22size#,23/22size#,1/22size#); "pion bialy z 7";
+ currentpicture := digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(8,24/22size#,23/22size#,1/22size#); "pion bialy z 8";
+ currentpicture := digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(9,24/22size#,23/22size#,1/22size#); "pion bialy z 9";
+ currentpicture := digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+dig_w := .7dig_w;
+dig_pen := .7dig_pen;
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight; digit_nine;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(10,24/22size#,23/22size#,1/22size#); "pion bialy z 10";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(11,24/22size#,23/22size#,1/22size#); "pion bialy z 11";
+ currentpicture := digit[1] shifted (1w-dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(12,24/22size#,23/22size#,1/22size#); "pion bialy z 12";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(14,24/22size#,23/22size#,1/22size#); "pion bialy z 14";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(16,24/22size#,23/22size#,1/22size#); "pion bialy z 16";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17";
+ currentpicture := digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(18,24/22size#,23/22size#,1/22size#); "pion bialy z 18";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19";
+ currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(20,24/22size#,23/22size#,1/22size#); "pion bialy z 20";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21";
+ currentpicture := digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(22,24/22size#,23/22size#,1/22size#); "pion bialy z 22";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(24,24/22size#,23/22size#,1/22size#); "pion bialy z 24";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(26,24/22size#,23/22size#,1/22size#); "pion bialy z 26";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(28,24/22size#,23/22size#,1/22size#); "pion bialy z 28";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(30,24/22size#,23/22size#,1/22size#); "pion bialy z 30";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31";
+ currentpicture := digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(32,24/22size#,23/22size#,1/22size#); "pion bialy z 32";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(34,24/22size#,23/22size#,1/22size#); "pion bialy z 34";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(36,24/22size#,23/22size#,1/22size#); "pion bialy z 36";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(38,24/22size#,23/22size#,1/22size#); "pion bialy z 38";
+ currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
+ currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(40,24/22size#,23/22size#,1/22size#); "pion bialy z 40";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (.5w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(42,24/22size#,23/22size#,1/22size#); "pion bialy z 42";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(44,24/22size#,23/22size#,1/22size#); "pion bialy z 44";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(46,24/22size#,23/22size#,1/22size#); "pion bialy z 46";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(48,24/22size#,23/22size#,1/22size#); "pion bialy z 48";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49";
+ currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(50,24/22size#,23/22size#,1/22size#); "pion bialy z 50";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51";
+ currentpicture := digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(52,24/22size#,23/22size#,1/22size#); "pion bialy z 52";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(54,24/22size#,23/22size#,1/22size#); "pion bialy z 54";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(56,24/22size#,23/22size#,1/22size#); "pion bialy z 56";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(58,24/22size#,23/22size#,1/22size#); "pion bialy z 58";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59";
+ currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(60,24/22size#,23/22size#,1/22size#); "pion bialy z 60";
+ currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61";
+ currentpicture := digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(62,24/22size#,23/22size#,1/22size#); "pion bialy z 62";
+ currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63";
+ currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(64,24/22size#,23/22size#,1/22size#); "pion bialy z 64";
+ currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(65,24/22size#,23/22size#,1/22size#); "pion bialy z X";
+ currentpicture := digit[10] shifted (1w-1.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(66,24/22size#,23/22size#,1/22size#); "pion bialy z C";
+ currentpicture := digit[11] shifted (1w-1.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+end;
diff --git a/macros/latex/contrib/othello/ot1neu10.mf b/macros/latex/contrib/othello/ot1neu10.mf
new file mode 100644
index 0000000000..876bfe794e
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1neu10.mf
@@ -0,0 +1 @@
+font_identifier:="OT1NEUTRAL"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1neu15.mf b/macros/latex/contrib/othello/ot1neu15.mf
new file mode 100644
index 0000000000..636e21ca74
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1neu15.mf
@@ -0,0 +1 @@
+font_identifier:="OT1NEUTRAL"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1neu20.mf b/macros/latex/contrib/othello/ot1neu20.mf
new file mode 100644
index 0000000000..e22ab3ca14
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1neu20.mf
@@ -0,0 +1 @@
+font_identifier:="OT1NEUTRAL"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1whi10.mf b/macros/latex/contrib/othello/ot1whi10.mf
new file mode 100644
index 0000000000..b86a9c4cda
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1whi10.mf
@@ -0,0 +1 @@
+font_identifier:="OT1WHITE"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1whi15.mf b/macros/latex/contrib/othello/ot1whi15.mf
new file mode 100644
index 0000000000..fd3279a680
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1whi15.mf
@@ -0,0 +1 @@
+font_identifier:="OT1WHITE"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1whi20.mf b/macros/latex/contrib/othello/ot1whi20.mf
new file mode 100644
index 0000000000..da42e694da
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1whi20.mf
@@ -0,0 +1 @@
+font_identifier:="OT1WHITE"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file
diff --git a/macros/latex/contrib/othello/ot1white.mf b/macros/latex/contrib/othello/ot1white.mf
new file mode 100644
index 0000000000..a1d0947b9a
--- /dev/null
+++ b/macros/latex/contrib/othello/ot1white.mf
@@ -0,0 +1,735 @@
+mode_setup;
+
+define_pixels(size);
+define_pixels(line_thickness,border_line_thickness);
+define_pixels(dig_h,dig_w,dig_pen);
+
+picture digit[];
+picture white_circle;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+def digit_zero =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.5dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=dig_w; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ draw z1...z2...z3...z4...cycle;
+ digit[0] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_one =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.5dig_w; bot y1=0;
+ x2=.5dig_w; top y2=dig_h;
+ draw z1--z2;
+ digit[1] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_two =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.8dig_w; y3=.9dig_h;
+ lft x4=0; bot y4=0;
+ draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4;
+ z5=z4;
+ rt x6=dig_w; bot y6=0;
+ draw z5--z6;
+ digit[2] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_three =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.8dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.52dig_h);
+ rt x5=dig_w; y5=.2dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7;
+ digit[3] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_four =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ x1=.75dig_w; bot y1=0;
+ x2=x1; top y2=dig_h;
+ lft x3=0; y3=.3dig_h;
+ rt x4=dig_w; y4=y3;
+ draw z1--z2--z3--z4;
+ digit[4] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_five =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=.95dig_w; top y1=dig_h;
+ lft x2=.05dig_w; y2=y1;
+ lft x3=0; y3=.45dig_h;
+ z4=(.5dig_w,.6dig_h);
+ rt x5=dig_w; y5=.3dig_h;
+ x6=.65dig_w; bot y6=0;
+ lft x7=0; y7=.15dig_h;
+ draw z1--z2--z3{up}..z4..z5..z6...{up}z7;
+ digit[5] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_six =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ rt x1=dig_w; y1=.8dig_h;
+ x2=.45dig_w; top y2=dig_h;
+ lft x3=0; y3=.5dig_h;
+ x4=.5dig_w; bot y4=0;
+ rt x5=dig_w; y5=.3dig_h;
+ z6=(.53dig_w,.55dig_h);
+ z7=(.03dig_w+.6dig_pen,.25dig_h);
+ draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7;
+ digit[6] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_seven =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=0; top y1=dig_h;
+ rt x2=dig_w; y2=y1;
+ lft x3=.2dig_w; bot y3=0;
+ draw z1--z2--z3;
+ digit[7] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_eight =
+ currentpicture := nullpicture;
+ pickup pencircle scaled dig_pen;
+ lft x1=.08dig_w; y1=.75dig_h;
+ x2=.5dig_w; top y2=dig_h;
+ rt x3=.92dig_w; y3=y1;
+ z4=(.5dig_w,.55dig_h);
+ rt x5=dig_w; y5=.25dig_h;
+ x6=.5dig_w; bot y6=0;
+ lft x7=0; y7=y5;
+ draw z1...z2...z3...z4...cycle;
+ draw z4...z5...z6...z7...cycle;
+ digit[8] := currentpicture;
+ clearxy; clearit; clearpen;
+enddef;
+
+def digit_nine =
+ currentpicture := nullpicture;
+ currentpicture := digit[6] rotated 180;
+ digit[9] := currentpicture shifted (dig_w,dig_h);
+ clearxy; clearit; clearpen;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight; digit_nine;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(0,24/22size#,23/22size#,1/22size#); "pion bialy";
+ pickup pencircle scaled line_thickness;
+ lft x1=13/24w; y1=-1/24w;
+ rt x2=35/24w; y2=-1/24w;
+ draw z1..z2..cycle;
+ white_circle := currentpicture;
+showit;
+endchar;
+
+% stop"";
+
+beginchar(1,24/22size#,23/22size#,1/22size#); "pion bialy z 1";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(2,24/22size#,23/22size#,1/22size#); "pion bialy z 2";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(3,24/22size#,23/22size#,1/22size#); "pion bialy z 3";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(4,24/22size#,23/22size#,1/22size#); "pion bialy z 4";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(5,24/22size#,23/22size#,1/22size#); "pion bialy z 5";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(6,24/22size#,23/22size#,1/22size#); "pion bialy z 6";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(7,24/22size#,23/22size#,1/22size#); "pion bialy z 7";
+ currentpicture := white_circle
+ + digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(8,24/22size#,23/22size#,1/22size#); "pion bialy z 8";
+ currentpicture := white_circle
+ + digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(9,24/22size#,23/22size#,1/22size#); "pion bialy z 9";
+ currentpicture := white_circle
+ + digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+dig_w := .7dig_w;
+dig_pen := .7dig_pen;
+
+digit_zero; digit_one; digit_two; digit_three; digit_four;
+digit_five; digit_six; digit_seven; digit_eight; digit_nine;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(10,24/22size#,23/22size#,1/22size#); "pion bialy z 10";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(11,24/22size#,23/22size#,1/22size#); "pion bialy z 11";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(12,24/22size#,23/22size#,1/22size#); "pion bialy z 12";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(14,24/22size#,23/22size#,1/22size#); "pion bialy z 14";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(16,24/22size#,23/22size#,1/22size#); "pion bialy z 16";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(18,24/22size#,23/22size#,1/22size#); "pion bialy z 18";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19";
+ currentpicture := white_circle
+ + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(20,24/22size#,23/22size#,1/22size#); "pion bialy z 20";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(22,24/22size#,23/22size#,1/22size#); "pion bialy z 22";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(24,24/22size#,23/22size#,1/22size#); "pion bialy z 24";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(26,24/22size#,23/22size#,1/22size#); "pion bialy z 26";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(28,24/22size#,23/22size#,1/22size#); "pion bialy z 28";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(30,24/22size#,23/22size#,1/22size#); "pion bialy z 30";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(32,24/22size#,23/22size#,1/22size#); "pion bialy z 32";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(34,24/22size#,23/22size#,1/22size#); "pion bialy z 34";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(36,24/22size#,23/22size#,1/22size#); "pion bialy z 36";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(38,24/22size#,23/22size#,1/22size#); "pion bialy z 38";
+ currentpicture := white_circle
+ + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
+ currentpicture := white_circle
+ + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(40,24/22size#,23/22size#,1/22size#); "pion bialy z 40";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (.5w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(42,24/22size#,23/22size#,1/22size#); "pion bialy z 42";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(44,24/22size#,23/22size#,1/22size#); "pion bialy z 44";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(46,24/22size#,23/22size#,1/22size#); "pion bialy z 46";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(48,24/22size#,23/22size#,1/22size#); "pion bialy z 48";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49";
+ currentpicture := white_circle
+ + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(50,24/22size#,23/22size#,1/22size#); "pion bialy z 50";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(52,24/22size#,23/22size#,1/22size#); "pion bialy z 52";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(54,24/22size#,23/22size#,1/22size#); "pion bialy z 54";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(56,24/22size#,23/22size#,1/22size#); "pion bialy z 56";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(58,24/22size#,23/22size#,1/22size#); "pion bialy z 58";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59";
+ currentpicture := white_circle
+ + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(60,24/22size#,23/22size#,1/22size#); "pion bialy z 60";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h)
+ + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(62,24/22size#,23/22size#,1/22size#); "pion bialy z 62";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+beginchar(64,24/22size#,23/22size#,1/22size#); "pion bialy z 64";
+ currentpicture := white_circle
+ + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h)
+ + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h);
+showit;
+endchar;
+
+% stop"";
+
+end;
diff --git a/macros/latex/contrib/othello/othello.sty b/macros/latex/contrib/othello/othello.sty
new file mode 100644
index 0000000000..d223608952
--- /dev/null
+++ b/macros/latex/contrib/othello/othello.sty
@@ -0,0 +1,211 @@
+%%%%%%%%%%%%%%%%%%%%%%%% othello.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+% Othello package written by Michiel le Comte michiel.le.comte@zonnet.nl
+% This package has been created using (mutilating?) the Go package written by
+% Hanna Kolodziejska (version 0.05 : November 1991) as basis
+
+
+% Remark: if someone can fix a switch in the pos thingie, please notify me.
+% A nicer metafont definition for the letter X and C (ot1neu.mf, digit[10] and
+% digit[11]) is also welcome.
+%
+% For a short introduction how to use this package, look at the othello.tex file,
+% it contains a short manual at the end.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`@=11
+
+\newbox\@gobox \newdimen\@godimen
+
+
+\def\gofontsize#1{
+ \font\gofont=ot#1 at #1truept
+ \font\blackfontOne=ot1bla#1 at #1truept
+ \font\whitefontOne=ot1whi#1 at #1truept
+ \font\neutralfontOne=ot1neu#1 at #1truept
+ \ifnum #1=10 \font\letterfont=cmr10 at 10truept\else
+ \ifnum #1=15 \font\letterfont=cmr10 at 14.4truept\else
+ \ifnum #1=20 \font\letterfont=cmr10 at 17.28truept\fi\fi\fi
+ \setbox\@gobox=\hbox{\gofont\char0}
+ \@godimen=\wd\@gobox
+ }
+
+\gofontsize{10} % initialization <---
+
+\def\newgoline{\hfill\break}
+\def\empty{\gofont\char1}
+\def\lftborder{\gofont\char2}
+\def\rtborder{\gofont\char3}
+\def\topborder{\gofont\char4}
+\def\botborder{\gofont\char5}
+\def\lfttopcorner{\gofont\char6}
+\def\rttopcorner{\gofont\char7}
+\def\lftbotcorner{\gofont\char8}
+\def\rtbotcorner{\gofont\char9}
+
+\newcount\n
+\newcount\@beglet \newcount\@endlet
+\newcount\@lettercount
+
+\def\@letternumber#1{\relax
+ \ifx #1a\@lettercount=1\else
+ \ifx #1b\@lettercount=2\else
+ \ifx #1c\@lettercount=3\else
+ \ifx #1d\@lettercount=4\else
+ \ifx #1e\@lettercount=5\else
+ \ifx #1f\@lettercount=6\else
+ \ifx #1g\@lettercount=7\else
+ \ifx #1h\@lettercount=8\else
+ \ifx #1i\@lettercount=9\else
+ \errmessage{Row label must be letter!}
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ }
+
+\def\inidiagram#1-#2:#3-#4 {\relax
+ \ifnum #3>#4 \errmessage{Invalid column numbers!} \fi
+ \@letternumber{#1} \@beglet=\@lettercount
+ \@letternumber{#2} \@endlet=\@lettercount
+ \def\@inirow##1##2{{\n=#3
+ \loop
+ \expandafter\let\csname @##1\romannumeral\n \endcsname=0\relax
+ \edef\@@inirow{\global
+ \def\csname @##1\romannumeral\n \endcsname{##2}}\@@inirow
+ \ifnum \n<#4 \advance \n by 1
+ \repeat
+ }}\relax
+ \loop
+ \ifcase\@beglet\relax\or
+ \@inirow{a}{\topborder}\relax
+ \ifnum #3=1 \global\def\@ai{\lfttopcorner}\fi
+ \ifnum #4=9 \global\def\@aix{\rttopcorner}\fi \or
+ \@inirow{b}{\empty}\relax
+ \ifnum #3=1 \global\def\@bi{\lftborder}\fi
+ \ifnum #4=9 \global\def\@bix{\rtborder}\fi \or
+ \@inirow{c}{\empty}\relax
+ \ifnum #3=1 \global\def\@ci{\lftborder}\fi
+ \ifnum #4=9 \global\def\@cix{\rtborder}\fi \or
+ \@inirow{d}{\empty}\relax
+ \ifnum #3=1 \global\def\@di{\lftborder}\fi
+ \ifnum #4=9 \global\def\@dix{\rtborder}\fi \or
+ \@inirow{e}{\empty}
+ \ifnum #3=1 \global\def\@ei{\lftborder}\fi
+ \ifnum #4=9 \global\def\@eix{\rtborder}\fi \or
+ \@inirow{f}{\empty}
+ \ifnum #3=1 \global\def\@fi{\lftborder}\fi
+ \ifnum #4=9 \global\def\@fix{\rtborder}\fi \or
+ \@inirow{g}{\empty}
+ \ifnum #3=1 \global\def\@gi{\lftborder}\fi
+ \ifnum #4=9 \global\def\@gix{\rtborder}\fi \or
+ \@inirow{h}{\empty}
+ \ifnum #3=1 \global\def\@hi{\lftborder}\fi
+ \ifnum #4=9 \global\def\@hix{\rtborder}\fi \or
+ \@inirow{i}{\botborder}
+ \ifnum #3=1 \global\def\@ii{\lftbotcorner}\fi
+ \ifnum #4=9 \global\def\@iix{\rtbotcorner}\fi
+ \fi
+ \ifnum \@beglet<\@endlet \advance \@beglet by 1
+ \repeat
+ }
+
+\def\inifulldiagram{\inidiagram a-i:1-9 }
+
+\inifulldiagram % initialization
+
+
+\def\showdiagram#1-#2:#3-#4 {\vbox{\offinterlineskip\noindent
+ \ifnum #3>#4 \errmessage{Invalid column numbers!} \fi
+ \hsize=\@godimen
+ \n=#4\advance\n by-#3\advance\n by1
+ \multiply\hsize by\n
+ \@letternumber{#1} \@beglet=\@lettercount
+ \@letternumber{#2} \@endlet=\@lettercount
+ \def\@showrow##1{{\n=#3
+ \loop
+ \edef\@@showrow{\csname @##1\romannumeral\n \endcsname}\@@showrow
+ \ifnum \n<#4 \advance \n by 1
+ \repeat
+ }}\relax
+ \loop
+ \ifcase\@beglet\relax\or
+ \@showrow{a}\or
+ \@showrow{b}\or
+ \@showrow{c}\or
+ \@showrow{d}\or
+ \@showrow{e}\or
+ \@showrow{f}\or
+ \@showrow{g}\or
+ \@showrow{h}\or
+ \@showrow{i}
+ \fi
+ \ifnum \@beglet<\@endlet
+ \newgoline \advance \@beglet by 1
+ \repeat
+ }}
+
+\def\showfulldiagram{\showdiagram a-i:1-9 }
+
+\def\pos#1#2=#3#4{\relax
+ \ifcat #1a\relax \else \errmessage{Row label must be a letter!}\fi
+ \ifnum #2<1 \errmessage{Column number less than 1?}\fi
+ \ifnum #2>9 \errmessage{Column number greater than 9?}\fi
+ \edef\@fourth{#4}\relax
+ \ifx .#4\ifx #3\empty\edef\@fourth{}\else \edef\@fourth{0}\fi\fi
+ \edef\@borders{\relax
+ \ifx #1a \ifnum #2=1 \gofont\char6 \else
+ \ifnum #2=9 \gofont\char7 \else
+ \gofont\topborder
+ \fi\fi
+ \else
+ \ifx #1i \ifnum #2=1 \gofont\char17 \else
+ \ifnum #2=9 \gofont\char18 \else
+ \gofont\char14 \fi\fi
+ \else
+ \ifnum #2=1 \lftborder
+ \else
+ \ifnum #2=9 \gofont\char12
+ \else
+ \gofont\char1
+ \fi\fi\fi\fi
+ }\relax
+ \expandafter\let\csname @#1\romannumeral#2\endcsname=0\relax
+ \edef\@pos{\def\csname @#1\romannumeral#2\endcsname{#3{\@fourth}}}\@pos
+ \ignorespaces
+ }
+
+\newcount\nr
+
+\def\black#1{\relax
+ \ifx \triangle#1{\rlap{\triangle}\@borders}\else
+ \ifx \square#1{\rlap{\square}\@borders}\else
+ \ifnum #1<0 \errmessage{Negative White's move?}\else
+ \ifnum #1>64 \errmessage{White's move too big!}\else
+ \ifnum #1<65 {\blackfontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi}
+
+\def\white#1{\relax
+ \ifx \triangle#1{\rlap{\triangle}\@borders}\else
+ \ifx \square#1{\rlap{\square}\@borders}\else
+ \ifnum #1<0 \errmessage{Negative White's move?}\else
+ \ifnum #1>64 \errmessage{White's move too big!}\else
+ \ifnum #1<65 {\whitefontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi}
+
+\def\neutral#1{\relax
+ \ifx \triangle#1{\rlap{\triangle}\@borders}\else
+ \ifx \square#1{\rlap{\square}\@borders}\else
+ \ifnum #1<0 \errmessage{A negative move?}\else
+ \ifnum #1>66 \errmessage{There are only 64 moves to make!}\else
+ \ifnum #1<67 {\neutralfontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi}
+
+\def\textblack#1{\def\@borders{\hskip\wd\@gobox}\relax
+ \ifx .#1\lower.2\wd\@gobox\hbox{\black{0}}\else
+ \lower.2\wd\@gobox\hbox{\black{#1}}\fi}
+
+\def\textwhite#1{\def\@borders{\hskip\wd\@gobox}\relax
+ \ifx .#1\lower.2\wd\@gobox\hbox{\white{0}}\else
+ \lower.2\wd\@gobox\hbox{\white{#1}}\fi}
+
+\newbox\@letterbox \newdimen\@letterdim
+
+\catcode`@=12
+
diff --git a/macros/latex/contrib/othello/othello.tex b/macros/latex/contrib/othello/othello.tex
new file mode 100644
index 0000000000..4b25873a05
--- /dev/null
+++ b/macros/latex/contrib/othello/othello.tex
@@ -0,0 +1,635 @@
+\documentclass[12pt,twoside]{report}
+
+\usepackage{othello}
+\usepackage{graphicx}
+\usepackage{makeidx}
+\usepackage{floatfig}
+
+\include{boards}
+
+\makeindex
+
+\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
+\begin{document}
+\initfloatingfigs
+
+\title{Introduction to Othello}
+\author{M. le Comte}
+\maketitle
+
+\clearemptydoublepage
+\chapter{preface}
+This manual is intended as an introduction to the game Othello. It
+has been written using Latex, using a package called othello.sty.
+This package is used to create all Othello pictures in this
+manual. For more information, see the last chapter. If anyone has
+any suggestions or remarks on either the package or the content of
+this manual, please mail me at michiel.le.comte@zonnet.nl
+\clearemptydoublepage
+\tableofcontents
+\chapter{A short introduction to Othello}
+\section{The history of Othello}
+\section{The rules of Othello}
+
+\subsection{Starting the game}
+\begin{figure}[h]
+\startposition
+\end{figure}
+
+
+Othello is a game that is played on a $8\times 8$\ board using
+stones that are black on one side, and white on the other.
+One player uses the black side of the stones, the other the white sides.
+The starting position is as follows: four stones are placed in the middle, two
+white and two black, each color getting a diagonal. Thus the
+starting position is as in figure 2.1. The player using the black
+stones always makes the first move. The players take
+turns placing a stone. Following standard Othello notation, we will number
+the rows by $1\ldots 8$\ and the columns by a$\ldots$h. For
+example, the begin positions for black are d5 and e4, and for
+white d4 and e5. In addition, we will also use ``compass''
+directions, i.e. west when we mean the left side of the board,
+north for the upper side etc. There are a few places on the Othello
+board that are important enough to deserve a special name. The
+squares a1,a8,h1 and h8 are called the \index{corners}corners. There are 3 squares
+adjacent to a1, two of which are on the edge of the board (a2 and
+b1). These two stones are called C squares\index{C square}. The third square,
+situated on the diagonal, i.e. square b2, is called an \index{X square}X square.
+The same notation also applies for the other corners, so there are
+4 X squares and 8 C squares. (A mnemonic: the two diagonals form
+an X) Figure \ref{cornerpositions} shows these special stones.
+
+The four squares already occupied in the starting
+position are called the center squares, for obvious
+reasons.\index{center squares}
+
+\begin{figure}[ht]
+\cornerpositions
+\end{figure}
+
+
+\subsection{Making a move}
+At his turn, a player must place one of his stones on the board. He may
+place a stone on one of the empty squares of the board, adjacent to
+a disk of the opponent. In addition, the stone also must flank one or more of
+his opponent's disks between his new stone and one or more of his
+other stones which already are on the board. He then changes the stones
+of the opponent which were flanked to his color, by flipping the stones.
+
+\begin{figure}[h]
+\makingamove
+\end{figure}
+As mentioned, the black player is the first to move. His valid moves are
+c4,d3,e6,f5. These squares are shown in figure \ref{makingamove},
+where X marks the spot.
+Suppose that he chooses c4, then the white disk d4 is flipped to black, and then it is
+white's turn to move. White now has 3 different spots to place his disk, c3, e3
+and c5. If he chooses c3, the situation then becomes as figure \ref{validmoves}.
+
+\begin{floatingfigure}{4cm}
+\validmoves
+\end{floatingfigure}
+Note that disks which are flipped may not be used to flip even
+more disks in the same turn. For example: if we have the board
+from figure \ref{fliponlyonce}, and suppose that white has to make
+a move. The choices for white are d3 and e3. Both moves will flip
+3 of the black stones, and the fourth one will be completely
+surrounded by white stones, but it will not be flipped.
+\begin{figure} [ht]
+\fliponlyonce
+\end{figure}
+
+\subsection{Passing} If a player can not make a move that flips at least one of his
+opponents disks, then he has to pass. If he is able to make a valid move however, then
+passing is not allowed. It is possible that a player has to pass several times
+before he can make a move again.
+
+\subsection{The end of Othello}
+The game ends when neither player can make a valid move. This usually happens
+when all 64 squares are filled, but
+sometimes it ends earlier. The stones then are counted. The winner is the player who has more discs
+then his opponent. If both players have 32 stones, then it is a draw.
+
+Looking at figure \ref{fliponlyonce}, you can see that the white
+player can easily win. After either of his moves, the black player
+has only remaining stone. It does not matter which move black
+makes, the white player can always flank all the stones in the
+next turn. This is an example where the game ends before the board
+is completely filled.
+
+\clearemptydoublepage
+\chapter{The strategy of Othello}
+\section{The maximum disk strategy}\index{maximum disk strategy}
+Playing Othello is like every game that is not based entirely on luck, if you want
+to win, you need a strategy. The most obvious strategy is not always the best
+though. When people first learn to play Othello, they are usually tempted to get
+as many stones they can, whenever they can.
+This strategy is known as the maximum disk strategy.
+\begin{floatingfigure}{4cm}
+\maximumdisk
+\end{floatingfigure}
+Having many stones in the beginning is
+not at all a guarantee that you will win in the end however! Consider for example
+the position in figure \ref{maximumdisk}.
+White has 46 stones and black only 2, with 16 remaining moves.
+White however is very limited in its moves, which allows black to
+force white into making less then perfect moves. If black plays
+all moves right, and white plays the best possible moves too, then
+white will end up with all the corners, but black will have 46
+stones. You may want to try to find the best play yourself, a
+solution in which black wins is not that hard, but 46 stones is a
+little
+puzzle\footnote{Solution:b2,a1,b1,-,a2,-,b7,a8,a7,-,g2,h1,g1,-,g8,h8,b8,g7,h2,-,h7}
+(the answer is given at the bottom of the page).
+
+There are several reasons why the maximum disk strategy usually fails. The two most
+important reasons are stable disks and mobility. The next sections will deal with these
+notions.
+\subsection{Stable disks}\index{stable disks}
+Let's start with stable disks. Stable disks are disks that can not
+be flipped by the opponent. Good examples of stable disks are
+corner stones. There is no way that an opponent can flip one of
+your cornerstones, so acquiring a corner stone in the beginning of
+the game, or in the middle part even, usually means that you will
+be able to use that corner to gain a lot of stable disks and thus
+win the game. Examples of stable stones are given in figure \ref{stablestones}
+
+\begin{figure}[h]
+\stablestones
+\end{figure}
+
+Looking back at the example in figure \ref{maximumdisk}, we see that
+white has 46 stones, but not one of these disks is stable. Thus black is able to turn a lot of
+the disks into black disks.
+
+To see an example of the opposite situation: suppose that white also was able to completely
+capture one of the corners, leading to the situation \ref{stabledisks} .
+\begin{figure}[ht]
+\stabledisks
+\end{figure}
+Now the white stones in the north-west corner are completely safe,
+white has 21 stable stones in this situation. Black can still gain
+more stones then one would expect, but the dramatic change to 46
+stones is gone. In fact, assuming perfect play, the end result
+will be 35 stones for white, and 29 for black. Once more, it is a
+nice puzzle to find the best way to play\footnote{Solution:
+b7,a8,a7,-,b8,-,g7,h8,g8,-,h7,-,g2,h1,h2,-,g1}.
+
+\section{Mobility}
+Besides the lack of stable disks, white has another problem in our
+maximum disk problem. Looking at the maximum disk figure once
+more, we see that white can't make a move. It is this fact that
+allows black to force white into making bad moves. This brings us
+to the notion of \index{mobility}mobility. One could say that mobility is the
+amount of moves that a player can make. Thus, someone with a low
+mobility only has a few options to choose from, while someone with
+high mobility can place a stone in a lot of different places.
+Before refining the definition, let's look at another example of
+why mobility is important.
+\begin{floatingfigure}{4cm}
+\mobilityexampletwo
+\end{floatingfigure}
+In figure \ref{mobilityexampletwo} we
+see a position in which black has enclosed white. Again, this is
+an extreme example of mobility difference, since black can make no
+valid moves and white a lot. This situation can be used by white
+to force black into making one or more bad moves. As an exercise,
+loot at the position now and try to find sequence of moves that
+will give white a corner. I hope you have done your ``homework''
+by now, so lets look at the position together.
+
+\noindent\textbf{Analysis:} White in total
+has 13 squares to place his stones. We want to force black however
+so we cant place our stone somewhere where it gives black multiple
+options. Basically this only leaves us the north side, since all
+the other options offer black at least two moves. So now we only
+have to consider the five possible moves on the north side. We can
+scratch one move immediately, namely g1.
+
+Suppose we did play g1,
+then black would play f1 and would thus have gained a corner in
+the next round instead of white.
+
+Another move that does not lead
+to our objective is e1. Black then plays f1, and then white either
+moves to b1, which opens the move c2 to black, or to one of the
+squares towards the east, west or south side and we already know
+that this gives black more options. Thus e1 does not lead to a
+good way of forcing black.
+
+Starting with either b1 or f1 basically leads to the same end
+pattern, but a different corner. Lets look at b1 first. This leads
+to the sequence b1,c1,e1,f1,g1,g2. The situation has changed to
+figure \ref{mobiuitween}.
+\begin{figure}
+\mobiuitween
+\end{figure}
+Technically we do not have a corner yet,
+but black was forced to place a stone at the X square g2, and this
+enables white to take the h1 corner for sure in this case. g4 for
+example provides a place on the diagonal. Of course, sometimes
+white wants to wait before actually taking the corner, to make
+things even more profitable, but this was a good example of using
+black's limited capability to move to get a corner.
+
+If we place f1 first, then the sequence becomes f1,e1,c1,b1,b2 and
+again black is forced to take an X square.
+
+The last possibility, and the most effective one, starts at c1.
+Black has to take b1, and white can answer with f1. Black's only
+option is to take e1, and white now directly can take a1.
+
+We have seen how white can gain a corner from this situation. This
+does not mean that c1 is the best move overall though. Try this
+position out against a computer to try out several options and you
+will find that f5 is the best choice. After all, we're out to have
+the most stones in the end, and corners are a possible way to
+obtain that goal, but capturing corners is not always the best
+way. Playing f5 and subsequent moves will cause black to worsen
+its position even further before white will actually grab a
+corner.
+
+\subsection{Frontiers}\index{frontiers}
+Mobility is al about gaining many possible moves while reducing
+the possible moves of the opponent. Our previous examples gave
+extreme positions in which one color was completely surrounded by
+corners of the opponent. In general, both colors will have stones
+adjacent to one or more empty squares. These stones are called
+frontier stones. If several frontier discs adjacent to each other
+are of the same color, then we call it a frontier.
+\begin{figure}
+\frontierstones
+\end{figure}
+Figure \ref{frontierstones}
+shows one large black frontier, and two smaller white frontiers.
+A large frontier can be very limiting for a player, since he can
+not make moves along his entire frontier. If white would play
+h3,h4 or h5 in figure \ref{frontierstones}, then that move would
+basically limit white to moves on the south and east side of the
+board. Similarly, black can only make moves in the north and east
+side of the board.
+
+The basic idea of mobility was to gain as
+many possible moves while limiting the opponent's moves. Since
+frontiers block your moves, a general rule for placing stones is
+that you try to place stones in such a way that you have as little
+frontier disks as possible. We'll look at two examples to see how
+the notion of frontiers works in regular games.
+
+\begin{floatingfigure}{4cm}
+\frontiermoveone
+\end{floatingfigure}
+\textbf{Example 1: }The first example is the situation given by
+figure \ref{frontiermoveone}. In this case, white has quite a
+large frontier (from c6 to h4) while black hardly has a frontier.
+Black would like to make a move which keeps its own frontier small
+and, if possible, white's frontier even larger. One move that
+would \textbf{not} accomplish this is h6. In this case, black
+almost completely takes over the frontier by flipping 5 of the white
+frontier stones. In contrast, the move c7 also flips 5 white
+stones, but only adds on frontier stone. Even more important,
+this frontier stone c7 does not offer white any good
+possibilities, since it only opens the option to either an X or a
+C square.
+\newpage
+\begin{figure}[h]
+\frontiermovetwo
+\end{figure}
+\textbf{Example 2: }
+Figure \ref{frontiermovetwo} shows a game in an earlier stage of
+the game. Lets assume that black is the one to move. He already
+has a larger frontier then white has, so it is important that the
+frontier does not grow any further. The move e6 is a disastrous as
+h6 was in the previous example, so the possible moves are f2 until
+f6. The moves f3,f4 and f5 also lead to a large black frontier, so the only real options are to
+play either f2 or f6.
+
+There are moves that do not add to the frontier. These moves are
+quiet moves. They usually are the best options to play when
+possible. One example is figure \ref{quietmove},\index{quiet moves} where black can
+play d4. This move does not open any new options for white to
+play, whereas white has no official quiet move after that. White
+does have one unofficial quiet move, a3. It is unofficial since it
+opens two new moves for black, but both options are so bad that
+black has gained no real options.
+\begin{figure}[h]
+\quietmove
+\end{figure}
+
+\subsection{Tempo}\index{tempo}
+Mobility is about reducing the opponents amount of possible
+squares while not running out of your own options, and this leads
+to the notion of tempo. Basically, if you can make a move which
+does not create a new possibility for your opponent and your opponent can't, then you have
+lowered his mobility. This is called: gaining a tempo. Quiet moves
+are nice examples of this notion. Gaining tempo's is a good thing
+since your opponent is forced to increase his frontier, thus
+lowering mobility. A nice example is figure \ref{tempo}.
+\begin{figure}[ht]
+\tempo
+\end{figure}
+
+White can play b1,f1,g1 and black has to make 3 moves as well. The
+only option created by whites moves is b2 or g2, both X squares. Black does
+not want to play there, so he is forced to flip the three white
+stones c6,d6 and e6 in the three turn. After these three moves,
+white has no frontier except for c2 and f2, and black is in
+serious trouble.
+
+Moves that allow tempo gaining are very strong, but that does not
+mean that you have to play them right away. Most of the time,
+saving these moves until you really need them tends to make them
+even stronger.
+
+\section{Wedges}\index{wedges}
+A wedge is a situation where a player places a stone between two
+stones of his opponent, in such a way that he ``wedges'' those two
+stones. For example, if white plays a4 in figure \ref{wedge}, then
+he places a wedge between the black stones on the first column.
+\begin{figure}[h]
+\wedge
+\end{figure}
+
+Wedges are powerful stones when it comes to capturing corners. In
+the example, white can take both corners. Another situation in
+which wedging often occurs is the one in figure \ref{wedgetwo}.
+White can play b2 in this case, thus sacrificing the a1 corner.
+However, if black plays a1, then white can make a wedge by playing
+a2, and after that a8. In this case, black has gained a corner,
+and secured the first column, but white has gained a corner too
+and also the first row. This particular type of wedging is often
+used when sacrificing a corner. An edge that permits this kind of
+wedging is also known as an unbalanced edge.\index{unbalanced edge} When playing Othello
+in the begin stage of the game, it is usually wise not to try and
+grab edges because they usually end becoming unbalanced edges and pose a
+threat in the middle and end stage.
+\begin{figure}
+\wedgetwo
+\end{figure}
+
+\section{Unbalanced edges and stoner traps}
+
+\section{Parity and passing}\index{parity}
+In general, if a game is played without either of the players
+passing, white places the last stone on the board. This offers a
+slight advantage. If white has to pass once however, then parity
+changes to black's advantage. In the end game, usually certain
+holes on the board remain, consisting out of 1 to 4 empty squares.
+For example, look at figure \ref{parity}.
+\begin{figure}[ht]
+\parity
+\end{figure}
+
+Black has to play and there is only one way to win, assuming
+perfect play from white of course. Try to find the solution before
+reading on. The solution is a1,g2,b1,g7,h8,b2,h1,h2. The finishing
+blow of this solution lies in the fact that white has to pass
+after the h1 move. Although white has 46 stones with only
+two moves left, black still wins, mainly because of the parity
+change.
+
+In general, if there is an odd number of empty spaces, parity can
+change, while even number of empty squares usually preserve
+parity.
+
+One more example: the end position of a game between J. Lysons and
+E. Lazard at the Cambridge tournament in 1984 is given in figure
+\ref{paritytwo}. Black has to play and draw. Once more, try to
+find the solution before looking at the analysis.
+\begin{figure}
+\paritytwo
+\end{figure}
+
+\noindent\textbf{Analysis:} Black has to move first, 8 squares are
+empty, so at this moment white gets to make the last move. There
+is one empty place with an even amount of squares, and 2 odd. Of
+course, we're not only focusing on parity alone, all the other
+ideas we have seen so far are in place. White cant play inside the
+north-west corner, so we'll stay away from that place. Why? There
+are 5 other empty squares. Regardless of what player makes the 5th
+move, black can always start in the north-west corner and also
+gets the last move. This guarantees our parity advantage, which is
+what we want. So lets look at the remaining 5 empty squares. G7 is
+a very good winner, since black then immediately gains 8 stable
+stones. White has to move, basically has to choose between b7 and
+b8. White will play b8, otherwise black can win 33-31 by playing
+b2,b8,a8,a1,a7,a2. Black can now take the corner a8. White has to
+play a7, otherwise we can win 35-29. And we're done. B7 creates a
+few more stables disks. White has to pass, so we can make the
+final move. Counting stones shows that the next move is b2. White
+has no choice but to play a1 (otherwise black wins with 34-30),
+and a2 brings the score to 32-32.
+
+Once more: this example, like the others, has been chosen to illustrate the
+definitions that we have discussed, and not every end game works
+according
+to these rules. It is up to you to determine what plan works best.
+There are games where you can gain parity, but it will cause you
+to lose the game. In these cases, forget parity. You're in it for
+the stones, not for your knowledge of funny concepts :)
+
+\section{Beginning Othello games}
+Keeping the idea of mobility as standard strategy in mind, we can
+give the following rules of thumb for openings in Othello:
+
+\begin{itemize}
+\item Try to have fewer discs than your opponent.
+\item Try to occupy the center of the position (the 4 center-squares in the first few moves).
+\item Avoid flipping too many frontier discs (those located on the outside boundaries of the position, i.e. avoid
+ building walls).
+\item Try to group your discs into one connected cluster rather than having several scattered isolated discs.
+\item Avoid taking edges too soon (before the mid-game).
+\end{itemize}
+
+Mind that these rules are not carved in stone, but they apply very
+well for most of the games. In fact, they do not only apply to
+openings, but also to the middle section of the game.
+
+The first and third rule immediately follow from mobility
+arguments. The fourth rule, combined with the second, is partially fixed on the
+idea that if your stones are scattered, then keeping a small
+frontier is hard. Why? If you place a stone, then you have other
+stones all over the board, causing lots of stones to flip. The
+fifth rule has already been mentioned. If you take edges too soon,
+then you usually end up with an end game in which you have several
+unbalanced edges, and you opponent is playing with a wide smile on
+his or her face.
+
+Using these general rules, one nice description of how to play is
+``to try to get enclosed''. This also is known as: ``curling into
+a ball''.
+
+\subsection{Creeping along the edges}
+As with every rule, how flexible they may be, there are always
+exceptions. One strategy, that can be wonderful or disastrous
+(really, really disastrous), is the ``creeping along edges''
+strategy. What is this strategy about? Instead of trying to have
+the opponent enclose you while you are a small cluster of stones
+in the middle of the board, you try to gain control of one or two
+edges. You try to gain a lot of tempi while doing so, to leave
+the opponent in a position where he has no free moves when you
+have the edges. After that you force the opponent to sacrifice a
+good corner and you are set. The one problem with this strategy is
+that if the opponent is able to have one move left after you have
+the edges, then you basically can just give up. So either you win
+by using a daring short term strategy, or you lose big time because
+your position offers no long term prospects.
+
+
+\section{Standard openings of Othello}
+Once you have grasped all the ideas presented in this manual, and
+are quite familiar with them, you will find that Othello games
+generally move into certain stages. There is an opening stage of
+about roughly 20-26 moves, a middle stage and and end stage
+(starting somewhere between 16 to 10 moves before the end). The
+end game is a matter of good calculating using the concepts given
+and also practice (the freeware program Icare is \textbf{great}
+for practicing Othello games). The middle game is also about
+rules, directed more at how to attack edges and gaining tempi.
+
+The opening of Othello roughly obeys the rules mentioned before,
+but this may not be enough against really experienced players. For
+example: there are positions in which all the rules can not help
+you determine what move to make. Your opponent may know what move
+is better simply because he has played both options several times
+and found out that one move simply works out better in the long
+run. Fortunately you can tap into the common Othello openings
+source of the last decade. Almost any Othello game played on
+tournaments is collected in the Thor database.
+
+Furthermore, Robert Gatliff
+has made a huge list containing standard openings and the
+percentage in which each is played. This knowledge is collected in
+a Java programme, so that you can easily learn standard openings.
+The occurrence percentage allows you to learn the openings that
+are played most first, and after that to continue into the more
+obscure ones. A small tip: try to learn like 3 openings at first,
+and learn them well (like 20 moves deep, with several variances),
+before going on.
+
+So, to sum it all up, there are three programs that can help you
+advance in Othello (besides playing humans of course). Luckily
+they are all free to download, so do not hesitate and get hooked.
+\begin{itemize}
+\item For openings, get the java applet based on Robert Gatliff's list.
+\item For end games, use Icare. You can vary from 6 until 12 empty
+squares, starting from positions that really have occurred.
+\item For games in general, practicing mid game and analyzing
+games you played vs someone else, use Wzebra. You can also use it
+to import Thor databases and study other games.
+\end{itemize}
+
+Also, playing human adversaries is a world apart. There are
+several places where you can meet other people. Common places are:
+\begin{itemize}
+\item
+IOS (the Internet Othello Server) which has a very strong player
+base
+\item Vog (www.vog.ru) which has a very nice graphical layer for
+$\$24$ a year.
+\item The Zone (www.zone.com/reversi), microsoft's server, for
+free. The Zone has several rooms, for beginners and more advanced players.
+\item Yahoo
+\end{itemize}
+
+
+\chapter{\LaTeX\ and Othello}
+The pictures in this manual have been created using the
+\textbf{Othello} package for \LaTeX. I have created this package
+by modifying the \textbf{go} package by Hanna Kolodziejska. Thus,
+the commands to use are quite similar as for go. A short list of
+possible commands:
+\begin{itemize}
+\item {\verb|\gofontsize{size}|} This command determines the font for
+the board. Standard values are 10,15,20.
+\item
+{\verb|\inifulldiagram|} This creates a board, you use this to
+start. When including the Othello package, a first board is
+initialized immediately, so this command is only needed when you
+want to make more then one board.
+\item
+{\verb|\inidiagram{let1}{let2}{num1}{num2}|} This cleans the
+current board specified by rows let1 to let2 and columns num1 to
+num2. This can be used to make small modifications to a filled
+board for example.
+
+\item{\verb|\pos|}\{letter\}\{number\}={\verb|\color|}\{marking\} This command places a
+stone onto the position denoted by (letter, number), where letter
+denotes the row, and number denotes the column , color is either
+black,white or neutral. If the color is either black or white,
+then the argument is a dot or a number ranging between 1 and 64. A
+dot represents a regular stone, while a number shows a stone that
+is numbered. The color neutral is meant to insert a character onto
+the board without drawing a stone. Besides the numbers 1 to 64,
+neutral also recognizes the arguments 65 and 66 to draw an X or a
+C respectively. These options have been added for the example of
+special stones (chapter 2).
+
+Example: {\verb|\pos|}\{b\}\{5\}=\hbox{\verb|\black|}\{.\}
+gives a plain black stone on row b, column 5.
+
+Example: {\verb|\pos|}\{b\}\{5\}=\hbox{\verb|\white|}\{21\} gives
+a white stone on b5, with the number 21 inside.
+
+\textbf{Warning:} Othello moves usually are described in
+letter/number combinations where the letter denotes the column and
+the number the row, i.e. reversed from Othello package. This is
+because I modified an existing package, and do not have enough
+\TeX\ knowledge yet to make a clean switch. Thus,
+ if you want to make a picture of a written
+transcription and it says : black puts a stone on e2, you'd have
+to define the position as b5. If anyone with sufficient knowledge
+and time wants to look at othello.sty, I'd be more then happy (if
+you do not want to translate all positions, just follow the
+original transcription since the position will only come out
+reflected in the diagonal from the left upper corner to the right
+bottom corner. The idea of the game is the same though.)
+
+\item{\verb|\showfulldiagram|} This shows the full diagram made so
+far. You can add more moves after this and reuse this command to
+show the latest version of the board.
+\end{itemize}
+
+\noindent A short example to illustrate the commands, the commands to create
+the opening position for Othello:
+{\obeylines
+{\verb|\inifulldiagram|}
+{\verb|\gofontsize{10}|}
+{\verb|\pos{d}{4}=\black{.}}|}
+{\verb|\pos{e}{5}=\black{.}|}
+{\verb|\pos{d}{5}=\white{.}|}
+{\verb|\pos{e}{4}=\white{.}|}
+{\verb|\showfulldiagram|}}
+
+A last example will show all different kind of characters for an
+Othello board.
+
+\begin{figure}
+\overviewboard
+\end{figure}
+
+In the go package, a feature has been added to show only parts of
+the board, since go boards are rather large. Since Othello boards
+are only 8x8, this is not necessary in general, but the option
+still exists. To use this option, use the command
+{\verb|\showdiagram|}row1-row2:column1-column2, instead of
+{\verb|\showfulldiagram|}. For example: the northwest corner of
+the overview board is given by:
+
+\begin{figure}
+\overviewboardcorner
+\end{figure}
+
+As mentioned: this package has been created using the go package
+as a basis. There still are 2 things to improve, but unfortunately
+I am not a \TeX\ or metafont guru (yet). If anyone knows how to
+either:
+\begin{itemize}
+\item make prettier metafont definitions for the X and C
+\item change the position definition in such a way that the position
+command uses the same co\"ordinates as the standard Othello
+notation
+\end{itemize}
+then I would be more then happy to hear from you.
+\printindex
+\end{document}