
Дата создания: 09.03.2007
Номинация: Офисные Технологии
Название: Сложная разметка и хитрости в OpenOffice.org Math
Автор: Смирнов Дмитрий Вячеславович (DMA)
e-mail: dma2002@hotbox.ru
Я – студент. Использую OpenOffice.org уже не первый год как основной офисный пакет. Поскольку я учусь на технической специальности, для меня важно иметь под рукой необходимый инструментарий для создания технических документов. Одним из таких инструментов, привлекших меня, был как раз OpenOffice.org Math – редактор формул OpenOffice.org. Потратив пару дней на освоение и чтение кое-какой документации, я понял, что, несмотря на трудности при освоении OOo Math, потраченное время с лихвой окупится в дальнейшем при наборе формул.
Но на одном удобстве метода далеко не уедешь. Необходимо было научиться вводить не только простые, но и сложные формулы, наборы формул, выровненные особым образом, «многоэтажные» формулы и т.д. Помимо этого передо мной (и не только передо мной) вставал стандартный вопрос: «А как это сделать?» Предлагаю Вашему вниманию ряд решений для создания сложных формул.
Поскольку речь пойдёт именно о сложнойразметке, я буду предполагать, что человек, читающий статью, освоил основы работы с OpenOffice.org Math (например, прочитал 16-ю главу Руководства по Writer), в противном случае читатель может не разобраться в статье.
Хочу также выразить благодарность участникам форума http://community.i-rs.ru
Системы уравнений и неравенств
Про запись систем упоминается в 16-й главе Руководства по Writer. Например:
Формула |
Код |
|
left lbrace alignl {stack{ уравнение1# уравнение2# уравнение3} } right none |
Примечание: далее по тексту заголовок таблицы буду опускать
Разберём этот код.
left
lbrace
– открывающаяся масштабируемая
фигурная скобка.
right
none
– указывает, что закрывающей
скобки не требуется.
alignl
– устанавливает выравнивание строк по
левому краю
#
- переход на новую строку
Хочу обратить
внимание, что команды left
иright
не могут использоваться отдельно друг
от друга. Кроме того, использование#
как символа перехода на новую строку
вне блокаstack
может вызвать ошибку.
Скобки можно
комбинировать. Например: left
[ right rbrace
. Пример использования:
преобразование записи из совокупности
неравенств в промежуток на числовой
оси.
|
left [ alignl stack{x<0#x>5} right rbrace drarrow x in (-infinity;0) union (5;+infinity) |
Системы уравнений и неравенств с условиями
Иногда к уравнениям требуется дописать условие. Например, y= 0 приx> 3. Часто вместо словаприставят запятую. Запишем пример системы уравнений с условиями
|
left lbrace alignl stack{уравнение1, условие1# уравнение2, условие2} right none |
Однако подобная запись не всегда будет смотреться эстетично. Например:
|
left lbrace alignl stack{уравнение1, условие1# длинное уравнение2, условие2} right none |
Требуется реализовать
такую запись, чтобы условия были друг
под другом и выровнены по их левому
краю. В таком случае лучше использовать
команду matrix
|
|
Разберём этот код.
left
lbrace
– открывающаяся масштабируемая
фигурная скобка.
right
none
– указывает, что закрывающей
скобки не требуется.
alignl
– устанавливает выравнивание строк по
левому краю
#
- следующий элемент строки (т.е. переход
на следующий столбец в текущей строке)
##
- переход на новую строку
При такой записи также можно опустить запятые после уравнений.
В качестве примера запишем кусочно-непрерывную функцию.
|
|
Выравнивание в дробях
Если Вы будете
записывать системы уравнений, содержащие
дроби, вы наверняка столкнётесь с
проблемой выравнивания числителя и
знаменателя дроби. Дело в том, что, указав
alignl
перед системой уравнений или перед
конкретной строкой,всеэлементы
этой строки будут выровнены по левому
краю. В том числе числитель и знаменатель
дроби. Аналогичное явление будет
наблюдаться в многострочных формулах
(например, при использованииnewline
и/илиstack
).
Простой пример:
|
alignl 1 over {100} |
Логичный выход из ситуации – установка выравнивания по центру для числителя и знаменателя дроби.
|
alignl {alignc 1} over {alignc 100} |
Если присмотреться к тому, как Math определяет границы выравнивания, то очевидно, что он определяет их по наиболее длинному элементу. Например, выравнивание по левому краю короткого числителя приводит к тому, что числитель выравнивается по левому краю относительно левого края знаменателя. Аналогичная картина будет наблюдаться при выравнивании короткого числителя по центру: он выровняется по центру относительно знаменателя. В большинстве случаев мы заранее можем определить длины числителя и знаменателя. Тогда достаточно указать выравнивание либочислителя,либознаменателя. Это приводит к сокращению записи.
|
alignl {alignc 1} over 100 |
|
alignl 237 over {alignc 8} |
Приведу пример многострочной формулы.
|
alignl dot %varphi_2(2+j)= 200+100 j newline alignl dot %varphi_2= {200+100 j}over{alignc2+j}= {100(2+j)} over {alignc2+j}=100 |
Аналогично осуществляется выравнивание числителя и знаменателя по центру в системах уравнений и неравенств.