我的要求正在打印一本包含一系列菜谱的烹饪书。但是,菜谱会经常更新,并插入新菜谱。因此,我需要一个解决方案来防止在只有部分内容更改的情况下重新打印整本书。
我的解决方案草稿就像一些法律书籍出版商那样处理。他们为书籍提供装订,可以打开装订以删除或添加单页。这样,我只需要打印更改的页面以及索引。
我的问题是页码。我正在寻找一种解决方案,使插入部分的页码保持稳定,并在那里添加后缀,例如,21a
。21b
有没有可能做到这一点?我完全不知道从哪里开始寻找这样的解决方案。
(顺便说一句:我并不局限于上述的解决方案。如果有人有更好的办法来处理频繁更改的大型打印文档,我会很高兴听到。)
答案1
要更改某个范围内的数字,您可以执行以下操作(我不保证这不会破坏任何事情):
编辑:我让环境可嵌套。我还将页码从 改为\alph
以\roman
允许超过 26 个子页面。
\documentclass[]{article}
\usepackage{blindtext}
\makeatletter
\newcount\@subpagescount%
\newenvironment{subpages}{%
\edef\@subpagesprefix{\thepage}%
\@subpagescount=\c@page%
\clearpage%
\edef\thepage{\@subpagesprefix.\noexpand\roman{page}}%
\setcounter{page}{1}%
}{\clearpage\setcounter{page}{\numexpr\@subpagescount+1}}
\makeatother
\begin{document}
\setcounter{page}{21}
\blindtext
\begin{subpages}
First page in not nested \texttt{subpages}
\clearpage
Second page in not nested \texttt{subpages}
\begin{subpages}
\setcounter{page}{26}
First page in nested \texttt{subpages}
\clearpage
Second page in nested \texttt{subpages}
\end{subpages}
After the nested \texttt{subpages}
\end{subpages}
\blindtext
\end{document}
答案2
由于您不想更改页码,我建议根据菜谱来设置页码。例如,菜谱的页码Carrot cake
可以设为CC1
、CC2
等等——尽管大多数菜谱可能都放在一页上?您可以根据菜谱设置“页码前缀”,就像这样,或者以某种合理的方式分配它。
书中的页面将按字典顺序显示,这样可以轻松插入新页面并找到所需的页面。
以下是实现这个想法的一种方法:
\documentclass{book}
\usepackage{xparse}
\usepackage{blindtext}
\let\realchapter\chapter% save the definition of \chapter for later use
\def\pageprefix{}% prefix for page numbers
\renewcommand\thepage{\pageprefix\arabic{page}}
%\chapter<page prefix>[short title]{title}
\RenewDocumentCommand\chapter{ r<> o m }{%
\IfNoValueTF{#2}{\realchapter{#3}}% without short title
{\realchapter[#2]{#3}}% with short title
\def\pageprefix{#1}\setcounter{page}{1}% reset page counter
}
\begin{document}
\chapter<Pan>{Pancakes}
\Blindtext
\chapter<Om>{Omelettes}
\Blindtext
\chapter<CC>{Carrot cake}
\Blindtext
\end{document}
因此,该\chapter
命令现在有一个强制参数,用于设置页面前缀。语法为:
\chapter<page prefix>[short title]{title}
与命令一样\chapter
,简称是可选的,可以省略。
\thepage
这个想法的另一种变体是将页面标记为 aaa、aab、aac、...、bba、bbb、bbc、... 同样,使用上面的代码可以轻松完成此操作,只需将 的重新定义替换为
\renewcommand\thepage{\pageprefix\alph{page}}