
私は、一見些細な垂直方向の配置の問題に苦労していますtabular
。3つの列を考えてみましょう。2つの列にはソフトラップされるはずのテキストが含まれており、上セルの 3 番目の列 (この例では中央の列) は、行内で垂直方向に中央揃えにする必要があります。
例:
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{array}
\begin{document}
\begin{tabular}{m{4cm} m{1cm} m{4cm}}
\lipsum[1][1] & x & \lipsum[1][1]
\end{tabular}
\end{document}
これは予想どおりのように見えますが、2 つのテキストの高さが同じ場合のみです。それ以外の場合 (2 番目\lipsum[1][1]
を に変更するだけ\lipsum[1][1-2]
)、結果は次のようになります。
問題: 列 1 の内容がセルの上部に揃っていません。
もちろん、2 つの「長い」列の配置を次のように変更してもp{4cm}
役に立ちません。
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{array}
\begin{document}
\begin{tabular}{p{4cm} m{1cm} p{4cm}}
\lipsum[1][1] & x & \lipsum[1][1-2]
\end{tabular}
\end{document}
問題: 中央の列が垂直方向に中央揃えされなくなりました。
分かったと思いますなぜ次のようなことが起こります: これらの配置はすべて、現在のセルの最初の「行」を基準にしており、セル自体を基準にしているわけではありません。(どのように) これは可能ですか? 次のものを作成できる列指定を探しています:
最良の場合、中央の列の幅を指定する必要さえありません。
答え1
答え2
そんなに些細なことではない。
2 つの大きなボックスを測定し、中央のボックスを垂直方向の中央に配置することもできます。ただし、TeX ではこれを自動的に実行できます。
\documentclass{article}
\usepackage[latin]{babel} % for better hyphenation
\usepackage{lipsum} % for mock text
\usepackage{microtype} % for less overfull boxes
\newcommand{\mytwocols}[4][4cm]{%
\valign{##\cr
\mycol{\vtop}{#1}{#2}\vfill\cr
\noalign{\hspace{2\tabcolsep}}
\vfill\mycol{\vbox}{1cm}{#3}\vfill\cr
\noalign{\hspace{2\tabcolsep}}
\mycol{\vtop}{#1}{#4}\vfill\cr
}%
}
\newcommand{\mycol}[3]{%
#1{\hsize#2\relax\parindent0pt\relax\sloppy#3}%
}
\begin{document}
\mytwocols
{\lipsum[1][1]}
{x}
{\lipsum[1][1]}
\bigskip
\mytwocols
{\lipsum[1][1]}
{x}
{\lipsum[1][1-2]}
\bigskip
\mytwocols
{\lipsum[1][1-2]}
{x}
{\lipsum[1][1]}
\end{document}
答え3
または
\phantom
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\begin{tabular}{p{4cm} M{5cm} p{4cm}}
\lipsum[1][1] & {\phantom{\lipsum[1][1-2]}} x & \lipsum[1][1-2]
\end{tabular}
\end{document}
答え4
手動ですが非常に簡単な解決策としては、左のセルの行数を均等にし、c
「x」区切りに列を使用することです。
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{array}
\begin{document}
\begin{tabular}{m{4cm}@{\qquad}c@{\qquad}m{4cm}}
\lipsum[1][1]\newline\newline\newline & x & \lipsum[1][1-2]
\end{tabular}
\end{document}