タイトルはそれほど説明的ではありません。引数をヘッダーとして受け取ることができるカスタム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}