自动编号不等式

自动编号不等式

我有一长串不等式,我想对这些不等式下的一些步骤添加一些解释。我见过有人这样做\stackrel{(i)}{\leq}。这就是我想要的,但我希望有一个计数器可以帮我做这件事,所以 (i)、(ii) 等等具有自动递增功能,这样如果我添加一行,我就不必更改所有内容。

我能想到的最大问题(我不知道如何解决)是,当我在新的方程(或类似的东西)环境中再次使用该计数器时,必须重置该计数器。有什么建议吗?

答案1

尝试一下:

\documentclass{article}
\usepackage{amsmath}
\newcounter{hints}
\renewcommand{\thehints}{\roman{hints}}
\newcommand{\hintedrel}[2][]{%
  \refstepcounter{hints}%
  \if\relax\detokenize{#1}\relax\else\label{#1}\fi
  \mathrel{\overset{\mathrm{(\thehints)}}{\vphantom{\le}{#2}}}%
}
\newcommand{\restarthintedrel}{\setcounter{hints}{0}}

\begin{document}
$a\hintedrel[lab1]{\le}b\hintedrel[lab2]{<}c$

(\ref{lab1}): because it's so.

(\ref{lab2}): I tell you it is.

$\restarthintedrel a\hintedrel[lab3]{\le}b\hintedrel[lab4]{<}c$

(\ref{lab3}): because it's so.

(\ref{lab4}): I tell you it is.
\end{document}

\hintedrel命令有一个可选参数,一个用于稍后引用不等式的标签。

在新的暗示不等式链之前,你可以写\restarthintedrel从 1 重新开始。

不同的实现

\documentclass{article}
\usepackage{amsmath,etoolbox}
\AfterEndEnvironment{equation}{\restarthintedrel}
\AfterEndEnvironment{align}{\restarthintedrel}
\newcounter{hints}
\renewcommand{\thehints}{\roman{hints}}
\newcommand{\hintedrel}[2][]{%
  \stepcounter{hints}%
  \if\relax\detokenize{#1}\relax\else\csxdef{hint@#1}{\thehints}\fi
  \mathrel{\overset{\textrm{(\thehints)}}{\vphantom{\le}{#2}}}%
}
\newcommand{\restarthintedrel}{\setcounter{hints}{0}}
\newcommand{\hintref}[1]{\csuse{hint@#1}}

\begin{document}
\begin{equation}
a\hintedrel[lab1]{\le}b\hintedrel[lab2]{<}c\overset{*}{\le}d
\end{equation}

(\hintref{lab1}): because it's so.

(\hintref{lab2}): I tell you it is.

\begin{align}
a&\hintedrel[lab3]{\le}b\\
&\hintedrel[lab4]{<}c
\end{align}

(\hintref{lab3}): because it's so.

(\hintref{lab4}): I tell you it is.
\end{document}

这假设提示仅在定义后才会被引用(使用标准\label机制\ref数学会引发错误)。您必须\AfterEndEnvironment为使用的每个数学环境添加类似的内容。

答案2

\section这可能就是您想要的,使用一个计数器,该计数器在每次使用时递增,并在文档开始时重置。当然,这可以修改:

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{chngcntr}% http://ctan.org/pkg/chngcntr

\newcounter{numrel}% Counter for numering relations
\counterwithin*{numrel}{section}% Counter resets at every section
\newcommand{\numrel}[1]{% Relation numbering
  \stepcounter{numrel}% Increment numrel counter
  \overset{(\roman{numrel})}{#1}% Print counter + relation
}
\begin{document}
\section{First section}
\begin{align*}
  P(x) &= ax^2+bx+c \\
       &\overset{(i)}{\leq} cx^3+dx^2+ex+f \\
       &\overset{(ii)}{<} gx^4+hx^3+ix^2+jx+k  
\end{align*}
\section{Second section}
\begin{align*}
  P(x) &= ax^2+bx+c \\
       &\numrel{\leq} cx^3+dx^2+ex+f \\
       &\numrel{<} gx^4+hx^3+ix^2+jx+k  
\end{align*}
\end{document}

使用 \stackrel 的编号关系

在上面的例子中,第一部分使用\overset而第二部分使用新定义的\numrel命令,以显示相似之处。还可以修改代码以适应使用引用,这样您的文档文本就会根据在等式中添加/删除行的变化而变化。chngcntr包裹用于更灵活地格式化计数器重置。


为了适应在文本中引用计数器的可能性,这里有一个经过修改的最小示例,它使用了etoolbox包裹在环境结束时重置计数器align*,以及amsmath使用一些计数器操作使用 hyperref 定义多个标签。它使用两个计数器,全局计数器用于生成唯一的引用钩子(对 很重要hyperref),以及一个本地计数器,该计数器实际上为每个方程显示和重置。\numrel{<rel>}{<lab>}现在需要两个强制参数。第一个是关系,而第二个是可以在其他地方引用的<rel>标签:<lab>

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\usepackage{hyperref}% https://ctan.org/pkg/hyperref

\newcounter{numrellocal}% Local counter for numering relations
\renewcommand{\thenumrellocal}{\roman{numrellocal}}% Counter numrellocal uses lowercase roman numerals
\newcounter{numrelglobal}% Global counter for numering relations
\renewcommand{\thenumrelglobal}{\roman{numrellocal}}% Counter numrelglobal uses lowercase roman numerals, but results in value from numrellocal

\makeatletter
\newcommand{\numrel}[2]{% Relation numbering
  \stepcounter{numrellocal}% Increment local counter
  \refstepcounter{numrelglobal}% Increment global counter and create correct reference hook, with label-text from local counter
  \ltx@label{#2}% Label numrel counter
  \overset{(\thenumrellocal)}{#1}% Print counter + relation
}
\makeatother
\AfterEndEnvironment{align*}{\setcounter{numrellocal}{0}}% Resets numrellocal at the end of align*

\begin{document}
\section{First section}
\begin{align*}
  P(x) &= ax^2+bx+c \\
       &\stackrel{(i)}{\leq} cx^3+dx^2+ex+f \\
       &\stackrel{(ii)}{<} gx^4+hx^3+ix^2+jx+k  
\end{align*}
\section{Second section}
\begin{align*}
  P(x) &= ax^2+bx+c \\
       &\numrel{\leq}{rel1} cx^3+dx^2+ex+f \\
       &\numrel{<}{rel2} gx^4+hx^3+ix^2+jx+k  
\end{align*}
If you look at (\ref{rel1}), you will notice it is different from (\ref{rel2}).
\begin{align*}
  P(x) &= ax^2+bx+c \\
       &\numrel{\leq}{rel3} cx^3+dx^2+ex+f \\
       &\numrel{<}{rel4} gx^4+hx^3+ix^2+jx+k  
\end{align*}
If you look at (\ref{rel3}), you will notice it is different from (\ref{rel4}).

\end{document}

具有引用能力的编号关系

相关内容