
下面的範例程式碼顯示了我的\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{..\\[..] ...}
但這也是一種駭客行為。因此,這樣的編碼方式可能是實現所需結果的最簡單方法(只要知道這些命令的副作用)。