diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-13 22:57:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-13 22:57:32 +0000 |
commit | 5cc36a171f8092e44ab898ee2e44446b5c4a2949 (patch) | |
tree | 4ee8dd508166a45c92a2eac14aea6ce9cd6989e7 /Master | |
parent | 934ca9c7cea256e522389fcd652070ac2e378efa (diff) |
logicpuzzle (13apr13)
git-svn-id: svn://tug.org/texlive/trunk@29897 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
18 files changed, 1415 insertions, 27 deletions
diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/CHANGES b/Master/texmf-dist/doc/latex/logicpuzzle/CHANGES index 6b063baf389..1a30dd1c245 100644 --- a/Master/texmf-dist/doc/latex/logicpuzzle/CHANGES +++ b/Master/texmf-dist/doc/latex/logicpuzzle/CHANGES @@ -1,3 +1,26 @@ +== Logicpuzzle bundel (v1.8) == + +-- killersudoku.sty (v1.0) -- + +09/04/2013 added ddsudoku.sty [jk] + +-- kendoku.sty (v1.0) -- + +09/04/2013 added hitori.sty + +-- battleship.sty (v1.4a) -- + +10/04/2013 Bugfix: renamed counter LP@whiledo -> LP@whiledo@i [jk] + +-- logicpuzzle.sty (v1.8) -- + +09/04/2013 added \colorarea (\framearea without frame) [jk] + +09/04/2013 added \setrule for setting calculation rules [jk] + into the top left corner of a cell + +08/04/2013 added \tikzpath for contructing a tikz path [jk] + == Logicpuzzle bundel (v1.7) == -- ddsudoku.sty (v1.0) -- diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/README b/Master/texmf-dist/doc/latex/logicpuzzle/README index ec7e297a0c6..43733748dbd 100644 --- a/Master/texmf-dist/doc/latex/logicpuzzle/README +++ b/Master/texmf-dist/doc/latex/logicpuzzle/README @@ -7,23 +7,28 @@ puzzles. At the moment the following puzzles are supported: * Chaos Sudoku * Hakyuu (aka Seismic, Ripple Effect, ...) * Hitori +* Kendoku (aka Mathdoku, Calcudoku, Basic, MiniPlu, Ken Ken, + Square Wisdom, Sukendo, Caldoku, ...) +* Killer Sudoku (aka Samunapure, Sum Number Place, Sumdoku, + Gebietssummen, ...) * Skyline (aka Skycrapers, Wolkenkratzer, Hochhäuser, ...) incl. Skyline Sudoku and Skyline Sudoku (N*N) variants * Sudoku -* more to come License: LPPL -Changes in v1.7: +Changes in v1.8: -- added support for 2D-Sudoku puzzle - https://bitbucket.org/kleberj/logicpuzzle/wiki/2D-Sudoku +- added support for Kendoku puzzle + https://bitbucket.org/kleberj/logicpuzzle/wiki/Kendoku -- added support for Hitori puzzle - https://bitbucket.org/kleberj/logicpuzzle/wiki/Hitori +- added support for Killer Sudoku puzzle + https://bitbucket.org/kleberj/logicpuzzle/wiki/KillerSudoku + +- battleship.sty + + Bugfix: renamed counter LP@whiledo -> LP@whiledo@i - logicpuzzle.sty - * added documentation - * added \filldiagonals, \framepuzzle, \setcolorrow, \setcolorcolumn, - \LP@definecolor, \LP@define@key, \LP@define@choicekey@fontsize - and \LP@init@counter + + * added \tikzpath, \setrule and \colorarea diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.pdf b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.pdf Binary files differnew file mode 100644 index 00000000000..520e1ed3d4d --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.pdf diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.tex b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.tex new file mode 100644 index 00000000000..92eef7f9838 --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku.tex @@ -0,0 +1,374 @@ +% pdflatex --shell-escape logo.tex +% run twice: 1. download qrcode.png 2. include the pic +% or download http://i.imgur.com/KAunnuS.png and rename it to qrcode.png +% +\documentclass[a4paper]{ltxdoc}% +\usepackage[english]{babel}% +\usepackage[latin1]{inputenc}% +\usepackage[T1]{fontenc}% +\usepackage{textcomp}% +\usepackage{lmodern}% +\usepackage{bera}% +\usepackage{ccicons} +\usepackage{microtype}% +\usepackage{ltxdocext}% +\usepackage{listings} +\usepackage{marginnote}% +\usepackage[svgnames,rgb]{xcolor}% +\usepackage[automark,nouppercase]{scrpage2} +\usepackage{kendoku}% +\usepackage{hyperref} +% +\setlength{\headheight}{1.1\baselineskip}% +% +\AtBeginDocument{\IfFileExists{qrcode.png}{}{\write18{wget -O qrcode.png http://i.imgur.com/KAunnuS.png}}}% +\hypersetup{colorlinks=true,urlcolor=NavyBlue,linkcolor=NavyBlue,citecolor=CornflowerBlue,naturalnames=true,hypertexnames=false}% +\lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny,basicstyle=\ttfamily,frame=single,backgroundcolor=\color{LightGoldenrodYellow},keywordstyle=\color{Blue},emph={puzzlebackground,puzzleforeground,center,kendoku,left,shape,fill,inner,sep,draw,rounded,corners,thick}, emphstyle=\color{Tomato},emph={[2]Wheat,HotPink,GreenYellow,LightBlue,LightSalmon,LightYellow,green,sudoku,rows,columns,scale},emphstyle={[2]\color{OliveDrab}},morekeywords={setrule,tikzpath,framearea,fillarea,kendokucell,setrow,LP@cvoffset,titleformat,definecounterstyle,marginnote,tikz,node,puzzlecounter,color,[,]}} +\makeatletter +\renewcommand{\maketitle}% +{% + \thispagestyle{empty}% + \pagecolor{Ivory}% + \begin{titlepage}% + \begin{tikzpicture}[remember picture,overlay]% + \node[yshift=-2cm] at (current page.north west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle% + (\paperwidth,2cm);% + \draw[anchor=west,yshift=-4cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\RaggedRight\Huge\sffamily\textbf{\@title}}};% + \draw[anchor=west,yshift=-6cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\huge\sffamily\textbf{\@fileversion}}};% + \draw[anchor=west,yshift=-9cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\RaggedRight\huge\sffamily\textbf{\@subtitle}}};% + \draw[anchor=west,yshift=-13cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\usebox\logo};% + \draw[anchor=west,yshift=-17cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\huge\sffamily\textbf{\@date}}};% + \draw[anchor=west,yshift=-20cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\Large\sffamily{\@authorline\\\textbf{\@author}}}};% + \end{tikzpicture}% + };% + \node[yshift=0cm] at (current page.south west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=NavyBlue,color=NavyBlue,yshift=6cm,xshift=2cm] (0,0) rectangle (0.2cm,19cm);% + \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);% + \draw[anchor=west,yshift=1cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\large\sffamily{\@refline}}};% + \end{tikzpicture}% + };% + \end{tikzpicture}% + \end{titlepage}% + \pagecolor{white}% +}% +% +\newcommand*{\@tikzhead}[1]% +{% + \begin{tikzpicture}[remember picture,overlay]% + \node[yshift=-2cm] at (current page.north west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);% + \draw[anchor=west,yshift=1cm,xshift=1.5cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\LARGE\sffamily\textbf{\@title}}};% + \node[anchor=east,xshift=.9\paperwidth,rectangle,% + rounded corners=15pt,inner sep=11pt,fill=NavyBlue]% + {\color{white}\textsc{#1}};% + \end{tikzpicture}% + };% + \end{tikzpicture}% +}% +\clearscrheadings% +\ihead{\@tikzhead{\headmark}}% +\cfoot{\upshape\thepage}% +\pagestyle{scrheadings}% +% +%\newcommand*{\headline}[1]{\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}% +\newcommand*{\Headline}[1]{\@mkboth{#1}{#1}}% +% +\renewcommand{\headfont}{\normalfont\mdseries\scshape} +% +\gdef\@subtitle{}% +\providecommand*{\Subtitle}[1]{\gdef\@subtitle{#1}}% +\gdef\@fileversion{}% +\providecommand*{\Fileversion}[1]{\gdef\@fileversion{#1}}% +\gdef\@author{}% +\providecommand*{\Author}[1]{\gdef\@author{#1}}% +\gdef\@authorline{Package author:}% +\providecommand*{\Authorline}[1]{\gdef\@authorline{#1}}% +\gdef\@refline{}% +\providecommand*{\Refline}[1]{\gdef\@refline{#1}}% +\gdef\and{\unskip{}, }% +\newcommand\doubledash{-\kern0.5pt-} +\def\enoteformat{\rightskip\z@ \leftskip\z@ \parindent=1em\leavevmode\llap{\makeenmark}} +\makeatother +% +\def\filename{kendoku.sty}% +\def\XeLaTeX{Xe\LaTeX}% +% +\newenvironment{optionlist} +{\begin{trivlist}\setlength\leftskip{2em}} +{\end{trivlist}} +\newcommand\optitem[3]{\item [\texttt{\textbf{\textcolor{DodgerBlue}{#1}} \lbrack\textcolor{Crimson}{#2}\rbrack}] #3} +% +\makeatletter% +\renewcommand\tableofcontents% +{% + %\section*{\contentsname}% + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}% + \@starttoc{toc}% +}% +% +\newcommand\styleoption{\name@idx{style option}}% +\newcommand\stylename{\name@idx{document style}}% +\def\name@idx#1#2{% + {\ttfamily#2}% + \index{#2\space#1=\string\ttt{#2}\space#1}\index{#1>#2=\string\ttt{#2}}% +}% +\newcommand*\margcs[1]{\marginnote{\raggedleft\scriptsize #1}}% +\newcommand*\package[1]{\texttt{#1}\index{#1=\string\ttt{#1}}}% +\newcommand*\mco[1]{\mbox{\LANGLE\itshape#1\RANGLE}\index{#1, class option value}\index{class option value>#1}}% +% +\renewcommand\@biblabel[1]{\makebox[1.5cm][l]{[#1]}} +%\renewcommand*\l@subsection{\@dottedtocline{2}{1.2em}{2.8em}} +%\renewcommand*\l@subsubsection{\@dottedtocline{3}{2.4em}{3.7em}} +\makeatother +% +\setlength\parindent{0pt}% +\hypersetup{pdfauthor={Josef Kleber},pdftitle={A style file for typesetting Kendoku logic puzzles},pdfsubject={Documentation for LaTeX style \filename}}% +% +\begin{document} +\title{\filename}% +\Subtitle{A style file for typesetting Kendoku logic puzzles}% +\author{Josef Kleber} +\Fileversion{v1.0} +\Refline{\href{mailto:josef.kleber@gmx.de}{\texttt{josef.kleber@gmx.de}}\\\href{https://bitbucket.org/kleberj/logicpuzzle/}{\texttt{https://bitbucket.org/kleberj/logicpuzzle/}}} +\newsavebox\logo +\savebox\logo{% + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \end{kendoku} + \hspace{1.5cm} + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \setrow{5}{1,4,3,5,2} + \setrow{4}{3,2,5,1,4} + \setrow{3}{5,3,4,2,1} + \setrow{2}{2,5,1,4,3} + \setrow{1}{4,1,2,3,5} + \end{kendoku} +} +\maketitle +\tableofcontents +\clearpage + +\section{The puzzle} +Fill the cells with the numbers from 1 to SIZE of the puzzle. In the top left corner of a framed area, you will find the result of the specified arithmetic function, which is applied on the entered numbers. The numbers may occur only once in each row and column. The numbers of an area may not necessarily be different when they are in different rows or columns. Here's a little self-explanatory example: + +\begin{center} + \usebox\logo +\end{center} + +\bigskip +\begin{lstlisting} +\begin{center} + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \end{kendoku} + \hspace{1.5cm} + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \setrow{5}{1,4,3,5,2} + \setrow{4}{3,2,5,1,4} + \setrow{3}{5,3,4,2,1} + \setrow{2}{2,5,1,4,3} + \setrow{1}{4,1,2,3,5} + \end{kendoku} +\end{center} +\end{lstlisting} +\lstset{basicstyle=\ttfamily\normalsize} +\clearpage + +\section{Options} +\begin{optionlist} + \optitem{\styleoption{rows}}{5}{defines the number of rows in the grid.} + \optitem{\styleoption{columns}}{5}{specifies the number of columns in the grid} + \optitem{\styleoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.} + \optitem{\styleoption{scale}}{1}{scales the size of the grid in the minipage.} + \optitem{\styleoption{fontsize}}{Large}{specifies the size of the numbers next to the grid. Here, the usual \LaTeX\ sizes are used. Possible values: \texttt{tiny}, \texttt{scriptsize}, \texttt{footnotesize}, \texttt{small}, \texttt{normalsize}, \texttt{large}, \underline{\texttt{Large}}, \texttt{LARGE}, \texttt{huge}, \texttt{Huge}} + \optitem{\styleoption{title}}{}{sets the title of a puzzle.} + \optitem{\styleoption{titleindent}}{0cm}{defines the indent of the title.} + \optitem{\styleoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.} + \optitem{\styleoption{bgcolor}}{}{sets the background color of the grid.} + \optitem{\styleoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right} + \optitem{\styleoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.} +\end{optionlist} + +\section{Environments} +\subsection{\texttt{kendoku}} +The \env{kendoku} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{kendoku}\oarg{options}\\\dots\\\enve{kendoku}} is the central core of the style file. With the optional argument of the environment, you can reset the options with local scope. Here, a blank grid is created. +\section{Commands} +\subsection{In the grid and around} +\subsubsection{\texttt{kendokucell}} +The command \cs{kendokucell}\margcs{\cmd\kendokucell\{\marg{column}\}\{\marg{row}\}\\\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column}\marg{row}. +\subsubsection{\texttt{setrow}} +The command \cs{setrow}\margcs{\cmd\setrow\{\marg{row}\}\{\marg{csv list}\}} sets the contents of \marg{row}. It expects a comma-separated list. +\subsubsection{\texttt{setcolumn}} +The command \cs{setcolumn}\margcs{\cmd\setcolumn\{\marg{column}\}\{\marg{csv list}\}} sets the contents of \marg{column}. +\subsubsection{\texttt{setrule}} +With\margcs{\cmd\setrule\{\{\marg{column}\}\{\marg{row}\}\\\{\marg{rule}\}} the \cmd\setrule\ command, you can set a calculation rule \marg{rule} into the top left corner of cell \marg{column}\marg{row}. The rule is typeset in inline math mode. You might consider using the \cmd\times\ and \cmd\div\ commands. +\subsubsection{\texttt{framearea}} +The command \cs{framearea}\margcs{\cmd\framearea\{\marg{color}\}\{\marg{\cmd\tikz\ path}\}} frames the area given by \marg{\cmd\tikz\ path} with color \marg{color}. The reference for coordinates is the bottom left corner of the cell. + +\begin{lstlisting} +\framearea{green}{(2,2)--(2,3)--(3,3)--(3,2)--(2,2)} +\end{lstlisting} + +This command will color the frame of the grid cell \texttt{(2,2)} green. You should consider using this command in the \env{puzzleforeground} environment. + +\subsubsection{\texttt{tikzpath}} +With\margcs{\cmd\tikzpath\{\oarg{column}\}\{\oarg{row}\}\\\{\oarg{csv list}\}} the \cmd\tikzpath\ command, you can easily construct a \cmd\tikz\ path. You just need to define a starting point \marg{column}\marg{row} (bottom left corner) and a \marg{csv list} with direction indicators relative to the current position. + +\begin{center} +\begin{tabular}{rlrlrl} +7: & up left & 8: & up & 9: & up right \\ +4: & left & 5: & no change & 6: & right \\ +1: & down left & 2: & down & 3: & down right \\ +\end{tabular} +\end{center} + +\begin{lstlisting} +\framearea{green}{\tikzpath{2}{2}{8,6,2,4}} +\end{lstlisting} + +This command will frame grid cell \texttt{(2,2)} green. +\subsection{Presentation} +\subsubsection{\texttt{definecounterstyle}} +The command \cs{definecounterstyle}\margcs{\cmd\definecounterstyle\{\marg{name}\}\\\{\marg{definition}\}} allows you to define your own styles. For example, the style \texttt{left} is defined as follows: + +\begin{lstlisting} +\definecounterstyle{left}{ + \begingroup\reversemarginpar\marginnote{ + \tikz\node[shape=rectangle,fill=yellow!40,inner sep=7pt, + draw,rounded corners=3pt,thick] + {\Huge\puzzlecounter};}[\LP@cvoffset]\endgroup} +} +\end{lstlisting} + +To typeset the counter into the margin we use the command \cmd\marginnote. We need to use the command \cmd\reversemarginpar\ to set the counter into the left margin. Of course, we must use this command in a group for local scope. Finally we use \cmd\puzzlecounter\ in a \cmd\tikz\ node with a vertical offset set with the option \styleoption{cvoffset}. +\subsubsection{\texttt{puzzlecounter}} +The command \cs{puzzlecounter}\margcs{\cmd\puzzlecounter} provides the counter in textual form to use it for example in \cmd\definecounterstyle. +\subsubsection{\texttt{titleformat}} +With the command \cs{titleformat}\margcs{\cmd\titleformat\{\marg{format}\}}, you can define the format of the title. By default, the definition is as follows: + +\begin{lstlisting} +\titleformat{\centering\Large\color{blue}} +\end{lstlisting} +\subsection{Miscellaneous} +\subsubsection{\texttt{kendokusetup}} +With the command \cs{kendokusetup}\margcs{\cmd\kendokusetup\{\marg{options}\}} you can reset the options with global scope. +\subsubsection{\texttt{setpuzzlecounter}} +With the command \cs{setpuzzlecounter}\margcs{\cmd\setpuzzlecounter\{\marg{number}\}}, you can reset the puzzle counter, for example before the solutions. + +\section{Examples \& Solutions} +You\IfFileExists{qrcode.png}{\marginnote{\href{https://bitbucket.org/kleberj/logicpuzzle/}{\includegraphics[height=2cm]{qrcode.png}}}[-31pt]}{} can download application examples and their solutions from the \href{https://bitbucket.org/kleberj/logicpuzzle/}{project page}. The puzzles are originally licensed under \href{http://creativecommons.org/licenses/by-nc-sa/3.0/}{\ccbyncsa}. +\end{document} diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku_README b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku_README new file mode 100644 index 00000000000..30b9983f533 --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/kendoku/kendoku_README @@ -0,0 +1,9 @@ +The package enables the user to typeset Kendoku logic puzzles +(aka Mathdoku, Calcudoku, Basic, MiniPlu, Ken Ken, + Square Wisdom, Sukendo, Caldoku, ...) +Fill the cells with the numbers from 1 to SIZE of the puzzle. +In the top left corner of a framed area, you will find the result +of the specified arithmetic function, which is applied on the +entered numbers. The numbers may occur only once in each row +and column. The numbers of an area may not necessarily be +different when they are in different rows or columns.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.pdf b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.pdf Binary files differnew file mode 100644 index 00000000000..e60bcdaf010 --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.pdf diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.tex b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.tex new file mode 100644 index 00000000000..8b56b4e0f0f --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku.tex @@ -0,0 +1,340 @@ +% pdflatex --shell-escape logo.tex +% run twice: 1. download qrcode.png 2. include the pic +% or download http://i.imgur.com/KAunnuS.png and rename it to qrcode.png +% +\documentclass[a4paper]{ltxdoc}% +\usepackage[english]{babel}% +\usepackage[latin1]{inputenc}% +\usepackage[T1]{fontenc}% +\usepackage{textcomp}% +\usepackage{lmodern}% +\usepackage{bera}% +\usepackage{ccicons} +\usepackage{microtype}% +\usepackage{ltxdocext}% +\usepackage{listings} +\usepackage{marginnote}% +\usepackage[svgnames,rgb]{xcolor}% +\usepackage[automark,nouppercase]{scrpage2} +\usepackage[rows=4,columns=4,scale=1.25]{killersudoku}% +\usepackage{hyperref} +% +\setlength{\headheight}{1.1\baselineskip}% +% +\AtBeginDocument{\IfFileExists{qrcode.png}{}{\write18{wget -O qrcode.png http://i.imgur.com/KAunnuS.png}}}% +\hypersetup{colorlinks=true,urlcolor=NavyBlue,linkcolor=NavyBlue,citecolor=CornflowerBlue,naturalnames=true,hypertexnames=false}% +\lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny,basicstyle=\ttfamily,frame=single,backgroundcolor=\color{LightGoldenrodYellow},keywordstyle=\color{Blue},emph={puzzlebackground,puzzleforeground,center,killersudoku,left,shape,fill,inner,sep,draw,rounded,corners,thick}, emphstyle=\color{Tomato},emph={[2]Wheat,HotPink,GreenYellow,LightBlue,LightSalmon,LightYellow,green,sudoku,rows,columns,scale},emphstyle={[2]\color{OliveDrab}},morekeywords={setrule,tikzpath,colorarea,framearea,fillarea,killersudokucell,setrow,LP@cvoffset,titleformat,definecounterstyle,marginnote,tikz,node,puzzlecounter,color,[,]}} +\makeatletter +\renewcommand{\maketitle}% +{% + \thispagestyle{empty}% + \pagecolor{Ivory}% + \begin{titlepage}% + \begin{tikzpicture}[remember picture,overlay]% + \node[yshift=-2cm] at (current page.north west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle% + (\paperwidth,2cm);% + \draw[anchor=west,yshift=-4cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\RaggedRight\Huge\sffamily\textbf{\@title}}};% + \draw[anchor=west,yshift=-6cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\huge\sffamily\textbf{\@fileversion}}};% + \draw[anchor=west,yshift=-9cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\RaggedRight\huge\sffamily\textbf{\@subtitle}}};% + \draw[anchor=west,yshift=-13cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\usebox\logo};% + \draw[anchor=west,yshift=-17cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\huge\sffamily\textbf{\@date}}};% + \draw[anchor=west,yshift=-20cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\Large\sffamily{\@authorline\\\textbf{\@author}}}};% + \end{tikzpicture}% + };% + \node[yshift=0cm] at (current page.south west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=NavyBlue,color=NavyBlue,yshift=6cm,xshift=2cm] (0,0) rectangle (0.2cm,19cm);% + \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);% + \draw[anchor=west,yshift=1cm,xshift=3cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\large\sffamily{\@refline}}};% + \end{tikzpicture}% + };% + \end{tikzpicture}% + \end{titlepage}% + \pagecolor{white}% +}% +% +\newcommand*{\@tikzhead}[1]% +{% + \begin{tikzpicture}[remember picture,overlay]% + \node[yshift=-2cm] at (current page.north west)% + {% + \begin{tikzpicture}[remember picture, overlay]% + \draw[fill=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);% + \draw[anchor=west,yshift=1cm,xshift=1.5cm,color=NavyBlue] (0,0) node% + {\parbox{15cm}{\LARGE\sffamily\textbf{\@title}}};% + \node[anchor=east,xshift=.9\paperwidth,rectangle,% + rounded corners=15pt,inner sep=11pt,fill=NavyBlue]% + {\color{white}\textsc{#1}};% + \end{tikzpicture}% + };% + \end{tikzpicture}% +}% +\clearscrheadings% +\ihead{\@tikzhead{\headmark}}% +\cfoot{\upshape\thepage}% +\pagestyle{scrheadings}% +% +%\newcommand*{\headline}[1]{\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}% +\newcommand*{\Headline}[1]{\@mkboth{#1}{#1}}% +% +\renewcommand{\headfont}{\normalfont\mdseries\scshape} +% +\gdef\@subtitle{}% +\providecommand*{\Subtitle}[1]{\gdef\@subtitle{#1}}% +\gdef\@fileversion{}% +\providecommand*{\Fileversion}[1]{\gdef\@fileversion{#1}}% +\gdef\@author{}% +\providecommand*{\Author}[1]{\gdef\@author{#1}}% +\gdef\@authorline{Package author:}% +\providecommand*{\Authorline}[1]{\gdef\@authorline{#1}}% +\gdef\@refline{}% +\providecommand*{\Refline}[1]{\gdef\@refline{#1}}% +\gdef\and{\unskip{}, }% +\newcommand\doubledash{-\kern0.5pt-} +\def\enoteformat{\rightskip\z@ \leftskip\z@ \parindent=1em\leavevmode\llap{\makeenmark}} +\makeatother +% +\def\filename{killersudoku.sty}% +\def\XeLaTeX{Xe\LaTeX}% +% +\newenvironment{optionlist} +{\begin{trivlist}\setlength\leftskip{2em}} +{\end{trivlist}} +\newcommand\optitem[3]{\item [\texttt{\textbf{\textcolor{DodgerBlue}{#1}} \lbrack\textcolor{Crimson}{#2}\rbrack}] #3} +% +\makeatletter% +\renewcommand\tableofcontents% +{% + %\section*{\contentsname}% + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}% + \@starttoc{toc}% +}% +% +\newcommand\styleoption{\name@idx{style option}}% +\newcommand\stylename{\name@idx{document style}}% +\def\name@idx#1#2{% + {\ttfamily#2}% + \index{#2\space#1=\string\ttt{#2}\space#1}\index{#1>#2=\string\ttt{#2}}% +}% +\newcommand*\margcs[1]{\marginnote{\raggedleft\scriptsize #1}}% +\newcommand*\package[1]{\texttt{#1}\index{#1=\string\ttt{#1}}}% +\newcommand*\mco[1]{\mbox{\LANGLE\itshape#1\RANGLE}\index{#1, class option value}\index{class option value>#1}}% +% +\renewcommand\@biblabel[1]{\makebox[1.5cm][l]{[#1]}} +%\renewcommand*\l@subsection{\@dottedtocline{2}{1.2em}{2.8em}} +%\renewcommand*\l@subsubsection{\@dottedtocline{3}{2.4em}{3.7em}} +\makeatother +% +\setlength\parindent{0pt}% +\hypersetup{pdfauthor={Josef Kleber},pdftitle={A style file for typesetting Killer Sudoku logic puzzles},pdfsubject={Documentation for LaTeX style \filename}}% +% +\begin{document} +\title{\filename}% +\Subtitle{A style file for typesetting Killer Sudoku logic puzzles}% +\author{Josef Kleber} +\Fileversion{v1.0} +\Refline{\href{mailto:josef.kleber@gmx.de}{\texttt{josef.kleber@gmx.de}}\\\href{https://bitbucket.org/kleberj/logicpuzzle/}{\texttt{https://bitbucket.org/kleberj/logicpuzzle/}}} +\newsavebox\logo +\savebox\logo{% + \begin{killersudoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \end{killersudoku} + \hspace{1.5cm} + \begin{killersudoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \setrow{4}{3,2,4,1} + \setrow{3}{4,1,3,2} + \setrow{2}{2,4,1,3} + \setrow{1}{1,3,2,4} + \end{killersudoku} +} +\maketitle +\tableofcontents +\clearpage + +\section{The puzzle} +Fill the cells with the numbers from 1 to SIZE of the puzzle. The numbers may occur only once in each row, column and colored area if specified. In the top left corner of a framed area, you will find the sum of the entered numbers. The numbers of an area may not necessarily be different, when they are in different rows or columns. But they must be different, when additional colored areas are specified. Here's a little self-explanatory example: + +\begin{center} + \usebox\logo +\end{center} + +\bigskip +\begin{lstlisting} +\begin{killersudoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \end{killersudoku} + \hspace{1.5cm} + \begin{killersudoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \setrow{4}{3,2,4,1} + \setrow{3}{4,1,3,2} + \setrow{2}{2,4,1,3} + \setrow{1}{1,3,2,4} + \end{killersudoku} +\end{lstlisting} +\lstset{basicstyle=\ttfamily\normalsize} + +\section{Options} +\begin{optionlist} + \optitem{\styleoption{rows}}{5}{defines the number of rows in the grid.} + \optitem{\styleoption{columns}}{5}{specifies the number of columns in the grid} + \optitem{\styleoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.} + \optitem{\styleoption{scale}}{1}{scales the size of the grid in the minipage.} + \optitem{\styleoption{fontsize}}{Large}{specifies the size of the numbers next to the grid. Here, the usual \LaTeX\ sizes are used. Possible values: \texttt{tiny}, \texttt{scriptsize}, \texttt{footnotesize}, \texttt{small}, \texttt{normalsize}, \texttt{large}, \underline{\texttt{Large}}, \texttt{LARGE}, \texttt{huge}, \texttt{Huge}} + \optitem{\styleoption{title}}{}{sets the title of a puzzle.} + \optitem{\styleoption{titleindent}}{0cm}{defines the indent of the title.} + \optitem{\styleoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.} + \optitem{\styleoption{bgcolor}}{}{sets the background color of the grid.} + \optitem{\styleoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right} + \optitem{\styleoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.} +\end{optionlist} + +\section{Environments} +\subsection{\texttt{killersudoku}} +The \env{killersudoku} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{killersudoku}\oarg{options}\\\dots\\\enve{killersudoku}} is the central core of the style file. With the optional argument of the environment, you can reset the options with local scope. Here, a blank grid is created. +\subsection{\texttt{puzzlebackground}} +The \env{puzzlebackground} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{puzzlebackground}\\\dots\\\enve{puzzlebackground}} allows you to place elements behind the main layer. This is for example usefull for the \cmd\fillarea\ command. +\subsection{\texttt{puzzleforeground}} +The \env{puzzleforeground} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{puzzleforeground}\\\dots\\\enve{puzzleforeground}} allows you to place elements in front of the main layer. This is for example usefull for the \cmd\framearea\ command. +\section{Commands} +\subsection{In the grid and around} +\subsubsection{\texttt{killersudokucell}} +The command \cs{killersudokucell}\margcs{\cmd\killersudokucell\\\{\marg{column}\}\{\marg{row}\}\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column} \marg{row}. +\subsubsection{\texttt{setrow}} +The command \cs{setrow}\margcs{\cmd\setrow\{\marg{row}\}\{\marg{csv list}\}} sets the contents of \marg{row}. It expects a comma-separated list. +\subsubsection{\texttt{setcolumn}} +The command \cs{setcolumn}\margcs{\cmd\setcolumn\{\marg{column}\}\{\marg{csv list}\}} sets the contents of \marg{column}. +\subsubsection{\texttt{setrule}} +With\margcs{\cmd\setrule\{\{\marg{column}\}\{\marg{row}\}\\\{\marg{rule}\}} the \cmd\setrule\ command, you can set a calculation rule \marg{rule} into the top left corner of cell \marg{column}\marg{row}. The rule is typeset in inline math mode. You might consider using the \cmd\times\ and \cmd\div\ commands. +\subsubsection{\texttt{framearea}} +The command \cs{framearea}\margcs{\cmd\framearea\{\marg{color}\}\{\marg{\cmd\tikz\ path}\}} frames the area given by \marg{\cmd\tikz\ path} with color \marg{color}. The reference for coordinates is the bottom left corner of the cell. + +\begin{lstlisting} +\framearea{green}{(2,2)--(2,3)--(3,3)--(3,2)--(2,2)} +\end{lstlisting} + +This command will color the frame of the grid cell \texttt{(2,2)} green. You should consider using this command in the \env{puzzleforeground} environment. + +\subsubsection{\texttt{colorarea}} +The command \cs{colorarea}\margcs{\cmd\colorarea\{\marg{color}\}\{\marg{\cmd\tikz\ path}\}} fills the area given by \marg{\cmd\tikz\ path} with color \marg{color}, but without frame. The reference for coordinates is the bottom left corner of the cell. You should consider using this command in the \env{puzzlebackground} environment. + +\subsubsection{\texttt{tikzpath}} +With\margcs{\cmd\tikzpath\{\oarg{column}\}\{\oarg{row}\}\\\{\oarg{csv list}\}} the \cmd\tikzpath\ command, you can easily construct a \cmd\tikz\ path. You just need to define a starting point \marg{column}\marg{row} (bottom left corner) and a \marg{csv list} with direction indicators relative to the current position. + +\begin{center} +\begin{tabular}{rlrlrl} +7: & up left & 8: & up & 9: & up right \\ +4: & left & 5: & no change & 6: & right \\ +1: & down left & 2: & down & 3: & down right \\ +\end{tabular} +\end{center} + +\begin{lstlisting} +\framearea{green}{\tikzpath{2}{2}{8,6,2,4}} +\end{lstlisting} + +This command will frame grid cell \texttt{(2,2)} green. +\subsection{Presentation} +\subsubsection{\texttt{definecounterstyle}} +The command \cs{definecounterstyle}\margcs{\cmd\definecounterstyle\{\marg{name}\}\\\{\marg{definition}\}} allows you to define your own styles. For example, the style \texttt{left} is defined as follows: + +\begin{lstlisting} +\definecounterstyle{left}{ + \begingroup\reversemarginpar\marginnote{ + \tikz\node[shape=rectangle,fill=yellow!40,inner sep=7pt, + draw,rounded corners=3pt,thick] + {\Huge\puzzlecounter};}[\LP@cvoffset]\endgroup} +} +\end{lstlisting} + +To typeset the counter into the margin we use the command \cmd\marginnote. We need to use the command \cmd\reversemarginpar\ to set the counter into the left margin. Of course, we must use this command in a group for local scope. Finally we use \cmd\puzzlecounter\ in a \cmd\tikz\ node with a vertical offset set with the option \styleoption{cvoffset}. +\subsubsection{\texttt{puzzlecounter}} +The command \cs{puzzlecounter}\margcs{\cmd\puzzlecounter} provides the counter in textual form to use it for example in \cmd\definecounterstyle. +\subsubsection{\texttt{titleformat}} +With the command \cs{titleformat}\margcs{\cmd\titleformat\{\marg{format}\}}, you can define the format of the title. By default, the definition is as follows: + +\begin{lstlisting} +\titleformat{\centering\Large\color{blue}} +\end{lstlisting} +\subsection{Miscellaneous} +\subsubsection{\texttt{killersudokusetup}} +With the command \cs{killersudokusetup}\margcs{\cmd\killersudokusetup\{\marg{options}\}} you can reset the options with global scope. +\subsubsection{\texttt{setpuzzlecounter}} +With the command \cs{setpuzzlecounter}\margcs{\cmd\setpuzzlecounter\{\marg{number}\}}, you can reset the puzzle counter, for example before the solutions. + +\section{Examples \& Solutions} +You\IfFileExists{qrcode.png}{\marginnote{\href{https://bitbucket.org/kleberj/logicpuzzle/}{\includegraphics[height=2cm]{qrcode.png}}}[-31pt]}{} can download application examples and their solutions from the \href{https://bitbucket.org/kleberj/logicpuzzle/}{project page}. The puzzles are originally licensed under \href{http://creativecommons.org/licenses/by-nc-sa/3.0/}{\ccbyncsa}. +\end{document} diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku_README b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku_README new file mode 100644 index 00000000000..c3ea70ad778 --- /dev/null +++ b/Master/texmf-dist/doc/latex/logicpuzzle/killersudoku/killersudoku_README @@ -0,0 +1,8 @@ +The package enables the user to typeset Killer Sudoku logic puzzles +(aka Samunapure, Sum Number Place, Sumdoku, Gebietssummen, ...) +Fill the cells with the numbers from 1 to SIZE of the puzzle. +The numbers may occur only once in each row, column and colored area +if specified. In the top left corner of a framed area, you will find +the sum of the entered numbers. The numbers of an area may not +necessarily be different, when they are in different rows or columns. +But they must be different, when additional colored areas are specified.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.pdf b/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.pdf Binary files differindex 70d6cf40932..ae9450d91af 100644 --- a/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.pdf +++ b/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.pdf diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.tex b/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.tex index c494322db5b..eee20b9e3a7 100644 --- a/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.tex +++ b/Master/texmf-dist/doc/latex/logicpuzzle/logicpuzzle/logicpuzzle.tex @@ -18,7 +18,16 @@ \usepackage{marginnote}% \usepackage[svgnames,rgb]{xcolor}% \usepackage[automark,nouppercase]{scrpage2} -\usepackage[width=5cm,scale=0.84,fontsize=normalsize]{chaossudoku}% +\usepackage[width=4.5cm,scale=0.85]{ddsudoku} +\usepackage[width=4.5cm,scale=0.77,sbindent=0.65cm,sbwidth=3.6cm]{battleship} +\usepackage[width=4.5cm,scale=0.65]{bokkusu} +\usepackage[width=4.5cm,scale=0.89]{chaossudoku}% +\usepackage[width=4.5cm,scale=0.89]{hakyuu} +\usepackage[width=4.5cm,scale=0.85]{hitori} +\usepackage[width=4.5cm,scale=0.89]{kendoku} +\usepackage[width=4.5cm,scale=0.89]{killersudoku} +\usepackage[width=4.5cm,scale=0.66]{skyline} +\usepackage[width=4.5cm,scale=0.49]{lpsudoku} \usepackage{hyperref} % \setlength{\headheight}{1.1\baselineskip}% @@ -36,7 +45,7 @@ \makeatother \AtBeginDocument{\IfFileExists{qrcode.png}{}{\write18{wget -O qrcode.png http://i.imgur.com/KAunnuS.png}}}% \hypersetup{colorlinks=true,urlcolor=NavyBlue,linkcolor=NavyBlue,citecolor=CornflowerBlue,naturalnames=true,hypertexnames=false}% -\lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny,basicstyle=\ttfamily,aboveskip=\baselineskip,frame=single,backgroundcolor=\color{LightGoldenrodYellow},keywordstyle=\color{Blue},emph={battleship,puzzlebackground,puzzleforeground,center,pgfonlayer,chaossudoku,left,shape,fill,inner,sep,draw,rounded,corners,thick}, emphstyle=\color{Tomato},emph={[2]Wheat,HotPink,GreenYellow,LightBlue,LightSalmon,LightYellow,green,sudoku,rows,columns,scale,layer,clor,bgcolor,counterstyle,title,titleindent,titlewidth,cvoffset,width},emphstyle={[2]\color{OliveDrab}},morekeywords={LP@definecolor,LP@define@choicekey@fontsize,ExecuteOptionsX,ProcessOptionsX,LP@init@counter,valueH,valueV,sumH,sumV,LP@bottomrow,LP@toprow,LP@rightcolumn,bokkususetup,setkeys,LP@set@package,LP@set@env@prefix,ifthenelse,equal,LP@drawbackground,LP@drawgrid,LP@drawcounter,ProvidesPackage,RequirePackage,LP@BK@init@prefix,LP@BK@init@package,LP@leftcolumn,skylineL,LP@define@key,framearea,fillarea,chaossudokucell,setrow,LP@cvoffset,titleformat,definecounterstyle,marginnote,tikz,node,puzzlecounter,color,[,]}} +\lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny,basicstyle=\ttfamily,aboveskip=\baselineskip,frame=single,backgroundcolor=\color{LightGoldenrodYellow},keywordstyle=\color{Blue},emph={battleship,puzzlebackground,puzzleforeground,center,pgfonlayer,chaossudoku,left,shape,fill,inner,sep,draw,rounded,corners,thick}, emphstyle=\color{Tomato},emph={[2]Wheat,HotPink,GreenYellow,LightBlue,LightSalmon,LightYellow,green,sudoku,rows,columns,scale,layer,clor,bgcolor,counterstyle,title,titleindent,titlewidth,cvoffset,width},emphstyle={[2]\color{OliveDrab}},morekeywords={LP@definecolor,LP@define@choicekey@fontsize,ExecuteOptionsX,ProcessOptionsX,LP@init@counter,valueH,valueV,sumH,sumV,LP@bottomrow,LP@toprow,LP@rightcolumn,bokkususetup,setkeys,LP@set@package,LP@set@env@prefix,ifthenelse,equal,LP@drawbackground,LP@drawgrid,LP@drawcounter,ProvidesPackage,RequirePackage,LP@BK@init@prefix,LP@BK@init@package,LP@leftcolumn,skylineL,LP@define@key,framearea,fillarea,tikzpath,setrule,colorarea,chaossudokucell,setrow,LP@cvoffset,titleformat,definecounterstyle,marginnote,tikz,node,puzzlecounter,color,[,]}} \makeatletter \renewcommand{\maketitle}% {% @@ -153,7 +162,9 @@ }% % \renewcommand\@biblabel[1]{\makebox[1.5cm][l]{[#1]}} -\renewcommand*\l@paragraph{\@dottedtocline{3}{7em}{4.7em}} +\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{3.1em}} +\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.6em}{3.2em}} +\renewcommand*\l@paragraph{\@dottedtocline{3}{7.8em}{5em}} \renewenvironment{theindex} {\if@twocolumn \@restonecolfalse @@ -172,7 +183,7 @@ \c@secnumdepth\m@ne \phantomsection% \twocolumn%[\section{\indexname}]% - %\addcontentsline{toc}{section}{Index}% + \addcontentsline{toc}{section}{Index}% \c@secnumdepth\save@secnumdepth %\thispagestyle{plain} \parindent\z@ @@ -188,7 +199,7 @@ \title{\filename}% \Subtitle{A style file for typesetting logic puzzles}% \author{Josef Kleber} -\Fileversion{v1.3} +\Fileversion{v1.8} \Refline{\href{mailto:josef.kleber@gmx.de}{\texttt{josef.kleber@gmx.de}}\\\href{https://bitbucket.org/kleberj/logicpuzzle/}{\texttt{https://bitbucket.org/kleberj/logicpuzzle/}}} \newsavebox\logo \savebox\logo{% @@ -228,6 +239,316 @@ \clearpage \setlength\parskip{6pt}% +\section{Supported puzzles} +\subsection{2D-Sudoku} +\begin{center} + \begin{ddsudoku} + \framepuzzle + \filldiagonals[orange!50] + \ddsudokucell{1}{5}{1} + \ddsudokucell{1}{4}{3} + \ddsudokucell{2}{3}{4} + \ddsudokucell{4}{1}{3} + \ddsudokucell{4}{3}{2} + \ddsudokucell{5}{4}{4} + \end{ddsudoku} + \hspace{1,5cm} + \begin{ddsudoku} + \framepuzzle + \filldiagonals[orange!50] + \setrow{5}{1,3,4,5,2} + \setrow{4}{3,2,5,1,4} + \setrow{3}{5,4,3,2,1} + \setrow{2}{2,5,1,4,3} + \setrow{1}{4,1,2,3,5} + \end{ddsudoku} +\end{center} +\subsection{Battleship} +\begin{center} +\begin{battleship} +\placesegment{4}{1}{\ShipR} +\shipH{4,1,2,2,2} +\shipV{3,1,4,0,3} +\shipbox{3,3,2,2,1} +\end{battleship} +\hspace{1.5cm} +\begin{battleship} +\placeship{V}{1}{1}{3} +\placeship{H}{1}{5}{2} +\placeship{H}{3}{1}{2} +\placeship{H}{3}{3}{3} +\placeship{H}{5}{5}{1} +\shipH{4,1,2,2,2} +\shipV{3,1,4,0,3} +\end{battleship} +\end{center} +\subsection{Bokkusu} +\begin{center} + \begin{bokkusu} + \valueH{1,2,3,4,5} + \valueV{1,2,3,4,5} + \sumH{7,1,11,9,6} + \sumV{2,12,5,13,?} + \end{bokkusu} + \hspace{1.5cm} + \begin{bokkusu} + \valueH{1,2,3,4,5} + \valueV{1,2,3,4,5} + \sumH{7,1,11,9,6} + \sumV{2,12,5,13,?} + \fillrow{1}{0,1,0,0,0} + \fillrow{2}{0,0,1,1,1} + \fillrow{3}{1,0,0,1,0} + \fillrow{4}{1,0,1,1,1} + \fillrow{5}{0,0,1,0,0} + \end{bokkusu} +\end{center} +\subsection{Chaos Sudoku} +\begin{center} + \begin{chaossudoku} + \chaossudokucell{1}{1}{3} + \chaossudokucell{1}{5}{4} + \chaossudokucell{3}{2}{4} + \chaossudokucell{4}{2}{5} + \chaossudokucell{5}{5}{2} + \begin{puzzlebackground} + \fillarea{Wheat}{(1,1)--(1,2)--(2,2)--(2,3)--(4,3)--(4,1)--(1,1)} + \fillarea{HotPink!30}{(1,2)--(1,6)--(3,6)--(3,5)--(2,5)--(2,2)--(1,2)} + \fillarea{GreenYellow}{(2,3)--(2,5)--(3,5)--(3,4)--(5,4)--(5,2)--(4,2)--(4,3)--(2,3)} + \fillarea{LightBlue}{(3,4)--(3,6)--(6,6)--(6,5)--(5,5)--(5,4)--(3,4)} + \fillarea{LightYellow}{(4,1)--(4,2)--(5,2)--(5,5)--(6,5)--(6,1)--(4,1)} + \end{puzzlebackground} + \end{chaossudoku} + \hspace{1,5cm} + \begin{chaossudoku} + \setrow{5}{4,3,5,1,2} + \setrow{4}{2,1,3,4,5} + \setrow{3}{5,4,2,3,1} + \setrow{2}{1,2,4,5,3} + \setrow{1}{3,5,1,2,4} + \begin{puzzlebackground} + \fillarea{Wheat}{\tikzpath{1}{1}{8,6,8,6,6,2,2,4,4,4}} + \fillarea{HotPink!30}{\tikzpath{1}{2}{8,8,8,8,6,6,2,4,2,2,2,4}} + \fillarea{GreenYellow}{\tikzpath{2}{3}{8,8,6,2,6,6,2,2,4,8,4,4}} + \fillarea{LightBlue}{\tikzpath{3}{4}{8,8,6,6,6,2,4,2,4,4}} + \fillarea{LightYellow}{\tikzpath{4}{1}{8,6,8,8,8,6,2,2,2,2,4,4}} + \end{puzzlebackground} + \end{chaossudoku} +\end{center} +\subsection{Hakyuu} +\begin{center} + \begin{hakyuu} + \hakyuucell{1}{5}{2} + \hakyuucell{3}{5}{6} + \hakyuucell{4}{5}{5} + \hakyuucell{4}{4}{4} + \hakyuucell{1}{3}{3} + \hakyuucell{2}{2}{2} + \hakyuucell{5}{2}{5} + \hakyuucell{4}{1}{1} + \begin{puzzlebackground} + \fillarea{Wheat}{(1,1)--(1,4)--(2,4)--(2,1)--(1,1)} + \fillarea{HotPink!30}{(1,4)--(1,6)--(6,6)--(6,5)--(3,5)--(3,4)--(1,4)} + \fillarea{GreenYellow}{(2,4)--(3,4)--(3,5)--(5,5)--(5,4)--(4,4)--(4,3)--(2,3)--(2,4)} + \fillarea{LightBlue}{(5,5)--(6,5)--(6,3)--(4,3)--(4,4)--(5,4)--(5,5)} + \fillarea{LightSalmon!50}{(2,2)--(2,3)--(5,3)--(5,2)--(2,2)} + \fillarea{LightYellow}{(2,1)--(2,2)--(5,2)--(5,3)--(6,3)--(6,1)--(2,1)} + \end{puzzlebackground} + \end{hakyuu} + \hspace{1,5cm} + \begin{hakyuu} + \setrow{5}{2,3,6,5,4} + \setrow{4}{1,7,3,4,2} + \setrow{3}{3,1,2,1,3} + \setrow{2}{1,2,1,3,5} + \setrow{1}{2,3,4,1,2} + \begin{puzzlebackground} + \fillarea{Wheat}{(1,1)--(1,4)--(2,4)--(2,1)--(1,1)} + \fillarea{HotPink!30}{(1,4)--(1,6)--(6,6)--(6,5)--(3,5)--(3,4)--(1,4)} + \fillarea{GreenYellow}{(2,4)--(3,4)--(3,5)--(5,5)--(5,4)--(4,4)--(4,3)--(2,3)--(2,4)} + \fillarea{LightBlue}{(5,5)--(6,5)--(6,3)--(4,3)--(4,4)--(5,4)--(5,5)} + \fillarea{LightSalmon!50}{(2,2)--(2,3)--(5,3)--(5,2)--(2,2)} + \fillarea{LightYellow}{(2,1)--(2,2)--(5,2)--(5,3)--(6,3)--(6,1)--(2,1)} + \end{puzzlebackground} + \end{hakyuu} +\end{center} +\subsection{Hitori} +\begin{center} + \begin{hitori} + \framepuzzle + \setcolorrow{5}{2,4,2,1,1} + \setcolorrow{4}{1,3,2,4,1} + \setcolorrow{3}{1,3,3,3,2} + \setcolorrow{2}{4,2,1,3,3} + \setcolorrow{1}{4,1,2,2,3} + \end{hitori} + \hspace{1.5cm} + \begin{hitori} + \framepuzzle + \setcolorrow{5}{2,4,0,1,0} + \setcolorrow{4}{0,3,2,4,1} + \setcolorrow{3}{1,0,3,0,2} + \setcolorrow{2}{4,2,1,3,0} + \setcolorrow{1}{0,1,0,2,3} + \end{hitori} +\end{center} +\subsection{Kendoku} +\begin{center} + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \end{kendoku} + \hspace{1.5cm} + \begin{kendoku} + \framearea{black}{\tikzpath{1}{1}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{1}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{1}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{2}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{2}{4}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{1}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{3}{4}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{4}{1}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{2}{8,6,6,2,4,4}} + \framearea{black}{\tikzpath{4}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{5}{3}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{4}{8,6,2,4}} + \framearea{black}{\tikzpath{5}{5}{8,6,2,4}} + \setrule{1}{2}{8\times} + \setrule{1}{3}{5} + \setrule{1}{5}{4+} + \setrule{2}{3}{60\times} + \setrule{2}{5}{2\div} + \setrule{3}{2}{2-} + \setrule{3}{5}{75\times} + \setrule{4}{1}{8+} + \setrule{4}{2}{1-} + \setrule{4}{4}{2\times} + \setrule{5}{3}{1} + \setrule{5}{5}{2} + \setrow{5}{1,4,3,5,2} + \setrow{4}{3,2,5,1,4} + \setrow{3}{5,3,4,2,1} + \setrow{2}{2,5,1,4,3} + \setrow{1}{4,1,2,3,5} + \end{kendoku} +\end{center} +\subsection{Killer Sudoku} +\begin{center} + \begin{killersudoku}[columns=4,rows=4,scale=1.11] + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \end{killersudoku} + \hspace{1.5cm} + \begin{killersudoku}[columns=4,rows=4,scale=1.11] + \framearea{black}{\tikzpath{1}{1}{8,8,6,6,2,4,2,4}} + \framearea{black}{\tikzpath{1}{3}{8,8,6,2,2,4}} + \framearea{black}{\tikzpath{2}{1}{8,6,6,6,2,4,4,4}} + \framearea{black}{\tikzpath{2}{3}{8,8,6,2,6,2,4,4}} + \framearea{black}{\tikzpath{3}{2}{8,6,8,6,2,2,4,4}} + \framearea{black}{\tikzpath{3}{4}{8,6,6,2,4,4}} + \begin{puzzlebackground} + \colorarea{orange!20}{\tikzpath{1}{1}{8,8,6,6,2,2,4,4}} + \colorarea{orange!20}{\tikzpath{3}{3}{8,8,6,6,2,2,4,4}} + \end{puzzlebackground} + \setrule{1}{2}{7} + \setrule{1}{4}{7} + \setrule{2}{1}{9} + \setrule{2}{4}{6} + \setrule{3}{4}{5} + \setrule{4}{3}{6} + \setrow{4}{3,2,4,1} + \setrow{3}{4,1,3,2} + \setrow{2}{2,4,1,3} + \setrow{1}{1,3,2,4} + \end{killersudoku} +\end{center} +\subsection{Skyline} +\begin{center} + \begin{skyline} + \skylineB{3,{},3,1,{}} + \skylineL{{},4,3,{},{}} + \skylineT{{},{},2,{},3} + \skylineR{{},1,3,{},{}} + \skylinecell{1}{3}{2} + \skylinecell{4}{2}{3} + \end{skyline} + \hspace{1.5cm} + \begin{skyline} + \skylineB{3,{},3,1,{}} + \skylineL{{},4,3,{},{}} + \skylineT{{},{},2,{},3} + \skylineR{{},1,3,{},{}} + \setrow{5}{5,4,3,1,2} + \setrow{4}{4,5,1,2,3} + \setrow{3}{2,3,5,4,1} + \setrow{2}{1,2,4,3,5} + \setrow{1}{3,1,2,5,4} + \end{skyline} +\end{center} +\subsection{Sudoku} +\begin{center} + \begin{lpsudoku} + \setrow{9}{{},2,6,{},{},{},{},{},{}} + \setrow{8}{{},{},{},{},{},{},1,7,{}} + \setrow{7}{{},{},3,1,{},6,{},{},{}} + \setrow{6}{{},6,{},{},5,{},8,{},3} + \setrow{5}{{},{},9,2,6,1,7,{},{}} + \setrow{4}{5,{},4,{},8,{},{},6,{}} + \setrow{3}{{},{},{},8,{},4,3,{},{}} + \setrow{2}{{},4,8,{},{},{},{},{},{}} + \setrow{1}{{},{},{},{},{},{},9,4,{}} +\end{lpsudoku} + \hspace{1.5cm} + \begin{lpsudoku} + \setrow{9}{1,2,6,5,7,8,4,3,9} + \setrow{8}{4,8,5,9,3,2,1,7,6} + \setrow{7}{7,9,3,1,4,6,5,8,2} + \setrow{6}{2,6,1,4,5,7,8,9,3} + \setrow{5}{8,3,9,2,6,1,7,5,4} + \setrow{4}{5,7,4,3,8,9,2,6,1} + \setrow{3}{6,5,2,8,9,4,3,1,7} + \setrow{2}{9,4,8,7,1,3,6,2,5} + \setrow{1}{3,1,7,6,2,5,9,4,8} +\end{lpsudoku} +\end{center} +\clearpage \section{Roll out your own grid-based logic puzzle} \label{sec:rollout} As an example we take a look at the \package{bokkusu.sty} package. First, we ignore the LPPL license stuff. @@ -329,7 +650,7 @@ Finally, we just end the picture for the puzzle. We draw and step the counter. A \subsection{PGF layers} \label{sec:layer} -The \package{logicpuzzle.sty} package defines the following PGF layers: \layer{LPbgcolor}, \layer{LPbackgroundtwo}, \layer{LPbackground}, \layer{LPforeground} and \layer{LPforegroundtwo} +The \package{logicpuzzle.sty} package defines the PGF layers: \layer{LPdump}, \layer{LPbgcolor}, \layer{LPbackgroundtwo}, \layer{LPbackground}, \layer{LPforeground} and \layer{LPforegroundtwo} Without specifying a special layer, the standard \layer{main} layer is used. The \texttt{LPback\-ground} and \layer{LPforeground} layers can be accessed with the \env{puzzlebackground} [see: \ref{sec:puzzlebackground}] and \env{puzzleforeground} [see: \ref{sec:puzzleforeground}] environments. The \layer{LPbgcolor} is and should only be used for the background color of the grid. @@ -343,10 +664,10 @@ All layers can also be accessed with the generic PGF method: \end{lstlisting} \begin{tabularx}{\textwidth}{lX} -Order: & \layer{LPbgcolor} $\rightarrow$ \layer{LPbackgroundtwo} $\rightarrow$ \layer{LPbackground} $\rightarrow$ \layer{main} $\rightarrow$\newline \layer{LPforeground} $\rightarrow$ \layer{LPforegroundtwo} \\ +Order: & \layer{LPdump} $\rightarrow$ \layer{LPbgcolor} $\rightarrow$ \layer{LPbackgroundtwo} $\rightarrow$ \layer{LPbackground} $\rightarrow$ \layer{main} $\rightarrow$ \layer{LPforeground} $\rightarrow$ \layer{LPforegroundtwo} \\ \end{tabularx} -So, if you are in the need to place something behind \layer{LPbackground} or in front of \layer{LPforeground}, you can use the \layer{LPbackgroundtwo} and \layer{LPforegroundtwo} layers. +So, if you are in the need to place something behind \layer{LPbackground} or in front of \layer{LPforeground}, you can use the \layer{LPbackgroundtwo} and \layer{LPforegroundtwo} layers. You can hide elements like help nodes behind the background color on the \layer{LPdump} layer. \subsection{Environments} \label{sec:env} @@ -422,6 +743,10 @@ The\margcs{\cmd\LP@setcolumncontents\{\marg{csv list}\}\\\{\marg{column}\}\{\mar \label{sec:setcolorcolumn} With\margcs{\cmd\setcolorcolumn\\\{\marg{column}\}\{\marg{csv list}\}} the \cmd\setcolorcolumn\ command, you can set the contents of a \marg{column}. Furthermore, the background of the cell is filled with color \texttt{LP@c@romannumber} [see: \ref{sec:LPdefinecolor}]. +\paragraph{\texorpdfstring{\cs{setrule}}{\textbackslash setrule}} +\label{sec:setrule} +With\margcs{\cmd\setrule\{\{\marg{column}\}\{\marg{row}\}\\\{\marg{rule}\}} the \cmd\setrule\ command, you can set a calculation rule \marg{rule} into the top left corner of cell \marg{column}\marg{row}. The rule is typeset in inline math mode. You might consider using the \cmd\times\ and \cmd\div\ commands. + \paragraph{\texorpdfstring{\cs{fillcell}}{\textbackslash fillcell}} \label{sec:fillcell} With\margcs{\cmd\fillcell\{\{\marg{column}\}\{\marg{row}\}} the \cmd\fillcell\ command, you can fill cell \marg{column}\marg{row} with the color defined with environment option \styleoption{color}\footnote{Therefore, you must define an option \styleoption{color} in the style file you want to use fill commands}. It is aware of the current values of the surrounding envionment options \styleoption{rows}, \styleoption{columns}, \styleoption{scale} and \styleoption{color}. Furthermore, a check if the cell is within the grid is applied. @@ -452,10 +777,32 @@ This command will color the frame of the grid cell \texttt{(2,2)} green. You sho \label{sec:fillarea} The command \cmd\fillarea\margcs{\cmd\fillarea\{\marg{color}\}\{\marg{tikz path}\}} fills the area given by \marg{tikz path} with color \marg{color}. The reference for coordinates is the bottom left corner of the cell. You should consider using this command in the \env{puzzlebackground} [see: \ref{sec:puzzlebackground}] environment. +\paragraph{\texorpdfstring{\cs{colorarea}}{\textbackslash colorarea}} +\label{sec:colorarea} +The command \cmd\colorarea\margcs{\cmd\colorarea\{\marg{color}\}\{\marg{tikz path}\}} fills the area given by \marg{tikz path} with color \marg{color} -- just like \cmd\framearea\ without frame. + \paragraph{\texorpdfstring{\cs{framepuzzle}}{\textbackslash framepuzzle}} \label{sec:framepuzzle} With\margcs{\cmd\framepuzzle[\oarg{color}]} the \cmd\framepuzzle\ command, you can frame the grid (thicker line) with the color specified with the optional argument \oarg{color} (default: black). +\paragraph{\texorpdfstring{\cs{tikzpath}}{\textbackslash tikzpath}} +\label{sec:tikzpath} +With\margcs{\cmd\tikzpath\{\oarg{column}\}\{\oarg{row}\}\\\{\oarg{csv list}\}} the \cmd\tikzpath\ command, you can easily construct a \cmd\tikz\ path. You just need to define a starting point \marg{column}\marg{row} (bottom left corner) and a \marg{csv list} with direction indicators relative to the current position. + +\begin{center} +\begin{tabular}{rlrlrl} +7: & up left & 8: & up & 9: & up right \\ +4: & left & 5: & no change & 6: & right \\ +1: & down left & 2: & down & 3: & down right \\ +\end{tabular} +\end{center} + +\begin{lstlisting} +\framearea{green}{\tikzpath{2}{2}{8,6,2,4}} +\end{lstlisting} + +This command will frame grid cell \texttt{(2,2)} green. + \paragraph{\texorpdfstring{\cs{LP@ingrid}}{\textbackslash LP@ingrid}} \label{sec:LPingrid} With\margcs{\cmd\LP@ingrid\\\{\marg{column}\}\{\marg{row}\}\{\marg{max column}\}\\\{\marg{max row}\}\{\marg{package}\}} the \cmd\LP@ingrid\ command, you can check if an element -- that should be placed -- is within the grid. Otherwise an error message is issued. diff --git a/Master/texmf-dist/doc/latex/logicpuzzle/manifest.txt b/Master/texmf-dist/doc/latex/logicpuzzle/manifest.txt index 431491eb61f..2da23682451 100644 --- a/Master/texmf-dist/doc/latex/logicpuzzle/manifest.txt +++ b/Master/texmf-dist/doc/latex/logicpuzzle/manifest.txt @@ -10,6 +10,8 @@ chaossudoku.sty ddsudoku.sty hakyuu.sty hitori.sty +kendoku.sty +killersudoku.sty lpsudoku.sty skyline.sty @@ -17,6 +19,7 @@ skyline.sty createlpsudoku lpsmag +simple.smc (config file) -- Documentation -- @@ -32,6 +35,10 @@ hakyuu.pdf hakyuu.tex hitori.pdf hitori.tex +kendoku.pdf +kendoku.tex +killersudoku.pdf +killersudoku.tex lpsudoku.pdf lpsudoku.tex skyline.pdf diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/createlpsudoku b/Master/texmf-dist/scripts/logicpuzzle/createlpsudoku index 7738198e33a..7738198e33a 100644..100755 --- a/Master/texmf-dist/tex/latex/logicpuzzle/createlpsudoku +++ b/Master/texmf-dist/scripts/logicpuzzle/createlpsudoku diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/lpsmag b/Master/texmf-dist/scripts/logicpuzzle/lpsmag index 9e7725b1b47..9e7725b1b47 100644..100755 --- a/Master/texmf-dist/tex/latex/logicpuzzle/lpsmag +++ b/Master/texmf-dist/scripts/logicpuzzle/lpsmag diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/simple.smc b/Master/texmf-dist/scripts/logicpuzzle/simple.smc index 0ec2d162199..0ec2d162199 100644..100755 --- a/Master/texmf-dist/tex/latex/logicpuzzle/simple.smc +++ b/Master/texmf-dist/scripts/logicpuzzle/simple.smc diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/battleship.sty b/Master/texmf-dist/tex/latex/logicpuzzle/battleship.sty index 3dfde6d9a5a..7e5739cac8b 100644 --- a/Master/texmf-dist/tex/latex/logicpuzzle/battleship.sty +++ b/Master/texmf-dist/tex/latex/logicpuzzle/battleship.sty @@ -23,7 +23,7 @@ % http://en.wikipedia.org/wiki/Battleship_%28puzzle%29 % http://de.wikipedia.org/wiki/Bimaru % -\ProvidesPackage{battleship}[2013/03/25 battleship.sty v1.4 - Josef Kleber (C) 2013]% +\ProvidesPackage{battleship}[2013/04/10 battleship.sty v1.4a - Josef Kleber (C) 2013]% % \RequirePackage{logicpuzzle}% % @@ -141,15 +141,15 @@ \ifnum\value{LP@counti}=1% \placesegment{#2}{#3}{\Ship}% \else% - \setcounter{LP@whiledo}{\value{LP@counti}}% - \addtocounter{LP@whiledo}{-2}% length of middle ship + \setcounter{LP@whiledo@i}{\value{LP@counti}}% + \addtocounter{LP@whiledo@i}{-2}% length of middle ship \ifthenelse{\equal{#1}{V}}% {% \placesegment{#2}{#3}{\ShipB}% \setcounter{LP@countii}{#3}% - \whiledo{\value{LP@whiledo}>0}% + \whiledo{\value{LP@whiledo@i}>0}% {% - \addtocounter{LP@whiledo}{-1}% + \addtocounter{LP@whiledo@i}{-1}% \stepcounter{LP@countii}% \placesegment{#2}{\theLP@countii}{\ShipC}% }% @@ -161,9 +161,9 @@ {% \placesegment{#2}{#3}{\ShipL}% \setcounter{LP@counti}{#2}% - \whiledo{\value{LP@whiledo}>0}% + \whiledo{\value{LP@whiledo@i}>0}% {% - \addtocounter{LP@whiledo}{-1}% + \addtocounter{LP@whiledo@i}{-1}% \stepcounter{LP@counti}% \placesegment{\theLP@counti}{#3}{\ShipC}% }% diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/kendoku.sty b/Master/texmf-dist/tex/latex/logicpuzzle/kendoku.sty new file mode 100644 index 00000000000..b537ef05292 --- /dev/null +++ b/Master/texmf-dist/tex/latex/logicpuzzle/kendoku.sty @@ -0,0 +1,79 @@ +%% +%% Copyright (C) 2013 by: +%% Josef Kleber +%% <josef.kleber@gmx.de> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "author-maintained". +%% +%% The Current Maintainer of this work is Josef Kleber. +%% +%% This work consists of all files listed in manifest.txt. +%% +% +\ProvidesPackage{kendoku}[2013/04/12 kendoku.sty v1.0 - Josef Kleber (C) 2013]% +% +\RequirePackage{logicpuzzle}% +% +\newcommand*\LP@KD@init@prefix{LP@KD}% +\newcommand*\LP@KD@init@package{kendoku}% +% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{rows}{5}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{columns}{5}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{scale}{1}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{counterstyle}{none}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{bgcolor}{}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{width}{5.1cm}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{cvoffset}{-23pt}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{title}{}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{titleindent}{0cm}% +\LP@define@key{\LP@KD@init@prefix}{\LP@KD@init@package}{titlewidth}{5.1cm}% +\LP@define@choicekey@fontsize{\LP@KD@init@prefix}{\LP@KD@init@package}{Large}% +% +\ExecuteOptionsX{rows,columns,width,fontsize,scale,bgcolor,cvoffset,counterstyle,title,titleindent,titlewidth}% +% +\ProcessOptionsX\relax% +% +\LP@init@counter{\LP@KD@init@prefix}% +% +\let\kendokucell\setcell% +% +\newcommand*\kendokusetup[1]% +{% + \setkeys{kendoku.sty}{#1}% +}% +% +\newenvironment{kendoku}[1][]% +{% + \setkeys{kendoku}{#1}% + \LP@set@package{kendoku}% + \LP@set@env@prefix{LP@KD}% + \setcounter{LP@KD@rows}{\LP@KD@rows}% + \setcounter{LP@KD@columns}{\LP@KD@columns}% + \stepcounter{LP@KD@rows}% + \stepcounter{LP@KD@columns}% + \begin{minipage}[t]{\LP@KD@width}% + \ifthenelse{\equal{\LP@KD@title}{}}% + {\par\enspace\par}% empty + {\enspace\par\noindent\hspace{\LP@KD@titleindent}\parbox{\LP@KD@titlewidth}{\strut\LP@titleformat\LP@KD@title}\vspace{3mm}\par}% + \begin{tikzpicture}[scale=\LP@KD@scale]% + \LP@drawbackground{1}{1}{\LP@KD@columns}{\LP@KD@rows}{\LP@KD@bgcolor}% + \LP@drawgrid{1}{1}{\LP@KD@columns}{\LP@KD@rows}{1cm}% +}% +{% + \end{tikzpicture}% + \LP@drawcounter{\LP@KD@counterstyle}% + \stepcounter{LP@puzzlecounter}% + \end{minipage}% +}% +% +\endinput%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/killersudoku.sty b/Master/texmf-dist/tex/latex/logicpuzzle/killersudoku.sty new file mode 100644 index 00000000000..5283184faa4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/logicpuzzle/killersudoku.sty @@ -0,0 +1,79 @@ +%% +%% Copyright (C) 2013 by: +%% Josef Kleber +%% <josef.kleber@gmx.de> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "author-maintained". +%% +%% The Current Maintainer of this work is Josef Kleber. +%% +%% This work consists of all files listed in manifest.txt. +%% +% +\ProvidesPackage{killersudoku}[2013/04/12 killersudoku.sty v1.0 - Josef Kleber (C) 2013]% +% +\RequirePackage{logicpuzzle}% +% +\newcommand*\LP@KSDK@init@prefix{LP@KSDK}% +\newcommand*\LP@KSDK@init@package{killersudoku}% +% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{rows}{5}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{columns}{5}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{scale}{1}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{counterstyle}{none}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{bgcolor}{}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{width}{5.1cm}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{cvoffset}{-23pt}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{title}{}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{titleindent}{0cm}% +\LP@define@key{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{titlewidth}{5.1cm}% +\LP@define@choicekey@fontsize{\LP@KSDK@init@prefix}{\LP@KSDK@init@package}{Large}% +% +\ExecuteOptionsX{rows,columns,width,fontsize,scale,bgcolor,cvoffset,counterstyle,title,titleindent,titlewidth}% +% +\ProcessOptionsX\relax% +% +\LP@init@counter{\LP@KSDK@init@prefix}% +% +\let\killersudokucell\setcell% +% +\newcommand*\killersudokusetup[1]% +{% + \setkeys{killersudoku.sty}{#1}% +}% +% +\newenvironment{killersudoku}[1][]% +{% + \setkeys{killersudoku}{#1}% + \LP@set@package{killersudoku}% + \LP@set@env@prefix{LP@KSDK}% + \setcounter{LP@KSDK@rows}{\LP@KSDK@rows}% + \setcounter{LP@KSDK@columns}{\LP@KSDK@columns}% + \stepcounter{LP@KSDK@rows}% + \stepcounter{LP@KSDK@columns}% + \begin{minipage}[t]{\LP@KSDK@width}% + \ifthenelse{\equal{\LP@KSDK@title}{}}% + {\par\enspace\par}% empty + {\enspace\par\noindent\hspace{\LP@KSDK@titleindent}\parbox{\LP@KSDK@titlewidth}{\strut\LP@titleformat\LP@KSDK@title}\vspace{3mm}\par}% + \begin{tikzpicture}[scale=\LP@KSDK@scale]% + \LP@drawbackground{1}{1}{\LP@KSDK@columns}{\LP@KSDK@rows}{\LP@KSDK@bgcolor}% + \LP@drawgrid{1}{1}{\LP@KSDK@columns}{\LP@KSDK@rows}{1cm}% +}% +{% + \end{tikzpicture}% + \LP@drawcounter{\LP@KSDK@counterstyle}% + \stepcounter{LP@puzzlecounter}% + \end{minipage}% +}% +% +\endinput%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/logicpuzzle/logicpuzzle.sty b/Master/texmf-dist/tex/latex/logicpuzzle/logicpuzzle.sty index 74d6b42cbd5..3dcb1fa9c1e 100644 --- a/Master/texmf-dist/tex/latex/logicpuzzle/logicpuzzle.sty +++ b/Master/texmf-dist/tex/latex/logicpuzzle/logicpuzzle.sty @@ -19,7 +19,7 @@ %% %% This work consists of all files listed in manifest.txt. %% -\ProvidesPackage{logicpuzzle}[2013/04/05 logicpuzzle.sty v1.3 - Josef Kleber (C) 2013]% +\ProvidesPackage{logicpuzzle}[2013/04/12 logicpuzzle.sty v1.8 - Josef Kleber (C) 2013]% % \RequirePackage{xkeyval}% \RequirePackage{ifthen}% @@ -28,13 +28,15 @@ \RequirePackage{marginnote}% \RequirePackage{tikz}% \usetikzlibrary{decorations.pathmorphing}% +\pgfdeclarelayer{LPdump}% \pgfdeclarelayer{LPbgcolor}% \pgfdeclarelayer{LPbackgroundtwo}% \pgfdeclarelayer{LPbackground}% \pgfdeclarelayer{LPforeground}% \pgfdeclarelayer{LPforegroundtwo}% -\pgfsetlayers{LPbgcolor,LPbackgroundtwo,LPbackground,main,LPforeground,LPforegroundtwo}% +\pgfsetlayers{LPdump,LPbgcolor,LPbackgroundtwo,LPbackground,main,LPforeground,LPforegroundtwo}% % +\newcounter{LP@counter@unique}% \newcounter{LP@counti}% \newcounter{LP@countii}% \newcounter{LP@whiledo@i}% @@ -54,6 +56,7 @@ \gdef\LP@columns{}% \gdef\LP@scale{1}% \gdef\LP@color{black}% +\gdef\LP@bgcolor{}% \gdef\LP@fontsize\Large% \gdef\LP@cvoffset{0pt}% % @@ -246,6 +249,20 @@ \fi% }% % +\newcommand*\setrule[3]% +{% + \LP@set@LP@scale{\LP@env@prefix}% + \LP@set@LP@bgcolor{\LP@env@prefix}% + \ifthenelse{\equal{\LP@bgcolor}{}}% + {\gdef\LP@sr@bgcolor{white}}% + {\gdef\LP@sr@bgcolor{\LP@bgcolor}}% + \stepcounter{LP@counter@unique}% + \begin{pgfonlayer}{LPdump}% + \node [shape=rectangle,inner sep=0pt] (A_\theLP@counter@unique) at (#1\LP@Pfive,#2\LP@Pfive) {\tikz\draw[scale=\LP@scale,color=\LP@sr@bgcolor] (0.08,0.1) rectangle (0.92,0.9);};% + \end{pgfonlayer}{LPdump} + \node [shape=rectangle,inner sep=0pt,anchor=north west,scale=\LP@scale,font=\tiny] at (A_\theLP@counter@unique.north west) {$#3$};% +}% +% % #1 column % #2 row % #3 content @@ -422,6 +439,46 @@ \draw[ultra thick,fill=#1] #2 ;% }% % +\newcommand*\colorarea[2]% +{% + \fill[color=#1] #2 ;% +}% +% +% #1 column +% #2 row +% #3 csv list of directions +\newcommand*\tikzpath[3]% +{% + (#1,#2)% + \foreach \LP@direction in {#3}% + {% + \ifnum\LP@direction=1% + --++(-1,-1)% + \fi% + \ifnum\LP@direction=2% + --++(0,-1)% + \fi% + \ifnum\LP@direction=3% + --++(1,-1)% + \fi% + \ifnum\LP@direction=4% + --++(-1,0)% + \fi% + \ifnum\LP@direction=6% + --++(1,0)% + \fi% + \ifnum\LP@direction=7% + --++(-1,1)% + \fi% + \ifnum\LP@direction=8% + --++(0,1)% + \fi% + \ifnum\LP@direction=9% + --++(1,1)% + \fi% + };% +}% +% \newcommand*\filldiagonals[1][yellow!20]% {% \LP@set@LP@columns{\LP@env@prefix}% @@ -573,6 +630,11 @@ \expandafter\xdef\expandafter\LP@cvoffset{\csname #1@cvoffset\endcsname}% }% % +\newcommand*\LP@set@LP@bgcolor[1]% +{% + \expandafter\xdef\expandafter\LP@bgcolor{\csname #1@bgcolor\endcsname}% +}% +% \newcommand*\LP@set@LP@fontsize[1]% {% % can't expand \Large @@ -589,4 +651,59 @@ \gdef\LP@package{#1}% }% % +% generic logicpuzzle environment and options +% +\newcommand*\LP@LP@init@prefix{LP@LP}% +\newcommand*\LP@LP@init@package{logicpuzzle}% +% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{rows}{5}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{columns}{5}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{scale}{1}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{counterstyle}{none}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{color}{}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{bgcolor}{}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{width}{5.1cm}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{cvoffset}{-23pt}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{title}{}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{titleindent}{0cm}% +\LP@define@key{\LP@LP@init@prefix}{\LP@LP@init@package}{titlewidth}{5.1cm}% +\LP@define@choicekey@fontsize{\LP@LP@init@prefix}{\LP@LP@init@package}{Large}% +% +\ExecuteOptionsX{rows,columns,width,fontsize,scale,bgcolor,cvoffset,counterstyle,title,titleindent,titlewidth}% +% +\ProcessOptionsX\relax% +% +\LP@init@counter{\LP@LP@init@prefix}% +% +\let\logicpuzzlecell\setcell% +% +\newcommand*\logicpuzzlesetup[1]% +{% + \setkeys{logicpuzzle.sty}{#1}% +}% +% +\newenvironment{logicpuzzle}[1][]% +{% + \setkeys{logicpuzzle}{#1}% + \LP@set@package{logicpuzzle}% + \LP@set@env@prefix{LP@LP}% + \setcounter{LP@LP@rows}{\LP@LP@rows}% + \setcounter{LP@LP@columns}{\LP@LP@columns}% + \stepcounter{LP@LP@rows}% + \stepcounter{LP@LP@columns}% + \begin{minipage}[t]{\LP@LP@width}% + \ifthenelse{\equal{\LP@LP@title}{}}% + {\par\enspace\par}% empty + {\enspace\par\noindent\hspace{\LP@LP@titleindent}\parbox{\LP@LP@titlewidth}{\strut\LP@titleformat\LP@LP@title}\vspace{3mm}\par}% + \begin{tikzpicture}[scale=\LP@LP@scale]% + \LP@drawbackground{1}{1}{\LP@LP@columns}{\LP@LP@rows}{\LP@LP@bgcolor}% + \LP@drawgrid{1}{1}{\LP@LP@columns}{\LP@LP@rows}{1cm}% +}% +{% + \end{tikzpicture}% + \LP@drawcounter{\LP@LP@counterstyle}% + \stepcounter{LP@puzzlecounter}% + \end{minipage}% +}% +% \endinput%
\ No newline at end of file |