jak zaimplementować tabelę, która ma kilka komórek z długimi tekstami?

Nov 23 2020

Mam tabelę, która ma 6 kolumn i kilka wierszy. Problem polega na tym, że niektóre komórki w niektórych kolumnach mają długie teksty, więc wyglądają na zmęczone i nie pasują do szerokości tekstu. Próbowałem \ makecell podzielić długie komórki tekstowe za pomocą \ ręcznie, ale wynikowa tabela wygląda dobrze. Zobacz załączony rysunek jako dokładny przykład tego, co próbuję wygenerować (ale z fikcyjnymi tekstami). Nie chcę, żeby było jak Excel. Potrzebuję profesjonalnego sposobu tworzenia tabeli w wielu liniach na komórkę.

Odpowiedzi

2 Trolobezka Nov 24 2020 at 00:55

Nie wiem dokładnie, jak chcesz, aby Twój tekst został podzielony na kilka wierszy, oto dwie opcje, które wymyśliłem:

opcja 1

\hspace{0pt} z tabularx

Jak widać, jest bardzo wybredny, jeśli chodzi o to, gdzie łamie słowa. Jeśli tabela stanie się zbyt wąska, tekst zacznie się przepełniać.

Opcja 2

\collectcell\seqsplit... \endcollectcellz tabularx, seqspliticollcell

Dzięki temu tekst może pęknąć w dowolnym miejscu. ALE wygląda na to, że usuwa odstępy między wyrazami. Jeśli chcesz tę opcję i potrzebujesz spacji między słowami, możesz umieścić spacje w nawiasach klamrowych { }i nie zostaną one złamane / usunięte.

Kod

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

PREMIA

Jeśli chcesz wyśrodkować tekst w komórkach, po prostu zmień \raggedrightna \centeringwewnątrz deklaracji typu kolumny. Jeśli potrzebujesz kolumn o różnych stylach, po prostu skopiuj już istniejącą deklarację, zmień to, czego potrzebujesz, nadaj jej inną literę i użyj jej w tabeli.