Tabular* \extracolsep 被忽略,表格边框无法很好地衔接

Tabular* \extracolsep 被忽略,表格边框无法很好地衔接

我正在尝试使用一个tabular*环境来创建一个简单的表格,该表格具有两个相距一定距离的居中列,以便表格填满整个页面。

\documentclass{article}
\begin{document}

  \fbox{

    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill} } | c | c | }
    \hline
    \Large{Supervisor} & \Large{Student} \\
    \hline
    \Large{prof. X Y Z} & \Large{A B C} \\
    \hline
    \end{tabular*}

  }

\end{document}

最终看起来是这样的:

在此处输入图片描述

请注意,表格不仅没有正确地分隔单元格,而且表格的顶线和左线也没有到达合适的角落。

(我不太在意边框不相交,因为这个表最终不会显示它们,但我在这里画它们以帮助调试。)

其他人的机器上的类似表格看起来不错,所以也许我的系统缺少了一些东西?

答案1

你正在添加很多额外的空间

在此处输入图片描述

\documentclass{article}
\begin{document}

\setlength\fboxsep{0pt}

\noindent
\hspace*{-\fboxrule}%SPACE
  \fbox{%SPACE
%SPACE
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}%SPACE
} | c | c | }
    \hline
    \Large Supervisor & \Large Student  \\
    \hline
    \Large prof. X Y Z & \Large A B C \\
    \hline
    \end{tabular*}%SPACE
%SPACE
  }%SPACE
\hspace*{-\fboxrule}%SPACE

\end{document}

答案2

这就是您所寻找的吗?

\documentclass{article}
\begin{document}

\bgroup
\Large 
\setlength{\tabcolsep}{0pt}%
\sbox0{\begin{tabular}{|c|c|}% measure width
Supervisor & Student \\
prof. X Y Z & A B C \\
\end{tabular}}%
\setlength{\tabcolsep}{\dimexpr \textwidth-\wd0}%
\divide\tabcolsep by 4
\noindent\begin{tabular}{|c|c|}
    \hline
    Supervisor & Student \\
    \hline
    prof. X Y Z & A B C \\
    \hline
    \end{tabular}
\egroup

\end{document}

演示


这是一种稍微简单的方法,将表格分成两个相等的列。

\documentclass{article}
\newlength{\tempdima}
\begin{document}

\bgroup
\Large 
\setlength{\tempdima}{\dimexpr 0.5\textwidth-2\tabcolsep-1.5\arrayrulewidth}%
\noindent\begin{tabular}{|c|c|}
    \hline
    \makebox[\tempdima][c]{Supervisor} & \makebox[\tempdima][c]{Student} \\
    \hline
    prof. X Y Z & A B C \\
    \hline
    \end{tabular}
\egroup

\end{document}

答案3

既然你显然不想在最后制定规则,我提出三点建议。使用宏是一种很好的方法,可以推迟最后的决定,而无需更改文档本身。

\documentclass{article}
\usepackage{showframe} % in order to see the page margins

\newcommand{\supervisorstudentA}[2]{%
  \par\noindent
  \begin{tabular}[t]{@{}c@{}} Supervisor \\ prof.\ #1 \end{tabular}\hfill
  \begin{tabular}[t]{@{}c@{}} Student \\ #2 \end{tabular}\par
}
\newcommand{\supervisorstudentB}[2]{%
  \par\noindent
  \hspace*{4em}
  \begin{tabular}[t]{@{}c@{}} Supervisor \\ prof.\ X Y Z \end{tabular}\hfill
  \begin{tabular}[t]{@{}c@{}} Student \\ A B C \end{tabular}%
  \hspace*{4em}\par
}
\newcommand{\supervisorstudentC}[2]{%
  \par\noindent
  \hspace*{\stretch{0.25}}%
  \makebox[0pt]{\begin{tabular}[t]{@{}c@{}} Supervisor \\ prof.\ X Y Z \end{tabular}}%
  \hspace*{\stretch{0.5}}%
  \makebox[0pt]{\begin{tabular}[t]{@{}c@{}} Student \\ A B C \end{tabular}}%
  \hspace*{\stretch{0.25}}\par
}

\begin{document}

\supervisorstudentA{X Y Z}{A B C}

\bigskip

\supervisorstudentB{X Y Z}{A B C}

\bigskip

\supervisorstudentC{X Y Z}{A B C}

\end{document}

在第三个中,这两个部分正好位于文本宽度的一半的中间。

在此处输入图片描述

相关内容