我正在尝试创建一种表格:a) 与我的文本宽度相同;b) 具有预定义宽度的列;c) 具有跨越多列的单元格;d) 在这些多列中换行显示文本。
基本上,我正在尝试重新创建类似这样的东西(仅包含水平线和垂直线以查看多列单元格应该在哪里,最终的表格不应该有任何线):
我以为我几乎用它得到了它此解决方案,但这会导致 LaTeX 崩溃,并出现错误“扫描 \NC@find 的使用时发现禁止的控制序列。Province: &”、“缺少 \endgroup 插入。Province: &”和“额外的对齐选项卡已更改为 \cr。Province: & Baetica &”。
这是我用来创建(非工作)表格的代码(精确的列宽可能需要进行一些调整,但您应该有一个大致的了解):
\documentclass[]{article}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{table}[tb]
\centering
\begin{tabular}{p{2.5cm} p{4cm} p{2.5cm} p{4cm}}
\textsc{edcs-id}: & \textsc{edcs}-9000163 & Dating: & 101 to 200 \\
Publication: & \multicolumn{3}{C}{CIL 02-07, 00154} \\
Findspot: & \multicolumn{3}{C}{Montoro / Ad Lucos / Epora} \\
Province: & Baetica & Region: & Iberia \\
Diocese: & Hispaniae & Loc. Indicator: & True \\
Text: & \multicolumn{3}{C}{Di\{i\}s Manibus sacrum Antistius / Patriciensis vixit ann(os) LXXV / p(ius) i(n) s(uis) h(ic) s(itus) e(st) s(it) t(ibi) t(erra) l(evis)} \\
Cleantext: & \multicolumn{3}{C}{Dis Manibus sacrum Antistius Patriciensis vixit annos LXXV pius in suis hic situs est sit tibi terra levis} \\
Gender: & m & Legal Status: & unknown \\
Text-Length: & 60 & Funerary: & True \\
origo & Col. Patricia & Distance & 38 km
\end{tabular}
\end{table}
\end{document}
如果我能提供任何帮助和指点,告诉我哪里出了错误,以及如何达到预期的结果,我将不胜感激。
答案1
(更新此答案以使单元格内容左对齐\multicolumn{3}
)
您提到要将表格的整体宽度设置为文本块的宽度;表示此参数的 LaTeX 宏称为\textwidth
。由于tabular
环境不允许用户设置整体目标宽度,因此我建议切换到tabularx
目标宽度为的环境\textwidth
,并在一个或多个列的单元格中启用自动换行。或者,为了增强可读性,可以添加一些\addlinespace
指令以在包含合并第 2 至第 4 列的单元格的行上方和下方插入空白填充。请参阅以下屏幕截图以了解最终的“外观”。
\documentclass{article}
\usepackage{tabularx,ragged2e,booktabs}
% Define a variable-width version of 'X' column type:
\newcolumntype{L}[1]{>{\RaggedRight\hsize=#1\hsize}X}
\begin{document}
\begin{table}[ht]
\setlength\tabcolsep{3pt} % default: 6pt
\begin{tabularx}{\textwidth}{@{} l L{1.15} L{0.8} L{1.05} @{}} % 1.15+0.8+1.05 = 3 = # of X-type columns
\textsc{edcs-id} & \textsc{edcs}-9000163 & Dating & 101 to 200 \\
Publication & \multicolumn{3}{l}{CIL 02-07, 00154} \\
Findspot & \multicolumn{3}{l}{Montoro\slash Ad Lucos\slash Epora} \\
Province & Baetica & Region & Iberia \\
Diocese & Hispaniae & Loc.\ Indicator & True \\
\addlinespace
Text & \multicolumn{3}{L{3}}{Di\{i\}s Manibus sacrum Antistius\slash Patriciensis vixit ann(os) LXXV\slash p(ius) i(n) s(uis) h(ic) s(itus) e(st) s(it) t(ibi) t(erra) l(evis)} \\
\addlinespace
Cleantext & \multicolumn{3}{L{3}}{Dis Manibus sacrum Antistius\slash Patriciensis vixit annos LXXV\slash pius in suis hic situs est sit tibi terra levis} \\
\addlinespace
Gender & m & Legal Status & unknown \\
Text-Length & 60 & Funerary & True \\
origo & Col.\ Patricia & Distance & 38 km
\end{tabularx}
\end{table}
\end{document}
答案2
在表格中嵌入段落一直是内置tabular
环境的一个弱点。如果您使用tabularray
包,您可以更精细地控制 LaTeX 如何排版您的表格。请注意,您的要求 (a)“与我的文本宽度相同”与 (b)“具有预定义宽度的列”相冲突,我选择遵守 (a) 而不是 (b):生成的表格将始终与周围文本的一行一样宽。但是,如果您想将列长度格式化为恰好 2.5 厘米、4 厘米、2.5 厘米和 4 厘米,您可以简单地使用这些长度;例如,您可以删除0.8\textwidth
它并将其替换为您选择的长度,例如10.5cm
。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{table}[tb]
\centering
\begin{tblr}{
colsep=0pt,
colspec={
Q[l,0.2\textwidth]
Q[l,0.3\textwidth]
Q[l,0.2\textwidth]
Q[l,0.3\textwidth]
}
}
\textsc{edcs-id}: & \textsc{edcs}-9000163 & Dating: & 101 to 200 \\
Publication: & \SetCell[c=3]{l,0.8\textwidth}CIL 02-07, 00154 \\
Findspot: & \SetCell[c=3]{l,0.8\textwidth} Montoro / Ad Lucos / Epora \\
Province: & Baetica & Region: & Iberia \\
Diocese: & Hispaniae & Loc. Indicator: & True \\
Text: & \SetCell[c=3]{l,0.8\textwidth} Di\{i\}s Manibus sacrum Antistius / Patriciensis vixit ann(os) LXXV / p(ius) i(n) s(uis) h(ic) s(itus) e(st) s(it) t(ibi) t(erra) l(evis) \\
Cleantext: & \SetCell[c=3]{l,0.8\textwidth} Dis Manibus sacrum Antistius Patriciensis vixit annos LXXV pius in suis hic situs est sit tibi terra levis \\
Gender: & m & Legal Status: & unknown \\
Text-Length: & 60 & Funerary: & True \\
origo & Col. Patricia & Distance & 38 km
\end{tblr}
\end{table}
\end{document}