% 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{makeidx}
\usepackage{ccicons}
\usepackage{tabularx}
\usepackage{microtype}%
\usepackage{ltxdocext}%
\usepackage{listings}
\usepackage{nicefrac}
\usepackage{filecontents}
\usepackage{marginnote}%
\usepackage[svgnames,rgb]{xcolor}%
\usepackage[automark,nouppercase]{scrpage2}
\usepackage[tocgraduated]{tocstyle}
\usetocstyle{classic}
\usepackage{logicpuzzle}
\usepackage{hyperref}
%
\setlength{\headheight}{1.1\baselineskip}%
%
\let\PrintIndex\relax
\makeindex
\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
            {-2.5ex\@plus -1ex \@minus -.25ex}%
            {1.25ex \@plus .25ex}%
            {\normalfont\normalsize\bfseries}}
\makeatother
\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{5}
\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={ddsudoku, battleship, bokkusu, chaossudoku, hakyuu, hitori, kakuro, kendoku, killersudoku, laserbeam, skyline, slitherlink, lpsudoku, minesweeper, schatzsuche, tentsandtrees, tunnel, bridges, starsandarrows, starbattle, sunandmoon, fourwinds, numberlink, resuko, magiclabyrinth, masyu, magnets
,minipage, tikzpicture, puzzlebackground, puzzleforeground, center, pgfonlayer, 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, color, bgcolor, counterstyle, title, 
titleindent, titlewidth, cvoffset, width, grid}, 
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, framepuzzle, fillarea, filldiagonals, tikzpath, setrule, colorarea, 
ddsudokucell, chaossudokucell, hakyuucell, setrow, LP@cvoffset, titleformat, definecounterstyle, 
marginnote, tikz, node, placesegment, placeship, shipH, shipV, shipbox, puzzlecounter, color, 
fillrow, setcolorrow, laserV, laserH, mirrorV, mirrorH, placearrow, placecross, placemirror, 
laser, skylineT, skylineB, skylineR, skylineL, skylinecell, setbigcell, slitherlinkcell, 
tunnelH, tunnelV, tube, portal, Mine, Diamond, ShipR, kakurosetup, kakurorow, KKR, Black,
Tent, Tree, definecolor, tentH, tentV, bridgesrow, starbattlecell, starsH, starsV, [, ],
RightDown, Right, LeftDown, LeftUp, Up, RightUp, Left, Star, Cloud, Moon, MoonTL, MoonR,
MoonT, colorlet, bridge, fourwindscell, numberlinkcell, link, resukosetup, resukocell,
Graveltrap, Cross, StraightV, StraightH, CurveTR, CurveBR, trackH, trackV, track,
parkinglot, pitlane, xtikzpath, mlline, setcells, magiclabyrinthcell, magnetssetup, minusH,
minusV, plusH, plusV, magnetsH, magnetsV, PMH, PMV, MPH, MPV, masyucell, masyuline,
masyusetup, MasyuW, MasyuB}}
\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{#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{logicpuzzle.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\layer{\name@idx{PGF layer}}
\newcommand\styleoption{\name@idx{style option}}%
\newcommand\envoption{\name@idx{environment 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{\hbadness=10000\RaggedLeft\scriptsize #1}}%
\newcommand*\package[1]{\texttt{#1}\index{#1=\string\ttt{#1}}}%
\DeclareRobustCommand{\marg}[1]{%
 \meta{#1}%
 \index{#1=\string\meta{#1} mandatory argument}\index{mandatory argument>#1=\string\meta{#1}}%
}%
\DeclareRobustCommand{\oarg}[1]{%
 \meta{#1}%
 \index{#1=\string\meta{#1} optional argument}\index{optional argument>#1=\string\meta{#1}}%
}%
%
\renewenvironment{theindex}
               {\if@twocolumn
                  \@restonecolfalse
                \else
                  \@restonecoltrue
                \fi
                \columnseprule \z@
                \columnsep 35\p@
\def\see##1##2{\textit{See} ##1}%
\def\seealso##1##2{\textit{See also} ##1}%
\long\def\cmd##1{\cs{\expandafter\cmd@to@cs\string##1}}%
\def\@url##1{\url@break\ttt{##1}\endgroup}%
\def\ttt{\begingroup\@sanitize\ttfamily\@ttt}%
\def\@ttt##1{##1\endgroup}%
\mathchardef\save@secnumdepth\c@secnumdepth
\c@secnumdepth\m@ne
                \phantomsection%
                \twocolumn%[\section{\indexname}]%
                \addcontentsline{toc}{section}{Index}% 
\c@secnumdepth\save@secnumdepth
                %\thispagestyle{plain}
                \parindent\z@
                \parskip\z@ \@plus .3\p@\relax
                \let\item\@idxitem}
               {\if@restonecol\onecolumn\else\clearpage\fi}
\makeatother
%
\setlength\parindent{0pt}%
\hypersetup{pdfauthor={Josef Kleber},pdftitle={A style file for typesetting logic puzzles},pdfsubject={Documentation for LaTeX style \filename}}%
%
\begin{document}
\begin{filecontents}{logicpuzzle.bib}
@misc{bib:webbb:logigpuzzle,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/}(https://bitbucket.org/kleberj/logicpuzzle/)},
 title                = {The logicpuzzle bundle},
 year                 = {2013},
 }

@misc{bib:weblp:logigpuzzle,
 author               = {Josef Kleber},
 note                 = {\href{http://logicpuzzle.square7.de/}(http://logicpuzzle.square7.de/)},
 title                = {{logicpuzzle -- A LaTeX style file for typesetting logic puzzles}},
 year                 = {2013},
 }
 
@misc{bib:wiki:createlpsudoku,
 author               = {Josef Kleber},
 note                 = {\href{http://logicpuzzle.square7.de/createlpsudoku}(http://logicpuzzle.square7.de/createlpsudoku)},
 title                = {createlpsudoku},
 year                 = {2013},
 }
 
@misc{bib:wiki:lpsmag,
 author               = {Josef Kleber},
 note                 = {\href{http://logicpuzzle.square7.de/lpsmag}(http://logicpuzzle.square7.de/lpsmag)},
 title                = {lpsmag},
 year                 = {2013},
 }

@misc{bib:wiki:howtosudoku,
 author               = {Josef Kleber},
 note                 = {\href{http://logicpuzzle.square7.de/sudoku_magazine}(http://logicpuzzle.square7.de/sudoku\_magazine)},
 title                = {{How to create a Sudoku magazine}},
 year                 = {2013},
 }

@misc{bib:web:qqwing,
 author               = {Stephen Ostermiller},
 note                 = {\href{http://ostermiller.org/qqwing/}(http://ostermiller.org/qqwing/)},
 title                = {{QQwing -- Sudoku Generator and Solver}},
 year                 = {2011},
 }

@misc{bib:web:hodoku,
 author               = {Bernhard Hobiger},
 note                 = {\href{http://hodoku.sourceforge.net/en/index.php}(http://hodoku.sourceforge.net/en/index.php)},
 title                = {{HoDoKu}},
 year                 = {2012},
 }

@misc{bib:ex:ddsudoku,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-ddsudoku.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-ddsudoku.pdf)},
 title                = {{Examples \& Solutions (ddsudoku)}},
 year                 = {2013},
 }

@misc{bib:ex:battleship,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-battleship.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-battleship.pdf)},
 title                = {{Examples \& Solutions (battleship)}},
 year                 = {2013},
 }
 
@misc{bib:ex:bokkusu,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-bokkusu.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-bokkusu.pdf)},
 title                = {{Examples \& Solutions (bokkusu)}},
 year                 = {2013},
 }
 
@misc{bib:ex:chaossudoku,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-chaossudoku.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-chaossudoku.pdf)},
 title                = {{Examples \& Solutions (chaossudoku)}},
 year                 = {2013},
 }
 
@misc{bib:ex:hakyuu,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-hakyuu.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-hakyuu.pdf)},
 title                = {{Examples \& Solutions (hakyuu)}},
 year                 = {2013},
 }
 
@misc{bib:ex:hitori,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-hitor.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-hitori.pdf)},
 title                = {{Examples \& Solutions (hitori)}},
 year                 = {2013},
 }
 
@misc{bib:ex:kendoku,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-kendoku.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-kendoku.pdf)},
 title                = {{Examples \& Solutions (kendoku)}},
 year                 = {2013},
 }
 
@misc{bib:ex:killersudoku,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-killersudoku.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-killersudoku.pdf)},
 title                = {{Examples \& Solutions (killersudoku)}},
 year                 = {2013},
 }
 
@misc{bib:ex:laserbeam,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-laserbeam.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-laserbeam.pdf)},
 title                = {{Examples \& Solutions (laserbeam)}},
 year                 = {2013},
 }

@misc{bib:ex:minesweeper,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-minesweeper.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-minesweeper.pdf)},
 title                = {{Examples \& Solutions (minesweeper)}},
 year                 = {2013},
 }
  
@misc{bib:ex:skyline,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-skyline.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-skyline.pdf)},
 title                = {{Examples \& Solutions (skyline)}},
 year                 = {2013},
 }
 
@misc{bib:ex:slitherlink,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-slitherlink.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-slitherlink.pdf)},
 title                = {{Examples \& Solutions (slitherlink)}},
 year                 = {2013},
 }

@misc{bib:ex:lpsudoku,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-lpsudoku.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-lpsudoku.pdf)},
 title                = {{Examples \& Solutions (lpsudoku)}},
 year                 = {2013},
 }
 
@misc{bib:ex:tunnel,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-tunnel.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-tunnel.pdf)},
 title                = {{Examples \& Solutions (tunnel)}},
 year                 = {2013},
 }

@misc{bib:ex:schatzsuche,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-schatzsuche.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-schatzsuche.pdf)},
 title                = {{Examples \& Solutions (schatzsuche)}},
 year                 = {2013},
 }

@misc{bib:ex:kakuro,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-kakuro.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-kakuro.pdf)},
 title                = {{Examples \& Solutions (kakuro)}},
 year                 = {2013},
 }

@misc{bib:ex:tentsandtrees,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-tentsandtrees.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-tentsandtrees.pdf)},
 title                = {{Examples \& Solutions (tentsandtrees)}},
 year                 = {2013},
 }

@misc{bib:ex:sunandmoon,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-sunandmoon.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-sunandmoon.pdf)},
 title                = {{Examples \& Solutions (sunandmoon)}},
 year                 = {2013},
 }

@misc{bib:ex:bridges,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-bridges.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-bridges.pdf)},
 title                = {{Examples \& Solutions (bridges)}},
 year                 = {2013},
 }

@misc{bib:ex:fourwinds,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-fourwinds.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-fourwinds.pdf)},
 title                = {{Examples \& Solutions (fourwinds)}},
 year                 = {2013},
 }

@misc{bib:ex:numberlink,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-numberlink.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-numberlink.pdf)},
 title                = {{Examples \& Solutions (numberlink)}},
 year                 = {2013},
 }

@misc{bib:ex:magiclabyrinth,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-magiclabyrinth.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-magiclabyrinth.pdf)},
 title                = {{Examples \& Solutions (magiclabyrinth)}},
 year                 = {2013},
 }

@misc{bib:ex:masyu,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-masyu.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-masyu.pdf)},
 title                = {{Examples \& Solutions (masyu)}},
 year                 = {2013},
 }

@misc{bib:ex:magnets,
 author               = {Josef Kleber},
 note                 = {\href{https://bitbucket.org/kleberj/logicpuzzle/downloads/example-magnets.pdf}(https://bitbucket.org/kleberj/logicpuzzle/downloads/example-magnets.pdf)},
 title                = {{Examples \& Solutions (magnets)}},
 year                 = {2013},
 }

\end{filecontents}
\bibliographystyle{plain}
\ddsudokusetup{width=4.5cm,scale=0.85}
\battleshipsetup{width=4.5cm,scale=0.77,sbindent=0.65cm,sbwidth=3.6cm}
\bokkususetup{width=4.5cm,scale=0.64,fontsize=normalsize}
\chaossudokusetup{width=4.5cm,scale=0.89}
\hakyuusetup{width=4.5cm,scale=0.89}
\hitorisetup{width=4.5cm,scale=0.85}
\kakurosetup{width=4.5cm,scale=0.85}
\kendokusetup{width=4.5cm,scale=0.89}
\killersudokusetup{width=4.5cm,scale=0.89}
\laserbeamsetup{width=4.5cm,scale=0.66,fontsize=normalsize}
\minesweepersetup{width=4.5cm,scale=0.85}
\schatzsuchesetup{width=4.5cm,scale=0.85}
\skylinesetup{width=4.5cm,scale=0.66,fontsize=normalsize}
\slitherlinksetup{width=4.5cm,scale=0.85}
\lpsudokusetup{width=4.5cm,scale=0.49,fontsize=small}
\tentsandtreessetup{width=4.5cm,scale=0.75}
\tunnelsetup{width=4.5cm,scale=0.75}
\sunandmoonsetup{width=4.5cm,scale=0.85}
\starsandarrowssetup{width=4.5cm,scale=0.75}
\starbattlesetup{width=4.5cm,scale=0.85}
\bridgessetup{width=4.5cm,rows=8,columns=8,scale=0.55,color=orange!40}
\resukosetup{rows=8,columns=8,width=4cm,fontsize=Huge,scale=.48}
\numberlinksetup{width=4.5cm,scale=0.89}
\killersudokusetup{width=4.5cm,scale=0.89}
\magiclabyrinthsetup{width=4.5cm,scale=0.89}
\masyusetup{width=4.5cm,scale=0.89,color=Teal}
\magnetssetup{width=4.5cm,scale=0.55,bgcolor=Teal!50}
\title{\filename}%
\Subtitle{A style file for typesetting logic puzzles}%
\author{Josef Kleber}
\Fileversion{v2.4}
\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{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
  \end{laserbeam}
  \hspace{1.5cm}
  \begin{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
    \placemirror{2}{2}{V}
    \placemirror{4}{2}{H}
    \placemirror{5}{5}{V}
    \placemirror{3}{5}{H}
    \begin{puzzlebackground}
      \laser{\tikzpath{3}{1}{7,9,9,9,7,1,7,1,3,3,3,9,9}}
    \end{puzzlebackground}
  \end{laserbeam}
}
\maketitle
\stepcounter{page}
\tableofcontents
\clearpage
\setlength\parskip{6pt}%

\section{Supported puzzles}
\label{sec:supppuzzle}
\subsection{2D-Sudoku}
Fill every row, every column and each of the two diagonals -- if indicated -- with numbers from 1 to SIZE of the grid.

\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Battleship}
Try to find the positions of the ships listed below the puzzle. The numbers on the side of the puzzle reveals how many ship segments can be found in the rows and columns. All remaining fields indicate 'water'. Consider the following rules: The ships are arranged horizontally and vertically. No ship touches another ship at any point, not even diagonally.

\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid.}
  \optitem{shipcolor}{green}{sets the color of the ship segments.}
  \optitem{\envoption{width}}{6cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0.75cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.15cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{sbindent}}{0.75cm}{defines the indent of the ship box below the grid.}
\optitem{\envoption{sbwidth}}{5.15cm}{specifies the width of the minipage, in which the ships are typeset.}
  \optitem{\envoption{sbshipscale}}{1}{scales the size of the ships in the ship box.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Bokkusu}
Black out some of the grid cells. The numbers on the left and the bottom edge of the grid indicate the values of the cells for adding up. The numbers on the right and the top edge of the grid specify the sums of the values of the colored cells.

\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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{5}{0,0,1,0,0}
    \fillrow{4}{1,0,1,1,1}
    \fillrow{3}{1,0,0,1,0}
    \fillrow{2}{0,0,1,1,1}
    \fillrow{1}{0,1,0,0,0}
  \end{bokkusu}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{6.7cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0.75cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.85cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{black}{specifies the color for coloring the cells.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-38pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Bridges}
Connect all the islands (circles) located in the grid by bridges. The bridges may only be routed horizontally and vertically. Islands may be connected by a maximum of two bridges. The bridges must neither overlap nor cross. They may also not be built over islands. The numbers in the islands indicate how many bridges originate from this island. All islands must be fully connected.

\subsubsection{Example}
\colorlet{LP@c@bridge}{Teal}
\begin{figure}[htbp]
\begin{center}
  \begin{bridges}
    \framepuzzle
    \bridgesrow{8}{{},4,{},{},{},5,{},2}
    \bridgesrow{7}{{},{},1}
    \bridgesrow{5}{{},{},3,{},4}
    \bridgesrow{4}{{},3,{},1,{},2}
    \bridgesrow{3}{{},{},{},{},{},{},{}}
    \bridgesrow{2}{{},2,{},{},5,{},{},2}
  \end{bridges}
  \hspace{1.5cm}
  \begin{bridges}[grid=none]
    \framepuzzle
    \bridgesrow{8}{{},4,{},{},{},5,{},2}
    \bridgesrow{7}{{},{},1}
    \bridgesrow{5}{{},{},3,{},4}
    \bridgesrow{4}{{},3,{},1,{},2}
    \bridgesrow{3}{{},{},{},{},{},{},{}}
    \bridgesrow{2}{{},2,{},{},5,{},{},2}
    \bridge[double]{\tikzpath{2}{4}{8,8,8,8,6,6,6,6,2,2,2,2}}
    \bridge[double]{\tikzpath{2}{2}{6,6,6,8,8,8,4,4}}
    \bridge{\tikzpath{2}{4}{6,6}}
    \bridge{\tikzpath{3}{5}{8,8}}
    \bridge{\tikzpath{5}{2}{6,6,6,8,8,8,8,8,8,4,4}}
  \end{bridges}
\end{center}
\end{figure}
\begin{lstlisting}
\colorlet{LP@c@bridge}{Teal}
\begin{center}
  \begin{bridges}
    \framepuzzle
    \bridgesrow{8}{{},4,{},{},{},5,{},2}
    \bridgesrow{7}{{},{},1}
    \bridgesrow{5}{{},{},3,{},4}
    \bridgesrow{4}{{},3,{},1,{},2}
    \bridgesrow{3}{{},{},{},{},{},{},{}}
    \bridgesrow{2}{{},2,{},{},5,{},{},2}
  \end{bridges}
  \hspace{1.5cm}
  \begin{bridges}[grid=none]
    \framepuzzle
    \bridgesrow{8}{{},4,{},{},{},5,{},2}
    \bridgesrow{7}{{},{},1}
    \bridgesrow{5}{{},{},3,{},4}
    \bridgesrow{4}{{},3,{},1,{},2}
    \bridgesrow{3}{{},{},{},{},{},{},{}}
    \bridgesrow{2}{{},2,{},{},5,{},{},2}
    \bridge[double]{\tikzpath{2}{4}{8,8,8,8,6,6,6,6,2,2,2,2}}
    \bridge[double]{\tikzpath{2}{2}{6,6,6,8,8,8,4,4}}
    \bridge{\tikzpath{2}{4}{6,6}}
    \bridge{\tikzpath{3}{5}{8,8}}
    \bridge{\tikzpath{5}{2}{6,6,6,8,8,8,8,8,8,4,4}}
  \end{bridges}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{6.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{6.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{green}{specifies the color for coloring the islands.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
  \optitem{\envoption{grid}}{dashed}{sets the style of the grid. Possible values: \underline{\texttt{dashed}}, \texttt{none}, \texttt{solid}}
\end{optionlist}

\subsection{Chaos Sudoku}
Fill the cells of an area with numbers from 1 to N of the N*N grid. Each number can appear only once - in each area, column, row or diagonal if indicated.
\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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}{(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}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Four Winds}
Fill all cells with light rays. These may not intersect. Cells with numbers represent the lighting system that lits horizontally and vertically. The number indicates how many cells are illuminated. Cells with numbers do not count. No cell must remain empty.

\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{fourwinds}
  \framepuzzle
  \fourwindscell{1}{2}{2}{}
  \fourwindscell{1}{5}{2}{}
  \fourwindscell{2}{4}{3}{}
  \fourwindscell{3}{3}{3}{}
  \fourwindscell{4}{1}{4}{}
  \fourwindscell{5}{5}{5}{}
\end{fourwinds}
\hspace{1.5cm}
\begin{fourwinds}
  \framepuzzle
  \fourwindscell{1}{2}{2}{2/1,6/1}
  \fourwindscell{1}{5}{2}{2/2}
  \fourwindscell{2}{4}{3}{8/1,6/2}
  \fourwindscell{3}{3}{3}{4/1,6/1,2/1}
  \fourwindscell{4}{1}{4}{4/2,6/1,8/1}
  \fourwindscell{5}{5}{5}{4/2,2/3}
\end{fourwinds}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{fourwinds}
  \framepuzzle
  \fourwindscell{1}{2}{2}{}
  \fourwindscell{1}{5}{2}{}
  \fourwindscell{2}{4}{3}{}
  \fourwindscell{3}{3}{3}{}
  \fourwindscell{4}{1}{4}{}
  \fourwindscell{5}{5}{5}{}
\end{fourwinds}
\hspace{1.5cm}
\begin{fourwinds}
  \framepuzzle
  \fourwindscell{1}{2}{2}{2/1,6/1}
  \fourwindscell{1}{5}{2}{2/2}
  \fourwindscell{2}{4}{3}{8/1,6/2}
  \fourwindscell{3}{3}{3}{4/1,6/1,2/1}
  \fourwindscell{4}{1}{4}{4/2,6/1,8/1}
  \fourwindscell{5}{5}{5}{4/2,2/3}
\end{fourwinds}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{blue}{sets the color of the lines.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Hakyuu}
Fill the cells of an area with numbers from 1 to SIZE of the area. If there are two cells with the same number N in a row or a column, there must be at least N cells between those two cells.
\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Hitori}
Black out some cells according to these specifications: In each row and each column a number may only occur once or can be completely blackened. The blackened cells can touch neither horizontal nor vertical. All non blackened cells must remain connected. Each number has its own color, which otherwise has no meaning.
\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Kakuro}
Enter numbers from 1 to 9 in any order into the blank cells. Here, the given horizontal and vertical sums should result. The zero does not occur. Within a summation, no number can be repeated.
\subsubsection{Example}
\definecolor{kakuro}{RGB}{155,206,167}
\kakurosetup{color=kakuro}
\begin{figure}[htbp]
\begin{center}
  \begin{kakuro}
    \framepuzzle
    \kakurorow{5}{\Black,\KKR{23}{},\KKR{16}{},\KKR{10}{},\Black}
    \kakurorow{4}{\KKR{}{14},9,1,4,\KKR{3}{}}
    \kakurorow{3}{\KKR{}{16},6,5,3,2}
    \kakurorow{2}{\KKR{}{14},8,3,2,1}
    \kakurorow{1}{\Black,\KKR{}{8},7,1,\Black}
  \end{kakuro}
  \hspace{1.5cm}
  \begin{kakuro}[solution]
    \framepuzzle
    \kakurorow{5}{\Black,\KKR{23}{},\KKR{16}{},\KKR{10}{},\Black}
    \kakurorow{4}{\KKR{}{14},9,1,4,\KKR{3}{}}
    \kakurorow{3}{\KKR{}{16},6,5,3,2}
    \kakurorow{2}{\KKR{}{14},8,3,2,1}
    \kakurorow{1}{\Black,\KKR{}{8},7,1,\Black}
  \end{kakuro}
\end{center}
\end{figure}
\begin{lstlisting}
\definecolor{kakuro}{RGB}{155,206,167}
\kakurosetup{color=kakuro}
\begin{center}
  \begin{kakuro}
    \framepuzzle
    \kakurorow{5}{\Black,\KKR{23}{},\KKR{16}{},\KKR{10}{},\Black}
    \kakurorow{4}{\KKR{}{14},9,1,4,\KKR{3}{}}
    \kakurorow{3}{\KKR{}{16},6,5,3,2}
    \kakurorow{2}{\KKR{}{14},8,3,2,1}
    \kakurorow{1}{\Black,\KKR{}{8},7,1,\Black}
  \end{kakuro}
  \hspace{1.5cm}
  \begin{kakuro}[solution]
    \framepuzzle
    \kakurorow{5}{\Black,\KKR{23}{},\KKR{16}{},\KKR{10}{},\Black}
    \kakurorow{4}{\KKR{}{14},9,1,4,\KKR{3}{}}
    \kakurorow{3}{\KKR{}{16},6,5,3,2}
    \kakurorow{2}{\KKR{}{14},8,3,2,1}
    \kakurorow{1}{\Black,\KKR{}{8},7,1,\Black}
  \end{kakuro}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{green}{specifies the color of the kakuro cells.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
  \optitem{\envoption{solution}}{false}{You can use the solution also for the puzzle, as the numbers in the cells are only typeset with option \envoption{solution}\texttt{=true}.}
\end{optionlist}

\subsection{Kendoku}
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.
\subsubsection{Example}
\begin{figure}[htbp]
\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{figure}
\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}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Killer Sudoku}
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.
\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\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}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Laser Beam}
Draw a laser beam in each grid according to the following guidelines. The beam has to enter or to leave the grid at the arrows. At each intersection, a mirror, on which the laser beam must reflect on one side, can be placed horizontally or vertically. The other side must not be touched by the beam. All locations where the laser crosses are given. The numbers to the left and above the grid indicate how many cells are traversed by the beam in the corresponding row or column. The numbers to the right and below reveal, how many mirrors are found in the intersection of the corresponding row or column.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
  \end{laserbeam}
  \hspace{1.5cm}
  \begin{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
    \placemirror{2}{2}{V}
    \placemirror{4}{2}{H}
    \placemirror{5}{5}{V}
    \placemirror{3}{5}{H}
    \begin{puzzlebackground}
      \laser{\tikzpath{3}{1}{7,9,9,9,7,1,7,1,3,3,3,9,9}}
    \end{puzzlebackground}
  \end{laserbeam}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
  \end{laserbeam}
  \hspace{1cm}
  \begin{laserbeam}
    \laserV{1}
    \laserH{{}}
    \mirrorH{{},2}
    \mirrorV{{},{},{},{},{},2}
    \framepuzzle[LP@c@mirror]
    \placearrow{3}{1}{LeftUp}
    \placearrow{6}{4}{RightUp}
    \placecross{3}{3}
    \placemirror{2}{2}{V}
    \placemirror{4}{2}{H}
    \placemirror{5}{5}{V}
    \placemirror{3}{5}{H}
    \begin{puzzlebackground}
      \laser{\tikzpath{3}{1}{7,9,9,9,7,1,7,1,3,3,3,9,9}}
    \end{puzzlebackground}
  \end{laserbeam}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{6.5cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{6.5cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-38pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Magic Labyrinth}
Enter the numbers 1 to N into the grid. Each number can appear only once in each column and row. Following the labyrinth from the outside inwards, then the given number sequence must be repeated continuously.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{magiclabyrinth}
  \mlline{\xtikzpath{1}{6}{6/5,2/5,4/5,8/4,6/4,2/3,4/3,8/2,6/2,2/1,4/1}}
  \setcells{1/1,2/4,4/5}{3}
  \magiclabyrinthcell{4}{2}{2}
  \magiclabyrinthcell{5}{4}{1}
\end{magiclabyrinth}
\hspace{1.5cm}
\begin{magiclabyrinth}
  \mlline{\xtikzpath{1}{6}{6/5,2/5,4/5,8/4,6/4,2/3,4/3,8/2,6/2,2/1,4/1}}
  \setrow{5}{{},1,2,3}
  \setrow{4}{2,3,{},{},1}
  \setrow{3}{{},{},3,1,2}
  \setrow{2}{1,{},{},2,3}
  \setrow{1}{3,2,1}
\end{magiclabyrinth}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{magiclabyrinth}
  \mlline{\xtikzpath{1}{6}{6/5,2/5,4/5,8/4,6/4,2/3,4/3,8/2,6/2,
                           2/1,4/1}}
  \setcells{1/1,2/4,4/5}{3}
  \magiclabyrinthcell{4}{2}{2}
  \magiclabyrinthcell{5}{4}{1}
\end{magiclabyrinth}
\hspace{1.5cm}
\begin{magiclabyrinth}
  \mlline{\xtikzpath{1}{6}{6/5,2/5,4/5,8/4,6/4,2/3,4/3,8/2,6/2,
                           2/1,4/1}}
  \setrow{5}{{},1,2,3}
  \setrow{4}{2,3,{},{},1}
  \setrow{3}{{},{},3,1,2}
  \setrow{2}{1,{},{},2,3}
  \setrow{1}{3,2,1}
\end{magiclabyrinth}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Magnets}
Draw magnetic and neutral plates into the grid. The magnetic plates have a positive and a negative pole, neutral plates do not. The same poles must not touch neither horizontal nor vertical. Neutral plates may touch. The numbers to the left and above the grid indicate how many plus or minus poles are present in the respective column or row.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{magnets}
  \minusH{2,1,2,2,1,2}
  \minusV{2,1,3,1,2,1}
  \plusH{2,1,2,2,2,1}
  \plusV{1,2,1,3,2,1}
  \magnetsH{2/1,2/4,2/5,2/6,3/2,3/3,4/1,4/4,5/5,5/6}
  \magnetsV{1/1,1/3,1/5,2/2,4/5,5/2,6/1,6/3}
  \MPH{2/6}
  \PMH{5/5}
  \MPV{6/3}
\end{magnets}
\hspace{1.5cm}
\begin{magnets}
  \minusH{2,1,2,2,1,2}
  \minusV{2,1,3,1,2,1}
  \plusH{2,1,2,2,2,1}
  \plusV{1,2,1,3,2,1}
  \MPH{2/6,3/2,4/1}
  \PMH{2/5,5/5,4/4,3/3}
  \MPV{1/1,1/3,6/3}
\end{magnets}
\end{center}
\end{figure}
\begin{lstlisting}
\magnetssetup{bgcolor=Teal!50}
\begin{magnets}
  \minusH{2,1,2,2,1,2}
  \minusV{2,1,3,1,2,1}
  \plusH{2,1,2,2,2,1}
  \plusV{1,2,1,3,2,1}
  \magnetsH{2/1,2/4,2/5,2/6,3/2,3/3,4/1,4/4,5/5,5/6}
  \magnetsV{1/1,1/3,1/5,2/2,4/5,5/2,6/1,6/3}
  \MPH{2/6}
  \PMH{5/5}
  \MPV{6/3}
\end{magnets}
\hspace{1.5cm}
\begin{magnets}
  \minusH{2,1,2,2,1,2}
  \minusV{2,1,3,1,2,1}
  \plusH{2,1,2,2,2,1}
  \plusV{1,2,1,3,2,1}
  \MPH{2/6,3/2,4/1}
  \PMH{2/5,5/5,4/4,3/3}
  \MPV{1/1,1/3,6/3}
\end{magnets}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{6}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{6}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{8.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{8.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid for indicating the neutral areas.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Masyu}
Draw a line into the grid. The line can only run horizontally and vertically and must pass through all the circles. In cells with a black circle it have to turn in a 90 degree angle and go straight on for at least another cell. The line must go straight through empty circles, but turn left or right in at least one of the neighboring cells. There is no need to go through all cells.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{masyu}
  \framepuzzle
  \setcells{1/2,3/3,4/1,4/2,4/5,5/4}{\MasyuW}
  \masyucell{1}{4}{\MasyuB}
\end{masyu}
\hspace{1.5cm}
\begin{masyu}
  \framepuzzle
  \setcells{1/2,3/3,4/1,4/2,4/5,5/4}{\MasyuW}
  \masyucell{1}{4}{\MasyuB}
  \masyuline{\xtikzpath{1}{1}{8/3,6/2,8/1,6/2,2/2,4/3,2/1,6/3,2/1,4/4}}
\end{masyu}
\end{center}
\end{figure}
\begin{lstlisting}
\masyusetup{color=Teal}
\begin{masyu}
  \framepuzzle
  \setcells{1/2,3/3,4/1,4/2,4/5,5/4}{\MasyuW}
  \masyucell{1}{4}{\MasyuB}
\end{masyu}
\hspace{1.5cm}
\begin{masyu}
  \framepuzzle
  \setcells{1/2,3/3,4/1,4/2,4/5,5/4}{\MasyuW}
  \masyucell{1}{4}{\MasyuB}
  \masyuline{\xtikzpath{1}{1}{8/3,6/2,8/1,6/2,2/2,4/3,2/1,6/3,
                              2/1,4/4}}
\end{masyu}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{green}{sets the color of the line.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Minesweeper}
Draw a mine in some cells of the grid. The number in a cell indicates how many of the eight neighboring cells contain a mine. A numbered cell does not contain a mine.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{minesweeper}
    \framepuzzle
    \setrow{5}{{},1}
    \setrow{4}{{},{},3,3}
    \setrow{3}{3,{},4,2}
    \setrow{2}{{},{},{},{},0}
    \setrow{1}{{},2}
  \end{minesweeper}
  \hspace{1.5cm}
  \begin{minesweeper}
    \framepuzzle
    \setrow{5}{{},1,{},\Mine,\Mine}
    \setrow{4}{{},\Mine,3,3,\Mine}
    \setrow{3}{3,\Mine,4,2}
    \setrow{2}{{},\Mine,\Mine,{},0}
    \setrow{1}{{},2}
  \end{minesweeper}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{minesweeper}
    \framepuzzle
    \setrow{5}{{},1}
    \setrow{4}{{},{},3,3}
    \setrow{3}{3,{},4,2}
    \setrow{2}{{},{},{},{},0}
    \setrow{1}{{},2}
  \end{minesweeper}
  \hspace{1.5cm}
  \begin{minesweeper}
    \framepuzzle
    \setrow{5}{{},1,{},\Mine,\Mine}
    \setrow{4}{{},\Mine,3,3,\Mine}
    \setrow{3}{3,\Mine,4,2}
    \setrow{2}{{},\Mine,\Mine,{},0}
    \setrow{1}{{},2}
  \end{minesweeper}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Number Link}
Link all the same numbers or letters in each case by a line. The lines can run horizontally, vertically and in 90 degree angles. Each cell must be traversed by exactly one line. The lines must not intersect.

\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{numberlink}
  \framepuzzle
  \numberlinkcell{2}{1}{B}
  \numberlinkcell{5}{1}{C}
  \numberlinkcell{2}{2}{C}
  \numberlinkcell{4}{2}{D}
  \numberlinkcell{3}{3}{A}
  \numberlinkcell{4}{3}{E}
  \numberlinkcell{1}{4}{B}
  \numberlinkcell{1}{5}{A}
  \numberlinkcell{3}{5}{E}
  \numberlinkcell{4}{5}{D}
\end{numberlink}
\hspace{1.5cm}
\begin{numberlink}
  \framepuzzle
  \numberlinkcell{2}{1}{B}
  \numberlinkcell{5}{1}{C}
  \numberlinkcell{2}{2}{C}
  \numberlinkcell{4}{2}{D}
  \numberlinkcell{3}{3}{A}
  \numberlinkcell{4}{3}{E}
  \numberlinkcell{1}{4}{B}
  \numberlinkcell{1}{5}{A}
  \numberlinkcell{3}{5}{E}
  \numberlinkcell{4}{5}{D}
  \link{\tikzpath{4}{3}{8,4,8}}
  \link{\tikzpath{2}{1}{4,8,8,8}}
  \link{\tikzpath{2}{2}{6,2,6,6}}
  \link{\tikzpath{1}{5}{6,2,2,6}}
  \link{\tikzpath{4}{2}{6,8,8,8,4}}
\end{numberlink}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{numberlink}
  \framepuzzle
  \numberlinkcell{2}{1}{B}
  \numberlinkcell{5}{1}{C}
  \numberlinkcell{2}{2}{C}
  \numberlinkcell{4}{2}{D}
  \numberlinkcell{3}{3}{A}
  \numberlinkcell{4}{3}{E}
  \numberlinkcell{1}{4}{B}
  \numberlinkcell{1}{5}{A}
  \numberlinkcell{3}{5}{E}
  \numberlinkcell{4}{5}{D}
\end{numberlink}
\hspace{1.5cm}
\begin{numberlink}
  \framepuzzle
  \numberlinkcell{2}{1}{B}
  \numberlinkcell{5}{1}{C}
  \numberlinkcell{2}{2}{C}
  \numberlinkcell{4}{2}{D}
  \numberlinkcell{3}{3}{A}
  \numberlinkcell{4}{3}{E}
  \numberlinkcell{1}{4}{B}
  \numberlinkcell{1}{5}{A}
  \numberlinkcell{3}{5}{E}
  \numberlinkcell{4}{5}{D}
  \link{\tikzpath{4}{3}{8,4,8}}
  \link{\tikzpath{2}{1}{4,8,8,8}}
  \link{\tikzpath{2}{2}{6,2,6,6}}
  \link{\tikzpath{1}{5}{6,2,2,6}}
  \link{\tikzpath{4}{2}{6,8,8,8,4}}
\end{numberlink}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{red}{sets the color of the lines.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Resuko}
Complete the given elements in the grid to two race tracks (a race track and a much shorter test track) with pitlane and parking lot. The elements below and to the left of the grid indicate how many straights, curves and intersections are located in the respective columns and rows. The pit lane is always located next to four straights of the circuit on a free area of 1x4 cells. At the end, the parking lot is located on the only free area of 2x2 cells. Both can not be built on a gravel trap.

\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
\begin{resuko}[width=5.2cm]
  \resukocell{1}{7}{\Graveltrap}
  \resukocell{4}{7}{\Graveltrap}
  \resukocell{7}{3}{\Graveltrap}
  \resukocell{6}{2}{\Cross}
  \resukocell{8}{4}{\StraightV}
  \resukocell{6}{7}{\StraightH}
  \resukocell{3}{5}{\CurveBR}
  \resukocell{5}{5}{\CurveTR}
  \trackH{1/4/0,4/0/0,3/2/0,2/2/0,3/2/0,3/2/1,2/2/2,2/4/0}
  \trackV{4/2/0,5/2/1,2/0/0,2/4/0,2/4/1,4/2/0,1/2/1,0/2/0}
  \framepuzzle
\end{resuko}
\hspace{1.5cm}
\begin{resuko}
  \resukocell{1}{7}{\Graveltrap}
  \resukocell{4}{7}{\Graveltrap}
  \resukocell{7}{3}{\Graveltrap}
  \parkinglot{2}{7}
  \pitlane{2}{3}{H}
  \track{\tikzpath{2}{4}{6,8,6,8,4,4,4,2,2,6}}
  \track{\xtikzpath{2}{1}{6/4,8/3,6/1,8/4,6/1,2/1,4/3,2/2,6/3,2/3,4/7,2/1,6/1}}
  \framepuzzle
\end{resuko}
\end{center}
\end{figure}
\begin{lstlisting}
\resukosetup{rows=8,columns=8,width=5.8cm,fontsize=Huge,
             scale=.708}
\begin{resuko}[width=7.4cm]
  \resukocell{1}{7}{\Graveltrap}
  \resukocell{4}{7}{\Graveltrap}
  \resukocell{7}{3}{\Graveltrap}
  \resukocell{6}{2}{\Cross}
  \resukocell{8}{4}{\StraightV}
  \resukocell{6}{7}{\StraightH}
  \resukocell{3}{5}{\CurveBR}
  \resukocell{5}{5}{\CurveTR}
  \trackH{1/4/0,4/0/0,3/2/0,2/2/0,3/2/0,3/2/1,2/2/2,2/4/0}
  \trackV{4/2/0,5/2/1,2/0/0,2/4/0,2/4/1,4/2/0,1/2/1,0/2/0}
  \framepuzzle
\end{resuko}
\hspace{1.5cm}
\begin{resuko}
  \resukocell{1}{7}{\Graveltrap}
  \resukocell{4}{7}{\Graveltrap}
  \resukocell{7}{3}{\Graveltrap}
  \parkinglot{2}{7}
  \pitlane{2}{3}{H}
  \track{\tikzpath{2}{4}{6,8,6,8,4,4,4,2,2,6}}
  \track{\xtikzpath{2}{1}{6/4,8/3,6/1,8/4,6/1,2/1,4/3,2/2,6/3,
                          2/3,4/7,2/1,6/1}}
  \framepuzzle
\end{resuko}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{blue}{sets the color of the pitlane and parking lot.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Schatzsuche}
It's a variant of Minesweeper, just with diamonds instead of mines. Draw a diamond in some cells of the grid. The number in a cell indicates how many of the eight neighboring cells contain a diamond. A numbered cell does not contain a diamond.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{schatzsuche}
    \framepuzzle
    \setrow{5}{{},1}
    \setrow{4}{{},{},3,3}
    \setrow{3}{3,{},4,2}
    \setrow{2}{{},{},{},{},0}
    \setrow{1}{{},2}
  \end{schatzsuche}
  \hspace{1.5cm}
  \begin{schatzsuche}
    \framepuzzle
    \setrow{5}{{},1,{},\Diamond,\Diamond}
    \setrow{4}{{},\Diamond,3,3,\Diamond}
    \setrow{3}{3,\Diamond,4,2}
    \setrow{2}{{},\Diamond,\Diamond,{},0}
    \setrow{1}{{},2}
  \end{schatzsuche}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{schatzsuche}
    \framepuzzle
    \setrow{5}{{},1}
    \setrow{4}{{},{},3,3}
    \setrow{3}{3,{},4,2}
    \setrow{2}{{},{},{},{},0}
    \setrow{1}{{},2}
  \end{schatzsuche}
  \hspace{1.5cm}
  \begin{schatzsuche}
    \framepuzzle
    \setrow{5}{{},1,{},\Diamond,\Diamond}
    \setrow{4}{{},\Diamond,3,3,\Diamond}
    \setrow{3}{3,\Diamond,4,2}
    \setrow{2}{{},\Diamond,\Diamond,{},0}
    \setrow{1}{{},2}
  \end{schatzsuche}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Skyline}
There are skyscrapers located in each cell. Try to find out the height of the skyscraper in the respective cell. There are heights of 1 to MAX in every row, every column, and in each of the two diagonals if indicated. Some cells may be empty (parks). The numbers around the grid indicate how many buildings you can see from this position when you look at the skyscraper lineup. Bear in mind that only those skyscrapers are visible which are higher than the ones in front.
\subsubsection{Example}
\begin{figure}[htbp]
\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{1cm}
  \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}
\end{figure}
\begin{lstlisting}
\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{1cm}
  \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}
\end{lstlisting}

\paragraph{Variants}
\subparagraph{Skyline Sudoku}

\begin{center}
  \begin{skyline}[sudoku,scale=.4]
    \skylineB{4,5,2,5,2,1,2,4,3}
    \skylineL{4,2,2,2,1,3,3,3,2}
    \skylineT{4,1,3,2,3,5,3,2,3}
    \skylineR{3,3,1,3,4,2,3,2,4}
    \setrow{9}{{},{},{},8,{},{},{},7}
    \setrow{8}{{},{},4,{},{},6,{},{},8}
    \setrow{7}{{},2,{},7,{},{},{},{},1}
    \setrow{6}{{},{},{},{},8,2}
    \setrow{5}{{},{},2,{},4,{},7}
    \setrow{4}{{},{},{},3,{},{},4}
    \setrow{3}{{},{},{},{},1}
    \setrow{2}{{},3,{},{},{},{},1,2}
    \setrow{1}{{},{},5}
  \end{skyline}
  \hspace{1cm}
  \begin{skyline}[sudoku,scale=.4]
    \skylineB{4,5,2,5,2,1,2,4,3}
    \skylineL{4,2,2,2,1,3,3,3,2}
    \skylineT{4,1,3,2,3,5,3,2,3}
    \skylineR{3,3,1,3,4,2,3,2,4}
    \setrow{9}{3,9,6,8,5,1,2,7,4}
    \setrow{8}{1,7,4,9,2,6,3,5,8}
    \setrow{7}{5,2,8,7,3,4,9,6,1}
    \setrow{6}{7,4,3,1,8,2,6,9,5}
    \setrow{5}{9,8,2,6,4,5,7,1,3}
    \setrow{4}{6,5,1,3,9,7,4,8,2}
    \setrow{3}{8,6,7,2,1,3,5,4,9}
    \setrow{2}{4,3,9,5,6,8,1,2,7}
    \setrow{1}{2,1,5,4,7,9,8,3,6}
  \end{skyline}
\end{center}

\begin{lstlisting}
\begin{center}
  \begin{skyline}[sudoku,scale=.4]
    \skylineB{4,5,2,5,2,1,2,4,3}
    \skylineL{4,2,2,2,1,3,3,3,2}
    \skylineT{4,1,3,2,3,5,3,2,3}
    \skylineR{3,3,1,3,4,2,3,2,4}
    \setrow{9}{{},{},{},8,{},{},{},7}
    \setrow{8}{{},{},4,{},{},6,{},{},8}
    \setrow{7}{{},2,{},7,{},{},{},{},1}
    \setrow{6}{{},{},{},{},8,2}
    \setrow{5}{{},{},2,{},4,{},7}
    \setrow{4}{{},{},{},3,{},{},4}
    \setrow{3}{{},{},{},{},1}
    \setrow{2}{{},3,{},{},{},{},1,2}
    \setrow{1}{{},{},5}
  \end{skyline}
  \hspace{1cm}
  \begin{skyline}[sudoku,scale=.4]
    \skylineB{4,5,2,5,2,1,2,4,3}
    \skylineL{4,2,2,2,1,3,3,3,2}
    \skylineT{4,1,3,2,3,5,3,2,3}
    \skylineR{3,3,1,3,4,2,3,2,4}
    \setrow{9}{3,9,6,8,5,1,2,7,4}
    \setrow{8}{1,7,4,9,2,6,3,5,8}
    \setrow{7}{5,2,8,7,3,4,9,6,1}
    \setrow{6}{7,4,3,1,8,2,6,9,5}
    \setrow{5}{9,8,2,6,4,5,7,1,3}
    \setrow{4}{6,5,1,3,9,7,4,8,2}
    \setrow{3}{8,6,7,2,1,3,5,4,9}
    \setrow{2}{4,3,9,5,6,8,1,2,7}
    \setrow{1}{2,1,5,4,7,9,8,3,6}
  \end{skyline}
\end{center}
\end{lstlisting}

\subparagraph{Skyline Sudoku (N*N)}

\begin{center}
  \begin{skyline}[rows=6,columns=6,scale=.58]
    \skylineB{4,2,1,3,3,2}
    \skylineL{3,3,4,3,2,1}
    \skylineT{1,2,3,3,2,4}
    \skylineR{4,1,2,2,2,3}
    \skylinecell{2}{4}{1}
    \skylinecell{4}{1}{4}
    \skylinecell{5}{2}{3}
    \begin{puzzlebackground}
      \fillarea{Wheat}{(1,1)--(1,3)--(4,3)--(4,1)--(1,1)}
      \fillarea{HotPink!30}{(1,3)--(1,7)--(4,7)--(4,6)--(2,6)
                            --(2,3)--(1,3)}
      \fillarea{GreenYellow}{(2,3)--(2,6)--(4,6)--(4,3)--(2,3)}
      \fillarea{LightBlue}{(4,1)--(7,1)--(7,5)--(6,5)--(6,2)
                           --(4,2)--(4,1)}
      \fillarea{LightSalmon!50}{(4,7)--(4,4)--(5,4)--(5,6)--(6,6)
                                --(6,5)--(7,5)--(7,7)--(4,7)}
      \fillarea{LightYellow}{(4,2)--(4,4)--(5,4)--(5,6)--(6,6)
                             --(6,2)--(4,2)}
    \end{puzzlebackground} 
  \end{skyline}
  \hspace{1cm}
  \begin{skyline}[rows=6,columns=6,scale=.58]
    \skylineB{4,2,1,3,3,2}
    \skylineL{3,3,4,3,2,1}
    \skylineT{1,2,3,3,2,4}
    \skylineR{4,1,2,2,2,3}
    \setrow{6}{6,3,4,1,5,2}
    \setrow{5}{5,6,2,3,1,4}
    \setrow{4}{2,1,3,6,4,5}
    \setrow{3}{1,4,5,2,6,3}
    \setrow{2}{4,2,1,5,3,6}
    \setrow{1}{3,5,6,4,2,1}
    \begin{puzzlebackground}
      \fillarea{Wheat}{(1,1)--(1,3)--(4,3)--(4,1)--(1,1)}
      \fillarea{HotPink!30}{(1,3)--(1,7)--(4,7)--(4,6)--(2,6)
                            --(2,3)--(1,3)}
      \fillarea{GreenYellow}{(2,3)--(2,6)--(4,6)--(4,3)--(2,3)}
      \fillarea{LightBlue}{(4,1)--(7,1)--(7,5)--(6,5)--(6,2)
                           --(4,2)--(4,1)}
      \fillarea{LightSalmon!50}{(4,7)--(4,4)--(5,4)--(5,6)--(6,6)
                                --(6,5)--(7,5)--(7,7)--(4,7)}
      \fillarea{LightYellow}{(4,2)--(4,4)--(5,4)--(5,6)--(6,6)
                             --(6,2)--(4,2)}
    \end{puzzlebackground} 
  \end{skyline}
\end{center}

\begin{lstlisting}
\begin{center}
  \begin{skyline}[rows=6,columns=6,scale=.58]
    \skylineB{4,2,1,3,3,2}
    \skylineL{3,3,4,3,2,1}
    \skylineT{1,2,3,3,2,4}
    \skylineR{4,1,2,2,2,3}
    \skylinecell{2}{4}{1}
    \skylinecell{4}{1}{4}
    \skylinecell{5}{2}{3}
    \begin{puzzlebackground}
      \fillarea{Wheat}{(1,1)--(1,3)--(4,3)--(4,1)--(1,1)}
      \fillarea{HotPink!30}{(1,3)--(1,7)--(4,7)--(4,6)--(2,6)
                            --(2,3)--(1,3)}
      \fillarea{GreenYellow}{(2,3)--(2,6)--(4,6)--(4,3)--(2,3)}
      \fillarea{LightBlue}{(4,1)--(7,1)--(7,5)--(6,5)--(6,2)
                           --(4,2)--(4,1)}
      \fillarea{LightSalmon!50}{(4,7)--(4,4)--(5,4)--(5,6)--(6,6)
                                --(6,5)--(7,5)--(7,7)--(4,7)}
      \fillarea{LightYellow}{(4,2)--(4,4)--(5,4)--(5,6)--(6,6)
                             --(6,2)--(4,2)}
    \end{puzzlebackground} 
  \end{skyline}
  \hspace{1cm}
  \begin{skyline}[rows=6,columns=6,scale=.58]
    \skylineB{4,2,1,3,3,2}
    \skylineL{3,3,4,3,2,1}
    \skylineT{1,2,3,3,2,4}
    \skylineR{4,1,2,2,2,3}
    \setrow{6}{6,3,4,1,5,2}
    \setrow{5}{5,6,2,3,1,4}
    \setrow{4}{2,1,3,6,4,5}
    \setrow{3}{1,4,5,2,6,3}
    \setrow{2}{4,2,1,5,3,6}
    \setrow{1}{3,5,6,4,2,1}
    \begin{puzzlebackground}
      \fillarea{Wheat}{(1,1)--(1,3)--(4,3)--(4,1)--(1,1)}
      \fillarea{HotPink!30}{(1,3)--(1,7)--(4,7)--(4,6)--(2,6)
                            --(2,3)--(1,3)}
      \fillarea{GreenYellow}{(2,3)--(2,6)--(4,6)--(4,3)--(2,3)}
      \fillarea{LightBlue}{(4,1)--(7,1)--(7,5)--(6,5)--(6,2)
                           --(4,2)--(4,1)}
      \fillarea{LightSalmon!50}{(4,7)--(4,4)--(5,4)--(5,6)--(6,6)
                                --(6,5)--(7,5)--(7,7)--(4,7)}
      \fillarea{LightYellow}{(4,2)--(4,4)--(5,4)--(5,6)--(6,6)
                             --(6,2)--(4,2)}
    \end{puzzlebackground} 
  \end{skyline}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{sudoku}}{false}{sets \envoption{rows} and \envoption{columns} to 9, in case of \LANGLE\textit{true}\RANGLE\ is specified. Additionally the classic Sudoku grid is drawn.}
  \optitem{\envoption{width}}{6.7cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0.75cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.85cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-38pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Slitherlink}
Draw a closed line into the grid. This line must be on the existing dashed lines, but do not have to go through all grid points. If numbers are present in the grid cells, they indicate how many sides of the cell are touched by the line. The line must not touch or cross itself.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{slitherlink}
    \setbigcell{1}{1}{4}
    \slitherlinkcell{1}{3}{3}
    \slitherlinkcell{3}{1}{3}
    \slitherlinkcell{3}{3}{0}
    \slitherlinkcell{3}{4}{3}
    \slitherlinkcell{4}{4}{2}
    \slitherlinkcell{5}{1}{0}
    \slitherlinkcell{5}{2}{2}
  \end{slitherlink}
  \hspace{1.5cm}
  \begin{slitherlink}
    \setbigcell{1}{1}{4}
    \slitherlinkcell{1}{3}{3}
    \slitherlinkcell{3}{1}{3}
    \slitherlinkcell{3}{3}{0}
    \slitherlinkcell{3}{4}{3}
    \slitherlinkcell{4}{4}{2}
    \slitherlinkcell{5}{1}{0}
    \slitherlinkcell{5}{2}{2}
    \framearea{black}{\tikzpath{3}{1}{8,8,4,4,8,6,6,8,6,2,6,6,2,4,2,4,2,4}}
  \end{slitherlink}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{slitherlink}
    \setbigcell{1}{1}{4}
    \slitherlinkcell{1}{3}{3}
    \slitherlinkcell{3}{1}{3}
    \slitherlinkcell{3}{3}{0}
    \slitherlinkcell{3}{4}{3}
    \slitherlinkcell{4}{4}{2}
    \slitherlinkcell{5}{1}{0}
    \slitherlinkcell{5}{2}{2}
  \end{slitherlink}
  \hspace{1.5cm}
  \begin{slitherlink}
    \setbigcell{1}{1}{4}
    \slitherlinkcell{1}{3}{3}
    \slitherlinkcell{3}{1}{3}
    \slitherlinkcell{3}{3}{0}
    \slitherlinkcell{3}{4}{3}
    \slitherlinkcell{4}{4}{2}
    \slitherlinkcell{5}{1}{0}
    \slitherlinkcell{5}{2}{2}
    \framearea{black}{\tikzpath{3}{1}{8,8,4,4,8,6,6,8,6,2,
                                      6,6,2,4,2,4,2,4}}
  \end{slitherlink}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.2cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.2cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Star Battle}
Enter exactly one star in each row, each column and each area of the grid. Cells with stars must not touch each other orthogonally or diagonally.

\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{starbattle}
    \framepuzzle
    \framearea{black}{\tikzpath{1}{1}{8,6,8,6,6,2,6,6,2,4,4,4,4,4}}
    \framearea{black}{\tikzpath{1}{2}{8,8,6,2,2,4}}
    \framearea{black}{\tikzpath{1}{4}{8,8,6,6,2,6,2,2,4,4,8,4}}
    \framearea{black}{\tikzpath{4}{2}{8,8,8,4,8,6,6,6,2,4,2,2,6,2,4,4}}
    \framearea{black}{\tikzpath{5}{3}{8,8,6,2,2,4}}
  \end{starbattle}
  \hspace{1.5cm}
  \begin{starbattle}
    \framepuzzle
    \framearea{black}{\tikzpath{1}{1}{8,6,8,6,6,2,6,6,2,4,4,4,4,4}}
    \framearea{black}{\tikzpath{1}{2}{8,8,6,2,2,4}}
    \framearea{black}{\tikzpath{1}{4}{8,8,6,6,2,6,2,2,4,4,8,4}}
    \framearea{black}{\tikzpath{4}{2}{8,8,8,4,8,6,6,6,2,4,2,2,6,2,4,4}}
    \framearea{black}{\tikzpath{5}{3}{8,8,6,2,2,4}}
    \starbattlecell{1}{2}{\Star}
    \starbattlecell{2}{4}{\Star}
    \starbattlecell{3}{1}{\Star}
    \starbattlecell{4}{5}{\Star}
    \starbattlecell{5}{3}{\Star}
  \end{starbattle}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{starbattle}
    \framepuzzle
    \framearea{black}{\tikzpath{1}{1}{8,6,8,6,6,2,6,6,2,4,4,4,
                                      4,4}}
    \framearea{black}{\tikzpath{1}{2}{8,8,6,2,2,4}}
    \framearea{black}{\tikzpath{1}{4}{8,8,6,6,2,6,2,2,4,4,8,4}}
    \framearea{black}{\tikzpath{4}{2}{8,8,8,4,8,6,6,6,2,4,2,2,6,
                                      2,4,4}}
    \framearea{black}{\tikzpath{5}{3}{8,8,6,2,2,4}}
  \end{starbattle}
  \hspace{1.5cm}
  \begin{starbattle}
    \framepuzzle
    \framearea{black}{\tikzpath{1}{1}{8,6,8,6,6,2,6,6,2,4,4,4,
                                      4,4}}
    \framearea{black}{\tikzpath{1}{2}{8,8,6,2,2,4}}
    \framearea{black}{\tikzpath{1}{4}{8,8,6,6,2,6,2,2,4,4,8,4}}
    \framearea{black}{\tikzpath{4}{2}{8,8,8,4,8,6,6,6,2,4,2,2,6,
                                      2,4,4}}
    \framearea{black}{\tikzpath{5}{3}{8,8,6,2,2,4}}
    \starbattlecell{1}{2}{\Star}
    \starbattlecell{2}{4}{\Star}
    \starbattlecell{3}{1}{\Star}
    \starbattlecell{4}{5}{\Star}
    \starbattlecell{5}{3}{\Star}
  \end{starbattle}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Stars and Arrows}
Enter a star in some empty cells of the grid. Each arrow points to at least one star and every star is referenced by at least one arrow. Arrows point to a whole row, column or diagonal, also through other stars and arrows. The numbers on the left and top of the grid indicate how many stars are located in the row or column.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{starsandarrows}
    \framepuzzle
    \starsH{1,2,3,2,0}
    \starsV{1,0,3,2,2}
    \setrow{5}{\RightDown,{},\LeftDown}
    \setrow{4}{{},\Right,{},{},\LeftUp}
    \setrow{2}{{},\Up,{},{},{}}
    \setrow{1}{\RightUp,{},{},\LeftUp,\Left}
  \end{starsandarrows}
  \hspace{1.5cm}
  \begin{starsandarrows}
    \framepuzzle
    \starsH{1,2,3,2,0}
    \starsV{1,0,3,2,2}
    \setrow{5}{\RightDown,\Star,\LeftDown,\Star}
    \setrow{4}{{},\Right,\Star,\Star,\LeftUp}
    \setrow{3}{\Star,\Star,\Star}
    \setrow{2}{{},\Up,{},{},{}}
    \setrow{1}{\RightUp,{},\Star,\LeftUp,\Left}
  \end{starsandarrows}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{starsandarrows}
    \framepuzzle
    \starsH{1,2,3,2,0}
    \starsV{1,0,3,2,2}
    \setrow{5}{\RightDown,{},\LeftDown}
    \setrow{4}{{},\Right,{},{},\LeftUp}
    \setrow{2}{{},\Up,{},{},{}}
    \setrow{1}{\RightUp,{},{},\LeftUp,\Left}
  \end{starsandarrows}
  \hspace{1.5cm}
  \begin{starsandarrows}
    \framepuzzle
    \starsH{1,2,3,2,0}
    \starsV{1,0,3,2,2}
    \setrow{5}{\RightDown,\Star,\LeftDown,\Star}
    \setrow{4}{{},\Right,\Star,\Star,\LeftUp}
    \setrow{3}{\Star,\Star,\Star}
    \setrow{2}{{},\Up,{},{},{}}
    \setrow{1}{\RightUp,{},\Star,\LeftUp,\Left}
  \end{starsandarrows}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.9cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.9cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Sudoku}
Well, it's Sudoku -- nothing to explain! Fill each row and column with numbers from 1 to 9.
\subsubsection{Example}
\begin{figure}[htbp]
\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}
\end{figure}
\begin{lstlisting}
\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{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{width}}{9.1cm}{sets the width of the minipage, in which the grid is typeset. 9 cells of width 1cm plus a litle extra for lines.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage. To get a width of 5cm you need to scale by $\nicefrac{5}{9}$}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{9.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsubsection{Supporting \texttt{bash} scripts}
\paragraph{createlpsudoku}
The \texttt{createlpsudoku} \cite{bib:wiki:createlpsudoku} \texttt{bash} script can transform Sudoku format files into \env{lpsudoku} environments. It can process files in the so called one line 81 format\footnote{processing of several sudokus in 81 format (one in each line) is possible} (option -e (default)) and in simple sudoku format (option -s)

\medskip
Usage: \texttt{createlpsudoku [options] [-o output] -i input}

\medskip
It expects an input file with the option \texttt{-i}. You can specify an output file with the option \texttt{-o}. Otherwise it writes to \texttt{stdout}. Furthermore, the following options are possible: 

\medskip
\begin{tabular}{ll}
-w & write Windows line endings (CR/LF) to file \\
-v & prints version number \\
-h & prints help \\
\end{tabular}

\paragraph{lpsmag}

With the \texttt{lpsmag} \cite{bib:wiki:lpsmag} \texttt{bash} script you can half automatically produce a Sudoku magazine using the \LaTeX\ package \package{lpsudoku.sty} and the \texttt{createlpsudoku} bash script.

\medskip
Usage: \texttt{lpsmag configfile}

\medskip
The script needs an installed \href{http://ostermiller.org/qqwing/}{QQwing} \cite{bib:web:qqwing} and a config file for defining the magazine's contents: 

\begin{lstlisting}
page p1 easy
page p2 easy
startpuzzles
typesetpage p1
typesetpage p2
startsolutions
typesetsolpage p1 p2 last
\end{lstlisting}

This config file will be sourced into the \texttt{lpsmag bash} script and contains calls of \texttt{lpsmag} functions. Make sure, that the config file has UNIX line endings (LF). For a detailed documentation I refer to the following \href{http://logicpuzzle.square7.de/lpsmag}{wiki} \cite{bib:wiki:lpsmag} entry.

After running \texttt{lpsmag} you will find a \texttt{lpsmag.tex} in your working directory. Just run \texttt{pdflatex lpsmag.tex} twice and you finally get for example this \href{https://bitbucket.org/kleberj/logicpuzzle/downloads/lpsmag.pdf}{\texttt{lpsmag.pdf}}. 

\subsection{Sun and Moon}
Enter exactly one star and one dark cloud in each row and each column of the grid, so that the planets are illuminated as specified. The stars shine horizontally or vertically arbitrarily far, but not through a planet or a dark cloud.

\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{sunandmoon}
    \framepuzzle
    \setrow{5}{{},{},{},{},\Moon}
    \setrow{4}{{},{},\MoonTL}
    \setrow{3}{\Moon}
    \setrow{2}{{},\MoonR}
    \setrow{1}{{},{},{},\MoonT}
  \end{sunandmoon}
  \hspace{1.5cm}
  \begin{sunandmoon}
    \framepuzzle
    \setrow{5}{{},{},\Star,\Cloud,\Moon}
    \setrow{4}{{},\Star,\MoonTL,{},\Cloud}
    \setrow{3}{\Moon,\Cloud,{},{},\Star}
    \setrow{2}{\Cloud,\MoonR,{},\Star}
    \setrow{1}{\Star,{},\Cloud,\MoonT}
  \end{sunandmoon}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{sunandmoon}
    \framepuzzle
    \setrow{5}{{},{},{},{},\Moon}
    \setrow{4}{{},{},\MoonTL}
    \setrow{3}{\Moon}
    \setrow{2}{{},\MoonR}
    \setrow{1}{{},{},{},\MoonT}
  \end{sunandmoon}
  \hspace{1.5cm}
  \begin{sunandmoon}
    \framepuzzle
    \setrow{5}{{},{},\Star,\Cloud,\Moon}
    \setrow{4}{{},\Star,\MoonTL,{},\Cloud}
    \setrow{3}{\Moon,\Cloud,{},{},\Star}
    \setrow{2}{\Cloud,\MoonR,{},\Star}
    \setrow{1}{\Star,{},\Cloud,\MoonT}
  \end{sunandmoon}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Tents and Trees}
Draw tents in the grid. Next to each tree, a tent must be entered in a horizontally or vertically adjacent cell, which is associated with this tree. The numbers next to the grid indicate the quantity of tents in each row or column. No tent can stand directly next to another one, not even diagonally.
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{tentsandtrees}
    \framepuzzle
    \tentH{1,2,1,1,2}
    \tentV{2,0,2,0,3}
    \setrow{4}{\Tree,{},\Tree,\Tree,\Tree}
    \setrow{2}{{},\Tree}
    \setrow{1}{\Tree,{},{},\Tree}
  \end{tentsandtrees}
  \hspace{1.5cm}
  \begin{tentsandtrees}
    \framepuzzle
    \tentH{1,2,1,1,2}
    \tentV{2,0,2,0,3}
    \setrow{5}{\Tent,{},\Tent,{},\Tent,}
    \setrow{4}{\Tree,{},\Tree,\Tree,\Tree}
    \setrow{3}{{},\Tent,{},\Tent}
    \setrow{2}{{},\Tree}
    \setrow{1}{\Tree,\Tent,{},\Tree,\Tent}
  \end{tentsandtrees}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{tentsandtrees}
    \framepuzzle
    \tentH{1,2,1,1,2}
    \tentV{2,0,2,0,3}
    \setrow{4}{\Tree,{},\Tree,\Tree,\Tree}
    \setrow{2}{{},\Tree}
    \setrow{1}{\Tree,{},{},\Tree}
  \end{tentsandtrees}
  \hspace{1.5cm}
  \begin{tentsandtrees}
    \framepuzzle
    \tentH{1,2,1,1,2}
    \tentV{2,0,2,0,3}
    \setrow{5}{\Tent,{},\Tent,{},\Tent,}
    \setrow{4}{\Tree,{},\Tree,\Tree,\Tree}
    \setrow{3}{{},\Tent,{},\Tent}
    \setrow{2}{{},\Tree}
    \setrow{1}{\Tree,\Tent,{},\Tree,\Tent}
  \end{tentsandtrees}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.9cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.9cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\subsection{Tunnel}
Determine the course of the tube. Draw the only possible connection. from the beginning to the end. The numbers indicate how many tube segments (including portals) are present in the corresponding rows and columns. The tube is one cell wide, and does not cross or touch itself!
\subsubsection{Example}
\begin{figure}[htbp]
\begin{center}
  \begin{tunnel}
    \framepuzzle
    \tunnelH{4,3,3,3,4}
    \tunnelV{5,1,5,1,5}
    \portal{1}{1}
    \portal{5}{5}
  \end{tunnel}
  \hspace{1.5cm}
  \begin{tunnel}
    \framepuzzle
    \tunnelH{4,3,3,3,4}
    \tunnelV{5,1,5,1,5}
    \portal{1}{1}
    \portal{5}{5}
    \tube{\tikzpath{1}{1}{6,6,6,6,8,8,4,4,4,4,8,8,6,6,6,6}}
  \end{tunnel}
\end{center}
\end{figure}
\begin{lstlisting}
\begin{center}
  \begin{tunnel}
    \framepuzzle
    \tunnelH{4,3,3,3,4}
    \tunnelV{5,1,5,1,5}
    \portal{1}{1}
    \portal{5}{5}
  \end{tunnel}
  \hspace{1.5cm}
  \begin{tunnel}
    \framepuzzle
    \tunnelH{4,3,3,3,4}
    \tunnelV{5,1,5,1,5}
    \portal{1}{1}
    \portal{5}{5}
    \tube{\tikzpath{1}{1}{6,6,6,6,8,8,4,4,4,4,8,8,6,6,6,6}}
  \end{tunnel}
\end{center}
\end{lstlisting}

\subsubsection{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.9cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.9cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}
\end{optionlist}

\clearpage
\section{Roll out your own grid-based logic puzzle}
\label{sec:rollout}
As an example we take a look at the former \package{bokkusu.sty} package. First, we ignore the LPPL license stuff.

\lstset{numbers=none,basicstyle=\ttfamily\footnotesize}%
\begin{lstlisting}
\ProvidesPackage{bokkusu}[2013/03/25 bokkusu.sty v1.2 - Josef Kleber (C) 2013]%
\RequirePackage{logicpuzzle}%
\end{lstlisting}

We wrote a package \package{bokkusu.sty} with version number v1.2 and date 2013/03/25 and added a copyright remark. We need to load the code base package \package{logicpuzzle.sty}.

\begin{lstlisting}
\newcommand*\LP@BK@init@prefix{LP@BK}%
\newcommand*\LP@BK@init@package{bokkusu}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{rows}{5}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{columns}{5}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{scale}{1}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{counterstyle}{none}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{color}{black}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{bgcolor}{}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{width}{6.7cm}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{cvoffset}{-38pt}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{title}{}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{titleindent}{0.75cm}%
\LP@define@key{\LP@BK@init@prefix}{\LP@BK@init@package}{titlewidth}{5.85cm}%
\LP@define@choicekey@fontsize{\LP@BK@init@prefix}{\LP@BK@init@package}{Large}%
\ExecuteOptionsX{rows,columns,width,fontsize,scale,color,bgcolor,cvoffset,
                 counterstyle,title,titleindent,titlewidth}%
\ProcessOptionsX\relax%
\end{lstlisting}

We save the package prefix and name in a macro for easy change. Then we define the options for package \package{bokkusu.sty} and the environment \env{bokkusu}, which are executed afterwards to create the macros for the option values.

\begin{lstlisting}
\let\valueH\LP@bottomrow%
\let\valueV\LP@leftcolumn%
\let\sumH\LP@toprow%
\let\sumV\LP@rightcolumn%
\end{lstlisting}

We need numbers around the grid. Therefore, we define some aliases for the existing generic commands.

\begin{lstlisting}
\newcommand*\bokkususetup[1]%
{%
  \setkeys{bokkusu.sty}{#1}%
}%
\end{lstlisting}

We define \cmd\bokkususetup\ for resetting the global package options.

\clearpage
Finally, we define the \env{bokkusu} environment. 

\begin{lstlisting}
\newenvironment{bokkusu}[1][]%
{%
  \setkeys{bokkusu}{#1}%
  \LP@set@package{bokkusu}%
  \LP@set@env@prefix{LP@BK}%
  \setcounter{LP@rows}{\LP@BK@rows}%
  \setcounter{LP@columns}{\LP@BK@columns}%
  \stepcounter{LP@rows}%
  \stepcounter{LP@columns}%
\end{lstlisting}

We locally set the environment options and the prefix and name of the current puzzle environment. We need to reset the counters for \envoption{rows} and \envoption{columns}, as they might have been altered. 

\begin{lstlisting}
  \begin{minipage}[t]{\LP@BK@width}%
    \ifthenelse{\equal{\LP@BK@title}{}}%
    {\par\enspace\par}% empty
    {\enspace\par\noindent\hspace{\LP@BK@titleindent}\parbox{\LP@BK@titlewidth}
      {\strut\LP@titleformat\LP@BK@title}\vspace{3mm}\par}%
    \begin{tikzpicture}[scale=\LP@BK@scale]%
      \LP@drawbackground{1}{1}{\LP@BK@columns}{\LP@BK@rows}{\LP@BK@bgcolor}%
      \LP@drawgrid{1}{1}{\LP@BK@columns}{\LP@BK@rows}{1cm}%
}%
\end{lstlisting}

We start a minipage with width \marg{width}. If the user defined a title, we typeset the title and add a vertical space. Then, we draw the puzzle with the help of \package{tikz.sty}. We start drawing the background and the grid.

\begin{lstlisting}
{%
    \end{tikzpicture}%
    \LP@drawcounter{\LP@BK@counterstyle}%
    \stepcounter{LP@puzzlecounter}%
  \end{minipage}%
}%
\end{lstlisting}

Finally, we just end the picture for the puzzle. We draw and step the counter. As last action, we need to close the \env{minipage} environment. That's it. Easy, isn't it? You just need to copy this skelton and change or add some code for your specific puzzle.

\section{The code}
\label{sec:code}
\lstset{basicstyle=\ttfamily\normalsize}%

\subsection{PGF layers}
\label{sec:layer}
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.

All layers can also be accessed with the generic PGF method:

\begin{lstlisting}
\begin{pgfonlayer}{layer}
  ...
\end{pgfonlayer}
\end{lstlisting}

\begin{tabularx}{\textwidth}{lX}
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. You can hide elements like help nodes behind the background color on the \layer{LPdump} layer.

\subsection{Environments}
\label{sec:env}
\subsubsection{\texttt{Puzzle environments}}
\paragraph{\texttt{logicpuzzle}}
The \env{logicpuzzle} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{logicpuzzle}\oarg{options}\\\dots\\\enve{logicpuzzle}} is the generic environment for typesetting logic puzzles. With the optional argument of the environment, you can reset the options with local scope. Here, a blank grid is created.
Furthermore, there are the puzzle environments described in section \ref{sec:supppuzzle}. They have their own set of options, that is also different option values and defaults! These can be changed with the \texttt{\textbackslash puzzlesetup} commands with global scope or in the optional argument of the environment with local scope.

\subparagraph{Options}
\begin{optionlist}
  \optitem{\envoption{rows}}{5}{defines the number of rows in the grid.}
  \optitem{\envoption{columns}}{5}{specifies the number of columns in the grid}
  \optitem{\envoption{width}}{5.1cm}{sets the width of the minipage, in which the grid is typeset.}
  \optitem{\envoption{scale}}{1}{scales the size of the grid in the minipage.}
  \optitem{\envoption{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{\envoption{title}}{}{sets the title of a puzzle.}
  \optitem{\envoption{titleindent}}{0cm}{defines the indent of the title.}
  \optitem{\envoption{titlewidth}}{5.1cm}{specifies the width of the box the title is set in.}
  \optitem{\envoption{color}}{}{specifies the color for coloring the cells.}
  \optitem{\envoption{bgcolor}}{}{sets the background color of the grid.}
  \optitem{\envoption{counterstyle}}{none}{defines the counter style. Predefined styles: none, left, right}
  \optitem{\envoption{cvoffset}}{-23pt}{sets the vertical offset of the counters in the margin.}  
\end{optionlist}
\subsubsection{\texttt{Supporting environments}}
\paragraph{\texttt{puzzlebackground}}
\label{sec:puzzlebackground}
The \env{puzzlebackground} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{puzzlebackground}\\\dots\\\enve{puzzlebackground}} allows you to place elements behind the \layer{main} layer on the \layer{LPbackground} layer [see: \ref{sec:layer}]. This is for example usefull for the \cmd\fillarea\ [see: \ref{sec:fillarea}] command.
\paragraph{\texttt{puzzleforeground}}
\label{sec:puzzleforeground}
The \env{puzzleforeground} environment\marginnote{\hbadness=10000\RaggedLeft\scriptsize\envb{puzzleforeground}\\\dots\\\enve{puzzleforeground}} allows you to place elements in front of the \layer{main} layer on the \layer{LPforeground} layer [see: \ref{sec:layer}]. This is for example usefull for the \cmd\framearea\ [see: \ref{sec:framearea}] command.

\subsection{Commands}
\label{sec:commands}
\subsubsection{Puzzle specific commands}
\label{sec:pscommands}
\paragraph{2D-Sudoku}
\label{sec:pscddsudoku}
\subparagraph{\texttt{ddsudokucell}}
\label{sec:pscddsudokucell}
The command \cs{ddsudokucell}\margcs{\cmd\ddsudokucell\{\marg{column}\}\{\marg{row}\}\\\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column}\marg{row}.
\subparagraph{\texttt{ddsudokusetup}}
With the command \cs{ddsudokusetup}\margcs{\cmd\ddsudokusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Battleship}
\label{sec:pscbattleship}
\subparagraph{\texttt{placeship}}
With the command \cs{placeship}\margcs{\cmd\placeship\{\marg{direction}\}\\\{\marg{column}\}\{\marg{row}\}\{\marg{length}\}} you can place complete ships in the grid. It expects the specification of the direction as horizontal (H) or vertical (V). Furthermore, it requires the starting coordinates and the length of the ship.
\subparagraph{\texttt{placesegment}}
The command \cs{placesegment}\margcs{\cmd\placesegment\{\marg{column}\}\{\marg{row}\}\\\{\marg{ship segment}\}} is used for the placement of ship segments in the grid. In the mandatory argument \marg{ship segment}, you can use the following commands:

\begin{center}
\begin{tabular}{lccl}
\cs{Ship} & \scalebox{.5}{\Ship} & \scalebox{.5}{\ShipC} & \cs{ShipC} \\
\cs{ShipL} & \scalebox{.5}{\ShipL} & \scalebox{.5}{\ShipR} & \cs{ShipR} \\
\cs{ShipB} & \scalebox{.5}{\ShipB} & \scalebox{.5}{\ShipT} & \cs{ShipT} \\
\end{tabular}
\end{center}
\subparagraph{\texttt{ship}}
The command \cs{ship} was replaced by the \cs{placesegment} command. The command \cs{ship} is deprecated and should not be used longer. It may still be used, but it is not recommended.
\subparagraph{\texttt{placewater}}
With the command \cs{placewater}\margcs{\cmd\placewater\{\marg{column}\}\{\marg{row}\}} you can place water markers \mbox{( \raisebox{2pt}{\Water} )} in the grid.
\subparagraph{\texttt{placeisland}}
With the command \cs{placeisland}\margcs{\cmd\placeisland\{\marg{column}\}\{\marg{row}\}} you can place islands ( \raisebox{-2pt}{\resizebox{!}{10pt}{\Island}} ) in the grid. The island outlines are created randomly: \raisebox{-2pt}{\resizebox{!}{10pt}{\Island}}, \raisebox{-2pt}{\resizebox{!}{10pt}{\Island}}, \raisebox{-2pt}{\resizebox{!}{10pt}{\Island}}, ...
\subparagraph{\texttt{shipH}}
The command \cs{shipH}\margcs{\cmd\shipH\{\marg{csv list}\}} typesets the horizontal numbers above the grid. It expects a comma-separated list as an argument.
\subparagraph{\texttt{shipV}}
The command \cs{shipV}\margcs{\cmd\shipV\{\marg{csv list}\}} typesets the vertical numbers beside the grid. It also expects a comma separated list.
\subparagraph{\texttt{shipbox}}
The command \cs{shipbox}\margcs{\cmd\shipbox\{\marg{csv list}\}} defines the number and size of the ships, which are typeset under the grid.
\subparagraph{\texttt{battleshipsetup}}
With the command \cs{battleshipsetup}\margcs{\cmd\battleshipsetup\{\marg{options}\}} you can reset the options with global scope.
\subparagraph{\texttt{classicgame}}
The command \cs{classicgame}\margcs{\cmd\classicgame\{\marg{csv list}\}} typesets a game sheet for playing classic Battleship. It expects a comma separated list with the number and sizes of the ships.
\paragraph{Bokkusu}
\label{sec:pscbokkusu}
\subparagraph{\texttt{valueH}}
The command \cs{valueH}\margcs{\cmd\valueH\{\marg{csv list}\}} typesets the numbers left to the grid indicating the values of the cells. It expects a comma-separated list as an argument.
\subparagraph{\texttt{valueV}}
The command \cs{valueV}\margcs{\cmd\valueV\{\marg{csv list}\}} typesets the numbers below the grid specifying the values of the cells. It also expects a comma separated list.
\subparagraph{\texttt{sumH}}
The command \cs{sumH}\margcs{\cmd\sumH\{\marg{csv list}\}} typesets the numbers right to the grid indicating the sums of the values of the colored cells. It expects a comma-separated list.
\subparagraph{\texttt{sumV}}
The command \cs{sumV}\margcs{\cmd\sumV\{\marg{csv list}\}} typesets the numbers above the grid specifying the sums of the values of the colored cells. It expects a comma separated list.
\subparagraph{\texttt{bokkususetup}}
With the command \cs{bokkususetup}\margcs{\cmd\bokkususetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Bridges}
\label{sec:pscbridges}
\subparagraph{\texttt{bridgesrow}}
\label{sec:pscbridgesrow}
With\margcs{\cmd\bridgesrow\{\marg{row}\}\{\marg{csv list}\}} the \cmd\bridgesrow\ command, you can set the contents of a bridges \marg{row}. These are the numbers indicating how many bridges originate from this specific island.
\subparagraph{\texttt{bridgescolumn}}
\label{sec:pscbridgescolumn}
With\margcs{\cmd\bridgescolumn\{\marg{column}\}\{\marg{csv list}\}} the \cmd\bridgescolumn\ command, you can set the contents of a bridges \marg{column}.
\subparagraph{\texttt{bridge}}
With\margcs{\cmd\bridge\{\oarg{optional arguments}\}\\\{\marg{Ti\textit{k}Z path}} the \cmd\bridge\ command, you can draw the bridges between islands. With the optional argument \oarg{double} you can draw a double bridge. Furthermore, you can set the color of the bridge with the option \oarg{color}.
\subparagraph{\texttt{bridgessetup}}
With the command \cs{bridgessetup}\margcs{\cmd\bridgessetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Chaos Sudoku}
\label{sec:pscchaossudoku}
\subparagraph{\texttt{chaossudokucell}}
With the command \cs{chaossudokucell}\margcs{\cmd\chaossudokucell\{\marg{column}\}\\\{\marg{row}\}\{\marg{number}\}}, you can set the \marg{number} of the grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{chaossudokusetup}}
With the command \cs{chaossudokusetup}\margcs{\cmd\chaossudokusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Four Winds}
\label{sec:pscfourwinds}
\subparagraph{\texttt{fourwindscell}}
The command \cs{fourwindscell}\margcs{\cmd\fourwindscell\{\marg{column}\}\{\marg{row}\}\\\{\marg{number}\}\{\marg{csv list}\}} sets the \marg{number} into grid cell \marg{column}\marg{row}. Furthermore, it draws lines specified in \marg{csv list} in the \texttt{direction/length} format.
\subparagraph{\texttt{fourwindssetup}}
With the command \cs{fourwindssetup}\margcs{\cmd\fourwindssetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Hakyuu}
\label{sec:pschakyuu}
\subparagraph{\texttt{hakyuucell}}
The command \cs{hakyuucell}\margcs{\cmd\hakyuucell\{\marg{column}\}\{\marg{row}\}\\\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column}\marg{row}.
\subparagraph{\texttt{hakyuusetup}}
With the command \cs{hakyuusetup}\margcs{\cmd\hakyuusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Hitori}
\label{sec:pschitori}
\subparagraph{\texttt{hitorisetup}}
With the command \cs{hitorisetup}\margcs{\cmd\hitorisetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Kakuro}
\label{sec:psckakuro}
\subparagraph{\texttt{kakurorow}}
\label{sec:psckakurorow}
With\margcs{\cmd\kakurorow\{\marg{row}\}\{\marg{csv list}\}} the \cmd\kakurorow\ command, you can set the contents of a kakuro \marg{row}. These may be numbers and the commands \cmd\KKR\ or \cmd\Black.
\subparagraph{\texttt{kakurocolumn}}
\label{sec:psckakurocolumn}
With\margcs{\cmd\kakurocolumn\{\marg{column}\}\{\marg{csv list}\}} the \cmd\kakurocolumn\ command, you can set the contents of a kakuro \marg{column}.
\subparagraph{\texttt{KKR}}
With\margcs{\cmd\KKR\{\marg{sumV}\}\{\marg{sumH}\}} the \cmd\KKR\ command, you can set the contents of a kakuro cell.
\subparagraph{\texttt{Black}}
The command \cs{Black}\margcs{\cmd\Black} blacks out a cell.
\subparagraph{\texttt{kakurosetup}}
With the command \cs{kakurosetup}\margcs{\cmd\kakurosetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Kendoku}
\label{sec:psckendoku}
\subparagraph{\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}.
\subparagraph{\texttt{kendokusetup}}
With the command \cs{kendokusetup}\margcs{\cmd\kendokusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Killer Sudoku}
\label{sec:psckillersudoku}
\subparagraph{\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}.
\subparagraph{\texttt{killersudokusetup}}
With the command \cs{killersudokusetup}\margcs{\cmd\killersudokusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Laser Beam}
\label{sec:psclaserbeam}
\subparagraph{\texttt{laserH}}
The command \cs{laserH}\margcs{\cmd\laserH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many cells are traversed by the laser beam. It expects a comma-separated list as an argument.
\subparagraph{\texttt{laserV}}
The command \cs{laserV}\margcs{\cmd\laserV\{\marg{csv list}\}} typesets the numbers left to the grid.
\subparagraph{\texttt{mirrorH}}
The command \cs{mirrorH}\margcs{\cmd\mirrorH\{\marg{csv list}\}} typesets the numbers below the grid indicating how many mirrors are placed in the intersections of this column.
\subparagraph{\texttt{mirrorV}}
The command \cs{mirrorV}\margcs{\cmd\mirrorV\{\marg{csv list}\}} typesets the numbers right to the grid.
\subparagraph{\texttt{placearrow}}
The command \cs{placearrow}\margcs{\cmd\placearrow\{\marg{column}\}\{\marg{row}\}\\\{\marg{direction}\}} is used for the placement of arrows at the grid frame. The reference for coordinates is the bottom left corner of the cell. In the mandatory argument \marg{direction}, you can use the following indicators: LeftUp, LeftDown, RightUp, RightDown
\subparagraph{\texttt{placecross}}
With the command \cs{placecross}\margcs{\cmd\placecross\{\marg{column}\}\{\marg{row}\}} you can place a cross in the intersections of the grid.
\subparagraph{\texttt{placemirror}}
With the command \cs{placemirror}\margcs{\cmd\placemirror\{\marg{column}\}\{\marg{row}\}\\\{\marg{direction}\}} you can place mirrors in the intersections of the grid. In the mandatory argument \marg{direction}, you can use the following indicators: H, V
\subparagraph{\texttt{laser}}
The command \cs{laser}\margcs{\cmd\laser[\oarg{color}]\{\marg{Ti\textit{k}Z path}\}} draws the laser beam given by \marg{Ti\textit{k}Z path} with color \oarg{color} (default: red). The reference for coordinates is the bottom left corner of the cell.

\begin{lstlisting}
\laser[green]{(1,2)--(2,3)--(1,4)}
\end{lstlisting}

You should consider using this command in the \env{puzzlebackground} environment.
\subparagraph{\texttt{laserbeamsetup}}
With the command \cs{laserbeamsetup}\margcs{\cmd\laserbeamsetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Magic Labyrinth}
\label{sec:pscmagiclabyrinth}
\subparagraph{\texttt{magiclabyrinthcell}}
The command \cs{magiclabyrinthcell}\margcs{\cmd\magiclabyrinthcell\\\{\marg{column}\}\{\marg{row}\}\{\marg{number}\}} sets a number into grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{mlline}}
The command \cs{mlline}\margcs{\cmd\mlline\{\marg{Ti\textit{k}Z path}\}} draws a line given by \marg{Ti\textit{k}Z path}.
\subparagraph{\texttt{magiclabyrinthsetup}}
The \cs{magiclabyrinthsetup}\margcs{\cmd\magiclabyrinthsetup\{\marg{options}\}} command resets the options with global scope.
\paragraph{Magnets}
\label{sec:pscmagnets}
\subparagraph{\texttt{plusH}}
The command \cs{plusH}\margcs{\cmd\plusH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many positive poles are in the respective column. It expects a comma-separated list as an argument.
\subparagraph{\texttt{minusH}}
The command \cs{minusH}\margcs{\cmd\minusH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many negative poles are in the respective column.
\subparagraph{\texttt{plusV}}
The command \cs{plusV}\margcs{\cmd\plusV\{\marg{csv list}\}} typesets the numbers left to the grid indicating how many positive poles are in the respective row.
\subparagraph{\texttt{minusV}}
The command \cs{minusV}\margcs{\cmd\minusV\{\marg{csv list}\}} typesets the numbers left to the grid indicating how many negative pole ares in the respective row.
\subparagraph{\texttt{magnetsH}}
The command \cs{magnetsH}\margcs{\cmd\magnetsH\{\marg{csv list}\}} typesets non-magnetic  horizontal plates by using the \texttt{column}/\texttt{row} format in \marg{csv list}.
\subparagraph{\texttt{magnetsV}}
The command \cs{magnetsV}\margcs{\cmd\magnetsV\{\marg{csv list}\}} typesets non-magnetic vertical plates by using the \texttt{column}/\texttt{row} format in \marg{csv list}.
\subparagraph{\texttt{Magnetic plates}}
The command \cs{PMH}\margcs{\cmd\PMH\{\marg{csv list}\}, \cmd\MPH\{\marg{csv list}\}, \cmd\PMV\{\marg{csv list}\}, \cmd\MPV\{\marg{csv list}\}} draws horizontal magnetic plates with \fbox{$+$ $-$} arrangement. It expects the \texttt{column}/\texttt{row} format in \marg{csv list}. You can typeset the three other magnetic arrangements by using the \cmd\MPH, \cmd\PMV\ and \cmd\MPV\ commands.
\subparagraph{\texttt{magnetssetup}}
With the command \cs{magnetssetup}\margcs{\cmd\magnetssetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Masyu}
\label{sec:pscmasyu}
\subparagraph{\texttt{masyucell}}
The command \cs{masyucell}\margcs{\cmd\masyucell\\\{\marg{column}\}\{\marg{row}\}\{\marg{element}\}} sets an element into grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{MasyuW}}
The command \cs{MasyuW}\margcs{\cmd\MasyuW} draws an empty (white) circle.
\subparagraph{\texttt{MasyuB}}
The command \cs{MasyuB}\margcs{\cmd\MasyuB} draws a black circle. 
\subparagraph{\texttt{masyuline}}
The command \cs{masyuline}\margcs{\cmd\masyuline\{\marg{Ti\textit{k}Z path}\}} draws a line given by \marg{Ti\textit{k}Z path}.
\subparagraph{\texttt{masyusetup}}
The \cs{masyusetup}\margcs{\cmd\masyusetup\{\marg{options}\}} command resets the options with global scope.
\paragraph{Minesweeper}
\label{sec:pscminesweeper}
\subparagraph{\texttt{Mine}}
The command \cs{Mine}\margcs{\cmd\Mine} draws a mine. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]! 
\subparagraph{\texttt{minesweepersetup}}
With the command \cs{minesweepersetup}\margcs{\cmd\minesweepersetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Number Link}
\label{sec:pscnumberlink}
\subparagraph{\texttt{numberlinkcell}}
The command \cs{numberlinkcell}\margcs{\cmd\numberlinkcell\\\{\marg{column}\}\{\marg{row}\}\{\marg{element}\}} sets a number or letter into grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{link}}
The command \cs{link}\margcs{\cmd\link\{\marg{Ti\textit{k}Z path}\}} draws a line given by \marg{Ti\textit{k}Z path}.
\subparagraph{\texttt{numberlinksetup}}
With the command \cs{numberlinksetup}\margcs{\cmd\numberlinksetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Resuko}
\label{sec:pscresuko}
\subparagraph{\texttt{resukocell}}
The command \cs{resukocell}\margcs{\cmd\resukocell\\\{\marg{column}\}\{\marg{row}\}\{\marg{element}\}} sets the \marg{element} into grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{Track tiles}}
You can use the following commands to draw different track tiles, e.g. with the \cmd\resukocell\ command:

\begin{center}
\begin{tabular}{rlrlrl}
\raisebox{-7pt}{\Straight} & \cmd\Straight & \raisebox{-7pt}{\StraightH} & \cmd\StraightH & \raisebox{-7pt}{\StraightV} & \cmd\StraightV \\
 & & & & & \\
\raisebox{-7pt}{\Cross} & \cmd\Cross & \raisebox{-7pt}{\CrossH} & \cmd\CrossH & \raisebox{-7pt}{\CrossV} & \cmd\CrossV \\
 & & & & & \\
\raisebox{-7pt}{\CurveTL} & \cmd\CurveTL & \raisebox{-7pt}{\CurveTR} & \cmd\CurveTR & \raisebox{-7pt}{\CurveBL} & \cmd\CurveBL \\
 & & & & & \\
\raisebox{-7pt}{\CurveBR} & \cmd\CurveBR & \raisebox{-7pt}{\Graveltrap} & \cmd\Graveltrap & \\
\end{tabular}
\end{center}

\subparagraph{\texttt{pitlane}}
The command \cs{pitlane}\margcs{\cmd\pitlane\{\marg{column}\}\{\marg{row}\}\\\{\marg{direction}\}} draws the pit lane in grid cell \{\marg{column}\}\{\marg{row}\} with \{\marg{direction}\} V or H.
\subparagraph{\texttt{parkinglot}}
The command \cs{parkinglot}\margcs{\cmd\parkinglot\{\marg{column}\}\{\marg{row}\}} draws the parking lot in grid cell \{\marg{column}\}\{\marg{row}\}.
\subparagraph{\texttt{trackH}}
The command \cs{trackH}\margcs{\cmd\trackH\{\marg{csv list}\}} typesets the track tiles below the grid indicating how many different tiles are in the respective column. It expects a comma-separated list as an argument with the format \texttt{straights/curves/intersections}.
\subparagraph{\texttt{trackV}}
The command \cs{trackV}\margcs{\cmd\trackV\{\marg{csv list}\}} typesets the track tiles left to the grid.
\subparagraph{\texttt{track}}
The command \cs{track}\margcs{\cmd\track\{\marg{Ti\textit{k}Z path}\}} draws the race track given by \marg{Ti\textit{k}Z path}. The design of the race track is based on \href{http://tex.stackexchange.com/users/3708/frederic}{Frédéric}'s answer to this \href{http://tex.stackexchange.com/questions/115923/crossing-paths-in-tikz-without-intersection}{question} on \TeX.sx. The design with auto-generated bridges will only work, if the path is not constructed with an intersection point. It's recommended to start the path on a standard straight and define the path from corner to corner with \cmd\xtikzpath.

\subparagraph{\texttt{resukosetup}}
With the command \cs{resukosetup}\margcs{\cmd\resukosetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Schatzsuche}
\label{sec:pscschatzsuche}
\subparagraph{\texttt{Diamond}}
The command \cs{Diamond}\margcs{\cmd\Diamond} draws a diamond. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]! 
\subparagraph{\texttt{schatzsuchesetup}}
With the command \cs{schatzsuchesetup}\margcs{\cmd\schatzsuchesetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Skyline}
\label{sec:pscskyline}
\subparagraph{\texttt{skylineT}}
The command \cs{skylineT}\margcs{\cmd\skylineT\{\marg{csv list}\}} typesets the numbers above the grid indicating how many skycrapers are visible. It expects a comma-separated list as an argument.
\subparagraph{\texttt{skylineB}}
The command \cs{skylineB}\margcs{\cmd\skylineB\{\marg{csv list}\}} typesets the numbers below the grid.
\subparagraph{\texttt{skylineL}}
The command \cs{skylineL}\margcs{\cmd\skylineL\{\marg{csv list}\}} typesets the numbers left to the grid.
\subparagraph{\texttt{skylineR}}
The command \cs{skylineR}\margcs{\cmd\skylineR\{\marg{csv list}\}} typesets the numbers right to the grid.
\subparagraph{\texttt{skylinecell}}
The command \cs{skylinecell}\margcs{\cmd\skylinecell\{\marg{column}\}\{\marg{row}\}\\\{\marg{height}\}} sets the \marg{height} of the grid cell \marg{column}\marg{row}.
\subparagraph{\texttt{skylinesetup}}
With the command \cs{skylinesetup}\margcs{\cmd\skylinesetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Slitherlink}
\label{sec:pscslitherlink}
\subparagraph{\texttt{slitherlinkcell}}
The command \cs{slitherlinkcell}\margcs{\cmd\slitherlinkcell\\\{\marg{column}\}\{\marg{row}\}\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{slitherlinksetup}}
With the command \cs{slitherlinksetup}\margcs{\cmd\slitherlinksetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Star Battle}
\label{sec:pscstarbattle}
\subparagraph{\texttt{starbattlecell}}
With the \cs{starbattlecell}\margcs{\cmd\starbattlecell\{\marg{column}\}\{\marg{row}\}\\\{\marg{element}\}} command, you can set an \marg{element} in the grid cell \marg{column}\marg{row}, e.g. the \cmd\Star\ command.
\subparagraph{\texttt{starbattlesetup}}
With the command \cs{starbattlesetup}\margcs{\cmd\starbattlesetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Stars and Arrows}
\label{sec:pscstarsandarrows}
\subparagraph{\texttt{starsH}}
The command \cs{starsH}\margcs{\cmd\starsH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many stars are in the respective column. It expects a comma-separated list as an argument.
\subparagraph{\texttt{starsV}}
The command \cs{starsV}\margcs{\cmd\starsV\{\marg{csv list}\}} typesets the numbers left to the grid.
\subparagraph{\texttt{Star}}
The command \cs{Star}\margcs{\cmd\Star} draws a star. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]!
\subparagraph{Arrows}
You can use the following commands to draw different arrows:

\begin{center}
\begin{tabular}{lrlrlrlr}
\cmd\Right & \raisebox{3pt}{\Right} & \cmd\RightUp & \raisebox{-4pt}{\RightUp} & \cmd\Up & \raisebox{-7pt}{\Up} & \cmd\LeftUp & \raisebox{-4pt}{\LeftUp} \\
\cmd\Left & \raisebox{3pt}{\Left} & \cmd\LeftDown & \raisebox{-4pt}{\LeftDown} & \cmd\Down & \raisebox{-7pt}{\Down} & \cmd\RightDown & \raisebox{-4pt}{\RightDown} \\
\end{tabular}
\end{center}
\subparagraph{\texttt{starsandarrowssetup}}
The command \margcs{\cmd\starsandarrowssetup\{\marg{options}\}}\cs{starsandarrowssetup} resets the options with global scope.
\paragraph{Sudoku}
\label{sec:psclpsudoku}
\subparagraph{\texttt{lpsudokucell}}
The command \cs{lpsudokucell}\margcs{\cmd\lpsudokucell\{\marg{column}\}\{\marg{row}\}\\\{\marg{number}\}} sets the \marg{number} of the grid cell \marg{column} \marg{row}.
\subparagraph{\texttt{lpsudokusetup}}
With the command \cs{lpsudokusetup}\margcs{\cmd\lpsudokusetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Sun and Moon}
\label{sec:pscsunandmoon}
\subparagraph{\texttt{Star}}
The command \cs{Star}\margcs{\cmd\Star} draws a star. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]!
\subparagraph{\texttt{Cloud}}
The command \cs{Cloud}\margcs{\cmd\Cloud} draws a dark cloud. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]!
\subparagraph{Howl at the Moon}
You can use the following commands to draw different iluminated moons:

\begin{center}
\begin{tabular}{lrlrlr}
\cmd\Moon & \raisebox{-4pt}{\Moon} & \cmd\MoonT & \raisebox{-4pt}{\MoonT} & \cmd\MoonB & \raisebox{-4pt}{\MoonB} \\
 & & & & & \\
\cmd\MoonR & \raisebox{-4pt}{\MoonR} & \cmd\MoonL & \raisebox{-4pt}{\MoonL} & \cmd\MoonTR & \raisebox{-4pt}{\MoonTR} \\
 & & & & & \\
\cmd\MoonTL & \raisebox{-4pt}{\MoonTL} & \cmd\MoonBR & \raisebox{-4pt}{\MoonBR} & \cmd\MoonBL & \raisebox{-4pt}{\MoonBL} \\
\end{tabular}
\end{center}
\subparagraph{\texttt{sunandmoonssetup}}
With the command \cs{sunandmoonssetup}\margcs{\cmd\sunandmoonssetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Tents and Trees}
\label{sec:psctentsandtrees}
\subparagraph{\texttt{tentH}}
The command \cs{tentH}\margcs{\cmd\tentH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many tents are in the respective column. It expects a comma-separated list as an argument.
\subparagraph{\texttt{tentV}}
The command \cs{tentV}\margcs{\cmd\tentV\{\marg{csv list}\}} typesets the numbers left to the grid.
\subparagraph{\texttt{Tree}}
The command \cs{Tree}\margcs{\cmd\Tree} draws a tree. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]! The design of the tree is based on \href{http://tex.stackexchange.com/users/3144/alain-matthes}{Alain Matthes}' answer to this \href{http://tex.stackexchange.com/questions/39149/how-can-we-draw-a-christmas-tree-with-decorations-using-tikz}{question} on \TeX.sx.
\subparagraph{\texttt{Tent}}
The command \cs{Tent}\margcs{\cmd\Tent} draws a tent. It can be used in commands like \cmd\setcell\ [see: \ref{sec:setcell}] or \cmd\setrow\ [see: \ref{sec:setrow}]!
\subparagraph{\texttt{tentsandtreessetup}}
With the command \cs{tentsandtreessetup}\margcs{\cmd\tentsandtreessetup\{\marg{options}\}} you can reset the options with global scope.
\paragraph{Tunnel}
\label{sec:psctunnel}
\subparagraph{\texttt{tunnelH}}
The command \cs{tunnelH}\margcs{\cmd\tunnelH\{\marg{csv list}\}} typesets the numbers above the grid indicating how many tube segments are in the respective column. It expects a comma-separated list as an argument.
\subparagraph{\texttt{tunnelV}}
The command \cs{tunnelV}\margcs{\cmd\tunnelV\{\marg{csv list}\}} typesets the numbers left to the grid.
\subparagraph{\texttt{portal}}
The command \cs{portal}\margcs{\cmd\portal\{\marg{column}\}\{\marg{row}\}} is used for the placement of tunnel portals in the grid.
\subparagraph{\texttt{tube}}
The command \cs{tube}\margcs{\cmd\tube\{\marg{Ti\textit{k}Z path}\}} draws the tunnel tube given by \marg{Ti\textit{k}Z path}. The reference for coordinates is the center of the cell. The design of the tube is based on \href{http://tex.stackexchange.com/users/16772/xoff}{Xoff}'s answer to this \href{http://tex.stackexchange.com/questions/109410/how-to-pimp-my-tube}{question} on \TeX.sx.

\begin{lstlisting}
\tube{(1.5,2.5)--(3.5,2.5)--(3.5,4.5)}
\end{lstlisting}

\subparagraph{\texttt{tunnelsetup}}
With the command \cs{tunnelsetup}\margcs{\cmd\tunnelsetup\{\marg{options}\}} you can reset the options with global scope.
\subsubsection{User commands}
\paragraph{In the grid}
\subparagraph{\texttt{setcell}}
\label{sec:setcell}
With\margcs{\cmd\setcell\{\{\marg{column}\}\{\marg{row}\}\\\{\marg{element}\}} the \cmd\setcell\ command, you can set \marg{element} into cell \marg{column}\marg{row} as central node. It is aware of the current values of the surrounding environment options \envoption{rows}, \envoption{columns}, \envoption{scale} and \envoption{fontsize}. Furthermore, a check if \marg{element} is within the grid is applied.

\subparagraph{\texttt{setcells}}
\label{sec:setcells}
With\margcs{\cmd\setcells\{\marg{csv list}\}\{\marg{element}\}} the \cmd\setcells\ command, you can set \marg{element} into several cells by using the \texttt{column}/\texttt{row} format in \marg{csv list}. It works for numbers, letters and most graphical objects, with the exception of commands like \cmd\KKR, which is not a graphic itself, but drawing something into the grid.

\subparagraph{\texttt{setbigcell}}
\label{sec:setbigcell}
The\margcs{\cmd\setbigcell[\oarg{fontsize}]\{\{\marg{column}\}\\\{\marg{row}\}\{\marg{element}\}} \cmd\setbigcell\ command sets \marg{element} into a big (\texttt{$2\times2$}) cell \marg{column}\marg{row} as central node. The optional argument \oarg{fontsize} is set to 'Huge' by default.

\subparagraph{\texttt{setrow}}
\label{sec:setrow}
With\margcs{\cmd\setrow\{\marg{row}\}\{\marg{csv list}\}} the \cmd\setrow\ command, you can set the contents of a \marg{row}. These may be numbers or letters. 

\subparagraph{\texttt{setcolorrow}}
\label{sec:setcolorrow}
With\margcs{\cmd\setcolorrow\{\marg{row}\}\{\marg{csv list}\}} the \cmd\setcolorrow\ command, you can set the contents of a \marg{row}. Furthermore, the background of the cell is filled with color \texttt{LP@c@romannumber} [see: \ref{sec:LPdefinecolor}]. With the number 0, you can black out the grid cell.

\subparagraph{\texttt{setcolumn}}
\label{sec:setcolumn}
With\margcs{\cmd\setcolumn\{\marg{column}\}\{\marg{csv list}\}} the \cmd\setcolumn\ command, you can set the contents of a \marg{column}. These may be numbers or letters. 

\subparagraph{\texttt{setcolorcolumn}}
\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}].

\subparagraph{\texttt{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.

\subparagraph{\texttt{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 \envoption{color}\footnote{Therefore, you must define an option \envoption{color} in the style file you want to use fill commands}. It is aware of the current values of the surrounding envionment options \envoption{rows}, \envoption{columns}, \envoption{scale} and \envoption{color}. Furthermore, a check if the cell is within the grid is applied.

\subparagraph{\texttt{fillrow}}
\label{sec:fillrow}
With\margcs{\cmd\fillrow\{\marg{row}\}\{\marg{csv list}\}} the \cmd\fillrow\ command, you can fill a \marg{row}. In \marg{csv list} '1' means 'fill' and '0' means 'don't fill'. Internally, \cmd\fillrow\ uses \cmd\fillcell\ [see: \ref{sec:fillcell}].

\subparagraph{\texttt{fillcolumn}}
\label{sec:fillcolumn}
With\margcs{\cmd\fillcolumn\{\marg{column}\}\{\marg{csv list}\}} the \cmd\fillcolumn\ command, you can fill a \marg{column}. In \marg{csv list} '1' means 'fill' and '0' means 'don't fill'. Internally, \cmd\fillcolumn\ uses \cmd\fillcell\ [see: \ref{sec:fillcell}].

\subparagraph{\texttt{filldiagonals}}
\label{sec:filldiagonals}
With\margcs{\cmd\filldiagonals[\oarg{color}]} the \cmd\filldiagonals\ command, you can fill the diagonals with the color specified with the optional argument \oarg{color} (default: yellow!20). Furthermore, it checks for a quadratic grid, otherwise an error message is issued.

\subparagraph{\texttt{framearea}}
\label{sec:framearea}
The command \cmd\framearea\margcs{\cmd\framearea\{\marg{color}\}\{\marg{Ti\textit{k}Z path}\}} frames the area given by \marg{Ti\textit{k}Z 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} [see: \ref{sec:puzzleforeground}] environment.

\subparagraph{\texttt{fillarea}}
\label{sec:fillarea}
The command \cmd\fillarea\margcs{\cmd\fillarea\{\marg{color}\}\{\marg{Ti\textit{k}Z path}\}} fills the area given by \marg{Ti\textit{k}Z 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.

\subparagraph{\texttt{colorarea}}
\label{sec:colorarea}
The command \cmd\colorarea\margcs{\cmd\colorarea\{\marg{color}\}\{\marg{Ti\textit{k}Z path}\}} fills the area given by \marg{Ti\textit{k}Z path} with color \marg{color} -- just like \cmd\framearea\ without frame.

\subparagraph{\texttt{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).

\subparagraph{\texttt{tikzpath}}
\label{sec:tikzpath}
With\margcs{\cmd\tikzpath\{\marg{column}\}\{\marg{row}\}\\\{\marg{csv list}\}} the \cmd\tikzpath\ command, you can easily construct a Ti\textit{k}Z 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.

\subparagraph{\texttt{xtikzpath}}
\label{sec:xtikzpath}
The\margcs{\cmd\xtikzpath\{\marg{column}\}\{\marg{row}\}\\\{\marg{csv list}\}} \cmd\xtikzpath\ command is an evolution of the \cmd\tikzpath\ command with slightly different input syntax. In the \marg{csv list} argument, it expects pairs in the form \texttt{direction/length}. Therefore, you can easily define paths from corner to corner.

\begin{lstlisting}
\framearea{green}{\xtikzpath{2}{2}{8/2,6/2,2/2,4/2}}
\end{lstlisting}

This command will frame an area defined by the grid cells \texttt{(2,2)} and \texttt{(3,3)} green.
\paragraph{Presentation}
\subparagraph{\texttt{titleformat}}
\label{sec:titleformat}
With\margcs{\cmd\titleformat\{\{\marg{format}\}} the \cmd\titleformat\ command, you can define the \marg{format} of the title. By default, the definition is as follows:

\begin{lstlisting}
\titleformat{\centering\Large\color{blue}}
\end{lstlisting}

\subparagraph{\texttt{puzzlecounter}}
\label{sec:puzzlecounter}
The command \cs{puzzlecounter}\margcs{\cmd\puzzlecounter} provides the general puzzle counter in textual form to use it in \cmd\definecounterstyle.

\subparagraph{\texttt{setpuzzlecounter}}
\label{sec:setpuzzlecounter}
With the command \cs{setpuzzlecounter}\margcs{\cmd\setpuzzlecounter\{\marg{number}\}}, you can reset the puzzle counter, for example before the solutions.

\subparagraph{\texttt{definecounterstyle}}
\label{sec: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 \envoption{cvoffset}.

\subparagraph{\texttt{setgridlinestyle}}
\label{sec:setgridlinestyle}
The command \cs{setgridlinestyle}\margcs{\cmd\setgridlinestyle\{\marg{style}\}} sets the style of lines used in the grid. By default, the style is set to \texttt{solid}, whereas \package{slitherlink.sty} uses \texttt{dashed}.

\subparagraph{\texttt{setnormallinewidth}}
\label{sec:setnormallinewidth}
With the command \cs{setnormallinewidth}\margcs{\cmd\setnormallinewidth\{\marg{dimension}\}}, you can set the width of the standard lines (default: \texttt{0.5pt})

\subparagraph{\texttt{setthicklinewidth}}
\label{sec:setthicklinewidth}
With the command \cs{setthicklinewidth}\margcs{\cmd\setthicklinewidth\{\marg{dimension}\}}, you can set the width of the 'thicker' lines (default: \texttt{1.5pt})


\subsubsection{Internal commands}
\paragraph{Initialization}
\subparagraph{\texttt{LP@define@key}}
\label{sec:LPdefinekey}
With\margcs{\cmd\LP@define@key\{\marg{prefix}\}\\\{\marg{package}\}\{\marg{option}\}\{\marg{default}\}} the \cmd\LP@define@key\ command, you can define the options of the environment \marg{package}. A \marg{prefix} is needed for creating different name spaces.
\begin{lstlisting}
\LP@define@key{LP@BS}{battleship}{rows}{5}
\end{lstlisting}
This code snippet defines the option \envoption{rows} for environment \env{battleship} with the default value 5. This value is stored in \cmd\LP@BS@rows.

\subparagraph{\texttt{LP@define@choicekey@fontsize}}
\label{sec:LPdefinechoicekeyfontsize}
With\margcs{\cmd\LP@define@choicekey@fontsize\\\{\marg{prefix}\}\{\marg{package}\}\{\marg{default}\}} this command, you can define the choice key option \envoption{fontsize} of the environment \marg{package}. Possible keys are: tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge, Huge

\paragraph{Drawing grids}
\subparagraph{\texttt{LP@drawgrid}}
\label{sec:LPdrawgrid}
With\margcs{\cmd\LP@drawgrid\{\marg{xmin}\}\{\marg{ymin}\}\\\{\marg{xmax}\}\{\marg{ymax}\}\{\marg{step}\}} the \cmd\LP@drawgrid\ command, you can draw the grid (\marg{xmin},\marg{ymin}) to (\marg{xmax},\marg{ymax}) with step \marg{step}. For drawing the standard puzzle grid the step must be 1cm.

\subparagraph{\texttt{LP@drawsudokugrid}}
\label{sec:LPdrawsudokugrid}
The\margcs{\cmd\LP@drawsudokugrid} command \cmd\LP@drawsudokugrid\ draws the stnadard Sudoku grid, but just the thicker lines. You will have to overlay the standard grid to get a full Sudoku grid. 

\subparagraph{\texttt{LP@drawbackground}}
\label{sec:LPdrawbackground}
The\margcs{\cmd\LP@drawbackground\{\marg{xmin}\}\\\{\marg{ymin}\}\{\marg{xmax}\}\{\marg{ymax}\}\{\marg{color}\}} command \cmd\LP@drawbackground\ draws the background color of the grid.

\paragraph{In the grid}
\subparagraph{\texttt{LP@setcellcontent}}
\label{sec:LPsetcellcontent}
The\margcs{\cmd\LP@LP@setcellcontent\{\marg{column}\}\\\{\marg{row}\}\{\marg{element}\}} command \cmd\LP@setcellcontent\ is the generic command to set an arbitrary \marg{element}.

\subparagraph{\texttt{LP@setcellcontentC}}
\label{sec:LPsetcellcontentC}
The\margcs{\cmd\LP@LP@setcellcontentC\{\marg{column}\}\\\{\marg{row}\}\{\marg{element}\}} command \cmd\LP@setcellcontentC\ is the generic command to set an arbitrary \marg{element} in a centered node in the bottom left corner.

\subparagraph{\texttt{LP@setrowcontents}}
\label{sec:LPsetrowcontents}
The\margcs{\cmd\LP@setrowcontents\{\marg{csv list}\}\\\{\marg{column}\}\{\marg{row}\}} command \cmd\LP@setrowcontents\ is the generic command to set row contents. It does not necessarily start with \marg{column} 1!

\subparagraph{\texttt{LP@setcolumncontents}}
\label{sec:LPsetcolumncontents}
The\margcs{\cmd\LP@setcolumncontents\{\marg{csv list}\}\\\{\marg{column}\}\{\marg{row}\}} command \cmd\LP@setcolumncontents\ is the generic command to set column contents. It does not necessarily start with \marg{row} 1!

\subparagraph{\texttt{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.

\subparagraph{\texttt{LP@definecolor}}
\label{sec:LPdefinecolor}
With\margcs{\cmd\LP@definecolor\\\{\marg{name}\}\{\marg{rgb color}\}} the \cmd\LP@definecolor\ command, you can define named rgb colors, especially for defining background colors of numbers used in \cmd\setcolorrow\ [see: \ref{sec:setcolorrow}] and \cmd\setcolorcolumn\ [see: \ref{sec:setcolorcolumn}].

The background color names follow the pattern: \texttt{LP@c@romannumber}

\begin{lstlisting}
\LP@definecolor{LP@c@iv}{.55,1,.88}
\end{lstlisting}

This command will define the new background color of number \colorbox[rgb]{.55,1,.88}{4}!

\paragraph{Around the grid}
\subparagraph{\texttt{LP@leftcolumn}}
\label{sec:LPleftcolumn}
With\margcs{\cmd\LP@leftcolumn\{\{\marg{csv list}\}} the \cmd\LP@leftcolumn\ command, you can set the contents of the column left to the grid. The \cmd\skylineL\ command for the \env{skyline} environment is for example defined as follows:

\begin{lstlisting}
\let\skylineL\LP@leftcolumn
\end{lstlisting}

\subparagraph{\texttt{LP@rightcolumn}}
\label{sec:LPrightcolumn}
With\margcs{\cmd\LP@rightcolumn\{\{\marg{csv list}\}} the \cmd\LP@rightcolumn\ command, you can set the contents of the column right to the grid.

\subparagraph{\texttt{LP@toprow}}
\label{sec:LPtoprow}
With\margcs{\cmd\LP@toprow\{\{\marg{csv list}\}} the \cmd\LP@toprow\ command, you can set the contents of the row above the grid.

\subparagraph{\texttt{LP@bottomrow}}
\label{sec:LPbottomrow}
With\margcs{\cmd\LP@bottomrow\{\{\marg{csv list}\}} the \cmd\LP@bottomrow\ command, you can set the contents of the row below the grid. 

\paragraph{Presentation}
\subparagraph{\texttt{LP@drawcounter}}
\label{sec:LPdrawcounter}
The command \cs{LP@drawcounter}\margcs{\cmd\LP@drawcounter\{\marg{name}\}} draws the puzzle counter with counter style \marg{name}.

\section{Examples}
You\IfFileExists{qrcode.png}{\marginnote{\href{https://bitbucket.org/kleberj/logicpuzzle/}{\includegraphics[height=2cm]{qrcode.png}}}[-37pt]}{} 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}.
{
\clearpage
\raggedright
\nocite{*}
\bibliography{logicpuzzle}
\addcontentsline{toc}{section}{\refname}
}
\clearpage
\Headline{Index}
\printindex
\end{document}
