\title{On specialist typesetting packages} \author[David Murphy]{David Murphy\\University of Birmingham} \begin{article} \makeatletter \input diag.sty \makeatother \special{header=pspic.pro} \setlength{\diagramcellsize}{8em} \noindent Over the last two years I have been involved in the development of a commuting diagrams package for \LaTeX. This article is based on my experience of that work. It is meant neither to be read as distilled wisdom, nor as a provocation, but rather as a basis for discussion of the kinds of packages users `should' be provided with. \section*{Introduction} Some of my work uses category theory: this is a branch of mathematics which makes extensive use of commuting diagrams, Figure~\ref{symmoncoh} being a typical example. \begin{figure*} \centering \begin{diagram*}(1.6,1.75)(-1.2,-0.05) %(-0.8,-0.05) \object(0,0){(A \otimes B) \otimes (C \otimes D)} \object(0.809017,0.587785){((A \otimes B) \otimes C) \otimes D} \rightobject(0.5,1.538841){(A \otimes (B \otimes C)) \otimes D} \leftobject(-0.5,1.538841){A \otimes ((B \otimes C) \otimes D)} \object(-0.809017,0.587785){A \otimes (B \otimes (C \otimes D))} \Farrow(-0.4, 1.538779)( 0.4, 1.538779) \Farrow( 0.080902,0.058778)( 0.728116,0.529006) \Farrow(-0.728116,0.529006)(-0.080901,0.058778) \Farrow( 0.530901,1.443736)( 0.778116,0.682891) \Farrow(-0.530901,1.443736)(-0.778116,0.682891) \end{diagram*} \caption{Coherence for monoidal categories} \label{symmoncoh} \end{figure*} There are various commuting diagrams packages available to \TeX~and \LaTeX\ users; both Michael Barr (McGill Unversity) and Paul Taylor (Imperial College) distribute popular ones. However, all popular current packages use \TeX 's \verb"line" founts, so it is impossible to achieve a diagram with pentagonal symmetry such as Figure~\ref{symmoncoh}. Furthermore, both Barr's and Taylor's packages share what is, I find, a common problem amongst \TeX~shareware, namely that easy things are easy to achieve, but difficult things, such as Figure~\ref{twocat}, require an intimate knowledge of the package's workings. Indeed, I was spurred to work on my own diagram macros by my inability to understand Taylor's code or to obtain the diagram I wanted from his package. I was very lucky in finding a solid base to build upon: Sean Bechhofer (Manchester University) had already implemented a rudimentary commuting diagrams package based on a \verb"picture"-like environment which compiled arrows directly as PostScript~\verb"\special"s. I had merely to extend his work, rewrite the \verb"\special"s to work with \verb"dvips", ensure that his environment interacted reasonably sensibly with the rest of \LaTeX, and generally tidy up the code. The result is a package capable of producing diagrams such as Figure~\ref{twocat} of reasonable quality and complexity. \setlength{\diagramcellsize}{6em} \begin{figure*} \begin{diagram*}(2,2.4)(0,-0.2) \object(0,1){A} \object(1,1){B} \object(1,2){C} \object(1,0){D} \object(2,1){{\mathbf{Cat}}} \curvearrow(1,1){\east}[i]{\po} \curvearrow(1,1){\east}[j]{\st} \twocell(1,1){\east}{\clock}[\alpha][\far] \twocell(0,1){\eneast}{\clock}[\eta_1][\far] \twocell(0,1){\eseast}{\clock}[\eta_2][\far] \plarrow(0,1){\neast}[f_1][\po] \plarrow(0,1){\east}[f][\st] \plarrow(0,1){\seast}[f_2][\st] \plarrow(1,2){\south}[\lambda_{f_i}][\po] \plarrow(1,1){\south}[\lambda_{f_j}][\po] \end{diagram*} \caption{A simple two-categorical diagram} \label{twocat} \end{figure*} \begin{figure*} \begin{footnotesize} \begin{verbatim} \begin{diagram*}(2,2) \object(0,1){A} \object(1,1){B} \object(1,2){C} \object(1,0){D} \object(2,1){{\bf Cat}} \curvearrow(1,1){\east}[i]{\po} \curvearrow(1,1){\east}[j]{\st} \twocell(1,1){\east}{\clock}[\alpha][\far] \twocell(0,1){\eneast}{\clock}[\eta_1][\far] \twocell(0,1){\eseast}{\clock}[\eta_2][\far] \plarrow(0,1){\neast}{f_1}[\po] \plarrow(0,1){\east}{f}[\st] \plarrow(0,1){\seast}{f_2}[\st] \plarrow(1,2){\south}[\lambda_{f_i}][\po] \plarrow(1,1){\south}[\lambda_{f_j}][\po] \end{diagram*} \end{verbatim} \end{footnotesize} \caption{The code for the two-categorical diagram shown in Figure \protect\ref{twocat}} \label{syntax} \end{figure*} \section*{What's Wrong?} The package I produced, based on Bechhofer's work, has several manifest disadvantages: \begin{itemize} \item It works exclusively with PostScript printers and \verb"dvips". There are a substantial number of \LaTeX~users without access to these facilities. \item The syntax I have adopted, as the code which produces Figure~\ref{twocat} (shown in Figure~\ref{syntax}) makes clear, is fairly ad hoc and ill-chosen. \item There is a considerable jump in complexity between simple rectangular diagrams and more complex ones. This is wholly due to the difficulty of doing standard trigonometry in \TeX. If I could perform fairly simple numerical calculations without descending to the PostScript level, users would have to think rather less hard about the relative positions and dimensions of diagram objects. Some hand-tuning is always going to be necessary in a complex graphical environment, but more automation should be possible than I have provided. \end{itemize} My real concern in this article is how much do these problems matter? I do not doubt that the problems I have outlined above make my macros entirely unacceptable as a standard package; if something like \verb"multicol" suffered from similar problems, no one would use it. However, there is a big difference between carefully-designed packages like \verb"multicol", which must work in a wide range of circumstances and with a wide range of users, and a specialist package like my own which is designed for a small community of relatively skilled users. For the moment I am willing and able to continue to support the package, but this may not always be the case. Is it reasonable to ask people to use software for which no support guarantee can be given? My suspicion is that there are rather a lot of packages like mine: medium-sized, badly-written pieces of code with a small but basically satisfied user base. Is this a good thing? These users are not numerous enough to be able to command high-quality software to meet their needs: not enough people are interested in commuting diagrams for a diagrams package to be a sensible addition to standard \LaTeX. (Opinions differ on this point: Barr is currently working on a package that may come as standard with \LaTeX~3.) Must the category theorist, then, always be content with software such as mine? More generally, what is the best way for the specialist typographical needs of a small community to be met? I hope that these questions will find some answers in the current debate over the future of \TeX. \end{article}