tabularx 与一些列表类环境之间的奇怪交互

tabularx 与一些列表类环境之间的奇怪交互

发帖后这个答案查询如何增加一列的宽度并将另一列的宽度减少相同的长度?,我考虑过如何概括(和简化)OP的设置,例如,通过theorem在两列中使用显式环境。

tabularx在以下使用和包的 MWE 中amsthm,一切正常。(屏幕截图中的框架线表示文本块的边缘。)在第一个tabularx环境中,第一列比第二列窄,而在第二个tabularx环境中,情况则相反。在这两种环境中,构成“定理”主体的填充文本占据了单元格的整个宽度:

在此处输入图片描述

\documentclass{article}
\usepackage[a4paper,margin=2.5cm,showframe]{geometry}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\hsize=#1\hsize}X}
\usepackage{lipsum}

\usepackage{amsthm} 
%\usepackage{ntheorem}

\newtheorem{theorem}{Theorem}

\begin{document}
\noindent % First column is narrower than second:
\begin{tabularx}{\textwidth}{@{} L{0.8} | L{1.2} @{}}
  \begin{theorem} \lipsum*[2] \end{theorem} &
  \begin{theorem} \lipsum*[2] \end{theorem}
\end{tabularx}

\bigskip\noindent % Now, first column is wider:
\begin{tabularx}{\textwidth}{@{} L{1.2} | L{0.8} @{}}
  \begin{theorem} \lipsum*[2] \end{theorem} &
  \begin{theorem} \lipsum*[2] \end{theorem}
\end{tabularx}
\end{document}

然而,如果我注释掉该指令并激活前面的 MWE 中的\usepackage{amsthm}指令(并保持其他所有内容不变),我会得到一个完全不同的结果:在第一个环境中,右侧单元格中的文本不占用可用的水平空间; 在第二个环境中,即使两个单元格中文本的宽度限制为第二列的宽度,两列现在也占据相同的宽度。\usepackage{ntheorem}tabularxtabularx

问题ntheorem:我是否遇到了或中的错误tabularx,或者我错误地设置了生成X不同宽度列的机制?

一些背景信息:TeXLive2019 和 TeXLive2020 的当前预发布版本都存在此问题。我使用tabularx 2020/01/15 v2.11camsthm 2017/10/31 v2.20.4ntheorem Version 1.33 <2011/08/15>。据我所知,该问题似乎与文档类别的选择无关。

在此处输入图片描述

答案1

手册的最新版本(自 2017 年起)tabularx已记录设置\hsize是不够的,如果您需要嵌入乳胶列表环境(包括像定理这样的 trivlist),您需要设置\linewidth为匹配。

在此处输入图片描述

使用

\usepackage{tabularx}
\newcolumntype{L}[1]{>{\hsize=#1\hsize\linewidth=\hsize}X}
\usepackage{lipsum}

%\usepackage{amsthm} 
\usepackage{ntheorem}

相关内容