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 eltitlesec
el 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 \chapter
abajo hacia abajo, ha disminuido en uno: es decir, \part
tiene nivel -1
, \subpart
tiene nivel 0
, \chapter
tiene nivel 1
, \section
tiene nivel 2
, \subsection
tiene nivel 3
, etcétera.
Respuesta2
Muy linda la respuesta de Gonzalo Medina. Sin embargo, me gustaría complementarlo con
mostrando cómo puede usar el
titletoc
paquete para manejar la tabla de contenidos, ymostrando 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
:
con
\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 part
para que funcionen las funciones de la tabla de contenido. El código entonces
- se configura
subpart
como una subdivisión directamente debajopart
(y por lo tanto arribachapter
), - 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:
con
\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
subpart
contador ahora está definido para restablecerse en cadapart
- el
chapter
contador se reinicia en cada subparte (\numberwithin
se han utilizado paquetes AMS para esto) \thesubpart
ahora 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.