
tabular
일부 셀이 있어야 하는 환경 에서 텍스트를 모든 셀의 상단에 수직으로 정렬하고 싶습니다.여러 행에 걸쳐.
가능하면 다른 패키지를 사용하지 마십시오. (추가 패키지 설치를 제어할 수 없습니다.)
\documentclass[12pt, margin = 1mm]{standalone}
\newcommand\TS{\rule{0pt}{2.6ex}} % Top strut
\newcommand\BS{\rule[-0.9ex]{0pt}{0pt}} % Bottom strut
\usepackage{array, multirow}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering \let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft \let\newline\\\TS\BS\arraybackslash}p{#1}}
\begin{document}
\begin{tabular} [t] { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1 & Column 2 & Column 3 & Column 4 \\ \hline
Foo & Line 1 \newline Line 2 &
\multirow{2}{*}{Alpha} & Line 1 \newline Line 2 \newline Line 3 \\
Bar & Line 1 \newline Line 2 \\
Spam & Line 1 \newline Line 2 &
\multirow{2}{*}{Beta} & Line 1 \newline Line 2 \newline Line 3 \\
Eggs & Line 1 \newline Line 2 \\
\end{tabular}
\end{document}
두 가지 문제가 있습니다.
p{#1}
대신 사용하면m{#1}
Foo, Bar, Spam, Eggs를 맨 위에 정렬하는 데 도움이 되지만 Alpha, Beta는 정렬되지 않습니다. 논쟁은[t]
효과가 없었습니다.Alpha와 그 세 줄은 Foo, Bar의 행에 걸쳐 있지 않습니다. 베타의 경우에도 마찬가지입니다.
두 가지 문제를 어떻게 해결할 수 있습니까?
답변1
이와 같이?
없이 multirow
, 단순화된 유형의 열 정의를 사용하고 다음을 사용합니다 makecell
.
\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array, makecell}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\begin{document}
{\makegapedcells
\begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
Foo & \makecell[t]{Line 1\\ Line 2} & Alpha & \makecell[t]{Line 1\\ Line 2} \\
Bar & \makecell[t]{Line 1\\ Line 2} & & \\
Spam & \makecell[t]{Line 1\\ Line 2} & Beta & \makecell[t]{Line 1\\ Line 2} \\
Eggs & \makecell[t]{Line 1\\ Line 2} & & \\
\end{tabular}
}
\end{document}
편집 (1):또는 간단한 테이블을 찾고 있습니다.
{\makegapedcells
\begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
Foo & Line 1 & Alpha & Line 1 \\
& Line 2 & & Line 2 \\
Bar & Line 1 & & \\
& Line 2 & & \\
Spam & Line 1 & Beta & Line 1 \\
& Line 2 & & Line 2 \\
Eggs & Line 1 & & \\
& Line 2 & & \\
\end{tabular}
}
수직 간격이 약간 다릅니다.
편집(2):(너무 많은 욕구가 있지만 multirow
어느 행/얼마나 많은 행을 포괄해야 하는지는 불행히도 나에게 명확하지 않습니다.)
\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array, makecell, multirow}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\begin{document}
{\makegapedcells
\renewcommand\multirowsetup{\centering}% <-- for centering contents of multirow center
\begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
\multirow[t]{2}{=}{Foo} & Line 1 & \multirow[t]{4}{=}{Alpha} & Line 1 \\
& Line 2 & & Line 2 \\
\multirow[t]{2}{=}{Bar} & Line 1 & & \\
& Line 2 & & \\
\multirow[t]{2}{=}{Spam}& Line 1 & \multirow[t]{4}{=}{Beta} & Line 1 \\
& Line 2 & & Line 2 \\
\multirow[t]{2}{=}{Eggs}& Line 1 & & \\
& Line 2 & & \\
\end{tabular}
}
\end{document}
multirow
결과는 단 하나의 단어가 s 셀 에 있는 경우 이전(편집 (1))과 동일하게 보입니다 . 예를 들어 다음과 같은 것이 더 있는 경우:
\begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
\multirow[t]{2}{=}{Foo} & Line 1 & \multirow[t]{4}{=}{Alpha} & Line 1 \\
& Line 2 & & Line 2 \\
\multirow[t]{2}{=}{Bar} & Line 1 & & \\
& Line 2 & & \\
\multirow[t]{2}{=}{Spam}& Line 1 & \multirow[t]{4}{=}{Beta Beta Beta Beta Beta
Beta Beta Beta Beta Beta}
& Line 1 \\
& Line 2 & & Line 2 \\
\multirow[t]{2}{=}{Eggs}& Line 1 & & \\
& Line 2 & & \\
\end{tabular}
결과는 다음과 같습니다