「p」列(表格)中的 \hbox 破壞行佈局

「p」列(表格)中的 \hbox 破壞行佈局

下面的範例程式碼顯示了我的\vertgap命令的一個問題,該命令只是為了在將強制參數封裝在 an 中\hbox(對於高內容)之後在強制參數的上方和下方添加一些空間。它在 - 類型列中工作正常l,但顯然不適用於p- 類型列。在我的第一次嘗試中,我沒有意識到這一點,因為它可以工作longtable(注意:範例程式碼缺少標題和腳註),也不會忽略自動插入\centering

我的目標可以看出longtable:所有三個表行具有相同的高度。也有可能實現這種行為tabular嗎?

\hbox附錄:在 -type 欄位中簡單使用p足以顯示問題。

\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}

答案1

\hbox是一個 TeX 原語,不應該在 LaTeX 中使用,除非您詳細了解它是如何工作的(您可能會在顏色或位置等方面遇到麻煩 --- 正如您所做的那樣)。要使用的相應 LaTeX 命令是\mbox,它可以解決您的問題。

主要原因是,\hbox如果在垂直模式下遇到,則不會開始段落,它只是簡單地左對齊添加。因此\centering沒有效果。\mbox確保該框成為段落的一部分。

更新

也許我應該補充一點\kern\vbox, \vtop, ,也是如此,即它們不支援 LaTeX“文檔級”命令。當然,所有這些都是建置套件等所需的命令,但在使用者層級上最好避免使用它們。

話雖如此,實際上並沒有 LaTeX 等效項,因為\vtop{\kern...\hbox{#1}\kern...}它會產生一個與內部水平盒一樣寬的垂直盒。 LaTeX 只提供具有定義寬度的垂直框,例如,\parbox當您在定義寬度內開始段落時,無論內容如何,都將是框的寬度。好吧,我想人們可以使用,\shortstack{..\\[..] ...}但這也是一種駭客行為。因此,這樣的編碼方式可能是實現所需結果的最簡單方法(只要知道這些命令的副作用)。

相關內容