最后一个垂直边框似乎没有关闭我的表格,我该怎么办?

最后一个垂直边框似乎没有关闭我的表格,我该怎么办?

我的桌子好像出了问题。

在此处输入图片描述

这是我为其编写的代码,有人可以告诉我如何修复和改进它吗?

\begin{tabular*}{0.85\textwidth}{|p{0.075\textwidth}|p{0.3\textwidth}|p{0.075\textwidth}|p{0.4\textwidth}|}
\hline
\centering Motto&&& \\ \hline
\centering Class Number&& \centering Full Name& \\ \hline
\end{tabular*}

我知道我在这方面是个新手但我真的想学习。

答案1

我的评论作为答案:

环境tabular*以指定的宽度作为其参数。水平线的长度与此宽度相同。垂直线插入在列之后,因此如果列的总宽度与环境的宽度不匹配tabular*,它们将不会与水平线的末尾对齐。

一个简单的解决方案是使用tabularx包。它提供了tabularx环境,也以它应该占用的宽度作为参数,但提供了列说明符X,它就像一个,p但占用了可用空间。您可以将其中一列更改为所述X类型:

\documentclass[]{article}

\usepackage{tabularx}

\begin{document}
\noindent
\begin{tabularx}{0.85\textwidth}{|p{0.075\textwidth}|p{0.3\textwidth}|p{0.075\textwidth}|X|}
\hline
\centering Motto&&& \\ \hline
\centering Class Number&& \centering Full Name& \\ \hline
\end{tabularx}
\end{document}

在此处输入图片描述

您的表格太宽的原因是您忘记考虑\tabcolsep插入在列之间的 s。此外,如果array加载了包(这是许多与表格相关的包的依赖项,例如tabularx),垂直规则也会影响宽度。因此,要使您的tabular*方法(和加载的array.sty)一切正确,您必须根据\tabcolsep添加的 s 计算列的宽度(如果您不使用任何@符号来更改列之间的内容,则每列两个 s)——以下计算是使用 完成的\dimexpr

\begin{tabular*}{0.85\linewidth}
  {
    |p{0.075\linewidth}
    |p{0.3\linewidth}
    |p{0.075\linewidth}
    |p{\dimexpr0.85\linewidth-0.075\linewidth-0.3\linewidth-0.075\linewidth-8\tabcolsep-5\arrayrulewidth\relax}|
  }

当然你可以把它缩短为\dimexpr0.4\linewidth-8\tabcolsep-5\arrayrulewidth\relax。如果没有 loaded,array.sty你就必须省略\arrayrulewidth

\begin{tabular*}{0.85\linewidth}
  {
    |p{0.075\linewidth}
    |p{0.3\linewidth}
    |p{0.075\linewidth}
    |p{\dimexpr0.4\linewidth-8\tabcolsep\relax}
  }

这些应该给出与上述方法相同的结果tabularx,但使用tabularx似乎更容易......

相关内容