
Código:
\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning, calc, decorations.pathreplacing,}
\begin{document}
\newlength{\distance}
\setlength{\distance}{0.6cm}
\begin{tikzpicture}[node distance = 1cm, auto]
\tikzset{
block/.style = {rectangle, draw, text centered},
brace/.style = {decorate,decoration={brace,amplitude=4pt}},
caption/.style = {black, midway, xshift = 1mm},
}
\count0=0
\node [block, minimum height=2\distance] (\the\count0) {100\%};
\count1=\count0
\advance\count0 by 1
\draw [brace] (\the\count1.north east) --
($(\the\count1.north east) + (0, -\distance)$) node [caption] (\the\count0) {50\%};
\advance\count0 by 1
\draw [brace] ($(\the\count1.north east) + (0, -\distance)$) --
($(\the\count1.north east) + (0, -2\distance)$) node [caption] (\the\count0)
{longer text 50\%};
\end{tikzpicture}
\end{document}
Huellas dactilares:
Puede haber un número arbitrario de llaves:
- 2 - 50% (en este ejemplo)
- 3 - 33%
- 4 - 25%
etc.
- ¿Cómo puedo crear una línea horizontal de 1 mm a la derecha del texto más largo, ubicada en el centro de la altura de la imagen?
2.Como puedes ver, estos comandos son similares:
%1
\advance\count0 by 1
\draw [brace] (\the\count1.north east) --
($(\the\count1.north east) + (0, -\distance)$) node [caption] (\the\count0) {50\%};
%2
\advance\count0 by 1
\draw [brace] ($(\the\count1.north east) + (0, -\distance)$) --
($(\the\count1.north east) + (0, -2\distance)$) node [caption] (\the\count0)
{longer text 50\%};
¿Es posible poner los textos en una matriz y crear un bucle que creará estas llaves?
Respuesta1
Aquí tienes una sugerencia.
Puedes usar algo como
\draw [-latex] (current bounding box.east) ++(1mm,0) -- +(2cm,0);
para dibujar la flecha.
TikZ tiene soporte integrado para bucles, consulte el capítulo56 Repetir cosas en el manual. Probablemente haya mejores formas de hacer esto que el siguiente código, pero parece funcionar.
\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning, calc, decorations.pathreplacing}
\begin{document}
\newlength{\distance}%
\setlength{\distance}{.6cm}%
\begin{tikzpicture}[node distance = 1cm, auto]
\tikzset{
block/.style = {rectangle, draw, text centered},
brace/.style = {decorate,decoration={brace,amplitude=4pt}},
caption/.style = {black, midway, xshift = 1mm},
}
\pgfmathsetmacro\Nbraces{3}
\pgfmathtruncatemacro\Npercent{1/\Nbraces*100}
\node [block, minimum height=\Nbraces\distance] (mybox) {100\%};
\foreach [count=\i] \x in {\Npercent\%,longer text \Npercent\%,\Npercent\% something else}
\draw [brace]
($(mybox.north east) + {(\i-1)}*(0,-\distance)$) --
($(mybox.north east) + \i*(0,-\distance)$) node [caption] {\x};
\draw [-latex] (current bounding box.east) ++(1mm,0) -- +(2cm,0);
\end{tikzpicture}
\end{document}