summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/onedown
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/onedown')
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-danish.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-dutch.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-english.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-fallback.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-french.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-german.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-norwegian.trsl159
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-swedish.trsl160
-rw-r--r--Master/texmf-dist/tex/latex/onedown/ODw-turkish.trsl158
-rw-r--r--Master/texmf-dist/tex/latex/onedown/onedown.sty2177
10 files changed, 3602 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-danish.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-danish.trsl
new file mode 100644
index 00000000000..da30963e6cd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-danish.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-danish.trsl
+%
+% Entries with a "!" denote an abreviated form
+%
+%% retrieve with e.g \GetTranslation{dealer-(ODw)} to get givare
+%
+\ProvideDictionaryFor{danish}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1.}
+\NewDictTranslation{2nd-(ODw)}{2.}
+\NewDictTranslation{3rd-(ODw)}{3.}
+\NewDictTranslation{4th-(ODw)}{4.}
+\NewDictTranslation{ace-(ODw)}{es}
+\NewDictTranslation{Ace-(ODw)}{Es}
+\NewDictTranslation{all-(ODw)}{alle}
+\NewDictTranslation{All-(ODw)}{Alle}
+\NewDictTranslation{all!-(ODw)}{alle}
+\NewDictTranslation{All!-(ODw)}{Alle}
+\NewDictTranslation{all pass-(ODw)}{alle passer}
+\NewDictTranslation{All pass-(ODw)}{Alle passer}
+\NewDictTranslation{a-(ODw)}{e}
+\NewDictTranslation{A-(ODw)}{E}% Es
+%\NewDictTranslation{award-(ODw)}{poäng}
+%\NewDictTranslation{Award-(ODw)}{Poäng}
+\NewDictTranslation{award-(ODw)}{värdering}
+\NewDictTranslation{Award-(ODw)}{Värdering}
+\NewDictTranslation{bid-(ODw)}{meldt}
+\NewDictTranslation{Bid-(ODw)}{Meldt}
+\NewDictTranslation{board-(ODw)}{bræt}
+\NewDictTranslation{Board-(ODw)}{Bræt}
+\NewDictTranslation{brd-(ODw)}{brt}
+\NewDictTranslation{Brd-(ODw)}{Brt}
+\NewDictTranslation{by-(ODw)}{af}
+\NewDictTranslation{call-(ODw)}{bud}
+\NewDictTranslation{Call-(ODw)}{Bud}
+\NewDictTranslation{-card-(ODw)}{-kort}
+\NewDictTranslation{contract-(ODw)}{kontrakten}
+\NewDictTranslation{Contract-(ODw)}{Kontrakten}
+\NewDictTranslation{contr-(ODw)}{kontr}
+\NewDictTranslation{Contr-(ODw)}{Kontr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{givet}
+\NewDictTranslation{Dealer-(ODw)}{Givet}
+\NewDictTranslation{deal-(ODw)}{giv}
+\NewDictTranslation{Deal-(ODw)}{Giv}
+\NewDictTranslation{deal!-(ODw)}{giv}
+\NewDictTranslation{Deal!-(ODw)}{Giv}
+\NewDictTranslation{declarer-(ODw)}{spilfører}
+\NewDictTranslation{Declarer-(ODw)}{Spilfører}
+\NewDictTranslation{decl-(ODw)}{spilf}
+\NewDictTranslation{Decl-(ODw)}{Spilf}
+\NewDictTranslation{distribution points-(ODw)}{fordelingspoints}
+\NewDictTranslation{Distribution Points-(ODw)}{Fordelingspoints}
+\NewDictTranslation{doubled-(ODw)}{dubbelt}
+\NewDictTranslation{Doubled-(ODw)}{Dubbelt}
+\NewDictTranslation{double-(ODw)}{dubbelt}
+\NewDictTranslation{Double-(ODw)}{Dubbelt}
+\NewDictTranslation{dp-(ODw)}{fp}
+\NewDictTranslation{DP-(ODw)}{FP}
+\NewDictTranslation{east-(ODw)}{øst}
+\NewDictTranslation{East-(ODw)}{Øst}
+\NewDictTranslation{e-(ODw)}{ø}
+\NewDictTranslation{E-(ODw)}{Ø}
+\NewDictTranslation{fourth suit forcing-(ODw)}{fjerde farve forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Fjerde Farve Forcing}
+\NewDictTranslation{fsf-(ODw)}{4. ff}
+\NewDictTranslation{FSF-(ODw)}{4. FF}
+\NewDictTranslation{game forcing-(ODw)}{krav till utgång}
+\NewDictTranslation{Game Forcing-(ODw)}{Krav till Utgång}
+\NewDictTranslation{gf-(ODw)}{ku}
+\NewDictTranslation{GF-(ODw)}{KU}
+\NewDictTranslation{Hand-(ODw)}{Hånd}
+\NewDictTranslation{hand-(ODw)}{hånd}
+\NewDictTranslation{hcp-(ODw)}{hp}
+\NewDictTranslation{HCP-(ODw)}{HP}
+\NewDictTranslation{high card points-(ODw)}{honnørpoints}
+\NewDictTranslation{High Card Points-(ODw)}{Honnørpoints}
+\NewDictTranslation{jack-(ODw)}{knægt}
+\NewDictTranslation{Jack-(ODw)}{Knægt}
+\NewDictTranslation{j-(ODw)}{kn}
+\NewDictTranslation{J-(ODw)}{\mbox{K\kern-0.08emn}}
+\NewDictTranslation{king-(ODw)}{konge}
+\NewDictTranslation{King-(ODw)}{Konge}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead!-(ODw)}{udsp.}
+\NewDictTranslation{Lead!-(ODw)}{Udsp.}
+\NewDictTranslation{Lead-(ODw)}{Udspillet}
+\NewDictTranslation{lead-(ODw)}{udspillet}
+\NewDictTranslation{length points-(ODw)}{længepoints}
+\NewDictTranslation{Length Points-(ODw)}{Længepoints}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{new minor forcing-(ODw)}{nye minor forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Nye Minor Forcing}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{none-(ODw)}{ingen}
+\NewDictTranslation{None-(ODw)}{Ingen}
+\NewDictTranslation{none!-(ODw)}{ingen}
+\NewDictTranslation{None!-(ODw)}{Ingen}
+\NewDictTranslation{north-(ODw)}{norr}
+\NewDictTranslation{North-(ODw)}{Norr}
+\NewDictTranslation{no trump-(ODw)}{uden trumf}
+\NewDictTranslation{No Trump-(ODw)}{Uden Trumf}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{NT-(ODw)}{U\kern-0.01emT}%Uden Trumf
+\NewDictTranslation{nt-(ODw)}{ut}
+\NewDictTranslation{pass-(ODw)}{pas}
+\NewDictTranslation{Pass-(ODw)}{Pas}
+\NewDictTranslation{pass!-(ODw)}{pas}
+\NewDictTranslation{Pass!-(ODw)}{Pas}
+\NewDictTranslation{q-(ODw)}{d}
+\NewDictTranslation{Q-(ODw)}{D}
+\NewDictTranslation{queen-(ODw)}{dame}
+\NewDictTranslation{Queen-(ODw)}{Dame}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{redubbelt}
+\NewDictTranslation{Redoubled-(ODw)}{Redubbelt}
+\NewDictTranslation{redouble-(ODw)}{redubbelt}
+\NewDictTranslation{Redouble-(ODw)}{Redubbelt}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{syd}
+\NewDictTranslation{South-(ODw)}{Syd}
+\NewDictTranslation{suiter-(ODw)}{farver}
+\NewDictTranslation{Suiter-(ODw)}{Farver}
+\NewDictTranslation{suit-(ODw)}{farve}
+\NewDictTranslation{Suit-(ODw)}{Farve}
+\NewDictTranslation{third suit forcing-(ODw)}{tredje farve forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Tredje Farve Forcing}
+\NewDictTranslation{total points-(ODw)}{total points}
+\NewDictTranslation{Total Points-(ODw)}{Total Points}
+\NewDictTranslation{tp-(ODw)}{sp}
+\NewDictTranslation{TP-(ODw)}{SP}
+\NewDictTranslation{trial bid-(ODw)}{trial bid}
+\NewDictTranslation{Trial bid-(ODw)}{Trial bid}
+\NewDictTranslation{trick-(ODw)}{træk}
+\NewDictTranslation{Trick-(ODw)}{Træk}
+\NewDictTranslation{tsf-(ODw)}{3. ff}
+\NewDictTranslation{TSF-(ODw)}{3. FF}
+\NewDictTranslation{vulnerable-(ODw)}{sårbar}
+\NewDictTranslation{Vulnerable-(ODw)}{Sårbar}
+\NewDictTranslation{vul-(ODw)}{sår}
+\NewDictTranslation{Vul-(ODw)}{Sår}
+\NewDictTranslation{west-(ODw)}{vest}
+\NewDictTranslation{West-(ODw)}{Vest}
+\NewDictTranslation{w-(ODw)}{v}
+\NewDictTranslation{W-(ODw)}{V}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-dutch.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-dutch.trsl
new file mode 100644
index 00000000000..9fa9333af18
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-dutch.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-dutch.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get dealer
+%
+\ProvideDictionaryFor{dutch}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1ste}
+\NewDictTranslation{2nd-(ODw)}{2de}
+\NewDictTranslation{3rd-(ODw)}{3de}
+\NewDictTranslation{4th-(ODw)}{4de}
+\NewDictTranslation{ace-(ODw)}{aas}
+\NewDictTranslation{Ace-(ODw)}{Aas}
+\NewDictTranslation{all-(ODw)}{alle}
+\NewDictTranslation{All-(ODw)}{Alle}
+\NewDictTranslation{all!-(ODw)}{alle}
+\NewDictTranslation{All!-(ODw)}{Alle}
+\NewDictTranslation{all pass-(ODw)}{allen passen}
+\NewDictTranslation{All pass-(ODw)}{Allen passen}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+\NewDictTranslation{award-(ODw)}{beloning}
+\NewDictTranslation{Award-(ODw)}{Beloning}
+\NewDictTranslation{bid-(ODw)}{bod}
+\NewDictTranslation{Bid-(ODw)}{Bod}
+\NewDictTranslation{board-(ODw)}{spel}
+\NewDictTranslation{Board-(ODw)}{Spel}
+\NewDictTranslation{brd-(ODw)}{spel}
+\NewDictTranslation{Brd-(ODw)}{Spel}
+\NewDictTranslation{by-(ODw)}{door}
+\NewDictTranslation{call-(ODw)}{bod}
+\NewDictTranslation{Call-(ODw)}{Bod}
+\NewDictTranslation{-card-(ODw)}{-kaart}
+\NewDictTranslation{contract-(ODw)}{contract}
+\NewDictTranslation{Contract-(ODw)}{Contract}
+\NewDictTranslation{contr-(ODw)}{contr}
+\NewDictTranslation{Contr-(ODw)}{Contr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{gever}
+\NewDictTranslation{Dealer-(ODw)}{Gever}
+\NewDictTranslation{deal-(ODw)}{spel}
+\NewDictTranslation{Deal-(ODw)}{Spel}
+\NewDictTranslation{deal!-(ODw)}{spel}
+\NewDictTranslation{Deal!-(ODw)}{Spel}
+\NewDictTranslation{declarer-(ODw)}{leider}
+\NewDictTranslation{Declarer-(ODw)}{Leider}
+\NewDictTranslation{decl-(ODw)}{leider}
+\NewDictTranslation{Decl-(ODw)}{Leider}
+\NewDictTranslation{distribution points-(ODw)}{distributie punten}
+\NewDictTranslation{Distribution Points-(ODw)}{Distributie Punten}
+\NewDictTranslation{doubled-(ODw)}{gedoubleerd}
+\NewDictTranslation{Doubled-(ODw)}{Gedoubleerd}
+\NewDictTranslation{double-(ODw)}{doublet}
+\NewDictTranslation{Double-(ODw)}{Doublet}
+\NewDictTranslation{dp-(ODw)}{dp}
+\NewDictTranslation{DP-(ODw)}{DP}
+\NewDictTranslation{east-(ODw)}{oost}
+\NewDictTranslation{East-(ODw)}{Oost}
+\NewDictTranslation{e-(ODw)}{o}
+\NewDictTranslation{E-(ODw)}{O}
+\NewDictTranslation{fourth suit forcing-(ODw)}{vierde kleur forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Vierde Kleur Forcing}
+\NewDictTranslation{fsf-(ODw)}{4de kc}
+\NewDictTranslation{FSF-(ODw)}{4de KV}
+\NewDictTranslation{game forcing-(ODw)}{manche forcing}
+\NewDictTranslation{Game Forcing-(ODw)}{Manche Forcing}
+\NewDictTranslation{gf-(ODw)}{mf}
+\NewDictTranslation{GF-(ODw)}{MF}
+\NewDictTranslation{hand-(ODw)}{hand}
+\NewDictTranslation{Hand-(ODw)}{Hand}
+\NewDictTranslation{hcp-(ODw)}{hp}
+\NewDictTranslation{HCP-(ODw)}{HP}
+\NewDictTranslation{high card points-(ODw)}{hoge punten}
+\NewDictTranslation{High Card Points-(ODw)}{Hoge Punten}
+\NewDictTranslation{jack-(ODw)}{boer}
+\NewDictTranslation{Jack-(ODw)}{Boer}
+\NewDictTranslation{j-(ODw)}{b}
+\NewDictTranslation{J-(ODw)}{B}
+\NewDictTranslation{king-(ODw)}{heer}
+\NewDictTranslation{King-(ODw)}{Heer}
+\NewDictTranslation{k-(ODw)}{h}
+\NewDictTranslation{K-(ODw)}{H}
+\NewDictTranslation{lead!-(ODw)}{uitk.}
+\NewDictTranslation{Lead!-(ODw)}{Uitk.}
+\NewDictTranslation{lead-(ODw)}{uitkomst}
+\NewDictTranslation{Lead-(ODw)}{Uitkomst}
+\NewDictTranslation{length points-(ODw)}{lengte punten}
+\NewDictTranslation{Length Points-(ODw)}{Lengte Punten}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{new minor forcing-(ODw)}{nieuwe lage kleur forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Nieuwe Lage Kleur Forcing}
+\NewDictTranslation{nmf-(ODw)}{nlf}
+\NewDictTranslation{NMF-(ODw)}{NLF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none-(ODw)}{geen}
+\NewDictTranslation{None-(ODw)}{Geen}
+\NewDictTranslation{none!-(ODw)}{geen}
+\NewDictTranslation{None!-(ODw)}{Geen}
+\NewDictTranslation{north-(ODw)}{noord}
+\NewDictTranslation{North-(ODw)}{Noord}
+\NewDictTranslation{no trump-(ODw)}{sans atout}
+\NewDictTranslation{No Trump-(ODw)}{Sans Atout}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{nt-(ODw)}{sa}
+\NewDictTranslation{NT-(ODw)}{S\kern-0.01emA}
+\NewDictTranslation{pass-(ODw)}{pas}
+\NewDictTranslation{Pass-(ODw)}{Pas}
+\NewDictTranslation{pass!-(ODw)}{pas}
+\NewDictTranslation{Pass!-(ODw)}{Pas}
+\NewDictTranslation{q-(ODw)}{v}
+\NewDictTranslation{Q-(ODw)}{V}
+\NewDictTranslation{queen-(ODw)}{vrouw}
+\NewDictTranslation{Queen-(ODw)}{Vrouw}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{geredoubleerd}
+\NewDictTranslation{Redoubled-(ODw)}{Geredoubleerd}
+\NewDictTranslation{redouble-(ODw)}{redoublet}
+\NewDictTranslation{Redouble-(ODw)}{Redoublet}
+\NewDictTranslation{semi forcing-(ODw)}{semi-mancheforcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi-MancheForcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{z}
+\NewDictTranslation{S-(ODw)}{Z}
+\NewDictTranslation{south-(ODw)}{zuid}
+\NewDictTranslation{South-(ODw)}{Zuid}
+\NewDictTranslation{suiter-(ODw)}{kleurenspel}
+\NewDictTranslation{Suiter-(ODw)}{Kleurenspel}
+\NewDictTranslation{suit-(ODw)}{kleur}
+\NewDictTranslation{Suit-(ODw)}{Kleur}
+\NewDictTranslation{third suit forcing-(ODw)}{derde kleur forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Derde Kleur Forcing}
+\NewDictTranslation{total points-(ODw)}{totaal punten}
+\NewDictTranslation{Total Points-(ODw)}{Totaal Punten}
+\NewDictTranslation{tp-(ODw)}{tp}
+\NewDictTranslation{TP-(ODw)}{TP}
+\NewDictTranslation{trial bid-(ODw)}{help bod}
+\NewDictTranslation{Trial bid-(ODw)}{Help bod}
+\NewDictTranslation{trick-(ODw)}{slag}
+\NewDictTranslation{Trick-(ODw)}{Slag}
+\NewDictTranslation{tsf-(ODw)}{3de kf}
+\NewDictTranslation{TSF-(ODw)}{3de KF}
+\NewDictTranslation{vulnerable-(ODw)}{kwetsbaar}
+\NewDictTranslation{Vulnerable-(ODw)}{Kwetsbaar}
+\NewDictTranslation{vul-(ODw)}{kwetsb}
+\NewDictTranslation{Vul-(ODw)}{Kwetsb}
+\NewDictTranslation{west-(ODw)}{west}
+\NewDictTranslation{West-(ODw)}{West}
+\NewDictTranslation{w-(ODw)}{w}
+\NewDictTranslation{W-(ODw)}{W}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-english.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-english.trsl
new file mode 100644
index 00000000000..3806b2dce73
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-english.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-english.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get dealer
+%
+\ProvideDictionaryFor{english}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1st}
+\NewDictTranslation{2nd-(ODw)}{2nd}
+\NewDictTranslation{3rd-(ODw)}{3rd}
+\NewDictTranslation{4th-(ODw)}{4th}
+\NewDictTranslation{ace-(ODw)}{ace}
+\NewDictTranslation{Ace-(ODw)}{Ace}
+\NewDictTranslation{all-(ODw)}{all}
+\NewDictTranslation{All-(ODw)}{All}
+\NewDictTranslation{all!-(ODw)}{all}
+\NewDictTranslation{All!-(ODw)}{All}
+\NewDictTranslation{all pass-(ODw)}{all pass}
+\NewDictTranslation{All pass-(ODw)}{All pass}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+\NewDictTranslation{Award-(ODw)}{Award}
+\NewDictTranslation{award-(ODw)}{award}% = points you earn in a quiz
+\NewDictTranslation{Bid-(ODw)}{Bid}
+\NewDictTranslation{bid-(ODw)}{bid}% = e.g. 2C, 4H or 6NT
+\NewDictTranslation{Board-(ODw)}{Board}
+\NewDictTranslation{board-(ODw)}{board}% = equipment that holds 1 deal
+\NewDictTranslation{Brd-(ODw)}{Brd}
+\NewDictTranslation{brd-(ODw)}{brd}% = equipment that holds 1 deal
+\NewDictTranslation{by-(ODw)}{by}
+\NewDictTranslation{Call-(ODw)}{Call}
+\NewDictTranslation{call-(ODw)}{call}% = bid + pass, (re)double
+\NewDictTranslation{-card-(ODw)}{-card}
+\NewDictTranslation{contract-(ODw)}{contract}
+\NewDictTranslation{Contract-(ODw)}{Contract}
+\NewDictTranslation{contr-(ODw)}{contr}
+\NewDictTranslation{Contr-(ODw)}{Contr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{dealer}
+\NewDictTranslation{Dealer-(ODw)}{Dealer}
+\NewDictTranslation{Deal-(ODw)}{Deal}
+\NewDictTranslation{Deal!-(ODw)}{Deal}
+\NewDictTranslation{deal-(ODw)}{deal}% = 4 hands
+\NewDictTranslation{deal!-(ODw)}{deal}% = 4 hands
+\NewDictTranslation{declarer-(ODw)}{declarer}
+\NewDictTranslation{Declarer-(ODw)}{Declarer}
+\NewDictTranslation{decl-(ODw)}{decl}
+\NewDictTranslation{Decl-(ODw)}{Decl}
+\NewDictTranslation{distribution points-(ODw)}{distribution points}
+\NewDictTranslation{Distribution Points-(ODw)}{Distribution Points}
+\NewDictTranslation{doubled-(ODw)}{doubled}
+\NewDictTranslation{Doubled-(ODw)}{Doubled}
+\NewDictTranslation{double-(ODw)}{double}
+\NewDictTranslation{Double-(ODw)}{Double}
+\NewDictTranslation{dp-(ODw)}{dp}
+\NewDictTranslation{DP-(ODw)}{DP}
+\NewDictTranslation{east-(ODw)}{east}
+\NewDictTranslation{East-(ODw)}{East}
+\NewDictTranslation{e-(ODw)}{e}
+\NewDictTranslation{E-(ODw)}{E}
+\NewDictTranslation{fourth suit forcing-(ODw)}{fourth suit forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Fourth Suit Forcing}
+\NewDictTranslation{fsf-(ODw)}{4th sf}
+\NewDictTranslation{FSF-(ODw)}{4th SF}
+\NewDictTranslation{game forcing-(ODw)}{game forcing}
+\NewDictTranslation{Game Forcing-(ODw)}{Game Forcing}
+\NewDictTranslation{gf-(ODw)}{gf}
+\NewDictTranslation{GF-(ODw)}{GF}
+\NewDictTranslation{Hand-(ODw)}{Hand}
+\NewDictTranslation{hand-(ODw)}{hand}% = 13 cards of 1 player
+\NewDictTranslation{hcp-(ODw)}{hcp}
+\NewDictTranslation{HCP-(ODw)}{HCP}
+\NewDictTranslation{high card points-(ODw)}{high card points}
+\NewDictTranslation{High Card Points-(ODw)}{High Card Points}
+\NewDictTranslation{jack-(ODw)}{jack}
+\NewDictTranslation{Jack-(ODw)}{Jack}
+\NewDictTranslation{j-(ODw)}{j}
+\NewDictTranslation{J-(ODw)}{J}
+\NewDictTranslation{king-(ODw)}{king}
+\NewDictTranslation{King-(ODw)}{King}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead-(ODw)}{lead}
+\NewDictTranslation{Lead-(ODw)}{Lead}
+\NewDictTranslation{lead!-(ODw)}{lead}
+\NewDictTranslation{Lead!-(ODw)}{Lead}
+\NewDictTranslation{length points-(ODw)}{length points}
+\NewDictTranslation{Length Points-(ODw)}{Length Points}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{new minor forcing-(ODw)}{new minor forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{New Minor Forcing}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none-(ODw)}{none}
+\NewDictTranslation{None-(ODw)}{None}
+\NewDictTranslation{none!-(ODw)}{none}
+\NewDictTranslation{None!-(ODw)}{None}
+\NewDictTranslation{north-(ODw)}{north}
+\NewDictTranslation{North-(ODw)}{North}
+\NewDictTranslation{no trump-(ODw)}{no trump}
+\NewDictTranslation{No Trump-(ODw)}{No Trump}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{NT-(ODw)}{N\kern-0.07emT}
+\NewDictTranslation{nt-(ODw)}{nt}
+\NewDictTranslation{pass-(ODw)}{pass}
+\NewDictTranslation{Pass-(ODw)}{Pass}
+\NewDictTranslation{pass!-(ODw)}{pass}
+\NewDictTranslation{Pass!-(ODw)}{Pass}
+\NewDictTranslation{q-(ODw)}{q}
+\NewDictTranslation{Q-(ODw)}{Q}
+\NewDictTranslation{queen-(ODw)}{queen}
+\NewDictTranslation{Queen-(ODw)}{Queen}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{redoubled}
+\NewDictTranslation{Redoubled-(ODw)}{Redoubled}
+\NewDictTranslation{redouble-(ODw)}{redouble}
+\NewDictTranslation{ReDouble-(ODw)}{ReDouble}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{south}
+\NewDictTranslation{South-(ODw)}{South}
+\NewDictTranslation{suiter-(ODw)}{suiter}
+\NewDictTranslation{Suiter-(ODw)}{Suiter}
+\NewDictTranslation{suit-(ODw)}{suit}
+\NewDictTranslation{Suit-(ODw)}{Suit}
+\NewDictTranslation{third suit forcing-(ODw)}{third suit forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Third Suit Forcing}
+\NewDictTranslation{total points-(ODw)}{total points}
+\NewDictTranslation{Total Points-(ODw)}{Total Points}
+\NewDictTranslation{tp-(ODw)}{tp}
+\NewDictTranslation{TP-(ODw)}{TP}
+\NewDictTranslation{trial bid-(ODw)}{trial bid}
+\NewDictTranslation{Trial bid-(ODw)}{Trial bid}
+\NewDictTranslation{trick-(ODw)}{trick}
+\NewDictTranslation{Trick-(ODw)}{Trick}
+\NewDictTranslation{tsf-(ODw)}{3rd sf}
+\NewDictTranslation{TSF-(ODw)}{3rd SF}
+\NewDictTranslation{vulnerable-(ODw)}{vulnerable}
+\NewDictTranslation{Vulnerable-(ODw)}{Vulnerable}
+\NewDictTranslation{vul-(ODw)}{vul}
+\NewDictTranslation{Vul-(ODw)}{Vul}
+\NewDictTranslation{west-(ODw)}{west}
+\NewDictTranslation{West-(ODw)}{West}
+\NewDictTranslation{w-(ODw)}{w}
+\NewDictTranslation{W-(ODw)}{W}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-fallback.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-fallback.trsl
new file mode 100644
index 00000000000..e889919ba82
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-fallback.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-fallback.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get dealer
+%
+\ProvideDictionaryFor{fallback}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1st}
+\NewDictTranslation{2nd-(ODw)}{2nd}
+\NewDictTranslation{3rd-(ODw)}{3rd}
+\NewDictTranslation{4th-(ODw)}{4th}
+\NewDictTranslation{ace-(ODw)}{ace}
+\NewDictTranslation{Ace-(ODw)}{Ace}
+\NewDictTranslation{all-(ODw)}{all}
+\NewDictTranslation{All-(ODw)}{All}
+\NewDictTranslation{all!-(ODw)}{all}
+\NewDictTranslation{All!-(ODw)}{All}
+\NewDictTranslation{all pass-(ODw)}{all pass}
+\NewDictTranslation{All pass-(ODw)}{All pass}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+\NewDictTranslation{Award-(ODw)}{Award}
+\NewDictTranslation{award-(ODw)}{award}% = points you earn in a quiz
+\NewDictTranslation{Bid-(ODw)}{Bid}
+\NewDictTranslation{bid-(ODw)}{bid}% = e.g. 2C, 4H or 6NT
+\NewDictTranslation{Board-(ODw)}{Board}
+\NewDictTranslation{board-(ODw)}{board}% = equipment that holds 1 deal
+\NewDictTranslation{Brd-(ODw)}{Brd}
+\NewDictTranslation{brd-(ODw)}{brd}% = equipment that holds 1 deal
+\NewDictTranslation{by-(ODw)}{by}
+\NewDictTranslation{Call-(ODw)}{Call}
+\NewDictTranslation{call-(ODw)}{call}% = bid + pass, (re)double
+\NewDictTranslation{-card-(ODw)}{-card}
+\NewDictTranslation{contract-(ODw)}{contract}
+\NewDictTranslation{Contract-(ODw)}{Contract}
+\NewDictTranslation{contr-(ODw)}{contr}
+\NewDictTranslation{Contr-(ODw)}{Contr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{dealer}
+\NewDictTranslation{Dealer-(ODw)}{Dealer}
+\NewDictTranslation{Deal-(ODw)}{Deal}
+\NewDictTranslation{Deal!-(ODw)}{Deal}
+\NewDictTranslation{deal-(ODw)}{deal}% = 4 hands
+\NewDictTranslation{deal!-(ODw)}{deal}% = 4 hands
+\NewDictTranslation{declarer-(ODw)}{declarer}
+\NewDictTranslation{Declarer-(ODw)}{Declarer}
+\NewDictTranslation{decl-(ODw)}{decl}
+\NewDictTranslation{Decl-(ODw)}{Decl}
+\NewDictTranslation{distribution points-(ODw)}{distribution points}
+\NewDictTranslation{Distribution Points-(ODw)}{Distribution Points}
+\NewDictTranslation{doubled-(ODw)}{doubled}
+\NewDictTranslation{Doubled-(ODw)}{Doubled}
+\NewDictTranslation{double-(ODw)}{double}
+\NewDictTranslation{Double-(ODw)}{Double}
+\NewDictTranslation{dp-(ODw)}{dp}
+\NewDictTranslation{DP-(ODw)}{DP}
+\NewDictTranslation{east-(ODw)}{east}
+\NewDictTranslation{East-(ODw)}{East}
+\NewDictTranslation{e-(ODw)}{e}
+\NewDictTranslation{E-(ODw)}{E}
+\NewDictTranslation{fourth suit forcing-(ODw)}{fourth suit forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Fourth Suit Forcing}
+\NewDictTranslation{fsf-(ODw)}{4th sf}
+\NewDictTranslation{FSF-(ODw)}{4th SF}
+\NewDictTranslation{game forcing-(ODw)}{game forcing}
+\NewDictTranslation{Game Forcing-(ODw)}{Game Forcing}
+\NewDictTranslation{gf-(ODw)}{gf}
+\NewDictTranslation{GF-(ODw)}{GF}
+\NewDictTranslation{Hand-(ODw)}{Hand}
+\NewDictTranslation{hand-(ODw)}{hand}% = 13 cards of 1 player
+\NewDictTranslation{hcp-(ODw)}{hcp}
+\NewDictTranslation{HCP-(ODw)}{HCP}
+\NewDictTranslation{high card points-(ODw)}{high card points}
+\NewDictTranslation{High Card Points-(ODw)}{High Card Points}
+\NewDictTranslation{jack-(ODw)}{jack}
+\NewDictTranslation{Jack-(ODw)}{Jack}
+\NewDictTranslation{j-(ODw)}{j}
+\NewDictTranslation{J-(ODw)}{J}
+\NewDictTranslation{king-(ODw)}{king}
+\NewDictTranslation{King-(ODw)}{King}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead-(ODw)}{lead}
+\NewDictTranslation{Lead-(ODw)}{Lead}
+\NewDictTranslation{lead!-(ODw)}{lead}
+\NewDictTranslation{Lead!-(ODw)}{Lead}
+\NewDictTranslation{length points-(ODw)}{length points}
+\NewDictTranslation{Length Points-(ODw)}{Length Points}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{new minor forcing-(ODw)}{new minor forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{New Minor Forcing}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none-(ODw)}{none}
+\NewDictTranslation{None-(ODw)}{None}
+\NewDictTranslation{none!-(ODw)}{none}
+\NewDictTranslation{None!-(ODw)}{None}
+\NewDictTranslation{north-(ODw)}{north}
+\NewDictTranslation{North-(ODw)}{North}
+\NewDictTranslation{no trump-(ODw)}{no trump}
+\NewDictTranslation{No Trump-(ODw)}{No Trump}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{NT-(ODw)}{N\kern-0.07emT}
+\NewDictTranslation{nt-(ODw)}{nt}
+\NewDictTranslation{pass-(ODw)}{pass}
+\NewDictTranslation{Pass-(ODw)}{Pass}
+\NewDictTranslation{pass!-(ODw)}{pass}
+\NewDictTranslation{Pass!-(ODw)}{Pass}
+\NewDictTranslation{q-(ODw)}{q}
+\NewDictTranslation{Q-(ODw)}{Q}
+\NewDictTranslation{queen-(ODw)}{queen}
+\NewDictTranslation{Queen-(ODw)}{Queen}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{redoubled}
+\NewDictTranslation{Redoubled-(ODw)}{Redoubled}
+\NewDictTranslation{redouble-(ODw)}{redouble}
+\NewDictTranslation{ReDouble-(ODw)}{ReDouble}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{south}
+\NewDictTranslation{South-(ODw)}{South}
+\NewDictTranslation{suiter-(ODw)}{suiter}
+\NewDictTranslation{Suiter-(ODw)}{Suiter}
+\NewDictTranslation{suit-(ODw)}{suit}
+\NewDictTranslation{Suit-(ODw)}{Suit}
+\NewDictTranslation{third suit forcing-(ODw)}{third suit forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Third Suit Forcing}
+\NewDictTranslation{total points-(ODw)}{total points}
+\NewDictTranslation{Total Points-(ODw)}{Total Points}
+\NewDictTranslation{tp-(ODw)}{tp}
+\NewDictTranslation{TP-(ODw)}{TP}
+\NewDictTranslation{trial bid-(ODw)}{trial bid}
+\NewDictTranslation{Trial bid-(ODw)}{Trial bid}
+\NewDictTranslation{trick-(ODw)}{trick}
+\NewDictTranslation{Trick-(ODw)}{Trick}
+\NewDictTranslation{tsf-(ODw)}{3rd sf}
+\NewDictTranslation{TSF-(ODw)}{3rd SF}
+\NewDictTranslation{vulnerable-(ODw)}{vulnerable}
+\NewDictTranslation{Vulnerable-(ODw)}{Vulnerable}
+\NewDictTranslation{vul-(ODw)}{vul}
+\NewDictTranslation{Vul-(ODw)}{Vul}
+\NewDictTranslation{west-(ODw)}{west}
+\NewDictTranslation{West-(ODw)}{West}
+\NewDictTranslation{w-(ODw)}{w}
+\NewDictTranslation{W-(ODw)}{W}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-french.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-french.trsl
new file mode 100644
index 00000000000..ea0e9fb94a4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-french.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-french.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get donneur
+%
+\ProvideDictionaryFor{french}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1er}
+\NewDictTranslation{2nd-(ODw)}{2e}
+\NewDictTranslation{3rd-(ODw)}{3e}
+\NewDictTranslation{4th-(ODw)}{4e}
+\NewDictTranslation{ace-(ODw)}{as}
+\NewDictTranslation{Ace-(ODw)}{As}
+\NewDictTranslation{all-(ODw)}{tous}
+\NewDictTranslation{All-(ODw)}{Tous}
+\NewDictTranslation{all!-(ODw)}{tous}
+\NewDictTranslation{All!-(ODw)}{Tous}
+\NewDictTranslation{all pass-(ODw)}{tous passent}
+\NewDictTranslation{All pass-(ODw)}{Tous passent}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{tp}
+\NewDictTranslation{AP-(ODw)}{TP}
+\NewDictTranslation{award-(ODw)}{prix}
+\NewDictTranslation{Award-(ODw)}{Prix}
+\NewDictTranslation{bid-(ODw)}{enchère}
+\NewDictTranslation{Bid-(ODw)}{Enchère}
+\NewDictTranslation{board-(ODw)}{etui}
+\NewDictTranslation{Board-(ODw)}{Etui}
+\NewDictTranslation{brd-(ODw)}{bte}
+\NewDictTranslation{Brd-(ODw)}{Bte}
+\NewDictTranslation{by-(ODw)}{pour}
+\NewDictTranslation{call-(ODw)}{annonce}
+\NewDictTranslation{Call-(ODw)}{Annonce}
+\NewDictTranslation{-card-(ODw)}{-carte}
+\NewDictTranslation{contract-(ODw)}{contrat}
+\NewDictTranslation{Contract-(ODw)}{Contrat}
+\NewDictTranslation{contr-(ODw)}{contr}
+\NewDictTranslation{Contr-(ODw)}{Contr}
+\NewDictTranslation{Dbl-(ODw)}{Ctr}
+\NewDictTranslation{dealer-(ODw)}{donneur}
+\NewDictTranslation{Dealer-(ODw)}{Donneur}
+\NewDictTranslation{deal!-(ODw)}{donne}
+\NewDictTranslation{Deal!-(ODw)}{Donne}
+\NewDictTranslation{deal-(ODw)}{donne}
+\NewDictTranslation{Deal-(ODw)}{Donne}
+\NewDictTranslation{declarer-(ODw)}{déclarant}
+\NewDictTranslation{Declarer-(ODw)}{Déclarant}
+\NewDictTranslation{decl-(ODw)}{décl}
+\NewDictTranslation{Decl-(ODw)}{Décl}
+\NewDictTranslation{distribution points-(ODw)}{points de Distribution}
+\NewDictTranslation{Distribution Points-(ODw)}{Points de Distribution}
+\NewDictTranslation{doubled-(ODw)}{contré}
+\NewDictTranslation{Doubled-(ODw)}{Contré}
+\NewDictTranslation{double-(ODw)}{contre}
+\NewDictTranslation{Double-(ODw)}{Contre}
+\NewDictTranslation{dp-(ODw)}{pd}
+\NewDictTranslation{DP-(ODw)}{PD}
+\NewDictTranslation{east-(ODw)}{est}
+\NewDictTranslation{East-(ODw)}{Est}
+\NewDictTranslation{e-(ODw)}{e}
+\NewDictTranslation{E-(ODw)}{E}
+\NewDictTranslation{fourth suit forcing-(ODw)}{quatrième couleur forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Quatrième Couleur Forcing}
+\NewDictTranslation{fsf-(ODw)}{4e cf}
+\NewDictTranslation{FSF-(ODw)}{4e CF}
+\NewDictTranslation{game forcing-(ODw)}{forcing de manche}
+\NewDictTranslation{Game Forcing-(ODw)}{Forcing de Manche}
+\NewDictTranslation{GF-(ODw)}{FM}
+\NewDictTranslation{gf-(ODw)}{gf}
+\NewDictTranslation{hand-(ODw)}{main}
+\NewDictTranslation{Hand-(ODw)}{Main}
+\NewDictTranslation{hcp-(ODw)}{ph}
+\NewDictTranslation{HCP-(ODw)}{PH}
+\NewDictTranslation{high card points-(ODw)}{points d'honneurs}
+\NewDictTranslation{High Card Points-(ODw)}{Points d'Honneurs}
+\NewDictTranslation{jack-(ODw)}{valet}
+\NewDictTranslation{Jack-(ODw)}{Valet}
+\NewDictTranslation{j-(ODw)}{v}
+\NewDictTranslation{J-(ODw)}{V}
+\NewDictTranslation{king-(ODw)}{roi}
+\NewDictTranslation{King-(ODw)}{Roi}
+\NewDictTranslation{k-(ODw)}{r}
+\NewDictTranslation{K-(ODw)}{R}
+\NewDictTranslation{lead!-(ODw)}{ent.}
+\NewDictTranslation{Lead!-(ODw)}{Ent.}
+\NewDictTranslation{lead-(ODw)}{entame}
+\NewDictTranslation{Lead-(ODw)}{Entame}
+\NewDictTranslation{length points-(ODw)}{points de longueur}
+\NewDictTranslation{Length Points-(ODw)}{Points de Longueur}
+\NewDictTranslation{lp-(ODw)}{pl}
+\NewDictTranslation{LP-(ODw)}{PL}
+\NewDictTranslation{new minor forcing-(ODw)}{nouvelle mineure forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Nouvelle Mineure Forcing}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none-(ODw)}{aucun}
+\NewDictTranslation{None-(ODw)}{Aucun}
+\NewDictTranslation{none!-(ODw)}{aucun}
+\NewDictTranslation{None!-(ODw)}{Aucun}
+\NewDictTranslation{north-(ODw)}{nord}
+\NewDictTranslation{North-(ODw)}{Nord}
+\NewDictTranslation{no trump-(ODw)}{sans atout}
+\NewDictTranslation{No Trump-(ODw)}{Sans Atout}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{nt-(ODw)}{sa}
+\NewDictTranslation{NT-(ODw)}{S\kern-0.01emA}
+\NewDictTranslation{pass-(ODw)}{passe}
+\NewDictTranslation{Pass-(ODw)}{Passe}
+\NewDictTranslation{pass!-(ODw)}{passe}
+\NewDictTranslation{Pass!-(ODw)}{Passe}
+\NewDictTranslation{q-(ODw)}{d}
+\NewDictTranslation{Q-(ODw)}{D}
+\NewDictTranslation{queen-(ODw)}{dame}
+\NewDictTranslation{Queen-(ODw)}{Dame}
+\NewDictTranslation{ReDbl-(ODw)}{SurC}
+\NewDictTranslation{redoubled-(ODw)}{surcontré}
+\NewDictTranslation{Redoubled-(ODw)}{Surcontré}
+\NewDictTranslation{redouble-(ODw)}{surcontre}
+\NewDictTranslation{Redouble-(ODw)}{Surcontre}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{sud}
+\NewDictTranslation{South-(ODw)}{Sud}
+\NewDictTranslation{suiter-(ODw)}{colore}
+\NewDictTranslation{Suiter-(ODw)}{Colore}
+\NewDictTranslation{suit-(ODw)}{couleur}
+\NewDictTranslation{Suit-(ODw)}{Couleur}
+\NewDictTranslation{third suit forcing-(ODw)}{troisième couleur forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Troisième Couleur Forcing}
+\NewDictTranslation{total points-(ODw)}{points total}
+\NewDictTranslation{Total Points-(ODw)}{Points Total}
+\NewDictTranslation{TP-(ODw)}{PT}
+\NewDictTranslation{tp-(ODw)}{tp}
+\NewDictTranslation{trial bid-(ODw)}{trial bid}
+\NewDictTranslation{Trial bid-(ODw)}{Trial bid}
+\NewDictTranslation{trick-(ODw)}{levée}
+\NewDictTranslation{Trick-(ODw)}{Levée}
+\NewDictTranslation{tsf-(ODw)}{3e cf}
+\NewDictTranslation{TSF-(ODw)}{3e CF}
+\NewDictTranslation{vulnerable-(ODw)}{vulnérable}
+\NewDictTranslation{Vulnerable-(ODw)}{Vulnérable}
+\NewDictTranslation{vul-(ODw)}{vul}
+\NewDictTranslation{Vul-(ODw)}{Vul}
+\NewDictTranslation{west-(ODw)}{ouest}
+\NewDictTranslation{West-(ODw)}{Ouest}
+\NewDictTranslation{w-(ODw)}{o}
+\NewDictTranslation{W-(ODw)}{O}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-german.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-german.trsl
new file mode 100644
index 00000000000..9f2e86753e1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-german.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-german.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get teiler
+%
+\ProvideDictionaryFor{german}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1.}
+\NewDictTranslation{2nd-(ODw)}{2.}
+\NewDictTranslation{3rd-(ODw)}{3.}
+\NewDictTranslation{4th-(ODw)}{4.}
+\NewDictTranslation{ace-(ODw)}{ass}
+\NewDictTranslation{Ace-(ODw)}{Ass}
+\NewDictTranslation{all-(ODw)}{alle}
+\NewDictTranslation{All-(ODw)}{Alle}
+\NewDictTranslation{all!-(ODw)}{alle}
+\NewDictTranslation{All!-(ODw)}{Alle}
+\NewDictTranslation{all pass-(ODw)}{alle passen}
+\NewDictTranslation{All pass-(ODw)}{Alle passen}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+\NewDictTranslation{award-(ODw)}{Bewertung}
+\NewDictTranslation{Award-(ODw)}{Bewertung}
+\NewDictTranslation{bid-(ODw)}{gebot}
+\NewDictTranslation{Bid-(ODw)}{Gebot}
+\NewDictTranslation{board-(ODw)}{board}
+\NewDictTranslation{Board-(ODw)}{Board}
+\NewDictTranslation{brd-(ODw)}{brd}
+\NewDictTranslation{Brd-(ODw)}{Brd}
+\NewDictTranslation{by-(ODw)}{von}
+\NewDictTranslation{call-(ODw)}{ansage}
+\NewDictTranslation{Call-(ODw)}{Ansage}
+\NewDictTranslation{-card-(ODw)}{er}
+\NewDictTranslation{contract-(ODw)}{kontrakt}
+\NewDictTranslation{Contract-(ODw)}{Kontrakt}
+\NewDictTranslation{contr-(ODw)}{kontr}
+\NewDictTranslation{Contr-(ODw)}{Kontr}
+\NewDictTranslation{Dbl-(ODw)}{Kontra}
+\NewDictTranslation{dealer-(ODw)}{teiler}
+\NewDictTranslation{Dealer-(ODw)}{Teiler}
+\NewDictTranslation{deal!-(ODw)}{aust}
+\NewDictTranslation{Deal!-(ODw)}{Aust}
+\NewDictTranslation{deal-(ODw)}{austeilung}
+\NewDictTranslation{Deal-(ODw)}{Austeilung}
+\NewDictTranslation{declarer-(ODw)}{alleinspieler}
+\NewDictTranslation{Declarer-(ODw)}{Alleinspieler}
+\NewDictTranslation{decl-(ODw)}{alleinsp}
+\NewDictTranslation{Decl-(ODw)}{Alleinsp}
+\NewDictTranslation{distribution points-(ODw)}{verteilungspunkte}
+\NewDictTranslation{Distribution Points-(ODw)}{Verteilungspunkte}
+\NewDictTranslation{doubled-(ODw)}{kontriert}
+\NewDictTranslation{Doubled-(ODw)}{Kontriert}
+\NewDictTranslation{double-(ODw)}{kontra}
+\NewDictTranslation{Double-(ODw)}{Kontra}
+\NewDictTranslation{dp-(ODw)}{v}
+\NewDictTranslation{DP-(ODw)}{V}
+\NewDictTranslation{east-(ODw)}{ost}
+\NewDictTranslation{East-(ODw)}{Ost}
+\NewDictTranslation{e-(ODw)}{o}
+\NewDictTranslation{E-(ODw)}{O}
+\NewDictTranslation{fourth suit forcing-(ODw)}{vierte farbe forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Vierte Farbe Forcing}
+\NewDictTranslation{fsf-(ODw)}{4. farbe forcing}
+\NewDictTranslation{FSF-(ODw)}{4. Farbe forcing}
+\NewDictTranslation{game forcing-(ODw)}{partie forcing}
+\NewDictTranslation{Game Forcing-(ODw)}{Partie Forcing}
+\NewDictTranslation{gf-(ODw)}{pf}
+\NewDictTranslation{GF-(ODw)}{PF}
+\NewDictTranslation{hand-(ODw)}{blatt}
+\NewDictTranslation{Hand-(ODw)}{Blatt}
+\NewDictTranslation{hcp-(ODw)}{fp}
+\NewDictTranslation{HCP-(ODw)}{FP}
+\NewDictTranslation{high card points-(ODw)}{figuren-punkte}
+\NewDictTranslation{High Card Points-(ODw)}{Figuren-Punkte}
+\NewDictTranslation{jack-(ODw)}{bube}
+\NewDictTranslation{Jack-(ODw)}{Bube}
+\NewDictTranslation{j-(ODw)}{b}
+\NewDictTranslation{J-(ODw)}{B}
+\NewDictTranslation{king-(ODw)}{könig}
+\NewDictTranslation{King-(ODw)}{König}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead!-(ODw)}{aussp.}
+\NewDictTranslation{Lead!-(ODw)}{Aussp.}
+\NewDictTranslation{lead-(ODw)}{ausspiel}
+\NewDictTranslation{Lead-(ODw)}{Ausspiel}
+\NewDictTranslation{length points-(ODw)}{längenpunkte}
+\NewDictTranslation{Length Points-(ODw)}{Längenpunkte}
+\NewDictTranslation{lp-(ODw)}{fl}
+\NewDictTranslation{LP-(ODw)}{FL}
+\NewDictTranslation{new minor forcing-(ODw)}{neue unterfarbe forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Neue Unterfarbe Forcing}
+\NewDictTranslation{nmf-(ODw)}{nuf}
+\NewDictTranslation{NMF-(ODw)}{NUF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none-(ODw)}{keiner}
+\NewDictTranslation{None-(ODw)}{Keiner}
+\NewDictTranslation{none!-(ODw)}{keiner}
+\NewDictTranslation{None!-(ODw)}{Keiner}
+\NewDictTranslation{north-(ODw)}{nord}
+\NewDictTranslation{North-(ODw)}{Nord}
+\NewDictTranslation{no trump-(ODw)}{sans atout}
+\NewDictTranslation{No Trump-(ODw)}{Sans Atout}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{nt-(ODw)}{sa}
+\NewDictTranslation{NT-(ODw)}{S\kern-0.01emA}
+\NewDictTranslation{pass-(ODw)}{passe}
+\NewDictTranslation{Pass-(ODw)}{Passe}
+\NewDictTranslation{pass!-(ODw)}{passe}
+\NewDictTranslation{Pass!-(ODw)}{Passe}
+\NewDictTranslation{q-(ODw)}{d}
+\NewDictTranslation{Q-(ODw)}{D}
+\NewDictTranslation{queen-(ODw)}{dame}
+\NewDictTranslation{Queen-(ODw)}{Dame}
+\NewDictTranslation{ReDbl-(ODw)}{ReKontra}
+\NewDictTranslation{redoubled-(ODw)}{rekontriert}
+\NewDictTranslation{Redoubled-(ODw)}{Rekontriert}
+\NewDictTranslation{redouble-(ODw)}{rekontra}
+\NewDictTranslation{Redouble-(ODw)}{Rekontra}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{süd}
+\NewDictTranslation{South-(ODw)}{Süd}
+\NewDictTranslation{suiter-(ODw)}{färber}
+\NewDictTranslation{Suiter-(ODw)}{Färber}
+\NewDictTranslation{suit-(ODw)}{farbe}
+\NewDictTranslation{Suit-(ODw)}{Farbe}
+\NewDictTranslation{third suit forcing-(ODw)}{dritte farbe forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Dritte Farbe Forcing}
+\NewDictTranslation{total points-(ODw)}{figuren-verteilungspunkte}
+\NewDictTranslation{Total Points-(ODw)}{Figuren-Verteilungspunkte}
+\NewDictTranslation{tp-(ODw)}{fv}
+\NewDictTranslation{TP-(ODw)}{FV}
+\NewDictTranslation{trial bid-(ODw)}{versuchsgebot}
+\NewDictTranslation{Trial bid-(ODw)}{Versuchsgebot}
+\NewDictTranslation{trick-(ODw)}{stich}
+\NewDictTranslation{Trick-(ODw)}{Stich}
+\NewDictTranslation{tsf-(ODw)}{3. farbe forcing}
+\NewDictTranslation{TSF-(ODw)}{3. Farbe Forcing}
+\NewDictTranslation{vulnerable-(ODw)}{gefahr}
+\NewDictTranslation{Vulnerable-(ODw)}{Gefahr}
+\NewDictTranslation{vul-(ODw)}{gef}
+\NewDictTranslation{Vul-(ODw)}{Gef}
+\NewDictTranslation{west-(ODw)}{west}
+\NewDictTranslation{West-(ODw)}{West}
+\NewDictTranslation{w-(ODw)}{w}
+\NewDictTranslation{W-(ODw)}{W}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-norwegian.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-norwegian.trsl
new file mode 100644
index 00000000000..d0975002594
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-norwegian.trsl
@@ -0,0 +1,159 @@
+% this is file ODw-norsk.trsl from the OneDown bundle
+% Entries with a "!" denote an abreviated form
+% Thanks to Gunnar & Anne
+%
+% retrieve with e.g \GetTranslation{dealer-(ODw)} to get givare
+%
+\ProvideDictionaryFor{norwegian}{ODw}[V0.4]
+%\ProvideDictionaryFor{norsk}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1.}
+\NewDictTranslation{2nd-(ODw)}{2.}
+\NewDictTranslation{3rd-(ODw)}{3.}
+\NewDictTranslation{4th-(ODw)}{4.}
+\NewDictTranslation{ace-(ODw)}{ess}
+\NewDictTranslation{Ace-(ODw)}{Ess}
+\NewDictTranslation{all-(ODw)}{alle}
+\NewDictTranslation{All-(ODw)}{Alle}
+\NewDictTranslation{all!-(ODw)}{alle}
+\NewDictTranslation{All!-(ODw)}{Alle}
+\NewDictTranslation{all pass-(ODw)}{pass rundt}
+\NewDictTranslation{All pass-(ODw)}{Pass rundt}
+\NewDictTranslation{a-(ODw)}{e}
+\NewDictTranslation{A-(ODw)}{E}
+%\NewDictTranslation{award-(ODw)}{poeng}
+%\NewDictTranslation{Award-(ODw)}{Poeng}
+\NewDictTranslation{award-(ODw)}{vurdering}
+\NewDictTranslation{Award-(ODw)}{Vurdering}
+\NewDictTranslation{bid-(ODw)}{bud}
+\NewDictTranslation{Bid-(ODw)}{Bud}
+\NewDictTranslation{board-(ODw)}{spill}
+\NewDictTranslation{Board-(ODw)}{Spill}
+\NewDictTranslation{brd-(ODw)}{spill}
+\NewDictTranslation{Brd-(ODw)}{Spill}
+\NewDictTranslation{by-(ODw)}{ved}
+\NewDictTranslation{call-(ODw)}{bud}
+\NewDictTranslation{Call-(ODw)}{Bud}
+\NewDictTranslation{-card-(ODw)}{-kortfarger}
+\NewDictTranslation{contract-(ODw)}{kontrakt}
+\NewDictTranslation{Contract-(ODw)}{Kontrakt}
+\NewDictTranslation{contr-(ODw)}{kontr}
+\NewDictTranslation{Contr-(ODw)}{Kontr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{giver}
+\NewDictTranslation{Dealer-(ODw)}{Giver}
+\NewDictTranslation{deal-(ODw)}{giv}
+\NewDictTranslation{Deal-(ODw)}{Giv}
+\NewDictTranslation{deal!-(ODw)}{giv}
+\NewDictTranslation{Deal!-(ODw)}{Giv}
+\NewDictTranslation{declarer-(ODw)}{spilleförer}
+\NewDictTranslation{Declarer-(ODw)}{Spilleförer}
+\NewDictTranslation{decl-(ODw)}{spför}
+\NewDictTranslation{Decl-(ODw)}{Spför}
+\NewDictTranslation{distribution points-(ODw)}{trumfpoeng}
+\NewDictTranslation{Distribution Points-(ODw)}{Trumfpoeng}
+\NewDictTranslation{doubled-(ODw)}{doblet}
+\NewDictTranslation{Doubled-(ODw)}{Doblet}
+\NewDictTranslation{double-(ODw)}{doblet}
+\NewDictTranslation{Double-(ODw)}{Doblet}
+\NewDictTranslation{dp-(ODw)}{tp}
+\NewDictTranslation{DP-(ODw)}{TP}
+\NewDictTranslation{east-(ODw)}{øst}
+\NewDictTranslation{East-(ODw)}{Øst}
+\NewDictTranslation{e-(ODw)}{ø}
+\NewDictTranslation{E-(ODw)}{Ø}
+\NewDictTranslation{fourth suit forcing-(ODw)}{fjerde farge forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Fjerde Farge Forcing}
+\NewDictTranslation{fsf-(ODw)}{4. ff}
+\NewDictTranslation{FSF-(ODw)}{4. FF}
+\NewDictTranslation{game forcing-(ODw)}{utgangskrav}
+\NewDictTranslation{Game Forcing-(ODw)}{UtgangsKrav}
+\NewDictTranslation{gf-(ODw)}{uk}
+\NewDictTranslation{GF-(ODw)}{UK}
+\NewDictTranslation{Hand-(ODw)}{Hånd}
+\NewDictTranslation{hand-(ODw)}{hånd}
+\NewDictTranslation{hcp-(ODw)}{hp}
+\NewDictTranslation{HCP-(ODw)}{HP}
+\NewDictTranslation{high card points-(ODw)}{høy kort poeng}
+\NewDictTranslation{High Card Points-(ODw)}{høy Kort Poeng}
+\NewDictTranslation{jack-(ODw)}{knekt}
+\NewDictTranslation{Jack-(ODw)}{Knekt}
+\NewDictTranslation{J-(ODw)}{\mbox{K\kern-0.08emn}}
+\NewDictTranslation{j-(ODw)}{\mbox{kn}}
+\NewDictTranslation{king-(ODw)}{konge}
+\NewDictTranslation{King-(ODw)}{Konge}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead!-(ODw)}{utsp.}
+\NewDictTranslation{Lead!-(ODw)}{Utsp.}
+\NewDictTranslation{lead-(ODw)}{utspill}
+\NewDictTranslation{Lead-(ODw)}{Utspill}
+\NewDictTranslation{length points-(ODw)}{lengde poeng}
+\NewDictTranslation{Length Points-(ODw)}{Lengde Poeng}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{new minor forcing-(ODw)}{nye minor krav}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Nye Minor Krav}
+\NewDictTranslation{nmf-(ODw)}{nmk}
+\NewDictTranslation{NMF-(ODw)}{NMK}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none!-(ODw)}{ing}
+\NewDictTranslation{None!-(ODw)}{Ing}
+\NewDictTranslation{none-(ODw)}{ingen}
+\NewDictTranslation{None-(ODw)}{Ingen}
+\NewDictTranslation{north-(ODw)}{nord}
+\NewDictTranslation{North-(ODw)}{Nord}
+\NewDictTranslation{no trump-(ODw)}{uten trumf}
+\NewDictTranslation{No Trump-(ODw)}{Uten Trumf}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{NT-(ODw)}{N\kern-0.07emT}
+\NewDictTranslation{nt-(ODw)}{nt}
+\NewDictTranslation{pass-(ODw)}{pass}
+\NewDictTranslation{Pass-(ODw)}{Pass}
+\NewDictTranslation{pass!-(ODw)}{pass}
+\NewDictTranslation{Pass!-(ODw)}{Pass}
+\NewDictTranslation{q-(ODw)}{d}
+\NewDictTranslation{Q-(ODw)}{D}
+\NewDictTranslation{queen-(ODw)}{dame}
+\NewDictTranslation{Queen-(ODw)}{Dame}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{redoblet}
+\NewDictTranslation{Redoubled-(ODw)}{Redoblet}
+\NewDictTranslation{redouble-(ODw)}{redoblet}
+\NewDictTranslation{Redouble-(ODw)}{Redoblet}
+\NewDictTranslation{semi forcing-(ODw)}{RundKrav}
+\NewDictTranslation{Semi Forcing-(ODw)}{RundKrav}
+\NewDictTranslation{sf-(ODw)}{rk}
+\NewDictTranslation{SF-(ODw)}{RK}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{syd}
+\NewDictTranslation{South-(ODw)}{Syd}
+\NewDictTranslation{suiter-(ODw)}{farger}
+\NewDictTranslation{Suiter-(ODw)}{Farger}
+\NewDictTranslation{suit-(ODw)}{farge}
+\NewDictTranslation{Suit-(ODw)}{Farge}
+\NewDictTranslation{third suit forcing-(ODw)}{tredje farge forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Tredje Farge Forcing}
+\NewDictTranslation{total points-(ODw)}{totalt poeng}
+\NewDictTranslation{Total Points-(ODw)}{Totalt Poeng}
+\NewDictTranslation{tp-(ODw)}{sp}
+\NewDictTranslation{TP-(ODw)}{SP}
+\NewDictTranslation{trial bid-(ODw)}{prøving bud}
+\NewDictTranslation{Trial bid-(ODw)}{Prøving bud}
+\NewDictTranslation{trick-(ODw)}{trekk}
+\NewDictTranslation{Trick-(ODw)}{Trekk}
+\NewDictTranslation{tsf-(ODw)}{3. ff}
+\NewDictTranslation{TSF-(ODw)}{3. FF}
+\NewDictTranslation{vulnerable-(ODw)}{sone}
+\NewDictTranslation{Vulnerable-(ODw)}{Sone}
+\NewDictTranslation{vul-(ODw)}{sone}
+\NewDictTranslation{Vul-(ODw)}{Sone}
+\NewDictTranslation{west-(ODw)}{vest}
+\NewDictTranslation{West-(ODw)}{Vest}
+\NewDictTranslation{w-(ODw)}{v}
+\NewDictTranslation{W-(ODw)}{V}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-swedish.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-swedish.trsl
new file mode 100644
index 00000000000..ec0d4d269d2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-swedish.trsl
@@ -0,0 +1,160 @@
+% this is file ODw-swedish.trsl from the OneDown bundle
+%
+% Entries with a "!" denote an abreviated form
+% Thanks to Per Karlberg
+% retrieve with e.g \GetTranslation{dealer-(ODw)} to get givare
+%
+\ProvideDictionaryFor{swedish}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1:a}
+\NewDictTranslation{2nd-(ODw)}{2:a}
+\NewDictTranslation{3rd-(ODw)}{3:e}
+\NewDictTranslation{4th-(ODw)}{4:e}
+\NewDictTranslation{ace-(ODw)}{äss}
+\NewDictTranslation{Ace-(ODw)}{Äss}
+\NewDictTranslation{all-(ODw)}{alla}
+\NewDictTranslation{All-(ODw)}{Alla}
+\NewDictTranslation{all!-(ODw)}{alla}
+\NewDictTranslation{All!-(ODw)}{Alla}
+\NewDictTranslation{all pass-(ODw)}{alla passet}
+\NewDictTranslation{All pass-(ODw)}{Alla passet}
+\NewDictTranslation{a-(ODw)}{ä}
+\NewDictTranslation{A-(ODw)}{Ä}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+%\NewDictTranslation{award-(ODw)}{poäng}
+%\NewDictTranslation{Award-(ODw)}{Poäng}
+\NewDictTranslation{award-(ODw)}{värdering}
+\NewDictTranslation{Award-(ODw)}{Värdering}
+\NewDictTranslation{bid-(ODw)}{bud}
+\NewDictTranslation{Bid-(ODw)}{Bud}
+\NewDictTranslation{board-(ODw)}{bricka}
+\NewDictTranslation{Board-(ODw)}{Bricka}
+\NewDictTranslation{brd-(ODw)}{brck}
+\NewDictTranslation{Brd-(ODw)}{Brck}
+\NewDictTranslation{by-(ODw)}{per}
+\NewDictTranslation{call-(ODw)}{bud}
+\NewDictTranslation{Call-(ODw)}{Bud}
+\NewDictTranslation{-card-(ODw)}{-kort}
+\NewDictTranslation{contract-(ODw)}{kontrakt}
+\NewDictTranslation{Contract-(ODw)}{Kontrakt}
+\NewDictTranslation{contr-(ODw)}{kontr}
+\NewDictTranslation{Contr-(ODw)}{Kontr}
+\NewDictTranslation{Dbl-(ODw)}{Dbl}
+\NewDictTranslation{dealer-(ODw)}{givare}
+\NewDictTranslation{Dealer-(ODw)}{Givare}
+\NewDictTranslation{deal-(ODw)}{giv}
+\NewDictTranslation{Deal-(ODw)}{Giv}
+\NewDictTranslation{deal!-(ODw)}{giv}
+\NewDictTranslation{Deal!-(ODw)}{Giv}
+\NewDictTranslation{declarer-(ODw)}{spelförare}
+\NewDictTranslation{Declarer-(ODw)}{Spelförare}
+\NewDictTranslation{decl-(ODw)}{spför}
+\NewDictTranslation{Decl-(ODw)}{Spför}
+\NewDictTranslation{distribution points-(ODw)}{fördelningpoints}
+\NewDictTranslation{Distribution Points-(ODw)}{Fördelningpoints}
+\NewDictTranslation{doubled-(ODw)}{dubbelt}
+\NewDictTranslation{Doubled-(ODw)}{Dubbelt}
+\NewDictTranslation{double-(ODw)}{dubbelt}
+\NewDictTranslation{Double-(ODw)}{Dubbelt}
+\NewDictTranslation{dp-(ODw)}{fp}
+\NewDictTranslation{DP-(ODw)}{FP}
+\NewDictTranslation{east-(ODw)}{öst}
+\NewDictTranslation{East-(ODw)}{Öst}
+\NewDictTranslation{e-(ODw)}{ö}
+\NewDictTranslation{E-(ODw)}{Ö}
+\NewDictTranslation{fourth suit forcing-(ODw)}{fjärde farve forcing}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Fjärde Farve Forcing}
+\NewDictTranslation{fsf-(ODw)}{4:e ff}
+\NewDictTranslation{FSF-(ODw)}{4:e FF}
+\NewDictTranslation{game forcing-(ODw)}{krav till udgang}
+\NewDictTranslation{Game Forcing-(ODw)}{Krav till Udgang}
+\NewDictTranslation{gf-(ODw)}{ku}
+\NewDictTranslation{GF-(ODw)}{KU}
+\NewDictTranslation{Hand-(ODw)}{Hand}
+\NewDictTranslation{hand-(ODw)}{hand}
+\NewDictTranslation{hcp-(ODw)}{hp}
+\NewDictTranslation{HCP-(ODw)}{HP}
+\NewDictTranslation{high card points-(ODw)}{Honnørpoints}
+\NewDictTranslation{High Card Points-(ODw)}{honnørpoints}
+\NewDictTranslation{jack-(ODw)}{knekt}
+\NewDictTranslation{Jack-(ODw)}{Knekt}
+\NewDictTranslation{j-(ODw)}{kn}
+\NewDictTranslation{J-(ODw)}{\mbox{K\kern-0.08emn}}
+\NewDictTranslation{king-(ODw)}{kung}
+\NewDictTranslation{King-(ODw)}{Kung}
+\NewDictTranslation{k-(ODw)}{k}
+\NewDictTranslation{K-(ODw)}{K}
+\NewDictTranslation{lead!-(ODw)}{utsp.}
+\NewDictTranslation{Lead!-(ODw)}{Utsp.}
+\NewDictTranslation{lead-(ODw)}{utspel}
+\NewDictTranslation{Lead-(ODw)}{Utspel}
+\NewDictTranslation{length points-(ODw)}{längd points}
+\NewDictTranslation{Length Points-(ODw)}{Längd Points}
+\NewDictTranslation{lp-(ODw)}{lp}
+\NewDictTranslation{LP-(ODw)}{LP}
+\NewDictTranslation{new minor forcing-(ODw)}{new minor forcing}
+\NewDictTranslation{New Minor Forcing-(ODw)}{New Minor Forcing}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{n-(ODw)}{n}
+\NewDictTranslation{N-(ODw)}{N}
+\NewDictTranslation{none!-(ODw)}{ing}
+\NewDictTranslation{None!-(ODw)}{Ing}
+\NewDictTranslation{none-(ODw)}{ingen}
+\NewDictTranslation{None-(ODw)}{Ingen}
+\NewDictTranslation{north-(ODw)}{norr}
+\NewDictTranslation{North-(ODw)}{Norr}
+\NewDictTranslation{no trump-(ODw)}{utan trumf}
+\NewDictTranslation{No Trump-(ODw)}{Utan Trumf}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{NT-(ODw)}{N\kern-0.07emT}
+\NewDictTranslation{nt-(ODw)}{nt}
+\NewDictTranslation{pass-(ODw)}{pass}
+\NewDictTranslation{Pass-(ODw)}{Pass}
+\NewDictTranslation{pass!-(ODw)}{pass}
+\NewDictTranslation{Pass!-(ODw)}{Pass}
+\NewDictTranslation{q-(ODw)}{d}
+\NewDictTranslation{Q-(ODw)}{D}
+\NewDictTranslation{queen-(ODw)}{dame}
+\NewDictTranslation{Queen-(ODw)}{Dame}
+\NewDictTranslation{ReDbl-(ODw)}{ReDbl}
+\NewDictTranslation{redoubled-(ODw)}{redubbelt}
+\NewDictTranslation{Redoubled-(ODw)}{Redubbelt}
+\NewDictTranslation{redouble-(ODw)}{redubbelt}
+\NewDictTranslation{Redouble-(ODw)}{Redubbelt}
+\NewDictTranslation{semi forcing-(ODw)}{semi forcing}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forcing}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{s}
+\NewDictTranslation{S-(ODw)}{S}
+\NewDictTranslation{south-(ODw)}{syd}
+\NewDictTranslation{South-(ODw)}{Syd}
+\NewDictTranslation{suiter-(ODw)}{farver}
+\NewDictTranslation{Suiter-(ODw)}{Farver}
+\NewDictTranslation{suit-(ODw)}{farve}
+\NewDictTranslation{Suit-(ODw)}{Farve}
+\NewDictTranslation{third suit forcing-(ODw)}{tredje farve forcing}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Tredje Farve Forcing}
+\NewDictTranslation{total points-(ODw)}{total points}
+\NewDictTranslation{Total Points-(ODw)}{Total Points}
+\NewDictTranslation{tp-(ODw)}{sp}
+\NewDictTranslation{TP-(ODw)}{SP}
+\NewDictTranslation{trial bid-(ODw)}{pröv bud}
+\NewDictTranslation{Trial bid-(ODw)}{Pröv bud}
+\NewDictTranslation{trick-(ODw)}{stik}
+\NewDictTranslation{Trick-(ODw)}{Stik}
+\NewDictTranslation{tsf-(ODw)}{3:e ff}
+\NewDictTranslation{TSF-(ODw)}{3:e FF}
+\NewDictTranslation{vulnerable-(ODw)}{zon}
+\NewDictTranslation{Vulnerable-(ODw)}{Zon}
+\NewDictTranslation{vul-(ODw)}{zon}
+\NewDictTranslation{Vul-(ODw)}{Zon}
+\NewDictTranslation{west-(ODw)}{väst}
+\NewDictTranslation{West-(ODw)}{Väst}
+\NewDictTranslation{w-(ODw)}{v}
+\NewDictTranslation{W-(ODw)}{V}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/ODw-turkish.trsl b/Master/texmf-dist/tex/latex/onedown/ODw-turkish.trsl
new file mode 100644
index 00000000000..06786e7af4c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/ODw-turkish.trsl
@@ -0,0 +1,158 @@
+% this is file ODw-turkish.trsl from the OneDown bundle
+% thanks to Yilmaz Aksoy
+% Entries with a "!" denote an abreviated form
+%
+% retrieve with e.g. \GetTranslation{dealer-(ODw)} to get kâğıdı
+%
+\ProvideDictionaryFor{turkish}{ODw}[V0.4]
+
+\NewDictTranslation{1st-(ODw)}{1.}
+\NewDictTranslation{2nd-(ODw)}{2.}
+\NewDictTranslation{3rd-(ODw)}{3.}
+\NewDictTranslation{4th-(ODw)}{4.}
+\NewDictTranslation{ace-(ODw)}{as}
+\NewDictTranslation{Ace-(ODw)}{As}
+\NewDictTranslation{all!-(ODw)}{herk}
+\NewDictTranslation{All!-(ODw)}{Herk}
+\NewDictTranslation{all-(ODw)}{herkes}
+\NewDictTranslation{All-(ODw)}{Herkes}
+\NewDictTranslation{all pass-(ODw)}{pas geçildi}
+\NewDictTranslation{All pass-(ODw)}{Pas geçildi}
+\NewDictTranslation{a-(ODw)}{a}
+\NewDictTranslation{A-(ODw)}{A}
+\NewDictTranslation{ap-(ODw)}{ap}
+\NewDictTranslation{AP-(ODw)}{AP}
+\NewDictTranslation{award-(ODw)}{puan}
+\NewDictTranslation{Award-(ODw)}{Puan}
+\NewDictTranslation{Bid-(ODw)}{Deklare}
+\NewDictTranslation{bid-(ODw)}{deklare}
+\NewDictTranslation{Board-(ODw)}{Oyun Tahtası}
+\NewDictTranslation{board-(ODw)}{oyun tahtası}
+\NewDictTranslation{Brd-(ODw)}{Oyun}
+\NewDictTranslation{brd-(ODw)}{oyun}
+\NewDictTranslation{by-(ODw)}{tarafından}
+\NewDictTranslation{Call-(ODw)}{İlan etme}
+\NewDictTranslation{call-(ODw)}{ilan etme}
+\NewDictTranslation{-card-(ODw)}{-card}
+\NewDictTranslation{contract-(ODw)}{kontrat}
+\NewDictTranslation{Contract-(ODw)}{Kontrat}
+\NewDictTranslation{contr-(ODw)}{kontr}
+\NewDictTranslation{Contr-(ODw)}{Kontr}
+\NewDictTranslation{Dbl-(ODw)}{Knt}
+\NewDictTranslation{dealer-(ODw)}{dağıtan}
+\NewDictTranslation{Dealer-(ODw)}{Dağıtan}
+\NewDictTranslation{Deal-(ODw)}{El}
+\NewDictTranslation{Deal!-(ODw)}{El}
+\NewDictTranslation{deal-(ODw)}{el}
+\NewDictTranslation{deal!-(ODw)}{el}
+\NewDictTranslation{declarer-(ODw)}{deklaran}
+\NewDictTranslation{Declarer-(ODw)}{Deklaran}
+\NewDictTranslation{decl-(ODw)}{dekl}
+\NewDictTranslation{Decl-(ODw)}{Dekl}
+\NewDictTranslation{distribution points-(ODw)}{dağılım puanı}
+\NewDictTranslation{Distribution Points-(ODw)}{Dağılım Puanı}
+\NewDictTranslation{doubled-(ODw)}{konturlu}
+\NewDictTranslation{Doubled-(ODw)}{Konturlu}
+\NewDictTranslation{double-(ODw)}{kontur}
+\NewDictTranslation{Double-(ODw)}{Kontur}
+\NewDictTranslation{dp-(ODw)}{dp}
+\NewDictTranslation{DP-(ODw)}{DP}
+\NewDictTranslation{east-(ODw)}{doğu}
+\NewDictTranslation{East-(ODw)}{Doğu}
+\NewDictTranslation{e-(ODw)}{d}
+\NewDictTranslation{E-(ODw)}{D}
+\NewDictTranslation{fourth suit forcing-(ODw)}{dördüncü renk forsingi}
+\NewDictTranslation{Fourth Suit Forcing-(ODw)}{Dördüncü Renk Forsingi}
+\NewDictTranslation{fsf-(ODw)}{4. rf}
+\NewDictTranslation{FSF-(ODw)}{4. RF}
+\NewDictTranslation{game forcing-(ODw)}{manş forsingi}
+\NewDictTranslation{Game Forcing-(ODw)}{Manş Forsingi}
+\NewDictTranslation{gf-(ODw)}{mf}
+\NewDictTranslation{GF-(ODw)}{MF}
+\NewDictTranslation{hand-(ODw)}{el}
+\NewDictTranslation{Hand-(ODw)}{El}
+\NewDictTranslation{hcp-(ODw)}{op}
+\NewDictTranslation{HCP-(ODw)}{OP}
+\NewDictTranslation{high card points-(ODw)}{onör puanı}
+\NewDictTranslation{High Card Points-(ODw)}{Onör Puanı}
+\NewDictTranslation{jack-(ODw)}{vale}
+\NewDictTranslation{Jack-(ODw)}{Vale}
+\NewDictTranslation{j-(ODw)}{v}
+\NewDictTranslation{J-(ODw)}{V}
+\NewDictTranslation{king-(ODw)}{papaz}
+\NewDictTranslation{King-(ODw)}{Papaz}
+\NewDictTranslation{k-(ODw)}{p}
+\NewDictTranslation{K-(ODw)}{P}
+\NewDictTranslation{Lead!-(ODw)}{Atak}
+\NewDictTranslation{lead-(ODw)}{atak}
+\NewDictTranslation{Lead-(ODw)}{Atak}
+\NewDictTranslation{lead!-(ODw)}{atak}
+\NewDictTranslation{length points-(ODw)}{uzunluk puanları}
+\NewDictTranslation{Length Points-(ODw)}{Uunluk Puanları}
+\NewDictTranslation{lp-(ODw)}{up}
+\NewDictTranslation{LP-(ODw)}{UP}
+\NewDictTranslation{new minor forcing-(ODw)}{yeni minör forsingi}
+\NewDictTranslation{New Minor Forcing-(ODw)}{Yeni Minör Forsingi}
+\NewDictTranslation{nmf-(ODw)}{nmf}
+\NewDictTranslation{NMF-(ODw)}{NMF}
+\NewDictTranslation{n-(ODw)}{k}
+\NewDictTranslation{N-(ODw)}{K}
+\NewDictTranslation{none-(ODw)}{hiç}
+\NewDictTranslation{None-(ODw)}{Hiç}
+\NewDictTranslation{none!-(ODw)}{hiç}
+\NewDictTranslation{None!-(ODw)}{Hiç}
+\NewDictTranslation{north-(ODw)}{kuzey}
+\NewDictTranslation{North-(ODw)}{Kuzey}
+\NewDictTranslation{no trump-(ODw)}{sanzatu}
+\NewDictTranslation{No Trump-(ODw)}{Sanzatu}
+\NewDictTranslation{Nr-(ODw)}{\textnumero}
+\NewDictTranslation{Nr.-(ODw)}{\textnumero.}
+\NewDictTranslation{nt-(ODw)}{sa}
+\NewDictTranslation{NT-(ODw)}{S\kern-0.01emA}
+\NewDictTranslation{pass-(ODw)}{pas}
+\NewDictTranslation{Pass-(ODw)}{Pas}
+\NewDictTranslation{pass!-(ODw)}{pas}
+\NewDictTranslation{Pass!-(ODw)}{Pas}
+\NewDictTranslation{q-(ODw)}{k}
+\NewDictTranslation{Q-(ODw)}{K}
+\NewDictTranslation{queen-(ODw)}{kız}
+\NewDictTranslation{Queen-(ODw)}{Kız}
+\NewDictTranslation{ReDbl-(ODw)}{SürKnt}
+\NewDictTranslation{Redoubled-(ODw)}{Sürkonturlu}
+\NewDictTranslation{redoubled-(ODw)}{sürkonturlu}
+\NewDictTranslation{redouble-(ODw)}{sürkontur}
+\NewDictTranslation{Redouble-(ODw)}{Sürkontur}
+\NewDictTranslation{semi forcing-(ODw)}{semi forsingi}
+\NewDictTranslation{Semi Forcing-(ODw)}{Semi Forsingi}
+\NewDictTranslation{sf-(ODw)}{sf}
+\NewDictTranslation{SF-(ODw)}{SF}
+\NewDictTranslation{s-(ODw)}{g}
+\NewDictTranslation{S-(ODw)}{G}
+\NewDictTranslation{south-(ODw)}{güney}
+\NewDictTranslation{South-(ODw)}{Güney}
+\NewDictTranslation{suiter-(ODw)}{renkli}
+\NewDictTranslation{Suiter-(ODw)}{Renkli}
+\NewDictTranslation{suit-(ODw)}{renk}
+\NewDictTranslation{Suit-(ODw)}{Renk}
+\NewDictTranslation{third suit forcing-(ODw)}{üçüncü renk forsingi}
+\NewDictTranslation{Third Suit Forcing-(ODw)}{Üçüncü Renk Forsingi}
+\NewDictTranslation{total points-(ODw)}{onör destek puanı}
+\NewDictTranslation{Total Points-(ODw)}{Onör Destek Puanı}
+\NewDictTranslation{tp-(ODw)}{odp}
+\NewDictTranslation{TP-(ODw)}{ODP}
+\NewDictTranslation{trial bid-(ODw)}{trial bid}
+\NewDictTranslation{Trial bid-(ODw)}{Trial bid}
+\NewDictTranslation{trick-(ODw)}{löve}
+\NewDictTranslation{Trick-(ODw)}{Löve}
+\NewDictTranslation{tsf-(ODw)}{3. sf}
+\NewDictTranslation{TSF-(ODw)}{3. SF}
+\NewDictTranslation{vulnerable-(ODw)}{zonda}
+\NewDictTranslation{Vulnerable-(ODw)}{Zonda}
+\NewDictTranslation{vul-(ODw)}{zon}
+\NewDictTranslation{Vul-(ODw)}{Zon}
+\NewDictTranslation{west-(ODw)}{batı}
+\NewDictTranslation{West-(ODw)}{Batı}
+\NewDictTranslation{w-(ODw)}{b}
+\NewDictTranslation{W-(ODw)}{B}
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/onedown/onedown.sty b/Master/texmf-dist/tex/latex/onedown/onedown.sty
new file mode 100644
index 00000000000..0134ff66660
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/onedown/onedown.sty
@@ -0,0 +1,2177 @@
+%%
+%% This is file `onedown.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% onedown.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2018 by Jacob Wiersma <jack46@online.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2014/05/01]
+\def\ODwstyleversion{1.0}\def\ODwstyledate{2018/05/23}
+\ProvidesPackage{onedown}
+ [\ODwstyledate\space v\ODwstyleversion\space
+ Typeset Bridge Diagrams - Jacob Wiersma (C) 2016-2018]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{%
+ xcolor,% colorizing symbols \Sp etc.
+ textcomp,% for the numbersign in environment play.
+ moresize,% add \HUGE and \ssmall to font-sizes
+ relsize,% relative font-sizes. (e.g. \smaller)
+ makecmds,% needed for provideenvironment
+ expl3,% needed for LaTeX3 packages (xparse)
+ xparse,% optional params and starred commands
+ xspace,% handling of spacing behind a command
+ calc,% makes calculations and lengths easier
+ ifthen,% easy booleans, tests and loops
+ adjustbox,% stacked boxes in L-/R-Lower captions
+ translations,% auto-translate terms (e.g. East->Ost)
+ array,% actions for tabular column cells
+ collcell,% macro calls for tabular column cells
+ pgfopts,% for keyval opts, loads also pgfkeys
+ environ,% for handling bidding environments
+ xstring,% for easy string processing.
+ tracklang,% for iterating over loaded languages
+ pict2e,% for drawing the compass
+}
+\xspaceaddexceptions{%
+ = \markit \, \suit \GetTranslation
+ 2 3 4 5 6 7 8 9 T J Q K A
+}
+\LoadDictionaryFor{fallback}{ODw}
+\pgfkeys{/ODw/.is family}
+\def\ODw@set#1{\pgfkeys{/ODw,#1}}
+\ODw@set{colors/.is choice,}
+\ODw@set{warn/.is choice,}
+\ODw@set{err/.is choice,}
+\AtBeginDocument{%
+ \renewcommand{\,}[1][1]{%
+ \ifmmode\mskip#1\thinmuskip%
+ \else\thinspace[#1]\fi%
+ }%
+ \renewcommand{\thinspace}[1][1]{%
+ \kern#1\dimexpr0.16667em\relax%
+ }%
+}% AtBeginDocument
+\gdef\ODw@gsetlength#1#2{%
+ \begingroup
+ \setlength\skip@{#2}% local assign to scratch reg.
+ \global#1=\skip@% global assignment to #1;
+ \endgroup% restore \skip@ by endgroup.
+}% ODw@gsetlength
+\gdef\ODw@append#1{%
+ \bgroup%
+ \edef\tmp{\the\ODw@Scratch #1}%
+ \global\ODw@Scratch=\expandafter{\tmp}%
+ \egroup%
+}% ODw@append
+\def\ODw@CompSize{1}% factor to enlarge the compass
+\def\ODw@CompLine{}% thickness of compass frame
+\def\ODw@Skipwidth{1em}%
+\newif\ifODw@description% must typeset an annotation
+\newif\ifODw@short% short form in bidding header
+\newif\ifODw@monochrome% no colors wanted
+\newif\ifOdW@CardSkip% skip between ranks needed
+\newif\ifODw@Bidders% suppress bidders in bidding header
+\newif\ifODw@BidLine% draw \hline below bidding header
+\newif\ifODw@LongCalls% switch between long/short calls
+\newif\ifODw@CompShow% show compass or not
+\newif\ifODw@CompTurn% turn E-W letters 90°
+\newboolean{ODw@EmptyHeader}% = 'header is empty'
+\newboolean{ODw@EmptyFooter}% = 'footer is empty'
+\newsavebox\ODw@Diagram@Box
+\newsavebox\ODw@Hand@Box
+\newsavebox\ODw@BidBox
+\newlength\ODw@Compasssize% the size of the compass.
+\newlength\ODw@Diagram@Width
+\newlength\ODw@Card@Skip
+\setlength\ODw@Card@Skip{.15em}% space between cards
+\newlength\ODw@Bid@Width
+\newlength\ODw@Skip@Width
+ \setlength\ODw@Skip@Width{\ODw@Skipwidth}
+\newlength\ODw@Tmp@Len% temp var for computations
+\newlength\ODw@Tmp@Width% temp var for computations
+\newcounter{ODw@Nr}
+\newcounter{ODw@Cnt}
+\newcounter{ODw@PlayerNr}
+\newcounter{ODw@NSCnt}
+\newcounter{ODw@EWCnt}
+\newtoks{\ODw@Scratch}
+\newcommand\bidderfont[1]{\gdef\ODw@BidderFont{#1}}
+\newcommand\compassfont[1]{\gdef\ODw@CompassFont{#1}}
+\newcommand\namefont[1]{\gdef\ODw@NameFont{#1}}
+\newcommand\legendfont[1]{\gdef\ODw@LegendFont{#1}}
+\newcommand\otherfont[1]{\gdef\ODw@OtherFont{#1}}
+\newcommand\gamefont[1]{%
+ \gdef\ODw@GameFont{#1}%
+ \gdef\ODw@GameSize{% recalculate dimens for the new font
+ \ODw@GameFont%
+ \setlength\ODw@Skip@Width{\ODw@Skipwidth}%
+ }%
+}% gamefont
+\fontencoding{T1}\fontfamily{stix}
+\fontseries{m}\fontshape{n}\selectfont
+\DeclareSymbolFont{symbols}{OMS}{txsy}{m}{n}
+\SetSymbolFont{symbols}{bold}{OMS}{txsy}{bx}{n}
+\DeclareFontSubstitution{OMS}{txsy}{m}{n}
+\DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n}
+\SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n}
+\DeclareFontSubstitution{U}{txsyc}{m}{n}
+\DeclareMathSymbol{\ODw@spadesuit}{\mathord}{symbols}{127}
+\DeclareMathSymbol{\ODw@varheart}{\mathord}{symbolsC}{114}
+\DeclareMathSymbol{\ODw@vardiamond}{\mathord}{symbolsC}{113}
+\DeclareMathSymbol{\ODw@clubsuit}{\mathord}{symbols}{124}
+\def\Cl{}\def\Di{}\def\He{}\def\Sp{}%
+\ODw@set{%
+ colors/0/.code={%
+ \ODw@monochrometrue%
+ \renewrobustcmd\Cl{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@clubsuit}}\xspace}%
+ \renewrobustcmd\Di{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@vardiamond}}\xspace}%
+ \renewrobustcmd\He{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@varheart}}\xspace}%
+ \renewrobustcmd\Sp{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@spadesuit}}\xspace}%
+ }%
+}
+\ODw@set{colors/mono/.code={\pgfkeys{/ODw/colors=0}}}
+\ODw@set{colors/black/.code={\pgfkeys{/ODw/colors=0}}}
+\ODw@set{%
+ colors/1/.code={%
+ \ODw@monochrometrue%
+ \renewrobustcmd\Cl{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@clubsuit}}\xspace}%
+ \renewrobustcmd\Di{\,[0.3]\ensuremath{\diamondsuit}\xspace}%
+ \renewrobustcmd\He{\,[0.3]\ensuremath{\heartsuit}\xspace}%
+ \renewrobustcmd\Sp{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@spadesuit}}\xspace}%
+ }%
+}
+\ODw@set{colors/b+w/.code={\pgfkeys{/ODw/colors=1}}}
+\ODw@set{%
+ colors/2/.code={%
+ \renewrobustcmd\Cl{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@clubsuit}}\xspace}%
+ \renewrobustcmd\Di{\textcolor{red}%
+ {\,[0.3]\ensuremath{\ODw@vardiamond}}\xspace}%
+ \renewrobustcmd\He{\textcolor{red}%
+ {\,[0.3]\ensuremath{\ODw@varheart}}\xspace}%
+ \renewrobustcmd\Sp{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@spadesuit}}\xspace}%
+ }%
+}
+\ODw@set{colors/b+r/.code={\pgfkeys{/ODw/colors=2}}}
+\ODw@set{%
+ colors/4A/.code={%
+ \renewrobustcmd\Cl{\textcolor{green}%
+ {\,[0.3]\ensuremath{\ODw@clubsuit}}\xspace}%
+ \renewrobustcmd\Di{\textcolor{orange}%
+ {\,[0.3]\ensuremath{\ODw@vardiamond}}\xspace}%
+ \renewrobustcmd\He{\textcolor{red}%
+ {\,[0.3]\ensuremath{\ODw@varheart}}\xspace}%
+ \renewrobustcmd\Sp{\textcolor{blue}%
+ {\,[0.3]\ensuremath{\ODw@spadesuit}}\xspace}%
+ }%
+}
+\ODw@set{colors/fourA/.code={\pgfkeys{/ODw/colors=4A}}}
+\ODw@set{colors/4a/.code={\pgfkeys{/ODw/colors=4A}}}
+\ODw@set{%
+ colors/4B/.code={%
+ \renewrobustcmd\Cl{\textcolor{black}%
+ {\,[0.3]\ensuremath{\ODw@clubsuit}}\xspace}%
+ \renewrobustcmd\Di{\textcolor{orange}%
+ {\,[0.3]\ensuremath{\ODw@vardiamond}}\xspace}%
+ \renewrobustcmd\He{\textcolor{red}%
+ {\,[0.3]\ensuremath{\ODw@varheart}}\xspace}%
+ \renewrobustcmd\Sp{\textcolor{green}%
+ {\,[0.3]\ensuremath{\ODw@spadesuit}}\xspace}%
+ }%
+}
+\ODw@set{colors/fourB/.code={\pgfkeys{/ODw/colors=4B}}}
+\ODw@set{colors/4b/.code={\pgfkeys{/ODw/colors=4B}}}
+\ODw@set{colors=2}
+\NewDocumentCommand\nt{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF#2
+ {\,[0.3]\GetTranslation{NT-(ODw)}}%
+ {\GetTranslation{No Trump-(ODw)}}%
+ }{%
+ \IfBooleanTF#2
+ {\,[0.3]\GetTranslation{nt-(ODw)}}%
+ {\GetTranslation{no trump-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% nt
+\def\NT{\nt*!}
+\gdef\ODw@SuitPlayed{N}
+\gdef\ODw@SuitLead{N}
+\gdef\ODw@TrumpSuit{N}
+\newcounter{ODw@Rank}
+\def\ODw@SetRank#1{%
+ \ifthenelse{\equal{\ODw@SuitPlayed}{\ODw@SuitLead}}%
+ % if a suit is followed, store the intrinsic rank
+ {\setcounter{ODw@Rank}{#1}}%
+ {% else, if a suit is not followed then ...
+ % (at NoTrump, the trumpsuit is coded 'N' and will
+ % never match a real suit (coded C, D, H and S))
+ % thus avoiding that trump cards are detected
+ \ifthenelse{\equal{\ODw@SuitPlayed}{\ODw@TrumpSuit}}%
+ % if it is a trump card, increase the rank
+ {\setcounter{ODw@Rank}{#1}%
+ \addtocounter{ODw@Rank}{15}}%
+ % if it is a discard, set the rank to 0 to make
+ % sure it will never win
+ {\setcounter{ODw@Rank}{0}}%
+ }% ifthen
+ % If the card was of another suit,
+ % then ODw@SuitPlayed was changed.
+ % If we encounter 'unsuited' cards,
+ % then we must reestablish the
+ % original ODw@SuitPlayed.
+ \global\edef\ODw@SuitPlayed{\ODw@SuitLead}% org. suit
+}% ODw@SetRank
+\ExplSyntaxOn
+ % NB: now all spaces are ignored, use '~' if needed.
+\NewDocumentCommand{\ODw@Xfer}{m}{
+ \bgroup
+ % we do not want spaces here
+ \def\xspace{}
+ \tl_map_function:nN {#1} \ODw@translate:n
+ \egroup
+}% ODw@Xfer
+\cs_new_protected:Nn \ODw@translate:n
+ {
+ \setcounter{ODw@Rank}{0}
+ \str_case:nnTF {#1}
+ { % Store the suit of the card played
+ % needed to determine the winner
+ % and for checking for multiple cards
+ {C}{\Cl\gdef\ODw@SuitPlayed{C}}
+ {D}{\Di\gdef\ODw@SuitPlayed{D}}
+ {H}{\He\gdef\ODw@SuitPlayed{H}}
+ {S}{\Sp\gdef\ODw@SuitPlayed{S}}
+ {N}{\NT\gdef\ODw@SuitPlayed{N}}
+ % Translate a hyphen into an en-dash
+ {-}{--}
+ %
+ % 1: translate the honour cards,
+ % 2: store the played cards for checking
+ % 3: and set their rank. This must be done last, because
+ % \ODw@SetRank resets \ODw@SuitPlayed to \ODw@SuitLead
+ % Honour Cards
+ % 1 2
+ {A}{\Ace*!\ODw@AppendCard{\ODw@SuitPlayed}{A}
+ \ODw@SetRank{14}}% 3
+ {K}{\King*!\ODw@AppendCard{\ODw@SuitPlayed}{K}
+ \ODw@SetRank{13}}
+ {Q}{\Queen*!\ODw@AppendCard{\ODw@SuitPlayed}{Q}
+ \ODw@SetRank{12}}
+ {J}{\Jack*!\ODw@AppendCard{\ODw@SuitPlayed}{J}
+ \ODw@SetRank{11}}
+ {T}{\kern-0.1em1\kern-0.1em0% massage 1 and 0 a bit
+ \ODw@AppendCard{\ODw@SuitPlayed}{T}\ODw@SetRank{10}}
+ % Numeral Cards
+ {9}{9\ODw@AppendCard{\ODw@SuitPlayed}{9}\ODw@SetRank{9}}
+ {8}{8\ODw@AppendCard{\ODw@SuitPlayed}{8}\ODw@SetRank{8}}
+ {7}{7\ODw@AppendCard{\ODw@SuitPlayed}{7}\ODw@SetRank{7}}
+ {6}{6\ODw@AppendCard{\ODw@SuitPlayed}{6}\ODw@SetRank{6}}
+ {5}{5\ODw@AppendCard{\ODw@SuitPlayed}{5}\ODw@SetRank{5}}
+ {4}{4\ODw@AppendCard{\ODw@SuitPlayed}{4}\ODw@SetRank{4}}
+ {3}{3\ODw@AppendCard{\ODw@SuitPlayed}{3}\ODw@SetRank{3}}
+ {2}{2\ODw@AppendCard{\ODw@SuitPlayed}{2}\ODw@SetRank{2}}
+ % A spot card has rank 0
+ {x}{x\ODw@SetRank{0}}
+ %
+ % Non cards (bidding only)
+ {1}{1}% this enables e.g. 1\He in biddings
+ {p}{\ifODw@LongCalls\Pass*\else\Pass!\fi}
+ {P}{\ifODw@LongCalls\Allpass*\else\Allpass*!\fi}
+ {X}{\ifODw@LongCalls\Double*\else\Double!\fi}
+ {R}{\ifODw@LongCalls\Redouble*\else\Redouble!\fi}
+ }% case
+ {% if matched (case T(rue))
+ \ifOdW@CardSkip\hspace{\ODw@Card@Skip}\fi
+ % suit of 1st card (ODw@SuitLead) is ODw@SuitPlayed
+ \if\theODw@PlayerNr1
+ \global\edef\ODw@SuitLead{\ODw@SuitPlayed}
+ \fi
+ }
+ {% if not matched (case F(alse))
+ \ifx#1\Cl\gdef\ODw@SuitPlayed{C}\fi
+ \ifx#1\Di\gdef\ODw@SuitPlayed{D}\fi
+ \ifx#1\He\gdef\ODw@SuitPlayed{H}\fi
+ \ifx#1\Sp\gdef\ODw@SuitPlayed{S}\fi
+ \expandafter{#1}% enables e.g. 1\He
+ % suit of 1st card (ODw@SuitLead) is ODw@SuitPlayed
+ \if\theODw@PlayerNr1
+ \global\edef\ODw@SuitLead{\ODw@SuitPlayed}
+ \fi
+ }
+}% ODw@translate
+\ExplSyntaxOff
+\newcommand{\ODw@appendcard}[2]{\xdef#1{#1#2}}
+
+\newcommand\ODw@AppendCard[2]{%
+ \IfEqCase{#1}{%
+ {C}{\ODw@appendcard{\ODw@Clubs}{#2}}%
+ {D}{\ODw@appendcard{\ODw@Diamonds}{#2}}%
+ {H}{\ODw@appendcard{\ODw@Hearts}{#2}}%
+ {S}{\ODw@appendcard{\ODw@Spades}{#2}}%
+ }%
+}% ODw@AppendCard
+\newcounter{ODw@Highest}% the highest rank until now
+\setcounter{ODw@Highest}{0}
+\newcounter{ODw@WinningNr}% player with the highest rank
+\setcounter{ODw@WinningNr}{0}
+
+\def\ODw@PTfer#1{%
+ \stepcounter{ODw@PlayerNr}%
+ \ODw@Xfer{#1}% ODw@Rank = the rank for this card
+ \ifthenelse{\value{ODw@Rank} > \value{ODw@Highest}}%
+ {% This rank is higher than previous highest one
+ \setcounter{ODw@WinningNr}{\theODw@PlayerNr}%
+ \setcounter{ODw@Highest}{\theODw@Rank}%
+ }%
+ {}%
+ \ifthenelse{\value{ODw@PlayerNr} = 4}%
+ {% last player: Process the winning trick:
+ \stepcounter{ODw@Nr}% Start new row with new player
+ \ODw@AccTricks% Accumulate tricks for N-S/E-W
+ }%
+ {}%
+}
+\def\ODw@FTfer#1{%
+ \ODw@Tricks%
+ \ODw@PTfer{#1}%
+}% ODw@FTfer
+\def\ODw@BTfer#1{%
+ \ODw@Xfer{#1}%
+}
+\NewDocumentCommand\North{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\ODw@N*}{\ODw@North*}%
+ }{%
+ \IfBooleanTF{#2}{\ODw@N}{\ODw@North}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% North
+\def\north{\North*}
+
+\NewDocumentCommand\East{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\ODw@E*}{\ODw@East*}%
+ }{%
+ \IfBooleanTF{#2}{\ODw@E}{\ODw@East}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% East
+\def\east{\East*}
+
+\NewDocumentCommand\South{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\ODw@S*}{\ODw@South*}%
+ }{%
+ \IfBooleanTF{#2}{\ODw@S}{\ODw@South}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% South
+\def\south{\South*}
+
+\NewDocumentCommand\West{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\ODw@W*}{\ODw@West*}%
+ }{%
+ \IfBooleanTF{#2}{\ODw@W}{\ODw@West}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% West
+\def\west{\West*}
+\NewDocumentCommand\NorthSouth{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\North*!--\South*!}{\North*--\South*}%
+ }{%
+ \IfBooleanTF{#2}{\North!--\South!}{\North--\South}%
+ }%
+ \egroup%
+ \xspace%
+}% NorthSouth
+\def\northsouth{\NorthSouth*}
+
+\NewDocumentCommand\EastWest{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}{\East*!--\West*!}{\East*--\West*}%
+ }{%
+ \IfBooleanTF{#2}{\East!--\West!}{\East--\West}%
+ }%
+ \egroup%
+ \xspace%
+}% EastWest
+\def\eastwest{\EastWest*}
+\def\ODw@N{%
+ \@ifstar{\GetTranslation{N-(ODw)}}%
+ {\GetTranslation{n-(ODw)}}%
+}
+\def\ODw@E{%
+ \@ifstar{\GetTranslation{E-(ODw)}}%
+ {\GetTranslation{e-(ODw)}}%
+}
+\def\ODw@S{%
+ \@ifstar{\GetTranslation{S-(ODw)}}%
+ {\GetTranslation{s-(ODw)}}%
+}
+\def\ODw@W{%
+ \@ifstar{\GetTranslation{W-(ODw)}}%
+ {\GetTranslation{w-(ODw)}}%
+}
+\def\ODw@NS{\ODw@N--\ODw@S}
+\def\ODw@EW{\ODw@E--\ODw@W}
+\def\ODw@North{%
+ \@ifstar{\GetTranslation{North-(ODw)}}%
+ {\GetTranslation{north-(ODw)}}%
+}
+\def\ODw@East{%
+ \@ifstar{\GetTranslation{East-(ODw)}}%
+ {\GetTranslation{east-(ODw)}}%
+}
+\def\ODw@South{%
+ \@ifstar{\GetTranslation{South-(ODw)}}%
+ {\GetTranslation{south-(ODw)}}%
+}
+\def\ODw@West{%
+ \@ifstar{\GetTranslation{West-(ODw)}}%
+ {\GetTranslation{west-(ODw)}}%
+}
+\NewDocumentCommand\Pass{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Pass!-(ODw)}}%
+ {\GetTranslation{Pass-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{pass!-(ODw)}}%
+ {\GetTranslation{pass-(ODw)}}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% Pass
+\def\pass{\Pass*}
+
+\NewDocumentCommand\Allpass{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{AP-(ODw)}}%
+ {\GetTranslation{All pass-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{ap-(ODw)}}%
+ {\GetTranslation{all pass-(ODw)}}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% Allpass
+\def\allpass{\Allpass*}
+
+\NewDocumentCommand\Double{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Dbl-(ODw)}}%
+ {\GetTranslation{Double-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {X}%
+ {\GetTranslation{double-(ODw)}}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% Double
+\def\double{\Double*}
+
+\NewDocumentCommand\Redouble{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{ReDbl-(ODw)}}%
+ {\GetTranslation{ReDouble-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\mbox{X\kern-0.1em X}}%
+ {\GetTranslation{redouble-(ODw)}}%
+ }% TF#1
+ \egroup%
+ \xspace%
+}% Redouble
+\def\redouble{\Redouble*}
+\newcommand\ODw@FirstBidCol[1]{%
+ \IfEqCase{#1}{%
+ {N}{%
+ \gdef\ODw@BidderI{\@ifstar{\ODw@North*}{\ODw@N*}}%
+ \gdef\ODw@BidderII{\@ifstar{\ODw@East*}{\ODw@E*}}%
+ \gdef\ODw@BidderIII{\@ifstar{\ODw@South*}{\ODw@S*}}%
+ \gdef\ODw@BidderIV{\@ifstar{\ODw@West*}{\ODw@W*}}%
+ \gdef\ODw@NameI{\ODw@North@Name}%
+ \gdef\ODw@NameII{\ODw@East@Name}%
+ \gdef\ODw@NameIII{\ODw@South@Name}%
+ \gdef\ODw@NameIV{\ODw@West@Name}%
+ }%
+ {E}{%
+ \gdef\ODw@BidderI{\@ifstar{\ODw@East*}{\ODw@E*}}%
+ \gdef\ODw@BidderII{\@ifstar{\ODw@South*}{\ODw@S*}}%
+ \gdef\ODw@BidderIII{\@ifstar{\ODw@West*}{\ODw@W*}}%
+ \gdef\ODw@BidderIV{\@ifstar{\ODw@North*}{\ODw@N*}}%
+ \gdef\ODw@NameI{\ODw@East@Name}%
+ \gdef\ODw@NameII{\ODw@South@Name}%
+ \gdef\ODw@NameIII{\ODw@West@Name}%
+ \gdef\ODw@NameIV{\ODw@North@Name}%
+ }%
+ {S}{%
+ \gdef\ODw@BidderI{\@ifstar{\ODw@South*}{\ODw@S*}}%
+ \gdef\ODw@BidderII{\@ifstar{\ODw@West*}{\ODw@W*}}%
+ \gdef\ODw@BidderIII{\@ifstar{\ODw@North*}{\ODw@N*}}%
+ \gdef\ODw@BidderIV{\@ifstar{\ODw@East*}{\ODw@E*}}%
+ \gdef\ODw@NameI{\ODw@South@Name}%
+ \gdef\ODw@NameII{\ODw@West@Name}%
+ \gdef\ODw@NameIII{\ODw@North@Name}%
+ \gdef\ODw@NameIV{\ODw@East@Name}%
+ }%
+ {W}{%
+ \gdef\ODw@BidderI{\@ifstar{\ODw@West*}{\ODw@W*}}%
+ \gdef\ODw@BidderII{\@ifstar{\ODw@North*}{\ODw@N*}}%
+ \gdef\ODw@BidderIII{\@ifstar{\ODw@East*}{\ODw@E*}}%
+ \gdef\ODw@BidderIV{\@ifstar{\ODw@South*}{\ODw@S*}}%
+ \gdef\ODw@NameI{\ODw@West@Name}%
+ \gdef\ODw@NameII{\ODw@North@Name}%
+ \gdef\ODw@NameIII{\ODw@East@Name}%
+ \gdef\ODw@NameIV{\ODw@South@Name}%
+ }%
+ }% IfEqCase
+}% ODw@FirstBidCol
+\newcommand\namesNS[2]{%
+ \gdef\ODw@North@Name{#1}%
+ \gdef\ODw@South@Name{#2}%
+ \gdef\ODw@All@Names{#1#2\ODw@East@Name\ODw@West@Name}%
+}% namesNS
+\newcommand\namesEW[2]{%
+ \gdef\ODw@East@Name{#1}%
+ \gdef\ODw@West@Name{#2}%
+ \gdef\ODw@All@Names{#1#2\ODw@North@Name\ODw@South@Name}%
+}% namesEW
+\newcommand\northhand[5][0pt]{%
+ \ODw@ChkNrOfCards{#2#3#4#5}{\north}%
+ \gdef\ODw@NSpades{#2}% Save norths cards
+ \gdef\ODw@NHearts{#3}% of all suits
+ \gdef\ODw@NDiamonds{#4}% for later
+ \gdef\ODw@NClubs{#5}% checking
+ \gdef\ODw@Nhand{%
+ \makebox[\ODw@Compasssize + 2ex][l]{%
+ \ODw@hand{t}{#2}{#3}{#4}{#5}%
+ }%
+ \vspace{#1}%
+ }%
+}% northhand
+
+\newcommand\easthand[5][0pt]{%
+ \ODw@ChkNrOfCards{#2#3#4#5}{\east}%
+ \gdef\ODw@ESpades{#2}% Save easts cards
+ \gdef\ODw@EHearts{#3}% of all suits
+ \gdef\ODw@EDiamonds{#4}% for later
+ \gdef\ODw@EClubs{#5}% checking
+ \gdef\ODw@Ehand{%
+ \hspace{#1}%
+ \ODw@hand{c}{#2}{#3}{#4}{#5}%
+ }%
+}% easthand
+
+\newcommand\southhand[5][0pt]{%
+ \ODw@ChkNrOfCards{#2#3#4#5}{\south}%
+ \gdef\ODw@SSpades{#2}% Save souths cards
+ \gdef\ODw@SHearts{#3}% of all suits
+ \gdef\ODw@SDiamonds{#4}% for later
+ \gdef\ODw@SClubs{#5}% checking
+ \gdef\ODw@Shand{%
+ \parbox[b]{\ODw@Compasssize + 2ex}{%
+ \vspace*{#1}\par%
+ \makebox[0pt][l]{%
+ \ODw@hand{b}{#2}{#3}{#4}{#5}%
+ }%
+ }%
+ }%
+}% southhand
+
+\newcommand\westhand[5][0pt]{%
+ \ODw@ChkNrOfCards{#2#3#4#5}{\west}%
+ \gdef\ODw@WSpades{#2}% Save wests cards
+ \gdef\ODw@WHearts{#3}% of all suits
+ \gdef\ODw@WDiamonds{#4}% for later
+ \gdef\ODw@WClubs{#5}% checking
+ \gdef\ODw@Whand{%
+ \ODw@hand{c}{#2}{#3}{#4}{#5}%
+ \hspace*{#1}%
+ }%
+}% westhand
+\NewDocumentCommand\hand{s t! t- O{c}mmmm}{%
+ \ODw@ChkNrOfCards{#5#6#7#8}{Hand}%
+ \ODw@ChkSameCards{#5}{\Sp}%
+ \ODw@ChkSameCards{#6}{\He}%
+ \ODw@ChkSameCards{#7}{\Di}%
+ \ODw@ChkSameCards{#8}{\Cl}%
+ \global\sbox{\ODw@Hand@Box}{%
+ \bgroup%
+ \ODw@GameSize%
+ \IfBooleanTF{#2}%
+ {\ODw@vhand[#4]{#5}{#6}{#7}{#8}}%
+ {\ODw@hhand{#5}{#6}{#7}{#8}}%
+ \egroup%
+ }% sbox
+ \IfBooleanTF{#3}{}{%
+ \IfBooleanTF{#1}%
+ {{\centering \usebox{\ODw@Hand@Box}\par}}%
+ {\usebox{\ODw@Hand@Box}}%
+ }%
+}% hand
+\newcommand\ODw@hhand[4]{%
+ \bgroup%
+ \def\xspace{}% undo xspace locally
+ % it screws the distance between suit and cards
+ \setlength\tabcolsep{1\ODw@Card@Skip}%
+ \begin{tabular}{llll}
+ % we can't use \suit here: it would cause double checks!
+ \Sp\hspace{0.3em}\ODw@Cards{#1} &%
+ \He\hspace{0.3em}\ODw@Cards{#2} &%
+ \Di\hspace{0.3em}\ODw@Cards{#3} &%
+ \Cl\hspace{0.3em}\ODw@Cards{#4} \\
+ \end{tabular}%
+ \egroup%
+}% ODw@hhand
+\newcommand\ODw@vhand[5][c]{%
+ \ODw@hand{#1}{#2}{#3}{#4}{#5}%
+}% ODw@vhand
+\newcommand\ODw@hand[5]{%
+ \ifthenelse{\equal{#2#3#4#5}{}}{}{%
+ \setlength\tabcolsep{\ODw@Card@Skip}%
+ \begin{tabular}[#1]{ll}%
+ % we can't use \suit here: it would cause double checks!
+ \Sp & \ODw@Cards{#2}\\[-0.5ex]
+ \He & \ODw@Cards{#3}\\[-0.5ex]
+ \Di & \ODw@Cards{#4}\\[-0.5ex]
+ \Cl & \ODw@Cards{#5}\\
+ \end{tabular}%
+ }% ifthenelse
+}% ODw@hand
+\NewDocumentCommand\onesuitAll{s t! mmmm}{%
+ \ODw@ChkSameCards{#3#4#5#6}{}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \ODw@GameSize%
+ \setlength\tabcolsep{0em}%
+\begin{tabular}{@{}r@{ }c@{ }l@{}}%
+ & \ODw@Cards{#3} \IfBooleanTF#2{\\[-0.2em]}{\\}%
+ \ODw@Cards{#6} & \IfBooleanTF#2{\ODw@Compass}{\ODw@Box}%
+ & \ODw@Cards{#5} \IfBooleanTF#2{\\[-0.2em]}{\\}%
+ & \ODw@Cards{#4}\\
+ \end{tabular}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% onesuitAll
+\NewDocumentCommand\onesuitNS{s t! mm}{%
+ \ODw@ChkSameCards{#3#4}{}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \ODw@GameSize%
+ \begin{tabular}{@{}c@{}}%
+ \ODw@Cards{#3}\IfBooleanTF#2{\\[-0.2em]}{\\}%
+ \IfBooleanTF#2{\ODw@Compass\\[-0.2em]}{\ODw@Box\\}%
+ \ODw@Cards{#4}%
+ \end{tabular}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% onesuitNS
+\NewDocumentCommand\onesuitEW{s t! mm}{%
+ \ODw@ChkSameCards{#3#4}{}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \ODw@GameSize%
+ \begin{tabular}{@{}r@{ }c@{ }l@{}}%
+ \ODw@Cards{#4} &%
+ \IfBooleanTF#2{\ODw@Compass}{\ODw@Box} &%
+ \ODw@Cards{#3} \\%
+ \end{tabular}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% onesuitEW
+\NewDocumentCommand\onesuitNE{s t! mm}{%
+ \ODw@ChkSameCards{#3#4}{}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \ODw@GameSize%
+ \begin{tabular}[b]{c@{ }l@{}}%
+ \ODw@Cards{#3} \\%
+ \IfBooleanTF#2{\ODw@Compass}{\ODw@Box} &%
+ \ODw@Cards{#4} \\%
+ \end{tabular}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% onesuitEW
+\NewDocumentCommand\onesuitNW{s t! mm}{%
+ \ODw@ChkSameCards{#3#4}{}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \ODw@GameSize%
+ \begin{tabular}[b]{r@{ }c}%
+ & \ODw@Cards{#3} \\%
+ \ODw@Cards{#4} & \IfBooleanTF#2{\ODw@Compass}{\ODw@Box} \\%
+ \end{tabular}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% onesuitEW
+\newcommand\suit[2][]{%
+ \ODw@ChkNrOfCards{#2}{suit}%
+ \ODw@ChkSameCards{#2}{#1}%
+ \bgroup% keep font change local
+ #1\ODw@Cards{#2}%
+ \egroup%
+ \xspace%
+}% suit
+\newcommand{\ODw@Cards}[1]{%
+ \OdW@CardSkiptrue%
+ \ODw@Xfer{#1}%
+}% ODw@Cards
+\NewDocumentCommand\showAll{s t+ O{c}}{%
+ \gdef\ODw@Spades{% store all Spades together
+ \ODw@NSpades\ODw@ESpades\ODw@SSpades\ODw@WSpades%
+ }%
+ \gdef\ODw@Hearts{% store all Hearts together
+ \ODw@NHearts\ODw@EHearts\ODw@SHearts\ODw@WHearts%
+ }%
+ \gdef\ODw@Diamonds{% store all Diamonds together
+ \ODw@NDiamonds\ODw@EDiamonds\ODw@SDiamonds\ODw@WDiamonds%
+ }%
+ \gdef\ODw@Clubs{% store all Clubs together
+ \ODw@NClubs\ODw@EClubs\ODw@SClubs\ODw@WClubs%
+ }%
+ % check for multiple and nr. of cards
+ \ODw@ChkNrOfCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkNrOfCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkNrOfCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkNrOfCards{\ODw@Clubs}{\Cl}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \setlength\tabcolsep{0em}%
+ \ODw@GameSize%
+ \ODw@TestIfEmpty{\ODw@HeaderText}{ODw@EmptyHeader}%
+ \ODw@TestIfEmpty{\ODw@FooterText}{ODw@EmptyFooter}%
+ % sbox1 necessary to calc. |Compasssize| for |Nhand|
+ \sbox1{\ODw@Compass}%
+ \sbox0{%
+\begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ \ODw@LeftUpperText & \ODw@Nhand & \ODw@RightUpperText\\
+ \ODw@Whand & \usebox{1} & \ODw@Ehand\\
+ \ODw@LeftLowerText & \ODw@Shand & \ODw@RightLowerText\\
+\end{tabular}%
+ }% sbox
+ \ODw@gsetlength{\ODw@Diagram@Width}{\wd0}%
+ \begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ \ODw@ProcessHeader{3}% span 3 columns
+ \ODw@LeftUpperText & \ODw@Nhand & \ODw@RightUpperText\\
+ \ODw@Whand & \usebox{1} & \ODw@Ehand\\
+ \ODw@LeftLowerText & \ODw@Shand & \ODw@RightLowerText\\
+ \ODw@ProcessFooter{3}% span 3 columns
+ \end{tabular}%
+ \IfBooleanTF#2{%
+ % needed for \ODw@CondNewLine
+ \setlength{\ODw@Bid@Width}{\wd\ODw@BidBox}%
+ \ODw@CondNewLine%
+ \usebox{\ODw@BidBox}%
+ }{}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% showAll
+\NewDocumentCommand\showNS{s t+ O{c}}{%
+ \gdef\ODw@Spades{\ODw@NSpades\ODw@SSpades}%
+ \gdef\ODw@Hearts{\ODw@NHearts\ODw@SHearts}%
+ \gdef\ODw@Diamonds{\ODw@NDiamonds\ODw@SDiamonds}%
+ \gdef\ODw@Clubs{\ODw@NClubs\ODw@SClubs}%
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \setlength\tabcolsep{0em}%
+ \ODw@GameSize%
+ \ODw@TestIfEmpty{\ODw@HeaderText}{ODw@EmptyHeader}%
+ \ODw@TestIfEmpty{\ODw@FooterText}{ODw@EmptyFooter}%
+ % sbox1 necessary to calc. |Compasssize| for |Nhand|
+ \sbox1{\ODw@Compass}%
+ \sbox0{%
+ \begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ & \ODw@Nhand & \\
+ & \usebox{1} & \\
+ & \ODw@Shand & \\
+ \end{tabular}%
+ }% sbox0
+ \ODw@gsetlength\ODw@Diagram@Width{\wd0}%
+ \begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ \ODw@ProcessHeader{3}% span 3 columns
+ & \ODw@Nhand & \\
+ & \usebox{1} & \\
+ & \ODw@Shand & \\
+ \ODw@ProcessFooter{3}% span 3 columns
+ \end{tabular}%
+ \IfBooleanTF#2{%
+ % necessary for \ODw@CondNewLine
+ \setlength{\ODw@Bid@Width}{\wd\ODw@BidBox}%
+ \ODw@CondNewLine%
+ \usebox{\ODw@BidBox}%
+ }{}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% showNS
+\NewDocumentCommand\showEW{s t+ O{c}}{%
+ \gdef\ODw@Spades{\ODw@ESpades\ODw@WSpades}%
+ \gdef\ODw@Hearts{\ODw@EHearts\ODw@WHearts}%
+ \gdef\ODw@Diamonds{\ODw@EDiamonds\ODw@WDiamonds}%
+ \gdef\ODw@Clubs{\ODw@EClubs\ODw@WClubs}%
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \setlength\tabcolsep{0em}%
+ \ODw@GameSize%
+ \ODw@TestIfEmpty{\ODw@HeaderText}{ODw@EmptyHeader}%
+ \ODw@TestIfEmpty{\ODw@FooterText}{ODw@EmptyFooter}%
+ \sbox0{%
+ \begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ \ODw@Whand & \ODw@Compass & \ODw@Ehand \\
+ \end{tabular}%
+ }% sbox
+ \ODw@gsetlength{\ODw@Diagram@Width}{\wd0}%
+ \begin{tabular}[#3]{@{}r@{}c@{}l@{}}%
+ \ODw@ProcessHeader{3}% span 3 columns
+ & & \\
+ \ODw@Whand & \ODw@Compass & \ODw@Ehand \\
+ \ODw@ProcessFooter{3}% span 3 columns
+ \end{tabular}%
+ \IfBooleanTF#2{%
+ % necessary for \ODw@CondNewLine
+ \setlength{\ODw@Bid@Width}{\wd\ODw@BidBox}%
+ \ODw@CondNewLine%
+ \usebox{\ODw@BidBox}%
+ }{}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% showEW
+\NewDocumentCommand\showNE{s t+ O{c}}{%
+ \gdef\ODw@Spades{\ODw@NSpades\ODw@ESpades}%
+ \gdef\ODw@Hearts{\ODw@NHearts\ODw@EHearts}%
+ \gdef\ODw@Diamonds{\ODw@NDiamonds\ODw@EDiamonds}%
+ \gdef\ODw@Clubs{\ODw@NClubs\ODw@EClubs}%
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \setlength\tabcolsep{0em}%
+ \ODw@GameSize%
+ \ODw@TestIfEmpty{\ODw@HeaderText}{ODw@EmptyHeader}%
+ \ODw@TestIfEmpty{\ODw@FooterText}{ODw@EmptyFooter}%
+ % sbox1 necessary to calc. |Compasssize| for |Nhand|
+ \sbox1{\ODw@Compass}%
+ \sbox0{%
+ \begin{tabular}[#3]{@{}c@{}l@{}}%
+ \ODw@Nhand & \ODw@RightUpperText\\
+ \usebox{1} & \ODw@Ehand\\
+ \end{tabular}%
+ }% sbox
+ \ODw@gsetlength{\ODw@Diagram@Width}{\wd0}%
+ \begin{tabular}[#3]{@{}c@{}l@{}}%
+ \ODw@ProcessHeader{2}% span 2 columns
+ \ODw@Nhand & \ODw@RightUpperText\\
+ \usebox{1} & \ODw@Ehand\\
+ \ODw@ProcessFooter{2}% span 2 columns
+ \end{tabular}%
+ \IfBooleanTF#2{%
+ % necessary for \ODw@CondNewLine
+ \setlength{\ODw@Bid@Width}{\wd\ODw@BidBox}%
+ \ODw@CondNewLine%
+ \usebox{\ODw@BidBox}%
+ }{}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% showNE
+\NewDocumentCommand\showNW{s t+ O{c}}{%
+ \gdef\ODw@Spades{\ODw@NSpades\ODw@WSpades}%
+ \gdef\ODw@Hearts{\ODw@NHearts\ODw@WHearts}%
+ \gdef\ODw@Diamonds{\ODw@NDiamonds\ODw@WDiamonds}%
+ \gdef\ODw@Clubs{\ODw@NClubs\ODw@WClubs}%
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \bgroup%
+ \setlength\tabcolsep{0em}%
+ \ODw@GameSize%
+ \ODw@TestIfEmpty{\ODw@HeaderText}{ODw@EmptyHeader}%
+ \ODw@TestIfEmpty{\ODw@FooterText}{ODw@EmptyFooter}%
+ % sbox1 necessary to calc. |Compasssize| for |Nhand|
+ \sbox1{\ODw@Compass}%
+ \sbox0{%
+ \begin{tabular}[#3]{@{}c@{}l@{}}%
+ \ODw@LeftUpperText & \ODw@Nhand\\
+ \ODw@Whand & \usebox{1}\\
+ \end{tabular}%
+ }% sbox
+ \ODw@gsetlength{\ODw@Diagram@Width}{\wd0}%
+ \begin{tabular}[#3]{@{}r@{}c@{}}%
+ \ODw@ProcessHeader{2}% span 2 columns
+ \ODw@LeftUpperText & \ODw@Nhand\\
+ \ODw@Whand & \usebox{1}\\
+ \ODw@ProcessFooter{2}% span 2 columns
+ \end{tabular}%
+ \IfBooleanTF#2{%
+ % necessary for \ODw@CondNewLine
+ \setlength{\ODw@Bid@Width}{\wd\ODw@BidBox}%
+ \ODw@CondNewLine%
+ \usebox{\ODw@BidBox}%
+ }{}%
+ \egroup%
+ \IfBooleanTF#1{\end{center}}{}%
+}% showNW
+\newcommand{\ODw@Compass}{%
+ \begingroup
+ \def\ODw@V{-1}\def\ODw@D{-1}%
+ \def\@ODw{\none}\ifx\ODw@Vulner\@ODw\def\ODw@V{0}\fi%
+ \def\@ODw{\none*}\ifx\ODw@Vulner\@ODw\def\ODw@V{0}\fi%
+ \def\@ODw{\none!}\ifx\ODw@Vulner\@ODw\def\ODw@V{0}\fi%
+ \def\@ODw{\none*!}\ifx\ODw@Vulner\@ODw\def\ODw@V{0}\fi%
+ \def\@ODw{\all}\ifx\ODw@Vulner\@ODw\def\ODw@V{1}\fi%
+ \def\@ODw{\all*}\ifx\ODw@Vulner\@ODw\def\ODw@V{1}\fi%
+ \def\@ODw{\all!}\ifx\ODw@Vulner\@ODw\def\ODw@V{1}\fi%
+ \def\@ODw{\all*!}\ifx\ODw@Vulner\@ODw\def\ODw@V{1}\fi%
+ \def\@ODw{\NorthSouth}\ifx\ODw@Vulner\@ODw\def\ODw@V{2}\fi%
+ \def\@ODw{\NorthSouth*}\ifx\ODw@Vulner\@ODw\def\ODw@V{2}\fi%
+ \def\@ODw{\NorthSouth!}\ifx\ODw@Vulner\@ODw\def\ODw@V{2}\fi%
+ \def\@ODw{\NorthSouth*!}\ifx\ODw@Vulner\@ODw\def\ODw@V{2}\fi%
+ \def\@ODw{\EastWest}\ifx\ODw@Vulner\@ODw\def\ODw@V{3}\fi%
+ \def\@ODw{\EastWest*}\ifx\ODw@Vulner\@ODw\def\ODw@V{3}\fi%
+ \def\@ODw{\EastWest!}\ifx\ODw@Vulner\@ODw\def\ODw@V{3}\fi%
+ \def\@ODw{\EastWest*!}\ifx\ODw@Vulner\@ODw\def\ODw@V{3}\fi%
+ \def\@ODw{\North}\ifx\ODw@Dealer\@ODw\def\ODw@D{0}\fi%
+ \def\@ODw{\North*}\ifx\ODw@Dealer\@ODw\def\ODw@D{0}\fi%
+ \def\@ODw{\North!}\ifx\ODw@Dealer\@ODw\def\ODw@D{0}\fi%
+ \def\@ODw{\North*!}\ifx\ODw@Dealer\@ODw\def\ODw@D{0}\fi%
+ \def\@ODw{\East}\ifx\ODw@Dealer\@ODw\def\ODw@D{1}\fi%
+ \def\@ODw{\East*}\ifx\ODw@Dealer\@ODw\def\ODw@D{1}\fi%
+ \def\@ODw{\East!}\ifx\ODw@Dealer\@ODw\def\ODw@D{1}\fi%
+ \def\@ODw{\East*!}\ifx\ODw@Dealer\@ODw\def\ODw@D{1}\fi%
+ \def\@ODw{\South}\ifx\ODw@Dealer\@ODw\def\ODw@D{2}\fi%
+ \def\@ODw{\South*}\ifx\ODw@Dealer\@ODw\def\ODw@D{2}\fi%
+ \def\@ODw{\South!}\ifx\ODw@Dealer\@ODw\def\ODw@D{2}\fi%
+ \def\@ODw{\South*!}\ifx\ODw@Dealer\@ODw\def\ODw@D{2}\fi%
+ \def\@ODw{\West}\ifx\ODw@Dealer\@ODw\def\ODw@D{3}\fi%
+ \def\@ODw{\West*}\ifx\ODw@Dealer\@ODw\def\ODw@D{3}\fi%
+ \def\@ODw{\West!}\ifx\ODw@Dealer\@ODw\def\ODw@D{3}\fi%
+ \def\@ODw{\West*!}\ifx\ODw@Dealer\@ODw\def\ODw@D{3}\fi%
+ \ODw@CompassDefault% use the compass font
+ \def\PicSize{500}%
+ \def\MidSize{250}%
+ % Multiply unitlength=0.005em with CompSize (default= 1)
+ \setlength\unitlength{0.005em * \real{\ODw@CompSize}}%
+ \ODw@gsetlength\ODw@Compasssize{\unitlength * \PicSize + 2ex}%
+ \def\Hoffset{30}% distance between W (E) and frame
+ \def\Voffset{30}% distance between N (S) and frame
+ \setlength\ODw@Tmp@Width{0.1em * \real{\ODw@CompLine}}%
+ \linethickness{\ODw@Tmp@Width}%
+ % leave 1ex space on all sides
+ \parbox[c][\ODw@Compasssize]{\ODw@Compasssize}{%
+ \centering%
+ \begin{picture}(\PicSize,\PicSize)%
+ \ifODw@CompShow%
+ % the frame
+ \moveto(0,0)
+ \if\ODw@CompLine0% must do it this way, because
+ \else% linethickness zero does not suppress the line
+ \lineto(0,\PicSize)\lineto(\PicSize,\PicSize)
+ \lineto(\PicSize,0)\closepath\strokepath
+ \fi%
+ % the cardinal points
+ \put(\MidSize,\the\numexpr \PicSize - \Voffset)%
+ {\makebox[0pt]{\raisebox{-\height}{\ODw@Print{0}}}}% N
+ \put(\MidSize,\Voffset){\makebox[0pt]{\ODw@Print{2}}}% S
+ \put(\Hoffset,\MidSize){%
+ \makebox[0pt][l]{%
+ \ifODw@CompTurn%
+ \raisebox{-0.5\height}{%
+ \rotatebox[origin=t]{90}{\ODw@Print{3}}%
+ }%
+ \else%
+ \raisebox{-0.5\height}{\ODw@Print{3}}%
+ \fi%
+ }% makebox
+ }% W
+ \put(\the\numexpr \PicSize - \Hoffset,\MidSize)%
+ {\makebox[0pt][r]{%
+ \raisebox{-0.5\height}{%
+ \ifODw@CompTurn%
+ \rotatebox[origin=c]{90}{\ODw@Print{1}}%
+ \else%
+ \ODw@Print{1}%
+ \fi%
+ }%
+ }% makebox
+ }% E
+ % the center
+ \put(\MidSize,\MidSize){\makebox(0,0){\ODw@mid}}
+ \fi%
+ \end{picture}%
+ }% parbox
+ \endgroup
+}% ODw@Compass
+\newcommand\ODw@Print[1]{%
+\bgroup
+ \smaller\smaller%
+ \ifcase#1% #1=0: print N
+ \ifboolexpr{ test {\ifnumcomp{\ODw@D}{=}{0}}}%
+ {% dealer = N
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{2}} }%
+ {\ODw@PrintColor{\underline{\ODw@N*}}}% Vul
+ {\underline{\ODw@N*}}% not Vul
+ }{% dealer <> N
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{2}} }%
+ {\ODw@PrintColor{\ODw@N*}}% Vul
+ {\ODw@N*}% not Vul
+ }%
+ \or% #1=1: print E
+ \ifboolexpr{ test {\ifnumcomp{\ODw@D}{=}{1}}}%
+ {% dealer E
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{3}} }%
+ {\ODw@PrintColor{\underline{\ODw@E*}}}% Vul
+ {\underline{\ODw@E*}}% not Vul
+ }{% dealer <> E
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{3}} }%
+ {\ODw@PrintColor{\ODw@E*}}% Vul
+ {\ODw@E*}% not Vul
+ }%
+ \or% #1=2: print S
+ \ifboolexpr{ test {\ifnumcomp{\ODw@D}{=}{2}}}%
+ {% dealer S
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{2}} }%
+ {\ODw@PrintColor{%
+ \ensuremath{\overline{\mbox{\ODw@S*}}}}%
+ }% Vul
+ {\ensuremath{\overline{\mbox{\ODw@S*}}}}% not Vul
+ }{% dealer <> S
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{2}} }%
+ {\ODw@PrintColor{\ODw@S*}}% Vul
+ {\ODw@S*}% not Vul
+ }%
+ \or% #1=3: print W
+ \ifboolexpr{ test {\ifnumcomp{\ODw@D}{=}{3}}}%
+ {% dealer W
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{3}} }%
+ {\ODw@PrintColor{\underline{\ODw@W*}}}% Vul
+ {\underline{\ODw@W*}}% not Vul
+ }{% dealer <> W
+ \ifboolexpr{ test {\ifnumcomp{\ODw@V}{=}{1}} or%
+ test {\ifnumcomp{\ODw@V}{=}{3}} }%
+ {\ODw@PrintColor{\ODw@W*}}% Vul
+ {\ODw@W*}% not Vul
+ }%
+ \fi% (ifcase#1)
+\egroup%
+}% ODw@Print
+\newcommand\ODw@PrintColor[1]{%
+ \ifODw@monochrome\textit{#1}\else\textcolor{red}{#1}\fi%
+}% ODw@PrintColor
+\def\ODw@CompMid{}
+\def\ODw@mid{{\smaller\smaller\smaller\ODw@CompMid}}
+\newcommand{\ODw@Box}{%
+ \bgroup
+ \setlength{\fboxsep}{0pt}%
+ \setlength{\fboxrule}{0.1em}%
+ \fbox{\rule{0mm}{0.7em}\rule{0.7em}{0mm}}%
+ \egroup
+}% ODw@Box
+\def\ODw@BoardText{}
+\NewDocumentCommand\boardtext{s}{%
+ \IfBooleanTF#1{\GetTranslation{Board-(ODw)}:\,\ODw@BoardText}%
+ {\ODw@BoardText}%
+}% boardtext
+\newcommand{\boardnr}[1]{%
+ \IfInteger{#1}{%
+ \gdef\ODw@BoardText{%
+ \bgroup%
+ \ODw@OtherFont%
+ #1%
+ \egroup%
+ }%
+ \setcounter{ODw@Cnt}{#1}%
+ \whiledo{\theODw@Cnt > 16}{%
+ \addtocounter{ODw@Cnt}{-16}%
+ }% whiledo, now 1 <= Cnt <= 16
+ \IfEqCase{\theODw@Cnt}{% set dealer/vulner
+ {0}{\gdef\ODw@BoardText{}\vulner[-1]\dealer[-1]}
+ {1}{\vulner[\none]\dealer[\North*!]}
+ {2}{\vulner[\NorthSouth*!]\dealer[\East*!]}
+ {3}{\vulner[\EastWest*!]\dealer[\South*!]}
+ {4}{\vulner[\all]\dealer[\West*!]}
+ {5}{\vulner[\NorthSouth*!]\dealer[\North*!]}
+ {6}{\vulner[\EastWest*!]\dealer[\East*!]}
+ {7}{\vulner[\all]\dealer[\South*!]}
+ {8}{\vulner[\none]\dealer[\West*!]}
+ {9}{\vulner[\EastWest*!]\dealer[\North*!]}
+ {10}{\vulner[\all]\dealer[\East*!]}
+ {11}{\vulner[\none]\dealer[\South*!]}
+ {12}{\vulner[\NorthSouth*!]\dealer[\West*!]}
+ {13}{\vulner[\all]\dealer[\North*!]}
+ {14}{\vulner[\none]\dealer[\East*!]}
+ {15}{\vulner[\NorthSouth*!]\dealer[\South*!]}
+ {16}{\vulner[\EastWest*!]\dealer[\West*!]}
+ }% IfEqCase
+ }{\gdef\ODw@BoardText{#1}}% otherwise take #1
+}% boardnr
+\newcommand\headlinetext[1]{\gdef\ODw@HeaderText{#1}}
+\headlinetext{}
+\newcommand\footlinetext[1]{\gdef\ODw@FooterText{#1}}
+\footlinetext{}
+\def\ODw@LeftUpperText{}
+\newcommand\leftupper[4][0pt]{%
+ \gdef\ODw@LeftUpperText{%
+ \hspace{-#1}%
+ \begin{tabular}[t]{l}#2\\#3\\#4\\\end{tabular}
+ }%
+}% leftupper
+\def\ODw@LeftLowerText{}
+\newcommand\leftlower[4][0pt]{%
+ \gdef\ODw@LeftLowerText{%
+ \hspace{-#1}%
+ \begin{tabular}[b]{l}#2\\#3\\#4\\\end{tabular}
+ }%
+}% leftlower
+\def\ODw@RightUpperText{}
+\newcommand\rightupper[4][0pt]{%
+ \gdef\ODw@RightUpperText{%
+ \hspace{#1}%
+ \begin{tabular}[t]{l}#2\\#3\\#4\\\end{tabular}
+ }%
+}% rightupper
+\def\ODw@RightLowerText{}
+\newcommand\rightlower[4][0pt]{%
+ \gdef\ODw@RightLowerText{%
+ \hspace{#1}%
+ \begin{tabular}[b]{l}#2\\#3\\#4\\\end{tabular}
+ }%
+}% rightlower
+\newcommand{\ODw@ProcessHeader}[1]{%
+ \ifODw@EmptyHeader% Must be this way (StackExchange)
+ \else% |\ifthenelse| bites |\multicolumn|!
+ \multicolumn{#1}{%
+ p{\dimexpr\ODw@Diagram@Width-%
+ 2\tabcolsep-2\arrayrulewidth}%
+ }{{\ODw@LegendFont\ODw@HeaderText}}\\
+ \fi%
+}% ODw@ProcessHeader
+\newcommand{\ODw@TestIfEmpty}[2]{%
+ \ifthenelse{\equal{#1}{}}{%
+ \setboolean{#2}{true}}{%
+ \setboolean{#2}{false}%
+ }%
+}% ODw@TestIfEmpty
+\newcommand{\ODw@ProcessFooter}[1]{%
+ \ifODw@EmptyFooter% Must be this way (StackExchange)
+ \else% |\ifthenelse| bites |\multicolumn|!
+ \multicolumn{#1}{%
+ p{\dimexpr\ODw@Diagram@Width%
+ -2\tabcolsep-2\arrayrulewidth}%
+ }{{\ODw@LegendFont\ODw@FooterText}}\\
+ \fi%
+}% ODw@ProcessFooter
+\newcommand\handskip[1]{%
+ \def\ODw@Skipwidth{1em + #1}% recalculate the new Skipwidth
+ \setlength\ODw@Skip@Width{\ODw@Skipwidth}%
+}% handskip
+\def\ODw@DealerText{%
+ \bgroup%
+ \ODw@OtherFont\GetTranslation{Dealer-(ODw)}%
+ \egroup%
+}% ODw@DealerText
+\NewDocumentCommand\ODw@VulnerText{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF#1{%
+ \IfBooleanTF#2{\GetTranslation{Vul-(ODw)}}%
+ {\GetTranslation{Vulnerable-(ODw)}}%
+ }{%
+ \IfBooleanTF#2{\GetTranslation{vul-(ODw)}}%
+ {\GetTranslation{vulnerable-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% ODw@VulnerText
+\def\ODw@AwardText{\textsf{\GetTranslation{Award-(ODw)}}}
+\newcommand\dealer[1][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\ODw@Dealer}%
+ {\gdef\ODw@Dealer{#1}}%
+}% dealer
+\def\ODw@Dealer{\North*}
+\newcommand\vulner[1][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\ODw@Vulner}%
+ {\gdef\ODw@Vulner{#1}}%
+}% vulner
+\def\ODw@Vulner{\NorthSouth}
+\newcommand\dealertext[1][\ODw@Dealer]{\ODw@DealerText:\,#1}
+\newcommand\vulnertext[1][\ODw@Vulner]{%
+ \ifODw@LongCalls%
+ \ODw@VulnerText*%
+ \else%
+ \ODw@VulnerText*!%
+ \fi%
+ :\,#1%
+}
+\newcommand{\alert}{{}\ensuremath{^\textbf{*}}}
+\newcommand{\announce}{{}\ensuremath{^\textbf{\smaller A}}}
+\newcommand\markit{%
+ \stepcounter{ODw@Nr}%
+ \footnotemark[\theODw@Nr]%
+}% markit
+\newcommand\explainit[1]{%
+ \stepcounter{ODw@Nr}%
+ \ensuremath{{}^\textrm{\smaller\alph{ODw@Nr}}}\,#1%
+}% explainit
+\newcolumntype{B}{% for Biddings
+ >{\collectcell\ODw@BTfer}c<{\endcollectcell}}
+\newcolumntype{F}{% for First column in |play| diagrams
+ >{\collectcell\ODw@FTfer}c<{\endcollectcell}}
+\newcolumntype{P}{% for |Play| diagrams (2nd--4th column)
+ >{\collectcell\ODw@PTfer}c<{\endcollectcell}}
+\NewEnviron{ODw@Bidding}[2][t]{%
+ \def\xspace{}%
+ \setlength\tabcolsep{0.2em}%
+ \sbox{0}{%
+ \begin{tabular}[#1]{BBBB}% 1st column
+ \ifODw@Bidders%
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderI%
+ \else\ODw@BidderI*%
+ \fi%
+ } &% 2nd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderII%
+ \else\ODw@BidderII*%
+ \fi%
+ } &% 3rd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIII%
+ \else\ODw@BidderIII*%
+ \fi%
+ } &% 4th column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIV%
+ \else\ODw@BidderIV*%
+ \fi%
+ } \\% end of 1st row
+ \if\ODw@All@Names\empty%
+ \else% 2nd row
+ \cci{ \ODw@NameFont\ODw@NameI} &% please
+ \cci{ \ODw@NameFont\ODw@NameII} &% mind
+ \cci{ \ODw@NameFont\ODw@NameIII} &% the
+ \cci{ \ODw@NameFont\ODw@NameIV} \\% spaces!
+ \fi%
+ \ifODw@BidLine\hline\fi%
+ \fi%
+ \BODY%
+%%%%%%
+ \end{tabular}%
+ }% sbox0
+ \setcounter{ODw@Nr}{0}%
+ \setlength{\ODw@Bid@Width}{\wd0}%
+ \global\sbox\ODw@BidBox{%
+ \begin{tabular}[#1]{BBBB}% 1st column
+ \ifODw@Bidders%
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderI%
+ \else\ODw@BidderI*%
+ \fi%
+ } &% 2nd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderII%
+ \else\ODw@BidderII*%
+ \fi%
+ } &% 3rd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIII%
+ \else\ODw@BidderIII*%
+ \fi%
+ } &% 4th column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIV%
+ \else\ODw@BidderIV*%
+ \fi%
+ } \\% end of 1st row
+ \if\ODw@All@Names\empty%
+ \else% 2nd row
+ \cci{ \ODw@NameFont\ODw@NameI} &% please
+ \cci{ \ODw@NameFont\ODw@NameII} &% mind
+ \cci{ \ODw@NameFont\ODw@NameIII} &% the
+ \cci{ \ODw@NameFont\ODw@NameIV} \\% spaces!
+ \fi%
+ \ifODw@BidLine\hline\fi%
+ \fi
+ \BODY%
+%%%%% Until here the same code as in the sbox!
+ \ifODw@description%
+ % Add the description, if not empty
+ \hline%
+ \multicolumn{4}{% span explanations over 4 cols...
+ p{\dimexpr\ODw@Bid@Width-2\tabcolsep}%
+ }{% ...with the right width
+ \setcounter{ODw@Nr}{0}%
+ \raggedright%
+ \smaller\smaller#2%
+ }\\%
+ \fi%
+ \end{tabular}%
+ }% sbox ODw@BidBox
+}% ODw@Bidding
+\NewEnviron{ODw@Biddingpair}[2][t]{%
+ \def\xspace{}%
+ \setlength\tabcolsep{0.2em}%
+ \sbox{0}{%
+ \begin{tabular}[#1]{BB}% 1st column
+ \ifODw@Bidders%
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderI%
+ \else\ODw@BidderI*%
+ \fi%
+ } &% 2nd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIII%
+ \else\ODw@BidderIII*%
+ \fi%
+ } \\% end of 1st row
+ \if\ODw@All@Names\empty%
+ \else% 2nd row
+ \cci{ \ODw@NameFont\ODw@NameI} &% please mind
+ \cci{ \ODw@NameFont\ODw@NameIII} \\% the spaces!
+ \fi%
+ \ifODw@BidLine\hline\fi%
+ \fi%
+ \BODY%
+%%%%%%%
+ \end{tabular}%
+ }% sbox0
+ \setcounter{ODw@Nr}{0}%
+ \setlength{\ODw@Bid@Width}{\wd0}%
+ \global\sbox\ODw@BidBox{%
+ \begin{tabular}[#1]{BB}% 1st column
+ \ifODw@Bidders%
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderI%
+ \else\ODw@BidderI*%
+ \fi%
+ } &% 2nd column
+ \cci{ % there MUST be a ' ' (space)
+ \ODw@BidderFont%
+ \ifODw@short\ODw@BidderIII%
+ \else\ODw@BidderIII*%
+ \fi%
+ } \\% end of 1st row
+ \if\ODw@All@Names\empty%
+ \else% 2nd row
+ \cci{ \ODw@NameFont\ODw@NameI} &% please mind
+ \cci{ \ODw@NameFont\ODw@NameIII} \\% the spaces!
+ \fi%
+ \ifODw@BidLine\hline\fi%
+ \fi%
+ \BODY%
+ %%%%%% Until here the same code as in the sbox!
+ \ifODw@description%
+ % Add the description, if not empty
+ \hline%
+ \multicolumn{2}{%
+ p{\dimexpr\ODw@Bid@Width-2\tabcolsep}%
+ }{%
+ \setcounter{ODw@Nr}{0}%
+ \raggedright%
+ \smaller\smaller#2%
+ }\\%
+ \fi%
+ \end{tabular}%
+ }% sbox ODw@BidBox
+}% ODw@Biddingpair
+\NewDocumentEnvironment{bidding}{s t! t- O{c}d()}{%
+ \ODw@GameSize%
+ \renewcommand{\thefootnote}{\alph{footnote}}%
+ \setcounter{ODw@Nr}{0}%
+ \IfBooleanTF#1{\center}{}% "*" detected
+ \IfBooleanTF{#2}{\ODw@shorttrue}{}% "!" detected
+ \IfValueTF{#5}{\ODw@descriptiontrue}{\ODw@descriptionfalse}%
+ \ODw@Bidding[#4]{#5}%
+}{%
+ \endODw@Bidding%
+ \IfBooleanTF{#3}%
+ {\rule{0pt}{0pt}}%
+ % +---without this, pdflatex aborts compilation!
+ {\usebox{\ODw@BidBox}}% "-" detected
+ \IfBooleanTF#1{\endcenter}{}%
+}% bidding
+\NewDocumentEnvironment{biddingpair}{s t! t- O{c}d()}{%
+ \def\xspace{}%
+ \ODw@GameSize%
+ \renewcommand{\thefootnote}{\alph{footnote}}%
+ \setcounter{ODw@Nr}{0}%
+ \IfBooleanTF#1{\center}{}% "*" detected
+ \IfBooleanTF{#2}{\ODw@shorttrue}{}% "+" detected
+ \IfValueTF{#5}{\ODw@descriptiontrue}{\ODw@descriptionfalse}%
+ \ODw@Biddingpair[#4]{#5}%
+}{%
+ \endODw@Biddingpair%
+ \IfBooleanTF{#3}%
+ {\rule{0pt}{0pt}}%
+ % +---without this, pdflatex aborts compilation!
+ {\usebox{\ODw@BidBox}}% "-" detected
+ \IfBooleanTF#1{\endcenter}{}%
+}% biddingpair
+\def\ODw@AccTricks{%
+ \ODw@LastTrick{\ODw@Last}{\theODw@WinningNr}%
+ \ODw@append{\theODw@NSCnt,\theODw@EWCnt,}% store counters
+ \setcounter{ODw@Highest}{0}% reset for next trick
+}% ODw@AccTricks
+\def\ODw@Tricks{%
+ \setcounter{ODw@PlayerNr}{0}%
+ \gdef\ODw@Last{\ODw@NextLead}%
+ \expandafter\GetTranslation%
+ \expandafter{\ODw@NextLead-(ODw)}:\,%
+}% ODw@Tricks
+\newcommand\ODw@LastTrick[2]{%
+ \IfEqCase{#1}{%
+ {W}{\setcounter{ODw@Cnt}{0}}%
+ {N}{\setcounter{ODw@Cnt}{1}}%
+ {E}{\setcounter{ODw@Cnt}{2}}%
+ {S}{\setcounter{ODw@Cnt}{3}}%
+ }% IfEqCase
+ \addtocounter{ODw@Cnt}{#2}%
+ \IfEqCase{\theODw@Cnt}{%
+ {1}{\gdef\ODw@NextLead{W}\stepcounter{ODw@EWCnt}}
+ {2}{\gdef\ODw@NextLead{N}\stepcounter{ODw@NSCnt}}
+ {3}{\gdef\ODw@NextLead{E}\stepcounter{ODw@EWCnt}}
+ {4}{\gdef\ODw@NextLead{S}\stepcounter{ODw@NSCnt}}
+ {5}{\gdef\ODw@NextLead{W}\stepcounter{ODw@EWCnt}}
+ {6}{\gdef\ODw@NextLead{N}\stepcounter{ODw@NSCnt}}
+ {7}{\gdef\ODw@NextLead{E}\stepcounter{ODw@EWCnt}}
+ }% IfEqCase
+}% ODw@LastTrick
+\NewDocumentEnvironment{play}{s mO{N}}{%
+ \def\ODw@TrumpSuit{#3}
+ \gdef\ODw@NextLead{#2}%
+ \setcounter{ODw@Nr}{0}%
+ \setcounter{ODw@NSCnt}{0}
+ \setcounter{ODw@EWCnt}{0}%
+ \ODw@GameSize%
+ \ODw@Scratch{}% make empty
+ \let\ODw@Clubs\empty%
+ \let\ODw@Diamonds\empty%
+ \let\ODw@Hearts\empty%
+ \let\ODw@Spades\empty%
+\def\ODw@EXtra{0.9em}% white space in title
+\provideenvironment{TableII}{%
+ \begin{tabular}[b]{FPPP}%
+ \multicolumn{1}{c}{\GetTranslation{Lead!-(ODw)}} &%
+ \cci{\GetTranslation{2nd-(ODw)}} &%
+ \cci{\GetTranslation{3rd-(ODw)}} &%
+ \cci{\GetTranslation{4th-(ODw)}} \\[0.3em]\hline%
+ \multicolumn{4}{c}{}\\[-\ODw@EXtra]%
+}{%
+ \end{tabular}%
+}% TableII
+ \begin{lrbox}{0}% save TableII for later
+ \begin{TableII}
+}{%
+ \end{TableII}
+ \end{lrbox}%
+ % Check consistency of the played cards
+ \ODw@ChkSameCards{\ODw@Spades}{\Sp}%
+ \ODw@ChkSameCards{\ODw@Hearts}{\He}%
+ \ODw@ChkSameCards{\ODw@Diamonds}{\Di}%
+ \ODw@ChkSameCards{\ODw@Clubs}{\Cl}%
+ \setcounter{ODw@Cnt}{0}%
+ \IfBooleanTF#1{\begin{center}}{}%
+ \begin{tabular}[b]{r}% TableI
+ \cci{\GetTranslation{Nr-(ODw)}}\\[0.3em]
+ \hline\\[-\ODw@EXtra]%
+ \setcounter{ODw@Cnt}{1}%
+ \whiledo{\theODw@Cnt<\theODw@Nr}{%
+ \theODw@Cnt\\
+ \stepcounter{ODw@Cnt}%
+ }%
+ \theODw@Cnt\\% MUST be outside the loop
+ % (the extra line problem]!
+ \end{tabular}%
+ \usebox{0}%
+ \setcounter{ODw@Nr}{0}%
+ \renewcommand*{\do}[1]{%
+ \ifnumequal{\value{ODw@Nr}}{2}{\\\setcounter{ODw@Nr}{0}}{}%
+ \stepcounter{ODw@Nr}%
+ ##1
+ \ifnumequal{\value{ODw@Nr}}{2}{}{&}%
+ }%
+ \begin{tabular}[b]{|cc}% TableIII
+ \multicolumn{1}{|c}{%
+ \cci{\scriptsize\shortstack[c]{\North*!\\\South*!}}} &%
+ \multicolumn{1}{c}{%
+ \cci{\scriptsize\shortstack[c]{\East*!\\\West*!}}%
+ }\\\hline\\[-\ODw@EXtra]%
+ \expandafter\docsvlist\expandafter{\the\ODw@Scratch}%
+ \end{tabular}%
+ \IfBooleanTF#1{\end{center}}{}%
+}% play
+\NewDocumentCommand\ODw@CondNewLine{O{0em}}{%
+ {\ODw@GameFont% needed to relate skips to the font-size
+ \setlength{\ODw@Tmp@Len}{\ODw@Bid@Width}%
+ \addtolength{\ODw@Tmp@Len}{\ODw@Diagram@Width}%
+ \addtolength{\ODw@Tmp@Len}{#1}%
+ \addtolength{\ODw@Tmp@Len}{\ODw@Skip@Width}%
+ \ifthenelse{\lengthtest{\ODw@Tmp@Len > \textwidth}}{%
+ \\[1em]}{%
+ \hspace{\ODw@Skip@Width}%
+ }%
+ }%
+}% ODw@CondNewLine
+\NewDocumentCommand\expertquiz{st! O{}m}{%
+
+ \noindent%
+ \IfBooleanTF#1{\begin{center}}% "*" detected
+ {\par\vspace{0.5\baselineskip}}%
+ \bgroup% keep font changes local (e.g. "\smaller").
+ \ODw@LegendFont%
+ \ifx#3\empty\else#3\par\fi%
+ \egroup%
+ \IfBooleanTF{#2}{~\hspace*{2em}}{}% "!" detected
+ \usebox{\ODw@Hand@Box}% display the saved hand
+ \IfBooleanTF{#2}{}{\quad}% no "!" detected
+ \setlength\ODw@Tmp@Width{\wd\ODw@BidBox + 1em}%
+ \IfBooleanTF{#2}%
+ {\\}%
+ {\addtolength\ODw@Tmp@Width{\wd\ODw@Hand@Box}}%
+ \usebox{\ODw@BidBox}% display the saved bidding
+ \par\vspace{0.3em}%\noindent%
+ {% keep legendfont and "smaller" local
+ \ODw@LegendFont%
+ \smaller%
+ \IfBooleanTF#1{\bgroup\centering}{}%
+ \parbox[t]{\ODw@Tmp@Width}{%
+ \textbf{\ODw@AwardText: }%
+ \raggedright#4%
+ }% parbox
+ \IfBooleanTF#1{\egroup}{}%
+ }%
+ \IfBooleanTF#1{\end{center}}{}%
+}% expertquiz
+\pgfkeys{%
+ /ODw/.is family, /ODw,
+ bidder/.store in = \ODw@BidderDefault,
+ compass/.store in = \ODw@CompassDefault,
+ game/.store in = \ODw@GameDefault,
+ legend/.store in = \ODw@LegendDefault,
+ name/.store in = \ODw@NameDefault,
+ other/.store in = \ODw@OtherDefault,
+ compline/.store in = \ODw@CompLine,
+ compmid/.store in = \ODw@CompMid,
+ compsize/.store in = \ODw@CompSize,
+}
+ \ODw@set{compshow/.is choice}
+ \ODw@set{compshow/off/.code={\global\ODw@CompShowfalse}}
+ \ODw@set{compshow/on/.code={\global\ODw@CompShowtrue}}
+ \ODw@set{compturn/.is choice}
+ \ODw@set{compturn/off/.code={\global\ODw@CompTurnfalse}}
+ \ODw@set{compturn/on/.code={\global\ODw@CompTurntrue}}
+ \ODw@set{bidders/.is choice}
+ \ODw@set{bidders/off/.code={\global\ODw@Biddersfalse}}
+ \ODw@set{bidders/on/.code={\global\ODw@Bidderstrue}}
+ \ODw@set{bidfirst/.is choice}
+ \ODw@set{bidfirst/N/.code=\ODw@FirstBidCol{N}}
+ \ODw@set{bidfirst/E/.code=\ODw@FirstBidCol{E}}
+ \ODw@set{bidfirst/S/.code=\ODw@FirstBidCol{S}}
+ \ODw@set{bidfirst/W/.code=\ODw@FirstBidCol{W}}
+ \ODw@set{bidline/.is choice}
+ \ODw@set{bidline/off/.code={\global\ODw@BidLinefalse}}
+ \ODw@set{bidline/on/.code={\global\ODw@BidLinetrue}}
+ \ODw@set{bidlong/.is choice}
+ \ODw@set{bidlong/off/.code={\global\ODw@LongCallsfalse}}
+ \ODw@set{bidlong/on/.code={\global\ODw@LongCallstrue}}
+ \ODw@set{compshow/1/.code={\pgfkeys{/ODw/compshow=on}}}
+ \ODw@set{compshow/true/.code={\pgfkeys{/ODw/compshow=on}}}
+ \ODw@set{compturn/1/.code={\pgfkeys{/ODw/compturn=on}}}
+ \ODw@set{compturn/true/.code={\pgfkeys{/ODw/compturn=on}}}
+ \ODw@set{bidline/1/.code={\pgfkeys{/ODw/bidline=on}}}
+ \ODw@set{bidders/true/.code={\pgfkeys{/ODw/bidders=on}}}
+ \ODw@set{bidders/1/.code={\pgfkeys{/ODw/bidders=on}}}
+ \ODw@set{bidline/true/.code={\pgfkeys{/ODw/bidline=on}}}
+ \ODw@set{bidlong/1/.code={\pgfkeys{/ODw/bidlong=on}}}
+ \ODw@set{bidlong/true/.code={\pgfkeys{/ODw/bidlong=on}}}
+ \ODw@set{compshow/0/.code={\pgfkeys{/ODw/compshow=off}}}
+ \ODw@set{compshow/false/.code={\pgfkeys{/ODw/compshow=off}}}
+ \ODw@set{compturn/0/.code={\pgfkeys{/ODw/compturn=off}}}
+ \ODw@set{compturn/false/.code={\pgfkeys{/ODw/compturn=off}}}
+ \ODw@set{bidders/0/.code={\pgfkeys{/ODw/bidders=off}}}
+ \ODw@set{bidders/false/.code={\pgfkeys{/ODw/bidders=off}}}
+ \ODw@set{bidline/0/.code={\pgfkeys{/ODw/bidline=off}}}
+ \ODw@set{bidline/false/.code={\pgfkeys{/ODw/bidline=off}}}
+ \ODw@set{bidlong/0/.code={\pgfkeys{/ODw/bidlong=off}}}
+ \ODw@set{bidlong/false/.code={\pgfkeys{/ODw/bidlong=off}}}
+\newcommand\resetfonts{%
+ \bidderfont{\ODw@BidderDefault}%
+ \compassfont{\ODw@CompassDefault}%
+ \gamefont{\ODw@GameDefault}%
+ \legendfont{\ODw@LegendDefault}%
+ \namefont{\ODw@NameDefault}%
+ \otherfont{\ODw@OtherDefault}%
+}% resetfonts
+\NewDocumentCommand\setdefaults{s m}{%
+ \pgfkeys{/ODw,#2}%
+ \IfBooleanTF{#1}{\resetfonts}{}%
+}% setdefaults
+\newcommand\newgame{%
+ \boardnr{0}%
+ \headlinetext{}%
+ \footlinetext{}%
+ \gdef\ODw@LeftUpperText{}%
+ \gdef\ODw@LeftLowerText{}%
+ \gdef\ODw@RightUpperText{}%
+ \gdef\ODw@RightLowerText{}%
+ \gdef\ODw@Nhand{\ODw@hand{t}{}{}{}{}}%
+ \gdef\ODw@Ehand{\ODw@hand{c}{}{}{}{}}%
+ \gdef\ODw@Shand{\ODw@hand{b}{}{}{}{}}%
+ \gdef\ODw@Whand{\ODw@hand{c}{}{}{}{}}%
+ \namesNS{}{}\namesEW{}{}%
+ \gdef\ODw@Spades{}%
+ \gdef\ODw@Hearts{}%
+ \gdef\ODw@Diamonds{}%
+ \gdef\ODw@Clubs{}%
+ \gdef\ODw@NSpades{}\gdef\ODw@ESpades{}%
+ \gdef\ODw@SSpades{}\gdef\ODw@WSpades{}%
+ \gdef\ODw@NHearts{}\gdef\ODw@EHearts{}%
+ \gdef\ODw@SHearts{}\gdef\ODw@WHearts{}%
+ \gdef\ODw@NDiamonds{}\gdef\ODw@EDiamonds{}%
+ \gdef\ODw@SDiamonds{}\gdef\ODw@WDiamonds{}%
+ \gdef\ODw@NClubs{}\gdef\ODw@EClubs{}%
+ \gdef\ODw@SClubs{}\gdef\ODw@WClubs{}%
+}% newgame
+\newcommand\ODw@ChkNrOfCards[2]{%
+ \StrDel{#1}{-}[\ODw@CardStr]% remove voids
+ \StrLen{\ODw@CardStr}[\ODw@CardLen]%
+ \ifthenelse{\ODw@CardLen > 13}{%
+ \ODw@Error{#2 has \ODw@CardLen{} cards}%
+ }{%
+ \ifthenelse{\ODw@CardLen < 13}{%
+ \ODw@Warning{#2 has \ODw@CardLen{} cards}%
+ }{}%
+ }%
+}% ODw@ChkNrOfCards
+\newcommand\ODw@PrErr[3]{%
+ \bgroup%
+ \if#1T\def\ODw@T{10}\else\def\ODw@T{#1}\fi%
+ \ifthenelse{#2 > 1}{%
+ \ODw@Error{Card #3\,\ODw@T{} occurs #2 times}%
+ }{%
+ \ifthenelse{#2 = 0}{%
+ \ODw@Warning{Card #3\,\ODw@T{} fails}}{}%
+ }%
+ \egroup%
+}% ODw@PrErr
+\newcommand\ODw@ChkSameCards[2]{%
+ \StrDel{#1}{-}[\ODw@CardStr]%
+ \StrCount{\ODw@CardStr}{2}[\ODw@CCnt]\ODw@PrErr{2}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{3}[\ODw@CCnt]\ODw@PrErr{3}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{4}[\ODw@CCnt]\ODw@PrErr{4}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{5}[\ODw@CCnt]\ODw@PrErr{5}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{6}[\ODw@CCnt]\ODw@PrErr{6}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{7}[\ODw@CCnt]\ODw@PrErr{7}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{8}[\ODw@CCnt]\ODw@PrErr{8}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{9}[\ODw@CCnt]\ODw@PrErr{9}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{T}[\ODw@CCnt]\ODw@PrErr{T}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{J}[\ODw@CCnt]\ODw@PrErr{J}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{Q}[\ODw@CCnt]\ODw@PrErr{Q}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{K}[\ODw@CCnt]\ODw@PrErr{K}{\ODw@CCnt}{#2}%
+ \StrCount{\ODw@CardStr}{A}[\ODw@CCnt]\ODw@PrErr{A}{\ODw@CCnt}{#2}%
+}% ODw@ChkSameCards
+\newbool{ODw@Warnings}
+\newbool{ODw@Errors}
+\ODw@set{warn/off/.code={%
+ \global\setbool{ODw@Warnings}{false}}}
+\ODw@set{warn/on/.code={%
+ \global\setbool{ODw@Warnings}{true}}}
+\ODw@set{err/off/.code={%
+ \global\setbool{ODw@Errors}{false}}}
+\ODw@set{err/on/.code={%
+ \global\setbool{ODw@Errors}{true}}}
+\ODw@set{warn=off}
+\ODw@set{err=on}
+
+\ProcessPgfOptions{/ODw}
+
+\newcommand\ODw@Error[1]{%
+ \ifbool{ODw@Errors}{%
+ \par\textcolor{red}{Error: #1}\par}{}%
+}% ODw@Error
+\newcommand\ODw@Warning[1]{%
+ \ifbool{ODw@Warnings}{%
+ \par\textcolor{blue}{Warning: #1}\par}{}%
+}% ODw@Warning
+\NewDocumentCommand{\Ace}{s t!}{%
+ \bgroup%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{A-(ODw)}}%
+ {\GetTranslation{Ace-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{a-(ODw)}}%
+ {\GetTranslation{ace-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Ace
+\def\ace{\Ace*!}
+\NewDocumentCommand{\King}{s t!}{%
+ \bgroup%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{K-(ODw)}}%
+ {\GetTranslation{King-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{k-(ODw)}}%
+ {\GetTranslation{king-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% King
+\def\king{\King*!}
+\NewDocumentCommand{\Queen}{s t!}{%
+ \bgroup%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Q-(ODw)}}%
+ {\GetTranslation{Queen-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{q-(ODw)}}%
+ {\GetTranslation{queen-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Queen
+\def\queen{\Queen*!}
+\NewDocumentCommand{\Jack}{s t!}{%
+ \bgroup%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{J-(ODw)}}%
+ {\GetTranslation{Jack-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{j-(ODw)}}%
+ {\GetTranslation{jack-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Jack
+\def\jack{\Jack*!}
+
+\NewDocumentCommand{\All}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{All!-(ODw)}}%
+ {\GetTranslation{All-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{all!-(ODw)}}%
+ {\GetTranslation{all-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% All
+\def\all{\All*}
+
+\NewDocumentCommand{\None}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{None!-(ODw)}}%
+ {\GetTranslation{None-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{none!-(ODw)}}%
+ {\GetTranslation{none-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% None
+\def\none{\None*}
+%% \end{macrocode}
+\NewDocumentCommand{\Contract}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Contr-(ODw)}}%
+ {\GetTranslation{Contract-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{contr-(ODw)}}%
+ {\GetTranslation{contract-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Contract
+\def\contract{\Contract*}
+%% \end{macrocode}
+\NewDocumentCommand{\Lead}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Lead!-(ODw)}}%
+ {\GetTranslation{Lead-(ODw)}}%
+ }{% else #1
+ \IfBooleanTF{#2}%
+ {\GetTranslation{lead!-(ODw)}}%
+ {\GetTranslation{lead-(ODw)}}%
+ }% #1
+ \egroup%
+ \xspace%
+}% Lead
+\def\lead{\Lead*}
+%% \end{macrocode}
+\NewDocumentCommand{\Declarer}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Decl-(ODw)}}%
+ {\GetTranslation{Declarer-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{decl-(ODw)}}%
+ {\GetTranslation{declarer-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Declarer
+\def\declarer{\Declarer*}
+%% \end{macrocode}
+\newcommand\by{%
+ \bgroup%
+ \ODw@OtherFont%
+ \GetTranslation{by-(ODw)}%
+ \egroup%
+ \xspace%
+}% by
+\NewDocumentCommand{\Board}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Brd-(ODw)}}%
+ {\GetTranslation{Board-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{brd-(ODw)}}%
+ {\GetTranslation{board-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Board
+\def\board{\Board*}
+%% \end{macrocode}
+\NewDocumentCommand{\Deal}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{Deal!-(ODw)}}%
+ {\GetTranslation{Deal-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{deal!-(ODw)}}%
+ {\GetTranslation{deal-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Deal
+\def\deal{\Deal*}
+%% \end{macrocode}
+\NewDocumentCommand{\doubled}{s}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \GetTranslation{Doubled-(ODw)}}{%
+ \GetTranslation{doubled-(ODw)}%
+ }%
+ \egroup%
+ \xspace%
+}% doubled
+\NewDocumentCommand{\redoubled}{s}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \GetTranslation{Redoubled-(ODw)}}{%
+ \GetTranslation{redoubled-(ODw)}%
+ }%
+ \egroup%
+ \xspace%
+}% redoubled
+\NewDocumentCommand{\hpts}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{HCP-(ODw)}}%
+ {\GetTranslation{High Card Points-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{hcp-(ODw)}}%
+ {\GetTranslation{high card points-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% High Card Points
+\def\HCP{\hpts*!}
+\NewDocumentCommand{\lpts}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{LP-(ODw)}}%
+ {\GetTranslation{Length Points-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{lp-(ODw)}}%
+ {\GetTranslation{length points-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Length Points
+\def\LP{\lpts*!}
+\NewDocumentCommand{\dpts}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{DP-(ODw)}}%
+ {\GetTranslation{Distribution Points-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{dp-(ODw)}}%
+ {\GetTranslation{distribution points-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Distribution Points
+\def\DP{\dpts*!}
+\NewDocumentCommand{\tpts}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{TP-(ODw)}}%
+ {\GetTranslation{Total Points-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{tp-(ODw)}}%
+ {\GetTranslation{total points-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Total Points
+\def\TP{\tpts*!}
+\NewDocumentCommand{\gforce}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{GF-(ODw)}}%
+ {\GetTranslation{Game Forcing-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{gf-(ODw)}}%
+ {\GetTranslation{game forcing-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Game Forcing
+\def\GF{\gforce*!}
+\NewDocumentCommand{\sforce}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{SF-(ODw)}}%
+ {\GetTranslation{Semi Forcing-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{sf-(ODw)}}%
+ {\GetTranslation{semi forcing-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Semi Forcing
+\def\SF{\sforce*!}
+\NewDocumentCommand{\nmforce}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{NMF-(ODw)}}%
+ {\GetTranslation{New Minor Forcing-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{nmf-(ODw)}}%
+ {\GetTranslation{new minor forcing-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% New Minor Forcing
+\def\NMF{\nmforce*!}
+\NewDocumentCommand{\tsforce}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{TSF-(ODw)}}%
+ {\GetTranslation{Third Suit Forcing-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{tsf-(ODw)}}%
+ {\GetTranslation{third suit forcing-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Third Suit Forcing
+\def\TSF{\tsforce*!}
+\NewDocumentCommand{\fsforce}{s t!}{%
+ \bgroup%
+ \ODw@OtherFont%
+ \IfBooleanTF{#1}{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{FSF-(ODw)}}%
+ {\GetTranslation{Fourth Suit Forcing-(ODw)}}%
+ }{%
+ \IfBooleanTF{#2}%
+ {\GetTranslation{fsf-(ODw)}}%
+ {\GetTranslation{fourth suit forcing-(ODw)}}%
+ }%
+ \egroup%
+ \xspace%
+}% Fourth Suit Forcing
+\def\FSF{\fsforce*!}
+\newgame
+\setdefaults{bidder=\mdseries\sffamily}
+\setdefaults{compass=\mdseries\sffamily}
+\setdefaults{game=\bfseries\sffamily}
+\setdefaults{legend=\mdseries\rmfamily}
+\setdefaults{name=\mdseries\slshape}
+\setdefaults*{other=\bfseries\sffamily}
+\setdefaults{compshow=on,compturn=off}
+\setdefaults{bidfirst=W,bidders=on,bidlong=on}
+\AtBeginDocument{%
+\ForEachTrackedLanguage{\thislang}{%
+ \ifthenelse{\equal{\thislang}{norsk}}%
+ {\def\thislang{norwegian}}{}%
+ \IfFileExists{ODw-\thislang.trsl}%
+ {%
+ \LoadDictionaryFor{\thislang}{ODw}%
+ \PackageInfo{ODw}{%
+ Translation dictionary ODw-\thislang.trsl loaded%
+ }%
+ }{%
+ \PackageWarning{ODw}{%
+ Translation dictionary ODw-\thislang.trsl not found%
+ }%
+ }%
+}% ForEach
+}% AtBeginDocument
+\endinput% onedown.sty
+
+\endinput
+%%
+%% End of file `onedown.sty'.