
Me gustaría reemplazar un número de pieza por una abreviatura. Por ejemplo, con respecto a la parte álgebra del siguiente MWE, me gustaría que se llamara el primer capítulo ALG.1
en lugar de I.1
(y lo mismo para todos los capítulos de la parte considerada).
Idealmente, la abreviatura ALG
podría ser un argumento opcional del \part
comando.
MWE:
\documentclass[oneside]{scrbook}
%reset chapter for each part
\makeatletter
\@addtoreset{chapter}{part}
\makeatother
\renewcommand{\thechapter}{\thepart\arabic{chapter}}
\begin{document}
\part{Algebra} %\part[ALG]{Algebra} ?
\chapter{Chap 1}
\part{Analysis}
\chapter{Chap 1}
\part{Geometry}
\chapter{Chap 1}
\end{document}
Respuesta1
Aquí hay una solución simple, con un \acropart
comando que se usará justo después del \part
comando:
\documentclass[oneside]{scrbook}
\counterwithin*{chapter}{part}
\makeatletter
\DeclareRobustCommand\acropart[1]{\gdef\@acropart{#1}}
\renewcommand{\thechapter}{\@acropart.~\arabic{chapter}}
\makeatother
\makeatother
\begin{document}
\part{Algebra} %\part[ALG]{Algebra} ?
\acropart{ALG}
\chapter{Chapter the first}
\chapter{Chapter the second}
\part{Analysis}
\acropart{ANAL}
\chapter{Chapter the first}
\part{Geometry}
\acropart{GEOM}
\chapter{Chapter the first}
\end{document}
Respuesta2
El MWE en la pregunta ya contiene una redefinición de \thechapter
. Esto se puede personalizar aún más reemplazando el contador de piezas \thepart
con una nueva macro que contenga la abreviatura requerida.
Para configurar esto usando un argumento opcional para \part
la definición anterior de \part
se puede almacenar en otra macro como \oldpart
, y luego \part
se puede redefinir para aceptar un argumento opcional, almacenarlo en una macro y luego llamar a la \oldpart
macro que procesará el argumento predeterminado. Similar aArgumentos opcionales en \def. El valor predeterminado del argumento opcional es \thepart
, para permitir que las piezas sin etiqueta se numeren con el número de pieza romano.
Cuando se imprime una tabla de contenido, las etiquetas de los capítulos no se ajustan al ancho predeterminado; esto se puede solucionar usando \RedeclareSectionCommand
.
MWE:
\documentclass[oneside]{scrbook}
\RedeclareSectionCommand[
tocnumwidth=1.5cm
]{chapter}
\let\oldpart\part
\renewcommand\part[1][\thepart]{\def\partacr{#1}\oldpart}
%reset chapter for each part
\makeatletter
\@addtoreset{chapter}{part}
\makeatother
\renewcommand{\thechapter}{\partacr.\arabic{chapter}}
\begin{document}
\tableofcontents
\part[ALG]{Algebra}
\chapter{Chap 1}
\chapter{Chap 2}
\part{Geometry}
\chapter{Chap 1}
\chapter{Chap 2}
\end{document}
Resultado:
Respuesta3
¿Como esto?
\documentclass[oneside]{scrbook}
%reset chapter for each part
\makeatletter
\@addtoreset{chapter}{part}
\makeatother
\newcommand{\prt}[2]{\part{#2}
\renewcommand{\thechapter}{#1\arabic{chapter}}}
\usepackage{tocloft}
\renewcommand\cftchapnumwidth{1.2cm} %<-- For tableofcontents
\begin{document}
\tableofcontents
\prt{ALG}{Algebra} %\part[ALG]{Algebra} ?
\chapter{Chap 1}
\prt{ANA}{Analysis}
\chapter{Chap 1}
\prt{GEO}{Geometry}
\chapter{Chap 1}
\end{document}