%20zerst%C3%B6rt%20Zeilenlayout.png)
Der folgende Beispielcode zeigt ein Problem mit meinem \vertgap
Befehl, der lediglich dazu gedacht ist, oberhalb und unterhalb des obligatorischen Arguments etwas Platz hinzuzufügen, nachdem es in ein \hbox
(für hohe Inhalte) gekapselt wurde. Es funktioniert gut in l
Spalten vom Typ -, aber offensichtlich nicht in p
Spalten vom Typ -. Bei meinen ersten Versuchen habe ich das nicht erkannt, weil es in (Hinweis: dem Beispielcode fehlen Kopf- und Fußzeilen) funktioniert longtable
, ohne das automatisch eingefügte zu ignorieren \centering
.
Mein Ziel ist in zu sehen longtable
: Alle drei Tabellenzeilen haben die gleiche Höhe. Ist es möglich, dieses Verhalten tabular
auch in zu erreichen?
Nachtrag: Die einfache Verwendung von \hbox
in einer p
Spalte vom Typ reicht aus, um das Problem aufzuzeigen.
\documentclass{article}
\usepackage{longtable}
\usepackage{array}
\newcommand{\vertgap}[1]{\hbox{\vbox{\kern0.25ex\vtop{\hbox{#1}\kern0.25ex}}}}%
%\newcommand{\vertgap}[1]{\hbox{\vbox{\hrule height0.25ex\vtop{\hbox{#1}\hrule height0.25ex}}}}%
% The commented-out command above shows the inserted gaps - these seem to be ok.
\begin{document}
\begin{tabular}{|l|>{\centering}p{2in}|l|}
\hline%
aaaa: & 4711-0815 & any\\
\hline%
aaa: & \vertgap{0815} & any\\
\hline%
aa: & 4711 & any\\
\hline%
\end{tabular}
\begin{longtable}{|l|>{\centering}p{2in}|l|}
\hline%
aaaa: & 4711-0815 & any\\
\hline%
aaa: & \vertgap{0815} & any\\
\hline%
aa: & 4711 & any\\
\hline%
\end{longtable}
\end{document}
Antwort1
\hbox
ist ein TeX-Grundelement und sollte nicht in LaTeX verwendet werden, es sei denn, Sie wissen im Detail, wie es funktioniert (Sie können bei Dingen wie Farben oder Platzierung in Schwierigkeiten geraten – wie bei Ihnen). Der entsprechende zu verwendende LaTeX-Befehl lautet \mbox
und behebt Ihr Problem.
Der Hauptgrund ist, dass \hbox
im vertikalen Modus kein Absatz beginnt, sondern einfach linksbündig hinzugefügt wird. \centering
Hat daher keine Auswirkung. \mbox
stellt sicher, dass die Box Teil des Absatzes wird.
Aktualisieren
Vielleicht sollte ich hinzufügen, dass das Gleiche für \kern
, \vbox
, \vtop
, gilt, d. h., es handelt sich nicht um unterstützte LaTeX-Befehle auf „Dokumentebene“. All dies sind natürlich Befehle, die man zum Erstellen von Paketen usw. benötigt, aber auf Benutzerebene sollten sie vorzugsweise vermieden werden.
Allerdings gibt es in LaTeX kein Äquivalent dafür, \vtop{\kern...\hbox{#1}\kern...}
da dies eine vertikale Box erzeugt, die so breit ist wie die hbox darin. LaTeX bietet nur vertikale Boxen mit einer definierten Breite, z. B. \parbox
und sobald Sie einen Absatz innerhalb der definierten Breite beginnen, wird die Breite der Box unabhängig vom Inhalt beibehalten. Nun, man könnte \shortstack{..\\[..] ...}
wohl verwenden, aber das wäre auch eine Art Hack. Daher ist die Codierung in dieser Form wahrscheinlich der einfachste Weg, um die gewünschten Ergebnisse zu erzielen (solange man die Nebenwirkungen dieser Befehle kennt).