在 longtable 中的单元格中居中方程

在 longtable 中的单元格中居中方程

我希望显示的方程式在 longtable 中居中,但它们似乎向右移动了一点。

在此处输入图片描述

这是代码。

\documentclass[a4paper, 11pt, oneside]{amsart}
\usepackage{amsmath,amssymb, amsthm}
\usepackage[a4paper,width=16.5cm,top=1.5cm,bottom=2.cm]{geometry}
\usepackage{ltxtable}
\usepackage{cases}
\usepackage{lipsum}

\begin{document}

\begin{longtable}{p{0.13\textwidth} | p{0.86\textwidth-2\tabcolsep}}
\hline\hline
\bf LEFT Col. & \bf RIGHT Col.\\
\hline\hline
ABC & \lipsum[2].\\
\hline
abc & \lipsum[2]
\begin{numcases}{u(r)=}
C_1 r + C_2 \log r + C_3 \log (\log r)  \\
 C_4 \log ( \log (\log r))+ C_5 \log (\log ( \log (\log r)))
\end{numcases}
hhu
\begin{align}
C_1 r + C_2 \log r + C_3 \log (\log r)+ C_4 \log ( \log (\log r))+ C_5 \log (\log ( \log (\log r)))
\end{align}
\\
\hline\hline
\end{longtable}

\end{document}

此外,表格似乎太大了。如何解决这个问题?

答案1

文档amsart类似乎执行了一些指令,这些指令最终会扰乱方程式生成器例程。参见@egreg 的回答以便进行全面诊断和直接治疗。如果您不采用该解决方案,则需要将显示的方程式装入 中minipage

还请注意,第二列的可用宽度不是0.86\textwidth-2\tabcolsep,而是0.87\textwidth-4\tabcolsep-1\arrayrulewidth

在此处输入图片描述

\documentclass[a4paper, 11pt, oneside]{amsart}
%\usepackage{amsmath,amssymb, amsthm} % loaded automatically by 'amsart' doc. class
\usepackage[a4paper,width=16.5cm,top=1.5cm,bottom=2.cm]{geometry}
\usepackage{longtable,cases,calc,lipsum}

\begin{document}

\begin{longtable}{p{0.13\textwidth} | p{0.87\textwidth-4\tabcolsep-1\arrayrulewidth}}
\hline
\bfseries LEFT Col. & \bfseries RIGHT Col.\\
\hline
abc & \lipsum[2][1-5] \par
\begin{minipage}{\hsize} % <-- new
\begin{numcases}{u(r)=}
C_1 r + C_2 \log r + C_3 \log (\log r)  \\
 C_4 \log ( \log (\log r))+ C_5 \log (\log ( \log (\log r)))
\end{numcases}
hhu
\begin{equation}
C_1 r + C_2 \log r + C_3 \log (\log r)+ C_4 \log ( \log (\log r))
  + C_5 \log (\log ( \log (\log r)))_{\vphantom{a}}
\end{equation}
\end{minipage} % <-- new
\\
\hline
\end{longtable}

\end{document}

答案2

如果你尝试用article,问题就会消失,所以它必须依赖于amsart,事实确实如此,因为该类\fullwidthdisplay在每次数学显示时执行,这意味着

\displayindent=0pt \displaywidth=\columnwidth

在您的上下文中,这将产生比列规范分配的更大的宽度p。您可以通过告诉 LaTeX 改用来解决此问题\linewidth

\documentclass[a4paper, 11pt, oneside]{amsart}
\usepackage{amsmath,amssymb, amsthm}
\usepackage[a4paper,width=16.5cm,top=1.5cm,bottom=2.cm]{geometry}
\usepackage{longtable,array}
\usepackage{cases}
\usepackage{lipsum}

\newcommand{\modfullwidthdisplay}{%
  \displayindent=0pt
  \displaywidth=\linewidth
}
\newcolumntype{q}[1]{>{\let\fullwidthdisplay\modfullwidthdisplay}p{#1}}

\begin{document}

\begin{longtable}{
  @{}
  p{\dimexpr0.14\textwidth-\tabcolsep-0.5\arrayrulewidth}
  |
  q{\dimexpr0.86\textwidth-\tabcolsep-0.5\arrayrulewidth}
  @{}
}
\hline
\bfseries LEFT Col. & \bfseries RIGHT Col.\\
\hline
ABC & \lipsum[2].\\
\hline
abc & \lipsum[2]
\begin{numcases}{u(r)=}
C_1 r + C_2 \log r + C_3 \log (\log r)  \\
 C_4 \log ( \log (\log r))+ C_5 \log (\log ( \log (\log r)))
\end{numcases}
hhu
\begin{align}
C_1 r + C_2 \log r + C_3 \log (\log r)+ C_4 \log ( \log (\log r))+ C_5 \log (\log ( \log (\log r)))
\end{align}
\\
\hline
\end{longtable}

\end{document}

在此处输入图片描述

我稍微改变了尺寸规格以便覆盖整个文本宽度。

请注意,该功能\bf已被弃用约 30 年。

相关内容