複雜表格中的間距問題

複雜表格中的間距問題

我有一個表格,其中列的每個單元格中都包含列表,並且我堅持使用垂直線。目前我有以下MWE:

\documentclass[11pt]{article}

\usepackage[margin=20mm]{geometry}
% \usepackage{booktabs}
\usepackage{enumitem}
\usepackage{longtable}

\begin{document}

\begin{longtable}{|p{0.05\textwidth}|p{.75\textwidth}|p{0.10\textwidth}|}
  % \toprule
  \hline
    Serial No.\ & Assignment Name & Date \\
    % \midrule
    \hline

    1 
    & 
    \begin{minipage}[t]{\linewidth}
      Foo bar
      \begin{enumerate}[nosep,after=\strut]
      \item foo
      \item foo
      \item bar
      \item bar
    \end{enumerate}
    \end{minipage}
    & 
    10.01.2022\\
    % \midrule
    \hline

    2
    &
    \begin{minipage}[t]{\linewidth}
      \begin{enumerate}[nosep, after=\strut, label=(\Alph*)]
        \item 
        Given two sequences:
        \[ x_1 = \{\mathbf{2}, 2, 1, 2 \} \]
        \[ x_2 = \{\mathbf{-2}, -1, 3, 2 \} \]
      \end{enumerate} 
      % other items...
      Find their convolution
    \end{minipage}
    &
    17.01.2022\\
    %\bottomrule
    \hline
\end{longtable}
\end{document}

我有兩個版本:

  1. booktabs給了我或多或少適當的行線之間的間距,但不連續的垂直線(預期booktabs在此輸入影像描述

  2. 如果沒有booktabs它,會刪除不連續的垂直線,但會弄亂行間距(行距離分隔它們的水平線太近): 在此輸入影像描述

我正在尋找一個介於兩者之間的:

  1. 給我適當的間距
  2. 刪除不連續的垂直線。

(它需要很長的表,因為有更多的條目,這些條目加起來至少會跨越 3 頁。)

答案1

在包包的幫助下tabularray

在此輸入影像描述

若要調整水平線和文字之間的間距,請使用abovesepbelowsep和 鍵。 (預設值為2pt。)

\documentclass[11pt]{article}

\usepackage[margin=20mm]{geometry}

\usepackage{enumitem}
\newlist{tabenum}{enumerate}{1}
\setlist[tabenum]{label*=\arabic*.,
                  leftmargin=*,
                  nosep,
                  before=\begin{minipage}[t]{\hsize},
                  after=\end{minipage}}

\usepackage{tabularray}
\UseTblrLibrary{varwidth}

\begin{document}

\begin{longtblr}{colspec={l X l}, hlines, vlines, measure = vbox}
    {Serial\\ No.} & Assignment Name & Date \\
    1 
    & 
      Foo bar
      \begin{tabenum}
      \item foo
      \item foo
      \item bar
      \item bar
    \end{tabenum}
    & 
    10.01.2022\\

    2
    &
      \begin{tabenum}[label=(\Alph*)]
        \item 
        Given two sequences:
        \[ x_1 = \{\mathbf{2}, 2, 1, 2 \} \]
        \[ x_2 = \{\mathbf{-2}, -1, 3, 2 \} \]
      \end{tabenum} 
       %other items...
      Find their convolution
    &
    17.01.2022\\
\end{longtblr}
\end{document}

答案2

你對垂直線的看法是錯的,但這是個人觀點。

您需要刪除清單之前或之後的虛假空白行,而不是使用小型頁。

\documentclass[11pt,draft]{article}

\usepackage[margin=20mm]{geometry}
\usepackage{enumitem}
\usepackage{longtable}
\usepackage{amsmath}

\begin{document}

\begin{longtable}{|c|p{.75\textwidth}|l|}
\hline
\begin{tabular}[t]{@{}c@{}}Serial \\ No.\end{tabular} & Assignment Name & Date \\
\hline
1 &
  Foo bar
  \begin{enumerate}[nosep,after=\vspace*{-\baselineskip}]
    \item foo
    \item foo
    \item bar
    \item bar
  \end{enumerate} & 
  10.01.2022\\
\hline
2 & 
  \begin{enumerate}[nosep, wide, label=(\Alph*),before=\vspace*{-\baselineskip}]
    \item Given two sequences:
      \begin{gather*}
        x_1 = \{\mathbf{2}, 2, 1, 2 \} \\
        x_2 = \{\mathbf{-2}, -1, 3, 2 \}
      \end{gather*}
    \item Given two sequences:
      \begin{gather*}
        x_1 = \{\mathbf{2}, 2, 1, 2 \} \\
        x_2 = \{\mathbf{-2}, -1, 3, 2 \}
      \end{gather*}
  \end{enumerate} 
  Find their convolution &
  17.01.2022\\
\hline
\end{longtable}

\end{document}

在此輸入影像描述

答案3

也許這個帶有cellspace軟體包的解決方案適合您。該套件可確保列中單元格頂部和底部的最小垂直間距,S預設會帶有以字母為前綴的說明符(或C如果您加載siunitx, 或您喜歡的任何字母column=some letter)。

我還刪除了 minipage這裡不必要的環境,因為您使用了p列類型。

    \documentclass[11pt]{article}

    \usepackage[margin=20mm]{geometry}
    \usepackage{enumitem}
    \usepackage{longtable}
    \usepackage{cellspace}
    \setlength{\cellspacetoplimit}{8pt}
    \setlength{\cellspacebottomlimit}{8pt}


    \begin{document}

    \begin{longtable}{|p{0.05\textwidth}|S{p{.75\textwidth}}|p{0.10\textwidth}|}
      % \toprule
      \hline
        Serial No.\ & Assignment Name & Date \\
        % \midrule
        \hline
        1
        &
          Foo bar
          \begin{enumerate}[nosep,after=\strut]
          \item foo
          \item foo
          \item bar
          \item bar
        \end{enumerate}
        &
        10.01.2022\\
        \hline
    %
        2
        & \begin{enumerate}[nosep, after=\strut, label=(\Alph*)]
            \item
            Given two sequences:
            \[ x_1 = \{\mathbf{2}, 2, 1, 2 \} \]
            \[ x_2 = \{\mathbf{-2}, -1, 3, 2 \} \]
          \end{enumerate}
          % other items...
          Find their convolution
        &
        17.01.2022 \\
        \hline
    \end{longtable}

    \end{document} 

在此輸入影像描述

答案4

我會(a)去掉所有垂直條——它們不是必需的,也不會被錯過——並且(b)計算中間列的寬度作為殘差,以確保列的寬度是最大化。

在此輸入影像描述

\documentclass[11pt]{article}

\usepackage[margin=20mm]{geometry}
\usepackage{booktabs,enumitem,longtable,amsmath}
\newlength\mylenA
\settowidth\mylenA{Serial No.}
\newlength\mylenB
\settowidth\mylenB{10.01.2022}

\begin{document}

\begin{longtable}{@{} p{\mylenA}
                      p{\dimexpr\textwidth-\mylenA-\mylenB-4\tabcolsep\relax}
                      p{\mylenB} @{}}
  \toprule
  Serial No. & Assignment Name & Date \\
  \midrule
  \endhead
    
  \bottomrule
  \endlastfoot

    1 
    & 
    \begin{minipage}[t]{\linewidth}
      Foo bar
      \begin{enumerate}[nosep,after=\strut]
      \item foo
      \item foo
      \item bar
      \item bar
    \end{enumerate}
    \end{minipage}
    & 
    10.01.2022 \\
    \midrule

    2
    &
    \begin{minipage}[t]{\linewidth}
      \begin{enumerate}[nosep, after=\strut, label=(\Alph*)]
        \item 
        Given two sequences:
        \[ 
        \begin{aligned}
          x_1 &= \{\mathbf{2},   2, 1, 2 \} \\
          x_2 &= \{\mathbf{-2}, -1, 3, 2 \}
          \end{aligned}
        \]
      % other items...
      Find their convolution
      \end{enumerate}
    \end{minipage}
    &
    17.01.2022\\

\end{longtable}
\end{document}

相關內容