定理后的部分缩进

定理后的部分缩进

代码:

\documentclass[a4paper]{report}
\usepackage{lipsum,amsthm,thmtools,xparse}
\newtheorem{defi}{Definizione}
\NewDocumentCommand{\xbegin}{mooo}
    {\IfValueTF{#4}
        {\begin{#1}[name={\contrel{#2}{#4}},continued={#3}]}
        {\IfValueTF{#3}
            {\begin{#1}[name={#2},label={#3}]}
            {\IfValueTF{#2}
                {\begin{#1}[name={#2}]}
                {\begin{#1}}
            }
        }
    }
\newcommand{\xend}[1]{\end{#1}\noindent}

\begin{document}
\xbegin{defi}
\lipsum[1]
\end{defi}
\lipsum[2]
\xbegin{defi}
\lipsum[3]
\xend{defi}
\lipsum[4]
\xbegin{defi}
\lipsum[5]
\end{defi}\noindent
\lipsum[6]
\end{document}
%5 and 1 comment. Then 6 more and 2 comment.

输出:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

基本上,\xbegin通过将键作为可选参数(不带name=label=continues=部分)可以使(在我看来)定理开始的代码更具可读性。\xend 应该抑制定理后第一行的缩进。我们注意到以下几点:

  1. 在第一个 Definizione 之后,我们有缩进;
  2. 奇怪的是,如果我使用正常的\begin,我不会得到缩进;
  3. 在第二次定义之后,我们得到了部分缩进,即缩进量在零和正常缩进量之间;它可能看起来也有额外的垂直空间,但它只是分割的图片;
  4. 第三次定义之后,我们就没有缩进。

我的问题有两个:

  1. 为什么缩进会出现\xbegin,如第 1 点和第 2 点所述?
  2. 为什么\noindent只有\xend部分抑制缩进?

答案1

“部分缩进”不是缩进,它只是来自源文件的相邻空格,%如果您使用空白来布置您不想出现在输出中的源,则需要在行尾使用空白。

在评论中,你问为什么你会得到完整的缩进,\let\xend\end这是段落开头的正常行为,在定理环境之后就是这种情况。你\xindent抑制了缩进,但代价是隐式地开始一个新段落,这使得标记非常脆弱,定理环境结束后的任何空格字符都会在输出中显示为空格,定理环境后的空白行或显示环境(如列表)将结束通过导致\noindent虚假空白行而开始的空段落,

相关内容