Ich habe Probleme mit dem Abstand zwischen den Absätzen in meinem Dokument und ich glaube, ich konnte dies auf eine benutzerdefinierte Umgebung zurückführen, die ich definiert habe.
\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
Das \ignorespacesandallpars
Kommando liegt bei Martin Scharrer und kommt voneine frühere StackExchange-Frage.
(Ich weiß, dass es viele andere Möglichkeiten gibt – Pakete oder die Definitionen in amsmath – um diese Art von Umgebung zu erhalten, aber ich habe noch nichts gefunden, mit dem ich völlig zufrieden bin, und im Moment ist es einfacher, eine benutzerdefinierte Definition zu verwenden.)
Nachdem ich diese Definition verwendet habe, merke ich, dass die Abstände etwas verrückt sind und zusätzliche \smallskip- oder \medskip-Befehle erfordern. Ich frage mich, was ich falsch mache.
Liegt mein Problem woanders oder mache ich hier etwas falsch?
AKTUALISIEREN:Der folgende Ausschnitt veranschaulicht eines der Probleme (der Abstand vor der zweiten Aufzählungsliste ist nicht derselbe wie vor der ersten):
\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}
Antwort1
Das \@afterheading
ist einer der Gründe, warum Abschnittsbefehle nie in Gruppen verwendet werden sollten ;-)
Es geht global unter \@nobreaktrue
und dannörtlichsetzt \everypar
, um es rückgängig zu machen. Nach dem Ende Ihrer Umgebung (Rückgängigmachen der \everypar
Einstellung) müssen Sie \@nobreaktrue
also warten, bis die nächste Liste es erfasst ...
Und \@nobreak
macht eine Liste nicht einfügen \topsep
...
Um dieses Durcheinander zu vermeiden, müssen Sie sicherstellen, \@afterheading
dass außerhalb Ihrer Umgebung aufgerufen wird.
Wenn Sie in Ihrer Definition \@afterheading
durch ersetzen, wird es außerhalb der durch Ihre Umgebung definierten Gruppe verschoben und erscheint erneut.\aftergroup\@afterheading
\@afterheading
\topsep