Necesito colocar una figura hecha en TikZ en un lugar específico de un listado de códigos, donde solo hay espacios en blanco. Tengo el siguiente documento:
El código que produce es el siguiente:
\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}
donde classic-diamond/src
y classic-diamond/out
contienen texto ya visible en la salida, mientras que classic-diamond/fig.tex
tiene el siguiente contenido:
\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}
Mi objetivo es colocar la figura en la esquina superior derecha del listado y no sé cómo lograrlo, a pesar de muchas preguntas existentes sobre temas similares, como colocar imágenes en coordenadas específicas, pero no tengo una imagen, tengo una imagen tikz.
Respuesta1
Usando el comentario de @projetmbc logré cambiar el archivo tikz a lo siguiente:
\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}
lo que resulta en
Esto es más o menos lo que estaba buscando. Un par de desventajas de este enfoque que noté:
- El título no se mueve con la figura, y
- Queda un poco de espacio en blanco donde aparecería la figura, de ahí que se
vspace{-1.3cm}
agregue al final del archivo de la figura.
Lo bueno de este enfoque es que es muy sencillo de ejecutar.