Titlesec y Titletoc: relaciones peligrosas

Titlesec y Titletoc: relaciones peligrosas

Por favor, considere el siguiente código:

\documentclass[a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{cfr-lm}

\usepackage{titlesec}
\renewcommand{\thechapter}{\scshape\roman{chapter}}
\titleformat{\chapter}[display]
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thechapter}{0pt}{}
%%{\normalfont\fontsize{11pt}{12pt}\selectfont}{\chaptertitlename\space \thechapter}{11pt}{}
\renewcommand\thesection{\arabic{section}}
\titleformat{\section}
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thesection}{1em}{}
\titleformat{\subsection}
  {\normalfont\fontsize{11pt}{12pt}\selectfont\itshape}{}{1em}{}
\titlespacing{\chapter}{0pt}{0pt}{3cm}

\usepackage{titletoc}
\titlecontents{chapter}
[1.5em] % ie, 1.5em (chapter) + 2.3em
{}
{\contentslabel{2.3em}}
{\hspace*{-2.3em}}
{}
%{\titlerule*[1pc]{.}\contentspage}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% codice Pignalberi
\contentsmargin{0pt}
\titlecontents{chapter}[4pc]
{\contentsmargin{0pt}\makebox[0pt][r]{\thecontentspage\quad\makebox[30pt][l]%
{\textsc{\romannumeral\thecontentslabel\ quad}}}}
{}
{}
{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\tableofcontents

\chapter{Chapter 1 title}
Some text some text some text some text some text

\section{Section a title}
Some text some text some text some text some text

\section{Section b title}
Some text some text some text some text some text

\chapter{Chapter 2 title}
Some text some text some text some text some text

\section{Section c title}
Some text some text some text some text some text

\section{Section d title}
Some text some text some text some text some text

\chapter{Chapter 3 title}
Some text some text some text some text some text

\section{Section e title}
Some text some text some text some text some text

\section{Section f title}
Some text some text some text some text some text
\end{document}

Intenté cambiarlo según mis necesidades y el formato del índice está bien. Como segundo paso, me gustaría poner los números de página en el ToC en el lado izquierdo. Pero el código que encontré (en mi MWE "codice Pignalberi") interfiere con el anterior. Porque no logro entender, siguiendo el manual de titlesec/titletoc, dónde y cómo coordinar los dos lados de este código, espero de su ayuda.

==================================================== =

ACTUALIZAR

Todo funciona muy bien ahora, gracias al código de Gonzalo. Mejoré dos aspectos (agregué más espacio antes de los títulos de los capítulos y eliminé los números de los capítulos, dejando solo las secciones: ahora me parece más útil para el lector). El código es el siguiente:

<pre>\usepackage{titlesec}
\usepackage[rightlabels,dotinlabels]{titletoc}

\renewcommand{\thechapter}{\roman{chapter}}
\renewcommand\thesection{\arabic{section}}

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11}{12}\selectfont}
  {\scshape\thechapter}
  {0pt}
  {}
\titleformat{\section}
  {\normalfont\fontsize{11}{12}\selectfont}
  {\thesection}
  {1em}
  {}
\titleformat{\subsection}
  {\normalfont\fontsize{11}{12}\selectfont\itshape}
  {}
  {1em}
  {}

\titlespacing{\chapter}
  {0pt}{0pt}{3cm}

\titlecontents{chapter}[-3pc]
  {\addvspace{0.8pc}}
  {\makebox[3pc][r]{\hfill}%
    \textsc{\thecontentslabel}\quad%
  }
  {}
  {}
  {}
\titlecontents{section}[-3pc]
  {\makebox[4pc][r]{\thecontentspage\hfill}%
    \textsc{\thecontentslabel}\quad%
  }
  {}
  {}
  {}</pre>

Por último, me gustaría alinear todos los números (páginas y secciones) a la derecha y no a la izquierda, ya que en realidad los títulos de las secciones no están bien alineados usando una fuente proporcional. Considere que las titletocopciones rightlabels,dotinlabelsme parecen no funcionar. ¡Muchas gracias! Puedes ver el problema aquí: mala alineación

==================================================== ========

ACTUALIZACIÓN 2

Intenté usar etoc copiando tu código en mi archivo .tex, pero el resultado es muy extraño: etoc efectos extraños

==================================================== ========

ACTUALIZACIÓN 3

Los problemas anteriores se deben al bidipaquete, ya que en ese archivo también uso hebreo y fenicio. En un archivo "normal", etocel código funciona bien. Sólo una última pregunta: tengo que leer muy bien etocla documentación, que es bastante extensa. Pero, ¿cómo es posible alinear también los números de página correctos? gracias!!

Respuesta1

Esta es sólo una ligera variante de esa parte deLa respuesta de Gonzalo Medina.que utilizaetoc. No sé cómo se comporta en interacción con bidi.

Las etoccosas se vuelven más fáciles una vez que uno tiene un suministro de ejemplos.

Aquí he agregado alguna ayuda gráfica para comprender el diseño, particularmente para la alineación vertical. Los números de página de las secciones van al margen izquierdo. Los números de capítulos y secciones están alineados a la derecha y hay una 1em separación horizontal del título real. Los nombres de los capítulos comienzan en 1cmel margen izquierdo y los nombres de las secciones en 2cm. Los nombres largos se ajustan a una distancia del 1cmmargen derecho del texto.

Elactualizar(agregado al final) es en respuesta a comentarios sobre el tratamiento de capítulos sin numerar y la visualización de números de página también para algunos capítulos seleccionados. (Ambos están aquí ilustrados en un capítulo adicional sin numerar).

etoc TOC

\documentclass[a4paper]{report}
\usepackage[margin=2cm,paperwidth=14cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{cfr-lm}
\usepackage{titlesec}
\usepackage{etoc}
\usepackage{color}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand\thesection{\arabic{section}}

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11}{12}\selectfont}
  {\scshape\thechapter}
  {0pt}
  {}
\titleformat{\section}
  {\normalfont\fontsize{11}{12}\selectfont}
  {\thesection}
  {1em}
  {}
\titleformat{\subsection}
  {\normalfont\fontsize{11}{12}\selectfont\itshape}
  {}
  {1em}
  {}

\titlespacing{\chapter}
  {0pt}{0pt}{3cm}

\etocsetstyle{chapter}
% FOR VISUALIZING LAYOUT:
  % {\fboxsep-\fboxrule\noindent\normalsize
  %        \fbox{\makebox[1cm][r]{\strut
  %                          \smash{\color{blue}\vrule depth12cm}\hspace{1em}%
  %                          \smash{\color{green}\vrule depth12cm}}}%
  %        \fbox{\makebox[1cm][r]{\color{blue}\strut
  %                          \smash{\color{blue}\vrule depth12cm}\hspace{1em}%
  %                          \smash{\color{green}\vrule depth12cm}}}%
  %        \fbox{\makebox[1cm]{\strut}}(debugging layout)\hfill
  %        \fbox{\makebox[1cm][l]{\strut\smash{\color{red}\vrule
  %              depth12cm}}}%
  %   \hrule}  
  {}% <- uncomment the above and suppress this line if debugging layout
  {\pagebreak[3]\vskip25pt\leftskip 1cm\relax
                          \rightskip 1cm\relax
                          \parindent 0pt\relax
   }
  {\Large\leavevmode
   \llap{\makebox[1cm][r]{\normalsize\etocnumber.\hspace{1em}}}%
   \etocname\par\nopagebreak\medskip }
  {\bigskip}


\etocsetstyle{section}
  {}  
  {\leftskip 2cm\relax}
  {\normalsize\leavevmode
   \llap{\makebox[1cm][r]{\mdseries\etocpage}%
                    \hspace{1cm}%
                    \makebox[1cm][r]{\etocnumber.\hspace{1em}}}%
   \etocname\par\pagebreak[1]\smallskip }
  {}

\begin{document}
\tableofcontents

\chapter{Vita e Opere}
\setcounter{page}{98}% just for the example
Some text some text some text some text some text

\section{Infanzia, studi a Lipsia e soggiorno a Parigi}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\chapter{Seggni (``caratteri'') e idee}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\clearpage

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\end{document}

etoc TOC 2

\documentclass[a4paper]{report}
\usepackage[margin=2cm,paperwidth=14cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{cfr-lm}
\usepackage{titlesec}
\usepackage{etoc}
\usepackage{color}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand\thesection{\arabic{section}}

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11}{12}\selectfont}
  {\scshape\thechapter}
  {0pt}
  {}
\titleformat{\section}
  {\normalfont\fontsize{11}{12}\selectfont}
  {\thesection}
  {1em}
  {}
\titleformat{\subsection}
  {\normalfont\fontsize{11}{12}\selectfont\itshape}
  {}
  {1em}
  {}

\titlespacing{\chapter}
  {0pt}{0pt}{3cm}


%% ETOC SPECIFICATIONS

% conditional to display chapter page number
% a priori set to false
\newif\ifDisplayInTocChapterPageNumber

\etocsetstyle{chapter}
  {}
  {\pagebreak[3]\vskip25pt\leftskip 1cm\relax
                          \rightskip 1cm\relax
                          \parindent 0pt\relax
   }
  {\Large\leavevmode
   \llap{\ifDisplayInTocChapterPageNumber
             \makebox[1cm][r]{\mdseries\normalsize\etocpage}%
         \fi
         \makebox[1cm][r]{\normalsize\etocifnumbered{\etocnumber.}{}%
                          \hspace{1em}}}%
   \etocname\par\nopagebreak\medskip }
  {\bigskip}


\etocsetstyle{section}
  {}  
  {\leftskip 2cm\relax}
  {\normalsize\leavevmode
   \llap{\makebox[1cm][r]{\mdseries\etocpage}%
                    \hspace{1cm}%
                    \makebox[1cm][r]{\etocnumber.\hspace{1em}}}%
   \etocname\par\pagebreak[1]%\smallskip 
  }
  {}

\begin{document}
\tableofcontents

\chapter{Vita e Opere}
\setcounter{page}{98}% just for the example
Some text some text some text some text some text

\section{Infanzia, studi a Lipsia e soggiorno a Parigi}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\chapter{Seggni (``caratteri'') e idee}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\clearpage

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\addtocontents{toc}{\protect\DisplayInTocChapterPageNumbertrue}

\chapter*{Un capitolo non numerato e col numero di pagina nel margine dell'indice}
\addcontentsline{toc}{chapter}{Un capitolo non numerato e col numero di
  pagina nel margine dell'indice}
\setcounter{section}{0}

\section{Ultimi anni}
Some text some text some text some text some text


\end{document}

Respuesta2

A continuación muestro dos opciones; el primero usa etocy el segundo, titletoc. El formato final deseado todavía no me queda del todo claro. La pregunta solicita colocar los números de página para el capítulo a la izquierda, y luego se proporciona una imagen en los comentarios en la que las entradas del capítulo no tienen números de página a la izquierda. De todos modos, el código de ejemplo a continuación permite personalizaciones sencillas para lograr cualquier formato deseado.

Una posibilidad usando el poderosoetocpaquete:

\documentclass[a4paper]{report}
\usepackage[margin=2cm,paperwidth=14cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{cfr-lm}
\usepackage{titlesec}
\usepackage{etoc}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand\thesection{\arabic{section}}

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11}{12}\selectfont}
  {\scshape\thechapter}
  {0pt}
  {}
\titleformat{\section}
  {\normalfont\fontsize{11}{12}\selectfont}
  {\thesection}
  {1em}
  {}
\titleformat{\subsection}
  {\normalfont\fontsize{11}{12}\selectfont\itshape}
  {}
  {1em}
  {}

\titlespacing{\chapter}
  {0pt}{0pt}{3cm}

\etocsetstyle{chapter}
  {}  
  {\vskip25pt\leavevmode\leftskip 0cm\relax}
  {\parbox[t]{.5cm}{\etocnumber.\hfill}%
  \parbox[t]{\dimexpr\linewidth-1cm-15pt\relax}{\Large\etocname}\hfill\par\medskip
  }
  {}
\etocsetstyle{section}
  {}  
  {\leavevmode\leftskip 0cm\relax}
  {\llap{\parbox[t]{1.5cm}{\mdseries\hfill\etocpage}\hspace{.5cm}}%
    \normalsize\parbox[t]{1cm}{\quad\etocnumber.\hfill}%
  \parbox[t]{\dimexpr\linewidth-1cm-15pt\relax}{\etocname\par}\hfill\par
  }
  {}

\begin{document}
\tableofcontents

\chapter{Vita e Opere}
\setcounter{page}{98}% just for the example
Some text some text some text some text some text

\section{Infanzia, studi a Lipsia e soggiorno a Parigi}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\chapter{Seggni (``caratteri'') e idee}
Some text some text some text some text some text

\section{Della \textit{Dissertazione preliminare} al \textit{Dialogo}}
Some text some text some text some text some text

\section{La concezione delle idee}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\clearpage

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\section{A Honovver, al servizio del ducchi Johann Friedrich ed Ernst August}
Some text some text some text some text some text

\section{Viaggio in Italia, morte dell'elettore Erns August ed successione del nuovo elettore, Georg Ludwig}
Some text some text some text some text some text

\end{document}

ingrese la descripción de la imagen aquí

Aquí hay otra posibilidad usando titletoc:

\documentclass[a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{cfr-lm}
\usepackage{titlesec}
\usepackage{titletoc}

\renewcommand{\thechapter}{\roman{chapter}}
\renewcommand\thesection{\arabic{section}}

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11}{12}\selectfont}
  {\scshape\thechapter}
  {0pt}
  {}
\titleformat{\section}
  {\normalfont\fontsize{11}{12}\selectfont}
  {\thesection}
  {1em}
  {}
\titleformat{\subsection}
  {\normalfont\fontsize{11}{12}\selectfont\itshape}
  {}
  {1em}
  {}

\titlespacing{\chapter}
  {0pt}{0pt}{3cm}

\titlecontents{chapter}[-4pc]
  {\makebox[2pc][l]{\hfill\thecontentspage}\hspace{2pc}%
    \textsc{\thecontentslabel}\quad%
  }
  {}
  {}
  {}
\titlecontents{section}[-4pc]
  {\makebox[2pc][l]{\hfill\thecontentspage}\hspace{3pc}%
    \textsc{\thecontentslabel}\quad%
  }
  {}
  {}
  {}

\begin{document}
\tableofcontents

\chapter{Chapter 1 title}
\setcounter{page}{98}% just for the example
Some text some text some text some text some text

\section{Section a title}
Some text some text some text some text some text

\section{Section b title}
Some text some text some text some text some text

\chapter{Chapter 2 title}
Some text some text some text some text some text

\section{Section c title}
Some text some text some text some text some text

\section{Section d title}
Some text some text some text some text some text

\chapter{Chapter 3 title}
Some text some text some text some text some text

\section{Section e title}
Some text some text some text some text some text

\section{Section f title}
Some text some text some text some text some text

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Si he entendido correctamente su diseño, aquí hay una solución básica basada en titletoc:

\newcommand\boxedpage{\makebox[3pc][r]{\thecontentspage}}
\newcommand\boxedtocnum{\makebox[3pc][r]{\thecontentslabel.\quad}}

\titlecontents{chapter}[0pc]
  {\addvspace{0.8pc}}
  {\contentslabel[\boxedpage\boxedtocnum]{6pc}}
  {}{}{}
\titlecontents{section}[3pc]
  {}
  {\contentslabel[\boxedpage\hspace*{3pc}\boxedtocnum]{9pc}}
  {}{}{}

Simplemente juega con las dimensiones.

EDITAR.Aquí hay un ejemplo completo con titletoc. Recuerda que puedes controlar la numeración con secnumdepth, y las entradas incluidas en el TOC con tocdepth. Recuerde que también titletocpuede cambiar el formato de las entradas TOC en elmediodel documento (para secciones posteriores), si por alguna razón lo necesita. Como antes, simplemente juega con las dimensiones.

\documentclass{book}

\renewcommand{\thesection}{\arabic{section}}

\usepackage{titletoc}

\newcommand\boxedpage{\makebox[3pc][r]{\thecontentspage}}
\newcommand\boxedtocnum{\makebox[3pc][r]{\thecontentslabel.\quad}}

\titlecontents{chapter}[3pc]
  {\addvspace{0.8pc}}
  {\contentslabel[\boxedpage\boxedtocnum]{6pc}}
  {\contentslabel[\boxedpage\hspace*{3pc}]{6pc}}
  {}{}
\titlecontents{section}[6pc]
  {}
  {\contentslabel[\boxedpage\hspace*{3pc}\boxedtocnum]{9pc}}
  {\contentslabel[\boxedpage\hspace*{6pc}]{9pc}}
  {}{}

\newcommand*\asection{
\section{A Honovver, text text al servizio del ducchi Johann
  Friedrich ed Ernst August.}
Some text some text some text some text some text\par}

\begin{document}
\tableofcontents

\chapter{Vita e Opere}
\setcounter{page}{98}% just for the example

\asection\asection

\chapter{Seggni (``caratteri'') e idee}

\asection\asection\asection\asection\asection
\asection\asection\asection\asection\asection

% From now on, unnumbered headers, but still in the toc
% down to section
\setcounter{secnumdepth}{-1}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}\ignorespaces}

\chapter{Seggni (``caratteri'') e idee}

\asection\asection

\end{document}

información relacionada