新環境行距錯誤

新環境行距錯誤

我需要一個具有不同字體大小的新環境,例如\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如果您查看by的定義,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.

相關內容