我想强制表格中某个单元格的内容超出单元格宽度指定量。对于c
列,负字距调整可以解决问题。但我还想要垂直对齐,而负字距调整不再适用于m
列。
最小工作示例:
\documentclass{article}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
%\begin{tabular}[h]{|M{1in}|M{1in}|M{1in}|}
\begin{tabular}[h]{|c|c|c|}
\hline
\rule{0.2in}{1in} &
\rule{1in}{0.2in} &
\rule{0.2in}{1in} \\
\hline
\rule{1in}{0.2in} &
\rule{0.2in}{1in} &
\rule{1in}{0.2in} \\
\hline
\rule{0.2in}{1in} &
\kern-0.5in\rule{1.5in}{0.2in} &
\rule{0.2in}{1in} \\
\hline
\end{tabular}
\end{document}
底部中间的单元格显示了我的意思。切换\begin{tabular}
行上的注释以查看它在m
列上失败。我该如何让它工作?
动机:我有一列包含一堆内容相似且对齐的图像。它们大多数宽度相同,但有一列更宽,因为额外的空间包含一些额外的信息,如标签。我希望忽略额外的空间,以便图像在文档中保持对齐。我不想简单地使用左对齐或右对齐,因为这会浪费其他单元格中的额外空间。
答案1
\makebox
代替使用\kern
:
\documentclass{article}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\begin{tabular}[h]{|M{1in}|M{1in}|M{1in}|}
%\begin{tabular}[h]{|c|c|c|}
\hline
\rule{0.2in}{1in} &
\rule{1in}{0.2in} &
\rule{0.2in}{1in} \\
\hline
\rule{1in}{0.2in} &
\rule{0.2in}{1in} &
\rule{1in}{0.2in} \\
\hline
\rule{0.2in}{1in} &
\makebox[1in][r]{\rule{1.5in}{0.2in}} &
\rule{0.2in}{1in} \\
\hline
\end{tabular}
\end{document}
解释:\makebox[1in][r]{\rule{1.5in}{0.2in}}
将规则放在一个宽度的框中1in
,r
并将其右对齐在框中。