%% %% 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'.