Explizite Positionierung in LaTeX
Mit LaTeX lassen sich zahlreiche Texte und Werke setzen (auch wenn für einige LaTeX ggf. nicht die erste Wahl ist). Für manche Aufgaben benötigt man eine explizite Positionierung von Objekten. Als Beispiel sei die Postererstellung genannt, wo man die einzelnen Textblöcke frei auf dem Blatt verteilen möchte. Der Artikel soll zwei Möglichkeiten für diese Positionierung aufzeigen.
Einleitung
Für die explizite Positionierung bzw. allgemein für das Setzen von Elementen in einem Gitter gibt es für LaTeX zahlreiche Pakete, von denen viele aber sehr speziell sind und nicht allgemein angewendet werden können.
Es werden daher in diesem Artikel nur die Pakete erwähnt, die eine echte explizite Positionierung erlauben. Dies kann entweder in der Form „Setze mir ein beliebiges LaTeX-Element an eine bestimmte Position (X,Y) auf der Seite“ oder auch „Setze ein beliebiges LaTeX-Element relativ zu anderen auf die Seite“.
textpos
Das LaTeX-Paket textpos wurde von Norman Gray erstellt, existiert bereits seit 1999 und wird immer noch gepflegt. Die einfachste Anwendung sieht so aus:
\documentclass{scrartcl} \usepackage[absolute]{textpos} \begin{document} Das ist der normale Text der Seite, der normalerweise nicht benutzt wird. \begin{textblock*}{29mm}(45mm,80mm) Hier steht ein kleines bisschen mehr Text als in die ganze Box passt. \end{textblock*} \end{document}
Durch die Option absolute des Paketes hat man die Möglichkeit, absolute Positionen für die ein einzelnen Textblöcke anzugeben. Ohne die Option beziehen sich alle Positionsangaben auf die aktuelle Position auf der Seite. In dem Beispiel also auf den Absatz nach „… wird.“
Die textblock*-Umgebung stellt danach einen Textblock an der absoluten Position 45 mm (horizontal) und 80 mm (vertikal) auf der Seite dar, wobei ab der oberen linken Ecke gemessen wird. Der Block selbst hat dann eine Breite von 29 mm. Die Höhe der Box wird durch den Inhalt bestimmt, der per Standard im Blocksatz gesetzt wird. Der Inhalt der Box ist beliebig und kann auch Bilder oder anderes enthalten.
Wenn man die Paket-Option showboxes mit angibt, wird die jeweilige Box noch umrahmt. Wenn man das bei obigem Beispiel macht, sieht man auch, dass es ein kleines Problem beim Umbrechen des Textes gibt, da dieser über den Rand hinausgeht. Dies ist bei Blocksatz und solch kleinen Boxen normal, da der maximale Abstand für Wörter sonst nicht eingehalten werden könnte. Vergrößert man die Box oder nutzt \raggedright, \raggedleft oder \centering innerhalb der Box, gibt es keine Probleme mit Umbruch und Trennung des Textes.
Weitere Möglichkeiten des Paketes textpos sind, dass man ein Gridlayout über \TPGrid angeben kann. Über die Nicht-Stern-Umgebung textblock ist es dann möglich, anhand dieses Grids die Boxen zu positionieren. Zusätzlich lässt sich der Ursprung in der linken oberen Ecke über \textblockorigin verschieben, wenn man beispielsweise einen Rand mit beachten möchte. Alle weiteren Funktionen kann man in der Dokumentation nachlesen.
grid-system
grid-system ist ein relativ neues Paket von Marcus Bitzl. Bei der Erstellung des Paketes wurde sich dabei an den Layoutmöglichkeiten von Cascading Style Sheets (CSS) orientiert. Das Paket ermöglicht die Darstellung von mehrspaltigen Textblöcken, die zueinander ausgerichtet sind.
Ein Minimalbeispiel:
\documentclass{scrartcl} \usepackage{grid-system} \begin{document} \begin{row}{3}{2} \noindent% \begin{cell}{1} Das ist ein kleiner Textblock mit einer Spalte an sinnlosem Text. \end{cell} \begin{cell}{2} Dieser Textblock nimmt gleich zwei Spalten fuer sich in Beschlag. \end{cell} \end{row} \end{document}
Das Paket stellt zwei neue Umgebungen row und cell zur Verfügung. row erhält dabei zwei Argumente: zum einen die Anzahl an Spalten, die der gesamte Absatz haben soll und zum anderen die Anzahl an dargestellter Zellen. Die Angabe der Zellen ist dabei notwendig, um vorab bestimmen zu können, wie breit jede einzelne Zelle sein soll.
Die Umgebung cell stellt danach eine Zelle dar, die sich auch über mehrere Spalten erstrecken kann, wie das erste Argument angibt. Die Summe der Zellwerte (erster Wert von cell) muss dabei immer gleich der Anzahl an definierten Spalten (erster Wert der row-Umgebung) sein.
Mit grid-system kann man demnach keine absolute Elemente positionieren, aber zur Postergestaltung eignet sich das Paket gut, solange die platzierten Elemente alle gleich hoch sind. Ansonsten wäre textpos vorzuziehen.
Eine Besonderheit ist aktuell (Dezember 2013) noch, dass entweder \parindent den Wert 0 haben muss oder vor die erste Zelle ein \noindent geschrieben werden muss. Andernfalls ragen die definierten Spalten um den in \parindent definierten Werte in den rechten Rand hinein. Eine korrigierte Version steht seit Januar 2014 zur Verfügung.
Comments
Display comments as Linear | Threaded
tux. on :
Poster mit LaTeX?
Na gut, kann man machen...
Dee on :
Das ist sogar Standard in vielen wissenschaftlichen Bereichen, dass die Poster für Kongresse mit LaTeX erstellt werden. Für die DANTE-Tagung gehört es sogar zum guten Ton, alles andere wäre seltsam. Mit anderen Programmen bekäme man das auch gar nicht hin (oder nur über kleinere Umwege). es gibt auch zahlreiche Dokumentenklassen, die speziell für Poster gedacht sind, da man da ja keine Seitenränder hat etc. Ist also völlig normal ...
tux. on :
Muss ich mal ausprobieren irgendwann. Bin noch neu bei LaTeX ... :)
Rayman on :
Ich hatte damals zu meiner Diplomarbeit auch ein Poster mit LaTeX erstellt und ich muss sagen, das Ergebnis sah doch deutlich professioneller aus als die Werke vieler Kommilitonen (ich weiß, Eigenlob stinkt). Diese haben meines Wissens nach alle mit Powerpoint gearbeitet.
Es lohnt sich auf jeden Fall, da etwas Zeit zu investieren.
tux. on :
Für Präsentationen hab' ich Prezi schätzen gelernt - klar, nutzt sich auch ab, aber eine Abwechslung ist es allemal.
Bei LaTeX stört mich der hohe Aufwand bei der Textformatierung, wenn man halt mal große fette blaue Überschriften in Verdana setzen möchte. (So als Beispiel.) Das ist es nicht immer wert (außer man macht's halt häufiger und hat Makros dafür).
Dee on :
> Für Präsentationen hab' ich Prezi schätzen gelernt
Meine Präsentationen (siehe http://www.deesaster.org/ unter "Vorträge" links) mache ich alle mit LaTeX. Das klappt ohne Probleme.
> Bei LaTeX stört mich der hohe Aufwand bei der Textformatierung
Dafür ist LaTeX ja auch nicht gedacht. LaTeX ist dafür da, dass man normalerweise sagt, was man haben will (Aufzählung, Überschrift, Codelisting etc.) und nur an einer einzigen Stelle definiert, wie es aussieht, damit es überall gleich aussieht.
Der Wunsch, etwas einmalig schnell mal in einer beliebigen Schrift darzustellen, ist aber sowieso eher ungewohnt. Den Wunsch hatte ich selbst in anderen Textprogrammen noch nicht. In der Regel soll ja alles einheitlich sein.
tux. on :
Jö, aber manchmal hätte man's halt gern mal farbig hervorgehoben. ;-)
Dee on :
Also das ist ne Kleinigkeit: \textcolor{red}{Hier Dein Text.} Wenn man ein Frontend wie Lyx nimmt, dann sollte das sogar ähnlich wie in LibreOffice aussehen, wo Du den Text mit der Maus markierst und dann als Farbe rot anwählst. Ob das schneller geht, ist da die Frage. ;)
tux. on :
LyX nervt, kommt mit .tex-Dateien nicht einfach zurecht... :-)