我正在处理一本书,我想将任意页码从 更改为 ,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}