在为我的学生准备教科书时,我想让偶数页有条不紊地留空或划线,以便让他们在这些页面上写下他们的评论或自己的作品。最后,我给出了用于制作 3 页的程序,即“手工制作”。
我想创建一个宏,对文档的所有页面执行相同的操作。例如,文档的表达式(如大方程式或可拆分框)要从一页延续到另一页,tcolorbox
必须从奇数页拆分到奇数页,并在其间插入 DashedPage。有什么想法吗?例如,软件包是否everypage
执行此类操作?
\documentclass{article}
\usepackage{multido}
\newcommand{\DottedLines}[2][1.5]{% %% THE #1 ARGUMENT (MULTIPLE OF BASELINESKIP) IS OPTIONAL THE DEFAULT IS 1.5
\par\nobreak
\noindent\rule{0pt}{1.5\baselineskip}
\multido{}{#2}{\noindent\makebox[\linewidth]{\rule{0pt}{#1\baselineskip}\dotfill}\\}}
\def\DashedPage{\newpage\DottedLines[2.5]{15}\newpage}
\begin{document}
A first page
\DashedPage
A second page
\end{document}
答案1
对评论页面进行编号(请参阅下面的替代方法):
在中创建基线文档几乎正常方式。唯一的怪癖是让它以 2 为单位对每页进行编号,从 开始1
。以下是lipsum30.tex
:
\documentclass{article}
\usepackage{lipsum}
\renewcommand\thepage{\the\numexpr\value{page}+\value{page}-1\relax}
\begin{document}
\lipsum[1-30]
\end{document}
创建一个 6 页的文件lipsum30.pdf
,页码为 1、3、5、7、9、11。
lipsum30.pdf
一旦创建了基线文档(此处):
\documentclass{article}
\usepackage{everypage}
\usepackage{graphicx}
% THESE ARE LaTeX DEFAULTS; CAN CHANGE IF NEEDED.
\def\PageTopMargin{1in}
\def\PageLeftMargin{1in}
\newcommand\atxy[3]{%
\AddThispageHook{\smash{\hspace*{\dimexpr-\PageLeftMargin-\hoffset+#1\relax}%
\raisebox{\dimexpr\PageTopMargin+\voffset-#2\relax}{\textcolor{red}{#3}}}}}
% VERIFIED THAT SETTING \hoffset AND \voffset DO NOT BREAK SOLUTION.
%\hoffset=0.4in
%\voffset=0.2in
\usepackage{pgffor,pdfpages}
\begin{document}
\foreach\x in {1,...,6}{
\includepdf[pages=\x]{lipsum30.pdf}
\atxy{0in}{\paperheight}{\includegraphics[height=\paperheight]{lined-paper-template-9898}}
\vspace*{-1.2in}\noindent\hspace{-45pt}%
\Huge \underline{Your comments for page \the\numexpr\x+\x-1\relax:}
}
\end{document}
页码注释
如果不想在评论页上进行编号,而是将奇数页(文档)连续编号为 1-6,则只需消除\thepage
基础文档中的重新定义,并在拼接文档中设置\pagestyle{empty}
。如果您通过编号引用页面,就像我在评论页上所做的那样,您也需要修改它,以反映新的编号方案:\Huge \underline{Your comments for page \x:}
。
文件lined-paper-template-9898.jpg
位于http://www.wordmstemplates.com/wp-content/uploads/2015/08/lined-paper-template-9898.jpg。如果您不喜欢这种形式的纸张定线,请选择其他图像,或者只需在循环中设置您自己的页面定线pgffor
。
答案2
尽管已经有了一个可以接受的答案,但这里还有另一种方法。
警告:
因为这使用了afterpage
,所以它不适用于twocolumn
文档,并且不够健壮,即它可能很容易损坏。
这也意味着,虽然 Steven B. Segletes 的答案会起作用,但这个答案可能不起作用。
此解决方案不需要pdfpages
。相反,最终结果来自一个来源。它还具有其他功能:可以在文档中更改注释页面的外观,并且可以隐藏注释页面。
有三个命令:
\EverySecondPage{...}
开始添加评论页面。此命令在文档中只允许使用一次,并且不能放在环境中!后者是必要的,因为某些环境可能会多次扩展其内容。参数是一个命令,它生成一个评论页面,例如\DashedPage
。
\ChangeEverySecondPage{...}
可以通过向其传递不同的命令来改变评论页面的外观。
\NomoreEverySecondPage
禁用添加评论页面。要重新启用它们,\ChangeEverySecondPage{...}
必须使用。
命令从 TeX 首次扩展的页面开始生效。这意味着,如果 TeX 决定将页面上读取的内容移动到n转到下一页,可能看起来好像命令生效得太早。即,文档中命令出现的位置位于第n+2,但它的效果已经可以在评论页面看到了n+1。因此可能需要将命令向上或向下移动一个段落。
例如,命令可以在tcolorbox
环境内部使用。但是它的效果将从环境启动的页面开始可见,因为tcolorbox
(据我所知)在给出任何内容之前会读取其全部内容。这同样适用于许多其他环境。
设置评论页面的命令应该在序言中定义,因此\EverySecondPage
只需\ChangeEverySecondPage
获取一个简单的命令作为参数。
以下是代码:
\documentclass[a4paper]{article}
\usepackage[breakable]{tcolorbox}
\usepackage{notespages}
\usepackage{multido}
\usepackage{afterpage}
\usepackage{lipsum}
\newcommand{\DottedLines}[2][1.5]{% %% THE #1 ARGUMENT (MULTIPLE OF BASELINESKIP) IS OPTIONAL THE DEFAULT IS 1.5
\par\nobreak
\noindent\rule{0pt}{1.5\baselineskip}% <- added to remove spurious space
\multido{}{#2}{\noindent\makebox[\linewidth]{\rule{0pt}{#1\baselineskip}\dotfill}\\}}
\def\DashedPage{\newpage\DottedLines[2.5]{15}\newpage}
\makeatletter
% set initial contents for second pages and start it
% only to be called once!
\newcommand{\EverySecondPage}[1]{\gdef\@esp@content{#1}\@everysecondpage}
% to change the contents for second pages
\newcommand{\ChangeEverySecondPage}[1]{\gdef\@esp@content{#1}}
% suppress subsequent second pages
\newcommand{\NomoreEverySecondPage}{\global\let\@esp@content\relax}
% internal macro
\newcommand{\@everysecondpage}{\afterpage{\@esp@content\@everysecondpage}}
% necessary, otherwhise there will be two pages at the end
\AtEndDocument{\NomoreEverySecondPage}
\makeatother
\begin{document}
\EverySecondPage{\DashedPage}
\lipsum[1-12]
\ChangeEverySecondPage{\notespage[notesstyle=lines,vparts=25,titletext={Your comments:}]}
\lipsum[13-25]
\NomoreEverySecondPage
\begin{tcolorbox}[title=Just a test,breakable]
\lipsum[1-10]
\end{tcolorbox}
\ChangeEverySecondPage{\notespage[hparts=20,titletext={Your comments:}]}
\begin{tcolorbox}[title=And another test,breakable]
\lipsum[11-20]
\end{tcolorbox}
\end{document}
结果如下: