Nuestro equipo de expertos luego de días de investigación y de juntar de información, dieron con la solución, deseamos que te resulte útil para tu proyecto.
Solución:
Es perfectamente posible anidar bucles. Sin embargo, anidar tikzpicture
Se sabe que los entornos son peligrosos. Aunque a veces funciona, debe evitarse. Básicamente, se espera que se rompa.
yo lo que haria es dibujar los circulos primero y el fit
la caja exterior que los rodea. Por ejemplo:
documentclass[border=5pt,tikz,multi]standalone
usetikzlibraryfit,positioning
begindocument
begintikzpicture[ultra thick]
coordinate (c0) at (0,0);
foreach i [count=j, evaluate=j as k using j-1, evaluate=j as m using int(mod(j,5))==0 ? "" : "draw" , evaluate=j as n using j>10 ? "20mm" : "10mm" ] in 1,...,11
node (cj) [right=7.5pt of ck |- c0, circle, anchor=north west, minimum size=n, m] ;
node [fit=(c1) (c11), draw, rounded corners=15pt, inner xsep=5mm, minimum height=30mm] ;
endtikzpicture
enddocument
Si lo prefiere, simplemente puede dibujar los círculos uno por uno y luego dibujar el cuadro de la misma manera. Solo nombre el más a la izquierda y el más a la derecha para que pueda decir fit=(
y todo debe estar bien.
En este caso particular, podría, si realmente quisiera, anidar el tikzpicture
s. Sin embargo, (5,1)
Me senté x=5cm
muy a la izquierda del borde más a la izquierda de la caja que está en x=10cm
. Así que para ponerlo en la caja, tendrías que ponerlo en la caja.
También tienes que poner el tikzpicture
dentro de un nodo. Por ejemplo:
documentclassarticle
usepackagetikz
usetikzlibraryfit,positioning
begindocument
begintikzpicture
draw [rounded corners=15pt] (10,0) rectangle ++(15,3);
node at (12.5,1.5) % BREAKAGE EXPECTED !!
begintikzpicture% DON"T TRY THIS AT HOME !!
draw circle (1cm);
endtikzpicture
;
endtikzpicture
enddocument
Pero no tiene mucho sentido cortejar el desastre cuando sería mucho más fácil escribir
documentclassarticle
usepackagetikz
usetikzlibraryfit,positioning
begindocument
begintikzpicture
draw [rounded corners=15pt] (10,0) rectangle ++(15,3);
draw (12.5,1.5) circle (1cm);
endtikzpicture
enddocument
que produce el mismo resultado sin los riesgos concomitantes y mucho más fácilmente.
Una de las muchas soluciones posibles (considerando el primer comentario de @cfr):
documentclass[border=11mm,
tikz]standalone
usetikzlibrarycalc
begindocument
begintikzpicture[
box/.style = draw, rounded corners=15pt,
minimum width=150mm, minimum height=30mm
]
node (a) [box] ;
foreach i in 1,...,4
draw ($(a.west)+(1.1*i,0.5)$) circle (5mm);
foreach i in 1,...,4
draw ($(a.west)+(5+1.1*i,0.5)$) circle (5mm);
draw ($(a.east)-(2,0)$) circle (10mm);
endtikzpicture
enddocument