回想録: セクション番号を飛ばし、章内ではサブセクション番号を連続させる

回想録: セクション番号を飛ばし、章内ではサブセクション番号を連続させる

memoirクラスは、次のような目次を持つ参考書を作成できますか。

Chapter 1. Animals

    Mammals
        Cows ................... 1.000
        Bulls .................. 1.001
        Calves ................. 1.002
    Amphibians
        Frogs .................. 1.003
        Turtles ................ 1.004
        Newts .................. 1.005

Chapter 2. Plants

    Trees
        Pines .................. 2.000
        Oaks ................... 2.001
        Maples ................. 2.002
    Shrubs
        Brambles ............... 2.003
        Brooms ................. 2.004
        Lilacs ................. 2.005

特に、私は次のことを望みます:

  1. section本文と目次の両方で番号を抑制します。
  2. subsection内の数字を連続させますchapter
  3. 番号は、= 章番号の形式subsectionで表示します。X.YYYX
  4. 数字を余白に移動しますsubsection。ページ番号の代わりに数字を使用するという考え方です。

答え1

これは基本的な解決策です。章のページ番号とセクションのドットを抑制するには、目次のパラメータを変更する必要があります。

\documentclass{memoir}

\counterwithout{subsection}{section} % subsection is not reset with section
\counterwithin{subsection}{chapter}  % subsection is reset with chapter

% subsection numbers are X.YYY
\renewcommand{\thesubsection}{\thechapter.\threedigits{subsection}}
\newcommand{\threedigits}[1]{%
  \ifnum\value{#1}<100 0\fi
  \ifnum\value{#1}<10 0\fi
  \arabic{#1}%
}

\setsecnumformat{\csname #1secnumformat\endcsname}
% no numbering shown for section titles
\newcommand\sectionsecnumformat{}
% numbering shown for subsection titles
\newcommand\subsectionsecnumformat{\thesubsection.\quad}

% modify the TOC macros not to use the section number
\makeatletter
\let\memoir@l@section\l@section
\def\l@section#1#2{%
  \mihai@gobble@number#1\@nil
}
\def\mihai@gobble@number\numberline#1#2\@nil{%
  \memoir@l@section{#2}{}%
}
% modify the TOC macros to use the subsection number as the page number
\let\memoir@l@subsection\l@subsection
\def\l@subsection#1#2{%
  \mihai@get@number#1\@nil
}
\def\mihai@get@number\numberline#1#2\@nil{%
  \memoir@l@section{#2}{#1}%
}
\makeatother

\settocdepth{subsection}
\setsecnumdepth{subsection}

\begin{document}
\frontmatter
\makeatletter\show\l@section
\tableofcontents*
\mainmatter
\chapter{Animals}
x
\section{Mammals}
x
\subsection{Cows}
x
\subsection{Bulls}
x
\subsection{Calves}
x

\section{Amphibians}
x
\subsection{Frogs}
x
\subsection{Turtles}
x
\subsection{Newts}
x

\chapter{Plants}
x
\section{Trees}
\subsection{Pines}
x
\subsection{Oaks}
x
\subsection{Maples}
x
\section{Shrubs}
x
\subsection{Brambles}
x
\subsection{Brooms}
x
\subsection{Lilacs}
x

\end{document}

関連情報