如何创建跨两页的表格环境?

如何创建跨两页的表格环境?

我想制作一本教师的课程计划书。(你知道这个故事:我从来没有找到我喜欢的,所以我想自己制作一本。)为此,我需要一个跨越两页的计划网格,顶部标有星期几;我需要四十个这样的跨页,每个跨页对应一个学校日历。到目前为止,我有以下内容:

\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}

这样我就得到了一个跨两页的网格。我该如何将其变成一本计划书?我看到至少两个子问题:

  1. 我如何将网格分成两个信纸大小的页面,以便我可以给复印店一份信纸大小的书的 PDF 来打印?(我确实找到了这个答案,但我认为将表格放入图像中然后再分割图像可能有点过头了。或者这是最好的解决方案?)
  2. 除了复制粘贴网格四十次之外,还有什么更好的方法来构建整本书吗?我可以使用另一个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}

相关内容