Verweise auf Teile einer Grafik, verweissensetive Grafiken

Tabellen und Grafiken erstellen und anordnen


Flo75
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 12. Jan 2010, 15:50

Verweise auf Teile einer Grafik, verweissensetive Grafiken

Beitrag von Flo75 »

Hallo beisammen,

kennt jemand ein Paket oder eine andere Möglichkeit, um in einem Latexdokument (Ziel pdf) auf einen Teil einer Grafik zu Verweisen?

Vielleicht gibt es ja auch die Möglichkeit, auf ein unsichtbares (z.b. vom Bild überlagertes) Objekt zu verweisen?

viele Grüße,
Flo

Gast

Beitrag von Gast »

Wie soll denn so ein Verweis aussehen oder was soll er bewirken? Soll er den PDF-Betrachter dazu bringen, den vereinbarten Bildausschnitt vergrößert darzustellen?

Alexander

Flo75
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 12. Jan 2010, 15:50

Beitrag von Flo75 »

Grundsätzlich will ich eigentlich zwei Dinge erreichen:

a) der Leser klickt auf einen Verweis im Text und springt an die entsprechende Stelle in einer Grafik. D.h. ist der Zoom z.B. auf 1000% gestellt, ist eben nur der entsprechende Teil der Grafik zu sehen.

b) der Leser klickt auf den Bereich in der Grafik (z.B. in einem Blockschaltbild) und springt damit zur entsprechenden Textstelle (z.B. die Erklärung des Blocks)

Flo

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

\documentclass{scrbook} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern}
\usepackage[latin1]{inputenc} 
%Standardheader

\usepackage{tikz} % zum zeichnen

\usepackage{graphicx} % zum Bilder einfügen

\usepackage{hyperref} % Für pdflinks etc...


\begin{document}
% Dokumentenkörper
TEXT  \hyperlink{linkname}{ich bin ein link} TEXT



\begin{figure}
\begin{tikzpicture}
\node at (0,-3){\hypertarget{linkname}{ hallo}};
\node at (0,0) [inner sep=0pt, text width=\linewidth] {\includegraphics[width=\textwidth]{bild.jpg}};
\end{tikzpicture}
\caption{ich bin einfach nur ein text } 
\end{figure}
\end{document}
So: mal ne ganz schnelle Lösung mit hyperref Paket.
Damit kannst du zu einer beliebigen Stelle springen. Das Bild überlagert die node mit dem target. Vorsicht: zumindest bei meinem Betrachter stellt er das Ziel ganz oben an den Rand des Betrachters. DH die node kann nicht immer unbedingt unter dem Tatsächlichen Ziel auf dem Bild liegen. -> Ausprobieren. Das mit dem Zoom geht imho nur mit JavaSkript, aber das würde ich wirklich nit empfehlen, da unschön und vorallem ärgerst du die Leser, wenn die Zoomeinstellung des Viewers sich immer verstellt. grz

PS: das ist sicher nicht die eleganteste Lösung aber sicher ne schnelle...

Nixverstehn

Beitrag von Nixverstehn »

Flo75 hat geschrieben:a) der Leser klickt auf einen Verweis im Text und springt an die entsprechende Stelle in einer Grafik. D.h. ist der Zoom z.B. auf 1000% gestellt, ist eben nur der entsprechende Teil der Grafik zu sehen.
Das geht bei mir nicht. Wenn ich auf einen Verweise im Text klicke, dann ändert der Adobe Reader immer den Zoom-Faktor, so dass die Grafik, in die der Link verweist, komplett zu sehen ist.

Flo75
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 12. Jan 2010, 15:50

Beitrag von Flo75 »

Grandios! :-)

Also bis jetzt funktioniert es. Der Zoom sollte durch das Folgen des Links nicht verändert werden, das war wohl ein Missverständnis.

Vielen Dank!
Flo

Flo75
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 12. Jan 2010, 15:50

Beitrag von Flo75 »

Nixverstehn hat geschrieben:Das geht bei mir nicht. Wenn ich auf einen Verweise im Text klicke, dann ändert der Adobe Reader immer den Zoom-Faktor, so dass die Grafik, in die der Link verweist, komplett zu sehen ist.
Also der Effekt tritt bei mir mit der Lösung von bloodworks nicht auf.

a.grahn
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Fr 15. Jan 2010, 13:03

Beitrag von a.grahn »

Flo75 hat geschrieben:Grundsätzlich will ich eigentlich zwei Dinge erreichen:

a) der Leser klickt auf einen Verweis im Text und springt an die entsprechende Stelle in einer Grafik. D.h. ist der Zoom z.B. auf 1000% gestellt, ist eben nur der entsprechende Teil der Grafik zu sehen.

b) der Leser klickt auf den Bereich in der Grafik (z.B. in einem Blockschaltbild) und springt damit zur entsprechenden Textstelle (z.B. die Erklärung des Blocks)

Flo
Also, ich habe da mal was vorbereitet: `zoomtest.tex'. Es hat zwar eine Weile gedauert, aber es kommt ganz ohne JavaScript aus.

Die Anweisungen zwischen den langen Kommentarzeilen `%%%%%...' definieren 3 Befehle:
\marklowerleft{<label>}
markiert die linke untere Ecke des Bildausschnitts,
\markupperright{<label>}
entsprechend dessen rechte obere Ecke. Beide Befehle erwarten einen beliebigen String <label> als Argument, um dem Bildausschnitt einen eindeutigen Namen zu geben. Der so definierte Bildausschnitt bildet das Sprungziel eines Links im Text, welcher mit
\zoomto{<label>}{<Linktext>}
eingebettet wird.

Klickt man auf den <Linktext>, wird der vereinbarte Bildausschnitt soweit vergrößert, dass er noch ins Ausgabefenster des PDF-Betrachters passt.

Klickt man dann auf den vergrößerten Bildausschnitt, springt der PDF-Betrachter wieder zurück in den Text. Der Zoomfaktor wird dabei soweit zurückgesetzt, dass die Seitenbreite des Dokuments in das Ausgabefenster passt.

Im Beispiel habe ich \marklowerleft und \markupperright mit Hilfe der `overpic'-Umgebung auf einem eingebundenen Bild platziert. Die Option `grid' der overpic-Umgebung erleichtert das Auffinden der Eckpunktskoordinaten. Man kann \marklowerleft und \markupperright natürlich auch innerhalb einer tikzpicture-Umgebung verwenden.

Das ganze habe ich im AdobeReader getestet. Andere Betrachter sollten aber auch funktionieren.

Wichtig: Man muss `pdflatex' mindestens zwei Mal laufen lassen, damit die Referenzen aufgelöst werden.

Die Bilddatei `tiger.pdf' sowie das übersetzte Beispiel `zoomtest.pdf' und dessen Quelltext sind angehängt.

Alexander

zoomtest.tex:
\documentclass{article}
\usepackage[abs]{overpic}
\usepackage[pdfstartview=FitH]{hyperref}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\InputIfFileExists{\jobname.zom}{}{}
\newwrite\zoomdat
\immediate\openout\zoomdat=\jobname.zom
\def\marklowerleft#1{%
  \pdfsavepos%
  \write\zoomdat{%
    \string\expandafter\string\def\string\csname\space #1.llx\string\endcsname{%
      \the\pdflastxpos}%
    \string\expandafter\string\def\string\csname\space #1.lly\string\endcsname{%
      \the\pdflastypos}%
  }%
  \ifcsname  #1.llx\endcsname\ifcsname  #1.urx\endcsname%
  \pdfdest name {#1.to} fitr width \numexpr
    \csname #1.urx\endcsname-\csname #1.llx\endcsname\relax sp height \numexpr
    \csname #1.ury\endcsname-\csname #1.lly\endcsname\relax sp
  \immediate\pdfannot width \numexpr
    \csname #1.urx\endcsname-\csname #1.llx\endcsname\relax sp height \numexpr
    \csname #1.ury\endcsname-\csname #1.lly\endcsname\relax sp {%
      /Subtype/Link/H/N/Dest (#1.back)
      /Border [0 0 0]
  }% 
  \fi\fi% 
}
\def\markupperright#1{%
  \pdfsavepos% 
  \write\zoomdat{%
    \string\expandafter\string\def\string\csname\space #1.urx\string\endcsname{%
      \the\pdflastxpos}%
    \string\expandafter\string\def\string\csname\space #1.ury\string\endcsname{%
      \the\pdflastypos}%
  }%
}
\def\zoomto#1#2{%
  \leavevmode%
  \raisebox{\baselineskip}[0pt][0pt]{\pdfdest name {#1.back} fith}%
  \pdfstartlink user {%
    /Subtype /Link
    /Border [\@pdfborder]%
    /C [\@linkbordercolor]%
    /H/N%
    /Dest (#1.to)%
  }\strut#2%
  \pdfendlink%
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

Das \zoomto{auge}{Auge} des Tigers.

\begin{center}
\begin{overpic}[grid,scale=0.5,unit=1bp]{tiger.pdf}
  \put(110,180){\marklowerleft{auge}}
  \put(140,200){\markupperright{auge}}
\end{overpic}
\end{center}

\end{document}
Dateianhänge
zoomtest.tex
Quelltext des Beispiels.
(1.89 KiB) 543-mal heruntergeladen
zoomtest.pdf
Fertig übersetztes Beispiel.
(43.42 KiB) 454-mal heruntergeladen
tiger.pdf
Bilddatei
(33.61 KiB) 342-mal heruntergeladen

Antworten