Estoy escribiendo un manual de soluciones para los problemas al final de los capítulos de un libro publicado. Para esto necesito las secciones sin numerar enumeradas en el TOC, además necesito que el título de cada sección sin numerar esté exactamente Problem xx.yy
donde xx
está \thechapter
y yy
está \thesection
.
Usando la book
clase de documento, logré hacerlo con esto:
\section*{Problem~\thesection}\addcontentsline{toc}{section}{Problem~\thesection}\addtocounter{section}{1}
Mi pregunta es, ¿cómo puedo definir un nuevo comando de sección o redefinirlo \section
para \section*
no tener que reescribir todo eso para cada problema? ¡Tengo más de 100 problemas!
Aquí hay un MWE
\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
\tableofcontents
\chapter{Introductory Problems}\addtocounter{section}{1}
\section*{Problem~\thesection}\addcontentsline{toc}{section} {Problem~\thesection}\addtocounter{section}{1}
Here is bla bla bla the solution to bla bla bla.
\end{document}
Pero puede haber una manera de suprimir la impresión de los números de sección en el TOC para poder usarlos \section{}
en lugar de \section*{}
, de modo que no habría necesidad de \addtocounter
, etc. Sería una solución más limpia. ¿Pero no tengo idea de cómo suprimir la impresión de números de sección en el TOC?
Respuesta1
Simplemente asigne un contador propio para problemas y entierre en una macro las tareas repetitivas.
\documentclass[11pt,letterpaper]{book}
\newcommand\problem{%
\refstepcounter{problem}%
\section*{Problem \theproblem}%
\addcontentsline{toc}{section}{Problem \theproblem}%
}
\newcounter{problem}[chapter]
\renewcommand{\theproblem}{\thechapter.\arabic{problem}}
\begin{document}
\tableofcontents
\chapter{Introductory Problems}
\problem
Here is bla bla bla the solution to bla bla bla.
\problem
Here is bla bla bla the solution to bla bla bla.
\chapter{Harder Problems}
\problem
Here is bla bla bla the solution to bla bla bla.
\problem
Here is bla bla bla the solution to bla bla bla.
\end{document}
Respuesta2
Sólo necesitas redefinir cómo \thecounter
se imprime el contador de secciones:
\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}
Sin embargo, si solo hace esto, las etiquetas "Problema 1.1" chocarán con los nombres de las secciones en la tabla de contenido. Si no desea que las secciones se muestren en la tabla de contenido, utilice
\setcounter{tocdepth}{0}
Si los desea, una forma de solucionar el problema de colisión es utilizar eltocloftpaquete:
\documentclass{book}
\usepackage{tocloft}
\setcounter{tocdepth}{2}
\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}
\settowidth\cftsecnumwidth{Problem 8.88}
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{First problem, chapter one}
\section{Second problem, chapter one}
\chapter{Second chapter}
\section{First problem, chapter two}
\section{Second problem, chapter two}
\end{document}
Usandotocloftla variable \cftsecnumwidth
controla la cantidad de espacio que queda para componer la sección "números".
Aquí está el resultado:
Respuesta3
Puedes hacer eso con titlesec/titletoc
. Aquí hay un código; Defino un problem
comando, con un argumento opcional (el título del problema, si lo tiene. También puedes tener secciones sin numerar:
\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{lipsum}
\titleformat{name=\section,numberless}[hang]{\large\bfseries}{}{0pt}{\addcontentsline{toc}{section}{#1}}
\titleformat{\section}[hang]{\large\bfseries}{Problem~\thesection}{1em}{}
\newcommand\problem[1][]{\section{#1}}
\titlecontents{section}[1.5em]{\smallskip}%
{Problem~\thecontentslabel~}%numbered
{}%numberless\
{\hfill\quad\contentspage}[\smallskip]%
\begin{document}
\tableofcontents
\chapter{Introductory Problems}%
\problem
\lipsum[1-3]
\problem
\lipsum[4-6]
Here is bla bla bla the solution to bla bla bla.
\problem[(the marriage lemma)]
Here is bla bla bla the solution to bla bla bla.
\section*{A numberless section}%
\lipsum[7-9]
\end{document}