
예는 다음과 같습니다.
\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}
두 개의 열로 구성된 테이블이 있고 왼쪽 정렬을 유지하면서 두 열에 걸쳐 있는 텍스트를 가운데에 배치해야 합니다.
위 코드에서는 왼쪽 정렬된 다중 열과 \hspace를 사용하여 블록을 20pt씩 임의로 들여쓰기했습니다.
컴파일러가 들여쓰기의 너비/길이를 계산하도록 할 수 있는 방법이 있습니까?
블록을 중앙에 배치하는 데 적합한 들여쓰기는 다음과 같아야 합니다. (테이블 너비 - 평균 줄 길이) / 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}
편집하다: loading 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
다음 두 가지 작은 트릭을 사용하면 서로에 대해 왼쪽 정렬되지만 테이블 내에서는 중앙에 정렬되는 두 개의 선을 얻을 수 있습니다.
첫 번째 예에서는 두 줄의 텍스트에 단일 중앙 정렬 유형 열을 사용한 p
반면, 두 번째 예는 중앙 다중 열 내부에 중첩된 왼쪽 정렬 표 형식을 기반으로 합니다.
\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}