Я работаю с книгой и хотел бы изменить произвольный номер страницы с arabic
на, alph
не полагаясь ни на какие маркеры или ссылки в тексте документа. Понятия не имею, с чего начать.Этот вопрос похож, я думаю, но я не смог применить ни одно из этих решений к моей проблеме.
В приведенном ниже MWE я хотел бы изменить номер страницы «3» в основном тексте на «три», оставив все остальные номера страниц без изменений.
\documentclass{book}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\frontmatter
\blinddocument
\mainmatter
\blinddocument
\end{document}
Таким образом, окончательное количество страниц в основном материале будет (1, 2, три, 4).
ОБНОВЛЕНИЕ: Я понял, что в моем простом примере я (по глупости) не указал, как стилизованы страницы, и это немного усложняет реализацию. Я последовал совету Кристиана не менять макросы \the...
— хотя я и нашел решение Анри более простым в реализации — потому что я использую оглавление. Мой исходный код был таким:
\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}