使用 revtex 加粗页码

使用 revtex 加粗页码

我想将页码打印为粗体(这是示例),无论它们出现在哪里。我的简单 MWE 如下所示:

\documentclass{revtex4-1}
\renewcommand*{\thepage}{\textbf{X}}
%\usepackage{microtype}
%\renewcommand*{\thepage}{X}
\begin{document}
    foo
\end{document}

这确实有效。但是,一旦我使用其他一些软件包(例如microtype(取消注释第一个注释行),它就会中断。这可以通过取消注释第二个注释行来解决,这表明不是乱七八糟\thepage本身导致了问题。尽管如此,我还是失去了我想要的效果。

格式化后,aux文件如下所示:

....
\newlabel{LastPage}{{}{\protect \unhbox \voidb@x \bgroup \def document{1}\let \futurelet \@let@token \let \protect \relax \protect \edef m{bx}\protect \xdef \OT1/cmr/bx/n/10 {\OT1/cmr/m/n/10 }\OT1/cmr/bx/n/10 \size@update \enc@update 1\egroup }{}{}{}}

因此,这个命令很可能会把revtex4-1.cls事情搞乱:

\immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%

我怎样才能修复这条线以使事情正常?

更新: 这将创建一个正确的.aux文件,但当然会弄乱文档的页码:

\documentclass{revtex4-1}
\renewcommand*{\thepage}{\string\textbf{X}}
\usepackage{microtype}
\begin{document}
    foo
\end{document}

答案1

添加格式\thepage应该是最后手段。

\documentclass{revtex4-1}
\usepackage{microtype}
\usepackage{etoolbox}

\usepackage{kantlipsum} % mock text

\makeatletter
\AtBeginDocument{%
  \patchcmd{\@oddhead}{\thepage}{\textbf{\thepage}}{}{}%
  \patchcmd{\@evenhead}{\thepage}{\textbf{\thepage}}{}{}%
}
\let\latex@pageref\pageref
\renewcommand{\pageref}[1]{\textbf{\latex@pageref{#1}}}
\makeatother

\begin{document}

This text has \pageref{LastPage} pages.

\kant

\end{document}

在此处输入图片描述

.aux文件有

\newlabel{LastPage}{{}{2}{}{}{}}

正如它应该。

如果您使用,则需要更多的东西hyperref,但这不在您的问题中。

如果你真的要上路\textbf{\arabic{page}},那就好好走吧:

\usepackage{etoolbox}
\robustify{\textbf} % make \textbf survive \edef

\renewcommand{\thepage}{\textbf{\arabic{page}}}

答案2

我找到了答案将文本内容写为标签并使用 \nameref* 引用它们

\documentclass{revtex4-1}
\renewcommand*{\thepage}{\unexpanded{\textbf{X}}}
\usepackage{microtype}
\begin{document}
    foo
\end{document}

这似乎确实有效!

相关内容