我有一张类似以下示例的表格:
\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}
结果是
对于表格生成,您可以检查表格生成器它使初学者更容易掌握表格。