In manchen besonderen Fällen möchte ich Grafiken und Text-Boxen an bestimmten absoluten Positionen einer Seite anzeigen, ohne dass der restliche Text auf der Seite das beeinflusst. Wie geht das mit LaTeX? Bisher hatte ich mit \vspace und \hspace herumgeschoben, bis es passte.

Ich brauche es zwar gerade für eine beamer-Präsentation und wäre auch an beamer-spezifischer Lösung interessiert, doch eben auch ganz allgemein für LaTeX-Dokumente. So könnte ich z.B. Institut-Logo und Meta-Informationen auf festen Stellen der Seiten platzieren, ggf. kombiniert mit fancyhdr-Befehlen für "je Seite".

Hier ein Beispiel - ich wollte eine Grafik 3 cm von oben und 2 cm von links beginnend platzieren, und den Text 6 cm von oben und 4 cm von links. Evtl. geht es ja für beides in der gleichen Weise, dann reicht mir natürlich ein Tipp für das Platzieren eines Elements. Sorry wenn das Beispiel zu langweilig generisch ist.

\PassOptionsToPackage{demo}{graphicx}
\documentclass{beamer}
\begin{document}
\begin{frame}
\includegraphics{diagramm}

\fbox{Ein Text}
\end{frame}
\end{document}

Wie kann ich mit LaTeX absolut positionieren?

gefragt 20 Jul '13, 07:30

jan12's gravatar image

jan12
760172732
Akzeptiert: 66%

bearbeitet 14 Aug '13, 11:23

saputello's gravatar image

saputello
18.4k22352

TikZ bietet die Node current page, die man verwenden kann, um Dinge absolut auf einer Seite zu positionieren. Die Pakete textpos und eso-pic bieten ebenfalls Möglichkeiten.

(20 Jul '13, 08:05) Clemens

@Clemens Sorry, dass ich Dir die Antwort geklaut habe, ich hatte die schlicht erstellt, während Du den Kommentar verschickt hast. eso-pic hat bei meinen Tests übrigens mit beamer nicht funktioniert. Es gab zwar keine Fehlermeldung, aber die Grafik war selbst dann nicht zu sehen, wenn ich sie mit \AtPageCenter mitten auf die Seite platziert habe.

(20 Jul '13, 08:34) saputello

@saputello macht gar nichts :)

(20 Jul '13, 08:37) Clemens

Normalerweise würde man das entweder mit dem Paket eso-pic oder textpos machen. Allerdings haben diese das Problem, dass beamer normalerweise mit einem nicht transparenten Hintergrund arbeitet. Diesen transparent zu machen ist nur dann eine Option, wenn er tatsächlich leer ist. Allerdings bietet eso-pic auch die Möglichkeit, das Bild im Vordergrund statt im Hintergrund auszugeben:

\PassOptionsToPackage{demo}{graphicx}
\documentclass{beamer}
\usepackage{eso-pic,picture}
\begin{document}
\begin{frame}
  \AddToShipoutPictureFG*{%
    \AtPageUpperLeft{%
      \put(3cm,-2cm){%
        \makebox(0,0)[lt]{\includegraphics{demo}}%
      }%
    }%
  }%
  \fbox{Ein Text}
\end{frame}
\end{document}

Das Paket picture wird im Beispiel verwendet, um die Anweisung \LenToUnit, die eso-pic bereit stellt, einzusparen. Es ermöglicht, bei den Grafikbefehlen – im Beispiel \put – direkt Längenangaben an Stelle von Vielfachen von \unitlength zu verwenden. Die \makebox-Anweisung wird verwendet, um die Grafik mit der linken oberen Ecke zur angegebenen Koordinate auszurichten. Man hätte stattdessen auch das Paket adjustbox verwenden können. Näheres ist dessen Anleitung zu entnehmen.

Soll die Grafik auf jeder Seite erscheinen, lässt man den Stern bei \AddToShipoutPictureFG weg. Zu weiteren Funktionen des Pakets sei auf dessen Anleitung verwiesen. Dort ist auch angegeben, wie man alles Vordergrundmaterial wieder löschen kann.

Da beamer ohnehin bereits pgf verwendet, bietet es sich aber an, das ganze mit TikZ zu lösen. Eine von unzähligen Möglichkeiten dafür wäre beispielsweise:

\PassOptionsToPackage{demo}{graphicx}
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}
\tikz[overlay, remember picture] {
  \coordinate (picture) at ($(current page.north west)+(3cm,-2cm)$);
  \node [below right] at (picture) {\includegraphics{demo}};
}% <-- Das ist wichtig!
\fbox{Ein Text}
\end{frame}
\end{document}

Ich nutze dabei einerseits die overlay-Eigenschaft, andererseits current page, um Material relativ zur aktuellen Seite zu platzieren. Nach zwei LaTeX-Läufen erhält man dann das Ergebnis:

Ergebnisseite

Will man auf die calc Bibliothek verzichten, so kann man übrigens auch

\draw (current page.north west) ++(3cm,-2cm) coordinate (picture);
\node[anchor=north west] at (picture) {\includegraphics{demo}}

schreiben. Bei TikZ führen bekanntlich viele Wege nach Rom.

Will man bei beamer eine Grafik auf allen Seiten haben, so sollte man übrigens ein passendes theme erstellen.

Alle gezeigten Lösungen funktionieren auch mit anderen Klassen. Allerdings ist es bei anderen Klassen eventuell sinnvoller die Grafik in den Hintergrund zu verschieben. Das geht, indem man bei der eso-pic-Lösung \AddToShipoutPictureFG durch \AddToShipoutPictureBG ersetzt.

Das oben nur genannte Paket textpos bietet mit Option overlay ebenfalls die Möglichkeit, absolut positioniertes Material im Vordergrund statt im Hintergrund auszugeben. Für die konkrete Verwendung dieses Pakets sei auf dessen Anleitung verwiesen.

Permanenter link

beantwortet 20 Jul '13, 08:33

saputello's gravatar image

saputello
18.4k22352

bearbeitet 14 Aug '13, 11:23

Wenn man \draw (current page.north west) ++(3cm,-2cm) node[anchor=north west] {\includegraphics{demo}}; verwendet, kann man auf die calc library verzichten.

(20 Jul '13, 08:39) Clemens

@Clemens: Stimmt. Ich fand es einfach nur schöner, die Koordinate getrennt von der Abbildung anzugeben. So kommst Du doch noch zu einer Antwort. ;)

(20 Jul '13, 08:45) saputello

@saputello Geht auch: \draw (current page.north west) ++(3cm,-2cm) coordinate (picture); \node[anchor=north west] at (picture) {\includegraphics{demo}}; Eine neue Antwort wäre nur eine Variation Deiner Antwort... wäre das sinnvoll?

(20 Jul '13, 08:54) Clemens

eso-pic funktioniert meiner Erfahrung nach tadellos mit beamer - allerdings muss man den Hintergrund transparent machen, um was zu sehen. \setbeamercolor{background canvas}{bg=}.

(20 Jul '13, 13:08) Ulrike Fischer

Mit oder ohne calc kann man das ganze auch ohne den zusätzlichen Pfad lösen: \tikz[overlay, remember picture] \node [below right] at ([shift={(3cm,-2cm)}] current page.north west) {\includegraphics{demo}};% (das % ist hier immer noch genauso notwendig wie mit der { }-Variante). (Ein \coordinate (…) at ([…] …); ist natürlich immer noch möglich, wenn es denn unbedingt sein muss.)

(25 Jul '13, 23:54) Qrrbrbirlbel
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×94
×31
×24
×14

Frage gestellt: 20 Jul '13, 07:30

Frage wurde angeschaut: 14,329 Mal

Zuletzt aktualisiert: 14 Aug '13, 11:23