6

So I am looking to create a standardized test with math questions going down the left side of page with space for figuring on the right side of page. My goal is to get code that is clean, where I would not have to break the text for each page. Here is a sample image of what I am trying to do.

If I were to use multicols environment, I would have to break the text every four questions and restart on each page. Is there an easier way to do this? Will a longtable work where I could fill the left cell with all the questions, and have the heading "USE THIS SPACE FOR FIGURING" on each page? Or maybe a absolute positioned node?

enter image description here

MWE:

\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[bmargin=1in]{geometry}


%---------          Preamble
\newsavebox{\fmbox}
\newenvironment{fmpage}[1]
{\begin{lrbox}{\fmbox}\begin{minipage}{#1}}
{\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} %

\newcommand{\psechead}[1]
              {\vspace*{1in}
              {\noindent
              {\center 
              {\textbf{#1}}}}}


%---------          Document
\begin{document}
\psechead{SECTION 2 \\ Time - 35 Minutes \\ 37 Questions \\}



%---------          Directions

\begin{fmpage}{\textwidth}
\underline{\textbf{Directions:}} In this section there are four possible answers after each question. Choose which one is best. You may use the blank space at the right of the page for figuring problems.

\medskip

\underline{\textbf{Note:}} Figures are not drawn to scale.
\end{fmpage}

%---------          Questions

\end{document}
1
  • What's wrong with using a custom environment based on minipages?
    – jon
    Feb 21, 2014 at 4:11

2 Answers 2

7

You can try the paracol package instead of multicol.

In this way you can write all your questions on the first column and then, after issuing

\switchcolumn

you can start writing the code for each page in the second column, for example

{\hfill USE THIS SPACE FOR FIGURING}\vfill{\hfill\small GO ON THE NEXT PAGE}

for all pages and

{\hfill USE THIS SPACE FOR FIGURING}

for the last page.

MWE (note that I've slightly modified your fmpage environment so to not overflow the right margin):

\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{lipsum}
\usepackage{paracol}
\usepackage[bmargin=1in]{geometry}


%---------          Preamble
\newsavebox{\fmbox}
\newenvironment{fmpage}[1]
{\noindent\begin{lrbox}{\fmbox}\begin{minipage}{\dimexpr#1-2\fboxrule-2\fboxsep}}
{\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}\vspace*{.2in}} %

\newcommand{\psechead}[1]
              {\vspace*{1in}
              {\noindent
              {\centering
              {\textbf{#1}}}}}


%---------          Document
\begin{document}
\psechead{SECTION 2 \\ Time - 35 Minutes \\ 37 Questions \\}



%---------          Directions

\begin{fmpage}{\textwidth}
\underline{\textbf{Directions:}} In this section there are four possible answers after each question. Choose which one is best. You may use the blank space at the right of the page for figuring problems.

\medskip

\underline{\textbf{Note:}} Figures are not drawn to scale.
\end{fmpage}

%---------          Questions
\begin{paracol}{2}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\newpage
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\newpage
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}
\begin{enumerate}
    \item This is a question. Choose the appropriate answer.
      \begin{enumerate}
        \item Answer.
        \item Answer.
        \item Answer.
        \item Answer.
      \end{enumerate}
\end{enumerate}

\switchcolumn

\vspace*{\baselineskip}
{\hfill USE THIS SPACE FOR FIGURING}\vfill{\hfill\small GO ON THE NEXT PAGE}
\newpage
{\hfill USE THIS SPACE FOR FIGURING}\vfill{\hfill\small GO ON THE NEXT PAGE}
\newpage
{\hfill USE THIS SPACE FOR FIGURING}
\end{paracol}

\end{document} 

Output:

enter image description here

3

I was curious about whether this could be done with flowfram. This is much better than the crude use of longtable I used before. (Whether or not it has anything to be said for it in light of karkoeller's answer, I leave as an exercise for the reader.)

flowfram allows you to basically break up the body of the document into different frames and to specify how text should flow (or not flow) through them. What we'd essentially like in this case is to have a special frame on the first page for the exam header and instructions, a frame on the left where the questions can flow from page to page, and a frame on the right which contains just the standard instruction to use the space for calculations. After the first page, we don't need the special heading so we just want two frames taking the full height of text.

So basically, we need to define 5 frames:

  1. examhead: a static frame which will appear only on the first page;
  2. firstqns: a flow frame for the first page which doesn't eat into the heading;
  3. firstfiguring: a static frame for the first page which doesn't eat the heading and which text can't flow into unless we put it there;
  4. mainqns: a flow frame for all later pages which questions can flow through;
  5. mainfiguring: a static frame for all later pages which text can't flow into unless we put it there.

Note that because text flows through the frames on the left, you have to prevent questions breaking across pages if you don't want that. I've indicated how to do so using a commented call to \framebreak below.

Here's the result:

Examination with <code>flowfram</code>

Here's the code:

\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{kantlipsum}
\usepackage[bmargin=1in]{geometry}
\usepackage{enumitem}
\setlist[enumerate,1]{labelindent=0em,align=left,label=\arabic*.}
\setlist[enumerate,2]{label=(\Alph*)}
\usepackage{flowfram}
\newstaticframe[1]{\textwidth}{.25\textheight}{0pt}{.8\textheight}[examhead]
\newflowframe[1]{.5\textwidth}{.75\textheight}{0pt}{0pt}[firstqns]
\newflowframe[>1]{.5\textwidth}{\textheight}{0pt}{0pt}[mainqns]
\newstaticframe[1]{.5\textwidth}{.75\textheight}{.5\textwidth}{0pt}[firstfiguring]
\newstaticframe[>1]{.5\textwidth}{\textheight}{.5\textwidth}{0pt}[mainfiguring]
\setstaticcontents*{firstfiguring}{%
   \centering USE THIS SPACE FOR FIGURING.\vspace*{\fill} }
\setstaticcontents*{mainfiguring}{ \centering USE THIS SPACE FOR FIGURING.\vspace*{\fill} }
\makeoddfoot{headings}{}{}{CONTINUED ON NEXT PAGE.}
\makeevenfoot{headings}{}{}{CONTINUED ON NEXT PAGE.}

%---------          Preamble
\newsavebox{\fmbox}
\newenvironment{fmpage}[1]
{\begin{lrbox}{\fmbox}\begin{minipage}{#1}}
{\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} %

\newcommand{\psechead}[1]
              {\vspace*{1in}
              {\noindent
              {\center
              {\textbf{#1}}}}}

\begin{staticcontents*}{examhead}

\psechead{SECTION 2 \\ Time - 35 Minutes \\ 37 Questions \\}

\begin{fmpage}{\textwidth}
\underline{\textbf{Directions:}} In this section there are four possible answers after each question. Choose which one is best. You may use the blank space at the right of the page for figuring problems.

\medskip

\underline{\textbf{Note:}} Figures are not drawn to scale.
\end{fmpage}
\end{staticcontents*}



%---------          Document
\begin{document}

%---------          Questions
\raggedright
\begin{enumerate}[series=myqns]
  \item This is the first question. It is about aardvarks and shampoo.
    \begin{enumerate}
      \item This is an answer.
      \item This answer is wrong.
      \item This answer is weird.
      \item This answer is just like the others.
    \end{enumerate}
   \item This is the second question. This question needs no answer.
     \begin{enumerate}
       \item This answer needs no question.
       \item This answer needs a particular question.
       \item This answer needs a pedantic question.
       \item This answer needs no question today.
      \end{enumerate}
   \item This is the fourth question. This question needs a new home.
     \begin{enumerate}
       \item This answer needs happy question.
       \item This answer needs a great question.
       \item This answer needs furry question.
       \item This answer needs sad question.
      \end{enumerate}
   \item This is the third question. It is misplaced and has wandered.
     \begin{enumerate}
       \item This answer needs a question.
       \item This answer needs some question.
       \item This answer needs no question.
       \item This answer needs any question.
      \end{enumerate}
%     \framebreak% uncomment this if you don't want the next question broken across pages
   \item This is the fifth question. This question needs no answer.
     \begin{enumerate}
       \item This answer needs a better question.
       \item This answer needs every question.
       \item This answer needs nobody's question.
       \item This answer needs someone's question.
      \end{enumerate}
    \item \kant[1-2]
     \begin{enumerate}
       \item Kant.
       \item Not Kant.
       \item Maybe Kant.
       \item Who's Kant?
      \end{enumerate}
\end{enumerate}
\makeoddfoot{headings}{}{}{}% we don't want continuation text on the last page whether it is odd or even!
\makeevenfoot{headings}{}{}{}

\end{document}

One advantage of this is that you don't need to know how many pages there are or to break the pages manually (if you don't mind the questions breaking across pages). And you don't have to worry about putting the USE SPACE... instruction on every page - you just set it up once for page 1 and once for all-pages-after-page-1 and forget about it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .