Абзацы с двойным интервалом, заголовки с одинарным интервалом

Абзацы с двойным интервалом, заголовки с одинарным интервалом

Я использую пакет "setspace" для форматирования документа с двойным интервалом (требование для задания). Однако один из моих заголовков разделов занимает две строки, и эти заголовки разделов выглядят лучше с одинарным интервалом. Я пошел дальше и исправил это следующим образом.

Nunc venenatis nulla eu arcu pellentesque eu molestie nunc condimentum.
Donec sodales lacinia dictum.
Sed aliquam turpis quis enim bibendum pharetra.
This is the last paragraph in section i.

\singlespace
\section{The Next Section Which Has a Fairly Long Name that Stretches Over Two Lines}
\doublespace
This is the first paragraph in section i+1.
Cras ut tortor vel dui ultricies dapibus vitae sit amet nisi.
Aliquam rhoncus leo id eros volutpat faucibus.
Integer lectus elit, varius et semper eget, tristique vel odio.

Это единственный случай (пока) в моей статье, где заголовок требует двух строк, так что не так уж и сложно исправить это с помощью этого хака. Однако я могу себе представить, что по мере того, как статья становится длиннее и в ней появляется больше разделов, добавлять этот хак несколько раз может стать более утомительным.

Есть ли способ указатьодин разчто заголовки разделов должны быть с одинарным интервалом, а абзацы с двойным интервалом, вместо того, чтобы добавлять этот трюк несколько раз по всему документу?

решение1

Вы можете использоватьetoolboxпакет для вставки \singlespacingнепосредственно перед секционными блоками, а затем для добавления \doublespacing:

\documentclass{article}
\usepackage{setspace}
\usepackage{etoolbox}

\makeatletter
\pretocmd{\@sect}{\singlespacing}{}{}
\pretocmd{\@ssect}{\singlespacing}{}{}
\apptocmd{\@sect}{\doublespacing}{}{}
\apptocmd{\@ssect}{\doublespacing}{}{}
\makeatother

\doublespacing

\begin{document}

Nunc venenatis nulla eu arcu pellentesque eu molestie nunc condimentum.
Donec sodales lacinia dictum.
Sed aliquam turpis quis enim bibendum pharetra.
This is the last paragraph in section i.

\section{The Next Section Which Has a Fairly Long Name that Stretches Over Two Lines}

This is the first paragraph in section i+1.
Cras ut tortor vel dui ultricies dapibus vitae sit amet nisi.
Aliquam rhoncus leo id eros volutpat faucibus.
Integer lectus elit, varius et semper eget, tristique vel odio.

\end{document}

введите описание изображения здесь

Это будет применяться к \section, \subsection, \subsubsection.

Другой вариант — использоватьtitlesecупаковка:

\documentclass{article}
\usepackage{setspace}
\usepackage{titlesec}

\titleformat{\section}
{\singlespacing\normalfont\Large\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}
{\singlespacing\normalfont\large\bfseries}{\thesubsection}{1em}{}
\titleformat{\subsubsection}
{\singlespacing\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}

\doublespacing

\begin{document}

Nunc venenatis nulla eu arcu pellentesque eu molestie nunc condimentum.
Donec sodales lacinia dictum.
Sed aliquam turpis quis enim bibendum pharetra.
This is the last paragraph in section i.

\section{The Next Section Which Has a Fairly Long Name that Stretches Over Two Lines}

This is the first paragraph in section i+1.
Cras ut tortor vel dui ultricies dapibus vitae sit amet nisi.
Aliquam rhoncus leo id eros volutpat faucibus.
Integer lectus elit, varius et semper eget, tristique vel odio.

\end{document}

Или, используя сокращенный синтаксис:

\usepackage{titlesec}

\titleformat*{\section}{\normalfont\Large\bfseries\singlespacing}
\titleformat*{\subsection}{\normalfont\large\bfseries\singlespacing}
\titleformat*{\subsubsection}{\normalfont\normalsize\bfseries\singlespacing}

Кстати, setspaceпакет предоставляет несколько команд и сред; команды (ключи) заканчиваются на «ing»: \singlespacing, \onehalfspacing, \doublespacing, тогда как среды — singlespace, onehalfspace, doublespace.

Использование \doublespaceare you are doing (в качестве переключателя) не совсем корректно; следующий простой документ:

\documentclass{article}
\usepackage{setspace}

\doublespace

\begin{document}

test

\end{document}

при обработке в выходной консоли отобразится сообщение

(\end occurred inside a group at level 1)

### semi simple group (level 1) entered at line 4 (\begingroup)

что указывает на то, что группа началась, но не была завершена (в данном случае группа, созданная командой, \doublespaceсвязанной со средой doublespace). Правильная форма использования переключателя —

\documentclass{article}
\usepackage{setspace}

\doublespacing

\begin{document}

test

\end{document}

и для соответствующей среды:

\documentclass{article}
\usepackage{setspace}

\begin{document}

\begin{doublespace}
test...
\end{doublespace}

\end{document}

решение2

Если используется один из «стандартных» классов документов — article, report, и — или класс документов, основанный на одном из стандартных классов, простым решением будет загрузка пакета и выдача инструкции в преамбуле.booksectsty\allsectionsfont{\singlespacing}

MWE (минимальный рабочий пример):

\documentclass{article}
\usepackage{setspace,lipsum}
\doublespacing

\usepackage{sectsty}
\allsectionsfont{\singlespacing}

\begin{document}

\lipsum[1] % filler text

\section{The Next Section Which Has a Fairly Long Name that Stretches Over Two Lines}

\lipsum[2] % more filler text

\end{document}

Связанный контент