Some random thing I've been working on the past week.

Those familiar with my academic work may notice that my field has some very long papers. I myself is not entirely free of blame. But reading these long papers

*can* be quite taxing, especially when trying to keep track of the logical relationships between theorems and lemmata, or to sometimes even just to remember what "Lemma 3.6.13" said. (No, you can't remember it, and so you have to flip through half of a 300 page paper to find that lemma.)

Trying to make life slightly easier for future readers of my work (especially graduate students who will be taking my class next spring), I've been working on a couple of solutions in tandem.

1. I have now some LaTeX code for "Descriptive Referencing" which I will be using in my Lecture Notes. The functionality is quite simple: when calling \label, one adds a second argument containing a short descriptor of the thing being labeled. When calling \ref, the description will be printed in the margin. (There's some intelligence involving not placing the description more than once per page and other small things.) Currently it is only available in the form of a special document class since it only really works when you have ample margin space to work with, and the standard classes are not good in that regards (with the possible exception of amsart.)

2. The LaTeX code also defines a new proof environment, which can track the \ref commands used within. This is then used to output auxiliary data files that store the cross reference logic used in the proofs. This brings us to what I want to show off in this post.

With (not too much) javascript, this data can be displayed as an interactive graph showing how different parts of the paper fit together. The link below shows the output from a dummy test document. Features:

a) Different colors for different "theorem types".

b) Search function for ease of locating a theorem (this is meant to be used together with the book/lecture notes, so we search by labels like "Theorem 1.3").

c) Display of the description, and the page number on which the full statement can be found.

d) MathJax support! So mathematics included in the short descriptions are properly rendered.

All the codes involved are very much in the beta stage. The source code (provided without any guarantees) can be found on

https://gitlab.msu.edu/wongwil2/www-textools(apologies that I haven't updated the READMEs completely yet. Will get around to it another time.)