長いテキストを持ついくつかのセルを持つテーブルを実装する方法は?

Nov 23 2020

6つの列といくつかの行を持つテーブルがあります。問題は、一部の列の一部のセルに長いテキストがあるため、それらが奇妙に見え、テキストの幅に収まらないことです。\ makecellで\を使用して長いテキストセルを手動で分割しようとしましたが、結果のテーブルは見栄えが悪くなります。私が生成しようとしているものの正確な例として、添付の図を参照してください(ただしダミーテキストを使用)。Excelのようにしたくありません。セルごとに複数の行でテーブルを作成する専門的な方法が必要です。

回答

2 Trolobezka Nov 24 2020 at 00:55

テキストをいくつかの行に分割する方法が正確にはわかりません。私が思いついた2つのオプションを次に示します。

オプション1

\hspace{0pt}tabularx

あなたが見ることができるように、それが言葉を壊す場所については非常にうるさいです。テーブルが狭くなりすぎると、テキストがオーバーフローし始めます。

オプション2

\collectcell\seqsplit...\endcollectcelltabularxseqsplitおよびcollcell

これにより、テキストはどこでも壊れることがあります。しかし、それは単語間のスペースを削除するように見えます。このオプションが必要で、単語の間にスペースが必要な場合は、中括弧内にスペースを入れることができ{ }、それらが壊れたり削除されたりすることはありません。

コード

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

ボーナス

テキストをセル内の中央に配置する場合は、列タイプ宣言内に変更\raggedrightするだけ\centeringです。異なるスタイルの列が必要な場合は、既存の宣言をコピーし、必要なものを変更し、別の文字を付けて、テーブルで使用します。