diff options
author | Karl Berry <karl@freefriends.org> | 2009-11-12 23:09:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-11-12 23:09:26 +0000 |
commit | 171080666d3ddb52bcc1c0ce2283b63939097484 (patch) | |
tree | b68c871a17db8708431f0d599c2db2aa8d7cc9e0 /Master | |
parent | 8fb9831f2e5e1dcf6fc44dff6b3b2297384954f7 (diff) |
rm cwpuzzle, now in crossword package (Heiko mail 12 Nov 2009 19:09:11)
git-svn-id: svn://tug.org/texlive/trunk@15995 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/cwpuzzle/cwpuzzle.dvi | bin | 50288 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/README | 143 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytconv.c | 202 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytsconv.c | 209 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/usaconv.c | 229 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/Makefile | 33 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/README | 73 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.dtx | 1077 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.ins | 43 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty | 218 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/cwpuzzle.tlpsrc | 0 |
13 files changed, 1 insertions, 2228 deletions
diff --git a/Master/texmf-dist/doc/latex/cwpuzzle/cwpuzzle.dvi b/Master/texmf-dist/doc/latex/cwpuzzle/cwpuzzle.dvi Binary files differdeleted file mode 100644 index 150967fba18..00000000000 --- a/Master/texmf-dist/doc/latex/cwpuzzle/cwpuzzle.dvi +++ /dev/null diff --git a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/README b/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/README deleted file mode 100644 index 8555f2a213a..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/README +++ /dev/null @@ -1,143 +0,0 @@ -Here are three programs and a script for use with Gerd -Neugebauer's excellent cwpuzzle.sty package for typesetting -crossword puzzles in LaTeX. - -The purpose of the programs is to convert the popular -Across Lite(R) puzzle formats, both binary and text, to -LaTeX input suitable for use with Gerd's package. - -Build the programs like this: - -gcc -o nytconv nytconv.c -gcc -o nytsconv nytsconv.c -gcc -o usaconv usaconv.c - -1. nytconv - -This program converts Across Lite(R) binary puzzle files: - -nytconv puzzlefile.puz >puzzlefile.tex - -where of course 'puzzlefile' is the name of the binary -input file. The program is best suited to puzzles up to -size 15x15, which is the standard daily puzzle size for -the New York Times. NYT puzzles are distributed from their -web site in Across Lite binary format. The web site is -http://www.nytimes.com but registration (currently free) -is needed to access the contents of the site. - -2. nytsconv - -This program is very similar to the previous one except -it's for the larger Sunday puzzles, up to about 23x23. - -nytsconv puzzlefile.puz >puzzlefile.tex - -3. usaconv - -This program converts Across Lite(R) text files. Puzzles -such as the USA Today daily puzzle and the Times of London -daily puzzle are converted to LaTeX input via a two step -process. You should go to the Across Lite web site, -http://www.litsoft.com to pick up a USA Today conversion -program and a Times of London conversion program. You can -then pick up the puzzles (http://www.usatoday.com, or -http://www.the-times.co.uk), convert to Across Lite text form, -and then convert to LaTeX. - -usaconv puzzlefile.txt >puzzlefile.tex - -Well, you might say, what's the point? There are several. -I don't want to solve crosswords on screen; I want printed -copy to work with. So, why not just print from the Across -Lite program? Because (1) I'm a LaTeX fanatic, and more -importantly (2) I use an automated procedure to download -the NYT and USA puzzles every morning, format them, and -ready them for printing whenever I want a fresh puzzle! -The only work I have to do is to actually solve the -puzzle. (I don't have the skill needed to solve difficult -cryptics such as the Times of London puzzles so I don't -download them regularly.) - -Another important point is generating your own crosswords -with computerized tools. Tools such as Crossword Express -(http://www.puzzledepot.com/cwe) help you to produce -crosswords quickly and effectively. One of the output -format is Across Lite binary. This can then be converted -(with the nyt- or nyts- conversion program, depending on -puzzle size) and dropped into a LaTeX document. This is -nice for newsletters, educational material, etc. - -There is still another possibility using postscript tools -usually found on Unix systems. You might collect, say, -100 puzzles, convert them all to LaTeX input, and process -them. Then you can use tools such as psbook to make books -of puzzles to take along on boring business trips or -interesting vacation trips. - -For those of you with an interest, here is my automated -Perl script for downloading and formatting puzzles. It -requires the program 'wget' which can be found at -ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/ -(This site is sometimes hard to reach. Keep trying. Or -contact me for alternatives.) - -Now, the script, which will require local site modification: ---------------- -#!/usr/bin/perl - -chdir("/usr/games/crossword"); -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); - -# NY Times - - $mpart = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mon]; - if ($mday lt 10){$puzzle = $mpart."0".$mday.$year;} - else {$puzzle = $mpart.$mday.$year;} - system("/usr/bin/wget --http-user=myname --http-passwd=secret http://www.nytimes.com/partners/xword/$puzzle.puz"); - if ($wday ne 0) {system("./nytconv $puzzle.puz >$puzzle.tex");} - else {system("./nytsconv $puzzle.puz >$puzzle.tex");} - system("/usr/bin/latex $puzzle"); - if ($wday ne 0) {system("/usr/bin/dvips -x 1400 $puzzle");} - else {system("/usr/bin/dvips -x 1100 $puzzle");} - system("/usr/bin/psnup -l -2 -pletter $puzzle.ps $puzzle.wps"); - system("echo \"quit\" >>$puzzle.wps"); - system("/usr/bin/gs -q -sDEVICE=laserjet -r300 -dQUIET -dNOPAUSE -sOutputFile=$puzzle.lj $puzzle.wps "); - system("gzip -9 -f $puzzle.lj"); - system("/bin/rm *dvi *ps *log *aux *tex"); - -# USA Today - -if ($wday ne 6 && $wday ne 0) { # no weekend puzzles - $month = $mon + 1; - if ($month lt 10) {$directory = $year."0".$month;} - else {$directory = $year.$month;} - if ($mday lt 10){$puzzle = "ut".$directory."0".$mday;} - else {$puzzle = "ut".$directory.$mday;} - system("/usr/bin/wget http://www.usatoday.com/life/puzzles/$directory/$puzzle.puz"); - system("./usa-acl $puzzle.puz $puzzle.txt"); - system("./usaconv $puzzle.txt >$puzzle.tex"); - system("/usr/bin/latex $puzzle"); - system("/usr/bin/dvips -x 1400 $puzzle"); - system("/usr/bin/psnup -l -2 -pletter $puzzle.ps $puzzle.wps"); - system("echo \"quit\" >>$puzzle.wps"); - system("/usr/bin/gs -q -sDEVICE=laserjet -r300 -dQUIET -dNOPAUSE -sOutputFile=$puzzle.lj $puzzle.wps "); - system("gzip -9 -f $puzzle.lj"); - system("/bin/rm *dvi *ps *log *aux *tex *txt"); -} - -exit; --------------- - -For any questions, bug reports, or especially improvements, please -contact me: - -bnewell@btigate.com -http://www.btigate.com/~bnewell - - -Bob Newell -Bismarck, North Dakota -28 November, 1996 - - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytconv.c b/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytconv.c deleted file mode 100644 index 2956d29b345..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytconv.c +++ /dev/null @@ -1,202 +0,0 @@ - -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#define ROWSIZE 256 - -FILE *infile; -int width, height, j, k, ccount, mcount, anum, dnum; -int apos, dpos; - -char inbuf[ROWSIZE]; - -/* Here is a lazy programmer's waste of space. */ -char aspace[ROWSIZE][ROWSIZE]; -char dspace[ROWSIZE][ROWSIZE]; - -char rowtext[10*ROWSIZE]; -char tmp[ROWSIZE]; - -char title[80]; -char author[80]; -char copyright[80]; -char matrix[ROWSIZE*ROWSIZE*10]; -char aclues[ROWSIZE*15*16]; -char dclues[ROWSIZE*15*16]; - -void fgetaline(char *, FILE *); - -void main(int argc, char *argv[]) -{ - -/* Open the puzzle file. */ - if (argc < 2) { - printf("Usage: Acl2TeX <puzzle file>\n"); - exit(1); - } - infile = fopen(argv[1], "rb"); - if (infile == NULL) { - printf("Error opening %s.\n"); - exit(1); - } - -/* From here on we're assuming a non-corrupt puzzle file. - An enhancement later could be to check for this. */ - -/* Read in the puzzle size, skipping the stuff - we don't understand. */ - fread(inbuf, 46, 1, infile); - width = (int)(inbuf[44]); - height = (int)(inbuf[45]); - -/* Read in the solution, assuming(!) it is not scrambled. - This may be a bad idea but we do it anyhow. */ - fread(inbuf, 6, 1, infile); /* more basura */ - for (j=0; j<height; j++) fread(&aspace[j][0], width, 1, infile); - -/* Read in the diagram info separately. It's safer to use - this to deduce the numbering scheme. */ - for (j=0; j<height; j++) fread(&dspace[j][0], width, 1, infile); - - /* Now start to separate some of the text headers. */ - apos=dpos=0; - fgetaline(title, infile); - fgetaline(author, infile); - fgetaline(copyright, infile); - -/* Now we are ready to produce the LaTeX stuff for the - puzzle diagram. Again we are assuming we have an unscrambled - solution. How can we know this? Put on TODO list. */ - -/* We write to standard out. Lazy but effective. */ - - printf("\\documentclass{article}\n"); - printf("\\usepackage{cwpuzzle}\n"); - printf("\\title{%s}\n", title); - printf("\\author{%s}\n", author); - printf("\\date{%s}\n", copyright); - printf("\\voffset -1in\n"); - printf("\\hoffset -1in\n"); - printf("\\begin{document}\n"); - - ccount = 0; - mcount = 0; - - for (j=0; j<height; j++) { - strcpy(rowtext,"\0"); - for (k=0; k<width; k++) { - /* Analyze position for across-number */ - /* Left edge non-black followed by non-black */ - anum = 0; - if ( (k==0 && dspace[j][k]=='-' && dspace[j][k+1]=='-') || - /* Previous black - nonblack - nonblack */ - ( (k+1)<width && (k-1)>=0 && dspace[j][k]=='-' - && dspace[j][k-1]=='.' - && dspace[j][k+1]=='-' ) - ){ - ccount++; - anum = ccount; - } - /* Analyze position for down-number */ - dnum = 0; - /* Top row non-black followed by non-black */ - if ( (j==0 && dspace[j][k]=='-' && dspace[j+1][k]=='-') || - /* Black above - nonblack - nonblack below */ - ( (j-1)>=0 && (j+1)<height && dspace[j][k]=='-' - && dspace[j-1][k]=='.' - && dspace[j+1][k]=='-' ) - ){ - /* Don't double number the same space */ - if (anum == 0) ccount++; - dnum = ccount; - } - /* Now, if necessary, pick up some clues and save them. */ - if (anum != 0) { - fgetaline(tmp, infile); - sprintf(&aclues[apos], "\\Clue{%d}{}{%s}\\\\\n", - anum, tmp); - apos = strlen(aclues); - } - if (dnum != 0) { - fgetaline(tmp, infile); - sprintf(&dclues[dpos], "\\Clue{%d}{}{%s}\\\\\n", - dnum, tmp); - dpos = strlen(dclues); - } - /* Concat the current info to the current row. */ - strcat(rowtext, "|"); - if (dspace[j][k] == '.') strcat(rowtext, "*"); - else { - /* see if we need a grid number */ - if (dnum != 0) { - sprintf(tmp, "[%d]", dnum); - strcat(rowtext, tmp); - } - else if (anum != 0) { - sprintf(tmp, "[%d]", anum); - strcat(rowtext, tmp); - } - /* Put in solution letter */ - strncat(rowtext, &aspace[j][k], 1); - } - } - /* End of the row. Put in marker and output it. */ - strcat(rowtext, "|."); - sprintf(&matrix[mcount], "%s\n", rowtext); - mcount = strlen(matrix); - } - /* That's it for the puzzle. */ - - /* Now output the clue section */ - printf("\\begin{PuzzleClues}{\\textbf{Across}}\\\\\n"); - printf("%s", aclues); - printf("\\end{PuzzleClues}\n"); - printf("\\begin{PuzzleClues}{\\textbf{Down}}\\\\\n"); - printf("%s", dclues); - printf("\\end{PuzzleClues}\n"); - - /* Now output the diagram */ - printf("\\newpage\n"); - printf("\\maketitle\n"); - printf("\\begin{Puzzle}{%d}{%d}\n", width, height); - printf("%s", matrix); - printf("\\end{Puzzle}\n"); - - - printf("\\end{document}\n"); - - exit(0); - -} - - void fgetaline(char *foo, FILE *infile) { - unsigned char i; - int oe; - oe = 0; - strcpy(foo, "\0"); - while (1) { - fread(&i, 1, 1, infile); - if (feof(infile) || (i=='\0')) break; - if (i == 169) { - strcat(foo, "\\copyright "); - } - else { - if (i == '_' || i == '&' || i == '#' || i== '$') strcat(foo, "\\"); - if (i == '"') { - if ( oe == 0) { - oe = 1; - strcat(foo, "``"); - } - else { - oe = 0; - strcat(foo, "''"); - } - } - else strncat(foo, &i, 1); - } - } - } - - - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytsconv.c b/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytsconv.c deleted file mode 100644 index 77e478f6840..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/nytsconv.c +++ /dev/null @@ -1,209 +0,0 @@ - -/* ACL to LaTeX conversion suitable for Sunday NY Times */ - -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#define ROWSIZE 256 - -FILE *infile; -int width, height, j, k, ccount, mcount, anum, dnum; -int apos, dpos; - -char inbuf[ROWSIZE]; - -/* Here is a lazy programmer's waste of space. */ -char aspace[ROWSIZE][ROWSIZE]; -char dspace[ROWSIZE][ROWSIZE]; - -char rowtext[10*ROWSIZE]; -char tmp[ROWSIZE]; - -char title[80]; -char author[80]; -char copyright[80]; -char matrix[ROWSIZE*ROWSIZE*10]; -char aclues[ROWSIZE*15*16]; -char dclues[ROWSIZE*15*16]; - -void fgetaline(char *, FILE *); - -void main(int argc, char *argv[]) -{ - -/* Open the puzzle file. */ - if (argc < 2) { - printf("Usage: Acl2TeX <puzzle file>\n"); - exit(1); - } - infile = fopen(argv[1], "rb"); - if (infile == NULL) { - printf("Error opening %s.\n"); - exit(1); - } - -/* From here on we're assuming a non-corrupt puzzle file. - An enhancement later could be to check for this. */ - -/* Read in the puzzle size, skipping the stuff - we don't understand. */ - fread(inbuf, 46, 1, infile); - width = (int)(inbuf[44]); - height = (int)(inbuf[45]); - -/* Read in the solution, assuming(!) it is not scrambled. - This may be a bad idea but we do it anyhow. */ - fread(inbuf, 6, 1, infile); /* more basura */ - for (j=0; j<height; j++) fread(&aspace[j][0], width, 1, infile); - -/* Read in the diagram info separately. It's safer to use - this to deduce the numbering scheme. */ - for (j=0; j<height; j++) fread(&dspace[j][0], width, 1, infile); - - /* Now start to separate some of the text headers. */ - apos=dpos=0; - fgetaline(title, infile); - fgetaline(author, infile); - fgetaline(copyright, infile); - -/* Now we are ready to produce the LaTeX stuff for the - puzzle diagram. Again we are assuming we have an unscrambled - solution. How can we know this? Put on TODO list. */ - -/* We write to standard out. Lazy but effective. */ - - printf("\\documentclass{article}\n"); - printf("\\usepackage{cwpuzzle,multicol}\n"); - printf("\\title{%s}\n", title); - printf("\\author{%s}\n", author); - printf("\\date{%s}\n", copyright); - printf("\\voffset -1in\n"); - printf("\\hoffset -1in\n"); - printf("\\textwidth 6.5in\n"); - printf("\\marginparwidth 0in\n"); - printf("\\textheight 9.5in\n"); - printf("\\begin{document}\n"); - printf("{\\small\n"); - printf("\\begin{multicols}{5}\n"); - printf("\\raggedright\n"); - - ccount = 0; - mcount = 0; - - for (j=0; j<height; j++) { - strcpy(rowtext,"\0"); - for (k=0; k<width; k++) { - /* Analyze position for across-number */ - /* Left edge non-black followed by non-black */ - anum = 0; - if ( (k==0 && dspace[j][k]=='-' && dspace[j][k+1]=='-') || - /* Previous black - nonblack - nonblack */ - ( (k+1)<width && (k-1)>=0 && dspace[j][k]=='-' - && dspace[j][k-1]=='.' - && dspace[j][k+1]=='-' ) - ){ - ccount++; - anum = ccount; - } - /* Analyze position for down-number */ - dnum = 0; - /* Top row non-black followed by non-black */ - if ( (j==0 && dspace[j][k]=='-' && dspace[j+1][k]=='-') || - /* Black above - nonblack - nonblack below */ - ( (j-1)>=0 && (j+1)<height && dspace[j][k]=='-' - && dspace[j-1][k]=='.' - && dspace[j+1][k]=='-' ) - ){ - /* Don't double number the same space */ - if (anum == 0) ccount++; - dnum = ccount; - } - /* Now, if necessary, pick up some clues and save them. */ - if (anum != 0) { - fgetaline(tmp, infile); - sprintf(&aclues[apos], "{\\bf %d} %s\\\\\n", - anum, tmp); - apos = strlen(aclues); - } - if (dnum != 0) { - fgetaline(tmp, infile); - sprintf(&dclues[dpos], "{\\bf %d} %s\\\\\n", - dnum, tmp); - dpos = strlen(dclues); - } - /* Concat the current info to the current row. */ - strcat(rowtext, "|"); - if (dspace[j][k] == '.') strcat(rowtext, "*"); - else { - /* see if we need a grid number */ - if (dnum != 0) { - sprintf(tmp, "[%d]", dnum); - strcat(rowtext, tmp); - } - else if (anum != 0) { - sprintf(tmp, "[%d]", anum); - strcat(rowtext, tmp); - } - /* Put in solution letter */ - strncat(rowtext, &aspace[j][k], 1); - } - } - /* End of the row. Put in marker and output it. */ - strcat(rowtext, "|."); - sprintf(&matrix[mcount], "%s\n", rowtext); - mcount = strlen(matrix); - } - /* That's it for the puzzle. */ - - /* Now output the clue section */ - printf("{\\bf ACROSS}\\\\\n"); - printf("%s", aclues); - printf("{\\bf DOWN}\\\\\n"); - printf("%s", dclues); - printf("\\end{multicols}\n"); - printf("}\n"); - - /* Now output the diagram */ - printf("\\newpage\n"); - printf("\\maketitle\n"); - printf("\\begin{Puzzle}{%d}{%d}\n", width, height); - printf("%s", matrix); - printf("\\end{Puzzle}\n"); - - printf("\\end{document}\n"); - - exit(0); - -} - - void fgetaline(char *foo, FILE *infile) { - unsigned char i; - int oe; - oe = 0; - strcpy(foo, "\0"); - while (1) { - fread(&i, 1, 1, infile); - if (feof(infile) || (i=='\0')) break; - if (i == 169) { - strcat(foo, "\\copyright "); - } - else { - if (i == '_' || i == '&' || i == '#' || i == '$') strcat(foo, "\\"); - if (i == '"') { - if ( oe == 0) { - oe = 1; - strcat(foo, "``"); - } - else { - oe = 0; - strcat(foo, "''"); - } - } - else strncat(foo, &i, 1); - } - } - } - - - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/usaconv.c b/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/usaconv.c deleted file mode 100644 index 9f8433d4fd3..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/AcrossLite/usaconv.c +++ /dev/null @@ -1,229 +0,0 @@ - -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#define ROWSIZE 256 - -FILE *infile; -int width, height, j, k, ccount, mcount, anum, dnum; -int apos, dpos; -int acount, dcount; - -char inbuf[ROWSIZE]; - -/* Here is a lazy programmer's waste of space. */ -char aspace[ROWSIZE][ROWSIZE]; -char dspace[ROWSIZE][ROWSIZE]; - -char rowtext[10*ROWSIZE]; -char tmp[ROWSIZE]; - -char title[80]; -char author[80]; -char copyright[80]; -char matrix[ROWSIZE*ROWSIZE*10]; -char actext[ROWSIZE][80]; -char dctext[ROWSIZE][80]; -char aclues[ROWSIZE*15*16]; -char dclues[ROWSIZE*15*16]; - -void fgetsa(char *, int, FILE *); - -void main(int argc, char *argv[]) -{ - -/* Open the puzzle file. */ - if (argc < 2) { - printf("Usage: usaconv <puzzle file>\n"); - exit(1); - } - infile = fopen(argv[1], "r"); - if (infile == NULL) { - printf("Error opening %s.\n"); - exit(1); - } - -/* From here on we're assuming a non-corrupt puzzle file. - An enhancement later could be to check for this. */ - -/* start reading stuff in */ - fgetsa(inbuf, 80, infile); /*<ACROSS PUZZLE>*/ - fgetsa(inbuf, 80, infile); /*<TITLE>*/ - fgetsa(title, 80, infile); - fgetsa(inbuf, 80, infile); /*<AUTHOR>*/ - fgetsa(author, 80, infile); - fgetsa(inbuf, 80, infile); /*<COPYRIGHT>*/ - fgetsa(copyright,80, infile); - fgetsa(inbuf, 80, infile); /*<SIZE>*/ - - fgetsa(inbuf, 80, infile); - height = width = 0 ; /* we calculate instead */ - - fgetsa(inbuf, 80, infile); /*<GRID>*/ - -/* Read in the first line of the solution/diagram and determine width */ - fgetsa(&aspace[height][0], 80, infile); - width = strlen(&aspace[height][0]); - height++; - while (1) { - fgetsa(&aspace[height][0], 80, infile); - if(strcmp(&aspace[height][0],"<ACROSS>")==0) goto didit; - height++; - } -didit: - /* Read and save across and down clues */ - - apos=dpos=0; - while(1) { - fgetsa(&actext[apos][0], 80, infile); - if(strcmp(&actext[apos][0],"<DOWN>")==0)goto dida; - apos++; - } -dida: - while(1) { - fgetsa(&dctext[dpos][0], 80, infile); - if(feof(infile)) goto didd; - dpos++; - } -didd: - apos=dpos=0; - -/* Now we are ready to produce the LaTeX stuff for the - puzzle diagram. Again we are assuming we have an unscrambled - solution. How can we know this? Put on TODO list. */ - -/* We write to standard out. Lazy but effective. */ - - printf("\\documentclass{article}\n"); - printf("\\usepackage{cwpuzzle}\n"); - printf("\\title{%s}\n", title); - printf("\\author{%s}\n", author); - printf("\\date{%s}\n", copyright); - printf("\\voffset -1in\n"); - printf("\\hoffset -1in\n"); - printf("\\begin{document}\n"); - - ccount = 0; - mcount = 0; - acount = dcount = 0; - - for (j=0; j<height; j++) { - strcpy(rowtext,"\0"); - for (k=0; k<width; k++) { - /* Analyze position for across-number */ - /* Left edge non-black followed by non-black */ - anum = 0; - if ( (k==0 && aspace[j][k]!='.' && aspace[j][k+1]!='.') || - /* Previous black - nonblack - nonblack */ - ( (k+1)<width && (k-1)>=0 && aspace[j][k]!='.' - && aspace[j][k-1]=='.' - && aspace[j][k+1]!='.' ) - ){ - ccount++; - anum = ccount; - } - /* Analyze position for down-number */ - dnum = 0; - /* Top row non-black followed by non-black */ - if ( (j==0 && aspace[j][k]!='.' && aspace[j+1][k]!='.') || - /* Black above - nonblack - nonblack below */ - ( (j-1)>=0 && (j+1)<height && aspace[j][k]!='.' - && aspace[j-1][k]=='.' - && aspace[j+1][k]!='.' ) - ){ - /* Don't double number the same space */ - if (anum == 0) ccount++; - dnum = ccount; - } - /* Now, if necessary, assign some clues and save them. */ - if (anum != 0) { - sprintf(&aclues[apos], "\\Clue{%d}{}{%s}\\\\\n", - anum, actext[acount]); - acount++; - apos = strlen(aclues); - } - if (dnum != 0) { - sprintf(&dclues[dpos], "\\Clue{%d}{}{%s}\\\\\n", - dnum, dctext[dcount]); - dcount++; - dpos = strlen(dclues); - } - /* Concat the current info to the current row. */ - strcat(rowtext, "|"); - if (aspace[j][k] == '.') strcat(rowtext, "*"); - else { - /* see if we need a grid number */ - if (dnum != 0) { - sprintf(tmp, "[%d]", dnum); - strcat(rowtext, tmp); - } - else if (anum != 0) { - sprintf(tmp, "[%d]", anum); - strcat(rowtext, tmp); - } - /* Put in solution letter */ -/* this is for real */ if (aspace[j][k]== '&') strncat(rowtext, "\\", 1); - strncat(rowtext, &aspace[j][k], 1); - } - } - /* End of the row. Put in marker and output it. */ - strcat(rowtext, "|."); - sprintf(&matrix[mcount], "%s\n", rowtext); - mcount = strlen(matrix); - } - /* That's it for the puzzle. */ - - /* Now output the clue section */ - printf("\\begin{PuzzleClues}{\\textbf{Across}}\\\\\n"); - for (j=0; j<strlen(aclues); j++){ - printf("%c",aclues[j]); - } - printf("\\end{PuzzleClues}\n"); - printf("\\begin{PuzzleClues}{\\textbf{Down}}\\\\\n"); - for (j=0; j<strlen(dclues); j++){ - printf("%c",dclues[j]); - } - printf("\\end{PuzzleClues}\n"); - - /* Now output the diagram */ - printf("\\newpage\n"); - printf("\\maketitle\n"); - printf("\\begin{Puzzle}{%d}{%d}\n", width, height); - printf("%s", matrix); - printf("\\end{Puzzle}\n"); - - - printf("\\end{document}\n"); - - exit(0); - -} - - void fgetsa(char *foo, int size, FILE *infile) { - int i, oe; - fgets(tmp, size, infile); - tmp[strlen(tmp)-1] = '\0'; - strcpy(foo, "\0"); - oe = 0; - for (i=0; i<strlen(tmp); i++) { - if (tmp[i]=='$' || tmp[i] == '_' || tmp[i] =='&' || tmp[i] == '#') strcat(foo, "\\"); - if (tmp[i] == '"') { - if (oe == 0) { - oe = 1; - strcat(foo, "``"); - } - else { - oe = 0; - strcat(foo, "''"); - } - } - else strncat(foo, &tmp[i], 1); - } - } - - - - - - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/Makefile b/Master/texmf-dist/source/latex/cwpuzzle/Makefile deleted file mode 100644 index eafb1b58dde..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -#****************************************************************************** -#* $Id: Makefile,v 1.1 1996/11/25 21:20:35 gerd Exp gerd $ -#****************************************************************************** -#* Author: Gerd Neugebauer -#*============================================================================= - -INSTALLDIR = /usr/local/lib/texmf/tex/latex/cwpuzzle - -FILES = cwpuzzle.dtx \ - cwpuzzle.ins \ - Makefile - -LATEX = latex -MAKEINDEX = makeindex -RM = rm -f -INSTALL = install -MKDIR = mkdir - -#*============================================================================= - -all: cwpuzzle.sty cwpuzzle.dvi - -cwpuzzle.sty: cwpuzzle.dtx cwpuzzle.ins - $(RM) cwpuzzle.cls cwpuzzle.sty - $(LATEX) cwpuzzle.ins - -cwpuzzle.dvi: cwpuzzle.dtx cwpuzzle.sty - $(LATEX) cwpuzzle.dtx - $(LATEX) cwpuzzle.dtx - $(MAKEINDEX) -s gind.ist cwpuzzle - $(MAKEINDEX) -s gglo.ist -o cwpuzzle.gls cwpuzzle.glo - $(LATEX) cwpuzzle.dtx - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/README b/Master/texmf-dist/source/latex/cwpuzzle/README deleted file mode 100644 index 9ae8eb43c77..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/README +++ /dev/null @@ -1,73 +0,0 @@ - - cwpuzzle.sty - - - a LaTeX package for typesetting crossword puzzles - - Gerd Neugebauer - - -Since I know only of one additional package for this purpose on CTAN --- named crosswrd.sty -- I will compare it against this package to -show the advantages and disadvantages of both packages. - -I have developed cwpuzzle.sty because I needed to typeset a puzzle -which required more features than those provided by crosswrd. The -feature I was missing was the inclusion of rectangular regions in the -puzzles containing ads or other texts not directly related to the -characters to be filled in. - -I have generalized this requirement by allowing arbitrary rectangles -to be left free. Thus it is possible to typeset puzzles which have no -rectangular border (See the documentation for examples). - -Another idea was to have different types of puzzles generated from the -same source: - -- The classical puzzle contains numbers for the words and clues for - the words to be filled in. - -- The numbered puzzle contains numbers in each cell where identical - numbers represent identical letters. The goal is to find out which - number corresponds to which letter. - -- The fill-in type of puzzle consists of a grid and a list of words. - The goal is to place all words in the grid. - -crosswrd supports the first type of puzzle only. cwpuzzle supports all -of them. - -The input for both packages is completely different. crosswrd assumes -that a user uses this package to develop a puzzle. Thus it is tailored -towards a human user. It checks for consistency and requires -non-redundant input. (As a unpleasant side effect fragile macros used -in clues have to be protected) - -cwpuzzle needs some redundancy in the input for the sake of -flexibility. But it seems quite natural to specify the frame of the -puzzle and the clues separately. Especially for those types where no -clues are needed at all. - -cwpuzzle currently assumes that words are terminated by a black block -(or the border of the puzzle). crosswrd also supports also the variant -where words are terminated by a thicker border. This might also be -incorporated into a future release of cwpuzzle. - -In cwpuzzle it is also possible to specify whether the crossword -puzzle or it's solution should be produced (from the same -source). Thus it is possible to include the puzzle in one issue of a -journal and the solution into another, or to typeset the solution -several pages after the puzzle. - -cwpuzzle provides a larger number of options and hooks which can be -used to customize the result. E.g it is possible to modify the size of -the boxes or the fonts used as well as the appearance of graphical -elements like the black blocks. - - -cwpuzzle is located in the CTAN directory - - tex-archive/macros/latex/other/gene/crossword - -run tex on cwpuzzle.ins to produce the package and latex on -cwpuzzle.dtx to get the documentation (or the Makefile to do both). - diff --git a/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.dtx b/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.dtx deleted file mode 100644 index 6148bba617f..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.dtx +++ /dev/null @@ -1,1077 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% $Id: cwpuzzle.dtx,v 1.4 1996/11/25 21:20:35 gerd Exp gerd $ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\DTK@RCS$#1: #2 #3${#2} -\def\filename{cwpuzzle.dtx} -\xdef\fileversion{\DTK@RCS$Revision: 1.4 $} -\xdef\filedate{\DTK@RCS$Date: 1996/11/25 21:20:35 $} -\let\docversion=\fileversion -\let\docdate=\filedate -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\iffalse -\typeout{% -%% Purpose: - Package: cwpuzzle \filedate\space\fileversion\space - for typesetting crossword puzzles. -}% -%% -%% Documentation: -%% The documentation can be generated from the original file -%% cwpuzzle.dtx with the doc style/package. LaTeX the file -%% cwpuzzle.dtx to get the full documentation in dvi format. -%% -%% -%% Author: Gerd Neugebauer -%% Mainzer Str. 8 -%% 56321 Rhens -%% Mail: gerd@informatik.uni-koblenz.de -%% -%% Copyright (C) 1996 Gerd Neugebauer -%% -%% cwpuzzle.dtx is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY. No author or distributor accepts -%% responsibility to anyone for the consequences of using it or for -%% whether it serves any particular purpose or works at all, unless -%% he says so in writing. -%% -%% Everyone is granted permission to copy, modify and redistribute -%% dtk.dtx, provided this copyright notice is preserved and any -%% modifications are indicated. -%% -%% -%% This style is still under development and may be replaced with a -%% new version which provides an enhanced functionality. -%% -%<*driver> -\documentclass{ltxdoc} -\usepackage{cwpuzzle} -\EnableCrossrefs -\CodelineIndex -\RecordChanges -\setcounter{IndexColumns}2 -\begin{document} - \DocInput{cwpuzzle.dtx} - \newpage - \PrintChanges -\end{document} -%</driver> -%\fi -% -% \title{A \LaTeX\ Package for Typesetting\\ Crossword -% Puzzles\thanks{This file documents \filename\ version -% \fileversion\ as of \filedate.}} -% \author{Gerd Neugebauer\\ -% Mainzer Stra\ss{}e 8\\ -% 56321 Rhens (Germany)\\ -% Net: {\tt gerd@informatik.uni-koblenz.de}} -% -% \date{{\footnotesize Documentation date: \docdate}} -% -% \maketitle -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \DoNotIndex{\ ,\",\',\.,\[,\\,\],\^,\`,\~,\@,\@dottedtocline} -% \DoNotIndex{\@empty,\@nameuse,\advance,\begin,\begingroup} -% \DoNotIndex{\catcode,\def,\else,\end,\endgroup,\fi,\filedate} -% \DoNotIndex{\footnotesize,\framebox,\gdef,\hfill,\if,\ifx,\let,\makebox} -% \DoNotIndex{\mbox,\newcommand,\newcount,\newdimen,\newenvironment} -% \DoNotIndex{\newif,\noindent,\normalsize,\null,\par,\put} -% \DoNotIndex{\relax,\rm,\rule,\scriptsize,\sf,\textsf,\textwidth} -% \DoNotIndex{\the,\unitlength,\uppercase,\xdef,\ProvidesPackage} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \changes{1.3}{1996/10/28}{First public release.} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \CheckSum{284} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \MakeShortVerb{|} -% -% \begin{abstract} -% cpwuzzle.dtx provides a package to typeset crossword -% puzzles. There is an graphical user interface written in -% Tcl/Tk which does most of the work in creating a file which is -% conform with this style. Thus it is clear that the macros -% provided are not tailored towards a human user. -% -% The package can be used to produce several types of puzzles like -% the classical crossword puzzle, a number puzzle, and fill-in -% puzzles. -% \end{abstract} -% -% \tableofcontents -% \newpage -% -% \section{About Crossword Puzzles} -% -% Crossword puzzles are can be a an amusing but also a challenging -% hobby. Unfortunately at the time of this writing I am not aware -% of any good package to typeset crossword puzzles with \LaTeX. -% Thus I decided to make one which at least fits my needs. -% -% There are several types of crossword puzzles aroung. This -% package can only be used to typeset several of them. The basic -% assumption in this package is that puzzles are rectangular -% arragnements of boxes. Some of these boxes are black and others -% are prepared to take single letters. -% Each word in the grid is enclosed in black boxes or the outside. -% -% Optionally there may be rectangular regions left blank inside the -% puzzle. They can be used to place ads or other informative texts -% inside the puzzle. -% -% \subsection{Classical Crossword Puzzles}\label{sec:classical} -% -% \PuzzleUnsolved -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |[1]E|X |* |. -% |[2]A|[3]S|T |* |[4]T|. -% |* |[5]P|A |R |T |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \begin{PuzzleClues}{Across}% -% \Clue{1}{EX}{unit of measure}% -% \Clue{2}{AST}{\(\ast\)}% -% \Clue{5}{PART}{sectioning unit}% -% \end{PuzzleClues}% -% \begin{PuzzleClues}{Down}% -% \Clue{1}{ETA}{\(\eta\)}% -% \Clue{3}{SP}{unit of measure}% -% \Clue{4}{TT}{nonproportional font}% -% \end{PuzzleClues}% -% \end{minipage}\medskip -% -% The ``classical'' type of a crossword puzzle words are marked -% with numbers and each word is acomapanied with a clue which -% should help (or confuse) the reader. Those clues are listed after -% the frame of the puzzle. -% -% \subsection{Number Crossword Puzzles}\label{sec:numbered} -% -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |[6]E|[1]X|* |. -% |[5]A|[2]S|[7]T|* |[7]T|. -% |* |[4]P|[5]A|[3]R|[7]T|. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \PuzzleLetters{AEPRSTX}\medskip\par -% \PuzzleNumbers{XSRPAET}% -% \end{minipage}\medskip -% -% The ``number puzzle'' variant contains only numbers instead of -% letters. Different numbers denote different letters. There are no -% clues. The reader is assumed to find a complete list of letters -% by filling appropriate words into the grid. Sometimes a word is -% already entered into the grid to ease the start. -% -% \subsection{Fill-In Crossword Puzzles}\label{sec:fill-in} -% -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |E |X |* |. -% |A |S |T |* |T |. -% |* |P |A |R |T |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \begin{PuzzleWords}{2} -% \Word{EX}% -% \Word{SP}% -% \Word{TT}% -% \end{PuzzleWords}% -% \begin{PuzzleWords}{3} -% \Word{AST}% -% \Word{ETA}% -% \end{PuzzleWords}% -% \begin{PuzzleWords}{4} -% \Word{PART}% -% \end{PuzzleWords}% -% \end{minipage}\medskip -% -% The ``fill-in puzzle'' variant consists of a frame containing -% only black and white boxes. Additionally a list of words is given -% which have to be put into the frame until none is left and the -% frame is completed. -% -% \subsection{Solutions} -% -% \PuzzleSolution -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |[1]E|X |* |. -% |[2]A|[3]S|T |* |[4]T|. -% |* |[5]P|A |R |T |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \end{minipage}\medskip -% -% Often it is not only desirable to typeset the unsolved crossword -% puzzle but also the solution. This means that all the letters -% have to be filled in. This should be possible with the same -% source as the questions to avoid typos or redundancies leading to -% additional work. -% -% Several variants of solutions come to mind. Primarily the -% solution should show the letters and suppress any clues. One -% major distinction is also wether or not the numbers of the words -% should be shown in the solution as well.\medskip -% -% \noindent% -% \PuzzleSolution[true]% -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |[1]E|X |* |. -% |[2]A|[3]S|T |* |[4]T|. -% |* |[5]P|A |R |T |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \end{minipage}% -% -% Finally there are the lists of letters in numbered puzzles. In -% the solution they will show the letters in them as well.\medskip -% -% \noindent% -% \PuzzleSolution[false]% -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{3}% -% |* |* |[6]E|[1]X|* |. -% |[5]A|[2]S|[7]T|* |[7]T|. -% |* |[4]P|[5]A|[3]R|[7]T|. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \PuzzleLetters{AEPRSTX}\medskip\par -% \PuzzleNumbers{XSRPAET}% -% \end{minipage} -% -% -% \section{Input of Crossword Puzzles} -% -% The basic idea behind this package is that a crossword puzzle is -% specified in a seperate file. The actual appearance of the puzzle -% is controlled by several options. Thus it should be possible to -% produce the unsolved and the solved puzzle from the same -% source. Before we describe the various options we will have a -% look at the basic environments and macros used to specified a -% crossword puzzle. -% -% \DescribeEnv{Puzzle}% -% This package provides the environment |Puzzle| which typesets the -% frame of a crossword puzzle. This environment takes two -% arguments. These arguments are the number of columns and the -% number of the rows of the puzzle. This means that essentially -% only rectangular puzzles can be typeset. -% -% The example from section~\ref{sec:classical} has been entered as -% follows: -% \begin{verbatim} -% \begin{Puzzle}{5}{3}% -% |* |* |[1]E|X |* |. -% |[2]A|[3]S|T |* |[4]T|. -% |* |[5]P|A |R |T |. -% \end{Puzzle} -% \end{verbatim} -% In this example we can see that inside the |Puzzle| environment -% there is one special character. This is the bar \verb/|/. This -% bar is an activge character in \TeX. Thus you can think of it -% like a macro. -% -% The \verb/|/ macro takes two arguments. The first argument is -% optional, i.e. enclosed in brackets if present. This optional -% argument denotes the number for numbered boxes. -% -% The second argument is either empty |{}| or it consists of a -% single character. This argument describes the action to be -% performed. -% -% \begin{itemize} -% \item If this argument is a letter then it is simply shown -% in the solution and suppressed in the unsolved crossword puzzle. -% -% \item If this argument is an asterisk |*| then a black box is -% produced. -% -% \item If this argument is a dot |.| then this marks the end of -% the current row. The next box is typeset at the beginning of the -% following row. -% -% \item If this argument is empty |{}| then a white box is -% typeset. This box does not contain a letter, nor does it have a -% frame. This macro can be used to leave room for larger boxed with -% ads. Alternatively this can be used to disable certain boxes to -% make a non-rectangular crossword puzzle. -% \end{itemize} -% -% \begin{verbatim} -% \begin{Puzzle}{5}{5} -% |{} |{} |[1]S|. -% |{} |[2]M|I |[3]D|. -% |[4]T|I |M |E |S |. -% |{} |[5]N|E |G |. -% |{} |{} |Q |. -% \end{Puzzle} -% \end{verbatim} -% \PuzzleUnsolved -% \begin{minipage}{.35\textwidth}% -% \begin{Puzzle}{5}{5}% -% |{} |{} |[1]S|. -% |{} |[2]M|I |[3]D|. -% |[4]T|I |M |E |S |. -% |{} |[5]N|E |G |. -% |{} |{} |Q |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \begin{PuzzleClues}{\textbf{Across: }}% -% \Clue{2}{MID}{\(\mid\)}% -% \Clue{4}{TIMES}{\(\times\)}% -% \Clue{5}{NEG}{\(\neg\)}% -% \end{PuzzleClues}% -% \begin{PuzzleClues}{\textbf{Down: }}% -% \Clue{1}{SIMEQ}{\(\simeq\)}% -% \Clue{2}{MIN}{loglike function}% -% \Clue{3}{DEG}{loglike function}% -% \end{PuzzleClues}% -% \end{minipage}% -% -% Note that whitespace is ignored after the arguments but not -% between the bar and the arguments. -% -% \DescribeMacro{\Frame} -% The macro |\Frame| can be used to typeset ads or other text into -% larger boxes inside the frame of the crossword puzzle. For this -% purpose five arguments are required. The first two arguments are -% used to specify the leower left corner of the frame. The lower -% left corner has the coordinates 0,0 and the numbers increase -% upwards and to the right. -% -% The third argument is the width of the frame and the fourth -% argument is the height of the frame measured in number of boxes. -% Finally, the fifth argument contains the text to be typeset. Per -% default it is typeset in a minipage of the appropriate width -% centered horizontally and vertically. -% -% \begin{verbatim} -% \begin{Puzzle}{8}{6} -% \Frame{2}{2}{4}{2}{\sf Crossword\\Puzzle} -% |[1]E|* |[2]N |U |L |[3]L |* |[4]V|. -% |[5]T|[6]R|I |A |N |G |[7]L|E |. -% |A |U |{} |{} |{} |{} |[8]C|C |. -% |* |L |{} |{} |{} |{} |E |* |. -% |[9]B|E |T |[10]A|* |[11]L|I |M |. -% |F |* |[12]L|A |B |E |L |* |. -% \end{Puzzle} -% \end{verbatim} -% -% \PuzzleUnsolved\noindent -% \begin{minipage}{.5\textwidth}\PuzzleUnitlength=18pt -% \begin{Puzzle}{8}{6}% -% \Frame{2}{2}{4}{2}{\sf Crossword\\Puzzle}% -% |[1]E|* |[2]N|U|L|[3]L|* |[4]V|. -% |[5]T|[6]R|I|A|N|G|[7]L|E|. -% |A|U|{}|{}|{}|{}|[8]C|C|. -% |* |L|{}|{}|{}|{}|E|* |. -% |[9]B|E|T|[10]A|* |[11]L|I|M|. -% |F|* |[12]L|A|B|E|L|* |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.47\textwidth} -% \begin{PuzzleClues}{\textbf{Across: }}% -% \Clue{2}{NULL}{empty}% -% \Clue{5}{TRIANGLE}{\(\triangle\)}% -% \Clue{8}{CC}{carbon copy (letter.sty)}% -% \Clue{9}{BETA}{\(\beta\)}% -% \Clue{11}{LIM}{limes}% -% \Clue{12}{LABEL}{mark it}% -% \end{PuzzleClues}% -% \begin{PuzzleClues}{\textbf{Down: }}% -% \Clue{1}{ETA}{\(\eta\)}% -% \Clue{2}{NI}{\(\ni\)}% -% \Clue{3}{LG}{logarithm}% -% \Clue{4}{VEC}{\(\vec{}\)}% -% \Clue{6}{RULE}{black rectangle}% -% \Clue{7}{LCEIL}{\(\lceil\)}% -% \Clue{9}{BF}{bold face}% -% \Clue{10}{AA}{\AA}% -% \Clue{11}{LE}{\(\le\)}% -% \end{PuzzleClues}% -% \end{minipage}% -% -% -% \DescribeEnv{PuzzleClues} -% The clues in the classical crossword puzzle are typeset with the -% use of the environment |PuzzleClues|. This environment takes one -% argument which is typeset before the clues. The environment takes -% roughly the half of the textwidth and make a minipage with this -% width. Thus two invocations of this environment are typeset side -% by side. -% -% Alternatively if the solution is typeset then the environment -% |PuzzleClues| has no effect. -% -% \begin{verbatim} -% \begin{PuzzleClues}{\textbf{Across}}% -% \Clue{1}{EX}{unit of measure}% -% \Clue{2}{AST}{\(\ast\)}% -% \Clue{5}{PART}{sectioning unit}% -% \end{PuzzleClues}% -% \begin{PuzzleClues}{\textbf{Down}}% -% \Clue{1}{ETA}{\(\eta\)}% -% \Clue{3}{SP}{unit of measure}% -% \Clue{4}{TT}{nonproportional font}% -% \end{PuzzleClues}% -% \end{verbatim} -% -% \DescribeMacro{Clue} -% The environment |PuzzleClues| defines one local macro. This macro -% is named |\Clue| and takes three arguments. The first argument is -% the number of the word. This should correspond to the number in -% the puzzle frame. The second argument is the word itself. -% Currently this not used at all. Finally the third argument is the -% clue for the word. -% -% If the unsolved puzzle is typeset then the first and the third -% argument are used. Otherwise all arguments are silently absorbed. -% -% \DescribeMacro{\PuzzleLetters} -% The macro |\PuzzleLetters| can be used to typeset the list of -% used letters in numbered crossword puzzles. It has one argument -% which are the used letters (preferably in alphabethical order. -% -% \DescribeMacro{\PuzzleNumbers} -% The macro |\PuzzleNumbers| can be used to generate a numbered -% list of boxes for the numbered crossword puzzles. The user is -% supposed to collect the found letters here. -% -% \DescribeEnv{PuzzleWords} -% The environment |PuzzleWords| can be sued to typeset the list of -% words for a fill-in puzzle. It takes one argument. This is the -% length of the words listed. For each length there should be an -% invocation of this environment. The words in this environment are -% supposed to be ordered alphabetically. -% -% \DescribeMacro{\Word} -% The macro |\Word| is defined inside the environment -% |PuzzleWords|. It takes one argument which is the word itself. -% -% \begin{verbatim} -% \begin{PuzzleWords}{2} -% \Word{EX}% -% \Word{SP}% -% \Word{TT}% -% \end{PuzzleWords}% -% \begin{PuzzleWords}{3} -% \Word{AST}% -% \Word{ETA}% -% \end{PuzzleWords}% -% \begin{PuzzleWords}{4} -% \Word{PART}% -% \end{PuzzleWords}% -% \end{verbatim} -% -% -% \section{Parameters and Options} -% -% \DescribeMacro{\PuzzleUnitlength} -% The length |\PuzzleUnitlength| deternimes the width and height of -% each single box in the frame of a crossword puzzle. The default -% value is |20pt|. -% -% \DescribeMacro{\PuzzleBlackBox} -% The macro |\PuzzleBlackBox| contains the commands to produce the -% black boxes. It has to produce at most of width and height of -% |\PuzzleUnitlength|. Per default it just produces a black -% rectangle of this size. -% -% The following list shows some variants which can be achieved by -% redefining the macro |\PuzzleBlackBox|.\medskip -% -% \noindent -% \unitlength=\PuzzleUnitlength -% \framebox(1,1){\rule{.75\PuzzleUnitlength}{.75\PuzzleUnitlength}} -% \hfill -% \begin{minipage}{.9\textwidth} -% \begin{verbatim} -% \renewcommand{\PuzzleBlackBox}{\rule{.75\PuzzleUnitlength}% -% {.75\PuzzleUnitlength}} -% \end{verbatim} -% \end{minipage} -% -% \noindent -% \framebox(1,1){\framebox(.75,.75){\framebox(.5,.5){}}} -% \hfill -% \begin{minipage}{.9\textwidth} -% \begin{verbatim} -% \renewcommand{\PuzzleBlackBox}{\framebox(.75,.75){% -% \framebox(.5,.5){}}} -% \end{verbatim} -% \end{minipage} -% -% Additional effects can be achieved by using shades of gray (with -% the |graphics| package). -% -% \DescribeMacro{\PuzzleFont} -% The macro |\PuzzleFont| contains the font changing -% command issued before the frame of the crosword puzzle. -% -% \DescribeMacro{\PuzzleNumberFont} -% The macro |\PuzzleNumberFont| contains the font changing -% command issued before a number in the frame of the crosword -% puzzle is typeset. -% -% \DescribeMacro{\PuzzleClueFont} -% The macro |\PuzzleClueFont| contains the font changing -% command issued before the clues are typeset. -% -% \DescribeMacro{\PuzzleWordsText} -% The macro |\PuzzleWordsText| contains the text which is typeset -% at the beginning of the environment |PuzzleWords|. It has one -% argument which contains the length of the words listed. -% -% \DescribeMacro{\PuzzleLettersText} -% The macro |\PuzzleLettersText| contains the text which is typeset -% at the beginning of the macro |PuzzleLetters|. -% -% \DescribeMacro{\PuzzleSolution} -% The macro |\PuzzleSolution| arranges everything that the -% following puzzles are typeset in the ``solution'' mode, i.e. the -% letters are shown and the clues are suppressed. -% -% This macros has one optional argument which has to be |true| or -% |false|. This argument determines whether or not the numbers -% should also be shown in the solution. The default is |false| -% which means that the numbers are suppressed in the solution. -% -% \DescribeMacro{\PuzzleUnsolved} -% The macro |\PuzzleUnsolved| arranges everything that the -% following puzzles are typeset in the ``unsolved'' mode, i.e. the -% letters are suppressed and the clues are shown. -% -% \DescribeMacro{\PuzzleHook} -% The macro |\PuzzleHook| is called at the end of the |Puzzle| -% environment. It can be used to place additional graphical -% elements in the puzzle frame. -% -% The following example shows a crossword puzzle which we have seen -% before and the definition for the |\PuzzleHook|.\medskip -% -% \PuzzleUnsolved -% \begin{minipage}{.35\textwidth}% -% \newcommand\PuzzleHook{% -% \put(0,2){\line(1,-1){2}} -% \put(0,3){\line(1,1){2}} -% \put(5,2){\line(-1,-1){2}} -% \put(5,3){\line(-1,1){2}} -% } -% \begin{Puzzle}{5}{5}% -% |{} |{} |[1]S|. -% |{} |[2]M|I |[3]D|. -% |[4]T|I |M |E |S |. -% |{} |[5]N|E |G |. -% |{} |{} |Q |. -% \end{Puzzle}% -% \end{minipage}% -% \begin{minipage}{.6\textwidth} -% \begin{verbatim} -% \newcommand\PuzzleHook{ -% \put(0,2){\line(1,-1){2}} -% \put(0,3){\line(1,1){2}} -% \put(5,2){\line(-1,-1){2}} -% \put(5,3){\line(-1,1){2}} -% } -% \end{verbatim} -% \end{minipage} -% -% -% \section{The Related Program} -% -% There is a related program written in Tcl/Tk. This program can be -% used to manually construct crosswrod puzzles and save them in a -% format suitable for this package. Alternativly it can also store -% the crossword puzzle prepared for |crosswrd.sty|. -% -% Other features include the creation of a proper frame and filling -% with words. -% -% Right now I have not prepared a distribution of this program yet -% since this program requires dictionaries which I can not -% distribute legally. -% -% The examples in this documentation have been computed with the -% help of the |cwp| program. -% -% -% \section{Further Plans} -% -% Maybe I will add a mode for further variants of crossword puzzles -% sometimes. -% -% -% -% \StopEventually{} -% \newpage -% -% -% \section{The Implementation} -% -% The crossword puzzle is basically implemented with the \LaTeX{} -% picture environment. This gives us enough flexibility and -% provides an high enough abraction such that we do not have to -% fiddle around with to many low level details. -% -% The natural unit in a crossword puzzle is a box which is empty -% or black. Thus the |unitlength| is set to the width (and height) -% of such a box. -% -% -% \subsection{Basic Definitions and Parameters} -% -% First we identify this package. -% -% \begin{macrocode} -\ProvidesPackage{cwpuzzle}[\filedate gene] -% \end{macrocode} -% -% The dimen register |\PuzzleUnitlength| stores the height and -% width of a box of the puzzle. The default is |20pt| which is -% also shown in this documentation. -% \begin{macrocode} -\newdimen\PuzzleUnitlength -\PuzzleUnitlength=20pt -% \end{macrocode} -% -% \begin{macro}{\PuzzleClueFont} -% -% The macro |\PuzzleClueFont| contains font changings -% commands issued before the clues are typeset. -% \begin{macrocode} -\newcommand\PuzzleClueFont{\footnotesize} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleFont} -% -% The macro |\PuzzleFont| contains font changings -% commands issued before the puzzle is typeset. -% \begin{macrocode} -\newcommand\PuzzleFont{\rm\normalsize} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleNumberFont} -% The macro |\PuzzleNumberFont| contains font changings -% commands issued before the numbers in a puzzle are typeset. -% \begin{macrocode} -\newcommand\PuzzleNumberFont{\sf\scriptsize} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleHook} -% Puzzles are typeset with the \LaTeX{} picture environment. At the -% end of this environment the macro |\PuzzleHook| is -% called. The package prodised an empty default. Users may want to -% use this place to typeset additional elements on top of the -% puzzle. -% -% The puzzle uses a |\unitlength| of |\PuzzleUnitlength|. Thus it -% is rather easy to adress the boxes in the puzzle. -% -% \begin{macrocode} -\let\PuzzleHook=\relax -% \end{macrocode} -% \end{macro} -% -% \subsection{The Frame of the Crossword Puzzle} -% -% To describe the coordinates where the next box should be typeset -% we need two counters for the coordinates. These counters are now -% allocated (even though we could use temporary counters from -% \LaTeX). -% \begin{macrocode} -\newcount\Puzzle@X -\newcount\Puzzle@Y -% \end{macrocode} -% -% \begin{macrocode} -\begingroup -\catcode`\|=13 -\gdef\Puzzle@@solution{ - \let|=\Puzzle@Box@@solution - \let\Frame=\Puzzle@Frame@@solution -} -% \end{macrocode} -% -% \begin{macrocode} -\gdef\Puzzle@@normal{ - \let|=\Puzzle@Box@@normal - \let\Frame=\Puzzle@Frame@@normal -} -\endgroup -% \end{macrocode} -% -% \begin{environment}{Puzzle} -% The environment |Puzzle| typesets the frame of a crossword -% puzzle. It is implemented utilizing a |picture| environment. The -% unilength is set to the |\PuzzleUnitlength|. Thus the navigation -% is faily easy. The basic unit is width and height of a single -% box. -% -% The macros which are local to the environment are activated. Thus -% we avoid collisions with other packages where the same macro names -% might be used. -% -% Finally the counter which contain the x and the y coordinate have -% to be initialized. -% -% The last action in the |picture| environment is the expansion of -% the macro |\PuzzleHook|. This can be used to include additional -% material in the |picture| environment. Primarily I have use this -% to include the ads. But now there is the macro |\Frame| for this -% purpose. -% \begin{macrocode} -\newenvironment{Puzzle}[2]{\par\noindent\mbox{}\hfill - \catcode`\|=13 - \@nameuse{Puzzle@@\Puzzle@TYPE}% - \unitlength=\PuzzleUnitlength - \Puzzle@Y=#2 - \begin{picture}(#1,#2) - \Puzzle@Box@@normal. -}{% - \PuzzleHook - \end{picture}\hfill\null\par\noindent -} -% \end{macrocode} -% \end{environment} -% -% \begin{macro}{\Puzzle@Frame@@normal} -% The macro |Puzzle@Frame| is used to place additional -% rectangular regions into the puzzle frame. This frame can contain -% arbitrary text which is typeset in a centered environment. -% -% This macro takes five arguments. The first two arguments are the -% coordinates of the upper left corner of the frame. The -% coordinates are logical coordinates starting from the lower left -% corner of the puzzle. The next two arguments are the width and the -% height of the frame given in the number of boxes covered. Finally -% the fifth argument contains the text which should apear in this -% frame. -% \begin{macrocode} -\newcommand\Puzzle@Frame@@normal[5]{\put(#1,#2){\framebox(#3,#4){% - \begin{minipage}{#3\unitlength}\begin{center} #5 - \end{center}\end{minipage}}}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@Frame@@solution} -% For the solution the framed ads are simply ignored. -% \begin{macrocode} -\newcommand\Puzzle@Frame@@solution[5]{} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleBlackBox} -% The macro |\PuzzleBlackBox| is called to typeset the black boxes. -% It should produce a box of at most width and height of -% |\PuzzleUnitlength|. -% \begin{macrocode} -\newcommand\PuzzleBlackBox{\rule{\PuzzleUnitlength}{\PuzzleUnitlength}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@Box@@normal} -% The macro |\Puzzle@Box@@normal| performs all tasks when a box -% should be typeset in ``normal'' mode. The arguments are evaluated -% and the appropriate tpye of box typeset or other actions performed. -% \changes{1.4}{1996/11/25}{Minor bugfix. Using ifx instead of if.} -% \begin{macrocode} -\newcommand\Puzzle@Box@@normal[2][]{% - \def\Puzzle@tmp{#2}% - \if\Puzzle@tmp. - \Puzzle@X=0\relax \advance\Puzzle@Y-1 - \else - \ifx\@empty\Puzzle@tmp - \else - \if\Puzzle@tmp* - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\PuzzleBlackBox}} - \else - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){}} - \fi - \fi - \def\Puzzle@tmp{#1}% - \ifx\@empty\Puzzle@tmp\else - \put(\Puzzle@X,\Puzzle@Y){% - \makebox(1,.95)[tl]{\PuzzleNumberFont\,#1}}% - \fi - \advance\Puzzle@X 1 - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@Box@@solution} -% The macro |\Puzzle@Box@@solution| performs all tasks when a box -% should be typeset in ``solution'' mode. The arguments are evaluated -% and the appropriate tpye of box typeset or other actions performed. -% \changes{1.4}{1996/11/25}{Minor bugfix. Using ifx instead of if.} -% \begin{macrocode} -\newcommand\Puzzle@Box@@solution[2][]{% - \def\Puzzle@tmp{#2}% - \if\Puzzle@tmp. - \Puzzle@X=0\relax \advance\Puzzle@Y-1 - \else - \ifx\Puzzle@tmp\@empty - \else\if\Puzzle@tmp* - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\PuzzleBlackBox}} - \else - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\uppercase{#2}}}% - \fi - \fi - \def\Puzzle@tmp{#1}% - \ifx\Puzzle@tmp\@empty\else - \ifPuzzle@SolutionNumbered - \put(\Puzzle@X,\Puzzle@Y){% - \makebox(1,.95)[tl]{\PuzzleNumberFont\,#1}}% - \fi - \fi - \advance\Puzzle@X 1 - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Clues} -% -% \begin{macro}{\Puzzle@Clue@@normal} -% The first and the third argument are shown as clue. This macro is -% used for unsolved puzzles. -% \begin{macrocode} -\newcommand\Puzzle@Clue@@normal[3]{\textsf{#1} #3 } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@Clue@@solution} -% In solutions clues are simply suppressed. Thus all three -% arguments are discarted. -% \begin{macrocode} -\newcommand\Puzzle@Clue@@solution[3]{} -% \end{macrocode} -% \end{macro} -% -% \begin{environment}{Puzzle@Clues@@normal} -% The environment |Puzzle@Clues@@normal| is mapped to |PuzzleClues| -% in ``normal'' mode. It typesets its contents in a minipage of -% appropriate half textwidth. -% \begin{macrocode} -\newenvironment{Puzzle@Clues@@normal}[1]{% - \null\hfill - \let\Clue\Puzzle@Clue@@normal - \begin{minipage}[t]{.45\textwidth}% - \PuzzleClueFont{#1}% -}{\end{minipage}\hfill\null } -% \end{macrocode} -% \end{environment} -% -% \begin{environment}{Puzzle@Clues@@solution} -% The environment |Puzzle@Clues@@solution| is mapped to |PuzzleClues| -% in ``solution'' mode. It just suppressed any output. -% \begin{macrocode} -\newenvironment{Puzzle@Clues@@solution}[1]{% - \let\Clue\Puzzle@Clue@@solution -}{} -% \end{macrocode} -% \end{environment} -% -% \begin{macro}{\PuzzleWordsText} -% The macro |\PuzzleWordsText| is the text typeset at the beginning -% of the environment |PuzzleWords|. It takes one argument which is -% the length of the words listed. -% \begin{macrocode} -\newcommand\PuzzleWordsText[1]{Words of length #1: } -% \end{macrocode} -% \end{macro} -% -% \begin{environment}{Puzzle@Words@@normal} -% The environment |Puzzle@Words@@normal| will be mapped to the -% environment |PuzzleWords| in ``normal'' mode. It just arranges -% that words are typeset after the |\PuzzleWordsText| has shown the -% length of the words. Finally a new paragraph is started. -% \begin{macrocode} -\newenvironment{Puzzle@Words@@normal}[1]{% - \PuzzleWordsText{#1}% - \let\Word\relax -}{\par} -% \end{macrocode} -% \end{environment} -% -% \begin{environment}{Puzzle@Words@@solution} -% The environment |Puzzle@Words@@solution| will be mapped to the -% environment |PuzzleWords| in ``solution'' mode. It arranges -% things that the contents is silently ignored. -% \begin{macrocode} -\newenvironment{Puzzle@Words@@solution}[1]{% - \newcommand\Word[1]{}% -}{} -% \end{macrocode} -% \end{environment} -% -% \subsection{Numbers} -% -% \begin{macro}{\PuzzleNumbers} -% The macro |\PuzzleNumbers| will produce a list of boxes with -% numbers for letters. It is intended for numbered crossword puzzles. -% \begin{macrocode} -\newcommand\PuzzleNumbers[1]{\begingroup - \@nameuse{Puzzle@@\Puzzle@TYPE}% - \Puzzle@Y=0 - \Puzzle@X=1 - \unitlength=\PuzzleUnitlength - \Puzzle@Numbers#1.\endgroup} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@Numbers} -% The macro |\Puzzle@Numbers| loops through the arguments until it -% finds a dot. For each argument it produces a box, either with the -% numbers or with the letters or both, depending on the current -% settings. -% -% The loop is implemented via recursion. The box is tyepset by the -% \verb/|/ macro which takes care of the current settings. For this -% purpose this characterhas to be made active temporarily. -% \begin{macrocode} -\begingroup -\catcode`\|=13 -\gdef\Puzzle@Numbers#1{% - \if#1. - \let\next\relax - \else - \begin{picture}(1,1) - \xdef\X{\the\Puzzle@X}% - \Puzzle@X=0 - |[\X]{#1}% - \end{picture}% - \let\next\Puzzle@Numbers - \advance\Puzzle@X 1 - \fi - \next -} -\endgroup -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleLettersText} -% The macro |\PuzzleLettersText| contains the text typeset at the -% beginning of the |\PuzzleLetters| environment. -% \begin{macrocode} -\newcommand\PuzzleLettersText{The following letters are used: } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleLetters} -% The macro |\PuzzleLetters| is intended to show the letters used -% in a numbered crossword puzzle. The argument is the (sorted) list -% of characters used. -% \begin{macrocode} -\newcommand\PuzzleLetters[1]{\PuzzleLettersText #1\par} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Puzzle@TYPE} -% The macro |\Puzzle@TYPE| contains the type of the puzzle. It is -% used find the appropriate initialization macro. -% \begin{macrocode} -\newcommand\Puzzle@TYPE{normal} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleSolution} -% The macro |\PuzzleSolution| arranges everything that the -% following puzzles are typeset in the ``solution'' mode, i.e. the -% letters are shown and the clues are suppressed. -% -% This macros has one optional argument which has to be |true| or -% |false|. This argument determines whether or not the numbers -% should also be shown in the solution. The default is |false| -% which means that the numbers are suppressed in the solution. -% \begin{macrocode} -\newcommand\PuzzleSolution[1][false]{% - \@nameuse{Puzzle@SolutionNumbered#1}% - \let\PuzzleClues\Puzzle@Clues@@solution - \let\endPuzzleClues\endPuzzle@Clues@@solution - \let\PuzzleWords\Puzzle@Words@@solution - \let\endPuzzleWords\endPuzzle@Words@@solution - \xdef\Puzzle@TYPE{solution}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PuzzleUnsolved} -% The macro |\PuzzleUnsolved| arranges everything that the -% following puzzles are typeset in the ``unsolved'' mode, i.e. the -% letters are suppressed and the clues are shown. -% \begin{macrocode} -\newcommand\PuzzleUnsolved{% - \let\PuzzleClues\Puzzle@Clues@@normal - \let\endPuzzleClues\endPuzzle@Clues@@normal - \let\PuzzleWords\Puzzle@Words@@normal - \let\endPuzzleWords\endPuzzle@Words@@normal - \xdef\Puzzle@TYPE{normal}} -% \end{macrocode} -% \end{macro} -% -% The boolean |Puzzle@SolutionNumbered| deternimes whether or -% not the solution should contain numbers. Initially it is set to -% ``false''. -% -% \begin{macrocode} -\newif\ifPuzzle@SolutionNumbered -\Puzzle@SolutionNumberedfalse -% \end{macrocode} -% -% -% Finally we arrange that the default behaviour is to typeset an -% unsolved crossword puzzle. -% -% \begin{macrocode} -\PuzzleUnsolved -% \end{macrocode} -% -% That's all. -% -% \PrintChanges -% \newpage -% \PrintIndex -% -% \Finale -% -\endinput -% -% Local Variables: -% mode: latex -% TeX-master: t -% End: diff --git a/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.ins b/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.ins deleted file mode 100644 index ab749a8b6b4..00000000000 --- a/Master/texmf-dist/source/latex/cwpuzzle/cwpuzzle.ins +++ /dev/null @@ -1,43 +0,0 @@ -%%------------------------------------------------------------------ -%% Driver file to extract the dtx style and package file. -%% -%% Copyright (C) 1995 Gerd Neugebauer -%% -%% Author: Gerd Neugebauer -%% Mainzer Str. 8 -%% 56321 Rhens -%% Mail: gerd@informatik.uni-koblenz.de -%% -%% cwpuzzle.ins is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY. No author or distributor accepts -%% responsibility to anyone for the consequences of using it or for -%% whether it serves any particular purpose or works at all, unless -%% he says so in writing. -%% -%% Everyone is granted permission to copy, modify and redistribute -%% cwpuzzle.ins, provided this copyright notice is preserved and -%% any modifications are indicated. -%% -%%------------------------------------------------------------------ -%% -%% Run this file through TeX or LaTeX to extract the files. -%% You need the docstrip package as distributed with LaTeX2e. -%% It is also availlable as seperate package from any CTAN site. -%% -%%------------------------------------------------------------------ -\def\batchfile{cwpuzzle.ins} -\input docstrip.tex -\keepsilent -\generateFile{cwpuzzle.sty}{t}{\from{cwpuzzle.dtx}{}} -\Msg{****************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space cwpuzzle.sty} -\Msg{*} -\Msg{* To produce the documentation run cwpuzzle.dtx through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{****************************************************************} -\endinput diff --git a/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty b/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty deleted file mode 100644 index bb2edc551b6..00000000000 --- a/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty +++ /dev/null @@ -1,218 +0,0 @@ -%% -%% This is file `cwpuzzle.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% cwpuzzle.dtx -%% -%% IMPORTANT NOTICE: -%% -%% For the copyright see the source file. -%% -%% You are *not* allowed to modify this file. -%% -%% You are *not* allowed to distribute this file. -%% For distribution of the original source see the terms -%% for copying and modification in the file cwpuzzle.dtx. -%% -%%^^A $Id: cwpuzzle.dtx,v 1.4 1996/11/25 21:20:35 gerd Exp gerd $ -\def\DTK@RCS$#1: #2 #3${#2} -\def\filename{cwpuzzle.dtx} -\xdef\fileversion{\DTK@RCS$Revision: 1.4 $} -\xdef\filedate{\DTK@RCS$Date: 1996/11/25 21:20:35 $} -\let\docversion=\fileversion -\let\docdate=\filedate -\typeout{% -%% Purpose: - Package: cwpuzzle \filedate\space\fileversion\space - for typesetting crossword puzzles. -}% -%% -%% Documentation: -%% The documentation can be generated from the original file -%% cwpuzzle.dtx with the doc style/package. LaTeX the file -%% cwpuzzle.dtx to get the full documentation in dvi format. -%% -%% -%% Author: Gerd Neugebauer -%% Mainzer Str. 8 -%% 56321 Rhens -%% Mail: gerd@informatik.uni-koblenz.de -%% -%% Copyright (C) 1996 Gerd Neugebauer -%% -%% cwpuzzle.dtx is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY. No author or distributor accepts -%% responsibility to anyone for the consequences of using it or for -%% whether it serves any particular purpose or works at all, unless -%% he says so in writing. -%% -%% Everyone is granted permission to copy, modify and redistribute -%% dtk.dtx, provided this copyright notice is preserved and any -%% modifications are indicated. -%% -%% -%% This style is still under development and may be replaced with a -%% new version which provides an enhanced functionality. -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\ProvidesPackage{cwpuzzle}[\filedate gene] -\newdimen\PuzzleUnitlength -\PuzzleUnitlength=20pt -\newcommand\PuzzleClueFont{\footnotesize} -\newcommand\PuzzleFont{\rm\normalsize} -\newcommand\PuzzleNumberFont{\sf\scriptsize} -\let\PuzzleHook=\relax -\newcount\Puzzle@X -\newcount\Puzzle@Y -\begingroup -\catcode`\|=13 -\gdef\Puzzle@@solution{ - \let|=\Puzzle@Box@@solution - \let\Frame=\Puzzle@Frame@@solution -} -\gdef\Puzzle@@normal{ - \let|=\Puzzle@Box@@normal - \let\Frame=\Puzzle@Frame@@normal -} -\endgroup -\newenvironment{Puzzle}[2]{\par\noindent\mbox{}\hfill - \catcode`\|=13 - \@nameuse{Puzzle@@\Puzzle@TYPE}% - \unitlength=\PuzzleUnitlength - \Puzzle@Y=#2 - \begin{picture}(#1,#2) - \Puzzle@Box@@normal. -}{% - \PuzzleHook - \end{picture}\hfill\null\par\noindent -} -\newcommand\Puzzle@Frame@@normal[5]{\put(#1,#2){\framebox(#3,#4){% - \begin{minipage}{#3\unitlength}\begin{center} #5 - \end{center}\end{minipage}}}} -\newcommand\Puzzle@Frame@@solution[5]{} -\newcommand\PuzzleBlackBox{\rule{\PuzzleUnitlength}{\PuzzleUnitlength}} -\newcommand\Puzzle@Box@@normal[2][]{% - \def\Puzzle@tmp{#2}% - \if\Puzzle@tmp. - \Puzzle@X=0\relax \advance\Puzzle@Y-1 - \else - \ifx\@empty\Puzzle@tmp - \else - \if\Puzzle@tmp* - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\PuzzleBlackBox}} - \else - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){}} - \fi - \fi - \def\Puzzle@tmp{#1}% - \ifx\@empty\Puzzle@tmp\else - \put(\Puzzle@X,\Puzzle@Y){% - \makebox(1,.95)[tl]{\PuzzleNumberFont\,#1}}% - \fi - \advance\Puzzle@X 1 - \fi -} -\newcommand\Puzzle@Box@@solution[2][]{% - \def\Puzzle@tmp{#2}% - \if\Puzzle@tmp. - \Puzzle@X=0\relax \advance\Puzzle@Y-1 - \else - \ifx\Puzzle@tmp\@empty - \else\if\Puzzle@tmp* - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\PuzzleBlackBox}} - \else - \put(\Puzzle@X,\Puzzle@Y){\framebox(1,1){\uppercase{#2}}}% - \fi - \fi - \def\Puzzle@tmp{#1}% - \ifx\Puzzle@tmp\@empty\else - \ifPuzzle@SolutionNumbered - \put(\Puzzle@X,\Puzzle@Y){% - \makebox(1,.95)[tl]{\PuzzleNumberFont\,#1}}% - \fi - \fi - \advance\Puzzle@X 1 - \fi -} -\newcommand\Puzzle@Clue@@normal[3]{\textsf{#1} #3 } -\newcommand\Puzzle@Clue@@solution[3]{} -\newenvironment{Puzzle@Clues@@normal}[1]{% - \null\hfill - \let\Clue\Puzzle@Clue@@normal - \begin{minipage}[t]{.45\textwidth}% - \PuzzleClueFont{#1}% -}{\end{minipage}\hfill\null } -\newenvironment{Puzzle@Clues@@solution}[1]{% - \let\Clue\Puzzle@Clue@@solution -}{} -\newcommand\PuzzleWordsText[1]{Words of length #1: } -\newenvironment{Puzzle@Words@@normal}[1]{% - \PuzzleWordsText{#1}% - \let\Word\relax -}{\par} -\newenvironment{Puzzle@Words@@solution}[1]{% - \newcommand\Word[1]{}% -}{} -\newcommand\PuzzleNumbers[1]{\begingroup - \@nameuse{Puzzle@@\Puzzle@TYPE}% - \Puzzle@Y=0 - \Puzzle@X=1 - \unitlength=\PuzzleUnitlength - \Puzzle@Numbers#1.\endgroup} -\begingroup -\catcode`\|=13 -\gdef\Puzzle@Numbers#1{% - \if#1. - \let\next\relax - \else - \begin{picture}(1,1) - \xdef\X{\the\Puzzle@X}% - \Puzzle@X=0 - |[\X]{#1}% - \end{picture}% - \let\next\Puzzle@Numbers - \advance\Puzzle@X 1 - \fi - \next -} -\endgroup -\newcommand\PuzzleLettersText{The following letters are used: } -\newcommand\PuzzleLetters[1]{\PuzzleLettersText #1\par} -\newcommand\Puzzle@TYPE{normal} -\newcommand\PuzzleSolution[1][false]{% - \@nameuse{Puzzle@SolutionNumbered#1}% - \let\PuzzleClues\Puzzle@Clues@@solution - \let\endPuzzleClues\endPuzzle@Clues@@solution - \let\PuzzleWords\Puzzle@Words@@solution - \let\endPuzzleWords\endPuzzle@Words@@solution - \xdef\Puzzle@TYPE{solution}} -\newcommand\PuzzleUnsolved{% - \let\PuzzleClues\Puzzle@Clues@@normal - \let\endPuzzleClues\endPuzzle@Clues@@normal - \let\PuzzleWords\Puzzle@Words@@normal - \let\endPuzzleWords\endPuzzle@Words@@normal - \xdef\Puzzle@TYPE{normal}} -\newif\ifPuzzle@SolutionNumbered -\Puzzle@SolutionNumberedfalse -\PuzzleUnsolved -\endinput -%% -%% End of file `cwpuzzle.sty'. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 8e3d6fe3bc4..fba46713ada 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -177,6 +177,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw 'ctantools', "die 'skipping, not sure we should usurp the cmd name ctan'", 'ctib', "&MAKEflatten", 'cweb', "die 'skipping, programs'", + 'cwpuzzle', "die 'skipping, in crossword package'", 'cyklop', "&MAKEcopy", 'deleq', "die 'skipping, nosell license'", 'deproc', "die 'skipping, for latex 2.09'", diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 2856fb23fc6..24c1bba4c90 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -104,7 +104,6 @@ depend currvita depend cursor depend cv depend cweb-latex -depend cwpuzzle depend dashbox depend dashrule depend datatool diff --git a/Master/tlpkg/tlpsrc/cwpuzzle.tlpsrc b/Master/tlpkg/tlpsrc/cwpuzzle.tlpsrc deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlpsrc/cwpuzzle.tlpsrc +++ /dev/null |