diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/bg |
Initial commit
Diffstat (limited to 'macros/latex/contrib/bg')
-rw-r--r-- | macros/latex/contrib/bg/README | 16 | ||||
-rw-r--r-- | macros/latex/contrib/bg/bg.150gf | bin | 0 -> 52584 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.150pk | bin | 0 -> 27388 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.225gf | bin | 0 -> 83540 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.225pk | bin | 0 -> 43016 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.75gf | bin | 0 -> 28532 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.75pk | bin | 0 -> 13164 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/bg.mf | 1098 | ||||
-rw-r--r-- | macros/latex/contrib/bg/bg.sty | 543 | ||||
-rw-r--r-- | macros/latex/contrib/bg/bg.tfm | bin | 0 -> 1096 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/description.pdf | bin | 0 -> 106820 bytes | |||
-rwxr-xr-x | macros/latex/contrib/bg/make_font | 6 | ||||
-rw-r--r-- | macros/latex/contrib/bg/sampletext.pdf | bin | 0 -> 40413 bytes | |||
-rw-r--r-- | macros/latex/contrib/bg/sampletext.tex | 70 |
14 files changed, 1733 insertions, 0 deletions
diff --git a/macros/latex/contrib/bg/README b/macros/latex/contrib/bg/README new file mode 100644 index 0000000000..a0d71dc3c3 --- /dev/null +++ b/macros/latex/contrib/bg/README @@ -0,0 +1,16 @@ +This package consists of the following files: + +README +bg.150gf +bg.150pk +bg.225gf +bg.225pk +bg.75gf +bg.75pk +bg.mf +bg.sty +description.ps +make_font +sampletext.tex + +The description and use of this package is described in the file description.ps. diff --git a/macros/latex/contrib/bg/bg.150gf b/macros/latex/contrib/bg/bg.150gf Binary files differnew file mode 100644 index 0000000000..71b4607bc1 --- /dev/null +++ b/macros/latex/contrib/bg/bg.150gf diff --git a/macros/latex/contrib/bg/bg.150pk b/macros/latex/contrib/bg/bg.150pk Binary files differnew file mode 100644 index 0000000000..71f8719c88 --- /dev/null +++ b/macros/latex/contrib/bg/bg.150pk diff --git a/macros/latex/contrib/bg/bg.225gf b/macros/latex/contrib/bg/bg.225gf Binary files differnew file mode 100644 index 0000000000..0175ce8b37 --- /dev/null +++ b/macros/latex/contrib/bg/bg.225gf diff --git a/macros/latex/contrib/bg/bg.225pk b/macros/latex/contrib/bg/bg.225pk Binary files differnew file mode 100644 index 0000000000..b2210bafdd --- /dev/null +++ b/macros/latex/contrib/bg/bg.225pk diff --git a/macros/latex/contrib/bg/bg.75gf b/macros/latex/contrib/bg/bg.75gf Binary files differnew file mode 100644 index 0000000000..82562220e7 --- /dev/null +++ b/macros/latex/contrib/bg/bg.75gf diff --git a/macros/latex/contrib/bg/bg.75pk b/macros/latex/contrib/bg/bg.75pk Binary files differnew file mode 100644 index 0000000000..54b17e4053 --- /dev/null +++ b/macros/latex/contrib/bg/bg.75pk diff --git a/macros/latex/contrib/bg/bg.mf b/macros/latex/contrib/bg/bg.mf new file mode 100644 index 0000000000..57fde2d563 --- /dev/null +++ b/macros/latex/contrib/bg/bg.mf @@ -0,0 +1,1098 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% bg.mf : A character set to draw backgammon matches in LaTeX % +% % +% Copyright by J. Richter 1994 % +% % +% Distribution and use is free, as long as you don't change this file % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +mode_setup; + +size# := 30pt#; % Length of the edge of one square +number_shadepoints := 15; % Numbers of pixels for black point per row + +pensize# := size#/100; + +define_pixels(size, pensize); + +whitecheckersize := size-3*pensize; +blackcheckersize := size; +digitpensize := 5*pensize; + +erasediameter := size/2; + +font_x_height size#; +font_quad size#; + +%%%%%%%%%%%%%%%% +% upwhitepoint % +%%%%%%%%%%%%%%%% + +def upwhitepoint(expr i) = + +pickup pencircle scaled pensize; + +draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size); +draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt); + +enddef; % upwhitepoint + +%%%%%%%%%%%%%%%%%% +% downwhitepoint % +%%%%%%%%%%%%%%%%%% + +def downwhitepoint(expr i) = + +pickup pencircle scaled pensize; + +draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt); +draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size); + +enddef; % downwhitepoint + +%%%%%%%%%%%%%%%% +% upblackpoint % +%%%%%%%%%%%%%%%% + +def upblackpoint(expr i) = + +boolean first_time; + +x := 0; +y := 0; + +if 2*round(i/2)=i: + offset := 0; +else : + offset := size/(2number_shadepoints); +fi; + +pickup pencircle scaled 2pensize; + +for y = 1 upto number_shadepoints : + if offset = 0 : + offset := size/(2number_shadepoints) + else : + offset := 0; + fi; + for x = 0 upto number_shadepoints - 1: + if (0.1*(i+y/number_shadepoints)*size< x*(size/number_shadepoints)+offset) and + ((1-(i+y/number_shadepoints)*0.1)*size > x*(size/number_shadepoints)+offset): + drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints)); + fi; + endfor; +endfor; + +pickup pencircle scaled pensize; + +draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size); +draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt); + +enddef; % upblackpoint + +%%%%%%%%%%%%%%%%%% +% downblackpoint % +%%%%%%%%%%%%%%%%%% + +def downblackpoint(expr i) = + +boolean first_time; + +x := 0; +y := 0; +if 2*round(i/2)=i: + offset := size/(2number_shadepoints); +else : + offset := 0; +fi; + +pickup pencircle scaled 2pensize; + +for y = 1 upto number_shadepoints : + if offset = 0 : + offset := size/(2number_shadepoints) + else : + offset := 0; + fi; + for x = 0 upto number_shadepoints - 1: + if (0.1*(i+(1-y/number_shadepoints))*size< x*(size/number_shadepoints)+offset) and + ((1-(i+(1-y/number_shadepoints))*0.1)*size > x*(size/number_shadepoints)+offset): + drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints)); + fi; + endfor; +endfor; + +pickup pencircle scaled pensize; + +draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt); +draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size); + +enddef; % upblackpoint + +%%%%%%%%%%%%%%%% +% whitechecker % +%%%%%%%%%%%%%%%% + +def whitechecker = + +pickup pencircle scaled 3pensize; + +erase fill fullcircle scaled whitecheckersize shifted (size/2, size/2); +draw fullcircle scaled whitecheckersize shifted (size/2, size/2); + +enddef; % whitechecker + +%%%%%%%%%%%%%%%% +% blackchecker % +%%%%%%%%%%%%%%%% + +def blackchecker = + +pickup pencircle scaled 3pensize; + +fill fullcircle scaled blackcheckersize shifted (size/2, size/2); + +enddef; % blackchecker + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros to draw the digits from 0 to 9 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +def drawdigit_zero(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; +draw (xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*size/2){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/2){up}..cycle; + +enddef; %drawdigit_zero + +def drawdigit_one(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; +draw (xstart+scale*0,ystart+scale*3size/4)--(xstart+scale*size/4,ystart+scale*size)--(xstart+scale*size/4,ystart+scale*0); +draw (xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0); + +enddef; %drawdigit_one + +def drawdigit_two(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; +draw (xstart+scale*0,ystart+scale*3size/4){up}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*3size/4){down}..(xstart+scale*0,ystart+scale*0){dir 270}; +draw(xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0); + +enddef; %drawdigit_two + +def drawdigit_three(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; +draw (xstart+scale*0,ystart+scale*7size/8){dir 45}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*13size/16){down}..(xstart+scale*size/8,ystart+scale*55size/100){left}; +draw (xstart+scale*size/8,ystart+scale*55size/100){right}..(xstart+scale*size/2,ystart+scale*5size/16){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/8){up}; + +enddef; %drawdigit_three + +def drawdigit_four(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +draw (xstart+scale*size/2,ystart+scale*size/4)--(xstart+scale*0,ystart+scale*size/4)--(xstart+scale*3size/8,ystart+scale*size)--(xstart+scale*3size/8,ystart+scale*0) + +enddef; %drawdigit_four + +def drawdigit_five(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +draw (xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*size)--(xstart+scale*0,ystart+scale*55size/100){dir 13}..(xstart+scale*size/2,ystart+scale*size/4){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/4){up} + +enddef; %drawdigit_five + +def drawdigit_six(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +draw (xstart+scale*size/2,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*3size/10){down}..(xstart+scale*size/4,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*3size/10){up}..(xstart+scale*size/4,ystart+scale*6size/10){left}..(xstart+scale*0,ystart+scale*3size/10){down} + +enddef; %drawdigit_six + +def drawdigit_seven(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +draw (xstart+scale*0,ystart+scale*size)--(xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*0) + +enddef; %drawdigit_seven + +def drawdigit_eight(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +diameter1 := scale*0.9size/2; +diameter2 := scale*1.1size/2; +draw fullcircle scaled diameter1 shifted (xstart+scale*size/4,ystart+scale*1.55size/2); +draw fullcircle scaled diameter2 shifted (xstart+scale*size/4,ystart+scale*0.55size/2); + +enddef; %drawdigit_eight + +def drawdigit_nine(expr xstart,ystart,scale) = + +pickup pencircle xscaled digitpensize yscaled pensize; + +draw (xstart+scale*0,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*7size/10){up}..(xstart+scale*size/4,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*7size/10){down}..(xstart+scale*size/4,ystart+scale*4size/10){right}..(xstart+scale*size/2,ystart+scale*7size/10){up} + +enddef; %drawdigit_nine + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The numbers from 1 to 24 to number the boardpoints % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(128, size#, size#, 0); + +drawdigit_one(0.425size,0.35size,0.3) + +endchar; + +beginchar(129, size#, size#, 0); + +drawdigit_two(0.425size,0.35size,0.3) + +endchar; + +beginchar(130, size#, size#, 0); + +drawdigit_three(0.425size,0.35size,0.3) + +endchar; + +beginchar(131, size#, size#, 0); + +drawdigit_four(0.425size,0.35size,0.3) + +endchar; + +beginchar(132, size#, size#, 0); + +drawdigit_five(0.425size,0.35size,0.3) + +endchar; + +beginchar(133, size#, size#, 0); + +drawdigit_six(0.425size,0.35size,0.3) + +endchar; + +beginchar(134, size#, size#, 0); + +drawdigit_seven(0.44size,0.35size,0.3) + +endchar; + +beginchar(135, size#, size#, 0); + +drawdigit_eight(0.425size,0.35size,0.3) + +endchar; + +beginchar(136, size#, size#, 0); + +drawdigit_nine(0.425size,0.35size,0.3) + +endchar; + +beginchar(137, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_zero(0.55size,0.35size,0.3) + +endchar; + +beginchar(138, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_one(0.55size,0.35size,0.3) + +endchar; + +beginchar(139, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_two(0.55size,0.35size,0.3) + +endchar; + +beginchar(140, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_three(0.55size,0.35size,0.3) + +endchar; + +beginchar(141, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_four(0.55size,0.35size,0.3) + +endchar; + +beginchar(142, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_five(0.55size,0.35size,0.3) + +endchar; + +beginchar(143, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_six(0.55size,0.35size,0.3) + +endchar; + +beginchar(144, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_seven(0.55size,0.35size,0.3) + +endchar; + +beginchar(145, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_eight(0.55size,0.35size,0.3) + +endchar; + +beginchar(146, size#, size#, 0); + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_nine(0.55size,0.35size,0.3) + +endchar; + +beginchar(147, size#, size#, 0); + +drawdigit_two(0.32size,0.35size,0.3) +drawdigit_zero(0.55size,0.35size,0.3) + +endchar; + +beginchar(148, size#, size#, 0); + +drawdigit_two(0.32size,0.35size,0.3) +drawdigit_one(0.55size,0.35size,0.3) + +endchar; + +beginchar(149, size#, size#, 0); + +drawdigit_two(0.32size,0.35size,0.3) +drawdigit_two(0.55size,0.35size,0.3) + +endchar; + +beginchar(150, size#, size#, 0); + +drawdigit_two(0.32size,0.35size,0.3) +drawdigit_three(0.55size,0.35size,0.3) + +endchar; + +beginchar(151, size#, size#, 0); + +drawdigit_two(0.32size,0.35size,0.3) +drawdigit_four(0.55size,0.35size,0.3) + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% checkers with numbers on it % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +code := 142; + +for background = 1 upto 5: + +for colour = 1 upto 2: + +code := code + 10; + +beginchar(code, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + +drawdigit_six(0.425size,0.35size,0.3) + +endchar; + +beginchar(code+1, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_seven(0.44size,0.35size,0.3) + +endchar; + +beginchar(code+2, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_eight(0.425size,0.35size,0.3) + +endchar; + +beginchar(code+3, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_nine(0.425size,0.35size,0.3) + +endchar; + +beginchar(code+4, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_zero(0.55size,0.35size,0.3) + +endchar; + +beginchar(code+5, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_one(0.55size,0.35size,0.3) + +endchar; + +beginchar(code+6, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_two(0.55size,0.35size,0.3) + +endchar; + +beginchar(code+7, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_three(0.55size,0.35size,0.3) + +endchar; + +beginchar(code+8, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_four(0.55size,0.35size,0.3) + +endchar; + +beginchar(code+9, size#, size#, 0); + +if background = 2: downwhitepoint(4) fi +if background = 3: downblackpoint(4) fi +if background = 4: upwhitepoint(4) fi +if background = 5: upblackpoint(4) fi + +if colour = 1: whitechecker +else: blackchecker +fi + +erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle; + + +drawdigit_one(0.32size,0.35size,0.3) +drawdigit_five(0.55size,0.35size,0.3) + +endchar; + +endfor; + +endfor; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% white points without checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("a", size#, size#, 0); + +upwhitepoint(0) + +endchar; + +beginchar("b", size#, size#, 0); + +upwhitepoint(1) + +endchar; + +beginchar("c", size#, size#, 0); + +upwhitepoint(2) + +endchar; + +beginchar("d", size#, size#, 0); + +upwhitepoint(3) + +endchar; + +beginchar("e", size#, size#, 0); + +upwhitepoint(4) + +endchar; + +beginchar("k", size#, size#, 0); + +downwhitepoint(0) + +endchar; + +beginchar("l", size#, size#, 0); + +downwhitepoint(1) + +endchar; + +beginchar("m", size#, size#, 0); + +downwhitepoint(2) + +endchar; + +beginchar("n", size#, size#, 0); + +downwhitepoint(3) + +endchar; + +beginchar("o", size#, size#, 0); + +downwhitepoint(4) + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% black points without checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("f", size#, size#, 0); + +upblackpoint(0) + +endchar; + +beginchar("g", size#, size#, 0); + +upblackpoint(1) + +endchar; + +beginchar("h", size#, size#, 0); + +upblackpoint(2) + +endchar; + +beginchar("i", size#, size#, 0); + +upblackpoint(3) + +endchar; + +beginchar("j", size#, size#, 0); + +upblackpoint(4) + +endchar; + +beginchar("p", size#, size#, 0); + +downblackpoint(0) + +endchar; + +beginchar("q", size#, size#, 0); + +downblackpoint(1) + +endchar; + +beginchar("r", size#, size#, 0); + +downblackpoint(2) + +endchar; + +beginchar("s", size#, size#, 0); + +downblackpoint(3) + +endchar; + +beginchar("t", size#, size#, 0); + +downblackpoint(4) + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% white points with white checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("A", size#, size#, 0); + +upwhitepoint(0) +whitechecker + +endchar; + +beginchar("B", size#, size#, 0); + +upwhitepoint(1) +whitechecker + +endchar; + + +beginchar("C", size#, size#, 0); + +upwhitepoint(2) +whitechecker + +endchar; + +beginchar("D", size#, size#, 0); + +upwhitepoint(3) + +whitechecker +endchar; + +beginchar("E", size#, size#, 0); + +upwhitepoint(4) +whitechecker + +endchar; + +beginchar("K", size#, size#, 0); + +downwhitepoint(0) +whitechecker + +endchar; + +beginchar("L", size#, size#, 0); + +downwhitepoint(1) +whitechecker + +endchar; + +beginchar("M", size#, size#, 0); + +downwhitepoint(2) +whitechecker + +endchar; + +beginchar("N", size#, size#, 0); + +downwhitepoint(3) + +whitechecker +endchar; + +beginchar("O", size#, size#, 0); + +downwhitepoint(4) +whitechecker + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% white points with black checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("0", size#, size#, 0); + +upwhitepoint(0) +blackchecker + +endchar; + +beginchar("1", size#, size#, 0); + +upwhitepoint(1) +blackchecker + +endchar; + + +beginchar("2", size#, size#, 0); + +upwhitepoint(2) +blackchecker + +endchar; + +beginchar("3", size#, size#, 0); + +upwhitepoint(3) + +blackchecker +endchar; + +beginchar("4", size#, size#, 0); + +upwhitepoint(4) +blackchecker + +endchar; + +beginchar("P", size#, size#, 0); + +downwhitepoint(0) +blackchecker + +endchar; + +beginchar("Q", size#, size#, 0); + +downwhitepoint(1) +blackchecker + +endchar; + +beginchar("R", size#, size#, 0); + +downwhitepoint(2) +blackchecker + +endchar; + +beginchar("S", size#, size#, 0); + +downwhitepoint(3) + +blackchecker +endchar; + +beginchar("T", size#, size#, 0); + +downwhitepoint(4) +blackchecker + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% black points with white checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("F", size#, size#, 0); + +upblackpoint(0); +whitechecker; + +endchar; + +beginchar("G", size#, size#, 0); + +upblackpoint(1); +whitechecker; + +endchar; + +beginchar("H", size#, size#, 0); + +upblackpoint(2); +whitechecker; + +endchar; + +beginchar("I", size#, size#, 0); + +upblackpoint(3); + +whitechecker; +endchar; + +beginchar("J", size#, size#, 0); + +upblackpoint(4); +whitechecker; + +endchar; + +beginchar("U", size#, size#, 0); + +downblackpoint(0); +whitechecker; + +endchar; + +beginchar("V", size#, size#, 0); + +downblackpoint(1); +whitechecker; + +endchar; + + +beginchar("W", size#, size#, 0); + +downblackpoint(2); +whitechecker; + +endchar; + +beginchar("X", size#, size#, 0); + +downblackpoint(3); + +whitechecker; +endchar; + +beginchar("Y", size#, size#, 0); + +downblackpoint(4); +whitechecker; + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% black points with black checkers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("5", size#, size#, 0); + +upblackpoint(0) +blackchecker + +endchar; +beginchar("6", size#, size#, 0); + +upblackpoint(1) +blackchecker + +endchar; + + +beginchar("7", size#, size#, 0); + +upblackpoint(2) +blackchecker + +endchar; + +beginchar("8", size#, size#, 0); + +upblackpoint(3) + +blackchecker +endchar; + +beginchar("9", size#, size#, 0); + +upblackpoint(4) +blackchecker + +endchar; + +beginchar("u", size#, size#, 0); + +downblackpoint(0) +blackchecker + +endchar; + +beginchar("v", size#, size#, 0); + +downblackpoint(1) +blackchecker + +endchar; + +beginchar("w", size#, size#, 0); + +downblackpoint(2) +blackchecker + +endchar; + +beginchar("x", size#, size#, 0); + +downblackpoint(3) + +blackchecker +endchar; + +beginchar("y", size#, size#, 0); + +downblackpoint(4) +blackchecker + +endchar; + +%%%%%%%%%%%%%%%%%%% +% An empty square % +%%%%%%%%%%%%%%%%%%% + +beginchar("z", size#, size#, 0); + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% A (left or right) border % +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("Z", pensize#, size#, 0); + +pickup pencircle scaled pensize; + +draw (0pt,0pt)--(0pt,size); + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% An (upper or lower) border % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("-", size#, pensize#, 0); + +pickup pencircle scaled pensize; + +draw (0pt,0pt)--(size,0pt); + +endchar; + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +% A "boarderthick" filler % +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(0, pensize#, pensize#, 0); + +endchar; + +%%%%%%%%%%%%%%%%%%% +% A black Checker % +%%%%%%%%%%%%%%%%%%% + +beginchar("@", size#, size#, 0); + +blackchecker + +endchar; + + +%%%%%%%%%%%%%%%%%%% +% A white Checker % +%%%%%%%%%%%%%%%%%%% + +beginchar("*", size#, size#, 0); + +whitechecker + +endchar; + +end + diff --git a/macros/latex/contrib/bg/bg.sty b/macros/latex/contrib/bg/bg.sty new file mode 100644 index 0000000000..952f7c12d2 --- /dev/null +++ b/macros/latex/contrib/bg/bg.sty @@ -0,0 +1,543 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% bg.sty : A style file to annote backgammon matches and positions % +% % +% Copyright by J. Richter 1994 % +% % +% Distribution and use is free, as long as you don't change this file % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcount\@value +\newcount\@f +\newcount\@t + +\newcount\@movenumber +\newfont{\@bigboardfont}{bg scaled 750} +\newfont{\@normalboardfont}{bg scaled 500} +\newfont{\@smallboardfont}{bg scaled 250} + +\newdimen\@whiteskip +\@whiteskip=\textwidth +\divide\@whiteskip by 2 + +\def\@black{-1} +\def\@white{1} +\def\@middle{0} + +\newif\ifcube % only true if the cubevalue should be printed with the boards +\newif\ifblack % only true if black is on move +\newif\ifnumbers % only true if boardpoints are numbered +\newif\ifmoves % only true if \move prints out his arguments +\newif\ifindent % only true if the moves of white are indented by \@whiteskip +\newif\ifptsonmove % only true if points are numbered from the view of the one on move +\newif\ifbothhalfs % only true if both halfs of the board are printed +\newif\ifsecmove % only true if the move numbers change only every second move + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Some global default settings of the switches % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\boardtype{drawnormalboard} +\indenttrue +\numberstrue +\cubetrue +\movestrue +\blacktrue +\ptsonmovetrue +\bothhalfstrue +\secmovetrue + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros to set and get the value of a point % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@set[#1](#2){ + \expandafter\xdef\csname point#1\endcsname{#2}} + +\def\@get#1[#2]{ + \edef#1{\csname point#2\endcsname}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro to make all points of the board empty % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@clearboard{ +\@value=0{ +\loop \@set[\the\@value](0) \ifnum\@value<27\advance\@value by 1 \repeat} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro to set the board to the configuration at the start of the game % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% White plays from 0 to 24 with 0 being the bar of White +% Black plays from 25 to 1 with 25 being the bar of Black + +% a positive value means that White has this number of checkers on the point +% a negative value means that Black has the negative of this number as +% chechers on this point + +\def\initboard{ +\@set[0](0) \@set[1](2) \@set[2](0) \@set[3](0) \@set[4](0) \@set[5](0) \@set[6](-5) +\@set[7](0) \@set[8](-3) \@set[9](0) \@set[10](0) \@set[11](0) \@set[12](5) +\@set[13](-5) \@set[14](0) \@set[15](0) \@set[16](0) \@set[17](3) \@set[18](0) +\@set[19](5) \@set[20](0) \@set[21](0) \@set[22](0) \@set[23](0) \@set[24](-2) +\@set[25](0) +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros to draw a single point % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@whitehangingpoint[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{k}\hbox{l}\hbox{m}\hbox{n}\hbox{o}}\else +\ifnum\@value=1\vbox{\hbox{K}\hbox{l}\hbox{m}\hbox{n}\hbox{o}}\else +\ifnum\@value=2\vbox{\hbox{K}\hbox{L}\hbox{m}\hbox{n}\hbox{o}}\else +\ifnum\@value=3\vbox{\hbox{K}\hbox{L}\hbox{M}\hbox{n}\hbox{o}}\else +\ifnum\@value=4\vbox{\hbox{K}\hbox{L}\hbox{M}\hbox{N}\hbox{o}}\else +\ifnum\@value=5\vbox{\hbox{K}\hbox{L}\hbox{M}\hbox{N}\hbox{O}}\else +\ifnum\@value>5\advance\@value by 166 +\vbox{\hbox{K}\hbox{L}\hbox{M}\hbox{N}\hbox{\char\the\@value}}\else +\ifnum\@value=-1\vbox{\hbox{P}\hbox{l}\hbox{m}\hbox{n}\hbox{o}}\else +\ifnum\@value=-2\vbox{\hbox{P}\hbox{Q}\hbox{m}\hbox{n}\hbox{o}}\else +\ifnum\@value=-3\vbox{\hbox{P}\hbox{Q}\hbox{R}\hbox{n}\hbox{o}}\else +\ifnum\@value=-4\vbox{\hbox{P}\hbox{Q}\hbox{R}\hbox{S}\hbox{o}}\else +\ifnum\@value=-5\vbox{\hbox{P}\hbox{Q}\hbox{R}\hbox{S}\hbox{T}}\else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 176 +\vbox{\hbox{P}\hbox{Q}\hbox{R}\hbox{S}\hbox{\char\the\@value}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +\def\@blackhangingpoint[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{p}\hbox{q}\hbox{r}\hbox{s}\hbox{t}}\else +\ifnum\@value=1\vbox{\hbox{U}\hbox{q}\hbox{r}\hbox{s}\hbox{t}}\else +\ifnum\@value=2\vbox{\hbox{U}\hbox{V}\hbox{r}\hbox{s}\hbox{t}}\else +\ifnum\@value=3\vbox{\hbox{U}\hbox{V}\hbox{W}\hbox{s}\hbox{t}}\else +\ifnum\@value=4\vbox{\hbox{U}\hbox{V}\hbox{W}\hbox{X}\hbox{t}}\else +\ifnum\@value=5\vbox{\hbox{U}\hbox{V}\hbox{W}\hbox{X}\hbox{Y}}\else +\ifnum\@value>5\advance\@value by 186 +\vbox{\hbox{U}\hbox{V}\hbox{W}\hbox{X}\hbox{\char\the\@value}}\else +\ifnum\@value=-1\vbox{\hbox{u}\hbox{q}\hbox{r}\hbox{s}\hbox{t}}\else +\ifnum\@value=-2\vbox{\hbox{u}\hbox{v}\hbox{r}\hbox{s}\hbox{t}}\else +\ifnum\@value=-3\vbox{\hbox{u}\hbox{v}\hbox{w}\hbox{s}\hbox{t}}\else +\ifnum\@value=-4\vbox{\hbox{u}\hbox{v}\hbox{w}\hbox{x}\hbox{t}}\else +\ifnum\@value=-5\vbox{\hbox{u}\hbox{v}\hbox{w}\hbox{x}\hbox{y}}\else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 196 +\vbox{\hbox{u}\hbox{v}\hbox{w}\hbox{x}\hbox{\char\the\@value}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +\def\@whitestandingpoint[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{e}\hbox{d}\hbox{c}\hbox{b}\hbox{a}}\else +\ifnum\@value=1\vbox{\hbox{e}\hbox{d}\hbox{c}\hbox{b}\hbox{A}}\else +\ifnum\@value=2\vbox{\hbox{e}\hbox{d}\hbox{c}\hbox{B}\hbox{A}}\else +\ifnum\@value=3\vbox{\hbox{e}\hbox{d}\hbox{C}\hbox{B}\hbox{A}}\else +\ifnum\@value=4\vbox{\hbox{e}\hbox{D}\hbox{C}\hbox{B}\hbox{A}}\else +\ifnum\@value=5\vbox{\hbox{E}\hbox{D}\hbox{C}\hbox{B}\hbox{A}}\else +\ifnum\@value>5\advance\@value by 206 +\vbox{\hbox{\char\the\@value}\hbox{D}\hbox{C}\hbox{B}\hbox{A}}\else +\ifnum\@value=-1\vbox{\hbox{e}\hbox{d}\hbox{c}\hbox{b}\hbox{0}}\else +\ifnum\@value=-2\vbox{\hbox{e}\hbox{d}\hbox{c}\hbox{1}\hbox{0}}\else +\ifnum\@value=-3\vbox{\hbox{e}\hbox{d}\hbox{2}\hbox{1}\hbox{0}}\else +\ifnum\@value=-4\vbox{\hbox{e}\hbox{3}\hbox{2}\hbox{1}\hbox{0}}\else +\ifnum\@value=-5\vbox{\hbox{4}\hbox{3}\hbox{2}\hbox{1}\hbox{0}}\else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 216 +\vbox{\hbox{\char\the\@value}\hbox{3}\hbox{2}\hbox{1}\hbox{0}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +\def\@blackstandingpoint[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{j}\hbox{i}\hbox{h}\hbox{g}\hbox{f}}\else +\ifnum\@value=1\vbox{\hbox{j}\hbox{i}\hbox{h}\hbox{g}\hbox{F}}\else +\ifnum\@value=2\vbox{\hbox{j}\hbox{i}\hbox{h}\hbox{G}\hbox{F}}\else +\ifnum\@value=3\vbox{\hbox{j}\hbox{i}\hbox{H}\hbox{G}\hbox{F}}\else +\ifnum\@value=4\vbox{\hbox{j}\hbox{I}\hbox{H}\hbox{G}\hbox{F}}\else +\ifnum\@value=5\vbox{\hbox{J}\hbox{I}\hbox{H}\hbox{G}\hbox{F}}\else +\ifnum\@value>5\advance\@value by 226 +\vbox{\hbox{\char\the\@value}\hbox{I}\hbox{H}\hbox{G}\hbox{F}}\else +\ifnum\@value=-1\vbox{\hbox{j}\hbox{i}\hbox{h}\hbox{g}\hbox{5}}\else +\ifnum\@value=-2\vbox{\hbox{j}\hbox{i}\hbox{h}\hbox{6}\hbox{5}}\else +\ifnum\@value=-3\vbox{\hbox{j}\hbox{i}\hbox{7}\hbox{6}\hbox{5}}\else +\ifnum\@value=-4\vbox{\hbox{j}\hbox{8}\hbox{7}\hbox{6}\hbox{5}}\else +\ifnum\@value=-5\vbox{\hbox{9}\hbox{8}\hbox{7}\hbox{6}\hbox{5}}\else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 236 +\vbox{\hbox{\char\the\@value}\hbox{8}\hbox{7}\hbox{6}\hbox{5}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro to draw the pieces on the bar % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\hangingbar[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=1\vbox{\hbox{*}\hbox{z}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=2\vbox{\hbox{*}\hbox{*}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=3\vbox{\hbox{*}\hbox{*}\hbox{*}\hbox{z}\hbox{z}}\else +\ifnum\@value=4\vbox{\hbox{*}\hbox{*}\hbox{*}\hbox{*}\hbox{z}}\else +\ifnum\@value=5\vbox{\hbox{*}\hbox{*}\hbox{*}\hbox{*}\hbox{*}}\else +\ifnum\@value>5\advance\@value by 146 +\vbox{\hbox{*}\hbox{*}\hbox{*}\hbox{*}\hbox{\char\the\@value}}\else +\ifnum\@value=-1\vbox{\hbox{@}\hbox{z}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=-2\vbox{\hbox{@}\hbox{@}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=-3\vbox{\hbox{@}\hbox{@}\hbox{@}\hbox{z}\hbox{z}}\else +\ifnum\@value=-4\vbox{\hbox{@}\hbox{@}\hbox{@}\hbox{@}\hbox{z}}\else +\ifnum\@value=-5\vbox{\hbox{@}\hbox{@}\hbox{@}\hbox{@}\hbox{@}}\else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 156 +\vbox{\hbox{@}\hbox{@}\hbox{@}\hbox{@}\hbox{\char\the\@value}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +\def\standingbar[#1]{ +\@get\@dummy[#1] +\@value=\@dummy{ +\ifnum\@value=0\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}}\else +\ifnum\@value=1\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{*}}\else +\ifnum\@value=2\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{*}\hbox{*}}\else +\ifnum\@value=3\vbox{\hbox{z}\hbox{z}\hbox{*}\hbox{*}\hbox{*}}\else +\ifnum\@value=4\vbox{\hbox{z}\hbox{*}\hbox{*}\hbox{*}\hbox{*}}\else +\ifnum\@value=5\vbox{\hbox{*}\hbox{*}\hbox{*}\hbox{*}\hbox{*}}\else +\ifnum\@value>5\advance\@value by 146 +\vbox{\hbox{\char\the\@value}\hbox{*}\hbox{*}\hbox{*}\hbox{*}}\else +\ifnum\@value=-1\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{@}}\else +\ifnum\@value=-2\vbox{\hbox{z}\hbox{z}\hbox{z}\hbox{@}\hbox{@}}\else +\ifnum\@value=-3\vbox{\hbox{z}\hbox{z}\hbox{@}\hbox{@}\hbox{@}}\else +\ifnum\@value=-4\vbox{\hbox{z}\hbox{@}\hbox{@}\hbox{@}\hbox{@}}\else +\ifnum\@value=-5\vbox{\hbox{@}\hbox{@}\hbox{@}\hbox{@}\hbox{@}}else +\ifnum\@value<-5\multiply\@value by -1\advance\@value by 156 +\vbox{\hbox{\char\the\@value}\hbox{@}\hbox{@}\hbox{@}\hbox{@}} +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros to draw some borders % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@verticalborder{ +\@value=1\vbox{ +\loop \hbox{Z} \ifnum\@value<5\advance\@value by 1 \repeat} +} + +\def\@horizontalborder{ +\ifbothhalfs +\@value=1\hbox{ +\loop \hbox{-} \ifnum\@value<13\advance\@value by 1 \repeat} +\else +\@value=1\hbox{ +\loop \hbox{-} \ifnum\@value<7\advance\@value by 1 \repeat} +\fi +} + +\def\@middleoftheboard{ +\ifbothhalfs +\hbox{ \vsize=0.5em + \hbox{Z} + \@value=1{ + \loop \hbox{z} \ifnum\@value<6\advance\@value by 1 \repeat} + \hbox{ZzZ} + \@value=1{ + \loop \hbox{z} \ifnum\@value<6\advance\@value by 1 \repeat} + \hbox{Z} +} +\else +\hbox{ \vsize=0.5em + \hbox{Z} + \@value=1{ + \loop \hbox{z} \ifnum\@value<6\advance\@value by 1 \repeat} + \hbox{ZzZ} +} +\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros to write boards in various sizes % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@onetotwelfe{\ifptsonmove +\hbox{\char0\char128\char129\char130\char131\char132\char133\char0z\char0 +\ifbothhalfs +\char134\char135\char136\char137\char138\char139\fi} +\else +\hbox{\char0\char151\char150\char149\char148\char147\char146\char0z\char0 +\ifbothhalfs +\char145\char144\char143\char142\char141\char140 +\fi} +\fi +} +\def\@twentyfourtothirteen{\ifptsonmove +\hbox{\char0\char151\char150\char149\char148\char147\char146\char0z\char0 +\ifbothhalfs +\char145\char144\char143\char142\char141\char140\fi} +\else +\hbox{\char0\char128\char129\char130\char131\char132\char133\char0z\char0 +\ifbothhalfs +\char134\char135\char136\char137\char138\char139 +\fi} +\fi +} + +\def\@drawcube{ +\ifcube\@value=\cubeowner\relax +\ifnum\@value=\@black\@value=\@cubevalue +\advance\@value by 127 +\vbox{\hbox to 1.5em{ \hfill + \vbox{ \hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z} + \hbox{z}\hbox{z}\hbox{z}\hbox{z} + \hbox{-}\hbox{\hbox{Z}\char\the\@value\hbox{Z}}\hbox{-} + \hbox{z}} + } +} +\else\ifnum\@value=\@white\@value=\@cubevalue +\advance\@value by 127 +\vbox{\hbox to 1.5em{ \hfill + \vbox{ \hbox{z} + \hbox{-}\hbox{\hbox{Z}\char\the\@value\hbox{Z}}\hbox{-} + \hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z} + \hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}} + } +} +\else\ifnum\@value=\@middle\@value=\@cubevalue +\advance\@value by 127 +\vbox{\hbox to 1.5em{ \hfill + \vbox{ \hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z} + \hbox{-}\hbox{\hbox{Z}\char\the\@value\hbox{Z}}\hbox{-} + \hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}\hbox{z}} + } +} +\fi\fi\fi\fi +} + +\def\@drawboard{ +\offinterlineskip +\vbox{ + \ifnumbers\ifblack\@twentyfourtothirteen\else\@onetotwelfe\fi\fi + \@horizontalborder + \hbox{ \@verticalborder + \@blackhangingpoint [24] + \@whitehangingpoint [23] + \@blackhangingpoint [22] + \@whitehangingpoint [21] + \@blackhangingpoint [20] + \@whitehangingpoint [19] + \@verticalborder + \hangingbar [0] + \@verticalborder + \ifbothhalfs + \@blackhangingpoint [18] + \@whitehangingpoint [17] + \@blackhangingpoint [16] + \@whitehangingpoint [15] + \@blackhangingpoint [14] + \@whitehangingpoint [13] + \@verticalborder + \fi + } + \@middleoftheboard + \hbox{ \@verticalborder + \@whitestandingpoint [1] + \@blackstandingpoint [2] + \@whitestandingpoint [3] + \@blackstandingpoint [4] + \@whitestandingpoint [5] + \@blackstandingpoint [6] + \@verticalborder + \standingbar [25] + \@verticalborder + \ifbothhalfs + \@whitestandingpoint [7] + \@blackstandingpoint [8] + \@whitestandingpoint [9] + \@blackstandingpoint [10] + \@whitestandingpoint [11] + \@blackstandingpoint [12] + \@verticalborder + \fi + } + \@horizontalborder + \ifnumbers\ifblack\@onetotwelfe\else\@twentyfourtothirteen\fi\fi +} +\@drawcube +} + +\def\@drawbigboard{ +{\@bigboardfont +\@drawboard +} +} + +\def\@drawnormalboard{ +{\@normalboardfont +\@drawboard +} +} + +\def\@drawsmallboard{ +{\@smallboardfont +\@drawboard +} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro to move a single checker % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@movechecker(#1-#2){ +% +\ifblack +\xdef\from{#1}\xdef\to{#2}\xdef\@movecolour{\@black}\xdef\@negmovecolour{\@white} +\else +\@value=#1\multiply\@value by -1\advance\@value by 25\xdef\from{\the\@value} +\@value=#2\multiply\@value by -1\advance\@value by 25\xdef\to{\the\@value} +\xdef\@movecolour{\@white}\xdef\@negmovecolour{\@black} +\fi +% +\@value=\@movecolour\multiply\@value by 25\advance\@value by 25\divide\@value by 2\relax +\ifnum\@value=\to +% bearoff % +\@get\@dummy[\from]\@value=\@dummy\advance\@value by \@negmovecolour\@set[\from](\the\@value) +\else\@get\@dummy[\to]\@value=\@dummy\multiply\@value by \@movecolour\relax +\ifnum\@value=-1 +%A checker is hit% +\gdef\washit{*} +\@get\@dummy[\from]\@value=\@dummy\advance\@value by \@negmovecolour\@set[\from](\the\@value) +\@set[\to](\@movecolour) +\@value=\@movecolour\multiply\@value by 25\advance\@value by 25\divide\@value by 2\xdef\hit{\the\@value} +\@get\@dummy[\hit]\@value=\@dummy\advance\@value by \@negmovecolour\@set[\hit](\the\@value) +\else +%normal move% +\@get\@dummy[\from]\@value=\@dummy\advance\@value by \@negmovecolour\@set[\from](\the\@value) +\@get\@dummy[\to]\@value=\@dummy\advance\@value by \@movecolour\@set[\to](\the\@value) +\fi\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro to perform all moves contained in a string which % +% starts with a , and ends with 69-69,69-69. % +% defines \stringofmoves, which contains the formatted move % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@moveallcheckers#1-#2,#3.{ +\@value=#1 +\ifnum\@value=69 %reached end of the list% +\else\@f=#1\@t=#2%Delete blanks in #1 and #2 % +\gdef\washit{}\@movechecker(\the\@f-\the\@t) +\xdef\@dummy{\stringofmoves} +\ifnum\@f=25\def\from{bar}\else\def\from{\the\@f}\fi +\ifnum\@t=0\def\to{off}\else\def\to{\the\@t}\fi +\edef\stringofmoves{\@dummy\comma\from--\to\washit}\gdef\comma{, } +\expandafter\@moveallcheckers#3.\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Commands for the position and the game environment % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\blackpoint}[2]{\@value=#1\@set[\the\@value](-#2)} +\newcommand{\whitepoint}[2]{\@value=#1\advance\@value by -25 + \multiply\@value by -1 + \@set[\the\@value](#2)} +\newcommand{\whitebar}[1]{\@set[0](#1)} +\newcommand{\blackbar}[1]{\@set[25](-#1)} +\newcommand{\smallboard}{\def\@boardtype{@drawsmallboard}} +\newcommand{\normalboard}{\def\@boardtype{@drawnormalboard}} +\newcommand{\bigboard}{\def\@boardtype{@drawbigboard}} +\newcommand{\boardcaption}[1]{\def\capt{#1}} +\newcommand{\blackonmove}{\global\blacktrue} +\newcommand{\whiteonmove}{\global\blackfalse} +\newcommand{\dontshownumbers}{\global\numbersfalse} +\newcommand{\shownumbers}{\global\numberstrue} +\newcommand{\togglenumbers}{\ifptsonmove\global\ptsonmovefalse\else\ptsonmovetrue\fi} +\newcommand{\dontshowcube}{\global\cubefalse} +\newcommand{\showcube}{\global\cubetrue} +\newcommand{\blackcube}[1]{\gdef\cubeowner{\@black}\edef\@cubevalue{#1}} +\newcommand{\whitecube}[1]{\gdef\cubeowner{\@white}\edef\@cubevalue{#1}} +\newcommand{\middlecube}[1]{\gdef\cubeowner{\@middle}\edef\@cubevalue{#1}} +\newcommand{\showmoves}{\global\movestrue} +\newcommand{\dontshowmoves}{\global\movesfalse} +\newcommand{\indentwhite}{\global\indenttrue} +\newcommand{\dontindentwhite}{\global\indentfalse} +\newcommand{\halfboard}{\global\bothhalfsfalse} +\newcommand{\fullboard}{\global\bothhalfstrue} +\newcommand{\halfincr}{\global\secmovetrue} +\newcommand{\fullincr}{\global\secmovefalse} +\newcommand{\printboard}{\par\vspace{2em} +\centerline{\csname \@boardtype \endcsname}\par +\vspace{0.5em} +\centerline{\capt} +\vspace*{1.5em}\par} +\newcommand{\rawboard}{\mbox{\csname\@boardtype\endcsname}} +\def\dices(#1#2){\@value=#1\multiply\@value by 10\advance\@value by #2\relax +\the\@value} +\newcommand{\move}[2]{\gdef\comma{}\gdef\stringofmoves{}\relax\expandafter\@moveallcheckers#2,69-69,69-69. +\ifmoves +\par\ifindent\ifblack\else\hspace*{\@whiteskip}\fi\fi +\ifsecmove +\@value=\@movenumber\advance\@value by 1\divide\@value 2 +\else +\@value=\@movenumber +\fi +\the\@value. \ifblack$\bullet$ \else$\circ$ \fi +\dices(#1) +: \stringofmoves\par +\fi +\ifblack\global\blackfalse\else\blacktrue\fi +\advance \@movenumber by 1} +\newcommand{\textmove}[1]{\ifmoves +\par\ifblack\else\ifindent\hspace*{\@whiteskip}\fi\fi +\ifsecmove +\@value=\@movenumber\advance\@value by 1\divide\@value 2 +\else +\@value=\@movenumber +\fi +\the\@value. \ifblack$\bullet$ \else$\circ$ \fi#1\par +\fi +\ifblack\global\blackfalse\else\blacktrue\fi +\advance \@movenumber by 1} +\newcommand{\takecube}{\ifblack\gdef\cubeowner{\@white}\else\gdef\cubeowner{\@black}\fi +\@value=\@cubevalue\multiply\@value by 2\edef\@cubevalue{\the\@value}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The position environment to produce a single board % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newenvironment{position}% +{\@clearboard +\gdef\capt{} +\gdef\cubeowner{\@middle} +\gdef\@cubevalue{1} +}% +{\printboard} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The game environment to annotate matches % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newenvironment{game}[2]% +{\initboard +\gdef\capt{} +\global\blacktrue +\gdef\cubeowner{\@middle} +\gdef\@cubevalue{1} +\global\@movenumber=1 +\ifx\@empty#1\else\ifx\@empty#2\else +\ifindent +\par\hbox{\large\hbox to \@whiteskip{$\bullet$ #1\hfill}\hbox{$\circ$ #2}}\par +\else +\par\vbox{\large\hbox{$\bullet$ #1\hfill}\hbox{$\circ$ #2}}\par +\fi +\vspace*{4ex} +\fi\fi +}% +{} diff --git a/macros/latex/contrib/bg/bg.tfm b/macros/latex/contrib/bg/bg.tfm Binary files differnew file mode 100644 index 0000000000..7e937d5662 --- /dev/null +++ b/macros/latex/contrib/bg/bg.tfm diff --git a/macros/latex/contrib/bg/description.pdf b/macros/latex/contrib/bg/description.pdf Binary files differnew file mode 100644 index 0000000000..6b9fa26d63 --- /dev/null +++ b/macros/latex/contrib/bg/description.pdf diff --git a/macros/latex/contrib/bg/make_font b/macros/latex/contrib/bg/make_font new file mode 100755 index 0000000000..82fd2af527 --- /dev/null +++ b/macros/latex/contrib/bg/make_font @@ -0,0 +1,6 @@ +mf '\mode=localfont; mag=0.75; input bg' +gftopk bg.225gf +mf '\mode=localfont; mag=0.5; input bg' +gftopk bg.150gf +mf '\mode=localfont; mag=0.25; input bg' +gftopk bg.75gf diff --git a/macros/latex/contrib/bg/sampletext.pdf b/macros/latex/contrib/bg/sampletext.pdf Binary files differnew file mode 100644 index 0000000000..169ce2fc65 --- /dev/null +++ b/macros/latex/contrib/bg/sampletext.pdf diff --git a/macros/latex/contrib/bg/sampletext.tex b/macros/latex/contrib/bg/sampletext.tex new file mode 100644 index 0000000000..77d39ee571 --- /dev/null +++ b/macros/latex/contrib/bg/sampletext.tex @@ -0,0 +1,70 @@ +\documentstyle[12pt,bg]{article} + +\begin{document} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{1em} + +This is a discussion of a position from the newsgroup rec.games.backgammon: + +\begin{position} +\smallboard +\whitepoint{2}{2} +\whitepoint{3}{2} +\whitepoint{4}{2} +\whitepoint{5}{2} +\whitepoint{6}{5} +\whitepoint{9}{1} +\whitepoint{23}{2} +\blackpoint{1}{2} +\blackpoint{4}{2} +\blackpoint{5}{3} +\blackpoint{6}{2} +\blackpoint{8}{3} +\blackpoint{12}{1} +\blackpoint{24}{2} +\middlecube{1} + +\boardcaption{Score 0-0 in a 3 point match: White to play 5-4} +\whiteonmove +\shownumbers +\showcube + +\end{position} + +{\bf Carl Nielsen (nlscar01@uctvax.uct.ac.za) wrote:} + +I played 23-14. X rolled 4-2 and played 17-23. I couldn't get back on and +ended up losing to a gammon. Did I play wrong? Should I have left moving my +runners till later and moved 9-4 6-2 or something like that? + +Suggestions please. + +{\bf Kit Woolsey (kwoolsey@netcom.com) wrote:} + +Your play looks ok to me. You have to get moving sometime and your +opponent has plenty of time if you play the waiting game, so it is +probably best to run now before you have an accident and are forced to +lose your board by rolling too many threes and fours. You were just +unlucky. Btw, what is that cube doing in the center? You have a clear +advantage with some threats, so you have a strong double. Maybe your +opponent will pass, and maybe he should pass! + +Kit + +{\bf Kent Goulding (kg1@netcom.com) wrote:} + +Biggest error here, by FAR, is the failure to double. As is so often the +case, the cube errors are the costly ones while checker plays are no big +deal. I think your opponent should pass. As far as the checker play +goes, it looks pretty close. Running now gives your opponent a crack at +grabbing TWO of your checkers, while waiting will likely expose only +one. Your home board is actually not in great danger of breaking right +away. You can't play 5s and 6s there, and you will likely run from your +anchor the next chance you get. Also, it's nice to spread out some +builders for your ace point in case your opponent runs (either forced or +by choice). I'm inclined to sit tight and see what happens next. + +--KG + +\end{document} |