PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hyperlinks in einem Bild



Quaneu
11-08-2020, 14:36
Hallo zusammen,

ich habe habe folgende Frage bzw. folgendes Problem:

Ich will ein Bild (pdf) in ein Dokument hinzufügen. Des Weiteren würde ich gerne Hyperlinks in diesem Bild haben. Dazu benutze ich "overpic". D.h. ich bette das Bild ein und setze die Hyperlinks an den gewünschten stellen oben drauf. Leider ist mir noch nicht ganz klar welche Koordinaten ich nehmen muss, bzw. wie ich diese umrechne.

Dies ist der Code für so ein Bild:


\newcommand{\overlaypicture}[2]{%
\begin{figure}[H]%
\begin{center}%
\noindent\begin{overpic}[width=\ScaleIfNeeded,height=\ScaleIfNeededHeight,k eepaspectratio]{#1}%

\newcommand{\lineHierarchy}{\put(\x,\y){\hyperlink {\hierarchyref}{\makebox(\w,\h){}}}}%

\end{overpic}
\end{center}%
\caption{#2}%
\end{figure}%
}


\x, \y, \w und \h werden berechnet und über gdef gesetzt.

Hier ein Ausschnitt aus der pdf-Datei, die ich einfügen will:


EI Q
1400 3052 70 70 re f


Diese Koordinaten kann ich berechnen, d.h. ich will z.B. an dieser Stelle ein Hyperlink. Wenn ich diese Koordinaten jedoch verwende, kommt leider der HyperLink an einer falschen Position und Größe.

Daher meine Frage welche Einheiten müssen \x, \y, \w und \h haben bzw. auf was müssen sie sich beziehen?

Schöne Grüße und schon mal vielen Dank
Quaneu

rais
11-08-2020, 22:18
Daher meine Frage welche Einheiten müssen \x, \y, \w und \h haben bzw. auf was müssen sie sich beziehen?

Das hängt erstmal davon ab, mit welcher Option Du das overpic-Paket lädst.
Generell kannst Du als Einheit \unitlength verwenden.
Wenn Du das overpic-Paket ohne Option lädst, wird \unitlength als 1 % von der größten Länge berechnet, bei Portrait-Format des Bildes entspräche also 100 % der Bildhöhe und \unitlength wäre dann ein Hundertstel davon. Bei Landscape-Format des Bildes wird \unitlength zu 1 % der Bildbreite.
Wenn Du das overpic-Paket mit permil-Option lädst, wird \unitlength zu 1/1000 der größeren Bildkante.
Wenn Du das overpic-Paket mit abs-Option lädst, kannst Du \unitlength selbst festlegen (auch als unit-Option der overpic-Umgebung).
Das Einzige, das bei allen Optionen gleich bleibt, ist (0,0): bei der overpic-Umgebung ist das die linke, untere Ecke.

In der Testphase kannst Du der overpic-Umgebung ruhig die grid-Option mitgeben, dann kannst Du anhand der damit angegebenen Werte schon abschätzen, wie Du Deine Koordinaten setzen mußt, vgl. `texdoc overpic'.

VG

Quaneu
12-08-2020, 09:44
Vielen Dank füe deine Hilfe und Hinweise.

Leider zeigt er mir das Grid nicht an, bin da grad noch am probieren. Habe jetzt auch auch "abs" verwendet.

\usepackage[grid, abs, unit=1pt]{overpic}

Was mir noch nicht ganz klar ist sind die Koordinaten an sich. Ich habe das pdf, das ich über overpic einbinde. In diesem ist z.b. ein Rechteckt gezeichnet (1400 3052 70 70 re f). Wenn ich diese Koordinaten benutze bekomme ich leider an einer falschen Stelle den Hyperlink. Mir ist auch nicht ganz klar, wenn das pdf ja skaliert wird ([width=\ScaleIfNeeded,height=\ScaleIfNeededHeight,k eepaspectratio]) ob sich das auch auf die put Anweisungen auswirkt, oder ob ich diese selbst umrechnen muss.

Update:
Ich darf doch nicht abs verwenden, da soweit wie ich es gesehen haben, diese nicht angepasst werden, wenn das pdf in seiner Größe geändert wird. Wobei die Frage ist, welche Bildbreite bzw. Bildhöhe gemeint ist, die org. oder die skalierte?

rais
12-08-2020, 22:45
Leider zeigt er mir das Grid nicht an, bin da grad noch am probieren. Habe jetzt auch auch "abs" verwendet.

\usepackage[grid, abs, unit=1pt]{overpic}

grid ist keine Option, die beim Laden des Pakets Beachtung findet (unit auch nicht).
Overpic kennt hier nur `abs', `percent' (default) oder `permil'. Alle anderen Optionen werden ans graphicx-Paket weitergereicht.


Was mir noch nicht ganz klar ist sind die Koordinaten an sich. Ich habe das pdf, das ich über overpic einbinde. In diesem ist z.b. ein Rechteckt gezeichnet (1400 3052 70 70 re f).

und in konkret welcher Einheit sind diese Koordinaten?


Wenn ich diese Koordinaten benutze bekomme ich leider an einer falschen Stelle den Hyperlink.

Ohne Paketoption gilt `percent', also bei \put etc. eine 100 entspricht der größten Bildkante.


Mir ist auch nicht ganz klar, wenn das pdf ja skaliert wird ([width=\ScaleIfNeeded,height=\ScaleIfNeededHeight,k eepaspectratio]) ob sich das auch auf die put Anweisungen auswirkt, oder ob ich diese selbst umrechnen muss.

Es gibt hier zwar den einen oder anderen Thread, in dem \ScaleIfNeeded verwendet wird, aber was das Teil bei Dir konkret macht, kann ich nicht beurteilen.
Im overpic-Paket wird's jedenfalls nicht definiert (\ScaleIfNeededHeight auch nicht).


Update:
Ich darf doch nicht abs verwenden, da soweit wie ich es gesehen haben, diese nicht angepasst werden, wenn das pdf in seiner Größe geändert wird. Wobei die Frage ist, welche Bildbreite bzw. Bildhöhe gemeint ist, die org. oder die skalierte?

Diese Frage hast Du Dir doch gerade selbst beantwortet, oder was versteh ich nicht?



\documentclass{article}
\usepackage{overpic}
\usepackage{xcolor}
\begin{document}
\begin{overpic}[width=10cm, grid]{example-image-a}
\put(5,45){\color{blue}\huge\LaTeX}
\put(55,10){\color{red}%
\frame{\the\unitlength}}
\end{overpic}
\end{document}

sollte bei Dir unverändert lauffähig sein (so Du denn das mwe-Paket installiert hast, aus dem die hier verwendete example-image-a-Datei stammt).
Wenn Du hier statt 10 cm eine andere Brete angibst und erneut kompilierst, wirst Du sehen, daß sich \unitlength entsprechend mit ändert (Bei den Texten bleibt nur die jeweils linke untere Ecke relativ zum Bild gleich, das liegt hier aber an den (mehr oder weniger) konstanten Textbreiten).

VG