mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-19 11:38:05 +02:00
added karnough maps
This commit is contained in:
parent
4fd52e6f2c
commit
78d2c45580
7 changed files with 251 additions and 0 deletions
35
tikz/karnaugh-map-2/Makefile
Normal file
35
tikz/karnaugh-map-2/Makefile
Normal file
|
@ -0,0 +1,35 @@
|
|||
SOURCE = karnaugh-map-2
|
||||
DELAY = 80
|
||||
DENSITY = 300
|
||||
WIDTH = 512
|
||||
|
||||
make:
|
||||
pdflatex $(SOURCE).tex -output-format=pdf
|
||||
make clean
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot
|
||||
|
||||
gif:
|
||||
pdfcrop $(SOURCE).pdf
|
||||
convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
|
||||
make clean
|
||||
|
||||
png:
|
||||
make
|
||||
make svg
|
||||
inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
|
||||
|
||||
transparentGif:
|
||||
convert $(SOURCE).pdf -transparent white result.gif
|
||||
make clean
|
||||
|
||||
svg:
|
||||
make
|
||||
#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
|
||||
pdf2svg $(SOURCE).pdf $(SOURCE).svg
|
||||
# Necessary, as pdf2svg does not always create valid svgs:
|
||||
inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
|
||||
rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
|
||||
inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
|
||||
rm $(SOURCE)2.svg
|
1
tikz/karnaugh-map-2/Readme.md
Normal file
1
tikz/karnaugh-map-2/Readme.md
Normal file
|
@ -0,0 +1 @@
|
|||
This solution is from ignasi on [latex-community.org](http://www.latex-community.org/forum/viewtopic.php?f=45&t=13279#p50336))
|
BIN
tikz/karnaugh-map-2/karnaugh-map-2.png
Normal file
BIN
tikz/karnaugh-map-2/karnaugh-map-2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
140
tikz/karnaugh-map-2/karnaugh-map-2.tex
Normal file
140
tikz/karnaugh-map-2/karnaugh-map-2.tex
Normal file
|
@ -0,0 +1,140 @@
|
|||
\documentclass{article}
|
||||
\usepackage[pdftex,active,tightpage]{preview}
|
||||
\setlength\PreviewBorder{2mm}
|
||||
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{matrix,calc}
|
||||
|
||||
%internal group
|
||||
%#1-space between node and grouping line. Default=0
|
||||
%#2-top left node
|
||||
%#3-bottom right node
|
||||
\newcommand{\implicant}[3][0]{
|
||||
\draw[rounded corners=3pt] ($(#2.north west)+(135:#1)$) rectangle ($(#3.south east)+(-45:#1)$);
|
||||
}
|
||||
|
||||
%group lateral borders
|
||||
%#1-space between node and grouping line. Default=0
|
||||
%#2-top left node
|
||||
%#3-bottom right node
|
||||
\newcommand{\implicantcostats}[3][0]{
|
||||
\draw[rounded corners=3pt] ($(rf.east |- #2.north)+(90:#1)$)-| ($(#2.east)+(0:#1)$) |- ($(rf.east |- #3.south)+(-90:#1)$);
|
||||
\draw[rounded corners=3pt] ($(cf.west |- #2.north)+(90:#1)$) -| ($(#3.west)+(180:#1)$) |- ($(cf.west |- #3.south)+(-90:#1)$);
|
||||
}
|
||||
|
||||
%group top-bottom borders
|
||||
%#1-space between node and grouping line. Default=0
|
||||
%#2-top left node
|
||||
%#3-bottom right node
|
||||
\newcommand{\implicantdaltbaix}[3][0]{
|
||||
\draw[rounded corners=3pt] ($(cf.south -| #2.west)+(180:#1)$) |- ($(#2.south)+(-90:#1)$) -| ($(cf.south -| #3.east)+(0:#1)$);
|
||||
\draw[rounded corners=3pt] ($(rf.north -| #2.west)+(180:#1)$) |- ($(#3.north)+(90:#1)$) -| ($(rf.north -| #3.east)+(0:#1)$);
|
||||
}
|
||||
|
||||
%group corners
|
||||
%#1-space between node and grouping line. Default=0
|
||||
\newcommand{\implicantcantons}[1][0]{
|
||||
\draw[rounded corners=3pt] ($(rf.east |- 0.south)+(-90:#1)$) -| ($(0.east |- cf.south)+(0:#1)$);
|
||||
\draw[rounded corners=3pt] ($(rf.east |- 8.north)+(90:#1)$) -| ($(8.east |- rf.north)+(0:#1)$);
|
||||
\draw[rounded corners=3pt] ($(cf.west |- 2.south)+(-90:#1)$) -| ($(2.west |- cf.south)+(180:#1)$);
|
||||
\draw[rounded corners=3pt] ($(cf.west |- 10.north)+(90:#1)$) -| ($(10.west |- rf.north)+(180:#1)$);
|
||||
}
|
||||
|
||||
%Empty Karnaugh map 4x4
|
||||
\newenvironment{Karnaugh}%
|
||||
{
|
||||
\begin{tikzpicture}[baseline=(current bounding box.north),scale=0.8]
|
||||
\draw (0,0) grid (4,4);
|
||||
\draw (0,4) -- node [pos=0.7,above right,anchor=south west] {cd} node [pos=0.7,below left,anchor=north east] {ab} ++(135:1);
|
||||
%
|
||||
\matrix (mapa) [matrix of nodes,
|
||||
column sep={0.8cm,between origins},
|
||||
row sep={0.8cm,between origins},
|
||||
every node/.style={minimum size=0.3mm},
|
||||
anchor=8.center,
|
||||
ampersand replacement=\&] at (0.5,0.5)
|
||||
{
|
||||
\& |(c00)| 00 \& |(c01)| 01 \& |(c11)| 11 \& |(c10)| 10 \& |(cf)| \phantom{00} \\
|
||||
|(r00)| 00 \& |(0)| \phantom{0} \& |(1)| \phantom{0} \& |(3)| \phantom{0} \& |(2)| \phantom{0} \& \\
|
||||
|(r01)| 01 \& |(4)| \phantom{0} \& |(5)| \phantom{0} \& |(7)| \phantom{0} \& |(6)| \phantom{0} \& \\
|
||||
|(r11)| 11 \& |(12)| \phantom{0} \& |(13)| \phantom{0} \& |(15)| \phantom{0} \& |(14)| \phantom{0} \& \\
|
||||
|(r10)| 10 \& |(8)| \phantom{0} \& |(9)| \phantom{0} \& |(11)| \phantom{0} \& |(10)| \phantom{0} \& \\
|
||||
|(rf) | \phantom{00} \& \& \& \& \& \\
|
||||
};
|
||||
}%
|
||||
{
|
||||
\end{tikzpicture}
|
||||
}
|
||||
|
||||
%Empty Karnaugh map 2x4
|
||||
\newenvironment{Karnaughvuit}%
|
||||
{
|
||||
\begin{tikzpicture}[baseline=(current bounding box.north),scale=0.8]
|
||||
\draw (0,0) grid (4,2);
|
||||
\draw (0,2) -- node [pos=0.7,above right,anchor=south west] {bc} node [pos=0.7,below left,anchor=north east] {a} ++(135:1);
|
||||
%
|
||||
\matrix (mapa) [matrix of nodes,
|
||||
column sep={0.8cm,between origins},
|
||||
row sep={0.8cm,between origins},
|
||||
every node/.style={minimum size=0.3mm},
|
||||
anchor=4.center,
|
||||
ampersand replacement=\&] at (0.5,0.5)
|
||||
{
|
||||
\& |(c00)| 00 \& |(c01)| 01 \& |(c11)| 11 \& |(c10)| 10 \& |(cf)| \phantom{00} \\
|
||||
|(r00)| 0 \& |(0)| \phantom{0} \& |(1)| \phantom{0} \& |(3)| \phantom{0} \& |(2)| \phantom{0} \& \\
|
||||
|(r01)| 1 \& |(4)| \phantom{0} \& |(5)| \phantom{0} \& |(7)| \phantom{0} \& |(6)| \phantom{0} \& \\
|
||||
|(rf) | \phantom{00} \& \& \& \& \& \\
|
||||
};
|
||||
}%
|
||||
{
|
||||
\end{tikzpicture}
|
||||
}
|
||||
|
||||
%Defines 8 or 16 values (0,1,X)
|
||||
\newcommand{\contingut}[1]{%
|
||||
\foreach \x [count=\xi from 0] in {#1}
|
||||
\path (\xi) node {\x};
|
||||
}
|
||||
|
||||
%Places 1 in listed positions
|
||||
\newcommand{\minterms}[1]{%
|
||||
\foreach \x in {#1}
|
||||
\path (\x) node {1};
|
||||
}
|
||||
|
||||
%Places 0 in listed positions
|
||||
\newcommand{\maxterms}[1]{%
|
||||
\foreach \x in {#1}
|
||||
\path (\x) node {0};
|
||||
}
|
||||
|
||||
%Places X in listed positions
|
||||
\newcommand{\indeterminats}[1]{%
|
||||
\foreach \x in {#1}
|
||||
\path (\x) node {X};
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
\begin{preview}
|
||||
\begin{Karnaugh}
|
||||
\contingut{0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,1}
|
||||
\implicant{0}{2}
|
||||
\implicantdaltbaix[3pt]{3}{10}
|
||||
\implicantcostats{4}{14}
|
||||
\end{Karnaugh}
|
||||
|
||||
\begin{Karnaugh}
|
||||
\minterms{4,10,11,13}
|
||||
\maxterms{1,3,6,7,8,9,12,14}
|
||||
\indeterminats{0,2,5,15}
|
||||
\implicant{4}{5}
|
||||
\implicant{11}{10}
|
||||
\implicant{13}{15}
|
||||
\implicantcostats{0}{2}
|
||||
\implicant[3pt]{0}{4}
|
||||
\implicant[3pt]{5}{13}
|
||||
\implicant[3pt]{15}{11}
|
||||
\implicantdaltbaix[3pt]{2}{10}
|
||||
\end{Karnaugh}
|
||||
\end{preview}
|
||||
\end{document}
|
34
tikz/karnaugh-map/Makefile
Normal file
34
tikz/karnaugh-map/Makefile
Normal file
|
@ -0,0 +1,34 @@
|
|||
SOURCE = karnaugh-map
|
||||
DELAY = 80
|
||||
DENSITY = 300
|
||||
WIDTH = 512
|
||||
|
||||
make:
|
||||
pdflatex $(SOURCE).tex -output-format=pdf
|
||||
make clean
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot
|
||||
|
||||
gif:
|
||||
pdfcrop $(SOURCE).pdf
|
||||
convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
|
||||
make clean
|
||||
|
||||
png:
|
||||
make
|
||||
convert -density 320x320 $(SOURCE).pdf $(SOURCE).png
|
||||
|
||||
transparentGif:
|
||||
convert $(SOURCE).pdf -transparent white result.gif
|
||||
make clean
|
||||
|
||||
svg:
|
||||
make
|
||||
#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
|
||||
pdf2svg $(SOURCE).pdf $(SOURCE).svg
|
||||
# Necessary, as pdf2svg does not always create valid svgs:
|
||||
inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
|
||||
rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
|
||||
inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
|
||||
rm $(SOURCE)2.svg
|
BIN
tikz/karnaugh-map/karnaugh-map.png
Normal file
BIN
tikz/karnaugh-map/karnaugh-map.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
41
tikz/karnaugh-map/karnaugh-map.tex
Normal file
41
tikz/karnaugh-map/karnaugh-map.tex
Normal file
|
@ -0,0 +1,41 @@
|
|||
\documentclass{article}
|
||||
\usepackage[pdftex,active,tightpage]{preview}
|
||||
\setlength\PreviewBorder{2mm}
|
||||
|
||||
\usepackage[dvipsnames]{xcolor}
|
||||
\input{kvmacros}
|
||||
|
||||
\begin{document}
|
||||
\begin{preview}
|
||||
\karnaughmap{4}{$f(w,x,y,z)$}{{$w$}{$x$}{$y$}{$z$}}%
|
||||
{
|
||||
1100
|
||||
1100
|
||||
0011
|
||||
0101
|
||||
}
|
||||
{
|
||||
% Long one at top
|
||||
\textcolor{Blue}{
|
||||
\put(2,3.5){\oval(3.9,0.9)[]}
|
||||
}
|
||||
\textcolor{WildStrawberry}{
|
||||
\put(0.9,3.5){\oval(1.7,0.8)[]}
|
||||
}
|
||||
% two left
|
||||
\textcolor{Green}{
|
||||
\put(0.7,1.5){\oval(1.9,0.9)}
|
||||
}
|
||||
\textcolor{Sepia}{
|
||||
\put(1.5,1.5){\oval(1.6,0.7)}
|
||||
}
|
||||
\textcolor{Red}{
|
||||
\put(1.92,1){\oval(0.9,1.9)}
|
||||
}
|
||||
\textcolor{LimeGreen}{
|
||||
\put(1.76,-0.2){\oval(0.9,2.1)[t]}
|
||||
\put(1.76,4.2){\oval(0.9,2.1)[b]}
|
||||
}
|
||||
}
|
||||
\end{preview}
|
||||
\end{document}
|
Loading…
Add table
Add a link
Reference in a new issue