PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text vertikal zentrieren



F.L.
12-06-2012, 14:42
Hallo!

Ich würde gerne den Text auf einer Seite horizontal zentrieren. In einem anderen Thread habe ich die folgende Lösung gefunden:


\documentclass{article}

\begin{document}

\vspace*{\fill}
Hello World!
\vfill

\end{document}

Wenn ich dies in meinem Dokument anwende, ist der Abstand zum oberen Seitenrand jedoch größer als zum unteren. Und bei DIN-A7 sieht man das doch leider sehr deutlich.

Hat das vielleicht etwas mit dem Seitenkopf zu tun, und wenn ja, kann ich diesen komplett entfernen, sodass der Text wirklich richtig zentriert ist?

Der Header meines Dokuments sieht folgendermaßen aus, vielleicht liegt darin ja schon das Problem:


\documentclass[paper=a7, landscape, pagesize, fontsize=10pt, DIV=12]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{betababel}

\setlength\parindent{0pt}
\linespread{1.2}
\pagestyle{empty}

rstuby
12-06-2012, 14:49
Also allein an den Rändern liegt es schon mal definitiv nicht, weil der Text bei mir auch mit DIV=1000 und headinclude=false noch deutlich merkbar tiefer als in der Mitte sitzt.

UPD:
So seht es bei mir mittiger aus:
\documentclass[paper=a7, landscape, pagesize, fontsize=10pt, DIV=1000, headinclude=false]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{betababel}

\setlength\parindent{0pt}
\linespread{1.2}
\pagestyle{empty}

\begin{document}
\vspace*{\fill}
Hello World!
\vspace*{.5\textheight}

\end{document}

rstuby
12-06-2012, 14:57
So vielleicht?

\documentclass[paper=a7, landscape, pagesize, fontsize=10pt, headinclude=false, DIV=12]{scrartcl}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{betababel}

\setlength\parindent{0pt}
\linespread{1.2}
\pagestyle{empty}

\begin{document}
\newgeometry{top=0pt,bottom=0pt}
\vspace*{\fill}
Hello World!
\vspace*{.5\textheight}
\clearpage
\restoregeometry
normaler Text mit normalen Rändern oben und unten

\end{document}

F.L.
12-06-2012, 15:19
Hmm, da bekomme ich nur folgende Fehlermeldung:


Undefined control sequence \newgeometry
Undefined control sequence \restoregeometry

rstuby
12-06-2012, 15:24
Hast du auch \usepackage{geometry} eingebunden? Bei mir (texlive, ich arbeite heute nicht und bin zu Hause) läuft es fehlerfrei durch. Vielleicht musst du bei einem anderen System die Ränder in der Präambel (NACH \usepackage{geometry}) erst explizit mit \geometry{top=..., bottom=..., right=..., left=...} angeben?

F.L.
12-06-2012, 15:53
War ein Ubuntu-Internes Problem, dass ich nun gelöst habe.

Allerdings funktioniert diess Workaround nicht mehr, wenn ich mehr als zwei-drei Zeilen Text pro Seite eingebe.

Abgesehen davon würde ich das Format auch lieber einmal definieren und nicht für jede Seite einzeln, da sonst das Dokument auf dauer sehr unübersichtlich wird...

rstuby
12-06-2012, 15:57
Wenn das ganze Dokument oben und unten randlos sein darf, kannst du es ja auch so mit \geometry im Vorspann definieren.

Dass das untere \vspace nicht mehr passt, wenn der Text mehrzeilig wird, ist mir auch gerade aufgefallen. Und natürlich wäre es am schönsten, das Zentrieren auch zu automatisieren, da hast du Recht. Ich weiß aber nicht, wie man das machen könnte :-(

rstuby
12-06-2012, 16:15
Das Einzige, was mir zum Zentrieren für mehrzeilige Texte einfällt, ist, sie in Gleitumgebungen zu packen.

\documentclass[paper=a7, landscape, pagesize, fontsize=10pt, headinclude=false, DIV=12]{scrartcl}
\usepackage{geometry}
\geometry{top=0pt,bottom=0pt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{betababel}

\setlength\parindent{0pt}
\linespread{1.2}
\pagestyle{empty}

\begin{document}

\begin{figure}
Hello World!
\end{figure}
\clearpage
\begin{figure}
Hier steht ein mehrzeiliger Text, was bei DIN A7 schnell zu bewerkstelligen ist.
\end{figure}

\clearpage
\begin{figure}
test\\text\\text\\test\\text\\test\\text\\text\\te st\\text\\text
\end{figure}
\end{document}

Das widerspricht natürlich deinem Automatisierungswunsch und normalerweise bin ich auch die Letzte, die Gleitumgebungen empfiehlt, wo nichts gleiten soll... Aber ein \clearpage ist bei dir ja wohl sowieso jedes Mal angebracht, und das erzwingt ja auch die Ausgabe aller noch anstehenden Gleitumgebungen...
Aber schöner wär's, wenn noch einer eine bessere Idee hätte.

hakaze
12-06-2012, 17:16
Eventuell ist topskip auch der Schuldige: siehe tex.stackexchange... (http://tex.stackexchange.com/questions/7286/how-to-make-an-exact-vertically-centered-object-in-a-page)

Festus
12-06-2012, 17:21
Also ich find, so sieht's ganz gut aus


\documentclass[paper=a7, landscape, pagesize, fontsize=10pt, DIV=12, headinclude=false]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[ngerman]{babel}

\setlength\parindent{0pt}
\linespread{1.2}
\pagestyle{empty}

\begin{document}
\vspace*{\stretch{1}}
Schauen wir mal ob der ganze Text auch noch schön zentriert ist wenn er mehrzeilig wird!
\vspace*{\stretch{1}}

\end{document}

F.L.
14-06-2012, 00:33
Vielen Dank für die Tips! Ich werde einfach mal die verschiedenen Optionen ausprobieren und sehen, was sich letztlich für mein Vorhaben als Praxistauglich herausstellt!

u_fischer
14-06-2012, 17:55
Also neben \topskip hat auch noch die Höhe des Textes selbst Einfluss auf die Platzierung:


\documentclass[a4paper]{article}
\usepackage[margin=0pt]{geometry}
%\topskip=100pt
\topskip=0pt

\begin{document}
\vspace*{\fill}
{\rule{1cm}{4cm}xxxxxxx}
\vfill

\newpage
\vspace*{\fill}
\raisebox{0pt}[0pt][0pt]{\rule{1cm}{4cm}xxxxxxx}
\vfill

\end{document}


Ich würde mich aber auf dieses ganze geometry-Theater nicht einlassen, sondern eso-pic benutzen:


\documentclass[a4paper]{article}
\usepackage{eso-pic}
\begin{document}
\AddToShipoutPictureFG*{%
\AtPageCenter{\raisebox{-0.5\height}{\makebox[0pt]{Hallo Welt}}}}

\mbox{} %Seite erzeugen
\end{document}