使用 tabularx/arraystretch 进行垂直对齐

使用 tabularx/arraystretch 进行垂直对齐

我正在使用 tabularx 包来自定义我的表格。我更改了 的定义以tabularxcolumn使文本垂直居中。当我使用 时arraystretch,我的表格的粗体“标题”对齐得相当丑陋。我该如何解决这个问题?

  \documentclass[fleqn,10pt,twocolumn]{article} % Document font size and equations 
  \usepackage{tabularx}
  \usepackage[table]{xcolor}
  \usepackage{colortbl}
  \usepackage{enumitem}
  \renewcommand\tabularxcolumn[1]{m{#1}}
  \renewcommand\arraystretch{1.5} \setlength\minrowclearance{2.4pt} 

  \arrayrulecolor{blue}

  \newcolumntype{=}{>{\global\let\currentrowstyle\relax}}
  \newcolumntype{^}{>{\currentrowstyle}}
  \newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
    #1\ignorespaces
  }


  \begin{document}
  \begin{tabularx}{\linewidth}{|=l^X|@{}}
  \multicolumn{2}{>{\columncolor{blue}}c}{\color{white}\textbf{Table: Interfaces}} \\
  \hline
  \rowcolor{blue}
  \rowstyle{\color{white}\bfseries}
  \textbf{Interface} &\rowstyle{\color{white}}\textbf{Programming Languages}\\
  \texttt{.NET}
   & The blablab this is only some text to illustrate my problem:
   \begin{itemize}[topsep=-5pt,leftmargin=0.7cm,itemsep=0.8pt,labelsep=.5cm]
   \item C\#
   \item VB .NET
   \end{itemize}\\
  \texttt{JNI}
  & Some other text \\
   \hline
  \end{tabularx}
  \end{document}

有人能解释一下我什么时候需要插入这个@{}吗?我还是不明白。

答案1

在此处输入图片描述

你有过

Overfull \hbox (10.00002pt too wide) in paragraph at lines 34--35

由于您的表格是全宽但按段落缩进(10pt)缩进,我添加了\noindent

你不永远使用@{},但如果您使用它(或|),则需要保持一致。|添加规则并@{}删除通常的列间填充,默认情况下,该填充也会出现在第一列之前和最后一列之后。如果您使用这些,您还需要在规范中使用它们,\multicolumn以便跨越列获得与它们跨越的列相同的列间空间。

更新注意使用l单元格来确保标题的基线对齐)

有点不寻常Table:.. 表格而不是单独的标题,但我把它保留成这样:

 \documentclass[fleqn,10pt,twocolumn]{article} % Document font size and equations 
  \usepackage{tabularx}
  \usepackage[table]{xcolor}
  \usepackage{colortbl}
  \usepackage{enumitem}
  \renewcommand\tabularxcolumn[1]{m{#1}}
  \renewcommand\arraystretch{1.5} \setlength\minrowclearance{2.4pt} 

  \arrayrulecolor{blue}

  \newcolumntype{=}{>{\global\let\currentrowstyle\relax}}
  \newcolumntype{^}{>{\currentrowstyle}}
  \newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
    #1\ignorespaces
  }


  \begin{document}

  \noindent X\dotfill X

  \noindent
  \begin{tabularx}{\linewidth}{@{}|=l^X|@{}}
  \multicolumn{2}{@{}|>{\columncolor{blue}}c|@{}}{\color{white}\textbf{Table: Interfaces}} \\
  \hline
  \rowcolor{blue}
  \rowstyle{\color{white}\bfseries}
  \textbf{Interface} &\multicolumn{1}{l|@{}}{\textcolor{white}{\textbf{Programming Languages}}}\\
  \texttt{.NET}
   & The blablab this is only some text to illustrate my problem:
   \begin{itemize}[topsep=-5pt,leftmargin=0.7cm,itemsep=0.8pt,labelsep=.5cm]
   \item C\#
   \item VB .NET
   \end{itemize}\\
  \texttt{JNI}
  & Some other text \\
   \hline
  \end{tabularx}
  \end{document}

相关内容