问题:
Extra alignment tab has been changed to \cr
。
我认为这意味着 LaTeX 代码在此行中的单元格数量与 tabularx premable 中定义的数量不同。
直到我尝试在标题后添加更多行时,问题才出现,但右侧的最后一个单元格有点...升高了?我不太明白这里的问题,我的意思是在 tabularx 环境中,您用 分隔单元格,用&
结束一行//
,对吗?
此外,如果您将最后一个标题更改为:{\centering T}
它不会崩溃或提升文本,但是...它不会使文本居中。
有任何想法吗?
注意:这里最重要的是我想让标题与单元格的对齐方式不同。所以我尝试在标题上使用 \centering。\begin{center} 可以做到这一点,但会在标题周围留出大量空间。
梅威瑟:
\documentclass[11pt]{letter}
\usepackage[letterpaper, inner=18mm, outer=18mm, top=8mm, bottom=25mm]{geometry}
\usepackage{tabularx}
\usepackage[table,xcdraw]{xcolor}
\renewcommand{\tabularxcolumn}[1]{>{\tiny}m{#1}}
\newcolumntype{x}{>{\raggedleft\arraybackslash}X}
\begin{document}
\rowcolors{1}{}{gray!15}
\begin{tabularx}{\textwidth}{xxxxxxxxxxxx}
\rowcolor{gray}
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text Text Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
\color{white}\fontsize{6pt}{6pt}\selectfont {\centering Tt} \\
\color{black}\fontsize{6pt}{6pt}\selectfont 8' &
\color{black}\fontsize{6pt}{6pt}\selectfont 130 &
\color{black}\fontsize{6pt}{6pt}\selectfont 134 &
\color{black}\fontsize{6pt}{6pt}\selectfont 152 &
\color{black}\fontsize{6pt}{6pt}\selectfont 168 &
\color{black}\fontsize{6pt}{6pt}\selectfont 200 &
\color{black}\fontsize{6pt}{6pt}\selectfont 240 &
\color{black}\fontsize{6pt}{6pt}\selectfont 340 &
\color{black}\fontsize{6pt}{6pt}\selectfont 520 &
\color{black}\fontsize{6pt}{6pt}\selectfont 340 &
\color{black}\fontsize{6pt}{6pt}\selectfont 520 &
\color{black}\fontsize{6pt}{6pt}\selectfont - \\
\end{tabularx}
\end{document}
编辑:
首先,重复很多事情似乎真的很不方便,但实际上我只需输入一次,计算机就会循环重复。
我一直没有使用多列,因为标题超出了表格单元格的宽度,我无法为每个单元格定义静态宽度(否则我不会有问题),因为在更大的图中,我正在使用 Scriban 模板化 LaTeX 文件,并且我正在处理动态标题。以下是使用多列时发生的情况:
我能够使用 \begin{center} 将标题居中,但是每个标题单元格周围的空间不合适,因此我查找了一下并在此处尝试了一个新的环境:我如何改变中心上方和下方的空白?它可以删除上方的空间,但不能删除下方的空间。我在每个标题单元格的前面和后面放置了 \begin 和 \end{center}。如下所示:
我不需要微小的单元格,我只是认为这会改变标题的多列强制宽度。
\centering
我只是感到困惑,因为表格对每行的修饰符的反应很奇怪。
另外,我正在使用 tabularX,因为它可以动态地将其扩展到页面末尾。
答案1
一年后(我以前显然忽略了这个问题)......
我会以非常不同的方式写你的表格:
- 字体大小我之前定义过
tabularx
,这样每个单元格中的所有重复都变得多余 - 我想知道你真的需要这么小的字体吗。从表格提供的内容可以得出结论,字体大小可以大得多,例如等于
\small
- 为了改变对齐列标题的内容,我将定义新命令:
其中\newcommand\mcw[1]{\multicolumn{1}{C}{\textcolor{white}{#1}}}
C
定义为>{\centering\arraybackslash}X
- 我还会通过以下方式在单元格内容上方添加小的垂直空间
\setlength\extrarowheight{2pt}
- 经过这些措施后,表格的代码变得更加简短和清晰,因此在编写时更不容易出错:
\documentclass[11pt]{article}%{letter}
\usepackage[letterpaper, inner=18mm, outer=18mm, top=8mm, bottom=25mm]{geometry}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage[table, xcdraw]{xcolor}
\newcommand\mcw[1]{\multicolumn{1}{C}{\textcolor{white}{#1}}}
\begin{document}
\begin{table}[ht]
\small\linespread{0.84}\selectfont\relax%\fontsize{6pt}{6pt}\selectfont\relax
\setlength\extrarowheight{2pt}
\rowcolors{1}{}{gray!15}
\begin{tabularx}{\textwidth}{*{12}{L}}
\rowcolor{gray}
\mcw{Text} & \mcw{Text} & \mcw{Text} & \mcw{Text} & \mcw{Text} & \mcw{Text} &
\mcw{Text Text Text}
& \mcw{Text} & \mcw{Text} & \mcw{Text} & \mcw{Text} & \mcw{Tt} \\
%
8' & 130 & 134 & 152 & 168 & 200 &
240 & 340 & 520 & 340 & 520 & - \\
8' & 130 & 134 & 152 & 168 & 200 &
240 & 340 & 520 & 340 & 520 & - \\
8' & 130 & 134 & 152 & 168 & 200 &
240 & 340 & 520 & 340 & 520 & - \\
\hline
\end{tabularx}
\end{table}
\end{document}
答案2
代替
\color{white}\fontsize{6pt}{6pt}\selectfont \centering Text &
和
\color{white}\fontsize{6pt}{6pt}\selectfont \centering\arraybackslash Text &