如何在数学模式中插入计数器?

如何在数学模式中插入计数器?

我正在寻找一种在数学模式 $ .* $ 中插入计数器的方法。具体来说,我正在用 LaTex 编写文档,我想使用语言工具检查文档中的语法。首先,我按照以下问题的答案删除了所有数学运算:删除数学模式中的所有内容。但是,通过删除所有数学运算,语言工具会报告错误,因为单词之间有空字符串。因此,我想插入一个计数器,以便在单词之间有内容。我尝试了以下方法

\newcounter{equat}
\setcounter{equat}{1}
\newcommand{\newEQ}{\refstepcounter{equat}\Alph{equat}}
\def$#1${\newEQ}

但显然,我无法在 中使用 或\stepcounter。有人知道如何增加上述计数器吗?我考虑过在数学模式之前(或之后)插入 ,但我找不到如何操作。\refstepcounter\addtocounter\def$#1${.*}\refstepcounter

先谢谢大家了!


工作示例

我有这个:

\documentclass{article}

\usepackage{comment}
\usepackage{verbatim}
\def\[#1\]{}
\def\(#1\){}
\catcode`\$=13
\def$$#1$${}
\def$#1${}

\makeatletter
\renewenvironment{subequations}{\comment}{\endcomment}
\renewenvironment{equation}{\comment}{\endcomment}
\renewenvironment{alignat}{\comment}{\endcomment}
\renewenvironment{align}{\comment}{\endcomment}
\renewenvironment{equation*}{\comment}{\endcomment}
\renewenvironment{alignat*}{\comment}{\endcomment}
\renewenvironment{align*}{\comment}{\endcomment}
\makeatother

\begin{document}
    This is an example with $ E = m c^2 $ and 
    \begin{equation*}
        \cos^2(\alpha) + \sin^2(\alpha) = 1.
    \end{equation*}
\end{document}

如果我编译上述代码,我会得到:

This is an example with and 

但是,我想要类似下面的东西

This is an example A with B.

在哪里A是计数器的字母转换。

如果我将命令\newEQ放在上述环境的重新定义中,那么我仅针对以下环境解决了此问题:

\makeatletter
\renewenvironment{subequations}{\newEQ\comment}{\endcomment\ }
\renewenvironment{equation}{\newEQ\comment}{\endcomment\ }
\renewenvironment{alignat}{\newEQ\comment}{\endcomment\ }
\renewenvironment{align}{\newEQ\comment}{\endcomment\ }
\renewenvironment{equation*}{\newEQ\comment}{\endcomment\ }
\renewenvironment{alignat*}{\newEQ\comment}{\endcomment\ }
\renewenvironment{align*}{\newEQ\comment}{\endcomment\ }
\makeatother

确实,我得到了以下结果

This is an example with A

答案1

以下在最小示例中有效。请注意,\def$#1${}不会覆盖先前的\def$$#1$${},而是以下仅定义$并使用 LaTeX 来\@ifnextchar查看以下字符是否是另一个$,基于此,它要么吞噬直到下一个$$$

我还使用了这个alphalph包,以便你的文档可以包含超过 26 个方程式。

\documentclass{article}

\usepackage{amsmath}
\usepackage{alphalph}

\newcounter{myequat}
\renewcommand*\themyequat{\AlphAlph{\value{myequat}}}
\newcommand*\newEQ{}
\protected\def\newEQ{\refstepcounter{myequat}\themyequat}

\usepackage{comment}
\usepackage{verbatim}
\protected\def\[#1\]{\newEQ}
\protected\def\(#1\){\newEQ}
\makeatletter
\catcode`\$=13
\protected\def${\newEQ\@ifnextchar$\@gobbledisplay\@gobbleinline}
\def\@gobbledisplay$#1$${}
\def\@gobbleinline#1${}
\makeatother

\makeatletter
\renewenvironment{subequations}{\newEQ\comment}{\endcomment}
\renewenvironment{equation}{\newEQ\comment}{\endcomment}
\renewenvironment{alignat}{\newEQ\comment}{\endcomment}
\renewenvironment{align}{\newEQ\comment}{\endcomment}
\renewenvironment{equation*}{\newEQ\comment}{\endcomment}
\renewenvironment{alignat*}{\newEQ\comment}{\endcomment}
\renewenvironment{align*}{\newEQ\comment}{\endcomment}
\makeatother

\begin{document}
    This is an example with $ E = m c^2 $ and 
    \begin{equation*}
        \cos^2(\alpha) + \sin^2(\alpha) = 1.
    \end{equation*}
\end{document}

相关内容