buildHTML = function(tree, options) {
                    // buildExpression is destructive, so we need to make a clone
                    // of the incoming tree so that it isn't accidentally changed
                    tree = JSON.parse(JSON.stringify(tree));

                    // Build the expression contained in the tree
                    var expression = buildExpression(tree, options);
                    var body = makeSpan(["base", options.style.cls()], expression);

                    // Add struts, which ensure that the top of the HTML element falls at the
                    // height of the expression, and the bottom of the HTML element falls at the
                    // depth of the expression.
                    var topStrut = makeSpan(["strut"]);
                    var bottomStrut = makeSpan(["strut", "bottom"]);

                    topStrut.style.height = body.height + "em";
                    bottomStrut.style.height = (body.height + body.depth) + "em";
                    // We'd like to use `vertical-align: top` but in IE 9 this lowers the
                    // baseline of the box to the bottom of this strut (instead staying in the
                    // normal place) so we use an absolute value for vertical-align instead
                    bottomStrut.style.verticalAlign = -body.depth + "em";

                    // Wrap the struts and body together
                    var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]);

                    htmlNode.setAttribute("aria-hidden", "true");

                    return htmlNode;
                }
Makes a symbol in Main-Regular or AMS-Regular.
Used for rel, bin, open, close, inner, and punct.