根据 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
基本上是顶部对齐的\parbox
,b
-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
) 居中,因此其顶部基线较高。
为了更清楚地说明相对于基线的对齐意味着什么,请考虑以下三个\parbox
es序列
\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}