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}
What is $1+1$?
\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}
What is $1+1$?
\subsection{Solution}
It is $2$.
\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-oneto
problems:
--- two-plus-twoOne 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.