
這是一個例子:
\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}
編輯: 加載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}