
Мне нужна новая среда с другим размером шрифта, например \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
.