Primera versión

Primera versión

Necesito una sección que en realidad no sea una parte, ni un capítulo. Así que estaba intentando definir un nuevo comando, \subpart, basado en el comando \part, pero con su propia numeración y que se vería así, en medio de una nueva página en blanco:

SUBPARTE UNO

Nombre de la subparte

Sin embargo, cuando intento hacerlo, siempre aparecen errores...

Mi enfoque, basado en el código de No recuerdo dónde en la 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

Realmente debería aprender a usar LaTeX correctamente…

Gracias por tu ayuda
Sebastián .

Respuesta1

Definir una unidad seccional completamente nueva no es una cuestión sencilla. Utilizando eltitlesecel paquete puede aliviar el trabajo; como no proporcionaste información sobre cómo deberían verse las entradas de las subpartes en el ToC, elegí un estilo entre el de partes y el de capítulos; puedes cambiar esta redefinición apropiadamente \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}

Tenga en cuenta que ahora el nivel de las unidades seccionales, de \chapterabajo hacia abajo, ha disminuido en uno: es decir, \parttiene nivel -1, \subparttiene nivel 0, \chaptertiene nivel 1, \sectiontiene nivel 2, \subsectiontiene nivel 3, etcétera.

Respuesta2

Muy linda la respuesta de Gonzalo Medina. Sin embargo, me gustaría complementarlo con

  1. mostrando cómo puede usar el titletocpaquete para manejar la tabla de contenidos, y

  2. mostrando cómo se puede cambiar el esquema de numeración para que las subpartes y los capítulos incluyan los contadores de nivel superior.

Primera versión

Solo agregando titletoc:

Subparte de muestra

con

Ejemplo de tabla de contenidos

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

Lo principal a tener en cuenta en lo anterior es que es necesario redefinir partpara que funcionen las funciones de la tabla de contenido. El código entonces

  • se configura subpartcomo una subdivisión directamente debajo part(y por lo tanto arriba chapter),
  • define el contador correspondiente y la forma en que se imprime ( \thesubpart)
  • introduce una cadena para el nombre de la subparte
  • configura la impresión de títulos de subpartes como bloque mostrado (centrado)
  • define el formato de la tabla de contenidos

Segunda versión

Con subnumeración:

Nueva subparte de muestra

con

Nueva tabla de contenidos de muestra

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

En este caso el código es el mismo, excepto por

  • el subpartcontador ahora está definido para restablecerse en cadapart
  • el chaptercontador se reinicia en cada subparte ( \numberwithinse han utilizado paquetes AMS para esto)
  • \thesubpartahora también imprime el número de pieza
  • El formato de la tabla de contenidos para niveles inferiores también se redefine para dejar espacio para las etiquetas.

información relacionada