我想用这个包来计算我的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}