![\numberwithin 使第一个方程不编号](https://linux22.com/image/259667/%5Cnumberwithin%20%E4%BD%BF%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E7%A8%8B%E4%B8%8D%E7%BC%96%E5%8F%B7.png)
我可能做了一些愚蠢的事情,但以下代码会生成一个文档,其中第一个方程式未编号(仅给出一组空括号)。第二个方程式正确编号为 1.1.2。如果我删除对 的更改\theequation
,则所有内容都会正常计数。
\documentclass[draft,fleqn,openany]{book}
\usepackage[tbtags]{amsmath}
\usepackage{amssymb}
\usepackage[no-math]{fontspec}
\usepackage{xkeyval}
\usepackage{polyglossia}
\setmainfont[BoldFont={* Bold},ItalicFont={* Italic},BoldItalicFont={* Bold Italic},SlantedFont={Linux Libertine Slanted O}]{Linux Libertine O}
\usepackage[letterpaper]{geometry}
\renewcommand{\theequation}{\numberwithin{equation}{section}}
\allowdisplaybreaks[1]
\setdefaultlanguage[variant=british]{english}
\begin{document}
\frontmatter
\title{A test document}
\author{AstroPig7}
\date{}
\maketitle
\tableofcontents
\mainmatter
\chapter{One}
Test document.
\section{Two}
Test document.
\begin{equation}
\text{Test.}
\end{equation}
\subsection{Three}
\begin{equation}
\text{Test.}
\end{equation}
\end{document}
我也尝试过从序言中删除各种不必要的声明,但没有成功。
答案1
amsmath
's\numberwithin{<slave>}{<master>}
做了几件事。它:
- 检查计数器
<slave>
和是否<master>
存在。如果存在,则 - 重新定义计数器的表示形式
<slave>
以包括使用格式的主计数器<master>.<slave>
;并且 - 添加
<slave>
到 的重置列表中<master>
。也就是说,每当增加<slave>
时,都会重置为 0 。<master>
这是超高清的,来自amsmath.sty
:
\newcommand{\numberwithin}[3][\arabic]{%
\@ifundefined{c@#2}{\@nocounterr{#2}}{%
\@ifundefined{c@#3}{\@nocnterr{#3}}{%
\@addtoreset{#2}{#3}%
\@xp\xdef\csname the#2\endcsname{%
\@xp\@nx\csname the#3\endcsname .\@nx#1{#2}}}}%
}
所以,你会仅有的需要
\numberwithin{equation}{section}
去实现你的追求。