如何使用 \ifnum 作为参数(扩展宏)?

如何使用 \ifnum 作为参数(扩展宏)?

我想用这个包来计算我的section's、figure's 等totcount。为了得到一个通用的可用模板,我想只显示大于零的计数器。但似乎total{counter}无法评估。

我尝试了以下操作但两个hide调用均未生成任何输出:

\documentclass{article}

\usepackage{totcount}

\regtotcounter{section}

\newcommand{\hide}[2] {
  \ifnum0<0#1
    #2
  \fi
}

\begin{document}

\section{Section One}
\section{Section Two}
\section{Section Three}

% should print "Sections: 3" but doesn't show anything
\hide{\total{section}}{Sections: \total{section}}
% should print nothing
\hide{\total{figure}}{Figures: \total{figure}}

\end{document}

如果我手动写下数字,它的工作方式将如预期的那样:

% prints "Sections: 3"
\hide{3}{Sections: \total{section}}
% prints nothing
\hide{0}{Figures: \total{figure}}

我做错了什么?有没有更好的方法来获得预期的结果?

答案1

包的宏\total不可扩展,它以定义开始。\totvalue改为使用,它将名称映射到可以与一起使用的内部计数器寄存器\ifnum。来自totcount.sty

%%   Returns the numeric total value of a registered total counter that is
%%   passed as argument. Note that if the counter's value is not yet computed
%%   (at the first time \LaTeX\ runs on the document) this macro returns |-1|.
\newcommand\totvalue[1]{\value{#1@totc}}

示例文件(我已添加缺失的部分\regtotcounter{figure}):

\documentclass{article}

\usepackage{totcount}

\regtotcounter{section}
\regtotcounter{figure}

\newcommand{\hide}[2] {
  \ifnum\totvalue{#1}>0
    #2
  \fi
}

\begin{document}

\section{Section One}
\section{Section Two}
\section{Section Three}

% should print "Sections: 3"
\hide{section}{Sections: \total{section}}
% should print nothing
\hide{figure}{Figures: \total{figure}}

\end{document}

结果

相关内容