diff --git a/services/web/public/coffee/base.coffee b/services/web/public/coffee/base.coffee index cb9e70b6bf..0a6f47f9fa 100644 --- a/services/web/public/coffee/base.coffee +++ b/services/web/public/coffee/base.coffee @@ -26,7 +26,29 @@ define [ baseUrl: window.sharelatex.sixpackDomain client_id: window.user_id }) - + + MathJax?.Hub?.Config( + extensions: ["Safe.js"] + messageStyle: "none" + imageFont:null + "HTML-CSS": + availableFonts: ["TeX"] + # MathJax's automatic font scaling does not work well when we render math + # that isn't yet on the page, so we disable it and set a global font + # scale factor + scale: 110 + matchFontHeight: false + TeX: + equationNumbers: { autoNumber: "AMS" } + useLabelIDs: false + skipStartupTypeset: true + tex2jax: + processEscapes: true + # Dollar delimiters are added by the mathjax directive + inlineMath: [ ["\\(","\\)"] ] + displayMath: [ ['$$','$$'], ["\\[","\\]"] ] + ) + App.run ($templateCache) -> # UI Select templates are hard-coded and use Glyphicon icons (which we don't import). # The line below simply overrides the hard-coded template with our own, which is diff --git a/services/web/public/coffee/directives/mathjax.coffee b/services/web/public/coffee/directives/mathjax.coffee index 269526287e..7124318214 100644 --- a/services/web/public/coffee/directives/mathjax.coffee +++ b/services/web/public/coffee/directives/mathjax.coffee @@ -4,23 +4,16 @@ define [ App.directive "mathjax", () -> return { link: (scope, element, attrs) -> - mathjaxConfig = - extensions: ["Safe.js"] - messageStyle: "none" - imageFont:null - "HTML-CSS": { availableFonts: ["TeX"] }, - TeX: - equationNumbers: { autoNumber: "AMS" }, - useLabelIDs: false - skipStartupTypeset: true - tex2jax: - processEscapes: true, - inlineMath: [ ["\\(","\\)"] ], - displayMath: [ ['$$','$$'], ["\\[","\\]"] ] if attrs.delimiter != 'no-single-dollar' - mathjaxConfig.tex2jax.inlineMath.push(['$','$']); + inlineMathConfig = MathJax?.Hub?.config?.tex2jax.inlineMath + alreadyConfigured = _.find inlineMathConfig, (c) -> + c[0] == '$' and c[1] == '$' - MathJax?.Hub?.Config(mathjaxConfig); + if !alreadyConfigured? + MathJax?.Hub?.Config( + tex2jax: + inlineMath: inlineMathConfig.concat([['$', '$']]) + ) setTimeout () -> MathJax?.Hub?.Queue(["Typeset", MathJax?.Hub, element.get(0)])