Abstandsprobleme in einer komplizierten Tabelle

Abstandsprobleme in einer komplizierten Tabelle

Ich habe eine Tabelle, in der ich in jede Zelle einer Spalte Listen einfüge und darauf bestehe, vertikale Linien zu verwenden. Derzeit habe ich das folgende 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}

Ich habe zwei Versionen:

  1. wodurch booktabsich einen mehr oder weniger angemessenen Abstand zwischen den Zeilenlinien, aber unterbrochene vertikale Linien (erwartet von booktabs) bekommeBildbeschreibung hier eingeben

  2. ohne booktabswodurch die unterbrochene vertikale Linie entfernt wird, aber der Zeilenabstand durcheinander gerät (die Zeilen liegen zu nahe an den horizontalen Linien, die sie trennen): Bildbeschreibung hier eingeben

Ich suche nach einem Zwischenprodukt, das:

  1. gibt mir den richtigen Abstand
  2. entfernt die unterbrochenen vertikalen Linien.

(Es muss eine lange Tabelle sein, da es viele weitere Einträge gibt, die zusammen mindestens drei Seiten umfassen würden.)

Antwort1

Mit Hilfe des tabularrayPakets:

Bildbeschreibung hier eingeben

Um den Abstand zwischen horizontaler Linie und Text anzupassen, verwenden Sie die Tasten abovesepund belowsepund. (Der Standardwert ist 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}

Antwort2

In Bezug auf die vertikalen Linien liegen Sie falsch, aber das ist Ihre persönliche Meinung.

Anstatt Miniseiten zu verwenden, müssen Sie störende Leerzeilen vor oder nach einer Liste entfernen.

\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}

Bildbeschreibung hier eingeben

Antwort3

Vielleicht ist diese Lösung mit dem cellspacePaket für Sie in Ordnung. Dieses Paket sorgt für einen minimalen vertikalen Abstand am oberen und unteren Rand von Zellen in Spalten mit Spezifizierern, die Sstandardmäßig mit dem Buchstaben beginnen (oder Cwenn Sie laden siunitx, oder mit einem beliebigen Buchstaben mit demcolumn=some letter ).

Ich habe auch die Umgebungen entfernt , die hier unnötig sind, da Sie den Spaltentyp minipageverwenden .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} 

Bildbeschreibung hier eingeben

Antwort4

Ich würde (a) alle vertikalen Balken entfernen – sie werden nicht benötigt und sie werden nicht vermisst – und (b) die Breite der mittleren Spalte als Residuum berechnen, um sicherzustellen, dass die Spaltenbreite maximiert wird.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen