MathJax: Есть ли способ выровнять выражение по вертикали? - PullRequest
1 голос
/ 19 января 2020

При создании математического теста на моем сайте я столкнулся с проблемой: встроенное многострочное выражение (уравнение), горизонтально выровненное по знакам равенства, будет вертикально центрировано в его строке.

Если выражение занимает только одну строку, оно отлично работает (хотя я должен использовать разные шрифты и размеры для сайта и MathJax).

Можно ли добавить команду (что-то как \ valign) в выражении, чтобы строка, содержащая команду, стала строкой, которая выровнена по вертикали с окружающим текстом?

Например:

\(\begin{align}2 \cdot x &= 8\\x &=\end{align}\)

… будет…

\(\begin{align}\valign 2 \cdot x &= 8\\x &=\end{align}\)

Вот как это сейчас:

How it is now

Вот как бы мне хотелось:

Goal


Я пробовал следующее:

\raise -.6em {}

Это имеет эффект, но значение является предположением и не точно. Это все еще на пиксель, и чем больше я делаю значение по умолчанию (rem), тем больше ошибка.

Я поиграл с выравниванием по вертикали выражения и установил его в text-top, оставляя окружающий текст в базовой линии. Это тоже не идеально. Конечно, я могу возиться с CSS, пока это выражение не будет выглядеть хорошо, но как насчет следующего?

1 Ответ

2 голосов
/ 20 января 2020

Среда align является средой уровня отображения и не должна использоваться внутри встроенных математических выражений. Вместо этого вы должны использовать aligned, который принимает параметр, который контролирует его вертикальное выравнивание. Поэтому

\(\begin{aligned}[t]2 \cdot x &= 8\\x &=\end{aligned}\)

расположит выравнивание так, чтобы его верхняя линия находилась на той же базовой линии, что и окружающий текст.

Вот пример:

<script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>

a) \(\begin{aligned}[t] 2 \cdot x &amp;= 8\\x &amp;= 4\end{aligned}\)

В этом случае [t] означает выравнивание по верхней строке. Вы также можете использовать [b] для выравнивания по нижней строке.

...