
次に例を示します。
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{\enspace} \\
\multicolumn{2}{l}{\hspace{20pt} short line (left-aligned centered block)} \\
\multicolumn{2}{l}{\hspace{20pt} now a longer (line in the same left-aligned centered block)} \\
\multicolumn{2}{c}{\enspace} \\
\multicolumn{2}{c}{short line (centered, not left-aligned)} \\
\multicolumn{2}{c}{this is a longer line (centered, not left-aligned)} \\
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
2 列の表があり、左揃えのまま 2 列にまたがるテキストを中央に配置する必要があります。
上記のコードでは、左揃えの複数列と \hspace を使用して、ブロックを 20 ポイントで任意にインデントしています。
コンパイラにインデントの幅と長さを計算させる方法はありますか?
ブロックを中央に配置するための適切なインデントは、次のようになります: (表の幅 - 平均行の長さ) / 2。
これを実行する適切な方法は何でしょうか?
アップデート:
ネストされた表形式を選択しましたが、元のレイアウトとほぼ同じになりました。
答え1
と stackengine
、その\Centerstack
コマンドを使用すると、配置に関するオプションの引数(デフォルトはc
)を取ることができ、\addlinespace
( からbooktabs
)これらのブロックの周囲の垂直方向の間隔を簡略化できます。
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, hmargin=0.2cm]{geometry}
\usepackage{booktabs}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{center}
\scriptsize\setlength{\defaultaddspace}{2.7ex}
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\addlinespace
\multicolumn{2}{c}{\Centerstack[l]{short line (left-aligned centered block) \\
now a longer (line in the same left-aligned centered block)}} \\
\addlinespace
\multicolumn{2}{c}{\Centerstack{short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)}} \\
\addlinespace
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
編集: 読み込み中eqparbox
、以下のコードでこの配置を取得できます。
\begin{center}
\scriptsize\setlength{\defaultaddspace}{2.7ex}
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\addlinespace
\multicolumn{2}{c}{\eqparbox{LC}{\Centerstack[l]{short line (left-aligned centered block) \\
now a longer (line in the same left-aligned centered block)}}} \\
\addlinespace
\multicolumn{2}{c}{\eqparbox{LC}{\Centerstack[l]{short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)}}} \\
\addlinespace
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
答え2
次の 2 つの小さなトリックを使用すると、2 行を互いに左揃えにし、表の中央に配置することができます。
最初の例では、両方のテキスト行に単一の中央揃えの列を使用しましたp
が、2 番目の例では、中央揃えの複数列内にネストされた左揃えの表形式を使用しています。
\documentclass{article}
\usepackage{array}
\usepackage{makecell}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{} \\
\multicolumn{2}{>{\centering\arraybackslash}p{8cm}}{short line (centered, not left-aligned)
\newline
this is a longer line (centered, not left-aligned)} \\
\multicolumn{2}{c}{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{} \\
\multicolumn{2}{c}{\begin{tabular}{@{}l@{}}
short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)
\end{tabular}} \\
\multicolumn{2}{c}{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
答え3
とを使用すると\makecell
、\mbox
テーブルは次のように記述することもできます。
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in},
top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\usepackage{array, makecell}
\usepackage{xparse}
\NewExpandableDocumentCommand\mcc{O{2}m}
{\multicolumn{#1}{c}{#2}}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\mcc{} \\
\mcc{\mbox{%
\makecell[l]{short line (centered, not left-aligned)\\
this is a longer line
(centered, not left-aligned)}}
} \\
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\mcc{} \\
\mcc{short line (centered, not left-aligned)} \\
\mcc{this is a longer line (centered, not left-aligned)} \\
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}