![如何在数学模式中插入计数器?](https://linux22.com/image/459358/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E4%B8%AD%E6%8F%92%E5%85%A5%E8%AE%A1%E6%95%B0%E5%99%A8%EF%BC%9F.png)
我正在寻找一种在数学模式 $ .* $ 中插入计数器的方法。具体来说,我正在用 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}