15 ноября 2014 г.

Пример ввода сложной формулы в LibreOffice Math

Попалась мне на глаза формула. Она является достаточно сложной и новички в LibreOffice Math, скорее всего, не смогут набрать её правильно с первого раза. Формула примечательна тем, что в ней используются почти все основные трюки, с которыми у многих возникают проблемы. В качестве дополнения к Руководству по LibreOffice Math я решил расписать по шагам набор этой формулы.
Полностью код формулы выглядит так:
T(b) = left lbrace
matrix {
int { {{( lline x+4 rline )}^-{1 over 4} - {1 over 92}}over{x - {1 over 97}} partial x }
#
alignl{", если "x"<-4,13;"}
##
left lline x + {1 over26} right rline — 2
#
alignl{", если "x in "[-4,13;4,42];"}
##
int {{ sqrt{ {b+{1over
53}}}+24}over{b+{1 over 97}} partial b }
#
alignl{", иначе."}
}
right none 


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

Второе правило — отделяйте выражения фигурными скобками. Напоминаю, что фигурные скобки в синтаксисе Math используются для группировки выражений. Лишних скобок не бывает.

Далее я продолжу повествование в формате вопроса-ответа. Не забываем на место <?> подставлять свои значения.

Как набрать большую фигурную скобку?
Сами символы фигурных скобок {} являются служебными символами и используются для группировки элементов в формулах. Для набора обычных фигурных скобок в качестве элемента формулы используются команда lbrace rbrace. Для набора больших (масштабируемых) скобок к основным командам добавляются команды left и right. Т.е. конечная формулы выглядит так:
left lbrace <?> right rbrace

Как набрать одиночную фигурную скобку?
Для набора одиночной фигурной скобки вместо закрывающейся скобки необходимо ввести команду right none. Полностью команда будет выглядеть так:
left lbrace <?> right none

Как расположить уравнения за фигурной скобкой в несколько строк?
Обычно за фигурными скобками находится несколько уравнений.Чтобы расположить их в несколько строк и чтобы фигурная скобка четко относилась к ним, использование команды newline не уместно. Для этого используется матрица. Матрица вводится командой:
matrix {<?> # <?> ## <?> # <?> ## <?> # <?>}

Столбцы матрицы отделены одним знаком решетки #, строки отделяются двойным ##. В данном примере использована матрица с двумя столбцами и тремя строками.

Как отключить курсивное начертание (курсив) некоторых элементов?
Обычные буквы распознаются Math как переменные, а по правилам они должны набираться курсивным начертанием. В нашем примере слова если и иначе, а также знаки препинания набираются курсивом. Чтобы набрать их в прямом начертании я воспользовался кавычками, которые позволяют набирать символы так, как они есть:
", иначе."

В первой и второй строках пришлось дважды использовать двойные кавычки, чтобы переменная x оставалась в курсивном начертании.

Аналогично можно ввести символ процента "%", который является управляющим символом .

Есть другой способ выпрямит символы командой nitalic. Например:
nitalic{,иначе.}

Данная команда является более громоздкой. Фигурные скобки в данном случае группирую символы, к которым должна быть применена команда. Поэтому её действие распространяется только на то, что находится внутри скобок.

Как выровнять элементы по левому краю?
По умолчанию, все элементы в строках выравниваются по середине. В примере все уравнения выровнены друг относительно друга по центру, а условия к ним по левому краю. Сделано это с помощью команды alignl.

Как поставить дополнительный пробел?
Math не чувствителен к пробелам, т.е. десять пробелов подряд будут отображены как один. Если посмотреть на пример формулы, то во второй строке во втором столбце между словом если и х стоит пустая пара фигурных скобок {}. Они имитируют пробел. Если поставить десять пар фигурных скобок, то получится расстояние примерно в десять пробелов.

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

Кстати, в качестве другого способа раздвинуть символы и сымитировать табуляцию можно воспользоваться любым символом и просто окрасить его в белый цвет, например:
color white {любой символ}

В качестве ещё одного варианта решения проблемы с пробелами стоит упомянуть команду — phantom. Подробнее о её применении написано в официальной вики The Document Foundation https://wiki.documentfoundation.org/Faq/Math/005/ru


Как увеличить(изменить) интервал между строками?
И еще один нестандартный трюк, который пришлось применить - изменение междустрочного интервала. Изначально, расстояние между второй и третьей строкой оказалось слишком маленьким. Это случилось из-за того, что в обеих строках находятся слишком громоздкие выражения.
Визуально это смотрится не очень красиво, поэтому я расширил интервал. Делается это через диалог «Формат → Интервалы». Необходимо в выпадающем списке выбрать категорию «Матрицы» и изменить параметр «Между строками».

В принципе, на этом особые случаи закончились. Если я что-то упустил или что-то не ясно, задавайте вопросы в комментариях или в наших сообществах в социальных сетях: