Доступно и просто |
|
|
Хитрости в ООо Math |
Автор Смирнов Д.В. | |
09.03.2007 г. | |
Перейдём к приёмам записи некоторых выражений в OOo Math. Примеры составлены на основании вопросов, на которые я в своё время отвечал себе и другим людям.
С помощью подобной записи можно организовать перенос выражения на новую строку. Например: В большинстве случаев необходимо выравнивание по левому краю. Изменим запись: Поскольку alignl выравнивает по левому краю относительно самой длинной строки в формуле, то alignl перед этой самой строкой можно опустить. В нашем примере таковой является верхняя. Поэтому можем записать: Визуально формулы выглядят одинаково.
Но есть и другой способ. Он сработает в том случае, если Вы не обозначили какой-либо спецсимвол через %Re. Если нет соответствующего символа, Math записывает курсивом последовательность символов, стоящую после знака %. Этот способ неочевиден, но он более компактен. Кроме того не все символы можно отобразить таким образом.
Сперва рассмотрим способ проведения горизонтальной черты под матрицей. Это делается подчёркиванием матрицы. Однако на мой взгляд, underline здесь не совсем подходит, поскольку запись будет выглядеть не очень эстетично, а именно: Можно отступить строчку, добавив в матрицу пустую строку. Но, согласитесь, смотрится также не очень красиво. Поэтому могу предложить два других способа. Первый - подбор высоты, на которой надо провести горизонтальную линию. В этом случае линию проводим перечёркиванием (overstrike). Минус данного способа состоит в том, что выражение под чертой придётся вписывать в саму матрицу (в противном случае будет большой отступ снизу), что само по себе используется не всегда. К тому же появляются сложности с проставлением слева фигурной скобки: её тоже придётся подбирать по высоте вне зависимости от матрицы, что чревато нарушением разметки. Поэтому этот способ отбросим ввиду его вопиющей неуниверсальности. Суть такова: мы перечёркиваем невидимую матрицу. Тогда наша задача - подобрать размер перечёркиваемой матрицы такой же, как и у верхней. Простой случай: без почленного выравнивания слагаемых (т.е. одно уравнение написано просто под другим). В выделенной полужирным начертанием команде мы используем невидимые символы для указания длины линии. Очевидно, что линию нужно выровнять по правому краю (alignr) и сделать по длине чуть больше самого длинного уравнения (в данном случае это верхнее). Выражение под командой phantom представляет из себя самое длинное уравнение системы, удлинённое добавленным символом q (на его месте может быть и другой символ или несколько символов, а также такие символы могут отсутствовать вообще, если Вы считаете удлинение линии нецелесообразным). Указание под phantom самого длинного уравнения (а не другой комбинации символов) упрощает подбор линии нужной длины, поскольку мы как бы ведём отсчёт от известной длины. Сопоставьте выделенные полужирным начертанием участки кода и Вы поймете логику. Вы можете спросить: а зачем мы последнюю строку записали с помощью матрицы? Можно было просто написать обычную строчку и выровнять её вручную. Да, так можно сделать, но в описанном мной случае выравнивать элементы матрицы на мой взгляд проще: доставлять пробелы и невидимые символы в отдельных элементах матрицы удобнее, поскольку тогда мы привязываемся только к границам соответствующей ячейки матрицы, а не ко всей строке. Последний недостаток можно устранить в том случае, если допустимо оставить немного места после итоговой строки. Понятно, что размер матрицы автоматически подбирается по самым длинным её элементам. Суть предлагаемого мной метода заключается в том, чтобы задать равные размеры матриц системы уравнений и итоговой строки, а именно - по наиболее длинной строке системы уравнений указать размер итоговой строки. Какую команду для этого удобно использовать? Правильно, phantom! Мы просто «зафантомили» самую длинную строку и расположили её аккурат под итоговой строкой, а точнее - мы её добавили к матрице итоговой строки. Именно для неё требуется дополнительное место. Напоследок рассмотрю задачу, которую у меня пока не получилось решить. Задача: а что делать, если итоговая строка длиннее всех уравнений системы? Такая ситуация маловероятна. Суть решения проблемы аналогична: добавить над системой уравнений скрытую строку, равную по длине итоговой строке, причём вписать скрытую строку необходимо в ту же матрицу (или stack), в которой записана система уравнений. Сама запись не сложна, но не удаётся корректно поставить фигурную скобку слева, т.е. чтобы она обрамляла только уравнения, но не скрытую строку. При этом отделить скрытую строку от матрица системы уравнений нельзя, поскольку тогда потеряется эффект подбора ширины. за который мы и боремся. В этой ситуации есть три выхода. Первый - подбор нужной ширины с помощью пробелов и скрытых символов, что неуниверсально и часто неудобно. Второй - не ставить слева знак + и фигурную скобку, но тогда нарушается вся соль записи, которая превращается просто в запись матрицы из нескольких строк, первая из которых скрытая. Третий выход подразумевает дорисовывание фигурной скобки внешними средствами: например, если Вы используете Math как редактор формул в Writer (как чаще всего и бывает), то можно дорисовать фигурную скобку с помощью соответствующей кнопки на панели инструментов Рисунок. ЗаключениеМожно придумать ещё много ситуаций, когда разметка Math сложна, малопонятна. Конечно, я не могу охватить сразу все случаи. Но Math хорош как раз тем, что достаточно понять логику и принципы его работы - и можно приниматься за решение практически любых задач касаемо набора математических формул. Именно эта черта делает Math довольно удобным в освоении и работе. Обсудить на форуме...
|
|
Последнее обновление ( 25.08.2012 г. ) |
След. » |
---|
MyOOo.ru, 2008 — 2024. Хостинг предоставлен компанией Netangels