Posterior a de nuestra extensa compilación de información pudimos resolver esta duda que suelen tener ciertos los usuarios. Te compartimos la solución y nuestro objetivo es servirte de mucha ayuda.
Solución:
Descargo de responsabilidad:
Horrible, horrible truco. Por favor, perdóname, considéralo solo como una prueba de concepto …
La salida:
El truco:
- Dibuja (sin dibujarla realmente) la estrella, incluidos los nodos numerados que en realidad están dibujados y nombrados, para luego obtener sus coordenadas de borde.
- Clip a una forma con agujeros. El contorno de la forma es el cuadro delimitador actual (establecido en el paso 1). Los agujeros son los bordes rectangulares de los nodos numerados y la ruta triangular. Estos se definen en sentido contrario a las agujas del reloj, de modo que se “restan” de la forma.
- Dibuja de nuevo los bordes en forma de estrella. Como resultado del paso 2, nuestro lienzo actual tiene “agujeros” en los que desaparecen las líneas dibujadas.
- Restablece el área de recorte y dibuja el triángulo interior.
Para restablecer el área de recorte en 4, es suficiente realizar los pasos 2 y 3 dentro de un alcance.
El código:
documentclass[a5paper]article
usepackagetikz
usepackagebackground
backgroundsetup
scale=1,
angle=0,
opacity=1,
contents=begintikzpicture[remember picture,overlay]
path [left color = black, right color = white] (current page.south west)rectangle (current page.north east); % Adjust the position of the logo.
endtikzpicture
begindocument
centering
begintikzpicture
% Draw and name the nodes
foreach x in 0,...,5
path (0,0) to[bend right] node [pos=0.8,fill=none,name=nx] x (60*x+30:3) ;
% Scope in which the curved lines are drawn
beginscope
% Define clipping geometry with holes
clip (current bounding box.south west) rectangle (current bounding box.north east)
foreach x in 0,...,5 (nx.south east) rectangle (nx.north west)
(20:1) -- (140:1) -- (260:1) -- (20:1);
% Draw curves
foreach x in 0,...,5
draw (0,0) to[bend right] (60*x+30:3) ;
endscope
% Reset clipping (when scope is exited)
% Draw triangle
draw[fill=none] (20:1) -- (140:1) -- (260:1) -- cycle;
draw (0,0) node[align=center] Center;
endtikzpicture
enddocument
Actualizar
Para mayor diversión y fealdad:
% Same preamble...
usepackagelipsum
begindocument
lipsum[6]lipsum[6]lipsum[6]
begintikzpicture[remember picture, overlay, shift=(current page.center), blue, thick]
% Same drawing code...
endtikzpicture
enddocument
Da:
Podrías hacer la imagen completa como un desvanecimiento
documentclass[border=5]standalone
usepackagetikz
usetikzlibraryfadings
begintikzfadingfrompicture[name=figure]
foreach x in 0,...,5
draw [pgftransparent!0] (0,0) to [bend right]
node [fill=pgftransparent, pos=0.8, text=pgftransparent!0] x (60*x+30:3);
draw [draw=pgftransparent!0, fill=pgftransparent]
(20:1) -- (140:1) -- (260:1) -- cycle;
draw [draw=pgftransparent!0]
(0,0) node[align=center, text=pgftransparent!0] Center;
endtikzfadingfrompicture
begindocument
tikzpath[bottom color=red!20, top color=blue!20, middle color=green!20,
postaction=fill=black, path fading=figure, fit fading=false]
(-3.5, -3.5) rectangle (3.5,3.5);
enddocument
Colocar la imagen sobre el texto es bastante simple, solo recuerde configurar el fading transform
así como:
documentclassarticle
usepackagetikz,lipsum
usetikzlibraryfadings
begintikzfadingfrompicture[name=figure]
foreach x in 0,...,5
draw [pgftransparent!0] (0,0) to [bend right]
node [fill=pgftransparent, pos=0.8, text=pgftransparent!0] x (60*x+30:3);
draw [draw=pgftransparent!0, fill=pgftransparent]
(20:1) -- (140:1) -- (260:1) -- cycle;
draw [draw=pgftransparent!0]
(0,0) node[align=center, text=pgftransparent!0] Center;
endtikzfadingfrompicture
begindocument
lipsum[1]lipsum[2]lipsum[3]lipsum[4]
tikz[remember picture, overlay,
shift=(current page.center), fading transform=shift=(current page.center)]
path[fill=red, path fading=figure, fit fading=false]
(-3.5, -3.5) rectangle (3.5,3.5);
enddocument
Parte del resultado (después de dos cumplimientos):
También es posible obtener automáticamente el cuadro delimitador del desvanecimiento. Para ello, se utiliza un truco que significa que la imagen que compone el desvanecimiento se especifica en línea.
documentclassarticle
usepackagetikz,lipsum
usetikzlibraryfadings
newboxfadingbox
tikzset
shift fading/.style=shift=#1, fading transform=shift=#1,
use as fading/.style=%
/utils/exec=%
pgfinterruptpicture
globalsetboxfadingbox=hboxpgfpicture#1endpgfpicture%
begintikzfadingfrompicture[[email protected]]
pgftextcopyfadingbox
endtikzfadingfrompicture%
endpgfinterruptpicture,
path [email protected], fit fading=false,
insert path=%
(-wdfadingbox/2, -htfadingbox/2-dpfadingbox/2)
rectangle ++(wdfadingbox, htfadingbox+dpfadingbox)
begindocument
lipsum[1]lipsum[2]lipsum[3]lipsum[4]
tikz[remember picture, overlay, shift fading=(current page.center)]
path [fill=blue, use as fading=
foreach x in 0,...,5
draw [transparent!0] (0,0) to [bend right]
node [fill=transparent, pos=0.8, text=transparent!0] x (60*x+30:3);
draw [draw=transparent!0, fill=transparent]
(20:1) -- (140:1) -- (260:1) -- cycle;
draw [draw=transparent!0]
(0,0) node[align=center, text=transparent!0] Center;
];
enddocument
Solo fill
usando el mismo color de fondo que en su mdframed
medio ambiente. Es decir, fill=black!10
. Esto produce:
Aquí está el código completo:
documentclassarticle
usepackagemdframed % for framing
usepackagetikz
begindocument
beginmdframed[backgroundcolor=black!10]
centering
begintikzpicture
foreach x in 0,...,5
draw (0,0) to[bend right] node [pos=0.8,fill=black!10] x (60*x+30:3) ;
draw[fill=black!10] (20:1) -- (140:1) -- (260:1) -- cycle;
draw (0,0) node[align=center] Center;
endtikzpicture
endmdframed
enddocument
valoraciones y comentarios
Si piensas que ha resultado útil este artículo, sería de mucha ayuda si lo compartes con otros juniors de este modo contrubuyes a extender este contenido.