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:
markiert die linke untere Ecke des Bildausschnitts,
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}