From 2385996c176276388708d1a5ea663e8a4521a90a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 5 Dec 2013 00:07:50 +0000 Subject: askmaps (4dec13) git-svn-id: svn://tug.org/texlive/trunk@32320 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/askmaps/askmaps.sty | 376 ++++++++++++++++++++++++ 1 file changed, 376 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/askmaps/askmaps.sty (limited to 'Master/texmf-dist/tex/latex/askmaps') diff --git a/Master/texmf-dist/tex/latex/askmaps/askmaps.sty b/Master/texmf-dist/tex/latex/askmaps/askmaps.sty new file mode 100644 index 00000000000..9ff0122fbb0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/askmaps/askmaps.sty @@ -0,0 +1,376 @@ +%% +%% askmaps.sty +%% +%% American Style K-maps (2, 3, 4 and 5 variables) +%% +%% (c)2013 Jesse op den Brouw, +%% +%% LPPL LaTeX Public Project License +%% +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +%% Version and date +\gdef\askmapsversion{0.1} +\gdef\askmapsdate{2013/12/04} +% +\ProvidesPackage{askmaps}[\askmapsdate\space Version \askmapsversion\space + LaTeX package for drawing American Style Karnaugh maps] + +%% This package provides 2, 3, 4 and 5 variable Karnaugh maps that can +%% be found in numerous american text books on digital design. Note +%% that it is possible to draw many different K-maps that are all +%% legitimate as long as a square (minterm) differs only in one +%% literal with its adjacent squares. +%% This package draws K-maps where the most significant input variables +%% are placed on top of the columns and the least significant variables +%% are placed left of the rows. Such K-maps can be found in the text books: +%% Design of Logic Systems, 2nd, Lewin & Protheroe +%% Digital System Design with VHDL, 2nd, Zwolinski + +%% Packages needed +\RequirePackage{pict2e} + +%% The macros \askmapargumentstring, \askmapgetchar and \askmapgetonechar are +%% needed to process the variable-length parameters in \askmapxxx: +%% These routine politely reused from karnaugh package +\def\askmapargumentstring#1{\gdef\askmapdummystring{#1{}\noexpand\end}} +\def\askmapgetchar{\expandafter\askmapgetonechar\askmapdummystring} +\def\askmapgetonechar#1#2\end{{#1}\gdef\askmapdummystring{#2\noexpand\end}}% + +%% Dimension for length of one square +\newdimen\askmapunitlength +\askmapunitlength=10mm + +%% Some use options +\newif\ifaskmap@opti% want indexes +\newif\ifaskmap@optf% want output function printed +\newif\ifaskmap@optb% want input variable bit combinations at columns and rows + +%% We want bit combinations along with the columns and rows +%\askmap@optbtrue + +%% Process user options +\def\askmap@processoptions#1{% + \askmap@optifalse\askmap@optftrue\askmap@optbtrue% + \@tfor\askmap@opt:=#1\do{% + \if i\askmap@opt\askmap@optitrue\fi% + \if I\askmap@opt\askmap@optifalse\fi% + \if f\askmap@opt\askmap@optftrue\fi% + \if F\askmap@opt\askmap@optffalse\fi% + \if b\askmap@opt\askmap@optbtrue\fi% + \if B\askmap@opt\askmap@optbfalse\fi% + \if c\askmap@opt\askmap@optitrue\askmap@optftrue\askmap@optbtrue\fi% + \if C\askmap@opt\askmap@optifalse\askmap@optffalse\askmap@optbfalse\fi% + }% +}% + +%% Replacement for macros from karnaugh package +%% #1 = number of input variables +%% #2 = function output variable +%% #3 = function input variables +%% #4 = list of function values +%% #5 = user picture commands +\newcommand{\askmap}[5]{% +\if 2#1\relax + \askmapii{#2}{#3}{f}{#4}{#5}% +\else + \if 3#1\relax + \askmapiii{#2}{#3}{f}{#4}{#5}% + \else + \if 4#1\relax + \askmapiv{#2}{#3}{f}{#4}{#5}% + \else + \if 5#1\relax + \askmapv{#2}{#3}{f}{#4}{#5}% + \else + \PackageWarning{askmaps}{Sorry, no K-maps with #1 variables supported by package askmaps!} + \fi% + \fi% + \fi% +\fi% +}% + +%% #1= output function variable +%% #2= 2 input variables +%% #3= options list +%% #4= 4 function values +%% #5= user defined picture commands +\newcommand{\askmapii}[5]{% +{\unitlength\askmapunitlength% +\askmap@processoptions{#3}% +\begin{picture}(4.4,3)(-1.2,0)% +\linethickness{1pt}% +\put(0,0){\framebox(2,2)}% +\put(1,0){\line(0,1){2}}% +\put(0,1){\line(1,0){2}}% +\ifaskmap@optf% +\put(2.35,2.25){#1}% +\put(1.9,1.9){\line(1,1){0.4}}% +\fi% +\askmapargumentstring{#2}% +\put(-0.4,2.55){\askmapgetchar}% +\put(-0.9,2.1){\makebox(0.5,0){\askmapgetchar}}% +\ifaskmap@opti% +\put(0.01,1.05){\scriptsize{\textsl{0}}}% a little bit to the edge because +\put(0.01,0.03){\scriptsize{\textsl{1}}}% the edge line is thick +\put(1.03,1.05){\scriptsize{\textsl{2}}}% +\put(1.03,0.03){\scriptsize{\textsl{3}}}% +\fi% +\ifaskmap@optb% +\put(-0.6,1.5){\makebox(0.5,0)[r]{\footnotesize{0}}}% +\put(-0.6,0.5){\makebox(0.5,0)[r]{\footnotesize{1}}}% +\put(0.5,2.2){\makebox(0,0){\footnotesize{0}}}% +\put(1.5,2.2){\makebox(0,0){\footnotesize{1}}}% +\fi% +\askmapargumentstring{#4}% +\put(0.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,0.5){\makebox(0,0){\askmapgetchar}}% +\thicklines% +\put(0,2){\line(-1,1){0.70}}% +\thinlines% +#5% +\end{picture}% +}% +}% end \askmapii + +%% #1= output function variable +%% #2= 3 input variables +%% #3= options list +%% #4= 8 function values +%% #5= user defined picture commands +\newcommand{\askmapiii}[5]{% +{\unitlength\askmapunitlength% +\askmap@processoptions{#3}% +\begin{picture}(6.4,3)(-1.2,0)% +\linethickness{1pt}% +\put(0,0){\framebox(4,2)}% +\multiput(1,0)(1,0){3}{\line(0,1){2}}% +\put(0,1){\line(1,0){4}}% +\ifaskmap@optf% +\put(4.35,2.25){#1}% +\put(3.9,1.9){\line(1,1){0.4}}% +\fi% +\askmapargumentstring{#2}% +\put(-0.4,2.55){\askmapgetchar\askmapgetchar}% +\put(-0.9,2.1){\makebox(0.5,0){\askmapgetchar}}% +\ifaskmap@opti% +\put(0.01,1.05){\scriptsize{\textsl{0}}}% +\put(0.01,0.03){\scriptsize{\textsl{1}}}% +\put(1.03,1.05){\scriptsize{\textsl{2}}}% +\put(1.03,0.03){\scriptsize{\textsl{3}}}% +\put(3.03,1.05){\scriptsize{\textsl{4}}}% +\put(3.03,0.03){\scriptsize{\textsl{5}}}% +\put(2.03,1.05){\scriptsize{\textsl{6}}}% +\put(2.03,0.03){\scriptsize{\textsl{7}}}% +\fi% +\askmapargumentstring{#4}% +\put(0.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,0.5){\makebox(0,0){\askmapgetchar}}% +\ifaskmap@optb% +\put(-0.6,1.5){\makebox(0.5,0)[r]{\footnotesize{0}}}% +\put(-0.6,0.5){\makebox(0.5,0)[r]{\footnotesize{1}}}% +\put(0.5,2.2){\makebox(0,0){\footnotesize{00}}}% +\put(1.5,2.2){\makebox(0,0){\footnotesize{01}}}% +\put(2.5,2.2){\makebox(0,0){\footnotesize{11}}}% +\put(3.5,2.2){\makebox(0,0){\footnotesize{10}}}% +\fi% +\thicklines% +\put(0,2){\line(-1,1){0.70}}% +\thinlines% +#5% +\end{picture}% +}% +}% end \askmapiii + +%% #1= output function variable +%% #2= 4 input variables +%% #3= options list +%% #4= 16 function values +%% #5= user defined picture commands +\newcommand{\askmapiv}[5]{% +{\unitlength\askmapunitlength% +\askmap@processoptions{#3}% +\begin{picture}(6.4,5)(-1.2,0)% +\linethickness{1pt}% +\put(0,0){\framebox(4,4)}% +\multiput(1,0)(1,0){3}{\line(0,1){4}}% +\multiput(0,1)(0,1){3}{\line(1,0){4}}% +\ifaskmap@optf% +\put(4.35,4.25){#1}% +\put(3.9,3.9){\line(1,1){0.4}}% +\fi% +\askmapargumentstring{#2}% +\put(-0.4,4.55){\askmapgetchar\askmapgetchar}% +\put(-1.0,4.1){\makebox(0.5,0){\askmapgetchar\askmapgetchar}}% +\ifaskmap@opti% +\put(0.01,3.05){\scriptsize{\textsl{0}}}% +\put(0.01,2.05){\scriptsize{\textsl{1}}}% +\put(0.01,0.03){\scriptsize{\textsl{2}}}% +\put(0.01,1.05){\scriptsize{\textsl{3}}}% +\put(1.03,3.05){\scriptsize{\textsl{4}}}% +\put(1.03,2.05){\scriptsize{\textsl{5}}}% +\put(1.03,0.03){\scriptsize{\textsl{6}}}% +\put(1.03,1.05){\scriptsize{\textsl{7}}}% +\put(3.03,3.05){\scriptsize{\textsl{8}}}% +\put(3.03,2.05){\scriptsize{\textsl{9}}}% +\put(3.03,0.03){\scriptsize{\textsl{10}}}% +\put(3.03,1.05){\scriptsize{\textsl{11}}}% +\put(2.03,3.05){\scriptsize{\textsl{12}}}% +\put(2.03,2.05){\scriptsize{\textsl{13}}}% +\put(2.03,0.03){\scriptsize{\textsl{14}}}% +\put(2.03,1.05){\scriptsize{\textsl{15}}}% +\fi% +\askmapargumentstring{#4}% +\put(0.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,1.5){\makebox(0,0){\askmapgetchar}}% +\ifaskmap@optb% +\put(-0.6,3.5){\makebox(0.5,0)[r]{\footnotesize{00}}}% +\put(-0.6,2.5){\makebox(0.5,0)[r]{\footnotesize{01}}}% +\put(-0.6,1.5){\makebox(0.5,0)[r]{\footnotesize{11}}}% +\put(-0.6,0.5){\makebox(0.5,0)[r]{\footnotesize{10}}}% +\put(0.5,4.2){\makebox(0,0){\footnotesize{00}}}% +\put(1.5,4.2){\makebox(0,0){\footnotesize{01}}}% +\put(2.5,4.2){\makebox(0,0){\footnotesize{11}}}% +\put(3.5,4.2){\makebox(0,0){\footnotesize{10}}}% +\fi +\thicklines% +\put(0,4){\line(-1,1){0.70}}% +\thinlines% +#5% +\end{picture}% +}% +}% end \askmapiv + +%% #1= output function variable +%% #2= 5 input variables +%% #3= options list +%% #4= 32 function values +%% #5= user defined picture commands +\newcommand{\askmapv}[5]{% +{\unitlength\askmapunitlength% +\askmap@processoptions{#3}% +\begin{picture}(10.4,5)(-1.2,0)% +\linethickness{1pt}% +\put(0,0){\framebox(8,4)}% +\multiput(1,0)(1,0){7}{\line(0,1){4}}% +\multiput(0,1)(0,1){3}{\line(1,0){8}}% +\ifaskmap@optf% +\put(8.35,4.25){#1}% +\put(7.9,3.9){\line(1,1){0.4}}% +\fi% +\askmapargumentstring{#2}% +\put(-0.4,4.55){\askmapgetchar\askmapgetchar\askmapgetchar}% +\put(-1.0,4.1){\makebox(0.5,0){\askmapgetchar\askmapgetchar}}% +\ifaskmap@opti% +\put(0.01,3.05){\scriptsize{\textsl{0}}}% +\put(0.01,2.05){\scriptsize{\textsl{1}}}% +\put(0.01,0.03){\scriptsize{\textsl{2}}}% +\put(0.01,1.05){\scriptsize{\textsl{3}}}% +\put(1.03,3.05){\scriptsize{\textsl{4}}}% +\put(1.03,2.05){\scriptsize{\textsl{5}}}% +\put(1.03,0.03){\scriptsize{\textsl{6}}}% +\put(1.03,1.05){\scriptsize{\textsl{7}}}% +\put(3.03,3.05){\scriptsize{\textsl{8}}}% +\put(3.03,2.05){\scriptsize{\textsl{9}}}% +\put(3.03,0.03){\scriptsize{\textsl{10}}}% +\put(3.03,1.05){\scriptsize{\textsl{11}}}% +\put(2.03,3.05){\scriptsize{\textsl{12}}}% +\put(2.03,2.05){\scriptsize{\textsl{13}}}% +\put(2.03,0.03){\scriptsize{\textsl{14}}}% +\put(2.03,1.05){\scriptsize{\textsl{15}}}% +\put(7.03,3.05){\scriptsize{\textsl{16}}}% +\put(7.03,2.05){\scriptsize{\textsl{17}}}% +\put(7.03,0.03){\scriptsize{\textsl{18}}}% +\put(7.03,1.05){\scriptsize{\textsl{19}}}% +\put(6.03,3.05){\scriptsize{\textsl{20}}}% +\put(6.03,2.05){\scriptsize{\textsl{21}}}% +\put(6.03,0.03){\scriptsize{\textsl{22}}}% +\put(6.03,1.05){\scriptsize{\textsl{23}}}% +\put(4.03,3.05){\scriptsize{\textsl{24}}}% +\put(4.03,2.05){\scriptsize{\textsl{25}}}% +\put(4.03,0.03){\scriptsize{\textsl{26}}}% +\put(4.03,1.05){\scriptsize{\textsl{27}}}% +\put(5.03,3.05){\scriptsize{\textsl{28}}}% +\put(5.03,2.05){\scriptsize{\textsl{29}}}% +\put(5.03,0.03){\scriptsize{\textsl{30}}}% +\put(5.03,1.05){\scriptsize{\textsl{31}}}% +\fi% +\askmapargumentstring{#4}% +\put(0.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(0.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(1.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(3.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(2.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(7.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(7.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(7.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(7.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(6.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(6.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(6.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(6.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(4.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(4.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(4.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(4.5,1.5){\makebox(0,0){\askmapgetchar}}% +\put(5.5,3.5){\makebox(0,0){\askmapgetchar}}% +\put(5.5,2.5){\makebox(0,0){\askmapgetchar}}% +\put(5.5,0.5){\makebox(0,0){\askmapgetchar}}% +\put(5.5,1.5){\makebox(0,0){\askmapgetchar}}% +\ifaskmap@optb% +\put(-0.6,3.5){\makebox(0.5,0)[r]{\footnotesize{00}}}% +\put(-0.6,2.5){\makebox(0.5,0)[r]{\footnotesize{01}}}% +\put(-0.6,1.5){\makebox(0.5,0)[r]{\footnotesize{11}}}% +\put(-0.6,0.5){\makebox(0.5,0)[r]{\footnotesize{10}}}% +\put(0.5,4.2){\makebox(0,0){\footnotesize{000}}}% +\put(1.5,4.2){\makebox(0,0){\footnotesize{001}}}% +\put(2.5,4.2){\makebox(0,0){\footnotesize{011}}}% +\put(3.5,4.2){\makebox(0,0){\footnotesize{010}}}% +\put(4.5,4.2){\makebox(0,0){\footnotesize{110}}}% +\put(5.5,4.2){\makebox(0,0){\footnotesize{111}}}% +\put(6.5,4.2){\makebox(0,0){\footnotesize{101}}}% +\put(7.5,4.2){\makebox(0,0){\footnotesize{100}}}% +\fi% +\thicklines% +\put(0,4){\line(-1,1){0.70}}% +\thinlines% +#5% +\end{picture}% +}% +}% end \askmapv + +\endinput +%% +%% End of file 'askmaps.sty'. -- cgit v1.2.3