数字の代わりに(*)と(**)を使用した自動ラベル式

数字の代わりに(*)と(**)を使用した自動ラベル式

タイトルにあるように、特定の環境(証明など)で、番号ではなく(*)、(**)、...を使用して数式にラベルを付けたいと思います。これを実現する方法はありますか?

答え1

このようなもの?

ここに画像の説明を入力してください

これは、ダミー プルーフ カウンターがリセットされない限り、(ただし、その場合は不明瞭ですが)hyperref複数回発生した場合でも機能します。**proof

方程式番号は、 で使用される前にまず展開されます\loopstars

もちろん、10 個を超える記号がある場合、つまり方程式「number」が広くなりすぎると、問題が発生します。

\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{amsthm}

\newcounter{starcnt}
\makeatletter
\newcommand{\loopstars}[1]{%
  \c@starcnt\z@%
  \loop\unless\ifnum\c@starcnt = #1%
  \advance \c@starcnt by \@ne%
  *%
  \repeat%
}
\makeatother

\newcounter{proof}
\usepackage{xpatch}

\makeatletter
\AtBeginEnvironment{proof}{%
  \refstepcounter{proof}%
  \renewcommand{\theHequation}{equation.\arabic{proof}.\arabic{equation}}
  \renewcommand{\theequation}{\protect\loopstars{\number\value{equation}}}
}

\makeatother

\usepackage{hyperref}


\begin{document}

In \eqref{foo} we see that and in \eqref{foobar}


\begin{proof}
  \begin{equation}
    E=mc^2
    \end{equation}  
    \begin{align}
      E=mc^2 \label{foo} \\
      E=mc^2
 \end{align}    
\end{proof}

\clearpage
\setcounter{equation}{0}
\begin{proof}
  \begin{equation}
    E=mc^2
    \end{equation}  
    \begin{align}
      E=mc^2 \label{foobar} \\
      E=mc^2
 \end{align}    
\end{proof}

コードゴルフの今後

  \documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{amsthm}

\newcounter{starcnt}
\newcounter{proof}
\newcounter{dummycntr}

\newcommand{\mynumberingplaceholder}{$\int\!$}
\makeatletter
\newcommand{\loopsymbols}[1]{%
  \raggedleft%
  \c@starcnt\z@%
  \loop\unless\ifnum\c@starcnt = #1%
  \advance \c@starcnt by \@ne%
  \mynumberingplaceholder%
  \repeat%
}
\makeatother

\usepackage{xpatch}

\makeatletter
\AtBeginEnvironment{proof}{%
  \refstepcounter{proof}%
  \renewcommand{\theHequation}{equation.\arabic{proof}.\arabic{equation}}
  \renewcommand{\theequation}{\protect\loopsymbols{\number\value{equation}}}
}

\makeatother

\usepackage{hyperref}


\begin{document}

In \eqref{foo} we see that and in \eqref{foobar}


\begin{proof}
  \begin{equation}
    E=mc^2
    \end{equation}  
    \begin{align}
      E=mc^2 \label{foo} \\
      E=mc^2
    \end{align} 
    \loop\unless\ifnum\value{dummycntr} = 10
    \stepcounter{dummycntr}
    \begin{equation}
      c^2 = a^2 +b^2 \\
    \end{equation}  
    \repeat
\end{proof}

\clearpage
\setcounter{equation}{0}
\begin{proof}
  \begin{equation}
    E=mc^2
    \end{equation}  
    \begin{align}
      E=mc^2 \label{foobar} \\
      E=mc^2
 \end{align}    
\end{proof}



\end{document}

ここに画像の説明を入力してください

答え2

Christian のアイデアを基に、証明内の方程式番号をリセットし、外側の方程式番号を標準のままにするバージョンを示します。また、特定の環境でシンボルを (ローカルに) 変更することもできますproof(デフォルトはアスタリスクです)。

\documentclass{article}

\usepackage{amsmath,amsthm,xpatch}
\usepackage{hyperref}

\ExplSyntaxOn
\cs_new:Npn \stars #1
 {
  \prg_replicate:nn { \use:c { c@#1 } } { \l_anhoa_eqsym_tl }
 }
\tl_new:N \l_anhoa_eqsym_tl
\NewDocumentCommand{\seteqsymbol}{m}
 {
  \tl_set:Nn \l_anhoa_eqsym_tl { #1 }
 }
\ExplSyntaxOff
\seteqsymbol{*} % initialize

\newcounter{saveequation}
\newcounter{proof}
\xapptocmd{\proof}
 {%
  \stepcounter{proof}%
  \setcounter{saveequation}{\value{equation}}%
  \setcounter{equation}{0}%
  \renewcommand{\theequation}{\stars{equation}}%
  \renewcommand{\theHequation}{\theproof.\arabic{equation}}%
 }{}{}
\xapptocmd{\endproof}
 {\setcounter{equation}{\value{saveequation}}}
 {}{}

\begin{document}

Here is an equation
\begin{equation}
a=b
\end{equation}

\begin{proof}
This is an important equation
\begin{equation}
0=0\label{a}
\end{equation}
Note that \eqref{a} together with
\begin{equation}
0=0
\end{equation}
ends the proof.
\end{proof}

\begin{proof}\seteqsymbol{\ensuremath{\vee}}
This is an important equation
\begin{equation}
0=0\label{b}
\end{equation}
Note that \eqref{b} together with
\begin{equation}
0=0
\end{equation}
ends the proof.
\end{proof}

Here is an equation
\begin{equation}
a=b
\end{equation}

\end{document}

ここに画像の説明を入力してください

関連情報