我试图在表格的第 2 列和第 3 列的每个条目中放置一个\begin{align*}
and 。但我收到错误,似乎表明我的环境标记不匹配。我确信我的括号与and表格序言正确匹配。可能是什么问题?这是一个最小的工作示例\end{align*}
>
<
http://pastebin.tlhiv.org/wPmuJulo
我在这里引用一下:
\documentclass{memoir}
\usepackage{amsmath}
\usepackage{array}
\usepackage{longtable}
\usepackage{booktabs}
\newcounter{rowno}
\setcounter{rowno}{0}
\begin{document}
\begin{longtable}[l]{%
>{\stepcounter{rowno}\therowno.}c%
>{\begin{align*}}%
m{0.5\textwidth}%
<{\end{align*}}%
>{\begin{align*}}%
m{0.5\textwidth}%
<{\end{align*}}%
}
%m{0.5\textwidth}%
%m{0.5\textwidth}%
%\multicolumn{1}{r}{\textbf{No.}} & \textbf{Question} & \textbf{Answer} \\\hline
& E=mc^2 & E=mc^2
\end{longtable}
\end{document}
这会导致错误:
error| \begin{align*} on input line 23 ended by \end{longtable}
>
我对表格<
序言的期望
例如,我有一个如下所示的表格序言。这是一张单列表:
\begin{longtable}{>{\begin{foobar}} l <{\end{foobar}}}
foo \\
bar \\
baz \\
quux
\end{longtable}
我希望 LaTeX 能够将其解释为我输入的内容:
\begin{longtable}{l}
\begin{foobar}
foo
\end{foobar} \\
\begin{foobar}
bar
\end{foobar} \\
\begin{foobar}
baz
\end{foobar} \\
\begin{foobar}
quux
\end{foobar}
\end{longtable}
但事实并非如此。我该如何让 LaTeX 以这种方式工作?
答案1
您拥有的代码在“正常”环境下可以正常工作。但是,这里的问题在于align*
工作方式。它实际上是一个伪环境,通过\collect@body
读取直到的所有内容来收集其内容\end{align*}
。此结束宏现在隐藏在表前导码中,将无法找到。相反,\end{longtable}
会找到并引发正确的错误。
结论是你不能在表格中使用这样的环境。但是,你可以使用我的collcell
包先收集表格单元格的内容,然后在其周围添加\begin{align*}
..。\end{align*}
这样,开始和结束都处于同一级别并且可以align*
正常工作。
\documentclass{memoir}
\usepackage{amsmath}
\usepackage{array}
\usepackage{collcell}
\usepackage{longtable}
\usepackage{booktabs}
\newcounter{rowno}
\setcounter{rowno}{0}
\newcommand\myalign[1]{\begin{align*}#1\end{align*}}
\begin{document}
\begin{longtable}[l]{%
>{\stepcounter{rowno}\therowno.}c%
>{\collectcell\myalign}%
m{0.5\textwidth}%
<{\endcollectcell}%
>{\collectcell\myalign}%
m{0.5\textwidth}%
<{\endcollectcell}%
}
&
E=mc^2
&
E=mc^2
\\
\end{longtable}
\end{document}
如果要在 内使用&
和 ,则需要将整个单元格包裹在 中,这样它们就不会与表格的单元格和行分隔符混淆。如果您实际上只想将方程式居中,那么您可以更轻松地做到这一点。请参阅下面第三列的定义。无论如何,对于不同行的方程式,您都不会在 处获得对齐。\\
align*
{ }
align*
=
\documentclass{memoir}
\usepackage{amsmath}
\usepackage{array}
\usepackage{collcell}
\usepackage{longtable}
\usepackage{booktabs}
\newcounter{rowno}
\setcounter{rowno}{0}
\newcommand\myalign[1]{\begin{align*}#1\end{align*}}
\begin{document}
\begin{longtable}[l]{%
>{\stepcounter{rowno}\therowno.}c%
>{\collectcell\myalign}%
m{0.5\textwidth}%
<{\endcollectcell}%
>{\centering\arraybackslash$\displaystyle}%
m{0.5\textwidth}%
<{$}%
}
&
{
e&=mc^2 \\
e&=m g h
}
&
e=mc^2
\\
&
{
e&=mc^2 \\
e_\text{total}&=m g h + m v^2
}
&
A = e \chi \alpha M p l e
\\
\end{longtable}
\end{document}