我是 LaTeX 的新手,如果这篇文章太愚蠢,请原谅我。
我有一些像这样的代码:
\documentclass{article}
\newcounter{qnumber}
\newcommand{\autossection}{\stepcounter{qnumber}\subsection{\theqnumber}}
\begin{document}
\section{A}
\autossection
test
\autossection
test
\autossection
test
\autossection
test
\end{document}
用于自动打印渐进数字作为小节名称。
我想要的是将子部分编号格式化为 001、002、...010、011、...100、101 等。
现在我只有 1、2、...10、11、...100、101 等。
这可能吗?
答案1
\documentclass{article}
\newcounter{qnumber}
\newcommand{\autossection}{\refstepcounter{qnumber}\subsection{\theqnumber}}
\renewcommand\theqnumber{%
\ifnum\value{qnumber}<10 0\fi
\ifnum\value{qnumber}<100 0\fi
\arabic{qnumber}}
\begin{document}
\section{A}
\autossection
test
\autossection
test
\autossection
test
\autossection
test
\end{document}
答案2
使用包的解决方案numprint
:
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{lipsum}
\usepackage{numprint}
\renewcommand\thesection{\nplpadding{3}\numprint{\arabic{section}}}
\begin{document}
\section{A First Section}
\lipsum[1-2]
\section{A Second Section}
\lipsum[4-5]
\end{document}
答案3
您可以使用包中的 pad-with-zero 功能siunitx
并重新定义\thesubsection
命令以相应地打印数字。
\documentclass{article}
\usepackage{siunitx}%
\usepackage{blindtext}
\renewcommand{\thesubsection}{\num[minimum-integer-digits = 3]{\number\value{subsection}}}
\begin{document}
\tableofcontents
\clearpage%
\section{A}
\subsection{One}
\blindtext
\subsection{Two}
\blindtext
%And now jump to subsection 59
\setcounter{subsection}{58}
\subsection{Fifty-Eight}
\blindtext
\setcounter{subsection}{99}
\subsection{Hundred}
\blindtext
\end{document}
编辑:使用命令的替代解决方案\autossection
(如果需要)
\documentclass{article}
\usepackage{siunitx}%
\usepackage{blindtext}
\renewcommand{\thesubsection}{\num[minimum-integer-digits = 3]{\number\value{subsection}}}
\newcommand{\autossection}{\refstepcounter{subsection}\subsection*{\thesubsection}}
\begin{document}
\tableofcontents
\clearpage%
\section{A -- with autossection command}
\autossection
\blindtext
\autossection
\blindtext
\autossection
\blindtext
\autossection
\blindtext
\section{B -- with direct subsection command}
\subsection{One}
\blindtext
\subsection{Two}
\blindtext
%And now jump to subsection 59
\setcounter{subsection}{58}
\subsection{Fifty-Eight}
\blindtext
\setcounter{subsection}{99}
\subsection{Hundred}
\blindtext
\end{document}