使用adjustwidth环境套用在定理环境之外会出现空行,在添加一个-baselineskip后恢复,但为什么用了enumitem宏包后又重新出现空行?

发布于 2024-11-29 23:43:52

使用changepage中的adjustwidth套用在定理环境之外会使得输出结果出现神秘空行。

image.png

这可通过在添加一行-baselineskip解决。

image.png

但是这种解决方法会在添加宏包enumitem后失效。准确来说,空行被消去了大半但并未完全,这导致定理上下行距不一致。

image.png

我有两个问题,第一个是为什么在定理环境后套一个adjustwidth会使输出内容开头多出空行,但是证明环境不会有空行。第二个是为什么用了enumitem之后再使用-baselineskip仍会多出空行。最后我希望能有一个良好的解决方案,使得既能保持enumitem宏包又能使定理上下保持恰当的距离。

另外我发现,在只套用adjustwidth后不只是上边的行距变大,同时下边的也缩小了。这导致使用-baselineskip会使得上下整体的行距较未使用adjustwidth的行距缩小。

这些问题在使用
\setlength{\leftskip}{40pt}
\setlength{\rightskip}{40pt}
代替adjustwidth后不会出现。然而在证明环境中使用setlength仍会有问题。譬如,若在行间公式中使用\proofhere,由于证毕号占用的位置是公式编号,而公式编号不会随setlength而变化,这导致证毕符号会超出证明文本最右端40pt。因此,我才采用了adjustwidth。

image.png

所以,出于上述原因,如果有某种方法可以在我使用setlength时仍保证证毕号与证明文本的右端对齐,那我就不需要纠结adjustwidth的各种问题了。

下面是使用adjustwidth, -baselineskip, enumitem时的源码。

\documentclass[a4paper, 10pt]{ctexart}

\usepackage{amsmath, amsthm, changepage, enumitem}

\newtheorem{theorem}{\textsf{定理}}[section]

\newenvironment{zhengming}
    {
        \begin{adjustwidth}{40pt}{40pt}
        \begin{proof}
    }
    {
        \end{proof}
        \end{adjustwidth}
    }

\newenvironment{dingli}
    {
        \begin{adjustwidth}{40pt}{40pt}
        \vspace{-\baselineskip}
        \begin{theorem}
    }
    {
        \end{theorem}
        \end{adjustwidth}
    }

\ctexset{section={format+={\heiti}}}
\renewcommand{\proofname}{\textbf{\heiti 证明}}

\begin{document}

测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试

\begin{dingli}
    测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试
\end{dingli}

测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试

\begin{dingli}
    测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试
\end{dingli}

测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试

\begin{zhengming}
    测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试
    \begin{equation*}
        E = mc^2. \qedhere
    \end{equation*}
\end{zhengming}

测试文本测试测试文本测试测试文本测试测试文本测试测试文本测试

\end{document}

查看更多

关注者
0
被浏览
203
雾月
雾月 2024-11-30
这家伙很懒,什么也没写!

改成这样:

\setlist[trivlist]{nosep}
\newenvironment{zhengming}
    {\setlength\partopsep{0pt}%
        \begin{adjustwidth}{40pt}{40pt}
        \begin{proof}
    }
    {
        \end{proof}
        \end{adjustwidth}
    }
\newenvironment{dingli}
    {\setlength\partopsep{0pt}%
        \begin{adjustwidth}{40pt}{40pt}
        \vspace{-\baselineskip}
        \begin{theorem}
    }
    {
        \end{theorem}
        \end{adjustwidth}
    }
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览