![使用 tabu 包进行垂直和水平对齐](https://linux22.com/image/256332/%E4%BD%BF%E7%94%A8%20tabu%20%E5%8C%85%E8%BF%9B%E8%A1%8C%E5%9E%82%E7%9B%B4%E5%92%8C%E6%B0%B4%E5%B9%B3%E5%AF%B9%E9%BD%90.png)
另一个问题让我使用 tabu 来使一列适合其内容,同时允许其他列平等拉伸。这是我当前的代码:
\documentclass{article}
\usepackage{tabu}
\begin{document}
\noindent
\begin{tabu}{|X[m,c]|c|X[m,c]|}
Left content centered \newline between margin and title &
{\Huge Title} &
Right content \newline also centered
\end{tabu}
\end{document}
然而,这会产生两个问题:两行单元格上出现一些奇怪的水平对齐,并且标题没有与左右单元格垂直居中。
是什么导致了这些问题?我该如何解决它们?
答案1
tabu
还允许使用负系数来处理 X 列,这样就可以拥有 X 列的所有特征,而无需缩放部分。因此,这消除了 raisebox “hack” 的需要。您只需将c
列更改为X[-1,m,c]
\documentclass{article}
\usepackage{tabu}
\begin{document}
\noindent
\begin{tabu}{|X[m,c]|X[-1,m,c]|X[m,c]|}
Left content centered \linebreak between margin and title &
\Huge Title &
Right content \linebreak also centered
\end{tabu}
\end{document}
答案2
似乎您不需要\linebreak
。\newline
列X
垂直居中在列的基线c
而不是文本的中间,因此您需要移动文本或进行其他调整。
\documentclass{article}
\usepackage{tabu}
\begin{document}
\noindent
\begin{tabu}{|X[m,c]|c|X[m,c]|}
Left content centered \linebreak between margin and title &
\raisebox{-.3\height}{\Huge Title} &
Right content \linebreak also centered
\end{tabu}
\end{document}