答案1
如果章节编号始终至少有两位数字(包括目录、书签、参考文献等),则应\thesection
进行相应的重新定义:
\renewcommand*{\thesection}{%
\ifnum\value{section}<10 0\fi % pad with zero if necessary
\arabic{section}% print the section number
}
备注回答
(评论太长)
答案使用:
\renewcommand{\sectionmark}[1]{%
\nplpadding{2}%
\markboth{Section \numprint{\thesection} \newline#1}{}}
存在的问题:
\markboth
是带有移动参数的命令,这些参数将在以后的发货时使用。这将格式化命令\nplpadding
与其在中的应用程序分离\numprint
。因此,每个\nplpadding
后该\section
命令和页面输出之前将会改变格式设置。\thesection
可以扩展为 所需的纯数字\numprint
。默认使用\arabic
/\@arabic
,这是一个可以重新定义的格式化命令(例如切换到适当的字体,...),因此不能保证扩展为纯数字。例如,安全的方法是\the\value{section}
或。\number\value{section}
建议:
\documentclass{article}
\usepackage{numprint}
\usepackage{fancyhdr}
\pagestyle{fancy}
\DeclareRobustCommand*{\PrintThePaddedNumber}[1]{%
\begingroup % The group keeps the formatting changes local.
\nplpadding{2}%
\numprint{#1}%
\endgroup
}
\renewcommand{\sectionmark}[1]{%
% * \the\value{section} is expandable and
% is expanded at the execution of \markboth.
% * \PrintThePaddedNumber is expanded later, when the header
% line is set.
\markboth{Section \PrintThePaddedNumber{\the\value{section}}\newline#1}{}%
}
\begin{document}
\section{First section}
The code number of James Bond is \nplpadding{3}\numprint{7}.
\end{document}
答案2
在 ctan 上挖掘后我发现数字打印
插入部分详细信息是 fancyhdr 中常见的 \leftmark 操作,但定义标记如下:
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{%
\nplpadding{2}%
\markboth{Section \numprint{\thesection} \newline#1}{}}
希望这对将来的某人有所帮助:)