Wie implementiere ich eine Tabelle mit einigen Zellen mit langen Texten?

Nov 23 2020

Ich habe eine Tabelle mit 6 Spalten und einigen Zeilen. Das Problem ist, dass einige Zellen in einigen Spalten lange Texte enthalten, sodass sie unerwünscht aussehen und nicht zur Textbreite passen. Ich habe \ makecell versucht, lange Textzellen mit \ manuell zu teilen, aber die resultierende Tabelle sieht gut aus. Die beigefügte Abbildung zeigt ein genaues Beispiel für das, was ich zu generieren versuche (jedoch mit Dummy-Texten). Ich möchte nicht, dass es wie Excel ist. Ich brauche eine professionelle Methode, um die Tabelle in mehreren Zeilen pro Zelle zu erstellen.

Antworten

2 Trolobezka Nov 24 2020 at 00:55

Ich weiß nicht genau, wie Ihr Text in mehrere Zeilen unterteilt werden soll. Hier sind zwei Optionen, die ich mir ausgedacht habe:

Option 1

\hspace{0pt} mit tabularx

Wie Sie sehen können, ist es sehr wählerisch, wo es die Wörter bricht. Wenn die Tabelle zu eng wird, läuft der Text über.

Option 2

\collectcell\seqsplit... \endcollectcellmit tabularx, seqsplitundcollcell

Damit kann der Text überall brechen. ABER es sieht so aus, als würde der Abstand zwischen Wörtern gelöscht. Wenn Sie diese Option wünschen und Leerzeichen zwischen Ihren Wörtern benötigen, können Sie die Leerzeichen in geschweifte Klammern setzen, damit { }sie nicht unterbrochen / gelöscht werden.

Code

\documentclass[]{article}

\usepackage[margin=1cm]{geometry} % Changing page margin
\usepackage{array}
\usepackage{tabularx}
\usepackage{seqsplit}
\usepackage{collcell}

% >{\hsize=.5\hsize} Insert this into the column type definition to change column width (produces some glitches if used incorrectly)
%\newcolumntype{s}{>{\hspace{0pt}\raggedright\arraybackslash}X} % OPTION 1 "Human"-like breaking
\newcolumntype{s}{>{\collectcell\seqsplit}>{\raggedright\arraybackslash}X<{\endcollectcell}} % OPTION 2 Breaks everything

\renewcommand{\tabularxcolumn}[1]{m{#1}} % Vertical centering in cells
\renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Inserts hyphens at the breakpoints

\begin{document}

\begin{tabularx}{250pt}{|s|s|s|s|s|} % 6 columns, table width = 250pt
\hline
Numbers & Long Strings & Numbers & Long Strings & Numbers \\
\hline
1000000000{ }Big{ }Number & VeryVeryLongString with Number 524 & 1000000000 Big Number & VeryVeryLongString with Number 524 & 1000000000 Big Number \\
\hline
\end{tabularx}

\end{document}

BONUS

Wenn Sie Text in den Zellen zentrieren möchten, wechseln Sie einfach \raggedrightin \centeringdie Deklaration des Spaltentyps. Wenn Sie Spalten mit unterschiedlichen Stilen benötigen, kopieren Sie einfach die bereits vorhandene Deklaration, ändern Sie Ihre Anforderungen, geben Sie ihr einen anderen Buchstaben und verwenden Sie sie in der Tabelle.