以下生成一个以增加的阿拉伯数字计数的计数器。
\documentclass[12pt]{article}
\pagestyle{empty}
\begin{document}
\newcounter{myCounter}
\addtocounter{myCounter}{1}
\themyCounter
\addtocounter{myCounter}{1}
\themyCounter
\addtocounter{myCounter}{1}
\themyCounter
\end{document}
正如评论中所述,LaTeX 可以使用以下方法向后计数\addtocounter{myCounter}{-1}
但这样做的缺点是你需要手动指定起始值 n。这似乎很麻烦,因为如果你想向列表中添加一些其他项目,那么你还必须记住更新 n。
有没有办法让自定义乳胶计数器倒数没有必须手动指定 n 的值吗?
答案1
myCounter
以下示例以通常的方式从 0、1、2 开始增加计数器。计数器的最新值在最后一页发出后存储在zref
标签中。然后,通过从最新值中减去实际值,重新定义计数器的外观以显示所需值:LastPage
\themyCounter
\documentclass{article}
\pagestyle{empty}
\usepackage{zref-lastpage}
\newcounter{myCounter}
\makeatletter
\zref@newprop{myCounter}{\the\value{myCounter}}
\zref@addprop{LastPage}{myCounter}
\newcommand*{\myCounterLast}{%
\zref@extractdefault{LastPage}{myCounter}{0}%
}
\renewcommand*{\themyCounter}{%
\@arabic{\numexpr\myCounterLast+1-\value{myCounter}\relax}%
}
\makeatother
\begin{document}
\stepcounter{myCounter}
\themyCounter
\stepcounter{myCounter}
\themyCounter
\stepcounter{myCounter}
\themyCounter
\end{document}
在第一次运行中,标签已写入但尚不知道,最新值被假定为零:
下次运行将显示正确结果:
答案2
您可以使用该totcount
包来获取计数器的最终值并使用它来设置起始值。
\documentclass[12pt]{article}
\usepackage{totcount}
\newtotcounter{myCounter}
\newcounter{myDcounter}
\begin{document}
\setcounter{myDcounter}{\totvalue{myCounter}}
\addtocounter{myDcounter}{1}
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\addtocounter{myCounter}{1}
\addtocounter{myDcounter}{-1}
Up \themyCounter\ and down
\themyDcounter
\end{document}
答案3
恐怕我不明白不知道计数器起始值的规定。无论如何,这是一个基于 LuaLaTeX 的解决方案,它以 为步长从n
(n
设置为10
) 倒计时到。1
-1
% !TEX TS-program = lualatex
\documentclass{article}
\begin{document}
\directlua{ for i = 10, 1, -1 do tex.sprint(i.." ") end }
\end{document}