
나는 tabular
. 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}
이는 예상한 대로 보이지만 두 텍스트가 동일한 높이를 차지하는 경우에만 해당됩니다. 그렇지 않으면 (두 번째 \lipsum[1][1]
를 로 변경하면 \lipsum[1][1-2]
결과는 다음과 같습니다.
문제: 열 1의 내용이 셀 상단에 정렬되지 않습니다.
물론 두 개의 "긴" 열 정렬을 다음과 같이 변경해도 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
그렇게 사소한 것은 아닙니다.
두 개의 큰 상자를 측정한 다음 가운데 상자를 수직 중앙에 배치할 수 있습니다. 그러나 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}