改行がある場合の表の行の配置

改行がある場合の表の行の配置

説明、短い略語、値を含む 3 つの列を持つテーブルがあります。説明は非常に長いエントリになる可能性があるため、p 列タイプを使用して行を自動的に折り返します。最終的なテーブルが数ページにまたがるため、longtable を使用しています。

現時点ではこのコードを使用しています

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
here is a very long text in the first column that will be broken into multiple rows & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
\hline
\end{longtable}

\end{document}

この表を取得するには:

現行版

ご覧のとおり、最初の列のエントリが短い場合は、最後の 2 列を揃えるのは簡単です。ただし、最初の列のテキストが複数行に分割されている場合は、当然、最後の 2 行に同様の、ただし空のスペースができます。したがって、この例では、エントリ l.2 と値 v.l2 を 2 行上に「移動」する必要があります。

答え1

セルを複数の行にまたがるには、パッケージ\multirowから次のものを使用できます。multirow

\documentclass{article}
\usepackage{longtable}
\usepackage{multirow}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
\multirow{2}{0.5\textwidth}{here is a very long text in the first column that will be broken into multiple rows} & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
 \\
\hline
\end{longtable}

\end{document}

テキストの折り返しには、列の幅を手動で設定する必要があります。例では に設定されています.5\textwidth「複数行の列でのテキストの折り返し」に対するこの回答

編集: テキストがまたがる行を手動で確認する手間を省くには、\multirow, fe を使用する代わりに、最後の 2 つの列にネストされたテーブルを使用します。

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}c} 
\hline
Column 2 &\begin{tabular}{cc}Column 2 & Column 3\end{tabular}\\ 
\hline
short entry &\begin{tabular}{cc}
    Entry s.1 & Value v.s1\\
    Entry s.2 & Value v.s2
\end{tabular}\\
\hline
here is a very long text in the first column that will be broken into multiple rows &\begin{tabular}{cc}
    Entry l.1 & Value v.l1 \\
    Entry l.2 & Value v.l2
\end{tabular}\\
\hline
\end{longtable}

\end{document}

可能であれば、表内の長いテキストを避けるようにしたいので、2 回確認することをお勧めします。

答え2

booktabs パッケージも使用できます。

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}} 
\toprule
Column 1 &  Column 2 & Column 3\\ 
\midrule
short entry & Entry s.1 & Value v.s1\\
& Entry s.2 & Value v.s2 \\
\midrule
There is a very long text in the  & Entry l.1 &  Value v.l1 \\
first column that will be broken  &Entry 1.2 & Value v.12\\
into multi rows&&\\
\bottomrule
\end{longtable}
\end{document}

ブックタブ

答え3

すべての列が なのでp{some width}、セル内で を使用する\newlineと行数が少なくなります。あるいは、makecellセル内での改行を可能にする パッケージを使用することもできます。

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\cellalign{lt}

\begin{document}

\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}}
  \toprule
  Column 1 & Column 2 & Column 3 \\
  \midrule
  short entry & Entry s.1 & Value v.s1 \\
                                                                                    & Entry s.2 & Value v.s2 \\
  \midrule
  There is a very long text in the first column that will be broken into multi rows & \makecell{Entry l.1 & \\Entry 1.2} & \makecell{Value v.l1\\Value v.12} \\
  \addlinespace
  There is a very long text in the first column that will be broken into multi rows & Entry l.1\newline Entry 1.2 & Value v.l1\newline Value v.12 \\
  \bottomrule
\end{longtable}

\end{document} 

ここに画像の説明を入力してください

関連情報