
Tengo problemas para que la spy
biblioteca funcione en mi instalación actual. Estoy ejecutando TeXmaker con MikTeX 2.9 (con todos los paquetes actualizados) en Win8.1x64.
Leí sobre los problemas que otros tienen con esto.aquíyaquí, pero todavía no consigo que funcione usando PdfLaTeX con salida directa en PDF.
Este es el MWE que estoy usando:
\documentclass{minimal}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,spy}
\begin{document}
\begin{tikzpicture}
% Using Wikipedia's image of the day
\node[anchor=south west,inner sep=0] (image) at (0,0){\includegraphics[width=0.65\textwidth]{Coiled_Galaxy.jpg}};
\begin{scope}[x={(image.south east)},y={(image.north west)},
spy using outlines={red,circle,magnification=4, size=3cm,connect spies}]
% \foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
% \foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
\spy on (0.70,0.95) in node at (0.5,1.2);
\end{scope}
\end{tikzpicture}
\\
Pgf Version: \pgfversion
\end{document}
% Log
% This is pdfTeX, Version 3.14159265-2.6-1.40.16 (MiKTeX 2.9) (preloaded format=pdflatex 2015.7.29)
Y este es mi resultado:
EDITAR: Mi error fue, como señaló Ulrike Fischer, que no había ninguna imagen con la que trabajar el espía, nada que ver con mis paquetes.
La solución fija es:
\documentclass{minimal}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,spy}
\begin{document}
\begin{tikzpicture}[ spy using outlines={red,circle,magnification=4, size=3cm,connect spies}]
% Use Wikipedias image of the day
\node[anchor=south west,inner sep=0] (image) at (0,0){\includegraphics[width=0.65\textwidth]{Coiled_Galaxy.jpg}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
\end{scope}
\spy on ($0.95*(image.south east)+0.95*(image.north west)$) in node at ([yshift=1cm]image.north);
\end{tikzpicture}
\\
Pgf Version: \pgfversion
\end{document}
Respuesta1
Estoy seguro de que he visto algo muy similar a esta respuesta en algún otro lugar, pero no puedo encontrarlo. Pero de todos modos, aquí hay un image
sistema de coordenadas que proporciona una manera de hacer referencia a las coordenadas en la imagen (en realidad, el nodo que contiene la imagen que debería tener cero innersep
y outersep
) usando coordenadas relativas (de 0
a 1
) y coordenadas exactas (es decir, con unidades).
En este ejemplo he usado universe.jpg
desde elconferenciantepaquete. No image cs
producirá grandes resultados si hace algo "inteligente" como rotar o inclinar el nodo.
\documentclass[tikz, border=5]{standalone}
\usetikzlibrary{spy}
\tikzdeclarecoordinatesystem{image}{%
\tikzset{image cs/.cd, #1}%
\pgfpointdiff%
{\pgfpointanchor{\graphicname}{south west}}%
{\pgfpointanchor{\graphicname}{north east}}%
\pgfgetlastxy\graphicwidth\graphicheight%
\pgfmathparse{\graphicx}%
\ifpgfmathunitsdeclared\def\graphicwidth{1}\fi%
\pgfmathparse{\graphicy}%
\ifpgfmathunitsdeclared\def\graphicheight{1}\fi%
\pgfpointadd{\pgfpointanchor{\graphicname}{south west}}%
{\pgfpoint{(\graphicx)*\graphicwidth}{(\graphicy)*\graphicheight}}%
}
\tikzset{image cs/.cd,
x/.store in=\graphicx, y/.store in=\graphicy,
image/.store in=\graphicname
}
\begin{document}
\begin{tikzpicture}
\begin{scope}[spy using outlines={white, ultra thick,
circle, magnification=4, size=3cm, connect spies}]
\node [inner sep=0, outer sep=0] (universe)
{\includegraphics[width=10cm]{universe.jpg}};
\foreach \x in {0,1,...,9}{
\node [below] at (image cs:image=universe, x=\x/10, y=0) {0.\x};
\node [above] at (image cs:image=universe, x=\x cm, y=1) {\x cm};
}
\foreach \y in {0,1,...,9}{
\node [left] at (image cs:image=universe, x=0, y=\y/10) {0.\y};
\node [right] at (image cs:image=universe, x=1, y=\y cm) {\y cm};
}
\spy on (image cs:image=universe, x=0.69, y=0.88) in node at (-2, 5);
\spy on (image cs:image=universe, x=5cm, y=5cm) in node at (-5, 0);
\spy on (image cs:image=universe, x=0.41, y=0.12) in node at ( 5,-5);
\end{scope}
\end{tikzpicture}
\end{document}