diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:53:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:53:58 +0000 |
commit | f4ff2f4195c620fb324dc282def80089831180f8 (patch) | |
tree | 8cc627c374f03e3d6d972a1d44871c9457387c65 /Master/texmf-dist/tex/latex/cwpuzzle | |
parent | 3480be19c51b5b1944f16b4d3a6cb86576d53807 (diff) |
cwpuzzle
git-svn-id: svn://tug.org/texlive/trunk@812 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/cwpuzzle')
-rw-r--r-- | Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty b/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty new file mode 100644 index 00000000000..bb2edc551b6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/cwpuzzle/cwpuzzle.sty @@ -0,0 +1,218 @@ +%% +%% 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'. |