No dudes en compartir nuestra web y códigos en tus redes, necesitamos de tu ayuda para ampliar nuestra comunidad.
Solución:
Aquí hay una segunda versión que usa un pic
(primera versión a continuación). I estola tomó prestado un código de la respuesta de cfr a “Cómo hacer correctamente macro con el uso de imagen? “, para que sea más fácil modificar la configuración por imagen.
documentclass[border=5mm]standalone
usepackagetikz
usetikzlibrarycalc, positioning
tikzset%
pics/databox/.style=%
code=%
tikzset%
/databox settings,
default,
#1,
node [draw,rounded corners=rounding,minimum size=size,inner sep=textborder] (-txt) txt;
% "3D" top
draw [rounded corners = rounding]
let
p1=(-txt.south west), p2=(-txt.north east), n1=x2-x1, n2=y2-y1
in
(-txt.north) --
++ (-n1/2, 0) -- coordinate [midway] (topLC)
++ (1.5*xslant, yslant) coordinate (topUL) --
++ (n1, 0) --
++ (-1.5*xslant, -yslant) --
cycle;
% "3D" side
draw [rounded corners = rounding]
let
p1=(-txt.south west), p2=(-txt.north east), n1=x2-x1, n2=y2-y1
in
(-txt.east) --
++ (0,n2/2) --
++ (1.5*xslant, yslant) --
++ (0,-n2) --
++ (-1.5*xslant, -yslant) --
cycle;
ifnum lidopen=1
% lid
draw [rounded corners = rounding]
let
p1=(topLC), p2=(topUL), n1=2*(x2-x1), n2=2*(y2-y1),
p3=(-txt.south west), p4=(-txt.north east), n3=y4-y3)
in
(topLC) -- (topUL) --
++ (-n3*cos(lidangle), n3*sin(lidangle)) --
++ (-n1,-n2) --
++ (n3*cos(lidangle), -n3*sin(lidangle)) --
cycle;
fi
,
/databox settings/.is family,
/databox settings,
size/.store in=size,
textborder/.store in=textborder,
xslant/.store in=xslant,
yslant/.store in=yslant,
rounding/.store in=rounding,
text/.store in=txt,
lidangle/.store in=lidangle,
open/.store in=lidopen,
default/.style=%
textborder=0.333em,
xslant=4pt,
yslant=10pt,
rounding=2pt,
text=SIP,
size=1.5*width("SIP"),
lidangle=20,
open=0
begindocument
begintikzpicture
pic (sip) databox;
pic [right=1.5cm of sip-txt] (sipOpen) databox=text=SAAAP,open=1;
pic [right=of sipOpen-txt,blue,thick] (bluesip) databox=rounding=4pt;
pic [right=of bluesip-txt,red] databox=text=SUUP,size=40pt,xslant=8pt;
endtikzpicture
enddocument
Versión antigua
Quizás podrías usar un pic
. Sin embargo, esto tiene sus propios problemas, pero parece que la solución mencionada en https://tex.stackexchange.com/a/302562/586 también funciona aquí.
documentclassstandalone
usepackagetikz
usetikzlibrarycalc, positioning
tikzset
databox/.pic=
% Settings
defwidth25pt;
defheight25pt;
deftextborder2pt;
defxslant4pt;
defyslant10pt;
defrounding2pt;
coordinate (CenterPoint) at (-width/2,-height/2);
% Drawing
draw [rounded corners = rounding] (CenterPoint) rectangle ($(CenterPoint) + (width, height)$);
% note anchor=center
node [anchor=center] (-txt) at ($(CenterPoint) + (width/2., 0.5*height)$) #1;
% "3D" top
draw [rounded corners = rounding] %
($(CenterPoint) + (0, height)$) -- %
($(CenterPoint) + (-width/2. + 5*xslant, height + yslant)$) -- %
($(CenterPoint) + (width + 1.5*xslant, height + yslant)$) -- %
($(CenterPoint) + (width, height)$) -- %
cycle;
% "3D" side
draw [rounded corners = rounding] %
($(CenterPoint) + (width + 1.5*xslant, height + yslant)$) -- %
($(CenterPoint) + (width + 1.5*xslant, yslant)$) -- %
($(CenterPoint) + (width, 0)$) -- %
($(CenterPoint) + (width, height)$) -- %
cycle;
begindocument
begintikzpicture
pic (sip) databox=SIP;
pic [right=of sip-txt] (sipOpen) databox=SIP;
pic [below=1.4cm of sipOpen-txt,blue] databox=SIP;
pic [above=1.4cm of sipOpen-txt,red] databox=SIP;
endtikzpicture
enddocument
Aquí puedes ver las reseñas y valoraciones de los lectores
Recuerda comunicar este escrito si te ayudó.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)