假设我想创建一个课堂文本。进一步假设,作为一名讲师,我想我的文本副本包含大量辅助材料(笔记、练习答案、黑板示例等)。大量的附加材料无法舒适地放在页边空白处,因此我想要做的是在每个部分的末尾添加额外的插入页,这样,如果我从我的文本版本中删除它们,则生成的页面将与学生的版本完全相同(以便页码完全对应)。
这是一个简单的在环境中添加或删除材料的最小工作示例ancillary
:
\documentclass{article}
\usepackage{lipsum}
\usepackage{verbatim}
\newif\ifshowancil \showanciltrue
\ifshowancil
\newenvironment{ancillary}%
{\itshape
\newpage
%And other stuff...
}%
{\newpage
%And other stuff...
}
\else
\newenvironment{ancillary}{\comment}{}
\fi
\begin{document}
\lipsum[1-20]
\begin{ancillary}
\textbf{Here is the beginning.}
\lipsum[21-30]
\textbf{And the end.}
\end{ancillary}
\lipsum[31-40]
\end{document}
我希望anciltrue
版本编译后与ancilfalse
版本相同,但环境中的内容ancillary
排版独立于文档的其余部分,从下一页开始(像浮点数一样),使用“临时”页码(例如,如果它在第 30 页之后,则为 30a、30b 等)。
这样的方案是否可行且不需要太多的劳动?我认为解决方案需要修改输出例程,因此有了这个标签。
答案1
\documentclass{article}
\usepackage{lipsum}
\usepackage{afterpage,environ,pageslts,fancyhdr}
\AtBeginDocument{%
\pagenumbering{arabic}%
}
\pagestyle{fancy}
\renewcommand\headrulewidth{0pt}
\fancyhf{}
\fancyhf[cf]{\thepage}
\fancypagestyle{fancil}{%
\fancyhf{}%
\fancyhf[cf]{\arabic{savepage}(\thepage)}%
}
\newcounter{savepage}
\newif\ifshowancil \showanciltrue
% \showancilfalse
\ifshowancil
\newcommand\saveancil{}%
\environbodyname\envancil
\NewEnviron{ancillary}%
{%
\global\let\saveancil\envancil
\setcounter{savepage}{\thepage}%
\afterpage{%
\pagenumbering{roman}%
\pagestyle{fancil}%
\itshape
\saveancil
\newpage
\pagenumbering{arabic}%
\pagestyle{fancy}%
}%
}
\else
\NewEnviron{ancillary}{}{}
\fi
\begin{document}
\lipsum[1-20]
\begin{ancillary}
\textbf{Here is the beginning.}
\lipsum[21-30]
\textbf{And the end.}
\end{ancillary}
\lipsum[31-40]
\end{document}