更改单个页码的打印方式

更改单个页码的打印方式

我正在处理一本书,我想将任意页码从 更改为 ,arabic而不alph依赖于文档文本中的任何标记或引用。我不知道从哪里开始。这个问题类似我想,但我无法将任何这些解决方案转化为我的问题。

在下面的 MWE 中,我想将主内容中的页码“3”更改为“three”,同时保留所有其他页码不变。

\documentclass{book}
\usepackage[english]{babel}
\usepackage{blindtext}

\begin{document}

\frontmatter
\blinddocument

\mainmatter
\blinddocument

\end{document}

因此主要内容的最终页数将是(1、2、3、4)。

更新:我意识到在我的简单示例中,我(愚蠢地)没有指定页面的样式,这让实现起来有点棘手。我按照 Christian 的建议不更改任何宏\the...——尽管我发现 Henri 的解决方案更容易实现——因为我使用的是目录。我的原始代码是:

\RequirePackage[markcase=used]{scrlayer-scrpage}
\providepairofpagestyles{mystyle}{%
    \clearpairofpagestyles%
    \automark[chapter]{chapter}
    \ihead{\headmark}
    \ohead[\pagemark]{\pagemark}
}

更新至:

\def\targetpage{3}
\def\pagestring{\numberstringnum{\targetpage}}

\RequirePackage[markcase=used]{scrlayer-scrpage}
\providepairofpagestyles{mystyle}{%
    \clearpairofpagestyles%
    \automark[chapter]{chapter}
    \ihead{\headmark}
    \ohead[\ifnum\value{page}=\targetpage\pagestring\else\thepage\fi]{\ifnum\value{page}=\targetpage\pagestring\else\thepage\fi}
} 

可能有更好的方法可以做到这一点,但它似乎有效!

答案1

这假定plain之后要应用的页面样式\mainmatter并检查页码是否等于某个预定义的数字,然后3应用\numberstringnum宏。

\documentclass{book}
\usepackage[english]{babel}

\usepackage{fmtcount}
\usepackage{fancyhdr}
\usepackage{blindtext}

\def\theliteralpage{3}

\fancypagestyle{plain}{%
  \fancyhf{}
  \renewcommand{\headrulewidth}{0pt}
  \cfoot{\ifnum\theliteralpage=\value{page}\numberstringnum{\theliteralpage}\else\thepage\fi}
}

\begin{document}
\frontmatter
\blinddocument

\mainmatter
\pagestyle{plain}
\blinddocument

\end{document}

在此处输入图片描述

答案2

您可以重新定义\thepage以所需格式打印。该\mainmatter命令\thepage也会重新定义,因此您必须在其后放置重新定义。

\documentclass{book}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{fmtcount}
\begin{document}

\frontmatter
\blinddocument

\mainmatter
\renewcommand\thepage{%
  \ifnum\value{page}=3
    \numberstring{page}%
  \else
    \arabic{page}%
  \fi}

\blinddocument

\end{document}

相关内容