
Eu tenho um nó que desenhei no tikz, assim:
\node[below, text width=5cm] (SomeName) at (0,0) {
\begin{itemize}
\item line 1
\item line 2
\item line 3
\item line 4
\item line 5
\end{itemize}
}
Gostaria de desenhar uma seta da linha 2 para o lado de outro nó que construí. Eu também gostaria de poder colocar um colchete em torno das linhas 4 e 5 para desenhar uma seta diferente para outro nó.
Os itens não são estritamente itens de uma linha, então eu gostaria de poder colocar alguma referência dentro do texto (se possível) para poder construir minhas linhas, em vez de posicionar a linha em uma fração da caixa construída por meu nó.
Para uma espineta de código completa que fornecerá a imagem do que estou procurando:
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usepgflibrary{arrows}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.text}
\usepackage{calc}
\usepackage{enumitem}
\begin{document}
\begin{tikzpicture}
\node[below, text width=5cm] (SomeName) at (0,0) {
\begin{itemize}
\item line 1
\item line 2
\item line 3
\item line 4
\item line 5
\end{itemize}
};
\node[below, text width=2cm] (Other) at (-5,0) {
Some text will go here.
};
\node[below, text width=2cm] (Another) at (-5,-4) {
Some text will go here.
};
\draw[decorate,decoration={brace,amplitude=7pt,mirror}](-2,-2) -- (-2,-3) node[midway,left] (A) {};% A node must have a (possibly empty) label text.
\draw[-stealth] (-2,-1.5) -- (Other.east);
\draw[-stealth] (A.west) -- (Another.east);
\end{tikzpicture}
\end{document}
Gostaria que os colchetes e setas provenientes da lista detalhada fossem referências de nós, em vez de solução de problemas para colocá-los aproximadamente no local correto.
Responder1
Esta solução utilizatikzmarke envolve transformar o itemize
meio ambiente em um enumerate
uso da label
opção deenumitem. A lista parece a mesma, mas o número do item é usado para transformar os marcadores em subnós que podem ser referenciados posteriormente na imagem.
\documentclass[tikz, border=10pt, multi]{standalone}
\usepackage{calc,enumitem}
\usetikzlibrary{arrows.meta,decorations.pathreplacing,decorations.text,tikzmark}
\begin{document}
\begin{tikzpicture}[remember picture]
\node[below, text width=5cm] (SomeName) at (0,0) {%
\begin{enumerate}[label={\subnode{it\arabic*}{\textbullet}}]
\item line 1
\item line 2
\item line 3
\item line 4
\item line 5
\end{enumerate}%
};
\node[below, text width=2cm] (Other) at (-5,0) {Some text will go here.};
\node[below, text width=2cm] (Another) at (-5,-4) {Some text will go here.};
\draw[decorate,decoration={brace,amplitude=7pt,mirror}] (it3.north west) -- (it4.south west) node[midway,left] (A) {};
\draw[-Stealth] (it2) -- (Other.east);
\draw[-Stealth] ([xshift=-2.5pt]A.west) -- (Another.east);
\end{tikzpicture}
\end{document}
Responder2
Usei remember picture
a opção for tikzpicture
s para permitir a conexão entre node
s definidos em diferentes tikzpicture
s (cf. $17.13.1 nomanual). Eu costumava minipage
organizar os três blocos, mas outras soluções são possíveis. Para superar uma dificuldade no espaçamento em torno do que node
contém o $bullet$
que me referiesta resposta.
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usepgflibrary{arrows}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.text}
\usepackage{calc}
\usepackage{enumitem}
\begin{document}
\begin{minipage}{3cm}
\begin{minipage}{3cm}
\tikz[remember picture]\node (n1) {Some text will go here};
\end{minipage}
\\[1cm]
\begin{minipage}{3cm}
\tikz[remember picture]\node (n2) {Some text will go here};
\end{minipage}
\end{minipage}
\hspace{10mm}
\begin{minipage}{.5\textwidth}
\begin{itemize}
\item line 1
\item[{\tikz[remember picture]\node[inner xsep=5pt,inner ysep=0] (t2) {$\bullet\hspace{-5pt}$};}] line 2
\item[{\tikz[remember picture]\node[inner sep=0] (t3) {$\bullet$};}] line 3
\item[{\tikz[remember picture]\node[inner sep=0] (t4) {$\bullet$};}] line 4
\item line 5
\end{itemize}
\end{minipage}
\begin{tikzpicture}[overlay,remember picture]
\path[->] (n1.east) edge [out=0 , in=180] (t2.west);
\draw[decorate,decoration={brace,raise=5pt},thick] (t4.south west) -- node[left,anchor=east,inner xsep=5pt] (t34) {} (t3.north west);
\path[->] (n2.east) edge [out=0 , in=180] (t34.west);
\end{tikzpicture}
\end{document}