Я программно создаю теги HTML для отображения формул LaTeX с помощью MathJax. Похоже, что формула отображается после расчета размера тега <span>
. Я хочу убедиться, что формула отображается в границах диапазона. Что это за исправление, спрошу!?
скрипт.js
formula = "${{{{{{x^2}^2}^2}^2}^2}^2}^2$"
question_div = document.createElement("div");
question_div.setAttribute("id", "q1");
let input = document.createElement("input");
input.name = "a1";
input.id = "a1";
input.type = "radio";
let label = document.createElement("label");
let span_label = document.createElement("span");
span_label.setAttribute("class", "my-span");
span_label.innerText = formula;
label.appendChild(input);
label.appendChild(span_label);
question_div.appendChild(label);
document.body.appendChild(question_div);
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8" />
<title>title</title>
<link rel = "stylesheet" href = "styles.css" />
</head>
<body>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script id = "MathJax-script" async
src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
<script type = "text/javascript" src = "script.js"></script>
</body>
</html>
стили.css
label {
border: 1px solid rgb(199, 199, 199);
margin: 5px;
padding: 4px;
cursor: pointer;
}
div{
padding-top:8px;
padding-bottom:8px;
}
.my-span{
padding-left:8px;
}
Вы просите, чтобы граница диапазона была большой, чтобы вместить математические данные, или чтобы математические значения были меньше, чтобы оставаться внутри текущей границы?
@DavideCervone, я хочу, чтобы размер диапазона соответствовал математическому измерению. В этом случае высота промежутка должна быть больше, а математическая формула остается неизменной.
Высота и глубина элемента с display: inline
, как и <span>
, (для границ и фона) будет равна высоте и глубине шрифта, используемого в элементе, независимо от высоты и глубины других элементов внутри него. Например:
#span1 {
border: 1px solid black;
}
#span2 {
display: inline-block;
height: 4em;
width: 1em;
vertical-align: -1.75em;
background-color: red;
}
<span id = "span1">This span has a tall element
<span id = "span2"></span> but its height stays the same</span>
Итак, то, что вы видите на выходе MathJax, — это правильный результат.
Чтобы его высота и глубина соответствовали содержимому, вам нужно использовать display: inline-block
(есть и другие значения, которые также подходят для этого).
#span1 {
display: inline-block;
border: 1px solid black;
}
#span2 {
display: inline-block;
height: 4em;
width: 1em;
vertical-align: -1.75em;
background-color: red;
}
<span id = "span1">This span has a tall element
<span id = "span2"></span> and its height matches that</span>
Итак, в вашем примере, добавив display: inline-block
к CSS-метке, вы получите
formula = "${{{{{{x^2}^2}^2}^2}^2}^2}^2$"
question_div = document.createElement("div");
question_div.setAttribute("id", "q1");
let input = document.createElement("input");
input.name = "a1";
input.id = "a1";
input.type = "radio";
let label = document.createElement("label");
let span_label = document.createElement("span");
span_label.setAttribute("class", "my-span");
span_label.innerText = formula;
label.appendChild(input);
label.appendChild(span_label);
question_div.appendChild(label);
document.body.appendChild(question_div);
label {
display: inline-block;
border: 1px solid rgb(199, 199, 199);
margin: 5px;
padding: 4px;
cursor: pointer;
}
div{
padding-top:8px;
padding-bottom:8px;
}
.my-span{
padding-left:8px;
}
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script id = "MathJax-script" async src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
я думаю, что это из-за лейбла