Интеграция Mathjax и JadeJS

У меня проблема с интеграцией Mathjax и Jade в Express. Мне нужно показать формулы внутри «pre», поэтому я пытаюсь настроить Mathjax через скрипт. Это мой код:

script(type="text/x-mathjax-config")
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [['$','$'], ['\\(','\\)']],
            skipTags: ["script","noscript","style","textarea","code"]   
            }

    });

Моя проблема в том, что когда я пытаюсь просмотреть страницу, она выдает эту ошибку:

SyntaxError: неожиданный токен {

at Object.Function (unknown source)
at Object.exports.compile (/home/andres/web/node-login/node_modules/jade/lib/jade.js:176:8)
at Function.exports.compile (/home/andres/web/node-login/node_modules/express/lib/view.js:68:33)
at ServerResponse.res._render (/home/andres/web/node-login/node_modules/express/lib/view.js:417:18)
at ServerResponse.res.render (/home/andres/web/node-login/node_modules/express/lib/view.js:318:17)
at Promise.module.exports.app.get.Pregunta.find.exec.questions (/home/andres/web/node-login/app/server/router.js:240:16)
at Promise.addBack (/home/andres/web/node-login/node_modules/mongoose/lib/promise.js:128:8)
at Promise.EventEmitter.emit (events.js:88:17)
at Promise.emit (/home/andres/web/node-login/node_modules/mongoose/lib/promise.js:66:38)
at Promise.complete (/home/andres/web/node-login/node_modules/mongoose/lib/promise.js:77:20)

Кто-нибудь знает, что может происходить?

Спасибо.


person andresmechali    schedule 23.11.2012    source источник


Ответы (1)


Проблема, похоже, связана с type='text/x-mathjax-config'. Если я уберу это, представление будет отображаться нормально. Если я оставлю все как есть, jade интерпретирует содержимое скрипта как теги jade. Я не думаю, что это ошибка в нефрите, поскольку текстовые шаблоны также должны быть написаны в нефрите.

В любом случае, похоже, что mathjax требует этот тип для правильного выполнения конфигурации, поэтому нам нужно обойти эту проблему. Самое простое решение — просто оставить все как есть, но добавить . в конце тега script. Это сделает все под ним текстовым литералом.

script(type="text/x-mathjax-config").
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [['$','$'], ['\\(','\\)']],
      skipTags: ["script","noscript","style","textarea","code"]
    }
  });

В качестве альтернативы, возможно, вы могли бы настроить mathjax после загрузки страницы, как показано здесь. Обратите внимание, что я ничего не знаю о mathjax, я просто просмотрел документацию.

person David Weldon    schedule 26.11.2012