我可以通过以下方式在 LaTeX 文档中输出计数器的值:
\setcounter{mycounter}{1}
\arabic{mycounter}
插入一个1
。但是我如何格式化输出,例如,如果mycounter
小于 10,则添加前导零,类似于printf
让您通过指定%02d
格式字符串来执行此操作吗?
答案1
原则是
\ifnum\value{mycounter}<10 0\fi\arabic{mycounter}
如何将其实现到您的宏中取决于您想如何以及在何处使用此表示。
答案2
这fmtcount
包裹提供多种方式来格式化计数器(甚至将基数更改为二进制或八进制,而不是十进制)。要在计数器前面添加一堆零,请使用\padzeroes[<n>]{\decimal{<cntr>}}
。这将0
在计数器前面添加零<cntr>
,使得最终长度为<n>
。\decimal{<cntr>}
类似于\arabic{<cntr>}
但需要与一起使用\padzeroes
:
\documentclass{article}
\usepackage{fmtcount}% http://ctan.org/pkg/fmtcount
\begin{document}
\newcounter{mycounter}%
\newcommand{\printcntr}{%
\stepcounter{mycounter}%
\padzeroes[2]{\decimal{mycounter}} &
\padzeroes[4]{\binary{mycounter}} &
\padzeroes[3]{\octal{mycounter}}%
}
\begin{tabular}{ccc}
\textbf{Decimal} & \textbf{Binary} & \textbf{Octal} \\ \hline
\printcntr \\ \printcntr \\ \printcntr \\ \printcntr \\ \printcntr \\
\printcntr \\ \printcntr \\ \printcntr \\ \printcntr \\ \printcntr
\end{tabular}
\end{document}
答案3
LaTeX 识别宏\two@digits
\documentclass{article}
\newcounter{mycounter}
\makeatletter
\renewcommand\themycounter{\two@digits{\value{mycounter}}}
\makeatother
\newcommand\Test{\stepcounter{mycounter}\themycounter\ }
\begin{document}
\Test
\Test
\Test
\end{document}
答案4
您可以将pgf
其用于此目的。它有一个\pgfmathsetbasenumberlength
用于基数转换宏的设置。将其设置为 2 并对计数器值进行虚拟转换为十进制数将为您提供01
、02
、... 、10
等。它还可以很好地扩展,即您只需使用 3 即可获得001
等。但是,对于较小的东西,我会改用 egreg 的解决方案。
\documentclass{article}
\usepackage{pgf}
\newcounter{mycounter}
\newcommand\test{{%
\pgfmathsetbasenumberlength{2}% try 3, 4, ...
\pgfmathbasetodec\testvalue{\the\value{mycounter}}{10}%
\testvalue
\stepcounter{mycounter}%
}}
\begin{document}
\test
\test
\test
\test
\test
\test
\test
\test
\test
\test
\test
\end{document}
另请参阅 PGF 手册第 66 节号码印刷这对你来说也应该很有趣。