\@startsection, форматирование заголовков разделов
Синопсис:
\@startsection{name}{level}{indent}{beforeskip}{afterskip}{style}
Используется для переопределения поведения команд, начинающих разделы, таких как \section или \subsection.
Обратите внимание, что пакет titlesec облегчает манипуляции с разделами. Кроме того, хотя большинство требований к командам разбиения могут быть удовлетворены с помощью \@startsection, некоторые из них нет. Например, в стандартных классах LaTeX book и report команды \chapter и \report не созданы таким образом. Для создания такой команды вы можете использовать команду \secdef.
Технически, \@startsection имеет вид
\@startsection{name}
{level}
{indent}
{beforeskip}
{afterskip}
{style}*[toctitle]{title}
чтобы вызов
\renewcommand{\section}{\@startsection{name}
{level}
{indent}
{beforeskip}
{afterskip}
{style}}
переопределяет \section, сохраняя при этом её стандартную форму вызова \section*[toctitle]{title} (в которой, для напоминания, звёздочка * является необязательной). См. Разбиение на разделы. Это подразумевает, что когда вы пишете команду, такую как \renewcommand{\section}{...}, \@startsection{...} должна быть последней в определении. Смотрите примеры ниже.
- name
-
Имя счётчика, используемого для нумерации заголовка раздела. Этот счётчик должен быть определён отдельно. Чаще всего это либо
section,subsection, илиparagraph. Хотя в этих случаях имя счётчика совпадает с именем команды разбиения, вы не обязаны использовать одинаковые имена.Тогда
\thename отображает номер заголовка, а\namemarkиспользуется для заголовков страниц. См. третий пример ниже. - level
-
Целое число, определяющее уровень команды разбиения. См. Разбиение на разделы для списка стандартных уровней.
Если level меньше или равен значению счётчика
secnumdepth, то заголовки для этой команды разбиения будут нумероваться (см. Разбиение на разделы/secnumdepth). Например, еслиsecnumdepthравно 1 вarticle, то команда\section{Introduction}создаст вывод типа «1 Введение», в то время как\subsection{Discussion}создаст вывод типа «Обсуждение», без префикса номера.Если level меньше или равен значению счётчика tocdepth, то в оглавлении будет запись для этого раздела (см. Разбиение на разделы/tocdepth). Например, в
article, если tocdepth равно 1, то оглавление будет содержать разделы, но не подразделы. - indent
-
Длина, определяющая отступ всех строк заголовка относительно левого края. Чтобы заголовок был выровнен по левому краю, используйте
0pt. Отрицательный отступ, такой как-\parindent, переместит заголовок влево. - beforeskip
-
Абсолютное значение этой длины — это количество вертикального отступа, вставляемого перед заголовком раздела. Этот отступ будет отброшен, если раздел начинается в начале страницы. Если это число отрицательное, то первый абзац, следующий за заголовком, не будет отступать; если оно неотрицательное, то первый абзац будет отступать. (Обратите внимание, что отрицательное значение
1pt plus 2pt minus 3ptравно-1pt plus -2pt minus -3pt.)Например, если beforeskip равно
-3.5ex plus -1ex minus -0.2ex, то для начала нового раздела LaTeX добавит примерно 3,5 высоты буквы «x» в вертикальном пространстве, и первый абзац раздела не будет отступать. Использование упругой длины сplusиminus, является хорошей практикой, поскольку это даёт LaTeX больше гибкости при составлении страницы (см. Размеры).Полный учёт вертикального отступа между базовой линией строки перед заголовком раздела и базовой линией заголовка — это сумма
\parskipшрифта текста,\baselineskipшрифта заголовка и абсолютного значения beforeskip. Это пространство обычно упругое, поэтому может растягиваться или сжиматься. (Если раздел начинается на новой странице, так что вертикальный отступ отбрасывается, то базовая линия текста заголовка будет там, где LaTeX разместил бы базовую линию первой строки на этой странице.) - afterskip
-
Это длина. Если afterskip неотрицательная, то это вертикальный отступ, вставляемый после заголовка раздела. Если она отрицательная, то заголовок раздела становится заголовком-строкой, поэтому он становится частью следующего абзаца. В этом случае абсолютное значение длины даёт горизонтальное расстояние между концом заголовка и началом следующего абзаца. (Обратите внимание, что отрицательное значение
1pt plus 2pt minus 3ptравно-1pt plus -2pt minus -3pt.)Как и с beforeskip, использование упругой длины с компонентами
plusиminusявляется хорошей практикой, так как это даёт LaTeX больше гибкости при построении страницы.Если
afterskipнеотрицательная, то полное количество вертикального отступа между базовой линией заголовка раздела и базовой линией первой строки следующего абзаца — это сумма\parskipшрифта заголовка,\baselineskipшрифта текста и значения after. Это пространство обычно упругое, поэтому может растягиваться или сжиматься. (Обратите внимание, что поскольку знакafterskipменяет заголовок раздела с самостоятельного на заголовок-строку, вы не можете использовать отрицательное значениеafterskipдля отмены части\parskip.) - style
-
Управляет стилем заголовка. См. примеры ниже. Типичные команды, которые следует использовать здесь, —
\centering,\raggedright,\normalfont,\hrule, или\newpage. Последняя команда в style может быть командой, которая принимает один аргумент, например,\MakeUppercaseили\fbox, которые принимают один аргумент. Заголовок раздела будет предоставлен в качестве аргумента этой команде. Например, установка style на\bfseries\MakeUppercaseприведет к тому, что заголовки будут полужирными и заглавными.
Это значения по умолчанию LaTeX для первых трёх разделов, которые определяются с помощью \@startsection, для классов article, book и report.
- Для
section: level равно 1, indent равно 0pt, beforeskip равно-3.5ex plus -1ex minus -0.2ex, afterskip равно2.3ex plus 0.2ex, а style равно\normalfont\Large\bfseries. - Для
subsection: level равно 2, indent равно 0pt, beforeskip равно-3.25ex plus -1ex minus -0.2ex, afterskip равно1.5ex plus 0.2ex, а style равно\normalfont\large\bfseries. -
Для
subsubsection: level равно 3, indent равно 0pt, beforeskip равно-3.25ex plus -1ex minus -0.2ex, afterskip равно1.5ex plus 0.2ex, а style равно\normalfont\normalsize\bfseries.
Ниже приведены некоторые примеры. Они могут быть помещены либо в пакет или файл класса, либо в преамбулу документа LaTeX. Если вы поместите их в преамбулу, они должны быть помещены между командой \makeatletter и командой \makeatother. (Вероятно, сообщение об ошибке You can't use
`\spacefactor' in vertical mode. означает, что вы забыли это сделать.) См. \makeatletter и \makeatother.
Это сделает заголовки разделов крупными, полужирными и центрированными. Это \renewcommand , потому что стандартные классы LaTeX уже определили \section. По той же причине он не определяет счётчик section или команды \thesection и \l@section.
\renewcommand\section{%
\@startsection{section}% name
{1}% level
{0pt}% indent
{-3.5ex plus -1ex minus -.2ex}% beforeskip
{2.3ex plus.2ex}% afterskip
{\centering\normalfont\Large\bfseries}% style
}
Это сделает заголовки subsection в стиле мелких прописных букв, встроенными в абзац.
\renewcommand\subsection{%
\@startsection{subsection}% name
{2}% level
{0em}% indent
{-1ex plus 0.1ex minus -0.05ex}% beforeskip
{-1em plus 0.2em}% afterskip
{\scshape}% style
}
Предыдущие примеры переопределяли существующие команды заголовков разделов. Этот определяет новую, иллюстрируя необходимый счётчик и макросы для отображения этого счётчика.
\setcounter{secnumdepth}{6}% show counters this far down
\newcounter{subsubparagraph}[subparagraph]% counter for numbering
\renewcommand{\thesubsubparagraph}% how to display
{\thesubparagraph.\@arabic\c@subsubparagraph}% numbering
\newcommand{\subsubparagraph}{\@startsection
{subsubparagraph}%
{6}%
{0em}%
{\baselineskip}%
{0.5\baselineskip}%
{\normalfont\normalsize}}
\newcommand*\l@subsubparagraph{\@dottedtocline{6}{10em}{5em}}% for toc
\newcommand{\subsubparagraphmark}[1]{}% for page headers
© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/_005c_0040startsection.html