自定义章节类型

自定义章节类型

我正在排版一本小说,它被分成“书”,进一步分为“章节”和“插曲”。 “章节”和“插曲”有独立的计数器(第 1 章后面是插曲 A,然后是第 2 章、插曲 B、第 3 章、第 4 章、第 5 章、插曲 C 等),并且被视为处于同一级别;两者都不是另一个的细分。换句话说,目录应该是这样的:

    Prologue ................................................ ##

    Book I .................................................. ##

    1. Chapter 1 ............................................ ##
    Interlude A: Lorem ipsum ................................ ##
    2. Chapter 2 ............................................ ##
    Interlude B: Lorem ipsum ................................ ##
    3. Chapter 3 ............................................ ##
    4. Chapter 4 ............................................ ##
    5. Chapter 5 ............................................ ##
    Interlude C: Lorem ipsum ................................ ##
    6. Chapter 6 ............................................ ##
    16. Chapter 16 .......................................... ##
    Interlude G: Lorem ipsum ................................ ##

    Book II ................................................. ##

    17. Chapter 17 .......................................... ##
    Interlude H: Lorem ipsum ................................ ##

每个章节/插曲都应在其页眉页、目录和页眉/页脚中显示适当的类型。(目前没有插曲作为书的开头,但我不想依赖这一点。)

我该如何实现这一点?我试过了titlesec,但每一步都让我很为难。(尤其是页眉/页脚。)我目前正在使用该类book。我还希望使用与 XeLaTeX 兼容的解决方案。

答案1

这样的东西能满足你的需要吗?当然你需要按照自己的意愿格式化它,但我认为插曲问题没问题。memoir类有很多技巧可以帮助您以最佳方式格式化文档。此外,由于您没有指定编译器,因此我使用了启用字体选择的 XeLaTeX。

编辑:使用\refstepcounter而不是\stepcounter,以便能够正确地进行引用,正如 Johannes_B 在评论中所建议的那样。

\documentclass{memoir}
\usepackage{fontspec,lipsum}
\setmainfont{Arial}
\renewcommand*{\cftbookleader}{\normalfont\cftdotfill{\cftdotsep}}
\renewcommand*{\cftchapterleader}{\normalfont\cftdotfill{\cftdotsep}}
\newcounter{interludes}
\renewcommand{\theinterludes}{\Alph{interludes}}
\newcommand{\interlude}[1]{\refstepcounter{interludes}
                           \chapter*{#1}
                           \addcontentsline{toc}{chapter}{Interlude \theinterludes: #1}
                           }

\begin{document}
\tableofcontents*

\chapter*[Prologe]{Prologe}
\addcontentsline{toc}{chapter}{Prologe}
\lipsum[1-3]

\book{The first book}
\chapter{The first chapter}
\lipsum[4-9]

\interlude{The interlude A}
\lipsum[4-9]

\end{document}

答案2

一个简单的代码,使用 和 来获得您想要的东西,titlesec如果您没有附录,它可以运行良好:它包括在我们对“Interlude”进行更改后使用带有选项的环境:tocloftappendixappendicestoctitle\appendixname

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{garamondx}
\usepackage{geometry, lipsum, etoolbox}

\usepackage[english]{babel}
\usepackage[newparttoc,explicit, clearempty]{titlesec}%
\usepackage[titles]{tocloft}
\renewcommand{\cftpartpresnum}{BOOK\enspace}
\renewcommand{\cftchapaftersnum}{.}
\renewcommand\cftchapdotsep{\cftdotsep}

\titleformat{\part}[display]{\bfseries\filcenter \def\partname{Book}}{\Huge\MakeUppercase{\partname}\enspace\thepart}{20pt}{\Huge #1}[\thispagestyle{empty}]%

\titleformat{\chapter}[display]{\filcenter\bfseries}{\LARGE\MakeUppercase{\chaptername}~\thechapter}%
{1\baselineskip}{\huge#1}%
\titleformat{name=\chapter, numberless}[block]{\filcenter\bfseries}{}%
{0pt}{\huge#1\ifstrequal{#1}{\contentsname}{}{\addcontentsline{toc}{chapter}{#1}}}%

\usepackage[titletoc]{appendix} %
\AtBeginEnvironment{appendices}{\def\chaptername\appendixname}
\AtEndEnvironment{appendices}{\def\chaptername\oldchaptername}
\newenvironment{interludes}{%
\def\chaptername{Interlude}\def\appendixname{Interlude}\appendices}%
{\endappendices}

\makeatletter\renewcommand\tableofcontents{%
\chapter*{\contentsname}%
\@starttoc{toc}%
}
\makeatother

\begin{document}

\tableofcontents

\chapter*{Prologue}
\lipsum[1]
\part{}
\chapter{Chapter the First}
\lipsum

\chapter{Chapter the Second}
\lipsum

\chapter{Chapter the Third}
\lipsum
\begin{interludes}
  \chapter{A First Interlude}
  \lipsum
  \chapter{A Second Interlude}
  \lipsum
\end{interludes}
\chapter{Chapter the Sixth}
\lipsum

\part{}

\chapter{Chapter the Seventh}
\lipsum
\begin{interludes}
  \chapter{A Third Interlude}
  \lipsum
\end{interludes}

\end{document} 

在此处输入图片描述

答案3

这与 Guilherme Santos 的回答类似。我设法将其作为对另一个问题的回答发布!因此,我接受自己不是第一个,但无论如何,还是在这里。


这是我能想到的最简单的初步解决方案。

基本上,它颠覆了memoir和命令,用和代替它们,并添加了一个命令。我假设对于这三个命令,除了(例如\chapter)“第 1 章”之外,您还想要其他文本,而且除了默认章节样式之外,我还没有做任何事情。\book\mychapter\mybook\interludememoir

% !TEX TS-program = xelatex
\documentclass{memoir}
\newcounter{interlude}
\renewcommand{\theinterlude}{\Alph{interlude}}
\setcounter{interlude}{0}
\newcommand{\interlude}[1]{%
    \addtocounter{interlude}{1}
    \chapter{Interlude \theinterlude: #1}
    \addtocounter{chapter}{-1}
    }
\newcommand{\mybook}[1]{%
    \book{Book \thebook: #1}
    }
\newcommand{\mychapter}[1]{%
    \chapter{Chapter \thechapter: #1}
    }
\chapterstyle{default}
\renewcommand{\chapterheadstart}{}
\renewcommand{\printchaptername}{}
\renewcommand{\chapternamenum}{}
\renewcommand{\printchapternum}{}
\renewcommand{\afterchapternum}{}
\renewcommand{\chapternumberline}[1]{}
\renewcommand{\booknumberline}[1]{}
\begin{document}
\frontmatter
\tableofcontents*
\mainmatter
\mybook{To Begin at the Beginning}
\mychapter{Starting}
\interlude{First Interlude}
\interlude{Second Interlude}
\mychapter{Continuing}
\interlude{Another Interlude}
\mychapter{Almost in the Middle}
\interlude{Another Interlude}
\interlude{Another Interlude}
\mybook{To End at the End}
\mychapter{Nearly There}
\interlude{Another Interlude}
\interlude{Another Interlude}
\mychapter{Getting Close}
\interlude{Another Interlude}
\mychapter{At Last!}
\interlude{Another Interlude}
\interlude{Another Interlude}
\end{document}

以下是目录的一部分:

TOC 输出部分

显然,您可能希望进一步调整排版;我建议您探索memoir可用的各种章节样式,如果您需要进一步的帮助,请提出新问题。

相关内容