在表格单元格中居中对齐

在表格单元格中居中对齐

我希望在具有两列纸质模板的表格中,将第一列和第二列的内容居中对齐到相应的单元格内,如下所示。

预期的

当前表格如下。 当前的

以下是代码:

\documentclass[journal]{IEEEtran}
\usepackage{caption}
\usepackage{tabularx}
\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

为了实现类型列中的材料的垂直居中c,我建议您执行

\renewcommand\tabularxcolumn[1]{m{#1}}

该包的用户指南对此进行了更详细的解释tabularx

我还建议您完成\multirow命令,并在标题行中分别更改\textbf{$q_i$}\boldmath$q_i$和更改\textbf{Definition of $z_i$}\boldmath\bfseries Definition of $z_i$。并且,请将第 2 列更改$q_i$ = 1$q_i = 1$等。我还建议您删除似是而非的\centering指令,并将其更改\captionof{table}{...}为。(由于您正在使用环境\caption{...},因此没有必要。)最后但并非最不重要的是,考虑将指令添加到表格,这样表格的“外观”就不会那么压缩。\captionoftable\setlength\extrarowheight{2pt}

在此处输入图片描述

\documentclass[journal]{IEEEtran}
\usepackage{caption}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}} % <-- new
\usepackage{multirow}
\begin{document}

\begin{table}[h]
\setlength\extrarowheight{2pt}
\caption{Table of $q$ and $z$}
\label{tab:table_q_and_z}
\noindent
\begin{tabularx}{\columnwidth} { | c | c | >{\raggedright\arraybackslash}X |}
  \hline
  \textbf{Steps} & \boldmath$q_i$ & \boldmath\bfseries Definition of $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}

附录解决表格中的一些其他问题:

  • IEEEtran 文档类与该包仅勉强兼容caption。除非您计划提交论文的期刊明确允许您使用该包,否则请不要使用该包。

  • IEEEtran 类使用 Times Roman 作为默认文本字体,但使用 Computer Modern 作为默认数学字体。从视觉/美学角度来说,这两种字体并不完全匹配。我建议\usepackage{newtxtext,newtxmath}在序言中执行以将 Times Roman 用于文本和数学。

  • 考虑删除表格中的所有垂直线和大多数水平线,以便使表格看起来更加开放和吸引人。我建议您使用包的线条绘制宏来booktabs代替\hline\cline

  • 使用大胆的在标题行中,这样做不会起到多大作用,只会冒着让整个表格看起来笨拙且粗俗的风险。不要过度使用粗体;对于手头的表格,我认为任何需要加粗显示。

实施这些想法,取消第 1 列和第 2 列的垂直居中,并将第 1 列和第 2 列的内容左对齐,将创建以下外观。我希望你会同意我的观点,即该表格看起来比上面发布的表格更具吸引力和吸引力。

在此处输入图片描述

\documentclass[journal]{IEEEtran}
\usepackage{tabularx}
\usepackage{newtxtext,newtxmath}
\usepackage{booktabs} % for well-spaced horizontal rules
\usepackage{lipsum}   % filler text

\begin{document}

\begin{table}[h]

\caption{Table of $q$ and $z$}
\label{tab:table_q_and_z}

\begin{tabularx}{\columnwidth} { @{} 
      lll 
      @{\hspace{\tabcolsep}} 
      >{\raggedright\arraybackslash}X 
      @{}}

   \toprule
   Steps & $q_i$ 
   & \multicolumn{2}{l}{Definitions of $z_i$ and $z_n$}\\
   
   \midrule
   
   $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)$ \\
   
   \addlinespace
   
   $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$ \\
   
   \bottomrule
   
\end{tabularx}
\end{table}

\lipsum

\end{document}

答案2

该包nicematrix提供了一个{NiceTabularX}类似于{tabularx}(包的tabularx)环境的环境,但除了其他功能外,还具有向列添加选项的能力X。使用X[l,m],您将拥有一个X表现为m左侧水平对齐的列。

\documentclass[journal]{IEEEtran}
\usepackage{caption}
\usepackage{nicematrix}
\begin{document}

\begin{table}[h]
\captionof{table}{Table of $q$ and $z$}
\label{tab:table_q_and_z}
\noindent
\begin{NiceTabularX}{\columnwidth} {|c|c|X[m,l]|}
  \hline
  \textbf{Steps} & \textbf{$q_i$} & \textbf{Definition of $z_i$}  \\
  \hline
  \Block{2-1}{$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
   \Block{2-1}{$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{NiceTabularX}
\end{table}
\end{document}

上述代码的输出

booktabs不过,我建议使用符合以下精神的表格booktabs(参见 Mico 的回答)。

答案3

作为对 @Mico 答案(+1)的补充,但使用了tabularraybm包:

  • 代码稍微短一点
  • tabularray启用列规范的语法来定义数学列和单元格内容的简单垂直居中(选项m
  • 表格行在表格前言中定义
\documentclass[journal]{IEEEtran}
\usepackage{tabularray}
\usepackage{bm}

\begin{document}
    \begin{table}[h]
    \caption{Table of $q$ and $z$}
    \label{tab:table_q_and_z}
\begin{tblr}{hlines, vlines,
             colspec = { *{2}{Q[c, mode=math]}  X[l, m]},
             row{1}  = {font=\bfseries, mode=text},
             rowsep  = 3pt,
             }
Steps & $\bm{q_i}$ &   Definition of $\bm{z_i}$       \\
\SetCell[r=2]{c}    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)$ \\
\SetCell[r=2]{c}    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}

在此处输入图片描述

相关内容