我正在尝试显示一个表格,其中包含:
- 两列数学表达式
- 一列用于方程标签
- 使用 tabularx
我主要遵循我所看到的内容这里
但是,它仍然给我带来麻烦。我查看了文档tabularx
,但它主要与列的可调宽度有关,我可能错了,但我不认为这是问题所在。我觉得问题在于newcolumntype
我们正在定义的地方。但是,即使阅读了文档,我仍然看不出我做错了什么。有人能帮我确定为什么它不会显示为一个只有两列数学和一列标签的简单表格吗?
这是我的最小工作示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{geometry}
\usepackage{makecell}
\usepackage{multirow}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{tabularx}
\setcellgapes{3pt}\makegapedcells
\usepackage{array,collcell}
\newcommand\AddLabel[1]{%
\refstepcounter{equation}% increment equation counter
(\theequation)% print equation number
\label{#1}% give the equation a \label
}
\newcolumntype{M}{>{\hfil$\displaystyle}X<{$\hfil}} % mathematics column
\newcolumntype{L}{>{\collectcell\AddLabel}r<{\endcollectcell}}
\geometry{legalpaper, landscape, margin=0.5in}
\begin{document}
\begin{table}[]
\caption {x and y} \label{tab:my_table}
\begin{tabularx}\textwidth{@{}lML@{}}
\toprule
\textbf{Variable 1} & \textbf{Variable 2} & \textbf{label} \\
\midrule
$x$ & $y$ & eq:xy \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
现在,当我运行它时,它会生成一个像这样的 aux 文件:
relax
\bbl@cs{beforestart}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces x and y}}{1}\protected@file@percent }
\newlabel{tab:my_table}{{1}{1}}
\newlabel{tab:my_table@cref}{{[table][1][]1}{[1][1][]1}}
\newlabel{\textbf {label}}{{1}{1}}
\newlabel{\textbf {label}@cref}{{[equation][1][]1}{[1][1][]1}}
\newlabel{eq:xy}{{2}{1}}
\newlabel{eq:xy@cref}{{[equation][2][]2}{[1][1][]1}}
\babel@aux{english}{}
投诉是
(./new_file.aux
! Missing \endcsname inserted.
<to be read again>
\protect
l.5 \newlabel{\textbf {label}}{{1}{1}}
?
即使我删除aux
文件或尝试编辑它,问题仍然存在。我该怎么做才能解决这个问题?
谢谢。
答案1
您已将 L 列应用于\label
每个条目,但您不想对标题执行此操作,因此请将该单元格替换为L
:c
\multicolumn{1}{c}{\textbf{label}}