Заменить номер детали на аббревиатуру

Заменить номер детали на аббревиатуру

Я хотел бы заменить номер части аббревиатурой. Например, относительно алгебры частей следующего 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}

введите описание изображения здесь

Связанный контент