仅当至少使用两次时才显示计数器

仅当至少使用两次时才显示计数器

在此页面,我发现了一种方法,仅当至少使用两次时才显示一个计数器。

此解决方案的问题在于它不适用于两个计数器。有没有办法允许这种功能?

\documentclass{article}
    \makeatletter
        \newcommand{\defineoneshotcounter}[1]{%
            \newcounter{#1}
            \newcounter{#1@helper}
            \expandafter\newcommand\csname show#1\endcsname[1][\arabic]{%
                \stepcounter{#1}%
                \stepcounter{#1@helper}%
                \@ifundefined{#1@reset@\the\csname c@#1@helper\endcsname}{##1{#1}}{}%
            }
            \@namedef{reset#1}{%
                \ifnum\csname c@#1\endcsname=1\if@filesw
                \immediate\write\@auxout{%
                    \string\global\string\@namedef{#1@reset@\the\csname c@#1@helper\endcsname}{}%
                }%
                \fi\fi
                \setcounter{#1}{0}%
            }
        }
    \makeatother

    \defineoneshotcounter{FirstCounter}
    \newcommand{\FirstCounterStyle}[1]{\{\arabic{#1}\}}

    \defineoneshotcounter{SecundCounter}
    \newcommand{\SecundCounter}[1]{\{\arabic{#1}\}}

    \setlength{\parindent}{0cm}


\begin{document}

\section{First counter}

TEST : \showFirstCounter,
TEST : \showFirstCounter,
TEST : \showFirstCounter,
RESET : \resetFirstCounter

TEST : \showFirstCounter[\alph],
TEST : \showFirstCounter[\alph],
RESET : \resetFirstCounter

TEST : \showFirstCounter,
RESET : \resetFirstCounter

TEST : \showFirstCounter[\FirstCounterStyle],
TEST : \showFirstCounter[\FirstCounterStyle],
TEST : \showFirstCounter[\FirstCounterStyle],
TEST : \showFirstCounter[\FirstCounterStyle],
RESET : \resetFirstCounter

TEST : \showFirstCounter,
RESET : \resetFirstCounter

TEST : \showFirstCounter,
TEST : \showFirstCounter,
RESET : \resetFirstCounter


\section{Secund counter}

TEST : \showSecundCounter,
TEST : \showSecundCounter,
TEST : \showSecundCounter,
RESET : \resetSecundCounter

TEST : \showSecundCounter[\alph],
TEST : \showSecundCounter[\alph],
RESET : \resetSecundCounter

TEST : \showSecundCounter

\end{document}

答案1

第二个解决方案如果计数器仅显示一次则隐藏它适用于同时或不同时间定义的多个计数器。

@Marc van Dongen:请参阅下面 projetmbc 的输出。 在此处输入图片描述

我猜他是说最后一个\showSecundCounter不应该产生任何结果,因为它在SecundCounter重置后只被调用了一次。

相关内容