我有一个包含一些列的表格环境,但到目前为止无法确保长文本正确换行。相反,文本溢出到下一列。放入列中的数据有时可能很长,并且可能有空格,也可能没有空格。它通常有连字符,但我不想将这些连字符视为对齐的位置。我想要的行为是将文本放入没有对齐的列中 - 只需渲染尽可能多的字符,然后继续下一行。
我目前拥有的一个例子:
\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}
(红线表示文字边框)