줄바꿈 시 테이블 행 배치

줄바꿈 시 테이블 행 배치

설명, 짧은 약어 및 값이 포함된 세 개의 열이 있는 테이블이 있습니다. 설명이 매우 긴 항목일 수 있으므로 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}

이 테이블을 얻으려면 :

현재 버전

보시다시피 첫 번째 열의 항목이 짧으면 마지막 두 열을 쉽게 정렬할 수 있습니다. 그러나 첫 번째 열의 텍스트가 여러 줄로 나누어지면 자연스럽게 마지막 두 줄에도 유사하지만 비어 있는 공간이 생깁니다. 따라서 이 예에서 내가 원하는 것은 Entry l.2와 Value v.l2를 두 "행" 위로 "이동"하는 것입니다.

답변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. 또한보십시오"여러 행 열의 텍스트 줄 바꿈"에 대한 답변.

편집하다: 텍스트가 걸쳐 있는 행을 수동으로 확인하지 않으려면 fe를 사용하는 대신 마지막 두 열에 대해 중첩 테이블을 사용할 수 있습니다 \multirow.

\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

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} 

여기에 이미지 설명을 입력하세요

관련 정보