Espião Tikz - zoom vazio com pdflatex

Espião Tikz - zoom vazio com pdflatex

Tenho problemas para fazer a spybiblioteca funcionar na minha instalação atual. Estou executando o TeXmaker com MikTeX 2.9 (com todos os pacotes atualizados) no Win8.1x64.

Eu li sobre os problemas que outras pessoas estão tendo com issoaquieaqui, mas ainda não consigo funcionar usando PdfLaTeX com saída direta em PDF.

Este é o MWE que estou 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)

E este é o meu resultado:

MWE_saída

EDITAR: Meu erro foi, como Ulrike Fischer apontou, não havia nenhuma imagem com a qual o espião pudesse trabalhar, nada a ver com meus pacotes.

A solução fixa é:

\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}

Resultando em: Exemplo fixo

Responder1

Tenho certeza de que vi algo muito semelhante a esta resposta em outro lugar, mas não consigo encontrar. Mas de qualquer forma, aqui está um imagesistema de coordenadas que fornece uma maneira de se referir às coordenadas na imagem (na verdade, o nó que contém a imagem que deveria ter zero innersepe outersep) usando coordenadas relativas (de 0para 1) e coordenadas exatas (ou seja, com unidades).

Neste exemplo eu usei universe.jpgdoconferencistapacote. Isso image csnão produzirá ótimos resultados se você fizer algo "inteligente", como girar ou inclinar o nó.

\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}

insira a descrição da imagem aqui

informação relacionada