Первая версия

Первая версия

Мне нужен раздел, который на самом деле не является ни частью, ни главой. Поэтому я пытался определить новую команду, \subpart, основанную на команде \part, но с собственной нумерацией, которая выглядела бы так, в середине новой пустой страницы:

ПОДЧАСТЬ ПЕРВАЯ

Название подраздела

Однако, когда я пытаюсь это сделать, всегда появляются ошибки...

Мой подход основан на коде из не помню-где в сети:

\makeatletter
\def\@subpart[#1]{%
    \ifnum \c@secnumdepth >\m@ne
      \refstepcounter{subpart}%
      \addcontentsline{toc}{subpart}{\thepart\hspace{1em}#1}%
    \else
      \addcontentsline{toc}{subpart}{#1}%
    \fi
    {\parindent \z@ %\raggedright                    % Commented \raggedright
     \interlinepenalty \@M
     \normalfont
     \ifnum \c@secnumdepth >\m@ne
       \Large\bfseries\hfil\partname~\thepart\hfil   %  added \hfil … \hfil for centering
       \par\nobreak
     \fi
     \huge \bfseries %
     \markboth{}{}\par}%
    \nobreak
    \vskip 3ex
    \@afterheading}
\makeatother

Мне действительно следует научиться правильно использовать LaTeX…

Спасибо за помощь,
Себастьян.

решение1

Определение совершенно нового секционного блока — непростая задача. Использованиеtitlesecpackage может облегчить работу; поскольку вы не предоставили информацию о том, как должны выглядеть записи для подразделов в оглавлении, я выбрал промежуточный стиль между стилем частей и стилем глав; вы можете изменить это, переопределив соответствующим образом \l@subpart:

\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{tocloft}
\usepackage{lipsum}
\usepackage{fmtcount}

\newcommand\subpartname{Subpart}
\titleclass{\subpart}{top}[\part]
\newcounter{subpart}
\renewcommand\thesubpart{\Numberstring{subpart}}

\makeatletter
\titleformat{\subpart}[display]
  {\normalsize\Huge\filcenter}{\scshape\subpartname~\thesubpart}{1em}{{\bfseries#1}\iftitlemeasuring{\def\ttl@endlongest{\clearpage}}{}}
\titlespacing*{\subpart}
  {0pt}{0em}{\pagetotal}
\makeatother

\newcommand\subpartautorefname{\subpartname}
\newcommand\subpartbreak{\cleardoublepage\mbox{}\vfil}

\assignpagestyle{\subpart}{plain}

\makeatletter
\def\toclevel@subpart{0}
\newcommand*\l@subpart[2]{%
  \ifnum \c@tocdepth >-2\relax
    \addpenalty{-\@highpenalty}%
    \addvspace{1em \@plus\p@}%
    \setlength\@tempdima{3.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      {\leavevmode
       \large\bfseries\subpartname~#1\hfil\hb@xt@\@pnumwidth{\hss #2}}\par
       \nobreak
         \global\@nobreaktrue
         \everypar{\global\@nobreakfalse\everypar{}}%
    \endgroup
  \fi}
\makeatother

\begin{document}

\tableofcontents
\part{Test Part One}
\subpart{Test Subpart One}
\chapter{Test Chapter One}
\section{Test Section}
\subpart{Test Subpart Two}
\chapter{Test Chapter Two}
\section{Test Section}

\end{document}

Примите во внимание, что теперь уровень секционных единиц, \chapterсверху вниз, уменьшился на единицу: т.е. \partимеет уровень -1, \subpartимеет уровень 0, \chapterимеет уровень 1, \sectionимеет уровень 2, \subsectionимеет уровень 3и т.д.

решение2

Ответ Гонсало Медины хорош. Однако я хотел бы дополнить его

  1. показывая, как можно использовать titletocпакет для работы с оглавлением, и

  2. показывая, как можно изменить схему нумерации, чтобы подразделы и главы включали счетчики более высокого уровня.

Первая версия

Просто добавлю titletoc:

Образец подраздела

с

Образец содержания

\documentclass{book}

\usepackage[newparttoc]{titlesec}
\usepackage{titletoc}

\titleformat{\part}[display]{\normalfont\Huge\bfseries}%
{\partname~\thepart}{1pc}{\Huge\bfseries}

\titleclass{\subpart}{page}[\part]

\newcounter{subpart}

\renewcommand{\thesubpart}{\Alph{subpart}}
\newcommand{\subpartname}{Subpart}

\titleformat{\subpart}[display]{\normalfont\Large\bfseries}%
{\subpartname~\thesubpart}{1pc}{\Huge\bfseries}

\titlespacing{\subpart}{0pt}{0pt}{0pt}

\titlecontents{subpart}[0pt]{\addvspace{1pc}\normalfont\bfseries}%
{\thecontentslabel\enspace ---\enspace\large}%
{\normalfont\large\bfseries}{\hspace{2em plus 1fill}\large\contentspage}

\begin{document}
\tableofcontents

\part{Part One}

\subpart{First Subpart}

\chapter{A chapter}

\subpart{Second Subpart}

\chapter{Another chapter}

\section{Testing}

\section{TT}

\part{Part Two}

\subpart{First Subpart}

\chapter{A chapter}

\subpart{Second Subpart}

\chapter{Another chapter}

\end{document}

Главное, что следует отметить в вышеизложенном, это то, что необходимо переопределить part, чтобы заставить работать функции оглавления. Код тогда

  • устанавливается subpartкак подразделение непосредственно ниже part(и, следовательно, выше chapter),
  • определяет соответствующий счетчик и способ его печати ( \thesubpart)
  • вводит строку для имени подраздела
  • настраивает печать заголовков подразделов в виде отображаемого (центрированного) блока
  • определяет форматирование оглавления

Вторая версия

С поднумерацией:

Новый образец подраздела

с

Новый образец оглавления

\documentclass{book}

\usepackage[newparttoc]{titlesec}
\usepackage{titletoc}
\usepackage{amsmath}

\titleformat{\part}[display]{\normalfont\Huge\bfseries}%
{\partname~\thepart}{1pc}{\Huge\bfseries}

\titleclass{\subpart}{page}[\part]

\newcounter{subpart}[part]
\numberwithin{chapter}{subpart}

\renewcommand{\thesubpart}{\thepart-\Alph{subpart}}
\newcommand{\subpartname}{Subpart}

\titleformat{\subpart}[display]{\normalfont\Large\bfseries}%
{\subpartname~\thesubpart}{1pc}{\Huge\bfseries}

\titlespacing{\subpart}{0pt}{0pt}{0pt}

\titlecontents{subpart}[0pt]{\addvspace{1pc}\normalfont\bfseries}%
{\thecontentslabel\enspace ---\enspace\large}%
{\normalfont\large\bfseries}{\hspace{2em plus 1fill}\large\contentspage}

\titlecontents{chapter}[0pt]{\addvspace{0.5pc}\normalfont\bfseries}%
{\thecontentslabel\enspace}{}{\hspace{2em plus 1fill}\contentspage}

\dottedcontents{section}[6em]{}{4em}{1pc}

\begin{document}
\tableofcontents

\part{Part One}

\subpart{First Subpart}

\chapter{A chapter}

\subpart{Second Subpart}

\chapter{Another chapter}

\section{Testing}

\section{TT}

\part{Part Two}

\subpart{First Subpart}

\chapter{A chapter}

\subpart{Second Subpart}

\chapter{Another chapter}

\end{document}

В этом случае код тот же, за исключением

  • счетчик subpartтеперь определен для сброса каждый разpart
  • счетчик chapterсбрасывается в каждой подчасти ( \numberwithinдля этого использовались пакеты AMS)
  • \thesubpartтеперь также печатает номер детали
  • Форматирование оглавления для нижних уровней также переопределено, чтобы выделить место для меток.

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