清單中新環境的間距

清單中新環境的間距

標題沒有那麼描述性。我嘗試編寫一個自訂remark樣式的amsthm環境,它可以將參數作為標題(我不需要引用功能)。我想透過避免trivlist. remark-風格定理環境.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}

在此輸入影像描述

相關內容