自定义回忆录小节编号并将其插入目录

自定义回忆录小节编号并将其插入目录

在以下 MWE 中,给定附录中的子节编号应自定义为“Aw nnn: XXX mmmm”,其中“Aw”应出现在每个标题的开头,“nnn”是连续数字(从 1 到 137),“XXX”和“mmmm”是从脚本生成的 LaTeX“数据库”中提取的标识符。此外,标签是自动生成的,将在其他章节中引用。

就附录本身而言,下面的代码运行良好:

在此处输入图片描述

但是,目录仅显示小节编号;我希望它显示“Aw 1”、“Aw 2”等等:

在此处输入图片描述

(此外,由于目录中章节和节号的削减,似乎空白可能需要缩小一点,但这只是次要问题。)

我曾尝试将文档中的信息内化memoir,但徒劳无功。这是 MWE(polyglossia虽然hyperref在出现副作用时不直接相关,但仍保留):

% !TEX TS-program = xelatexmk
\documentclass{memoir}

\setsecnumdepth{subsection}
\settocdepth{subsection}

\usepackage{libertine}
\usepackage{polyglossia}
    \setdefaultlanguage[variant=british]{english}
    \setotherlanguage[]{french}
    \setotherlanguage[spelling=old]{german}
\usepackage[%
    xetex,bookmarks,
    colorlinks=true,linkcolor=blue,citecolor=blue,filecolor=black,urlcolor=blue,breaklinks=true,
    pdftitle={Karljürgen G. Feuerherm---Abum--waqar and His Circle},
    pdfauthor={Karljürgen G. Feuerherm},
    unicode
    ]{hyperref}

\newcounter{awcounter}
\newcommand{\awset}[3]{% #1 specifies document number, #2 the field, and #3 the value
\setcounter{awcounter}{#1}%
\expandafter\def\csname aw#2\roman{awcounter}\endcsname{#3}%
}
% The following is extracted from a larger script-generated database setup.
\awset{1}{coll}{\textsc{nbc}}
\awset{1}{collno}{4321}
\awset{2}{coll}{\textsc{ybc}}
\awset{2}{collno}{1234}

% In the real application, this counter is cycled through 137 texts.
\newcounter{awednum}
\setcounter{awednum}{1}

\begin{document}
\frontmatter
\tableofcontents

\mainmatter
\chapter{Main Matter Chapter}

\appendix
\chapter{Appendix Chapter}
\section{Editions}\label{A.1}
% From here on, the format of subsection headers should be as follows:
% * normal font, centred
% * subsection headers should show only their own counter, prefixed by 'aw'.
\setsubsecheadstyle{\normalfont\centering}
\counterwithout{subsection}{section}
\setsecnumformat{\textsc{aw~}\csname the#1\endcsname:\quad}
% There will be one subsection for each document, identified by counter
\subsection{%
    \expandafter\csname awcoll\roman{awednum}\endcsname~%
    \expandafter\csname awcollno\roman{awednum}\endcsname%
}\label{aw:\arabic{awednum}}
Body text for first document with reference to document number \ref{aw:1}.

\stepcounter{awednum}
\subsection{%
    \expandafter\csname awcoll\roman{awednum}\endcsname~%
    \expandafter\csname awcollno\roman{awednum}\endcsname%
}\label{aw:\arabic{awednum}}
Body text for second document with reference to document number \ref{aw:2}.

\end{document}

以下是 Werner 的解决方案:

沃纳的第一个解决方案正是我所需要的:只有这个特定附录的这一部分应该以这种方式运行(每个小节控制特定古代文本的版本),这样每个小节都是可引用的。

但是,我忘了提到页眉也应该反映这一点,我通过改变页面样式解决了这个问题,如下所示:

\makepagestyle{olmseditions}
\makeevenhead{olmseditions}{\thepage}{\leftmark}{}
\makeoddhead{olmseditions}{}{\rightmark}{\thepage}
\makeatletter
\makepsmarks{olmseditions}{%
    \createmark{chapter}{both}{shownumber}{\@chapapp\ }{:\space}
    \makeatother
    \createmark{subsection}{right}{shownumber}{\textsc{aw}}{:\ }
    \createplainmark{toc}{both}{\contentsname}
    \createplainmark{lof}{both}{\listfigurename}
    \createplainmark{lot}{both}{\listtablename}
    \createplainmark{bib}{both}{\bibname}
    \createplainmark{index}{both}{\indexname}
    \createplainmark{glossary}{both}{\glossaryname}
}

这很有效,但我不确定这是否是最好的综合的解决方案....

答案1

有两种情况:

  1. 全部你的\subsections 有AW-style 编号;

  2. 一些你的\subsections 有AW-style 编号。

在里面第二这种情况,下面提供了一个解决方案。在调用第一个AW-style之前\subsection,添加以下行

\addtocontents{toc}{\protect\renewcommand{\protect\cftsubsectionpresnum}{\textsc{aw}}}% Prefix to number for \subsection in ToC
\addtocontents{toc}{\protect\setlength{\protect\cftsubsectionnumwidth}{3em}}% Width of number for \subsection in ToC

\subsection这些行插入对负责在 ToC 中设置数字及其宽度的宏的调整。这些命令的战略性放置确保它们只影响\subsection那些下列的这个说法。

如果您希望将上述调整恢复为原始状态或完全恢复为其他状态,则可以将另一项更改写入目录。例如,

\addtocontents{toc}{\protect\renewcommand{\protect\cftsubsectionpresnum}{}}% Remove prefix to number for \subsection in ToC
\addtocontents{toc}{\protect\setlength{\protect\cftsubsectionnumwidth}{4em}}% Width of number for \subsection in ToC

或者,也可以将范围\begingroup...\endgroup对写入 ToC,一旦组关闭/离开,其中的更改可以自动恢复。

在此处输入图片描述

在里面第一的案例(与全部 \subsection具有相同的AW样式,您可以更新序言中的\cftsubsectionpresnum长度\cftsubsectionnumwidth,而不是将内容写入目录。效果将对文档具有全局性,而不是具有有限的范围。

相关内容