新环境中的行距​​错误

新环境中的行距​​错误

我需要一个具有不同字体大小的新环境,例如\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}

从而产生输出在此处输入图片描述

看起来第二段的行距与第一段不一样,所以我认为我做错了什么。

最后两段是尝试借助setspace软件包强制解决问题。它工作正常,但正如我所说,我肯定有些事情我做得不对,而且一定有一个更简单的解决方案。有什么帮助吗?

答案1

spacing如果你看一下的定义,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

相关内容