Primeira versão

Primeira versão

Preciso de uma seção que não seja realmente uma parte, nem um capítulo. Então eu estava tentando definir um novo comando, \subpart, baseado no comando \part, mas com numeração própria e que ficaria assim, no meio de uma nova página em branco:

SUBPARTE UM

Nome da subparte

Porém, quando tento fazer isso, sempre aparecem erros…

Minha abordagem, baseada no código de Não me lembro de onde na web:

\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

Eu realmente deveria aprender a usar o LaTeX corretamente…

Obrigado pela ajuda,
Sebastião

Responder1

Definir uma unidade seccional totalmente nova não é uma questão simples. Usando otitlesecpacote pode aliviar o trabalho; como você não forneceu informações sobre como as entradas das subpartes deveriam aparecer no ToC, escolhi um estilo entre o das partes e o dos capítulos; você pode alterar essa redefinição apropriadamente \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}

Leve em consideração que agora o nível das unidades seccionais, de \chapterbaixo para cima, diminuiu em um: ou seja, \parthas level -1, \subparthas level 0, \chapterhas level 1, \sectionhas level 2, \subsectionhas level 3, e assim por diante.

Responder2

A resposta de Gonzalo Medina é boa. No entanto, gostaria de complementá-lo com

  1. mostrando como você pode usar o titletocpacote para lidar com o índice, e

  2. mostrando como o esquema de numeração pode ser alterado para que a subparte e os capítulos incluam os contadores de nível superior.

Primeira versão

Apenas adicionando titletoc:

Subparte de amostra

com

Exemplo de índice

\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}

A principal coisa a notar acima é que é necessário redefinir part, para que os recursos do índice funcionem. O código então

  • configura-se subpartcomo uma subdivisão diretamente abaixo part(e acima chapter),
  • define o contador correspondente e a forma como ele é impresso ( \thesubpart)
  • introduz uma string para o nome da subparte
  • configura a impressão de títulos de subpartes conforme bloco exibido (centralizado)
  • define a formatação do índice

Segunda versão

Com subnumeração:

Nova subparte de amostra

com

Novo índice de amostra

\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}

Neste caso o código é o mesmo, exceto para

  • o subpartcontador agora está definido para ser zerado a cadapart
  • o chaptercontador é zerado em cada subparte ( \numberwithindos pacotes AMS foram usados ​​para isso)
  • \thesubpartagora também imprime o número da peça
  • a formatação do índice para níveis inferiores também é redefinida para permitir espaço para os rótulos

informação relacionada