%%
%% This is file `karnaughmap.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% karnaughmap.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2013 by Michael Vonbun <michael.vonbun@tum.de>
%% 
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.2 of this license
%% or (at your option) any later version.  The latest version of this
%% license is in:
%% 
%%    http://www.latex-project.org/lppl.txt
%% 
%% and version 1.2 or later is part of all distributions of LaTeX version
%% 1999/12/01 or later.
%% 
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{karnaughmap}
    [2015/04/20 v2.0 draw karnaugh maps using tikz]
\RequirePackage{tikz}
\RequirePackage{xkeyval}
\RequirePackage{ifthen}
\RequirePackage{xstring}
\newcounter{karnaughmapIdxCounter}
\newcounter{karnaughmapStrCounter}
\setcounter{karnaughmapIdxCounter}{0}
\setcounter{karnaughmapStrCounter}{0}
\define@boolkeys{karnaughmap}{omitzeros, omitones, omitdontcares}[true]
\define@boolkeys{karnaughmap}{omitbinaries, omitvariables, omitidx, binaryidx, omitnegated}[true]
\define@boolkey{karnaughmap}{outline}[true]{\setkeys{karnaughmap}{fill=false}}
\define@boolkeys{karnaughmap}{fill}[true]
\define@cmdkey{karnaughmap}{opacity}[0.5]{}
\define@cmdkey{karnaughmap}{defaultmap}[16]{}
\define@cmdkey{karnaughmap}{function}[z]{}
\define@cmdkey{karnaughmap}{variables}[abcd]{}
\define@cmdkey{karnaughmap}{dontcare}[*]{}
\define@key{karnaughmap}{color}[black]{%
  \colorlet{karnaughmapColor}{#1}%
  \colorlet{karnaughmapMapColor}{#1}}
\define@key{karnaughmap}{draw}[karnaughmapColor]{\colorlet{karnaughmapMapColor}{#1}}
\define@key{karnaughmap}{labelcolor}[karnaughmapColor]{%
  \colorlet{karnaughmapColor}{#1}}
\define@cmdkeys{karnaughmap}{xshift,yshift}[0]
\newcommand{\setkarnaughmap}[1][]{%
\ifthenelse{\equal{#1}{}}{%
\setkeys{karnaughmap}{%
omitzeros, omitnegated}
\setkeys{karnaughmap}{defaultmap, function, variables, dontcare, color, draw, labelcolor, xshift, yshift}
}{
\setkeys{karnaughmap}{#1}
}}
\setkarnaughmap
\newcommand{\karnaughmapPrintIndex}[1][4]{%
\scriptsize%
\ifKV@karnaughmap@binaryidx
  \ifthenelse{\equal{#1}{2}}{%
    \ifcase\value{karnaughmapIdxCounter}%
      00\or 01\or 10\or 11
    \fi
  }{}%
  \ifthenelse{\equal{#1}{3}}{%
    \ifcase\value{karnaughmapIdxCounter}%
      000\or 001\or 010\or 011\or 100\or 101\or 110\or 111
    \fi
  }{}%
  \ifthenelse{\equal{#1}{4}}{%
    \ifcase\value{karnaughmapIdxCounter}%
      0000\or 0001\or 0010\or 0011\or 0100\or 0101\or 0110\or 0111\or
      1000\or 1001\or 1010\or 1011\or 1100\or 1101\or 1110\or 1111
  \fi
  }{}%
\else
$\thekarnaughmapIdxCounter$%
\fi
\stepcounter{karnaughmapIdxCounter}%
}
\newcommand{\karnaughmapPrintValue}[2][]{%
  \stepcounter{karnaughmapStrCounter}%
  \StrChar{#2}{\thekarnaughmapStrCounter}}
\newcommand{\karnaughmapPrintCellContents}[6][]{%
\ifthenelse{\equal{#4}{4}}{%
  \def\karnaughmapPCCColumnSpecifier{++( 0,-1) node[#1] {#6}}%
  \path  (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+1) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{8}}{%
  \def\karnaughmapPCCColumnSpecifier{++( 0,-1) node[#1] {#6}}%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+1) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+1) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+1) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{16}}{%
  \def\karnaughmapPCCColumnSpecifier{%
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
  }%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{32}}{%
  \def\karnaughmapPCCColumnSpecifier{%
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
  }%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+5,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+2) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{64}}{%
  \def\karnaughmapPCCColumnSpecifier{%
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,-5) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,+2) node[#1] {#6}
    ++( 0,-1) node[#1] {#6}
  }%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+5,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{128}}{%
  \def\karnaughmapPCCColumnSpecifier{%
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,-5) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,+2) node[#1] {#6}
    ++( 0,-1) node[#1] {#6}
  }%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+5,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+10,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-5,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+5) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
\ifthenelse{\equal{#4}{256}}{%
  \def\karnaughmapPCCColumnSpecifier{%
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,-5) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,+2) node[#1] {#6}
    ++( 0,-1) node[#1] {#6}

    ++( 0,-10) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
    ++( 0,+2) node[#1] {#6}
    ++( 0,-1) node[#1] {#6}
    ++( 0,+5) node[#1] {#6}
    ++( 0,-1) node[#1] {#6}
    ++( 0,-2) node[#1] {#6}
    ++( 0,+1) node[#1] {#6}
  }%
  \path (0, #5)
    ++(#2,#3) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+5,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+10,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-2,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-5,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(+2,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
    ++(-1,+10) node[#1] {#6}
      \karnaughmapPCCColumnSpecifier
  ;
}{}
}

\newcommand{\karnaughmapHighlightField}[3][]{%
\ifKV@karnaughmap@fill
  \path[fill=#3,opacity=\cmdKV@karnaughmap@opacity,#1] (#2) rectangle ++(1,1);%
\fi
\ifKV@karnaughmap@outline
  \draw[#3,#1] (#2) ++ (0.1,0.1) rectangle ++(0.8,0.8);%
\fi
}
\newcommand{\karnaughmapShadeMapfieldTWO}[3][]{%
\begin{scope}[scale=1]
  \ifthenelse{\equal{#2}{0}}{\karnaughmapHighlightField[#1]{0,1}{#3}}{}%
  \ifthenelse{\equal{#2}{1}}{\karnaughmapHighlightField[#1]{0,0}{#3}}{}%
  \ifthenelse{\equal{#2}{2}}{\karnaughmapHighlightField[#1]{1,1}{#3}}{}%
  \ifthenelse{\equal{#2}{3}}{\karnaughmapHighlightField[#1]{1,0}{#3}}{}%
\end{scope}
}
\newcommand{\karnaughmapShadeMapfieldTHREE}[3][]{%
\begin{scope}[scale=1]
  \ifthenelse{\equal{#2}{0}}{\karnaughmapHighlightField[#1]{0,1}{#3}}{}%
  \ifthenelse{\equal{#2}{1}}{\karnaughmapHighlightField[#1]{0,0}{#3}}{}%
  \ifthenelse{\equal{#2}{2}}{\karnaughmapHighlightField[#1]{1,1}{#3}}{}%
  \ifthenelse{\equal{#2}{3}}{\karnaughmapHighlightField[#1]{1,0}{#3}}{}%
  \ifthenelse{\equal{#2}{4}}{\karnaughmapHighlightField[#1]{3,1}{#3}}{}%
  \ifthenelse{\equal{#2}{5}}{\karnaughmapHighlightField[#1]{3,0}{#3}}{}%
  \ifthenelse{\equal{#2}{6}}{\karnaughmapHighlightField[#1]{2,1}{#3}}{}%
  \ifthenelse{\equal{#2}{7}}{\karnaughmapHighlightField[#1]{2,0}{#3}}{}%
\end{scope}
}
\newcommand{\karnaughmapShadeMapfieldFOUR}[3][]{%
\begin{scope}[scale=1]%
\ifthenelse{\equal{#2}{0}}{\karnaughmapHighlightField[#1]{0,3}{#3}}{}%
\ifthenelse{\equal{#2}{1}}{\karnaughmapHighlightField[#1]{0,2}{#3}}{}%
\ifthenelse{\equal{#2}{2}}{\karnaughmapHighlightField[#1]{0,0}{#3}}{}%
\ifthenelse{\equal{#2}{3}}{\karnaughmapHighlightField[#1]{0,1}{#3}}{}%
\ifthenelse{\equal{#2}{4}}{\karnaughmapHighlightField[#1]{1,3}{#3}}{}%
\ifthenelse{\equal{#2}{5}}{\karnaughmapHighlightField[#1]{1,2}{#3}}{}%
\ifthenelse{\equal{#2}{6}}{\karnaughmapHighlightField[#1]{1,0}{#3}}{}%
\ifthenelse{\equal{#2}{7}}{\karnaughmapHighlightField[#1]{1,1}{#3}}{}%
\ifthenelse{\equal{#2}{8}}{\karnaughmapHighlightField[#1]{3,3}{#3}}{}%
\ifthenelse{\equal{#2}{9}}{\karnaughmapHighlightField[#1]{3,2}{#3}}{}%
\ifthenelse{\equal{#2}{a}\OR\equal{#2}{A}}{\karnaughmapHighlightField[#1]{3,0}{#3}}{}%
\ifthenelse{\equal{#2}{b}\OR\equal{#2}{B}}{\karnaughmapHighlightField[#1]{3,1}{#3}}{}%
\ifthenelse{\equal{#2}{c}\OR\equal{#2}{C}}{\karnaughmapHighlightField[#1]{2,3}{#3}}{}%
\ifthenelse{\equal{#2}{d}\OR\equal{#2}{D}}{\karnaughmapHighlightField[#1]{2,2}{#3}}{}%
\ifthenelse{\equal{#2}{e}\OR\equal{#2}{E}}{\karnaughmapHighlightField[#1]{2,0}{#3}}{}%
\ifthenelse{\equal{#2}{f}\OR\equal{#2}{F}}{\karnaughmapHighlightField[#1]{2,1}{#3}}{}%
\end{scope}
}
\newcommand{\karnaughmap}[2][]{%
\ifthenelse{\equal{#1}{}}{}{\setkeys{karnaughmap}{#1}}
\def\karnaughmapCellEntries{#2}%
\ifthenelse{\equal{#2}{}}{%
  \def\karnaughmapSize{\cmdKV@karnaughmap@defaultmap}
}{%
\IfSubStr{\karnaughmapCellEntries}{ }{%
\StrDel[0]{\karnaughmapCellEntries}{ }[\karnaughmapCellEntries]
}{}
  \StrLen{\karnaughmapCellEntries}[\karnaughmapSize]%
  \ifthenelse{\karnaughmapSize < 4}{%
    \def\karnaughmapSize{#2}\def\karnaughmapCellEntries{}}{}%
}
\ifKV@karnaughmap@omitzeros
  \StrSubstitute[0]{\karnaughmapCellEntries}{0}{ }[\karnaughmapCellEntries]
\fi
\ifKV@karnaughmap@omitones
  \StrSubstitute[0]{\karnaughmapCellEntries}{1}{ }[\karnaughmapCellEntries]
\fi
\ifKV@karnaughmap@omitdontcares
  \StrSubstitute[0]{\karnaughmapCellEntries}{\cmdKV@karnaughmap@dontcare}{ }[\karnaughmapCellEntries]
\fi
\setcounter{karnaughmapIdxCounter}{0}
\setcounter{karnaughmapStrCounter}{0}
\ifthenelse{\karnaughmapSize = 4}{%
  \StrChar{\cmdKV@karnaughmap@variables}{1}[\karnaughmapVarLabelA]
  \def\karnaughmapVarLabelB{}
  \StrChar{\cmdKV@karnaughmap@variables}{2}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{2}
  \def\karnaughmapNumCol{2}
  \def\karnaughmapNumVar{2}
}{}
\ifthenelse{\karnaughmapSize = 8}{%
  \StrChar{\cmdKV@karnaughmap@variables}{1}[\karnaughmapVarLabelA]
  \StrChar{\cmdKV@karnaughmap@variables}{2}[\karnaughmapVarLabelB]
  \StrChar{\cmdKV@karnaughmap@variables}{3}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{2}
  \def\karnaughmapNumCol{4}
  \def\karnaughmapNumVar{3}
}{}
\ifthenelse{\karnaughmapSize = 16}{%
  \StrChar{\cmdKV@karnaughmap@variables}{1}[\karnaughmapVarLabelA]
  \StrChar{\cmdKV@karnaughmap@variables}{2}[\karnaughmapVarLabelB]
  \StrChar{\cmdKV@karnaughmap@variables}{3}[\karnaughmapVarLabelC]
  \StrChar{\cmdKV@karnaughmap@variables}{4}[\karnaughmapVarLabelD]
  \def\karnaughmapNumRow{4}
  \def\karnaughmapNumCol{4}
  \def\karnaughmapNumVar{4}
}{}
\ifthenelse{\karnaughmapSize = 32}{%
  \setkeys{karnaughmap}{omitidx=true, omitvariables=true}
  \StrMid{\cmdKV@karnaughmap@variables}{1}{3}[\karnaughmapVarLabelA]
  \def\karnaughmapVarLabelB{}
  \StrMid{\cmdKV@karnaughmap@variables}{4}{5}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{4}
  \def\karnaughmapNumCol{8}
  \def\karnaughmapNumVar{5}
}{}
\ifthenelse{\karnaughmapSize = 64}{%
  \setkeys{karnaughmap}{omitidx=true, omitvariables=true}
  \StrMid{\cmdKV@karnaughmap@variables}{1}{3}[\karnaughmapVarLabelA]
  \def\karnaughmapVarLabelB{}
  \StrMid{\cmdKV@karnaughmap@variables}{4}{6}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{8}
  \def\karnaughmapNumCol{8}
  \def\karnaughmapNumVar{6}
}{}
\ifthenelse{\karnaughmapSize = 128}{%
  \setkeys{karnaughmap}{omitidx=true, omitvariables=true}
  \StrMid{\cmdKV@karnaughmap@variables}{1}{4}[\karnaughmapVarLabelA]
  \def\karnaughmapVarLabelB{}
  \StrMid{\cmdKV@karnaughmap@variables}{5}{7}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{8}
  \def\karnaughmapNumCol{16}
  \def\karnaughmapNumVar{7}
}{}
\ifthenelse{\karnaughmapSize = 256}{%
  \setkeys{karnaughmap}{omitidx=true, omitvariables=true}
  \StrMid{\cmdKV@karnaughmap@variables}{1}{4}[\karnaughmapVarLabelA]
  \def\karnaughmapVarLabelB{}
  \StrMid{\cmdKV@karnaughmap@variables}{5}{8}[\karnaughmapVarLabelC]
  \def\karnaughmapVarLabelD{}
  \def\karnaughmapNumRow{16}
  \def\karnaughmapNumCol{16}
  \def\karnaughmapNumVar{8}
}{}
  \begin{scope}[xshift=\cmdKV@karnaughmap@xshift,
                yshift=\cmdKV@karnaughmap@yshift,
                color=karnaughmapColor,
                draw=karnaughmapMapColor ]
  \draw (0,0) rectangle (\karnaughmapNumCol, \karnaughmapNumRow);
  \foreach \x in {1,2,...,\karnaughmapNumCol} {%
    \ifthenelse{\equal{\x}{1}}{}{%
      \draw (\x-1,0) -- ++(0,\karnaughmapNumRow);%
    }%
  }%
  \foreach \x in {1,2,...,\karnaughmapNumRow} {%
    \ifthenelse{\equal{\x}{1}}{}{%
      \draw (0,\x-1) -- ++(\karnaughmapNumCol,0);%
    }%
  }%
\draw (0,\karnaughmapNumRow) -- ++(-0.4,0.4) coordinate(identifier)
              -- ++(-0.4,0.4)
    node[yshift=7.5,xshift=-3.5,right] {%
      \ifthenelse{\equal{\cmdKV@karnaughmap@function}{}}{}{$\cmdKV@karnaughmap@function\colon$}};
  \path (identifier) node[above right, xshift=-2.5] {$\karnaughmapVarLabelA\karnaughmapVarLabelB$};
  \path (identifier) node[below left, yshift=0.5] {$\karnaughmapVarLabelC\karnaughmapVarLabelD$};
\ifKV@karnaughmap@omitbinaries
\else
  \ifthenelse{\equal{\karnaughmapNumCol}{2}}{%
      \foreach \pos/\lab in {0.5/0, 1.5/1} {%
        \path (\pos, \karnaughmapNumRow) node[above] {$\lab$};%
      }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumCol}{4}}{%
    \foreach \pos/\lab in {0.5/00, 1.5/01, 2.5/11, 3.5/10} {%
      \path (\pos, \karnaughmapNumRow) node[above] {$\lab$};%
    }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumCol}{8}}{%
    \foreach \pos/\lab in {0.5/000, 1.5/001, 2.5/011, 3.5/010, 4.5/110, 5.5/111, 6.5/101, 7.5/100} {%
      \path (\pos, \karnaughmapNumRow) node[above] {$\lab$};%
    }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumCol}{16}}{%
    \foreach \pos/\lab in {0.5/0000, 1.5/0001, 2.5/0011, 3.5/0010, 4.5/0110, 5.5/0111, 6.5/0101, 7.5/0100,
                           8.5/1100, 9.5/1101,10.5/1111,11.5/1110,12.5/1010,13.5/1011,14.5/1001,15.5/1000} {%
      \path (\pos, \karnaughmapNumRow) node[above] {$\lab$};%
    }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumRow}{2}}{%
      \foreach \pos/\lab in {0.5/0, 1.5/1} {%
        \path (0, \karnaughmapNumRow-\pos) node[left] {$\lab$};%
      }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumRow}{4}}{%
    \foreach \pos/\lab in {0.5/00, 1.5/01, 2.5/11, 3.5/10} {%
      \path (0, \karnaughmapNumRow-\pos) node[left] {$\lab$};%
    }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumRow}{8}}{%
    \foreach \pos/\lab in {0.5/000, 1.5/001, 2.5/011, 3.5/010, 4.5/110, 5.5/111, 6.5/101, 7.5/100} {%
      \path (-0.125, \karnaughmapNumRow-\pos) node[left] {$\lab$};%
    }%
  }{}%
  \ifthenelse{\equal{\karnaughmapNumRow}{16}}{%
    \foreach \pos/\lab in {0.5/0000, 1.5/0001, 2.5/0011, 3.5/0010, 4.5/0110, 5.5/0111, 6.5/0101, 7.5/0100,
                           8.5/1100, 9.5/1101,10.5/1111,11.5/1110,12.5/1010,13.5/1011,14.5/1001,15.5/1000} {%
      \path (-0.1875, \karnaughmapNumRow-\pos) node[left] {$\lab$};%
    }%
  }{}%
\fi
\def\karnaughmapVariableBaseBias{0.2}
\ifKV@karnaughmap@omitbinaries
  \def\karnaughmapVariableTopBias{0}
  \def\karnaughmapVariableLeftBias{0}
\else
  \def\karnaughmapVariableTopBias{0.3}
  \ifthenelse{\equal{\karnaughmapVarLabelD}{}}{%
    \def\karnaughmapVariableLeftBias{0.2}
  }{%
    \def\karnaughmapVariableLeftBias{0.4}
  }
\fi
\ifKV@karnaughmap@omitvariables
\else
  \ifthenelse{\equal{\karnaughmapVarLabelA}{}}{%
  }{%
    \ifthenelse{\equal{\karnaughmapVarLabelB}{}}{%
      \draw (1.1, \karnaughmapNumRow + \karnaughmapVariableBaseBias + \karnaughmapVariableTopBias)
        -- node[above] {$\karnaughmapVarLabelA$} ++(0.8, 0);
      \ifKV@karnaughmap@omitnegated
      \else
        \draw (0.1, \karnaughmapNumRow + \karnaughmapVariableBaseBias + \karnaughmapVariableTopBias)
          -- node[above] {$\overline{\karnaughmapVarLabelA}$} ++(0.8, 0);
      \fi
    }{%
      \draw (2.1, \karnaughmapNumRow + \karnaughmapVariableBaseBias + \karnaughmapVariableTopBias)
        -- node[above] {$\karnaughmapVarLabelA$} ++(1.8, 0);
      \draw (1.1, -\karnaughmapVariableBaseBias)
        -- node[below] {$\karnaughmapVarLabelB$} ++(1.8, 0);
      \ifKV@karnaughmap@omitnegated
      \else
        \draw (0.1, \karnaughmapNumRow + \karnaughmapVariableBaseBias + \karnaughmapVariableTopBias)
          -- node[above] {$\overline{\karnaughmapVarLabelA}$} ++(1.8, 0);
        \draw (0.1, -\karnaughmapVariableBaseBias)
          -- node[below] {$\overline{\karnaughmapVarLabelB}$} ++(0.8, 0);
        \draw (3.1, -\karnaughmapVariableBaseBias)
          -- node[below] {$\overline{\karnaughmapVarLabelB}$} ++(0.8, 0);
      \fi
    }
  }
  \ifthenelse{\equal{\karnaughmapVarLabelC}{}}{%
  }{%
    \ifthenelse{\equal{\karnaughmapVarLabelD}{}}{%
      \draw (-\karnaughmapVariableBaseBias -\karnaughmapVariableLeftBias, 0.1)
        -- node[left] {$\karnaughmapVarLabelC$} ++(0, 0.8);
      \ifKV@karnaughmap@omitnegated
      \else
        \draw (-\karnaughmapVariableBaseBias -\karnaughmapVariableLeftBias, 1.1)
          -- node[left] {$\overline{\karnaughmapVarLabelC}$} ++(0, 0.8);
      \fi
    }{%
      \draw (-\karnaughmapVariableBaseBias -\karnaughmapVariableLeftBias, 0.1)
        -- node[left] {$\karnaughmapVarLabelC$} ++(0, 1.8);
      \draw (\karnaughmapNumCol + \karnaughmapVariableBaseBias, 1.1)
        -- node[right] {$\karnaughmapVarLabelD$} ++(0, 1.8);
      \ifKV@karnaughmap@omitnegated
      \else
        \draw (-\karnaughmapVariableBaseBias -\karnaughmapVariableLeftBias, 2.1)
          -- node[left] {$\overline{\karnaughmapVarLabelC}$} ++(0, 1.8);
        \draw (\karnaughmapNumCol + \karnaughmapVariableBaseBias, 0.1)
          -- node[right] {$\overline{\karnaughmapVarLabelD}$} ++(0, 0.8);
        \draw (\karnaughmapNumCol + \karnaughmapVariableBaseBias, 3.1)
          -- node[right] {$\overline{\karnaughmapVarLabelD}$} ++(0, 0.8);
      \fi
    }
  }
\fi
\ifKV@karnaughmap@omitidx
\else
  \karnaughmapPrintCellContents[anchor=west]{0.0}{-0.2}{\karnaughmapSize}{\karnaughmapNumRow}{\karnaughmapPrintIndex[\karnaughmapNumVar]}
\fi
\karnaughmapPrintCellContents{0.5}{-0.5}{\karnaughmapSize}{\karnaughmapNumRow}{\karnaughmapPrintValue{\karnaughmapCellEntries}}
  \end{scope}
}
\newcommand{\karnaughmapcolorfield}[4][]{%
\setkeys{karnaughmap}{fill,opacity}%
\ifthenelse{\equal{#1}{}}{}{\setkeys*{karnaughmap}{#1}}%
\ifthenelse{\equal{#3}{}}{}{%
\StrSplit{#3}{1}{\karnaughmapColorfieldCur}{\karnaughmapColorfieldRem}
\ifthenelse{\equal{#2}{2}}{%
\karnaughmapShadeMapfieldTWO[\XKV@rm]{\karnaughmapColorfieldCur}{#4}
}{}
\ifthenelse{\equal{#2}{3}}{%
\karnaughmapShadeMapfieldTHREE[\XKV@rm]{\karnaughmapColorfieldCur}{#4}
}{}
\ifthenelse{\equal{#2}{4}}{%
\karnaughmapShadeMapfieldFOUR[\XKV@rm]{\karnaughmapColorfieldCur}{#4}
}{}
\karnaughmapcolorfield[#1]{#2}{\karnaughmapColorfieldRem}{#4}
}
}
\endinput
%%
%% End of file `karnaughmap.sty'.
