summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/multenum
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/multenum
Initial commit
Diffstat (limited to 'macros/latex/contrib/multenum')
-rw-r--r--macros/latex/contrib/multenum/README9
-rw-r--r--macros/latex/contrib/multenum/multienum.article428
-rw-r--r--macros/latex/contrib/multenum/multienum.pdfbin0 -> 121680 bytes
-rw-r--r--macros/latex/contrib/multenum/multienum.sample159
-rw-r--r--macros/latex/contrib/multenum/multienum.sty195
5 files changed, 791 insertions, 0 deletions
diff --git a/macros/latex/contrib/multenum/README b/macros/latex/contrib/multenum/README
new file mode 100644
index 0000000000..28b5cfeb9e
--- /dev/null
+++ b/macros/latex/contrib/multenum/README
@@ -0,0 +1,9 @@
+multienum is a package for writing enumerations with several items per
+line, vertically aligned. For example, writing (short) solutions to
+exercises.
+
+The author is Dennis Kletzing, dkletzing (at) cfl (dot) rr (dot) com.
+
+All files in the multienum package are released under the LaTeX Project
+Public License, version 1 or (at your option) any later version.
+
diff --git a/macros/latex/contrib/multenum/multienum.article b/macros/latex/contrib/multenum/multienum.article
new file mode 100644
index 0000000000..75f7f9c069
--- /dev/null
+++ b/macros/latex/contrib/multenum/multienum.article
@@ -0,0 +1,428 @@
+%TUGBoat article A Multienumerate Package
+
+\documentclass{article}
+\usepackage{multicol,multienum}
+\pagestyle{headings}
+\begin{document}
+\title{A Multienumerate Package}
+\author{Dennis Kletzing\\Stetson University} \date{\today}
+\maketitle
+\begin{abstract}
+{\it The {\tt multienum.sty} package allows
+the user to produce an enumerated array of multiple
+columns, each vertically aligned on the counter. An optional
+argument provides for consecutive numbering of the array items,
+or an even-only or odd-only numbering scheme.}
+\end{abstract}
+Typesetting the solutions manual for a text frequently involves creating an
+enumerated list involving many short answers. Typically these are set with
+several items per
+line, with no attempt made to vertically align the exercise numbers. The
+{\tt multienum.sty} package provides an environment, {\tt multienumerate},
+that produces an enumerated array in which columns are vertically aligned
+on the counter. If the user wishes, the enumeration counter can
+ be changed to give a list of even-only numbers or odd-only
+ numbers.
+
+\begin{table}[b]
+\caption{An enumerate array of solutions}
+\parbox[t]{.99\hsize}{%
+\hrule\hrule
+\begin{multienumerate}
+\mitemxxxx{Not}{Linear}{Not}{Quadratic}
+\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
+\mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}}\hrule
+\end{table}
+
+\section*{What the package does}
+Table 1 shows a typical enumerated array. The fourth entry in
+the second row is left blank since the next item is too long to
+fit in space. The third row has only two entries. To get the
+vertical alignment of the counter in column 3, we set row three
+as four entries, but left entry 2 and entry 4 blank thus
+giving more space for the first and third entries. To produce
+the enumerated array shown above, we typed the following:
+
+
+
+
+\begin{verbatim}
+ \begin{multienumerate}
+ \mitemxxxx{Not}{Linear}{Not}{Quadratic}
+ \mitemxxxo{Not}{Linear}{Not}
+ \mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+ $(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+ \mitemx{$(x_1,x_2,x_3,x_4)=
+ (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+ or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+ \mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+ \end{multienumerate}
+\end{verbatim}
+The environment {\tt multienumerate} has an optional argument
+for enumerating even-only or odd-only arrays.\footnote{The
+optional arguments works only in \LaTeX2e.}
+
+\begin{itemize}
+\item \verb|\begin{multienumerate} ... \end{multienumerate}|
+\item[] produces a consecutively enumerated array
+\item \verb|\begin{multienumerate}[evenlist] ...\end{multienumerate}|
+\item[] produces an enumerated array using only even numbers
+\item \verb|\begin{multienumerate}[oddlist] ...\end{multienumerate}|
+\item[] produces an enumerated array using only odd numbers
+\end{itemize}
+
+\section*{Using the package}
+Each row of the enumerated array is set using
+one of the nine commands:
+
+\begin{small}
+\renewcommand{\arraystretch}{1.2}%1.4
+\begin{tabular}{@{}lp{3in}}
+\verb|\mitemx{}|&A single item in the row.\\
+\verb|\mitemxx{}{}|&Two items in the row.\\
+\verb|\mitemxxx{}{}{}|&Three items in the row.\\
+\verb|\mitemxox{}{}|&Three items in the row with the
+center item space left blank so the first item can extend
+into its space.\\
+\verb|\mitemxxo{}{}|&Three items in the row with the last
+item left blank so the second item can extend into
+ its space.\\
+\verb|\mitemxxxx{}{}{}{}|&Four items in the row.\\
+\verb|\mitemxoxx{}{}{}|& Four items in the row with the
+second space left blank so the first item can extend into
+its space.\\
+\verb|\mitemxxox{}{}{}|&Four items in the row with the
+third space left blank so the second item can extend into
+its space.\\
+\verb|\mitemxxxo{}{}{}|&Four items in the row with the
+last space left blank so the third item can extend into
+its space.
+\end{tabular}
+\end{small}
+
+For example, \verb|\mitemxxx{a}{b}{c}| sets three items, a, b, c equally
+spaced across the row; \verb|\mitemxox{a}{c}| sets the two
+items, a and c, across the row {\em as if\/} there were three items, leaving
+the second entry blank so that the first entry can extend into
+its space; and \verb|\mitemxxo{a}{b}| sets the two items, a and
+b, {\em as if\/} there were three items, but leaves the space
+for the third item blank, allowing the second entry to extend
+into its space.
+
+A convenient way to use the multienumerate
+package is with a two column layout using multicols. Page 7
+illustrates a typical page from a solutions manual set in
+two columns format using multicols and multienumerate.
+
+A disadvantage of the package is that the user must choose how
+to typeset each line in the array rather than letting \TeX\
+decide how to do it. This creates a lot of overhead in the
+macro since separate commands are needed for each possibility.
+It is not difficult to write a macro that will let
+ \TeX\ decide how many items to set on each line. This
+approach, while the most efficient, does not always give the
+visual appearance that the user may want.
+
+
+\section{How the package works}
+We illustrate how the package typesets a line
+containing two items. The other
+situations are similar.
+
+\noindent
+\setlength{\unitlength}{1.3pt}
+\begin{picture}(240,50)(0,0)
+
+
+\put(0,0){\framebox(35,10)[b]{\hfill 1.}}
+\put(40,0){\framebox(30,10)[b]{}}
+\put(75,0){\framebox(50,10)[bl]{stuff}}
+
+\put(0,30){\makebox(35,10)[b]{\small
+\texttt{$\backslash$labelwidth}}}
+\put(40,30){\makebox(30,10)[b]{\small
+\texttt{$\backslash$labelsep}}}
+\put(75,30){\makebox(50,10)[b]{\small
+\texttt{$.5\backslash$remainxx}}}
+
+\put(17.5,20){\vector(-1,0){17.5}}
+\put(17.5,20){\vector(1,0){17.5}}
+
+\put(55,20){\vector(-1,0){15}}
+\put(55,20){\vector(1,0){15}}
+
+\put(100,20){\vector(-1,0){25}}
+\put(100,20){\vector(1,0){25}}
+
+\put(147.5,20){\vector(-1,0){17.5}}
+\put(147.5,20){\vector(1,0){17.5}}
+
+\put(185,20){\vector(-1,0){15}}
+\put(185,20){\vector(1,0){15}}
+
+\put(230,20){\vector(-1,0){25}}
+\put(230,20){\vector(1,0){25}}
+
+\put(130,0){\framebox(35,10)[b]{\hfill 2.}}
+\put(170,0){\framebox(30,10)[b]{}}
+\put(205,0){\framebox(50,10)[bl]{stuff}}
+
+\put(130,30){\makebox(35,10)[b]{\small
+\texttt{$\backslash$labelwidth}}}
+\put(170,30){\makebox(30,10)[b]{\small
+\texttt{$\backslash$labelsep}}}
+\put(205,30){\makebox(50,10)[b]{\small
+\texttt{$.5\backslash$remainxx}}}
+\end{picture}
+
+\bigskip
+The total width of the line is then set equal to \verb|\hsize|:
+\[\underbrace{2\texttt{$\backslash$labelwidth}+
+2\texttt{$\backslash$labelsep}}_{\texttt{$\backslash$usedxx}}+
+\texttt{$\backslash$remainxx}=\texttt{$\backslash$hsize}\]
+\[\texttt{$\backslash$remainxx}=
+\texttt{$\backslash$hsize}-
+\texttt{$\backslash$usedxx}\]
+
+\bigskip
+In this way the macro determines the width of each box
+ when two items are typeset on the line.
+
+\section{The macro}
+Here is the package \texttt{multienum.sty}.
+\begin{verbatim}
+\setlength{\hsize}{\textwidth}
+
+%First define new lengths
+
+\newlength{\usedx}
+\newlength{\remainx}
+\newlength{\usedxx}
+\newlength{\remainxx}
+\newlength{\usedxxx}
+\newlength{\remainxxx}
+\newlength{\usedxxxx}
+\newlength{\remainxxxx}
+\newlength{\remainxox}
+\newlength{\remainxoxx}
+
+%Define new item control sequences
+
+\newcommand{\itemx}[1]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep%
+\parbox[t]{\remainx}{\raggedright #1}\smallskip}
+
+\newcommand{\itemxx}[2]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{.5\remainxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.5\remainxx}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxxx}[3]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep%
+\parbox[t]{.3333\remainxxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep%
+\parbox[t]{0.3333\remainxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep%
+\parbox[t]{0.3333\remainxxx}{\raggedright #3}\smallskip}
+
+\newcommand{\itemxxxx}[4]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #4}\smallskip}
+
+\newcommand{\itemxox}[2]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{\remainxox}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.3333\remainxxx}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxxo}[2]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.3333\remainxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{\remainxox}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxoxx}[3]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\smallskip}
+
+\newcommand{\itemxxox}[3]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\smallskip}
+
+\newcommand{\itemxxxo}[3]{\parbox[t]%
+{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill\labelenumi}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #3}\smallskip}
+
+\newcommand{\mitemx}[1]{\item[] \itemx{#1}}
+\newcommand{\mitemxx}[2]{\item[] \itemxx{#1}{#2}}
+\newcommand{\mitemxxx}[3]{\item[] \itemxxx{#1}{#2}{#3}}
+\newcommand{\mitemxox}[2]{\item[] \itemxox{#1}{#2}}
+\newcommand{\mitemxxo}[2]{\item[] \itemxxo{#1}{#2}}
+\newcommand{\mitemxxxx}[4]{\item[] \itemxxxx{#1}{#2}{#3}{#4}}
+\newcommand{\mitemxoxx}[3]{\item[] \itemxoxx{#1}{#2}{#3}}
+\newcommand{\mitemxxox}[3]{\item[] \itemxxox{#1}{#2}{#3}}
+\newcommand{\mitemxxxo}[3]{\item[] \itemxxxo{#1}{#2}{#3}}
+\newcommand{\mitemxxoo}[2]{\item[] \itemxxoo{#1}{#2}}
+
+%Create counter options
+
+\newcommand{\oddlist}{\setcounter{enumi}{-1}
+\renewcommand{\labelenumi}
+{\ifodd\value{enumi}\addtocounter{enumi}{2}%
+\arabic{enumi}.\else
+\addtocounter{enumi}{1}\arabic{enumi}.%
+\addtocounter{enumi}{-2}\fi}}
+
+\newcommand{\evenlist}{\setcounter{enumi}{0}
+\renewcommand{\labelenumi}
+{\ifodd\value{enumi}\addtocounter{enumi}{1}\arabic{enumi}.%
+\addtocounter{enumi}{-2}\else
+\addtocounter{enumi}{2}\arabic{enumi}.\fi}}
+
+\newcommand{\regularlist}{\setcounter{enumi}{0}
+\renewcommand{\labelenumi}
+{\addtocounter{enumi}{1}\arabic{enumi}.}}
+
+\newcommand{\listtype}[1]{#1}
+
+%Create the environment
+
+\newenvironment{multienumerate}[1][\regularlist]{%
+\listtype{#1}
+\begin{trivlist}%
+\setlength{\labelwidth}{18pt}
+\setlength{\labelsep}{5pt}%
+\setlength{\usedx}{\labelwidth}%
+\addtolength{\usedx}{\labelsep}%
+\setlength{\remainx}{\hsize}%
+\addtolength{\remainx}{-\usedx}%
+\setlength{\usedxx}{2\labelwidth}%
+\addtolength{\usedxx}{2\labelsep}%
+\setlength{\remainxx}{\hsize}%
+\addtolength{\remainxx}{-\usedxx}%
+\setlength{\usedxxx}{3\labelwidth}%
+\addtolength{\usedxxx}{3\labelsep}%
+\setlength{\remainxxx}{\hsize}%
+\addtolength{\remainxxx}{-\usedxxx}%
+\setlength{\usedxxxx}{4\labelwidth}%
+\addtolength{\usedxxxx}{4\labelsep}%
+\setlength{\remainxxxx}{\hsize}%
+\addtolength{\remainxxxx}{-\usedxxxx}%
+\setlength{\remainxox}{.666\remainxxx}%
+\addtolength{\remainxox}{\labelwidth}%
+\addtolength{\remainxox}{\labelsep}%
+\setlength{\remainxoxx}{.5\remainxxxx}%
+\addtolength{\remainxoxx}{\labelwidth}%
+\addtolength{\remainxoxx}{\labelsep}%
+\setlength{\itemindent}{0pt}}{\end{trivlist}}
+
+%%End of file `multienum.sty'
+\end{verbatim}
+\pagebreak
+
+\markboth{}{SAMPLE}
+\subsection*{Answers to Even Exercises}
+\begin{multicols}{2}
+\subsection*{Chapter 1}
+\subsection*{Section 1}
+\begin{multienumerate}[evenlist]
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{2}{5}{$-4$}
+\end{multienumerate}
+\subsection*{Section 2}
+\begin{multienumerate}[evenlist]
+\mitemxxo{Yes}{$3x^2+x=-2$}
+\mitemx{If $x=1$, the only solution is $y=3$.}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{Yes}{No}{No}
+\mitemxxx{2}{5}{$-4$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\newsavebox{\diagonal}
+\savebox{\diagonal}{\setlength{\unitlength}{.6pt}
+\begin{picture}(70,70)(0,0)
+\put(0,0){\framebox(70,70){}}
+\put(35,5){\vector(0,1){60}}
+\put(5,35){\vector(1,0){60}}
+\put(10,10){\line(1,1){50}}
+\end{picture}}
+\mitemxx{\vskip0pt\usebox{\diagonal}}{\vskip0pt\usebox{\diagonal }}
+\mitemx{Johnie should sell 3 red marbles, buy 2 white marbles, and keep the
+rest.}
+\mitemx{Sarah should buy 2 pounds of squash, 3 pounds of potatoes, and 4
+pounds of fish.}
+\end{multienumerate}
+\subsection*{Answers to Odd Exercises} \subsection*{Chapter 2}
+\subsection*{Section 1}
+\begin{multienumerate}[oddlist]
+\mitemxxx{Yes}{No}{No}
+\mitemxxxx{3}{5}{2}{$-8$}
+\mitemxxox{7}{$2x-3y=6$}{1}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxox{$x^2-3x+7=0$}{Yes}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{2}{5}{$-4$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{$x=1$}{$y=-7$}{$z=3$}
+\mitemxxx{2}{5}{$-4$}
+\end{multienumerate}
+\end{multicols}
+
+\end{document}
+
+\noindent
+\rule{\hsize}{2pt}
+\begin{multienumerate}
+\mitemxxxx{Not}{Linear}{Not}{Quadratic}
+\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
+\mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}
+\noindent
+\rule{\hsize}{1pt}
+
+
diff --git a/macros/latex/contrib/multenum/multienum.pdf b/macros/latex/contrib/multenum/multienum.pdf
new file mode 100644
index 0000000000..db07cfd96c
--- /dev/null
+++ b/macros/latex/contrib/multenum/multienum.pdf
Binary files differ
diff --git a/macros/latex/contrib/multenum/multienum.sample b/macros/latex/contrib/multenum/multienum.sample
new file mode 100644
index 0000000000..b90f146386
--- /dev/null
+++ b/macros/latex/contrib/multenum/multienum.sample
@@ -0,0 +1,159 @@
+%This is a 2-page sample illustrating how to use the
+%multienum package
+
+\documentclass{article}
+\setlength{\textwidth}{6in}
+\setlength{\textheight}{8.5in}
+\setlength{\topmargin}{-0.5in}
+\setlength{\oddsidemargin}{0.25in}
+\usepackage{multicol,multienum}
+
+
+
+\begin{document}
+\begin{center}
+{\Large\bf Sample formating using {\tt multienumerate}}
+\end{center}
+
+\bigskip
+Sometimes we want to typeset the solutions to exercises. This
+is easy to do using the {\tt multienumerate} environment.
+\subsection*{Answers to All Exercises}
+\begin{multienumerate}
+\mitemxxxx{Not}{Linear}{Not}{Quadratic}
+\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
+\mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}
+
+
+\bigskip
+\hrule
+
+\bigskip
+
+We can also enumerate the items using an even-only or odd only
+counter.
+\subsection*{Answers to Even-Numbered Exercises}
+\begin{multienumerate}[evenlist]
+\mitemxxxx{Not}{Linear}{Not}{Quadratic}
+\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
+\mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}
+
+\hrule
+
+\subsection*{Answers to Odd-Numbered Exercises}
+\begin{multienumerate}[oddlist]
+\mitemxxxx{Not}{Linear}{Not}{Quadratic}
+\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
+\mitemxx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxxxx{$(2,-1,3)$}{None}{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}
+
+\bigskip
+\hrule
+
+\bigskip
+
+Sometimes we want to create sublists which are
+enumerated using an alpha counter.
+
+\begin{multienumerate}
+\mitemx{Which of the following numbers is the solution of the
+equation
+$x+3=7$:}
+\begin{multienumerate}
+\mitemxxxx{1}{2}{3}{4}
+\end{multienumerate}
+\mitemx{The value of $\log_28$ is:}
+\begin{multienumerate}
+\mitemxxxx{1}{$-1$}{3}{$-3$}
+\end{multienumerate}
+\end{multienumerate}
+\pagebreak
+
+\begin{multicols}{2}
+\subsection*{Answers to All Exercises}
+\begin{multienumerate}
+\mitemxx{Not}{Linear}
+\mitemxx{Not}{Quadratic}
+\mitemxx{Not}{Linear}
+\mitemx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}
+\mitemx{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxx{$(2,-1,3)$}{None}
+\mitemxx{$(2,1,0,1)$}{$(0,0,0,0)$}
+\mitemxx{Not}{Linear}
+\mitemxx{Not}{Quadratic}
+\mitemxx{Not}{Linear}
+\mitemx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}
+\mitemx{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxx{$(2,-1,3)$}{None}
+\mitemxx{$(2,1,0,1)$}{$(0,0,0,0)$}
+\mitemxx{Not}{Linear}
+\mitemxx{Not}{Quadratic}
+\mitemxx{Not}{Linear}
+\mitemx{$(x_1,x_2)=(2+\frac{1}{3}t,t)$ or
+$(s,3s-6)$}
+\mitemx{$(x_1,x_2,x_3)=(2+\frac{5}{2}s-3t,s,t)$}
+\mitemx{$(x_1,x_2,x_3,x_4)= (\frac{1}{4}+\frac{5}{4}s+\frac{3}{4}t-u,s,t,u)$
+or $(s,t,u,\frac{1}{4}-s+\frac{5}{4}t+\frac{3}{4}u)$}
+\mitemxx{$(2,-1,3)$}{None}
+\mitemxx{$(2,1,0,1)$}{$(0,0,0,0)$}
+\end{multienumerate}
+
+\subsection*{Multiple Choice}
+\begin{multienumerate}
+\mitemx{Which of the following numbers is the solution of the
+equation
+$x+3=7$:}
+\begin{multienumerate}
+\mitemxxxx{1}{2}{3}{4}
+\end{multienumerate}
+\mitemx{The value of $\log_28$ is:}
+\begin{multienumerate}
+\mitemxxxx{1}{$-1$}{3}{$-3$}
+\end{multienumerate}
+\mitemx{Which of the following numbers is the solution of the
+equation
+$x+3=7$:}
+\begin{multienumerate}
+\mitemxxxx{1}{2}{3}{4}
+\end{multienumerate}
+\mitemx{The value of $\log_28$ is:}
+\begin{multienumerate}
+\mitemxxxx{1}{$-1$}{3}{$-3$}
+\end{multienumerate}
+\mitemx{Which of the following numbers is the solution of the
+equation
+$x+3=7$:}
+\begin{multienumerate}
+\mitemxxxx{1}{2}{3}{4}
+\end{multienumerate}
+\mitemx{The value of $\log_28$ is:}
+\begin{multienumerate}
+\mitemxxxx{1}{$-1$}{3}{$-3$}
+\end{multienumerate}
+\end{multienumerate}
+\end{multicols}
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/multenum/multienum.sty b/macros/latex/contrib/multenum/multienum.sty
new file mode 100644
index 0000000000..4ff57bf1cd
--- /dev/null
+++ b/macros/latex/contrib/multenum/multienum.sty
@@ -0,0 +1,195 @@
+%%This is package multienum.sty
+%%Dennis Kletzing
+%%Stetson University
+%%kletzing@totcon.com
+
+\setlength{\hsize}{\textwidth}
+
+\newlength{\usedx}
+\newlength{\remainx}
+\newlength{\usedxx}
+\newlength{\remainxx}
+\newlength{\usedxxx}
+\newlength{\remainxxx}
+\newlength{\usedxxxx}
+\newlength{\remainxxxx}
+\newlength{\remainxox}
+\newlength{\remainxoxx}
+\newlength{\remainxxxxx}
+\newlength{\usedxxxxx}
+
+\newcommand{\labelname}{\csname
+labelenum\romannumeral\themultienumdepth\endcsname}
+
+\newcommand{\itemx}[1]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep%
+\parbox[t]{\remainx}{\raggedright #1}\par}%\smallskip
+
+\newcommand{\itemxx}[2]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{.5\remainxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.5\remainxx}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxxx}[3]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep%
+\parbox[t]{.3333\remainxxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill {\labelname}}\hskip\labelsep%
+\parbox[t]{0.3333\remainxxx}{\raggedright #2}\hfill\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep%
+\parbox[t]{0.3333\remainxxx}{\raggedright #3}\par}%\smallskip
+
+\newcommand{\itemxxxx}[4]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #4}\smallskip}
+
+
+\newcommand{\itemxxxxx}[5]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.2\remainxxxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.2\remainxxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.2\remainxxxxx}{\raggedright #3}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.2\remainxxxxx}{\raggedright #4}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.2\remainxxxxx}{\raggedright #5}\smallskip}
+
+
+\newcommand{\itemxox}[2]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{\remainxox}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.3333\remainxxx}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxxo}[2]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.3333\remainxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{\remainxox}{\raggedright #2}\smallskip}
+
+\newcommand{\itemxoxx}[3]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\smallskip}
+
+\newcommand{\itemxxox}[3]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{0.25\remainxxxx}{\raggedright #3}\smallskip}
+
+\newcommand{\itemxxxo}[3]{\parbox[t]%
+{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #1}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{.25\remainxxxx}{\raggedright #2}\hfill%
+\parbox[t]{\labelwidth}{\hfill{\labelname}}\hskip\labelsep
+\parbox[t]{\remainxoxx}{\raggedright #3}\smallskip}
+
+
+\newcommand{\oddlisti}{\setcounter{multienumi}{-1}\renewcommand{\labelenumi}
+{\ifodd\value{multienumi}\addtocounter{multienumi}{2}\themultienumi.\else
+\addtocounter{multienumi}{1}\themultienumi.\addtocounter{multienumi}{-2}\fi}}
+
+
+\newcommand{\evenlisti}{\setcounter{multienumi}{0}
+\renewcommand{\labelenumi}
+{\ifodd\value{multienumi}\addtocounter{multienumi}{1}\themultienumi.\addtocounte
+r{multienumi}{-2}\else
+\addtocounter{multienumi}{2}\themultienumi.\fi}}
+
+
+\newcommand{\regularlisti}{\setcounter{multienumi}{0}%
+\renewcommand{\labelenumi}
+{\addtocounter{multienumi}{1}\arabic{multienumi}.}}
+
+\newcommand{\regularlistii}{\setcounter{multienumii}{0}%
+\renewcommand{\labelenumii}
+{\addtocounter{multienumii}{1}(\alph{multienumii})}}%\alph{multienumii}.
+
+\newcommand{\regularlistiii}{\setcounter{multienumiii}{0}%
+\renewcommand{\labelenumiii}
+{\addtocounter{multienumiii}{1}\alph{multienumiii}.}}
+
+\newcommand{\mitemx}[1]{\item[] \itemx{#1}}
+\newcommand{\mitemxx}[2]{\item[] \itemxx{#1}{#2}}
+\newcommand{\mitemxxx}[3]{\item[] \itemxxx{#1}{#2}{#3}}
+\newcommand{\mitemxox}[2]{\item[] \itemxox{#1}{#2}}
+\newcommand{\mitemxxo}[2]{\item[] \itemxxo{#1}{#2}}
+\newcommand{\mitemxxxx}[4]{\item[] \itemxxxx{#1}{#2}{#3}{#4}}
+\newcommand{\mitemxoxx}[3]{\item[] \itemxoxx{#1}{#2}{#3}}
+\newcommand{\mitemxxox}[3]{\item[] \itemxxox{#1}{#2}{#3}}
+\newcommand{\mitemxxxo}[3]{\item[] \itemxxxo{#1}{#2}{#3}}
+\newcommand{\mitemxxoo}[2]{\item[] \itemxxoo{#1}{#2}}
+\newcommand{\mitemxxxxx}[5]{\item[] \itemxxxxx{#1}{#2}{#3}{#4}{#5}}
+
+\newcounter{multienumdepth}
+\setcounter{multienumdepth}{0}
+
+\newcounter{multienum}
+\newcounter{multienumi}
+\newcounter{multienumii}
+\newcounter{multienumiii}
+\newcounter{multienumiv}
+
+\newcommand{\listtype}[1]{#1}
+
+\newenvironment{multienumerate}[1][regularlist]{%
+\ifnum \themultienumdepth >3 \@toodeep\else%
+ \addtocounter{multienumdepth}{1}%
+ \edef\@multienumctr{multienum\romannumeral\themultienumdepth}%
+ {\csname label\@multienumctr\endcsname}{\usecounter%
+ {\@multienumctr}}%
+\listtype{\csname #1\romannumeral\themultienumdepth\endcsname}\fi%
+\begin{list}{}{%
+\ifnum\themultienumdepth=2 \setlength{\leftmargin}{25pt}\else %was 23pt
+\setlength{\leftmargin}{0pt} \fi% was 0pt
+\setlength{\labelwidth}{20pt}\setlength{\labelsep}{5pt}%was18pt
+\setlength{\usedx}{\labelwidth}%
+\addtolength{\usedx}{\labelsep}%
+\addtolength{\usedx}{\leftmargin}%
+\setlength{\remainx}{\hsize}%
+\addtolength{\remainx}{-\usedx}%
+\setlength{\usedxx}{2\labelwidth}%
+\addtolength{\usedxx}{2\labelsep}%
+\addtolength{\usedxx}{\leftmargin}%
+\setlength{\remainxx}{\hsize}%
+\addtolength{\remainxx}{-\usedxx}%
+\setlength{\usedxxx}{3\labelwidth}%
+\addtolength{\usedxxx}{3\labelsep}%
+\addtolength{\usedxxx}{\leftmargin}%
+\setlength{\remainxxx}{\hsize}%
+\addtolength{\remainxxx}{-\usedxxx}%
+\setlength{\usedxxxx}{4\labelwidth}%
+\addtolength{\usedxxxx}{4\labelsep}%
+\addtolength{\usedxxxx}{\leftmargin}%
+\setlength{\remainxxxx}{\hsize}%
+\addtolength{\remainxxxx}{-\usedxxxx}%
+\setlength{\remainxox}{.666\remainxxx}%
+\addtolength{\remainxox}{\labelwidth}%
+\addtolength{\remainxox}{\labelsep}%
+\setlength{\remainxoxx}{.5\remainxxxx}%
+\addtolength{\remainxoxx}{\labelwidth}%
+\addtolength{\remainxoxx}{\labelsep}%
+\setlength{\usedxxxxx}{5\labelwidth}%
+\addtolength{\usedxxxxx}{5\labelsep}%
+\addtolength{\usedxxxxx}{\leftmargin}%
+\setlength{\remainxxxxx}{\hsize}%
+\addtolength{\remainxxxxx}{-\usedxxxxx}%
+\setlength{\itemindent}{0pt}}}{\addtocounter{multienumdepth}{-1}\end{list}}
+
+
+