Why mapm?
In the vein of why latexmk I will explain why I wrote mapm in the first place. That way, when you know what annoyed me enough to finally write this software, you will have a good idea as to what it does.
When you are writing a math contest, you typically have
problems.tex
:
\documentclass{article}
\begin{document}
\section{Problem 1}
$1+1$?
What is \end{document}
and solutions.tex
, which typically contains an answer
key as well:
\documentclass{article}
\begin{document}
\section{Answers}
\begin{enumerate}
\item $2$
\end{enumerate}
\section{Problem 1}
$1+1$?
What is
\subsection{Solution}
$2$.
It is \end{document}
Let’s say you want to change problem 1. Then you have to edit the
problem in problems.tex
and solutions.tex
, as
well as the answer and solution in solutions.tex
. That is
four places you have to update. And it gets even worse if you want to
switch two problems: that’s 8 updates. And what if you want to move
everything down one slot, because your current contest is too hard? So
on and so forth.
So you either have two choices: get lazy and do a sloppy job because editing a draft takes forever, even though you know exactly what you want to put in, or use software that handles compilation for you given a set of problems. I really care about the quality of my contests, so I choose the latter.
With mapm, all you have to do is the following: change
problems:
--- one-plus-one
to
problems:
--- two-plus-two
One change is one change. That’s how it ought to be. The rest of the
spec involves telling mapm how to determine what problem
one-plus-one
refers to, and how to properly build a
contest. Once you think about it that way, it is very obvious what mapm
does.