如何防止 \hline 超出表格边缘?

如何防止 \hline 超出表格边缘?

这是我的最小工作示例:

\documentclass{article}
\usepackage{tabularx}
\usepackage{pdflscape}
\begin{document}
\small
\begin{tabularx}{1.33\textwidth}{ |c|c|c|c| }
  \hline
    Date            & Type  & Color & Notes \\
  \hline
\end{tabularx}
\end{document}

输出 : 在此处输入图片描述

注意\hline越过第四列。

问题:如何使其\hline在最后一列末尾终止?

答案1

您有几个选择。最简单的是,如果您确实想使用tabularx,则必须使用至少一个“X”列。例如:

\documentclass{article}
\usepackage{tabularx}
\usepackage{pdflscape}
\begin{document}
\small
\begin{tabularx}{1.33\textwidth}{|c|c|c|X|}
  \hline 
   Date & Type  & Color & Notes \\
  \hline
\end{tabularx}
\end{document}

答案2

  • 目前尚不清楚,您的表格内容是什么。
  • 每个表格的单元格是否只有一行文本?如果是这样,那么 tabular` 将解决您的问题:
\documentclass{article}
\usepackage{tabularx}
\usepackage{pdflscape}

\begin{document}
\small
\begin{tabular}{|c|c|c|c|}
  \hline 
   Date & Type  & Color & Notes \\
  \hline
\end{tabular}
\end{document}

在此处输入图片描述

  • 在某些情况下,例如,最后一列单元格的内容是多行文本,那么使用tabularx可能是方便的解决方案。在这种情况下,至少有一列必须是X(或从中派生,如下例所示)类型:
\documentclass{article}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage{pdflscape}

\usepackage{lipsum}

\begin{document}
\small
\begin{tabularx}{\linewidth}{|c|c|c|X|}
    \hline
Date     & Type      & Color & Notes         \\
    \hline
today    & Unknown   & b/w   & \lipsum[66]   \\
    \hline
\end{tabularx}
\end{document}

(观察确定表格宽度的区别,\linewidth它总是适应表格的可用空间;无论它是纵向还是横向)

在此处输入图片描述

  • 您可以考虑使用tabularray,这是一个功能强大的新 LaTeX-3 包,用于编写表格。使用它,第二个示例(略微重新设计)可以是:
\documentclass{article}
\usepackage{tabularray}

\usepackage{lipsum}

\begin{document}
    \begin{table}[ht]
\begin{tblr}{hline{1,2,Z} = 0.6pt, hline{3-Y}=solid,
             vlines,
             colspec = {c c c X[j]},
             row{1} = {font=\bfseries}
             }
Date     & Type      & Color & Notes         \\
yesterday& Unknown   & b/w   & \lipsum[11]   \\
today    & Unknown   & b/w   & \lipsum[66]   \\
\end{tblr}
    \end{table}
\end{document}

(如您所见,使用tabularray包时不需要指定表格宽度,如果需要,其宽度等于可用空间)

相关内容