如何从零开始编号章节?

如何从零开始编号章节?

我正在处理文档的 ConTeXt 布局,该文档的章节(而不是部分)应从零开始编号。 正文正在使用从 github 存储库中提取的 markdown 中的 pandoc 进行转换,因此我正在寻找一个可以在之前使用的简单命令\starttext

编号结构应如下所示:

目录显示第一章编号为 0,节编号为 0.1 和 0.2,第二章编号为 1,节编号为 1.1 和 1.2

类似这样的 MWE 似乎应该可以做我想要的事情,但是输出仍然从 1 开始编号:

\setcounter[chapter][0]

\starttext

\chapter{Zero Unit}
  \input knuth

\chapter{One More Time}
  \input knuth

\stoptext

上述代码的输出。“零单元”编号为 1,而不是 0,“再来一次”编号为 2,而不是 1。

使用\setcounter[chapter][-1]并没有什么效果。

查阅 ConTeXt 手册 (2013),我找到了 的参考\setupheadnumber。然而这也不起作用,因为如果某个部分有零值数字,编号会因某种原因被抑制:

\setupheadnumber[chapter][-1]

\starttext

\chapter{Zero Unit}
  \input knuth
  \section{Inner Zero.One}

\chapter{One More Time}
  \input knuth
  \section{Inner One.One}

\stoptext

在此处输入图片描述

在此处输入图片描述

该输出尤其糟糕,因为它将第 0 章、第 0.1 节和第 1 章的编号混淆了。

我知道如何使用ownnumber=分段命令,但这需要为 pandoc 编写一个过滤器来计算并将其嵌入到整个上下文输出中,我真的想避免这种情况。\setupheadnumber我可以完成 99% 的工作,并手动设置第零章正文中的数字,但我还是想避免对正文进行编程或手动编辑。

是否可以仅使用之前的命令从零开始章节编号\starttext

答案1

邮件列表https://www.mail-archive.com/[电子邮件保护]/msg79582.html说不可能将计数器设置为零,但您可以更改外观,使 1 看起来像 0。在我看来,这是一个相当奇怪的解决方案,但它似乎有效:

\defineexpandable[1]\PreviousNumber
   {\number\numexpr#1-1\relax}

\defineconversion[PreviousNumber][\PreviousNumber]

\defineconversionset[zerostart][n,PreviousNumber][n]

\setuphead[chapter,section][sectionconversionset=zerostart]

\starttext

 \chapter{Zero}

 \chapter{One}

\stoptext

自 2018 年 8 月之后的某个时间起,转换zero已经定义,因此现在您可以使用稍短的转换:

\defineconversionset[zerostart][n,zero][n]

\setuphead[chapter,section][sectionconversionset=zerostart]

\starttext

 \chapter{Zero}

 \chapter{One}

\stoptext

答案2

要从 0 开始计数,您需要在章节计数器中提供 -1。如下所示:

\documentclass{book}

\usepackage[margin=1in]{geometry}

\setcounter{chapter}{-1}

\begin{document}
    \chapter{Zero}
    
    \chapter{One}
\end{document}

第 0 章

第一章

相关内容