强制换行后文本穿过表格单元格

强制换行后文本穿过表格单元格

我正在尝试将一些文本放入表格中,但文本却一直穿过表格单元格。我已经使用命令为文本指定了固定的列宽p{}。最初,这有效,但后来我还需要一些强制换行符,当我使用新命令实现该命令时,命令p{}不知何故被否决,文本再次穿过单元格。有人能帮我解决这个问题吗?我使用的代码如下所示:

    \begin{landscape}

    \newcommand{\cellenter}[2][l]{%

    \begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}
    \begin{table}[t]\footnotesize 
    \caption{Caption}\label{table:table_cable_lay_2}
      \begin{tabular*}{1.4\textwidth}{| p{0.32\textwidth} | p{0.32\textwidth} | p{0.32\textwidth} | p{0.32\textwidth} |}
          \hline\hline
          \textbf{Scenarios} &\textbf{Advantages} &\textbf{Disadvantages} &\textbf{Remarks} \\ [0.5ex]
          \hline

          \textit{Title of the cell} This text remains within the cell width because there are no forced linebreaks in this cell.

          &\cellenter[t]{+ Advantage 1 \\ + Advantage 2}

          &\cellenter[t]{- Disadvantage 1 \\ - Disadvantage 2}

          &\cellenter[t]{ There is some text here that runs through the cell width. \\ There is some text here that runs through the cell width.} \\[1ex]
          \hline
      \end{tabular*}
    \end{table}
    \end{landscape}

我得到的 pdf 输出如下所示: 表格1

答案1

目前尚不清楚您的意图\cellcenter是什么,但它将所有内容都放入内部表格l列中。l列永不换行,它们始终设置为单行的自然宽度。

您可以使用空白行在表格单元格内开始新段落,或者\newline如果您想要强制中断而不开始新段落。


在此处输入图片描述

我同时修复了您的标记中的其他一些问题:(使用数学模式来匹配 +/ 并使用表格而不是表格*,因为您在列之间没有拉伸)

\documentclass{article}
\usepackage{pdflscape}

\begin{document}

   \begin{landscape}

    \begin{table}[t]\footnotesize 
    \caption{Caption}\label{table:table_cable_lay_2}
      \begin{tabular}{| p{0.32\textwidth} | p{0.32\textwidth} | p{0.32\textwidth} | p{0.32\textwidth} |}
          \hline\hline
          \textbf{Scenarios} &\textbf{Advantages} &\textbf{Disadvantages} &\textbf{Remarks} \\ [0.5ex]
          \hline

          \textit{Title of the cell} This text remains within the cell width because there are no forced linebreaks in this cell.

          &$+$ Advantage 1 \par  $+$ Advantage 2

          &$-$ Disadvantage 1 \par $-$ Disadvantage 2

          &There is some text here that runs through the cell width. \par There is some text here that runs through the cell width. \\[1ex]
          \hline
      \end{tabular}
    \end{table}
    \end{landscape}

\end{document}

为了控制单元格内的对齐,最简单的方法是添加

 \usepackage{array}

然后你就可以注入\raggedright到每个条目中。如果我理解你的评论正确的话,你可以使用

\begin{tabular}{|%
>{\raggedright\arraybackslash}p{0.32\textwidth}|%
p{0.32\textwidth}|%
p{0.32\textwidth}|%
>{\raggedright\arraybackslash}p{0.32\textwidth}|%
}

或者你的意思是:

\begin{tabular}{|%
p{0.32\textwidth}|%
>{\raggedright\arraybackslash}p{0.32\textwidth}|%
>{\raggedright\arraybackslash}p{0.32\textwidth}|%
p{0.32\textwidth}|%
}

相关内容