我找到了解决方案。但我想重置号码。例如 (1) (2) (3) (1) (2) (3) (4) (5) (1) (2) (3) 我该怎么办?
\documentclass[leqno]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath, amsthm}
\usepackage{mdframed}
%% Code by David Carlisle at https://tex.stackexchange.com/a/258575/38080
\makeatletter
\def\formatout#1{\hbox{\hskip1sp\m@th\llap{%
\normalcolor\normalfont#1\hspace{1.0cm}}}}
\let\oldmaketag@@@\maketag@@@
\def\oldtagform@#1{\oldmaketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
\renewcommand{\eqref}[1]{\textup{\oldtagform@{\ref{#1}}}}
\def\maketag@@@#1{\formatout{#1}}
%
% redefine the amsthm theorem start macro to use \formatout
%
\def\@begintheorem#1#2[#3]{%
\deferred@thm@head{\the\thm@headfont \thm@indent
\@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
\@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\thmnumber}%
\@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
\thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
\the\thm@headpunct
\thmheadnl % possibly a newline.
\hskip\thm@headsep
}%
\ignorespaces}%
\makeatother
\swapnumbers
\def\thmnumber#1{\formatout{(#1)}}
% https://tex.stackexchange.com/a/303245/38080
\newtheorem{thm}[equation]{Theorem}
\newtheorem{exa}[equation]{Example}
\begin{document}
Let's start with
\begin{equation}
E=mc^2
\label{eq:mc2}
\end{equation}
so we go to:
\begin{thm}{Einsteins:}
$E$ is equal to $m$ $c$ squared
\label{thE}
\end{thm}
This leads to this
\begin{exa}{Example:}
$E$ is equal to $m$ multiplied a BIG number
\label{exE}
\end{exa}
% innerleftmargin+leftmargin must be 0pt...
\begin{mdframed}[backgroundcolor=gray!20, innerleftmargin=0pt, linewidth=0pt]
Also
\begin{equation}
m=E/c^2
\label{eq:mc2i}
\end{equation}
\end{mdframed}
And the references are Eq.~\ref{eq:mc2}, Th.~\ref{thE}, Ex.~\ref{exE}.
\end{document}
答案1
我想到的是这个:它是有点自动的,所以你不必看着你的计数器重置......
\documentclass[leqno]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath, amsthm}
\usepackage{mdframed}
%% Code by David Carlisle at https://tex.stackexchange.com/a/258575/38080
\makeatletter
\def\formatout#1{\hbox{\hskip1sp\m@th\llap{%
\normalcolor\normalfont#1\hspace{1.0cm}}}}
\let\oldmaketag@@@\maketag@@@
\def\oldtagform@#1{\oldmaketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
\renewcommand{\eqref}[1]{\textup{\oldtagform@{\ref{#1}}}}
\def\maketag@@@#1{\formatout{#1}}
%
% redefine the amsthm theorem start macro to use \formatout
%
\def\@begintheorem#1#2[#3]{%
\deferred@thm@head{\the\thm@headfont \thm@indent
\@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
\@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\thmnumber}%
\@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
\thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
\the\thm@headpunct
\thmheadnl % possibly a newline.
\hskip\thm@headsep
}%
\ignorespaces}%
\makeatother
\swapnumbers
\def\thmnumber#1{\formatout{(#1)}}
% https://tex.stackexchange.com/a/303245/38080
\newtheorem{thm}[equation]{Theorem}
\newtheorem{exa}[equation]{Example}
%%%%% New stuff here
\newcounter{threelabelcounter}
\usepackage{ifthen}
\newcommand{\countercheck}{
\stepcounter{threelabelcounter}
\ifthenelse{\thethreelabelcounter>2}{\setcounter{threelabelcounter}{0}}{}
\setcounter{equation}{\thethreelabelcounter}
%\thethreelabelcounter
}
%%% until here...
\begin{document}
Let's start with
\begin{equation}
E=mc^2
\label{eq:mc2}
\end{equation}
\countercheck
so we go to:
\begin{equation}
e
\label{thE}
\end{equation}
\countercheck
This leads to this
\begin{equation}
E
\label{exE}
\end{equation}
\countercheck
% innerleftmargin+leftmargin must be 0pt...
\begin{mdframed}[backgroundcolor=gray!20, innerleftmargin=0pt, linewidth=0pt]
Also
\begin{equation}
m=E/c^2
\label{eq:mc2i}
\end{equation}
\end{mdframed}
And the references are Eq.~\ref{eq:mc2}, Th.~\ref{thE}, Ex.~\ref{exE}.
\end{document}
现在你必须以某种方式checkcounter
在标签被调用时执行。我还没有成功。
在这种情况下,类似这样的方法可能会有所帮助。重新定义方程命令或定理命令。自定义定理编号