列表中新环境的间距

列表中新环境的间距

标题不太具描述性。我尝试编写一个自定义remark风格的amsthm环境,它可以将参数作为标题(我不需要引用功能)。我想通过避免 来简化代码trivlistremark风格的定理环境.5\topsep在环境前后都有空格。但这在列表环境中看起来真的很奇怪,例如itemize。这是我所拥有的:

\documentclass{article}
\usepackage{lipsum} % for testing

% paragraph environment, takes one mandatory header text
\newenvironment{para}[1]{
    % add space before environment
    \par\addvspace{.5\topsep}
    % header text 
    \noindent\textit{#1.}%
    % default rubber space after header text and ignore following spaces
    \hspace*{5pt plus 1pt minus 1pt}\ignorespaces
}{
    % add space after environment
    \par\addvspace{.5\topsep}
}

\begin{document}

\lipsum[66]

\begin{para}{Looks good}
    \lipsum[66]
\end{para}

\lipsum[66]

\begin{itemize}
    \item \lipsum[66]

        Compare \verb|\parsep| above and the \verb|\parsep+.5\topsep| below.

        \begin{para}{Looks weird}
            \lipsum[66]
        \end{para}

        \lipsum[66]
\end{itemize}

\end{document}

如您所见,在列表环境中,将.5\topsep添加到非零的\parsep,从而产生更大的间隙。原始amsthm环境通过使用 Latex 的列表机制(将\@topsep和设置\@topsepadd为所需的间距)来避免这种情况。同样,如果在列表环境中调用,.5\topsep我更愿意根本不添加任何空格。para有没有办法检测一个人是否处于列表环境中?或者有更优雅的解决方案?


编辑:添加了编译文件的图片。

在此处输入图片描述

答案1

作为大卫·卡莱尔说,您不应该使用它\topsep来定义您的环境,因为它是由列表环境设置和重置的,并且您的环境不会提供一致的行为(因为它取决于经常动态更改的长度)。您可能希望对值进行硬编码(如果您愿意,可以将其设为胶水,但我只会接受,4pt因为这似乎是所需的数量)。

\parskip为了处理可能存在或不存在的效果(在列表环境中,\parskip设置为等于\parsep),您可以通过添加额外的 vspace 来取消它。以下可能会满足您的要求:

\documentclass{article}
\usepackage{lipsum} % for testing

% paragraph environment, takes one mandatory header text
\newenvironment{para}[1]{
    % add space before environment
    \par\addvspace{4pt}\addvspace{-\parskip}
    % header text 
    \noindent\textit{#1.}%
    % default rubber space after header text and ignore following spaces
    \hspace*{5pt plus 1pt minus 1pt}\ignorespaces
}{
    % add space after environment
    \par\addvspace{4pt}\addvspace{-\parskip}
}

\begin{document}

\lipsum[66]

\begin{para}{Looks good}
    \lipsum[66]
\end{para}

\lipsum[66]

\begin{itemize}
    \item \lipsum[66]

        Compare \verb|\parsep| above and the \verb|\parsep+.5\topsep| below.

        \begin{para}{Looks weird}
            \lipsum[66]
        \end{para}

        \lipsum[66]
\end{itemize}

\end{document}

在此处输入图片描述

相关内容