2014-11-05 6 views
0

Моя задача - преобразовать \overline символ в \overleftrightarrow и \oversegment в \overline. Проблема в том, что это то, что я получаю от ввода (что принципиально неправильно, я знаю), но я не могу его изменить.MathJax определяющий макрос как последний или последний

Так на основе этого источника: http://docs.mathjax.org/en/latest/tex.html#defining-tex-macros

Я определил мои макросы:

MathJax.Hub.Config({ 
    TeX: { 
     Macros: { 
      overline: ["{\\overleftrightarrow{#1}}", 1], 
      oversegment: ["{\\overline{#1}}", 1] 
     } 
    } 
}); 

Проблема заключается в том, что когда у меня есть вход с \oversegment, он преобразуется вторым макрокоманды \overline, а затем он снова преобразуется с помощью первого макроса в \overleftrightarrow, что неверно. Я хочу, чтобы он был преобразован только один раз и сделал его окончательным.

ответ

2

Существует не простой способ, с помощью которого обрабатываются макросы. Кажется, что лучший способ реплицировать original function in the TeX input jax, т. Е. Добавить эту функцию в свой встроенный блок конфигурации.

<script type="text/x-mathjax-config"> 
    MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() { 
    var MML = MathJax.ElementJax.mml; 
    MathJax.InputJax.TeX.Definitions.Add({ 
     macros: { 
      oversegment: ['UnderOver','00AF'] 
     } 
    }); 
    }); 
</script> 
+0

После того как я выяснил, что это невозможно сделать с помощью макросов, я попытался, я думаю, что ваш ответ лучше всего в данных обстоятельствах - спасибо! – Karol