新しい環境内の行間隔が間違っている

新しい環境内の行間隔が間違っている

異なるフォントサイズの新しい環境が必要です\large。たとえば、次のようなことをしていますムウェ:

\documentclass{article}
\usepackage{lipsum}   % dummy text
\usepackage{setspace} % for a 'forced' solution

\NewDocumentEnvironment{mynewenv}{}{\large}{}
\NewDocumentEnvironment{myotherenv}{}{\begin{spacing}{1}\large}{\end{spacing}}

\begin{document}
\begin{mynewenv}
\lipsum[1][1-4]

\lipsum[1][1-4]
\end{mynewenv}

Text outside environments and with normal size.
% 'forced' solution:
\begin{myotherenv}
\lipsum[1][1-4]

\lipsum[1][1-4]
\end{myotherenv}
\end{document}

それによって出力: ここに画像の説明を入力してください

2 番目の段落の行間隔が最初の段落と同じではないようなので、何か間違っているのではないかと思います。

最後の 2 つの段落は、パッケージの助けを借りて強制的に解決策を試みていますsetspace。問題なく動作しますが、前述したように、何かが適切に行われていないことは確かであり、より簡単な解決策があるはずです。何か助けていただけますか?

答え1

spacingbyの定義を見setspace.styてみると(コメントは削除されました)

\newenvironment{spacing}[1]{%
  \par
  \begingroup
  \setstretch {#1}%
}{%
  \restore@spacing
}

そして今、あなたはそれを見ます

\newcommand{\restore@spacing}{%
  \par
  \vskip \parskip
  \vskip \baselineskip
  \endgroup
  \vskip -\parskip
  \vskip -\baselineskip
}

\par最初と最後の主要なものを除いて、パッケージから必要なものはほとんどありません。

\NewDocumentEnvironment{mynewenv}{}{\par\large}{\par}

最後に がある理由は何でしょうか\par? がない場合、 のスコープは段落\largeがタイプセットされる前に終了し、 に遭遇したときに有効なベースライン間隔を TeX が使用します。\parつまり、通常は からです\normalsize

関連情報