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

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

20 Июнь 2018, 21:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [Решено]Форматирование отдельных литералов по условию  (Прочитано 1573 раз)
0 Пользователей и 1 Гость смотрят эту тему.
argnist
Новичок
*
Offline Offline

Сообщений: 5


« Стартовое сообщение: 8 Июнь 2016, 18:04 »

Компонент: Writer
Версия продукта: 5.1.2
Сборка: LibreOffice
ОС: Microsoft Windows 7

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

Заранее благодарю за помощь.
« Последнее редактирование: 9 Июнь 2016, 23:53 от argnist » Записан
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 371



« Ответ #1: 8 Июнь 2016, 20:13 »

это делается при помощи стилей. сейчас поищу статью, как раз про это...

http://librerussia.blogspot.ru/2014/11/LibO-Styles-003.html - листайте/ищите до "Условные стили"
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
argnist
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #2: 8 Июнь 2016, 20:23 »

kompilainenn
Спасибо за ссылку.
До регистрации на этом форуме и создания поста я уже читал этот документ.
К сожалению, я вынужден согласиться с автором, что "я не нашел практического применения данной функции."

Эта функция просто меняет стиль абзаца на указанный, если находится рядом с контекстным условием.

Насколько я за последние пару часов понял, мне нужно сочинить макрос для этого.
Он должен искать регулярные выражения и при совпадении, заменить этот текст форматированным таким же.

Но пока я очень слаб в Бейсике Либры и всё, что я пишу - не работает или работает не так как надо Грустный

Написал Питоньяку, надеюсь, ответит.
Записан
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 371



« Ответ #3: 8 Июнь 2016, 21:11 »

Эта функция просто меняет стиль абзаца на указанный, если находится рядом с контекстным условием.
а почему именно стиль абзаца? разве нельзя сделать условным стиль символа?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
argnist
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #4: 8 Июнь 2016, 21:53 »

Эта функция просто меняет стиль абзаца на указанный, если находится рядом с контекстным условием.
а почему именно стиль абзаца? разве нельзя сделать условным стиль символа?
хорошо, сделал я кастомный стиль символа
текст:
one two three two one four two three three
Допустим, я хочу раскрасить two в красный
как стилю символа объяснить, что он работает не на выделение, а на конкретные вхождения?
Записан
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 371



« Ответ #5: 8 Июнь 2016, 22:01 »

беру свои слова назад, стиль символа не может быть условным=)

тогда ждем местных гуру =)
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
argnist
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #6: 9 Июнь 2016, 13:29 »

беру свои слова назад, стиль символа не может быть условным=)

тогда ждем местных гуру =)
вот и я чувствую, что через пару дней буду ставить сдк и писать на джаве (изучаю я ее) свой плагин для либроффиса
Записан
maksvlad
Постоялец
***
Offline Offline

Пол: Мужской
Расположение: Иркутск
Сообщений: 116


« Ответ #7: 9 Июнь 2016, 13:35 »

А что мешает искать по стилю?
вот пример макроса, который удаляет слово по цвету.
переделать на изменение цвета, труда не составит
Код:
function RemoveColor(vRGB)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

'--- This function replaces any string with another one, using or not the Regular Expressions ---
dim oReplace As Object
dim SrchAttributes (0) As new com.sun.star.beans.PropertyValue
dim ReplAttributes (0) As new com.sun.star.beans.PropertyValue
oReplace = ThisComponent.createReplaceDescriptor()
'Regular expression. Match any text
with oReplace
.SearchString = ".*"
.ReplaceString = " "
.SearchRegularExpression = True
.searchStyles = True
.SearchCaseSensitive = False
.SearchAll = True
end with
SrchAttributes(0).Name = "CharColor" 'Change
SrchAttributes(0).Value = vRGB 'Change
' MsgBox(SrchAttributes(0).Name &","& SrchAttributes(0).Value
oReplace.SetSearchAttributes(SrchAttributes())
ThisComponent.replaceAll (oReplace)
rem ----------------------------------------------------------------------
' dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
end function
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 896


« Ответ #8: 9 Июнь 2016, 14:39 »

Если есть задача сверстать большую красивую книжку с цветными словами и множестом - можно копнуть и добавить свой модуль в Питньяковское расширение - Раскрась макрос (MacroFormatterADP). 
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
argnist
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #9: 9 Июнь 2016, 23:07 »

А что мешает искать по стилю?
мешает вот это:
Но пока я очень слаб в Бейсике Либры и всё, что я пишу - не работает или работает не так как надо


вот пример макроса, который удаляет слово по цвету.
Большое спасибо, сейчас опробую!

Если есть задача сверстать большую красивую книжку с цветными словами и множестом - можно копнуть и добавить свой модуль в Питньяковское расширение - Раскрась макрос (MacroFormatterADP).
Я бы и с радостью. При его использовании мой райтер крашится. Что только не делал.

Господа, тема закрыта. Я только зря морочил Вам всем голову.

Моя проблема решается так:
В стиле, с которым мне нужно работать - просто меняю шрифт на отличный от основного, например Comic Sans.
Открываю диалог замены.
Включаю режим "Регулярные выражения".
В поле "Найти" пишу первое|второе.
Жму Формат, выбираю собственно этот узнаваемый шрифт.
Затем в поле "Заменить на" пишу $0 (это означает замену всех вхождений моей регулярки) и также жму Формат, задаю там нужные мне параметры и жму Заменить Всё.

Большое спасибо всем откликнувшимся.
« Последнее редактирование: 9 Июнь 2016, 23:52 от argnist » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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