垂直对齐指令与表格对齐指令相反

垂直对齐指令与表格对齐指令相反

根据 Overleaf 文档,我必须使用m{}p{}b{}来垂直对齐我的文本,但由于某些未知原因,在三列测试表中,第一列中的指令对第三列(此处m{})有影响,第二列对第一列有影响,第三列对第二列有影响。

这是来自 overleaf 文档的一个最小示例。我在 overleaf 和 2020 年 10 月更新的本地安装上也遇到了同样的问题。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{1.5}

\begin{document}
\begin{tabular}{|m{3cm}|b{3cm}|p{3cm}|}
  \hline
  \multicolumn{3}{|c|}{Country List} \\
  \hline
  Country Name or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\
  \hline
  Afghanistan & AF &AFG \\
  Aland Islands & AX   & ALA \\
  Albania &AL & ALB \\
  Algeria    &DZ & DZA \\
  American Samoa & AS & ASM \\
  Andorra & AD & AND   \\
  Angola & AO & AGO \\
  \hline
\end{tabular}
\end{document}

在此处输入图片描述

你知道为什么吗?这是我使用 Latex 9 年来第一次遇到这个问题。这是上一个array软件包版本的错误吗?

答案1

我不确定你说的列相互影响是什么意思。输出正是它应该的样子。 -columnp基本上是顶部对齐的\parboxb-column 是底部对齐的,而m列是居中对齐的。如果我在你的tabular

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{1.5}

\def\foo{\leavevmode\hbox to 0pt{\hss \vrule width 5cm height .4pt\hss}}


\begin{document}
\begin{tabular}{|m{3cm}|b{3cm}|p{3cm}|}
  \hline
  \multicolumn{3}{|c|}{Country List} \\
  \hline
  \foo Country Name or Area Name& ISO ALPHA 2 Code\foo & \foo ISO ALPHA 3 \\
  \hline
  Afghanistan & AF &AFG \\
  Aland Islands & AX   & ALA \\
  Albania &AL & ALB \\
  Algeria    &DZ & DZA \\
  American Samoa & AS & ASM \\
  Andorra & AD & AND   \\
  Angola & AO & AGO \\
  \hline
\end{tabular}
\end{document}

在此处输入图片描述

您会看到第二列 ( ) 的底线b与第三列 ( ) 的顶线(也是唯一的一条线)正确对齐p;第一列 ( m) 居中,因此其顶部基线较高。

为了更清楚地说明相对于基线的对齐意味着什么,请考虑以下三个\parboxes序列

\documentclass{article}
\newcommand*{\baseline}{\rule{1cm}{.2pt}}
\newcommand*{\foo}[1]{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox[#1]{1cm}{\raggedright Foo bar baz bar}}}}
\begin{document}
\baseline\foo{c}\baseline\foo{b}\baseline\foo{t}
\end{document}

在此处输入图片描述

相关内容