[parbox] inner postion beeinflusst auch Rand

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

[parbox] inner postion beeinflusst auch Rand

Beitrag von MoonKid »

%% box.tex
\documentclass{scrartcl}

% Sprache
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

% Seitenränder
\usepackage[
    showframe,
    paper=a4paper,
    top=6cm,
    left=1.5cm,
    bottom=0cm,
    right=0cm,
    includehead=false,
    includefoot=false,
    bindingoffset=0mm]{geometry}

% Absatzeinrückung aus
\parindent=0pt

% -- Document --
\begin{document}
\fbox{\parbox[tt][2cm][tt]{4.5cm}{Text}}
\fbox{\parbox[tt][2cm][c]{4.5cm}{\centering{}Text}}
\end{document}
Hier ist zu sehen, dass ich zwei Boxen (zur Hilfe mit fbox visualisiert) der gleichen Größe nebeneinander setze.

Bei der zweiten Box soll der Text horizontal und vertikal zentriert sein. Das ist er auch. Jedoch verschiebt dies auch die Box selbst etwas nach Unten, wie im Vergleich mit der ersten Box zu sehen ist.

Warum ist das so und wie kann ich es verhindern?
XeLaTeX, TeX Live, vim-latexsuite

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Ursache ist die Kombination aus innerer und äußerer Positionierung. Mit dem ersten optionalen Argument t gibst Du vor, dass die jeweilige `\parbox` mit der Grundlinie ihrer ersten Zeile auf der umgebenden Grundlinie eingefügt wird. In der linken Box (mit innerer t Ausrichtung) ist das die Grundlinie unter "Text". In der rechten Box (mit innerer vertikaler Zentrierung) ist es dagegen der obere Rand der \parbox. Sehen kannst Du das, wenn Du zum einen \fboxsep gleich Null setzt und zum anderen in der linken Box und zwischen den Boxen ein \hrulefill einfügst.

Bild
\documentclass{scrartcl} 
\setlength\fboxsep{0pt}

\begin{document} 
\fbox{\parbox[tt][2cm][tt]{4.5cm}{Text\hrulefill}}%
\hrulefill
\fbox{\parbox[tt][2cm][c]{4.5cm}{\centering{}Text}} 
\end{document}

Die einfachste Lösung wäre es, die beiden Boxen vertikal aneinander zu zentrieren, d.h. bei beiden im ersten Argument c anzugeben.
\documentclass{scrartcl}
\usepackage{showframe} 
\setlength\fboxsep{0pt}

\begin{document} 
\fbox{\parbox[c][2cm][tt]{4.5cm}{Text\hrulefill}}%
\hrulefill
\fbox{\parbox[c][2cm][c]{4.5cm}{\centering{}Text}} 
\end{document}
Bild

Wenn Du die äußere Ausrichtung nicht ändern kannst, dann könntest Du in der linken Box am Anfang ein \strut einfügen und dann die rechte Box um \ht\strutbox nach oben schieben.
\documentclass{scrartcl}
\usepackage{showframe} 
\setlength\fboxsep{0pt}

\begin{document} 
\fbox{\parbox[tt][2cm][tt]{4.5cm}{\strut Text\hrulefill}}%
\hrulefill
\fbox{\raisebox{\ht\strutbox}{\parbox[tt][2cm][c]{4.5cm}{\centering{}Text}}} 
\end{document}
Und dann gibt es da noch das Paket adjustbox, dass sich dafür eventuell auch verwenden lässt.

Gruß
Elke
Dateianhänge
gl_parboxausr.PNG
gl_parboxausr.PNG (2.34 KiB) 1593 mal betrachtet
gl_parboxausr1.PNG
gl_parboxausr1.PNG (2.47 KiB) 1607 mal betrachtet
Zuletzt geändert von esdd am Sa 24. Jan 2015, 15:01, insgesamt 1-mal geändert.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

esdd hat geschrieben:Ursache ist...
Ok, verstehe ich gerade so. Auch wenn mir der Grund bzw. die Design-Überlegung dahinter klar ist.
esdd hat geschrieben:Die einfachste Lösung wäre es, die beiden Boxen vertikal aneinander zu zentrieren, d.h. bei beiden im ersten Argument c anzugeben.
Die cm sind in meinem Dokument sehr wichtig, da es später in ein vorgedrucktest (also auf Papier vorhandenem) Formular hineingedruckt werden soll. Deswegen ist der obere Rand (6cm) auch so wichtig. Beeinflussen diese Ausrichtungen irgendwie diesen Rand?
XeLaTeX, TeX Live, vim-latexsuite

Besserwisser

Beitrag von Besserwisser »

Für Formulare, bei denen die genaue Position auf dem Papier wichtig ist, würde ich ja eher textpos, eso-pic, scrlayer o. ä. verwenden.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Danke, ich werde mir das in Zukunft mal anschauen.

Jedoch merke ich gerade wieder, dass es keinen Sinn hat unter Linux einen Canon-Drucker laufen zu lassen. Es gibt immer minimale Skalierungen bzw. Verschiebungen hier, egal welcher PDF-Reader und welche Einstellungen. Milimetergenaues Drucken ist unmöglich.

Und Lust auf Windows zu switchen, nur um zu Drucken habe ich da auch nicht.
XeLaTeX, TeX Live, vim-latexsuite

Antworten