表格:结合固定列宽、\multicolumn 和文本换行

表格:结合固定列宽、\multicolumn 和文本换行

我正在尝试创建一种表格: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

以下代码中由 tabularray 生成的表格。

\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}

相关内容