목록의 새 환경 간격

목록의 새 환경 간격

제목은 그다지 설명적이지 않습니다. 나는 인수를 헤더로 사용할 수 있는 사용자 정의 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\topsep0이 아닌 값에 이 추가되어 \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}

여기에 이미지 설명을 입력하세요

관련 정보