From 51a65e5b525e0951143e467501d8fac842643e82 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Sat, 7 Jan 2012 10:24:26 -0500 Subject: [PATCH] Add HTML-CSS extension to handle tagged equations better when there are floating elements (without this, they overlap the floats). This is an extension since it misuses display:table-cell, and I'm not certain of all the consequences. --- extensions/HTML-CSS/handle-floats.js | 16 ++++ unpacked/extensions/HTML-CSS/handle-floats.js | 74 +++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 extensions/HTML-CSS/handle-floats.js create mode 100644 unpacked/extensions/HTML-CSS/handle-floats.js diff --git a/extensions/HTML-CSS/handle-floats.js b/extensions/HTML-CSS/handle-floats.js new file mode 100644 index 000000000..6afa0b5a1 --- /dev/null +++ b/extensions/HTML-CSS/handle-floats.js @@ -0,0 +1,16 @@ +/* + * /MathJax/extensions/HTML-CSS/handle-floats.js + * + * Copyright (c) 2010 Design Science, Inc. + * + * Part of the MathJax library. + * See http://www.mathjax.org for details. + * + * Licensed under the Apache License, Version 2.0; + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +MathJax.Hub.Config({"HTML-CSS":{styles:{".MathJax_Display":{display:"table-cell",padding:"1em 0 ! important",width:(MathJax.Hub.Browser.isMSIE&&(document.documentMode||0)<8?"100%":"1000em")}}}});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.OutputJax["HTML-CSS"],b=a.Translate;a.Augment({Translate:function(c,f){b.call(this,c,f);if(c.MathJax.elementJax.HTMLCSS.display){var e=c.nextSibling;if(!e||e.className!=="MathJax_MSIE_Separator"){var d=a.Element("span",{className:"MathJax_MSIE_Separator"});c.parentNode.insertBefore(d,e)}}}});MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js"); + diff --git a/unpacked/extensions/HTML-CSS/handle-floats.js b/unpacked/extensions/HTML-CSS/handle-floats.js new file mode 100644 index 000000000..bb9ddcab6 --- /dev/null +++ b/unpacked/extensions/HTML-CSS/handle-floats.js @@ -0,0 +1,74 @@ +/************************************************************* + * + * MathJax/extensions/HTML-CSS/handle-floats.js + * + * This extension allows HTML-CSS output to deal with floating elements + * better. In particular, when there are tags or equation numbers, these + * would overlap floating elements, but with this extension, the width of + * the line should properly correspond to the amount of space remaining. + * + * To load it, include + * + * "HTML-CSS": { + * extensions: ["handle-floats.js"] + * } + * + * in your configuration. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2012 Design Science, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Make the display DIV be a table-cell +// Use padding to get the separation, since table cells don't do margin +// Make the width large (it will shrink to fit the remaining room) +// +MathJax.Hub.Config({ + "HTML-CSS": { + styles: { + ".MathJax_Display": { + display: "table-cell", + padding: "1em 0 ! important", + width: (MathJax.Hub.Browser.isMSIE && (document.documentMode||0) < 8 ? "100%" : "1000em") + } + } + } +}); + +// +// Two consecutive equations would end up side-by-side, so force a separator +// (Needed by IE8, IE9, and Firefox, at least). +// +MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { + var HTMLCSS = MathJax.OutputJax["HTML-CSS"], + TRANSLATE = HTMLCSS.Translate; + HTMLCSS.Augment({ + Translate: function (script,state) { + TRANSLATE.call(this,script,state); + if (script.MathJax.elementJax.HTMLCSS.display) { + var next = script.nextSibling; + if (!next || next.className !== "MathJax_MSIE_Separator") { + var span = HTMLCSS.Element("span",{className:"MathJax_MSIE_Separator"}); + script.parentNode.insertBefore(span,next); + } + } + } + }); + MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready"); +}); + +MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");