我希望有人能帮助解决这个问题。我有一个 3x4 的表格,如果直接输入,对于页面来说太宽了。因此,我将每列宽度固定为文本宽度的 25%,然后\linebreak
在表格中使用 ERT。
但是,当我尝试编译时,我收到 4 次此错误:
额外的对齐标签已更改为 \cr。
LyX 表的 LaTeX 代码是:
\begin{table}
\caption{CD271 Antibody Assessment}
\centering{}%
\begin{tabular}{|>{\centering}p{0.25\textwidth}|p{0.25\textwidth}|p{0.25\textwidth}|}
\hline
Sample & \multicolumn{2}{p{0.25\textwidth}|}{Percentage Identified\linebreak as MSCs by Panel} & \multicolumn{2}{p{0.25\textwidth}|}{Percentage CD271\linebreak Postive}\tabularnewline
\hline
\hline
BMMC & 0&02 & 1&78\tabularnewline
\hline
\hline
Cultured Bone Marrow & 39&08 & 5&70\tabularnewline
\hline
\hline
Commerical MSCs & 99&51 & 45&44\tabularnewline
\hline
\end{tabular}
\end{table}
知道我做错了什么吗?我尝试查看在线帮助,但找不到答案。
答案1
您有一个表格环境仅 3列
\begin{tabular}{{...}p{...}p{...}p{...}}
所以你不能把第二行的三个单元格 5列:
Sample &
--> 1\multicolumn{2}{...}{...} &
--> 1 + 2 = 3\multicolumn{2}{...}{...}\tabularnewline
--> 3+2=5
以下行中也没有五个单元格:
BMMC &
0 &
02 &
1 &
78 \tabularnewline
解决方案是使用五列的表格环境。例如:
\begin{tabular}{p{...}p{...}p{...}p{...}p{...}}
顺便说一句,请避免使用垂直线和双线。我建议使用booktabs
包的水平规则,而不是\hline
其他一些更改。请检查此最小工作示例中的差异:
\documentclass{article}
\usepackage{array,booktabs}
\begin{document}
\begin{table}
\caption{CD271 Antibody Assessment}
\centering{}%
\begin{tabular}{|>{\centering}p{0.12\textwidth}|p{0.12\textwidth}|p{0.12\textwidth}|p{0.12\textwidth}|p{0.12\textwidth}|}
\hline
Sample & \multicolumn{2}{p{0.24\textwidth}|}{Percentage Identified\linebreak as MSCs by Panel} & \multicolumn{2}{p{0.24\textwidth}|}{Percentage CD271\linebreak Postive}\tabularnewline
\hline
\hline
BMMC & 0&02 & 1&78\tabularnewline
\hline
\hline
Cultured Bone Marrow & 39&08 & 5&70\tabularnewline
\hline
\hline
Commerical MSCs & 99&51 & 45&44\tabularnewline
\hline
\end{tabular}
\end{table}
\begin{table}
\caption{CD271 Antibody Assessment}
\centering{}%
\begin{tabular}{lcccccc}
\toprule
Sample & & \multicolumn{2}{>{\raggedright}m{0.25\textwidth}}{Percentage Identified as MSCs by Panel} & & \multicolumn{2}{>{\raggedright}m{0.25\textwidth}}{Percentage CD271 Postive}\tabularnewline
\cmidrule{1-1}\cmidrule{3-4}\cmidrule{6-7}
BMMC & & 0 & 02 & & 1 & 78\tabularnewline
Cultured Bone Marrow & & 39 & 08 & & 5 & 70\tabularnewline
Commerical MSCs & & 99 & 51 & & 45 & 44\tabularnewline
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
正如其他人已经注意到的:在 LyX 生成的 LaTeX 代码中,表格定义\begin{tabular}
通过 创建 3 列p{...}
,但每行包含 5 列/单元格,例如对齐选项卡&
在第三行中出现了 4 次。因此,LaTeX 会抱怨额外的对齐选项卡。
你问你做错了什么……好吧,对于 LyX,实际上什么都没有。你只是打了一个漏洞!关于这个例子——好吧——最小化尽可能多地重复示例(在 LyX 中),使问题仍然存在,这总是有帮助的。在这种情况下,这意味着逐行删除行或列,直到问题消失,然后撤消最后一个操作(这样问题就会再次出现)。这样做将导致一个极简的表格。
现在我创造问题从头开始:
- 在 LyX 文档中,插入一个有 1 行 1 列(即只有一个单元格)的表格。
单击单元格内部并设置以下表格设置(例如通过编辑>表格设置...):将水平对齐方式设置为“小数点分隔符”,并将宽度设置为“50”“文本宽度%”。
回到表格,在单元格内输入数字“1.2”。
查看 LyX 中的 LaTeX 源预览,可能会发现以下问题:
\begin{tabular}{|p{0.5\textwidth}|}
\hline
1&2\tabularnewline
\hline
\end{tabular}
问题是LyX 中列的小数对齐和固定宽度的组合。
(请注意,稍后编辑表格并更改“宽度”设置时,水平对齐将重置为“中心” - 因此,没有小数对齐,也不会发生错误。将对齐方式设置回小数将再次显示问题。)
现在重复步骤 1.-3。但没有设置“宽度”,即保留此字段为空,将创建下表:
\begin{tabular}{|r@{\extracolsep{0pt}.}l|}
\hline
1&2\tabularnewline
\hline
\end{tabular}
它展示了 LyX 如何处理小数对齐,即,它创建两列并在小数点分隔符处拆分数字。
解决方法 1
给定一个表格,该表格应有一个具有小数对齐的列和一个长标题。
做不是设置列的宽度,即,将“宽度”字段留空,但将水平对齐方式设置为“在小数点分隔符处”。
转到/单击标题占用太多(水平)空间的单元格内部。
a) 通过菜单编辑 > 表格 > 多列进行选择。(实际上,可以在表格设置对话框中进行相同的设置,但那里是灰色的。)
b) 现在打开表格设置对话框,将“宽度”设置为适合您的任何值,例如“25”“文本宽度%”。使用这种方法,手动换行似乎没有必要!
下面是此类表格的图片和生成的 LaTeX 代码:
\begin{tabular}{|r@{\extracolsep{0pt}.}l|}
\hline
\multicolumn{2}{|>{\raggedright}p{0.5\textwidth}|}{a column that has decimal alignment and a long heading}\tabularnewline
\hline
\hline
1111&2\tabularnewline
\hline
3&4444\tabularnewline
\hline
\end{tabular}
请注意,更改小数分隔符时,您必须撤消上述多列设置,并在更改后重新执行。此外,小数分隔符似乎确实仅限于.
, ,
, ;
, :
。尝试使用一些更奇特的分隔符(如“/”)将在 LyX 中失败,并且不会出现错误消息。
解决方法 2将使用包dcolumn
。然后可以将列的“LaTeX 参数”字段设置为D{.}{.}{4..2}
,请参阅LyX 维基百科更多细节。