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