如何在表格单元格内添加强制换行符

如何在表格单元格内添加强制换行符

我在表格中有一些文本,我想添加强制换行符。我想插入强制换行符而不必指定列宽,即以下内容:

\begin{tabular}{|c|c|c|}
\hline
Foo bar & Foo <forced line break here> bar & Foo bar \\
\hline
\end{tabular}

我知道\\在大多数情况下都会插入一个换行符,但在这里它会开始一个新的表格行。


之前有人问过类似的问题:如何在表格中换行

答案1

使用makecell包。此包提供用于格式化单元格的命令,包括\thead(用于标题单元格)和\makecell(用于常规单元格)。例如,要创建包含换行符的单元格:

\makecell{Some really \\ longer text}

此外,水平和垂直对齐方式可以独立于它们所在表的对齐方式进行选择。默认值为cc,但你可以在序言中使用以下命令全局更改它

\renewcommand{\cellalign}{vh}
\renewcommand{\theadalign}{vh}

其中vtc或之一,b并且、或h之一。或者,对于单个单元格,您可以使用或命令和可选参数。lcr\makecell\thead[vh]


演示:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{fourier} 
\usepackage{array}
\usepackage{makecell}

\renewcommand\theadalign{bc}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadgape{\Gape[4pt]}
\renewcommand\cellgape{\Gape[4pt]}

\begin{document}

  \begin{center}
    \begin{tabular}{ | c | c | c |}
      \hline
      \thead{A Head} & \thead{A Second \\ Head} & \thead{A Third \\ Head} \\
      \hline
      Some text &  \makecell{Some really \\ longer text}  & Text text text  \\
      \hline
    \end{tabular}
  \end{center}

\end{document} 

编译的 MWE

答案2

这是一个相当老的问题,但我还是会添加我的答案,因为我建议的方法没有出现在其他方法中

\begin{tabular}{|c|c|c|}
\hline
Foo bar & \begin{tabular}[x]{@{}c@{}}Foo\\bar\end{tabular} & Foo bar \\
\hline
\end{tabular}

其中xtc或 ,b以强制所需的垂直对齐。

如果在多个地方都需要这样做,最好定义一个命令

\newcommand{\specialcell}[2][c]{%
  \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

因此之前的表格行可以是

Foo bar & \specialcell{Foo\\bar} & Foo bar \\    % vertically centered
Foo bar & \specialcell[t]{Foo\\bar} & Foo bar \\ % aligned with top rule
Foo bar & \specialcell[b]{Foo\\bar} & Foo bar \\ % aligned with bottom rule

可能存在更多变化,比如还指定特殊单元格中的水平对齐。

注意@{}抑制单元格文本前后添加的空间。

答案3

您可以将单元格布局切换为段落以使用该\newline命令。

\begin{tabular}{|p{2cm}|p{2cm}|}
\hline
Test & foo \newline bar \\
...

编辑

p如果您还想指定对齐方式,请使用以下命令:

\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

答案4

使用tabularx环境而不是tabular,然后\newline在单元格内需要换行的位置使用。

\usepackage{tabularx}
\begin{tabularx}{\textwidth}{lX}
    Section:   &  This is my     \newline
                  long paragraph \\
\end{tabularx}

除了常见的列类型外,环境还具有一种特殊的列类型,其第一个参数是表格的所需宽度。该列tabularx将具有必要的宽度,以使整个表格达到所需的宽度。XX

笔记\newline在标准类型的列中不会生效。

详情tabularx可参阅这里

相关内容