0

I'm in the table hell. As I started to implement my tables within Latex, I realized that some are just too big to fit on one page. Unfortunately it does not page-break at all.

I've found suggestions to use longtable instead, although I am not able to get the same layout as with tabularx. Is there a way to apply the same settings etc. so my table looks exactly the same...

Could anyone provide me with tips on how to achieve this? In the end I don't care about the packages, my tables should just break when they're too long...

Example:

enter image description here

My latex code:


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%           Präambel                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{scrreprt}

%%%%%%%%%%%%%%%%%%%%%%%%%
%       Packages        %
%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[bmargin=1.5cm,tmargin=1.5cm, headheight=1cm, includehead, includefoot]{geometry} %Seitenränder definieren
\usepackage[T1]{fontenc}
\usepackage[table,xcdraw]{xcolor}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{colortbl}
\usepackage{tablestyles}
\usepackage{adjustbox}
\usepackage{lmodern}
\usepackage[ngerman, english]{babel}
\usepackage[toc]{glossaries}
\usepackage{float} %Unterdrückt das Fliessen eines Bildes wenn statt "h" "H" als float angegeben wird.
\usepackage{pdfpages}
\usepackage{amstext}
\usepackage{lineno}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage[square,sort&compress,comma,numbers]{natbib}
\usepackage[manualmark]{scrlayer-scrpage}
\usepackage{lipsum}
\usepackage{fontspec}
\usepackage{listings}
\usepackage{svg}
\usepackage{import}
\usepackage[font=small]{caption}
\usepackage{pdfpages}
\usepackage[colorlinks, urlcolor=blue, linkcolor=black, citecolor=black]{hyperref}
\usepackage[german, noabbrev, nameinlink]{cleveref} %Automatische Verweise mit \cref{} oder \cpageref{} auf \label{}. Bei englischer Arbeit muss "german" durch "english" ersetzt werden.
\usepackage [english]{babel}
\usepackage [autostyle, english = american]{csquotes}
\usepackage{colortbl}
%%%%%%%%%%%%%%%%%%%%%%%%%
%   Konfigurationen     %
%%%%%%%%%%%%%%%%%%%%%%%%%

%Kopfzeile und Fusszeile
\ihead*{\hspace{-0.7cm}\raisebox{-0.1\height}[-0pt][0pt]{\includegraphics{Bilder/FHNWLogo.jpg}}}
\cfoot*{\pagemark}

%Kapitel-Abstand zu Kopfzeile verkleinern
\RedeclareSectionCommand[beforeskip=-.2cm, afterindent=false]{chapter}

%Inhaltsverzeichnis
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{1}
\DeclareTOCStyleEntry[linefill=\TOCLineLeaderFill]{tocline}{chapter}

%Bibliografie-Stil
\bibliographystyle{ieeetr}
\urlstyle{same}

%Glossar
\makeglossaries
\renewcommand*\glspostdescription{\dotfill}

%Quellcode
\import{Code/}{Codestyle}
\renewcommand\lstlistingname{Quellcode}
\renewcommand\lstlistlistingname{Quellcodes}

%Paragraph-Indent%
\setlength{\parindent}{0pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%           Dokument                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\selectlanguage{ngerman}

%%%%%%%%%%%%%%%%%%%%%%%%%
%       Kapitel         %
%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{table} [!htbp]
%
\tablestyle[sansbold]
%
\begin{longtable}
{*{2}{p{0.2\textwidth}p{0.8\textwidth}}}
\theadstart
    \thead Bezeichner &
    \thead UC02: MultiSelectionField (Desktop) \\ 
\tbody
 Beschreibung & Das bestehende SelectionField soll so erweitert werden, dass im Dropdown, abhängig von der Eingabe, entsprechende Vorschläge zur Auswahl angezeigt werden und mehrere Auswahlen möglich sind und wieder entfernt werden können. \\
 Akteure & Anwendungsbenutzer \\
 Vorbedingungen & Das \texttt{MultiSelectionField} ist noch leer. \\
 Nachbedingung & Eine Auswahl von 1-n Elementen wurde durch den Anwendungsbenutzer getätigt. Die Auswahl ist im \texttt{MultiSelectionField} sichtbar. Das \texttt{MultiSelectionField} wird als valid angezeigt. \\
 Hauptszenario & 
    \begin{enumerate}
        \item Der Anwendungsbenutzer fokussiert das \texttt{MultiSelectionField}.
        \item Das Dropdown erscheint, mit allen Auswahlsmöglichkeiten.
        \item Der Anwendungsbenutzer tippt eine Eingabe ins Textfeld des SelectionFields.
        \item Das Dropdown filtert die Auswahlsmöglichkeiten anhand der Eingabe im Textfeld des \texttt{MultiSelectionField}.
        \item Der Anwendungsbenutzer wählt ein Element per Mausklick im Dropdown an.
        \item Das \texttt{MultiSelectionField} leert alle Texteingaben und das selektierte Element wird anschliessend darin angezeigt.
        \item Der Anwendungsbenutzer wiederholt Schritt 2-5 solange bis die gewünschte Auswahl getroffen wurde.
        \item Das \texttt{MultiSelectionField} zeigt alle ausgewählten Elemente an.
    \end{enumerate} \\
 Alternativszenarien & 
    \textbf{2a: Anwendungsbenutzer tippt eine nicht vorhandene Auswahlsmöglichkeit ins Textfeld des \texttt{MultiSelectionFields}}
    \begin{enumerate}
        \item Das Dropdown erscheint mit einer Hinweismeldung dass keine passenden Auswahlmöglichkeiten zur Eingabe vorhanden sind.
        \item Das \texttt{MultiSelectionField} wird als invalid markiert.
        \item Ende (keine Auswahl getätigt).
    \end{enumerate}
    \textbf{3a: Anwendungsbenutzer möchte das Dropdown schliessen}
    \begin{enumerate}
        \item Der Anwendungsbenutzer klickt ausserhalb des \texttt{MultiSelectionField} oder drückt die Taste "Escape".
        \item Das Dropdown schliesst sich.
        \item Ende (keine Auswahl getätigt).
    \end{enumerate}
    \textbf{4a: Anwendungsbenutzer navigiert durch Auswahlsmöglichkeiten im Dropdown}
    \begin{enumerate}
        \item Der Anwendungsbenutzer drückt die "Pfeil nach oben"- oder die "Pfeil nach unten"-Taste.
        \item Das selektierte Element im Dropdown passt sich entsprechend an.
        \item Der Anwendungsbenutzer drückt die Taste "Enter" oder "Escape".
        \item Das Dropdown schliesst sich.
        \item Weiter mit Schritt 5 im Hauptszenario.
    \end{enumerate}
    \textbf{6a: Anwendungsbenutzer löscht ausgewähltes Element}
    \begin{enumerate}
        \item Der Anwendungsbenutzer drückt das "X"-Symbol oberhalb eines ausgewählten Elementes.
        \item Das \texttt{MultiSelectionField} entfernt das entsprechend ausgewählte Element.
        \item Weiter mit Schritt 6 im Hauptszenario.
    \end{enumerate}
    \textbf{6b: Anwendungsbenutzer löscht zuletzt ausgewähltes Element durch "Backspace"-Taste}
    \begin{enumerate}
        \item Der Anwendungsbenutzer platziert den Maus-Cursor hinter dem zuletzt ausgewählten Element.
        \item Der Anwendungsbenutzer drückt die "Backspace"-Taste.
        \item Das \texttt{MultiSelectionField} entfernt das zuletzt ausgewählte Element.
        \item Weiter mit Schritt 6 im Hauptszenario.
    \end{enumerate} \\
 Bemerkungen & - \\
 \tend
\end{longtable}
\caption{tbd}
\end{table} 

\end{document}


8
  • I wouldn't use a table for this, but a list. And I wouldn't use this alternating background color, that looks like a zebra. Add a bit space between the item to separate them. And make your typewriter font smaller. But generally: don't put a longtable inside a table environment. Jun 20 at 9:07
  • 1
    table is an unbreakable box. If you do use longtable use it instead of table not inside it (see the longtable documentation) Jun 20 at 9:24
  • @DavidCarlisle thx, I was not aware of this. Seems to work now, although I miss the option to pass placement options like I did with table. Any idea on how to do \begin{table} [!htbp] with longtable ?
    – Remo
    Jun 20 at 10:20
  • 1
    longtable never floats so the options would have no meaning Jun 20 at 10:37
  • Alright - one last question regarding pagebreaks. Is there a way to define the longtable to break in a specific cell? Right now, I have two pages half-filled with the table...
    – Remo
    Jun 20 at 10:40

1 Answer 1

2

One way is to split long cells, i.e. make more rows, reduce \itemsep and linespread in lists, reduce font size to \small` for example like this:

enter image description here

It is (still) not perfekt, but empty space below of tables is quite reduced. MWE, where is for table used tabularray package, us

\documentclass{scrreprt}
\usepackage[vmargin=1.5cm, 
            headheight=1cm, 
            includehead, 
            includefoot]{geometry} 
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman, english]{babel}

\usepackage[table,xcdraw]{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,varwidth}  % <===
\usepackage{ragged2e}
\usepackage{enumitem}

\usepackage{lipsum}

\begin{document}
\selectlanguage{ngerman}

\begingroup
\setlist[enumerate]{nosep,
                    leftmargin=*,
                    itemsep=2pt,
                    before=\begin{minipage}[t]{\linewidth}\RaggedRight, % <---
                    after=\end{minipage},                   % <---
                    }
%
\small
    \begin{longtblr}[
caption = {tbd},
  label = {tab:longtblr}
                    ]{colsep  = 3pt,
                      colspec = {@{} l X[l,font=\linespread{0.84}\selectfont] @{}},
                      row{1}  = {font=\bfseries},
                      row{odd}= {bg=gray!30},
                      rowhead = 1,
                      measure = vbox
                      } 
    \toprule                                        
Bezeichner 
    &   UC02: MultiSelectionField (Desktop)             \\
    \midrule
Beschreibung 
    & Das bestehende SelectionField soll so erweitert werden, dass im Dropdown, abhängig von der Eingabe, entsprechende Vorschläge zur Auswahl angezeigt werden und mehrere Auswahlen möglich sind und wieder entfernt werden können.             \\
 Akteure 
    & Anwendungsbenutzer                                \\
 Vorbedingungen 
    & Das \texttt{MultiSelectionField} ist noch leer.   \\
 Nachbedingung 
    & Eine Auswahl von 1-n Elementen wurde durch den Anwendungsbenutzer getätigt. Die Auswahl ist im \texttt{MultiSelectionField} sichtbar. Das \texttt{MultiSelectionField} wird als valid angezeigt.                                          \\
Hauptszenario 
    &   \begin{enumerate}
    \item Der Anwendungsbenutzer fokussiert das \texttt{MultiSelectionField}.
    \item Das Dropdown erscheint, mit allen Auswahlsmöglichkeiten.
    \item Der Anwendungsbenutzer tippt eine Eingabe ins Textfeld des SelectionFields.
    \item Das Dropdown filtert die Auswahlsmöglichkeiten anhand der Eingabe im Textfeld des \texttt{MultiSelectionField}.
    \item Der Anwendungsbenutzer wählt ein Element per Mausklick im Dropdown an.
    \item Das \texttt{MultiSelectionField} leert alle Texteingaben und das selektierte Element wird anschliessend darin angezeigt.
    \item Der Anwendungsbenutzer wiederholt Schritt 2-5 solange bis die gewünschte Auswahl getroffen wurde.
    \item Das \texttt{MultiSelectionField} zeigt alle ausgewählten Elemente an.
        \end{enumerate}     \\
 Alternativszenarien 
    &  \textbf{Anwendungsbenutzer tippt eine nicht vorhandene Auswahlsmöglichkeit ins Textfeld des \texttt{MultiSelectionFields}}
        \begin{enumerate}
    \item Das Dropdown erscheint mit einer Hinweismeldung dass keine passenden Auswahlmöglichkeiten zur Eingabe vorhanden sind.
    \item Das \texttt{MultiSelectionField} wird als invalid markiert.
    \item Ende (keine Auswahl getätigt).
        \end{enumerate}         \\
    & \textbf{3a: Anwendungsbenutzer möchte das Dropdown schliessen}
        \begin{enumerate}
    \item Der Anwendungsbenutzer klickt ausserhalb des \texttt{MultiSelectionField} oder drückt die Taste "Escape".
    \item Das Dropdown schliesst sich.
    \item Ende (keine Auswahl getätigt).
        \end{enumerate}         \\
    & \textbf{4a: Anwendungsbenutzer navigiert durch Auswahlsmöglichkeiten im Dropdown}
        \begin{enumerate}
    \item Der Anwendungsbenutzer drückt die "Pfeil nach oben"- oder die "Pfeil nach unten"-Taste.
    \item Das selektierte Element im Dropdown passt sich entsprechend.
    \item Der Anwendungsbenutzer drückt die Taste "Enter" oder "Escape".
    \item Das Dropdown schliesst sich.
    \item Weiter mit Schritt 5 im Hauptszenario.
        \end{enumerate}     \\
    &  \textbf{6a: Anwendungsbenutzer löscht ausgewähltes Element}
        \begin{enumerate}
    \item Der Anwendungsbenutzer drückt das "X"-Symbol oberhalb eines ausgewählten Elementes.
    \item Das \texttt{MultiSelectionField} entfernt das entsprechend ausgewählte Element.
    \item Weiter mit Schritt 6 im Hauptszenario.
        \end{enumerate}     \\
    & \textbf{6b: Anwendungsbenutzer löscht zuletzt ausgewähltes Element durch "Backspace"-Taste}
        \begin{enumerate}
    \item Der Anwendungsbenutzer platziert den Maus-Cursor hinter dem zuletzt ausgewählten Element.
    \item Der Anwendungsbenutzer drückt die "Backspace"-Taste.
    \item Das \texttt{MultiSelectionField} entfernt das zuletzt ausgewählte Element.
    \item Weiter mit Schritt 6 im Hauptszenario.
        \end{enumerate}     \\
Bemerkungen 
    & - \\
    \bottomrule
\end{longtblr}
\endgroup

\lipsum[1-5]
\end{document}
1
  • thanks this seems to work :)
    – Remo
    Jun 20 at 13:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.