Esta crónica ha sido evaluado por especialistas así se garantiza la veracidad de nuestra esta noticia.
Solución:
Agregué un color de relleno al código propuesto para eliminar las líneas verticales de la tabla. Funciona bien para todos los grupos, aunque debo admitir que implicantcantons
(grupo de 4 esquinas en un mapa de 16 posiciones) necesita algunas mejoras.
EDITAR: También agregué un mapa y comando de Karnaugh 2×2 implicantsol
para marcar elementos aislados.
EDITAR 2: Resolvió el problema con implicantcantons
. Ahora los cuatro grupos de esquinas están correctamente llenados. El primer ejemplo no tiene sentido, solo muestra varias opciones de agrupación.
documentclassstandalone
usepackagetikz
usetikzlibrarymatrix,calc
%isolated term
%#1 - Optional. Space between node and grouping line. Default=0
%#2 - node
%#3 - filling color
newcommandimplicantsol[3][0]
draw[rounded corners=3pt, fill=#3, opacity=0.3] ($(#2.north west)+(135:#1)$) rectangle ($(#2.south east)+(-45:#1)$);
%internal group
%#1 - Optional. Space between node and grouping line. Default=0
%#2 - top left node
%#3 - bottom right node
%#4 - filling color
newcommandimplicant[4][0]
draw[rounded corners=3pt, fill=#4, opacity=0.3] ($(#2.north west)+(135:#1)$) rectangle ($(#3.south east)+(-45:#1)$);
%group lateral borders
%#1 - Optional. Space between node and grouping line. Default=0
%#2 - top left node
%#3 - bottom right node
%#4 - filling color
newcommandimplicantcostats[4][0] ($(#3.west)+(180:#1)$)
%group top-bottom borders
%#1 - Optional. Space between node and grouping line. Default=0
%#2 - top left node
%#3 - bottom right node
%#4 - filling color
newcommandimplicantdaltbaix[4][0]- ($(#2.south)+(-90:#1)$) -
%group corners
%#1 - Optional. Space between node and grouping line. Default=0
%#2 - filling color
newcommandimplicantcantons[2][0]- cf.south)+(0:#1)$) ;
fill[rounded corners=3pt, fill=#2, opacity=.3] ($(rf.east
%Empty Karnaugh map 4x4
newenvironmentKarnaugh%
begintikzpicture[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)
(13);
%
endtikzpicture
%Empty Karnaugh map 2x4
newenvironmentKarnaughvuit%
begintikzpicture[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)
(5);
%
endtikzpicture
%Empty Karnaugh map 2x2
newenvironmentKarnaughquatre%
begintikzpicture[baseline=(current bounding box.north),scale=0.8]
draw (0,0) grid (2,2);
draw (0,2) -- node [pos=0.7,above right,anchor=south west] b 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=2.center,
ampersand replacement=&] at (0.5,0.5)
phantom0 \
;
%
endtikzpicture
%Defines 8 or 16 values (0,1,X)
newcommandcontingut[1]%
foreach x [count=xi from 0] in #1
path (xi) node x;
%Places 1 in listed positions
newcommandminterms[1]%
foreach x in #1
path (x) node 1;
%Places 0 in listed positions
newcommandmaxterms[1]%
foreach x in #1
path (x) node 0;
%Places X in listed positions
newcommandindeterminats[1]%
foreach x in #1
path (x) node X;
begindocument
beginKarnaugh
contingut0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
implicant02red
implicant515purple
implicantdaltbaix[3pt]310blue
implicantcantons[2pt]orange
implicantcostats414green
endKarnaugh
%
beginKarnaughvuit
minterms3,4
maxterms0,1,6,7
indeterminats2,5
implicant32green
implicant45
endKarnaughvuit
%
beginKarnaughquatre
minterms1,2
maxterms0,3
implicantsol1green
implicantsol2red
endKarnaughquatre
enddocument
Hace unos días (26 de noviembre), Mattias Jacobsson subió su karnaugh-map
paquete a CTAN. Ahora, en lugar del código de mi respuesta alternativa, puede usar un paquete real.
karnaugh-map
también está basado en TikZ y puede dibujar mapas de dos a seis variables, siendo cuatro el número para el mapa predeterminado. Los mapas de cinco y seis variables se dibujan con dos (o cuatro) submapas de cuatro variables. implicant
Los comandos pueden especificar a qué submapa se aplican.
El siguiente código muestra algunos ejemplos que utilizan esta nueva herramienta.
documentclass[tikz, border=2mm]standalone
usepackagekarnaugh-map
begindocument
beginkarnaugh-map
manualterms0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
implicant02
implicant515
implicantedge13911
implicantcorner
implicantedge412614
endkarnaugh-map
beginkarnaugh-map[4][2][1][$X_1X_0$][$X_2$]
minterms3,4
maxterms0,1,6,7
indeterminants2,5
implicant32
implicant45
endkarnaugh-map
beginkarnaugh-map[2][2][1][$b$][$a$]
minterms1,2
maxterms0,3
implicant11
implicant22
endkarnaugh-map
beginkarnaugh-map[4][4][4]
implicant00[0,1,2,3]
endkarnaugh-map
enddocument
Acuérdate de que puedes optar por la opción de agregar una reseña si te fue de ayuda.