我有这个代码
\documentclass{report}
\usepackage{tabularray}
\usepackage{mathtools}
\NewColumnType{C}{>{$}c<{$}}
\def\myformula{Area = side \times side \\ Perimeter = side \times 4}
\begin{document}
\begin{tblr}{
colspec={cX},
row{2}={C,fg=white,bg=black}
}
{One} & {Two} & \SetCell[c=2]{C}{\myformula} \\
\end{tblr}
\end{document}
该代码无法编译,编译期间最相关的错误(第 12 行报告)是:
Missing $ inserted. \end
我知道在表格中使用数学环境比平时更复杂,因此我尝试使用它\NewColumnType
来让我的生活更轻松,但显然我错过了一些东西,而且我已经尝试了很多变化。
我遗漏了什么?与 Latex3 的工作方式有关吗?
答案1
\tabularray
你用的是哪一个版本的?- 您的 MWE(最小工作示例)包含许多错误。从定义
myformula
到定义列的数量... - 该包的语法
tabularray
与“经典”表包的语法不同。例如,它定义了列的数学模式选项。有关详细信息,请参阅包文档。 - 我猜您正在寻找以下结果:
使用最新版本\tabularray
(2022A) 你的 MWE 应该是:
\documentclass{report}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
\def\myformula{\begin{gathered}
\mathrm{Area} = \mathrm{side} \times \mathrm{side} \\ \mathrm{Perimeter} = \mathrm{side} \times 4
\end{gathered}}
\begin{document}
\noindent%
\begin{tblr}{colspec={cc X[c, m] X[c, m] },
row{1}={fg=white,bg=black}
}
One & Two & \SetCell[c=2]{c,$$}{\myformula}
& \\
\end{tblr}
\end{document}
编辑:
有时,当您希望在=
符号处对齐方程式时,您需要gathered
用aligned
环境替换(两者均在包中定义amsmath
):
\def\myformula{\begin{aligned}
\mathrm{Area} & = \mathrm{side} \times \mathrm{side}
\mathrm{Perimeter} & = \mathrm{side} \times 4
\end{aligned}}
在建议的 MWE 中使用上述内容会得到以下结果。
如果您还有一些未解决的问题,我建议您提出新的问题,并清楚地(可能带有指向此问题的链接)解释您的问题是什么。