如何格式化以 0 开头的 \thesection?

如何格式化以 0 开头的 \thesection?

我正在根据一位平面艺术家的想法进行设计。在正文中,节标题不显示数字,但他们希望在标题中显示节编号 - 但作为填充的数字 - 所以不是“节 1”而是“节 01”..当然\thesection是一个实数整数 - 有没有办法用前导 0 来填充数字?

在此处输入图片描述

答案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}{}}

给你(是的,我留下了正文部分标题的编号): 在此处输入图片描述

希望这对将来的某人有所帮助:)

相关内容