
Я хотел бы заменить номер части аббревиатурой. Например, относительно алгебры частей следующего MWE, я хотел бы, чтобы первая глава называлась ALG.1
вместо I.1
(и так же для всех глав в рассматриваемой части).
В идеале сокращение ALG
может быть необязательным аргументом команды \part
.
МВЭ:
\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}
решение1
Вот простое решение, с \acropart
командой, которую нужно использовать сразу после \part
команды:
\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}
решение2
MWE в вопросе уже содержит переопределение \thechapter
. Его можно дополнительно настроить, заменив счетчик деталей \thepart
новым макросом, содержащим требуемую аббревиатуру.
Чтобы задать это с помощью необязательного аргумента, \part
старое определение \part
можно сохранить в другом макросе, например \oldpart
, , а затем \part
переопределить для принятия необязательного аргумента, сохранить его в макросе, а затем вызвать макрос \oldpart
, который обработает аргумент по умолчанию, аналогичноНеобязательные аргументы в \def. Значение по умолчанию необязательного аргумента — \thepart
, что позволяет нумеровать детали без метки римским номером детали.
При печати оглавления метки глав не соответствуют ширине по умолчанию. Эту проблему можно решить с помощью \RedeclareSectionCommand
.
МВЭ:
\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}
Результат:
решение3
Так?
\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}