表内のセルの 1 つの内容を、指定した量だけセル幅からオーバーフローさせたいと考えています。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 つの画像の幅が広くなっています。これは、余分なスペースにラベルなどの追加情報が含まれているためです。余分なスペースを無視して、画像がドキュメント内で適切に整列されたままになるようにします。単純に左揃えまたは右揃えを使用するのは望ましくありません。そうすると、他のセルの余分なスペースが無駄になるからです。
答え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
ボックス内で水平に揃えます。