環境内での長さの設定の問題(環境外への流出)

環境内での長さの設定の問題(環境外への流出)

ドキュメント内の段落間のスペースに問題があり、定義したカスタム環境までさかのぼることができたと思います。

\makeatletter
\def\remarkname{Remark}
\newcounter{counter@myremarks}
\newenvironment{remark}{\par\vspace{0.2cm}\par\noindent\begingroup\small%
  \addtocounter{counter@myremarks}{1}%
  \textbf{\remarkname~\arabic{counter@myremarks}.}~~\ignorespacesandallpars}{%
  \endgroup\par\vspace{0.2cm}\par\@afterindentfalse\@afterheading}
\newenvironment{remark*}{\par\vspace{0.2cm}\par\noindent\begingroup\small%
  \textbf{\remarkname.}~~\ignorespacesandallpars}{%
  \endgroup\par\vspace{0.2cm}\par\@afterindentfalse\@afterheading}
\makeatother

指揮\ignorespacesandallparsはマーティン・シャラーが担当し、以前のStackExchangeの質問

(この種の環境を実現するには、パッケージや amsmath の定義など、他にも多くの方法があることは知っていますが、まだ完全に満足できるものを見つけておらず、現時点ではカスタム定義を使用する方が簡単です。)

この定義を使用した後、間隔が少しおかしくなり、追加の \smallskip または \medskip コマンドが必要になることに気付いたと思います。何が間違っているのか疑問に思います。

問題は別のところにあるのでしょうか、それとも私が何か間違っているのでしょうか?

アップデート:次のスニペットは問題の 1 つを示しています (2 番目の itemize リストの前のスペースが最初のものと異なります)。

ここに画像の説明を入力してください

\documentclass{article}

\makeatletter
\def\ignorespacesandallpars{%
  \begingroup
  \catcode13=10
  \@ifnextchar\par
    {\endgroup\expandafter\ignorespacesandallpars\@gobble}%
    {\endgroup}%
}
\def\remarkname{Remark}
\newenvironment{remark*}{\par\vspace{0.2cm}\par\noindent\begingroup\small%
  \textbf{\remarkname.}~~\ignorespacesandallpars}{%
  \endgroup\par\vspace{0.2cm}\par\@afterindentfalse\@afterheading}
\makeatother

\begin{document}

Following is an item list
\begin{itemize}
\item One
\item ...
\end{itemize}

\begin{remark*}
  Now a remark.
\end{remark*}

And another item list
\begin{itemize}
\item One
\item ...
\end{itemize}

\end{document}

答え1

まあ、これは\@afterheadingセクションコマンドをグループで使用してはいけない理由の 1 つです ;-)

それは地球上に定着し\@nobreaktrue、そして地元で元に戻すように設定します\everypar。したがって、環境の終了後 (\everypar設定を元に戻す)、\@nobreaktrue次のリストがそれをキャッチするのを待つことになります...

そして、\@nobreakリストを挿入しないようにします\topsep...

この混乱を避けるには、\@afterheading環境外で呼び出されるようにする必要があります。

定義内で\@afterheadingを に置き換えると、 は環境で定義されたグループの外側に移動し、 が再表示されます。\aftergroup\@afterheading\@afterheading\topsep

関連情報