Preciso colocar uma figura feita em TikZ em um local específico de uma listagem de código, onde existam apenas caracteres de espaço em branco. Tenho o seguinte documento:
O código que produz é o seguinte:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage{float}
\usepackage{listings}
\usepackage{color}
\definecolor{mygray}{rgb}{0.4,0.4,0.4}
\definecolor{myblue}{rgb}{0,0,1}
\definecolor{myorange}{rgb}{1.0,0.4,0}
\lstset{
% some listing settings
}
\begin{document}
\section{Classic diamond problem}
\lstinputlisting[caption={Classic diamond problem}]{classic-diamond/src}
\input{classic-diamond/fig}
\lstinputlisting{classic-diamond/out}
\end{document}
onde classic-diamond/src
e classic-diamond/out
contém texto já visível na saída, enquanto classic-diamond/fig.tex
possui o seguinte conteúdo:
\begin{figure}[H]\label{figure:e4c}
\begin{tikzpicture}[x=1.5cm,y=1.5cm]
\tikzset{
e4c node/.style={circle,draw,minimum size=0.8cm,inner sep=0,font=\LARGE},
e4c edge/.style={sloped,above,font=\footnotesize,-{Latex[length=3mm, width=3mm]}}
}
\node[e4c node] (A) at (0.0, 1.0) {A};
\node[e4c node] (B) at (-0.5, 0.0) {B};
\node[e4c node] (C) at (0.5, 0.0) {C};
\node[e4c node] (D) at (0.0, -1.0) {D};
\path[->,draw,ultra thick]
(B) edge[e4c edge,densely dashed] (A)
(C) edge[e4c edge,densely dashed] (A)
(D) edge[e4c edge] (B)
(D) edge[e4c edge] (C)
;
\end{tikzpicture}
% \caption{Optional caption.}
\end{figure}
Meu objetivo é colocar a figura no canto superior direito da listagem e não sei como fazer isso, apesar de muitas dúvidas existentes em torno de temas semelhantes, como colocar imagens em coordenadas especificadas, mas não tenho uma imagem, tenho uma foto tikz.
Responder1
Usando o comentário do @projetmbc consegui alterar o arquivo tikz para o seguinte:
\begin{figure}[H]\label{figure:e4c}
\begin{tikzpicture}[overlay, x=1.5cm, y=1.5cm, right=10cm, above=10cm]
\tikzset{
e4c node/.style={circle,draw,minimum size=0.8cm,inner sep=0,font=\LARGE},
e4c edge/.style={sloped,above,font=\footnotesize,-{Latex[length=3mm, width=3mm]}}
}
\node[e4c node] (A) at (0.0, 1.0) {A};
\node[e4c node] (B) at (-0.5, 0.0) {B};
\node[e4c node] (C) at (0.5, 0.0) {C};
\node[e4c node] (D) at (0.0, -1.0) {D};
\path[->,draw,ultra thick]
(B) edge[e4c edge,densely dashed] (A)
(C) edge[e4c edge,densely dashed] (A)
(D) edge[e4c edge] (B)
(D) edge[e4c edge] (C)
;
\end{tikzpicture}
\end{figure}
\vspace{-1.3cm}
o que resulta em
Isso é mais ou menos o que eu estava procurando. Algumas desvantagens dessa abordagem que notei:
- A legenda não se move com a figura e
- Resta um pouco de espaço em branco onde a figura apareceria, daí o
vspace{-1.3cm}
acréscimo no final do arquivo da figura.
Uma coisa boa dessa abordagem é que ela é super simples de executar.