将表格的顶行与列表中的项目标签对齐

将表格的顶行与列表中的项目标签对齐

我使用枚举环境创建了一个列表,其中每个项目都包含一个使用表格环境创建的表格。每个表格的第一行应与项目标签 (a)、(b) 等对齐。如果表格以 \hline 开头,则情况并非如此。在这种情况下,我该如何修复对齐问题?

\documentclass{article}
\usepackage{enumerate} 
\begin{document}
\begin{enumerate}[(a)]
\item 
   \begin{tabular}[t]{|c|c|}
     a & b \\  \hline c & d  \\ \hline
   \end{tabular}
\item 
   \begin{tabular}[t]{|c|c|} 
     \hline e & f \\ \hline g & h \\ \hline
   \end{tabular}
\end{enumerate}
\end{document}

平均能量损失

答案1

我只需要解决这个问题,而“The LaTeX Companion”(第二版)在第 280 页有答案。该[t]选项将表格与\hline文本的基线对齐,而不是与文本的基线对齐。该array软件包有命令\firsthline可以纠正这个问题:

\documentclass{article}
\usepackage{enumerate,array} 
\begin{document}
\begin{enumerate}[(a)]
\item 
   \begin{tabular}[t]{|c|c|}
     a & b \\  \hline c & d  \\ \hline
   \end{tabular}
\item 
   \begin{tabular}[t]{|c|c|} 
     \firsthline e & f \\ \hline g & h \\ \hline
   \end{tabular}
\end{enumerate}
\end{document}

结果如下:

一线修复

答案2

使用{NiceTabular}nicematrix您将直接获得预期的输出。

\documentclass{article}
\usepackage{nicematrix}
\usepackage{enumerate} 
\begin{document}

\begin{enumerate}[(a)]
\item 
   \begin{NiceTabular}[t]{|c|c|}
     a & b \\  \hline c & d  \\ \hline
   \end{NiceTabular}
\item 
   \begin{NiceTabular}[t]{|c|c|} 
     \hline e & f \\ \hline g & h \\ \hline
   \end{NiceTabular}
\end{enumerate}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

答案3

我不知道您的问题的原因是什么,但是解决方法是使用\fbox顶部/底部(以及垂直外线)表格\hline

\documentclass{article}
\usepackage{enumerate}
\newcommand\tabbox[1]{\setlength\fboxsep{0pt}\fbox{#1}} % <-- new

\begin{document}
\begin{enumerate}[(a)]
\item
   \begin{tabular}[t]{|c|c|}
     a & b \\  \hline c & d  \\ \hline
   \end{tabular}
\item
   \tabbox{\begin{tabular}[t]{c|c} % <-- new
            e & f \\ \hline g & h \\
           \end{tabular}}
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容