带有 > 和 < 前缀的表格中的数学环境

带有 > 和 < 前缀的表格中的数学环境

我试图在表格的第 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}

相关内容