表格居中单元格中的换行符

表格居中单元格中的换行符

我有一张类似以下示例的表格:

\documentclass[11p,twoside,a4paper,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{xcolor}
\usepackage{array}

\begin{document}
\begin{tabular}{|l|c|}
    text & text \\
    text & \(math1\) \(math2\)
\end{tabular}
\end{document}

math1我需要在和之间插入换行符,math2同时保持文本居中。我该怎么做?

编辑:将代码更改为最小工作示例

答案1

stackengine软件包可以提供帮助。如果您希望持续跳过基线间距离,而不是固定项目间距离,则可以将这些行添加到序言中:

\def\stacktype{L}
\setstackgap{L}{12pt}

如果您希望数学本身左对齐或右对齐(同时仍保留列的中心对齐),请将\def\stackalignment{l}或添加\def\stackalignment{r}到您的序言中。

如果您希望堆叠文本而不是数学,默认情况下,请\stackMath从序言中删除该行。

这是 MWE

\documentclass[11p,twoside,a4paper,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{xcolor}
\usepackage{array}
\usepackage{stackengine}
\stackMath
\begin{document}
\parskip 1em
\renewcommand\arraystretch{1.5}
\begin{tabular}{|l|c|}
    text & text \\
    stackon & \stackon{a_1 x + b_1 y = c_1}{a_2 x  = c_2}\\
\end{tabular}

\begin{tabular}{|l|c|}
    text & text \\
    stackunder & \stackunder{a_1 x + b_1 y = c_1}{a_2 x +b_2 y = c_2}\\
\end{tabular}

\begin{tabular}{|l|c|}
    text & text \\
    stackanchor & \stackanchor{a_1 x + b_1 y = c_1}{a_2 x  = c_2}\\
\end{tabular}
\end{document}

在此处输入图片描述

如果需要在 中进行对齐数学运算tabular,则该tabstackengine包会扩展该stackengine方法。但是,由于它位于 内tabular,因此需要更改默认制表符和行尾字符以避免冲突。

\documentclass[11p,twoside,a4paper,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{xcolor}
\usepackage{array}
\usepackage{tabstackengine}
\setstackTAB{\&}
\setstackEOL{\#}
\setstackgap{L}{12pt}
\stackMath
\setstacktabulargap{0pt}
\TABbinary
\begin{document}
\parskip 1em
\renewcommand\arraystretch{1.5}
\begin{tabular}{|l|c|}
    text & text \\
    tabularCenterstack & 
    \tabularCenterstack{rrl}{%
a_1 x \&+ b_1 y =\& c_1\#
a_2 x \& =\& c_2\#
\&b_3 y  =\& c_3 + d_3}\\
\end{tabular}

\begin{tabular}{|l|c|}
    text & text \\
    alignCenterstack & 
    \alignCenterstack{%
z \&=a_1 x + b_1 y \#
w + z \&= a_2 x  \#
v + w \&=a_3 x - b_3 y}\\
\end{tabular}
\end{document}

在此处输入图片描述

答案2

使用嵌套tabular

\documentclass{article}
\usepackage{mathtools}
\usepackage{array}
\newcommand{\mycell}[2][c]{%
  \begin{tabular}[#1]{@{}c@{}}
    #2
  \end{tabular}
  }
\begin{document}
\begin{tabular}{|l|c|}
    text & text \\
    text & \mycell{$a_1 x + b_1 y = c_1$ \\ $a_2 x  = c_2$}\\
\end{tabular}

\bigskip
\begin{tabular}{|l|c|}
    text & text \\
    text & \mycell[t]{$a_1 x + b_1 y = c_1$ \\ $a_2 x  = c_2$}\\
\end{tabular}

\bigskip
\begin{tabular}{|l|c|}
    text & text \\
    text & \mycell[b]{$a_1 x + b_1 y = c_1$ \\ $a_2 x  = c_2$}\\
\end{tabular}

\end{document}

在此处输入图片描述

答案3

makecell包就是为此而开发的。它还允许对单元格进行通用格式设置,并且还有一个multirowcell命令:

\documentclass[11p,twoside,a4paper,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{xcolor}
\usepackage{array, makecell}

\begin{document}
  \begin{tabular}{|l|c|}
    text & text \\
    text & \makecell{\(a < b\)\\ \(a + c < b + c\)}
\end{tabular}
\end{document} 

在此处输入图片描述

答案4

您可以使用multirow包。

\documentclass[11p,twoside,a4paper,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{xcolor}
\usepackage{array}
\usepackage{multirow}
\begin{document}


\begin{table}[h]
\begin{tabular}{|l|c|}
\hline
text                  & text                      \\ \hline
\multirow{2}{*}{text} & \(\cos (2\theta) = \cos^2 \theta - \sin^2 \theta\)                        \\
                  & \multicolumn{1}{l|}{\(\sqrt[n]{1+x+x^2+x^3+\ldots}\)} \\ \hline
\end{tabular}
\end{table}
\end{document}

结果是

带有换行符的表格

对于表格生成,您可以检查表格生成器它使初学者更容易掌握表格。

相关内容