Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

28 Февраль 2017, 04:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Изменение шрифта в формулах Math - постфактум  (Прочитано 8542 раз)
0 Пользователей и 1 Гость смотрят эту тему.
haart
Новичок
*
Offline Offline

Сообщений: 15


« Стартовое сообщение: 25 Октябрь 2010, 19:15 »

Здравствуйте,

помогите плз, кто знает. Ситуация такая: есть документ, в нем - формулы. Много. Они набраны другим шрифтом (который стоял в дефолтных настройках - Liberation Serif). Текст документа - DejaVu Serif. Возможно ли поменять тип и размер шрифта в уже набранных формулах разом? Дефолтные настройки изменил, но оно сказало, что они будут применены только к НОВЫМ формулам, которые будут вводиться.

Что делать со старыми? Их реально очень много... )

Спасибо.
Записан
Рыбка Рио
Ветеран
*****
Offline Offline

Сообщений: 1 678


« Ответ #1: 25 Октябрь 2010, 20:45 »

Можно, запустите этот макрос:
Код:
REM  *****  BASIC  *****

Sub Main
Doc=ThisComponent
Nobj=Doc.DrawPage.Count-1
For i=0 to Nobj
Obj=Doc.DrawPage(0)
If Obj.supportsService("com.sun.star.text.TextEmbeddedObject") then
Obj1=Obj.getEmbeddedObject
Obj1.FontNameFunctions="DejaVu Serif"
Obj1.FontNameNumbers="DejaVu Serif"
Obj1.FontNameText="DejaVu Serif"
Obj1.FontNameVariables="DejaVu Serif"
Endif
Next
End Sub
(откройте Сервис/Макросы/Управление макросами/OOo Basic... (или Alt F11), вставьте этот макрос туда, а потом по Alt F11 запустите его из того же диалога, там есть кнопка "Выполнить")
Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Ветеран
*****
Offline Offline

Сообщений: 1 678


« Ответ #2: 25 Октябрь 2010, 21:04 »

Хотя, наверное, лучше вот такой вариант:
Код:
REM  *****  BASIC  *****

Sub Main
Doc=ThisComponent
Nobj=Doc.DrawPage.Count-1
For i=0 to Nobj
Obj=Doc.DrawPage(0)
If Obj.supportsService("com.sun.star.text.TextEmbeddedObject") then
Obj1=Obj.getEmbeddedObject
If Obj1.supportsService("com.sun.star.formula.FormulaProperties") then
Obj1.FontNameFunctions="DejaVu Serif"
Obj1.FontNameNumbers="DejaVu Serif"
Obj1.FontNameText="DejaVu Serif"
Obj1.FontNameVariables="DejaVu Serif"
Endif
Endif
Next
End Sub
Записан

ubuntu 12.04 + LibO3.6.0
convas
Старожил
****
Offline Offline

Сообщений: 310


« Ответ #3: 25 Октябрь 2010, 21:17 »

Меняет только в одной формуле документа.
Записан
Рыбка Рио
Ветеран
*****
Offline Offline

Сообщений: 1 678


« Ответ #4: 25 Октябрь 2010, 21:43 »

Меняет только в одной формуле документа.
Да, спасибо.
Там Obj=Doc.DrawPage(0) нужно заменить на Obj=Doc.DrawPage(i)
Итак, исправленный вариант:
Код:
REM  *****  BASIC  *****

Sub Main
Doc=ThisComponent
Nobj=Doc.DrawPage.Count-1
For i=0 to Nobj
Obj=Doc.DrawPage(i)
If Obj.supportsService("com.sun.star.text.TextEmbeddedObject") then
Obj1=Obj.getEmbeddedObject
If Obj1.supportsService("com.sun.star.formula.FormulaProperties") then
Obj1.FontNameFunctions="DejaVu Serif"
Obj1.FontNameNumbers="DejaVu Serif"
Obj1.FontNameText="DejaVu Serif"
Obj1.FontNameVariables="DejaVu Serif"
Endif
Endif
Next
End Sub
Записан

ubuntu 12.04 + LibO3.6.0
haart
Новичок
*
Offline Offline

Сообщений: 15


« Ответ #5: 26 Октябрь 2010, 14:42 »

Говорит, "Ошибка времени выполнения BASIC. Переменная типа Object не установлена".  Грустный
Записан
convas
Старожил
****
Offline Offline

Сообщений: 310


« Ответ #6: 26 Октябрь 2010, 14:44 »

Файл с ошибкой приложите.
Записан
haart
Новичок
*
Offline Offline

Сообщений: 15


« Ответ #7: 26 Октябрь 2010, 14:49 »

В смысле, текст приложить, где надо шрифт в формулах менять? Или вновь созданную библиотеку? (Если ее, то где ее искать?) )

При выполнении, оно указывает на эту строчку, мол, ошибочную:
Код:
If Obj1.supportsService("com.sun.star.formula.FormulaProperties") then

И на эту:
Код:
Nobj=Doc.DrawPage.Count-1
ругается так: Свойство или метод не найдены: DrawPage
« Последнее редактирование: 26 Октябрь 2010, 15:42 от haart » Записан
convas
Старожил
****
Offline Offline

Сообщений: 310


« Ответ #8: 26 Октябрь 2010, 15:32 »

В смысле - файл с формулами, которые надо поменять.
И куда вы записали макрос от Клио?
Записан
haart
Новичок
*
Offline Offline

Сообщений: 15


« Ответ #9: 26 Октябрь 2010, 15:56 »

куда вы записали макрос от Клио?

В "мои макросы". Макросы OOo не доступны для редактирования... ( Это - важно?

Вот файл.

[вложение удалено Администратором]
Записан
convas
Старожил
****
Offline Offline

Сообщений: 310


« Ответ #10: 26 Октябрь 2010, 16:47 »

Да, не работает.
Точнее, работает на части формул и сбивается из-за наличия других графических объектов.
Записан
Рыбка Рио
Ветеран
*****
Offline Offline

Сообщений: 1 678


« Ответ #11: 26 Октябрь 2010, 17:41 »

Вот так тогда должно работать:
Код:
REM  *****  BASIC  *****

Sub Main
Doc=ThisComponent
Nobj=Doc.DrawPage.Count-1
For i=0 to Nobj
Obj=Doc.DrawPage(i)
If Obj.supportsService("com.sun.star.text.TextEmbeddedObject") then
Obj1=Obj.getEmbeddedObject
If not IsNull(Obj1) then
If Obj1.supportsService("com.sun.star.formula.FormulaProperties") then
Obj1.FontNameFunctions="DejaVu Serif"
Obj1.FontNameNumbers="DejaVu Serif"
Obj1.FontNameText="DejaVu Serif"
Obj1.FontNameVariables="DejaVu Serif"
Endif
Endif
Endif
Next
End Sub
Записан

ubuntu 12.04 + LibO3.6.0
zeonchameleon
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #12: 28 Июнь 2016, 17:59 »

Спасибо большое за помощь!

Некоторое время назад я пользовался ваши макросом для массового форматирования формул. Вообще, если кому нужно, вот тут есть полный список всех свойств формул (не только шрифты), которые можно изменить: http://www.openoffice.org/api/docs/common/ref/com/sun/star/formula/FormulaProperties.html

Например, мне было полезно TopMargin, BottomMargin, LeftMargin и RightMargin - это отступы, которые также доступны через меню Формат - Интервалы - Обрамления. В макросе задается значение в процентах миллиметра (значение "100" = 1 мм).
Записан
zeonchameleon
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #13: 28 Июнь 2016, 18:06 »

Кто знает, помогите, пожалуйста.

Нужно написать похожий макрос, но только нужно изменить свойство для предыдущего по отношению к текущему положению маркера объекту формулы. То есть, имеем документ Writer с кучей формул Math. Все формулы имеют привязку "Как символ". Маркер установлен в произвольное место в документе (но ни один объект с формулой или иной OLE-объект не выделен, т. е. маркер где-то в тексте). Макрос должен найти и выделить ближайший предыдущий объект с формулой.

Спасибо.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 1 983


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #14: 29 Июнь 2016, 20:08 »

Нужно написать похожий макрос, но только нужно изменить свойство для предыдущего по отношению к текущему положению маркера объекту формулы. То есть, имеем документ Writer с кучей формул Math. Все формулы имеют привязку "Как символ". Маркер установлен в произвольное место в документе (но ни один объект с формулой или иной OLE-объект не выделен, т. е. маркер где-то в тексте). Макрос должен найти и выделить ближайший предыдущий объект с формулой.
Что такое "маркер" ? Вы так называете курсор? Или что-то другое?

Если ближайшую перед курсором формулу, то напрямую нельзя, но можно попытаться перебирать формулы пока не доберёмся до курсора.
Записан

Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!