Я использую JSXGraph и хотел бы пометить тики осей как дроби, используя MathJax. Например, \(\frac{1}{2}\)
Не могу понять, как это сделать.
Позвольте мне дать несколько более развернутый ответ.
Если вы просто хотите, чтобы метки галочек отображались с помощью математического шрифта MathJax, это можно сделать следующим образом для оси Y:
var board = JXG.JSXGraph.initBoard('jxgbox', {
boundingbox: [-0.1, 3, 1, -3],
axis: true,
defaultAxes: {
y: {
ticks: {
label: {
fontSize: 18,
display: 'html',
cssStyle: 'font-family: MJXZERO, MJXTEX',
offset: [-10, -5]
}
}
}
}
});
Важными атрибутами являются display:'html'
и cssStyle: 'font-family: MJXZERO, MJXTEX',
. Конечно, вы должны включить библиотеку JavaScript MathJax.
const board = JXG.JSXGraph.initBoard('jxgbox', {
boundingbox: [-1, 10, 11, -2],
axis: true,
defaultAxes: {
x: {
ticks: {
label: {
fontSize: 15,
parse: false,
useMathJax: true,
display: 'html'
},
generateLabelText: (tick) => {
return '\\(' + tick.usrCoords[1].toFixed(0) + '\\)';
}
}
}
}
});
Наконец, чтобы вернуться к вашему первоначальному вопросу: лучший подход, по-видимому, заключается в создании новых фиксированных тиков, подобных 2):
const board = JXG.JSXGraph.initBoard('jxgbox', {
boundingbox: [-0.1, 3, 1, -3],
axis: true,
defaultAxes: {
x: {
ticks: {
visible: false,
drawLabels: false,
}
},
y: {
ticks: {
label: {
fontSize: 18,
parse: false,
display: 'html',
CssStyle: 'font-family: MJXZERO, MJXTEX',
offset: [-10, -5]
}
}
}
}
});
board.create('ticks', [board.defaultAxes.x, [0.25, 0.5, 0.75]], {
drawLabels: true,
label: {
fontSize: 20,
parse: false,
useMathJax: true,
display: 'html',
offset: [-10, -25]
},
generateLabelText: (tick) => {
var v = tick.usrCoords[1];
switch (v) {
case 0.25:
return '\\(\\frac{1}{4}\\)';
case 0.5:
return '\\(\\frac{1}{2}\\)';
case 0.75:
return '\\(\\frac{3}{4}\\)';
}
}
});
Вы можете увидеть 1) и 2) в прямом эфире на https://jsfiddle.net/ba8xh9jz/1/ и 3) на https://jsfiddle.net/ba8xh9jz/2/.