Автор Тема: [РЕШЕНО] Проблема с применением переопределенных стилей  (Прочитано 4317 раз)

Оффлайн Жаворонков Александр

  • Наблюдатель
  • *
  • Сообщений: 4
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
Доброго времени суток!
Столкнулся с проблемой копирования текста и использования стилей Open Office.
Сценарий работы:
  • Открываю файл A с переопределенными стилями текста STYLE_A(В качестве примера использую "Основной текст"
  • Открываю файл B с переопределенными стилями текста STYLE_B
  • Копирую текст стиля STYLE_A из файла A в файл B
  • К скопированному тексту в файле B пытаюсь применить стиль "Основной текст"(STYLE_B)

Ожидаемый результат:
Скопированный из файла A текст в файле B должен использовать стили STYLE_B

Фактический результат:
Как правило, используются стили STYLE_B, НО в редких случаях скопированный текст отображается как "Основной текст", но при этом использует родные стили STYLE_A

Кто-нибудь знает, из-за чего возможна такая проблема?
« Последнее редактирование: 20 Январь 2022, 13:00:05 от Жаворонков Александр »

Оффлайн Санчо

  • Администратор
  • Полноправный участник
  • *****
  • Сообщений: 235
  • Репутация: 0
  • Пол: Мужской
  • Алексей Харламенков
    • Просмотр профиля
Изложение сценария похоже на бред.

Алгоритм действий в программе не должен подразумевать предположений и домысливаний!

1. Открываю файл A с переопределенными стилями текста STYLE_A (В качестве примера использую "Основной текст"
2. Открываю файл B с переопределенными стилями текста STYLE_B

Что значит - с переопределёнными стилями? Какими? - их в OpenOffice Writer 5 типов. Это стандартные стили, или стили пользовательские?
Переопределение - что значит? - изменение названия, или каких-то параметров, или и то, и то?

Цитировать
3. Копирую текст стиля STYLE_A из файла A в файл B

Нет такой функции, как копирование текста стиля! Ты копируешь что-то (что?) в окне документа, или загружаешь стили через Стилист или.... да ещё много вариантов.
Какие именно действия предпринимались. Пошагово с точным описанием действий и точным названием команд и пунктов меню.

Цитировать
4. К скопированному тексту в файле B пытаюсь применить стиль "Основной текст"(STYLE_B)

Каким макаром? Ибо, при копировании текста из документа в документ - копируются все его атрибуты, включая стиль. Невозможно эти действия разорвать. Но у тебя получилось.
Поэтому - какие именно действия предпринимались. Пошагово с точным описанием действий и точным названием команд и пунктов меню.

Цитировать
Ожидаемый результат:
Скопированный из файла A текст в файле B должен использовать стили STYLE_B

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

Цитировать
Фактический результат:
Как правило, используются стили STYLE_B, НО в редких случаях скопированный текст отображается как "Основной текст", но при этом использует родные стили STYLE_A

Здесь крайне важны детали, которые отсутствуют в заданном вопросе.

Приложи оба (или сколько нужно) тестовых файлов, в которых будет видна описанная ситуация.

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

Оффлайн Жаворонков Александр

  • Наблюдатель
  • *
  • Сообщений: 4
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
Добрый день!
Извиняюсь, что мой вопрос оказался непонятным, в этот раз я постараюсь объяснить все максимально правильно и подробно.
Специально пошел моделировать ситуацию, произошедшую вчера - и удивился, когда у меня не получилось этого сделать.

У меня есть файл(A), в котором есть текст, например "мама мыла раму". В исходном документе этот текст имеет стиль "основной текст" с размером шрифта 12px
При этом у меня есть другой файл(B), в котором стиль "основной текст" имеет размер шрифта 14px
При копировании текста "мама мыла раму" из A в B поведение такое, какое я ожидаю - в файле B текст "мама мыла раму" имеет стиль "основной текст" с размером шрифта 14px
Но буквально вчера почему-то возникала ситуация, что текст "мама мыла раму" мог иметь шрифт 12px в файле B

Поэтому я промоделировал всю последовательность шагов вчерашнего дня и пришел к ряду выводов:
Я действительно обнаружил такие фрагменты текста(пусть это будет "папа мыл раму"), которые имеют в родном документе стиль "основной текст" с размером шрифта 12px, и при копировании этого текста в другой файл(где "основной текст" имеет 14px) размер шрифта так же остается 12px.
Однако!
Я обнаружил, что на самом деле проблема начинается не в новом файле, а еще в исходном.
Например, у нас есть текст "пес мыл раму". Он помечается "базовый" и использует 14px Arial. Мы применяем к нему стиль "основной текст", и он использует форматирование и стили "основного текста" - нужные отступы, 12px Calibri.
А еще у нас есть текст "папа мыл раму", который также помечается как базовый, и также использует 14px Arial. Но применяя к нему стиль "основной текст", он использует все форматирование стиля "основной текст", ЗА ИСКЛЮЧЕНИЕМ размера шрифта с типа шрифта. То есть он также продолжает оставаться 14px Arial(Хотя должен быть 12px Calibri)

Пользуясь методом научного тыка обнаружил, что единственное отличие форматирования между текстом "пес мыл раму" и "папа мыл раму" крылось в пункте меню, который можно вызвать, кликнув ПКМ на выделенный текст, далее пункт "Символы...". И как раз там указан шрифт "Arial" и размер 14px. И как раз он переопределяет стиль "основной текст". И как раз из-за него при копировании остаются стили, указанные в нем!

В общем, разобрался с проблемой - оказывается, просто не там копал

Оффлайн Санчо

  • Администратор
  • Полноправный участник
  • *****
  • Сообщений: 235
  • Репутация: 0
  • Пол: Мужской
  • Алексей Харламенков
    • Просмотр профиля
Изложенное описание внесло-таки ясность.

Есть две сущности - ручное форматирование и стиль, которые применяются одновременно к тексту или отдельным символам.
Ручное форматирование имеет абсолютный приоритет. Иначе и быть не может. Иногда ручное переопределение может много раз меняться (оно уже приоритено над стилем) и последнее значение совпадает с текущей установкой стиля. Но оно - ручное. При изменении стиля - данная установка сработает и данный текст не изменится.

Имеется сложное наложение свойств абзаца и символов.

При копировании текста из файла в файл переносится и вся совокупность свойств - и стили (абзаца, символов, списка) и ручного форматирования.

При вставке в целевой файл - если у вставляемого текста есть стили, имена которых уже есть в файле, то будут применены стили целевого файла. Если такого стиля нет - он будет создан в целевом файле. Затем на вставленный текст накладываются скопированные с текстом атрибуты ручного форматирования, имеющие абсолютный приоритет.

Поэтому, есть такая команда - форматирование по умолчанию. Она нужна для того, чтобы сбросить всё ручное форматирование и оставить только атрибут стиля абзаца.