Не работает стиль.

Автор Франц, 17 октября 2023, 08:56

0 Пользователи и 1 гость просматривают эту тему.

Франц

Доброе время суток всем!
В ячейках таблицы текст имеет различные гарнитуры (так получилось в процессе редактирования документа).
Применение стиля для ячейки не работает как ожидалось (стиль применяется только для части текста всей ячейки, а должен бы применяться ко всему содержимому).
Сброс настроек выполнялся.
Такое поведение наблюдалось и других версиях продукта.
Кроме того, при выделении блока ячеек стиль так же не всегда применяется ко всем ячейкам.
Более того, даже просто изменение гарнитуры шрифта не всегда применяется ко всем ячейкам.

Видео

Version: 7.6.2.1 (X86_64) / LibreOffice Community
Build ID: 56f7684011345957bbf33a7ee678afaf4d2ba333
CPU threads: 12; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win
Locale: ru-RU (ru_RU); UI: ru-RU
Calc: CL threaded

mikekaganski

Применение стиля не убирает ручное форматирование части текста внутри ячейки. То есть стиль - это форматирование, которое применяется, если только пользователь вручную не переопределил что-то для конкретных символов.

Очистите форматирование в меню Формат (Ctrl+M).
С уважением,
Михаил Каганский

Франц

#2
Спасибо! С этим понятно. Значит, перед применением стиля требуется выполнить очистку формата.

Вопрос №2. Тогда как быть с изменением гарнитуры шрифта? При выборе другой гарнитуры она не применяется ко всему содержимому ячейки. Это... как-то странно... Можно выполнять предварительно очистку формата. Но так не должно быть, на мой взгляд. Изменение атрибутов текста должно применяться ко всему содержимому ячейки. Получается, пользователь не может что-то изменить потому что он уже это изменил.
К тому же, бывают ситуации, когда это происходит не только для отдельной ячейки, но и для блока текста. Например, на листе используется несколько гарнитур. Выделяем лист и применяем какую-то конкретную гарнитуру. И не для всех ячеек она применяется!

mikekaganski

Когда Вы применяете любое форматирование к ячейке, Вы меняете именно свойства ячейки. Если Вы выделите какой-то текст внутри ячейки, Вы меняете его свойства. Свойства применяются послойно. Так что если Вы изменили свойства промежуточного слоя (ячейки), то свойства наивысшего уровня (напрямую применённые к части текста) всё равно имеют преимущество.

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

Поэтому вставку лучше проводить в виде простого текста.
С уважением,
Михаил Каганский

gabix

Цитата: Франц от 17 октября 2023, 09:26Но так не должно быть, на мой взгляд.

Ну тогда берите фонарь и кайло в руки сырцы и компилятор и делайте свою сборку.

Франц

Спасибо за разъяснение. Значит, действовать через очистку форматирования.
Только вот возникает такая трудность.
Что мне делать, если ячейки на листе имеют не только разную гарнитуру, но и цвет, и размер шрифта?
Потребовалось для всего листа изменить только гарнитуру на какую-то одну (для всех). Стиль применять бесполезно. Выделять лист и назначать гарнитуру - тоже не поможет. Только через очистку? Но тогда всё форматирование пропадёт.
Я не могу согласиться с Вами (и с LO) в том, что в этом случае (изменение гарнитуры, или другого отдельного атрибута), действие пользователя... (не знаю как сказать правильно)... искажается приложением. Слои, конечно хорошо и полезно, но пользователь имеет намерение вот для этого блока (ячейки) установить другую (и одинаковую для всего пространства) гарнитуру - и точка. Причём тут слои? На этом их компетенции закончились.

mikekaganski

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

Если Вас не устраивают базовые концепции, заложенные в ПО, Вы можете выбрать другое ПО, или предложить свои изменения, или даже сделать форк. Но вопрос "при чём тут то, как программа устроена" не вполне конструктивен.
С уважением,
Михаил Каганский

Франц

И всё-таки, что мне делать, что бы изменить гарнитуру шрифта блока или ячейки на одну определённую?

Вопрос этот не праздный. Работать приходится с таблицами (и из MSO в том числе), где для использования акцента на определённых блоках используется разное форматирование (и гарнитура, и цвет, и фон). И потребность в изменении гарнитуры для блока разовым действием возникает.

Отличие поведения LO и MSO в этом вопросе я заметил давно, думал просто что это неисправность такая в программе и мирился какое-то время. Но, каждый раз эта сверхзадача изменения форматирования ставит в тупик - что делать?! Вот в чём вопрос.
Как простым способом выполнить простое (в один клик, казалось бы) действие?

Ничего не говорю про возможности, архитектуру, правила, юзабилити и проч. Но что же получается, пользователю уже нельзя и шрифт поменять, и отдельно форматирование применить?
Не спорю с правилами LO, но может быть, стоит сделать какую-то настройку, изменяющую поведение приложения на более простое?

gabix

Цитата: Франц от 17 октября 2023, 10:13Потребовалось для всего листа изменить только гарнитуру на какую-то одну (для всех). Стиль применять бесполезно. Выделять лист и назначать гарнитуру - тоже не поможет.

Пример файла можно? Постоянно работаю и с родным форматом ODS, и с XLS(X), но с подобной проблемой не сталкивался. Разумеется, правильный способ — это задать нужные стили, но и ручное форматирование срабатывает.

mikekaganski

Посмотрите на этот документ. Попробуйте назначить ячейке какой-нибудь новый шрифт, без сброса цвета. Без назначения внутри ячейки это не получится.
С уважением,
Михаил Каганский

Франц

Цитата: gabix от 17 октября 2023, 11:17Пример файла можно? Постоянно работаю и с родным форматом ODS, и с XLS(X), но с подобной проблемой не сталкивался. Разумеется, правильный способ — это задать нужные стили, но и ручное форматирование срабатывает.

В самом начале темы, первый пост смотрите, там прикреплён файл.

gabix

У меня получилось сменить гарнитуру на Lucida Calligraphy. Подтверждение прилагается.

mikekaganski

Да, мой файл не показывает проблему, сорри.
С уважением,
Михаил Каганский

gabix

С файлом в начале темы забавно: если выделить весь лист, то да, смена гарнитуры не работает. Но если менять по отдельным ячейкам, получается.

Франц

Цитата: mikekaganski от 17 октября 2023, 11:26Посмотрите на этот документ. Попробуйте назначить ячейке какой-нибудь новый шрифт, без сброса цвета. Без назначения внутри ячейки это не получится.

Как сказать... Тот файл (вначале темы) получился таким можно сказать случайно. Не было цели в одной ячейке делать несколько гарнитур. Забудем пока про него.

Я пытаюсь сказать, что встречаются такие случаи, когда в БЛОКЕ ЯЧЕЕК, некоторые ячейки (целиком) имеют отличную гарнитуру от остальных (например, 100 ячеек, 90 как Times New Roman, 10 как Arial).

СЛУЧАЕТСЯ, что отдельное применение гарнитуры (например, изменить всё на Times New Roman) - не даёт желаемого результата. Часть ячеек из Arial изменяется, часть как Arial так и остаётся. И не понятно почему.  Вот о чём речь.

Сейчас под руками нет подходящей таблицы, нужно искать, если найдётся, прикреплю.

Ещё хочу сказать, что если внутри приложение работает со слоями, то может быть стоит обеспечить доступ к ним пользователю? Например, сделать команды, что-то типа "Объединить слои", "Выделить слой такой-то" и т.п.
Или же, для выделенного блока, при изменении какого-то атрибута, обеспечить интерфейс в виде окошка, где будет указано, что "для блока найдены такие-то гарнитуры, заменить все, или отметить галочками что менять а что оставить". А так, получается что программа втихомолку часть меняет, часть оставляет, а пользователю это не очевидно.