我想制作一本教师的课程计划书。(你知道这个故事:我从来没有找到我喜欢的,所以我想自己制作一本。)为此,我需要一个跨越两页的计划网格,顶部标有星期几;我需要四十个这样的跨页,每个跨页对应一个学校日历。到目前为止,我有以下内容:
\documentclass{memoir}
\usepackage[paperwidth=17in,paperheight=11in,left=0pt,right=0pt,top=1cm,bottom=1cm]{geometry}
\usepackage{forloop}
\usepackage{tabularx}
\usepackage{changepage}
\newcommand{\aline}{\\\hline &&&&&&\rule{0cm}{5cm}}
\begin{document}
\pagenumbering{gobble}
\newcounter{theyflines}
\begin{adjustwidth}{2in}{}
Week of \makebox[1in]{\dotfill} to \makebox[1in]{\dotfill}
\end{adjustwidth}
\vspace{5mm}
\noindent \begin{tabularx}{\paperwidth}{p{2cm}|p{5cm}|X|X|X|X|X}
\hline
Course & Weekly goal & Monday & Tuesday & Wednesday & Thursday & Friday
\forloop{theyflines}{1}{\value{theyflines} < 5}{\aline}\\
\hline
&&&&&&\rule{0cm}{2cm}\\
\hline
\end{tabularx}
\end{document}
这样我就得到了一个跨两页的网格。我该如何将其变成一本计划书?我看到至少两个子问题:
- 我如何将网格分成两个信纸大小的页面,以便我可以给复印店一份信纸大小的书的 PDF 来打印?(我确实找到了这个答案,但我认为将表格放入图像中然后再分割图像可能有点过头了。或者这是最好的解决方案?)
- 除了复制粘贴网格四十次之外,还有什么更好的方法来构建整本书吗?我可以使用另一个
forloop
,但这不会弄乱第 1 项中所需的页面划分吗?
答案1
此解决方案创建了一个双页 savebox,并使用 adjustbox 一次只显示一半。为了使每页的列数为偶数,我需要计算第二列的宽度,这需要计算 X 列的宽度,这使得 tabularx 变得多余。
\documentclass[letter]{memoir}
\usepackage[left=0pt,right=0pt,top=1cm,bottom=1cm]{geometry}
\usepackage{forloop}
\usepackage{adjustbox}
\newcommand{\aline}{\\\hline &&&&&&\rule{0cm}{5cm}}
\newcounter{theyflines}
\pagestyle{empty}
\parindent=0pt
\newsavebox{\tempbox}
\newlength{\pwidth}
\newlength{\spwidth}
\setlength{\pwidth}{\dimexpr \textwidth-6\tabcolsep-4\arrayrulewidth}%
\divide\pwidth by 3
\setlength{\spwidth}{\dimexpr \pwidth-2cm-2\tabcolsep-\arrayrulewidth}%
\savebox{\tempbox}{% fit 3 columns into \textwidth
\begin{tabular}{p{2cm}|p{\spwidth}|p{\pwidth}|p{\pwidth}|p{\pwidth}|p{\pwidth}|p{\pwidth}|}
\hline
Course & Weekly goal & Monday & Tuesday & Wednesday & Thursday & Friday
\forloop{theyflines}{1}{\value{theyflines} < 5}{\aline}\\
\hline
&&&&&&\rule{0cm}{2cm}\\
\hline
\end{tabular}}
\begin{document}
\hspace{2cm}Week of \makebox[1in]{\dotfill} to \makebox[1in]{\dotfill}\par
\vspace{\fill}%
\adjustbox{clip=true,trim=0pt 0pt {\textwidth} 0pt}{\usebox\tempbox}
\pagebreak\vspace*{\fill}%
\adjustbox{clip=true,trim={\textwidth} 0pt 0pt 0pt}{\usebox\tempbox}
\end{document}