表 Tabularx 中未定义的控制序列

表 Tabularx 中未定义的控制序列

我想创建一个表www.overleaf.com 带有编译器 pdfLaTeX TeX Live 版本 2022。

这是代码。

\documentclass[journal]{IEEEtran}
\begin{document}

\begin{table}[h]
\captionof{table}{Table of $q$ and $z$}
\label{tab:table_q_and_z}
\noindent
\begin{tabularx}{\columnwidth} { | c | c | >{\raggedright\arraybackslash}X |}
  \hline
  \textbf{Steps} & \textbf{$q_i$} & \textbf{Definition of $z_i$}  \\
  \hline
  \multirow{$i \leq (n-1)$}  & $q_i$ = 0 & $z_i$ = number of \emph{emptied} chambers at the \emph{cleaning} place $i \leq (n-1)$ \\
  \cline{2-3}
                  & \centering $q_i$ = 1 & $z_i$ = number of \emph{loaded} chambers at the \emph{processing} place $i \leq (n-1)$ \\
  \hline
   $i=n$  & $q_{n}$ = 0 & $z_n$ = number of \emph{loaded} chambers at the \emph{processing} place $n$ \\
   \cline{2-3}
                & $q_{n}$ = 1 & $z_{n}$ = number of \emph{emptied} chambers at the \emph{cleaning} place $n$ \\
  \hline
\end{tabularx}
\end{table}

\end{document}

出现错误:“未定义的控制序列”,如下所示。

错误

但是表格打印效果如下。

结果

有人能告诉我代码需要修改什么吗?

谢谢。

答案1

有几个问题。

首先,宏\captionof是在caption包中定义的,但这个包没有在序言中加载。由于该caption包与文档类不完全兼容IEEEtran,所以最好不要加载它。补救措施?只需替换

\captionof{table}{Table of $q$ and $z$}

\caption{Table of $q$ and $z$}

其次,您没有加载tabularxmultirow包,它们分别定义tabularx环境和\multirow宏,它们也出现在您的测试文档中。

第三,你使用不\multirow正确。它需要 3 个参数,而不是一个。

修复这些问题并执行更多清理工作(例如删除杂散\centering指令、删除不必要的\noindent指令以及在标题行中更改为\textbf{$q_i$}$\bm{q}_i$将产生以下输出。

最后不是错误本身,但有一个相当突出的风格问题:IEEEtran文档类使用 Times Roman 作为主要文本字体系列,但使用 Computer Modern 作为主要数学字体系列。从美学上讲,Times Roman 和 Computer Modern 的融合并不特别好。您可能需要考虑运行

\usepackage{newtxtext,newtxmath}

在序言中采用互相兼容的 Times Roman 文本和数学字体系列。

在此处输入图片描述

\documentclass[journal]{IEEEtran}
\usepackage{tabularx,multirow,bm}
\renewcommand\tabularxcolumn[1]{m{#1}}

\begin{document}

\begin{table}[h]
\caption{Table of $q$ and $z$}
\label{tab:table_q_and_z}
% \noindent % <-- has no effect
\begin{tabularx}{\columnwidth} { | c | c | >{\raggedright\arraybackslash}X |}
  \hline
  \textbf{Steps} & $\bm{q}_i$ & \textbf{Definition of $\bm{z}_i$}  \\
  \hline
  \multirow{3}{*}{$i \leq (n-1)$}  
     & $q_i$ = 0 
     & $z_i$ = number of \emph{emptied} chambers at the \emph{cleaning} place $i \leq (n-1)$ \\
  \cline{2-3}
     & $q_i$ = 1 
     & $z_i$ = number of \emph{loaded} chambers at the \emph{processing} place $i \leq (n-1)$ \\
  \hline
  \multirow{3}{*}{$i=n$}  
     & $q_{n}$ = 0 
     & $z_n$ = number of \emph{loaded} chambers at the \emph{processing} place $n$ \\
  \cline{2-3}
     & $q_{n}$ = 1 
     & $z_{n}$ = number of \emph{emptied} chambers at the \emph{cleaning} place $n$ \\
  \hline
\end{tabularx}
\end{table}

\end{document}

答案2

使用tabularray包后表代码简单而简短:

\documentclass[journal]{IEEEtran}
\usepackage{tabularray}
\usepackage{bm}

\begin{document}
    \begin{table}[ht]
    \caption{Table of $q$ and $z$}
    \label{tab:table_q_and_z}
\begin{tblr}{hlines, vlines,
             colspec = { *{2}{Q[c, mode=math]} X[j, m, cmd=\hangindent 1.5em\hangafter 1]},
             cell{even[2]}{1} = {r=2}{},
             row{1}  = {font=\bfseries, mode=text}
             }
Step            &   $\bm{q}_i$  &   Definition of $\bm{z}_i$    \\
i \leq (n-1)    &   q_i = 0     & $z_i$: number of \emph{emptied} chambers at the \emph{cleaning} place $i \leq (n-1)$  \\
                &   q_i = 1     & $z_i$: number of \emph{loaded} chambers at the \emph{processing} place $i \leq (n-1)$ \\
i=n             &   q_{n} = 0   & $z_n$: number of \emph{loaded} chambers at the \emph{processing} place $n$    \\
                &   q_{n} = 1   & $z_n$: number of \emph{emptied} chambers at the \emph{cleaning} place $n$         \\
\end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

或不带cmd=\hangindent 1.5em\hangafter 1第三列规格选项:

在此处输入图片描述

相关内容