在以下 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
有两种情况:
全部你的
\subsection
s 有AW
-style 编号;一些你的
\subsection
s 有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
,而不是将内容写入目录。效果将对文档具有全局性,而不是具有有限的范围。