Tikz Spy - Leerzoom mit PDFLatex

Tikz Spy - Leerzoom mit PDFLatex

Ich habe Probleme, die spyBibliothek auf meiner aktuellen Installation zum Laufen zu bringen. Ich verwende TeXmaker mit MikTeX 2.9 (mit allen aktualisierten Paketen) unter Win8.1x64.

Ich habe von den Problemen gelesen, die andere damit habenHierUndHier, aber ich bekomme es mit PdfLaTeX mit direkter PDF-Ausgabe immer noch nicht zum Laufen.

Dies ist das MWE, das ich verwende:

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

Und das ist mein Ergebnis:

MWE_Ausgabe

BEARBEITEN: Mein Fehler war, wie Ulrike Fischer bemerkte, dass es kein Image gab, mit dem Spy arbeiten konnte, und das hatte nichts mit meinen Paketen zu tun.

Die feste Lösung ist:

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

Ergebend: Festes Beispiel

Antwort1

Ich bin sicher, dass ich irgendwo anders etwas sehr Ähnliches wie diese Antwort gesehen habe, aber ich kann es nicht finden. Aber wie auch immer, hier ist ein Koordinatensystem, das eine Möglichkeit bietet, auf Koordinaten im Bild zu verweisen (eigentlich der Knoten, der das Bild enthält, das Null und imagehaben sollte ), indem sowohl relative Koordinaten (von bis ) als auch genaue Koordinaten (d. h. mit Einheiten) verwendet werden .innersepoutersep01

In diesem Beispiel habe ich verwendet universe.jpgaus demDozentPaket. Das image csführt nicht zu großartigen Ergebnissen, wenn Sie etwas „Kluges“ tun, wie den Knoten drehen oder neigen.

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

Bildbeschreibung hier eingeben

verwandte Informationen