表格段落环境中的长文本溢出

表格段落环境中的长文本溢出

我有一个包含一些列的表格环境,但到目前为止无法确保长文本正确换行。相反,文本溢出到下一列。放入列中的数据有时可能很长,并且可能有空格,也可能没有空格。它通常有连字符,但我不想将这些连字符视为对齐的位置。我想要的行为是将文本放入没有对齐的列中 - 只需渲染尽可能多的字符,然后继续下一行。

我目前拥有的一个例子:

\begin{tabular}{c p{4cm} p{7cm} c}
1 & This\_is\_a\_long\_virtual\_machine\_name   &   This\_is\_a\_long\_virtual\_machine\_path & 256\\
\end{tabular}

我需要 LaTeX 将尽可能多的长文本放入列中,然后溢出到下一行。非常感谢。

答案1

我会\-在需要时使用,或者在很多\_地方使用,如在 MWE 中一样,重新定义 tit 以使其可破坏:

\let\oldu\_\def\_{\hskip0pt\oldu\hskip0pt}

但你问的是:

它通常带有连字符,但我不希望这些被视为需要辩解的地方。

因此,看起来您正在寻找`seqsplit,但恕我直言,这不是一个好的输出:


姆韦


\documentclass{article}
\usepackage{seqsplit}
\parskip2em
\begin{document}

With \verb|\seqplit|:

\begin{tabular}{c p{4cm} p{7cm} c} 1 & 
\seqsplit{This\_is\_a\_long\_virtual\_machine\_name}   &   
\seqsplit{This\_is\_a\_long\_virtual\_machine\_path} & 256\\  2 & 
\seqsplit{Supercalifragilisticexpialidocious} & 
\seqsplit{Um-dittle-ittl-um-dittle-I} 
\seqsplit{Um-dittle-ittl-um-dittle-I} 
\seqsplit{Um-dittle-ittl-um-dittle-I} 
\seqsplit{Um-dittle-ittl-um-dittle-I}  & 257
\end{tabular}

Without \verb|\seqplit|:

\begin{tabular}{c p{4cm} p{7cm} c}  1 & 
This\_is\_a\_long\_virtual\_machine\_name  & 
This\_is\_a\_long\_virtual\_machine\_path & 256\\
2 & Supercalifragilisticexpialidocious & 
Um-dittle-ittl-um-dittle-I 
Um-dittle-ittl-um-dittle-I
Um-dittle-ittl-um-dittle-I 
Um-dittle-ittl-um-dittle-I & 257
\end{tabular}

\end{document}

答案2

表格环境中的 p{} 列提供 \newline。这提供了干净的换行符。我以编程方式在列中每 X 个字符插入 \newline,这提供了一个解决方案。

答案3

对于长单词的连字,您可以\-在需要启用连字的位置使用 simbol。考虑到这一点,您的表格可以重写如下:

\documentclass{article}
\usepackage{tabularx}

\begin{document}

\noindent\begin{tabularx}{\linewidth}{@{} c X X c @{}}
    \hline
1   & This\_is\_a\_long\_virtual\_ma\-chi\-ne\_name   % <---
        &   This\_is\_a\_long\_virtual\_ma\-chi\-ne\_path % <---
            & 256\\
    \hline
\end{tabularx}

\end{document}

在此处输入图片描述

(红线表示文字边框)

相关内容