Created attachment 132479 [details]
Concept of sidebar menu and optional prefix/suffix dialog
Because the UI of LibreOffice is enforcing the user to use direct formatting (aka hard formatting) instead of styles, it would be useful to convert all direct formatting in a document with a mouse click into styles.
This is useful for LibO users
* who want solely working with styles and
* who are working with others who don't use styles but direct formatting.
Example request: https://ask.libreoffice.org/en/question/80619/transform-manual-formatting-into-styles/
- User clicks a menu entry or sidebar button named "Convert Formatting" (see attached concept image).
- With that function all formatting information which is not part of an existing style in the document will be saved as new style (paragraph formatting will be saved as paragraph style, word and character formatting as character style, table formatting as table style, etc.).
- Either the style names are completely pre-defined by LibO or the user has a choice for example for a prefix/suffix to style names.
- All direct formatting that was converted to styles should be cleared.
- The new styles will be listed in the appropriate Style and Formatting sidebar panel where the user can work with them like the other styles.
Pre-defined names for the new styles could be "Paragraph style 1" or "Paragraph style red" (if the name is influenced by detected style attributes, e.g. the paragraph font color is red) and "Character style 1" or "Character style red" (if a single word is colored or highlighted red).
Do you know there is a button to create a new style from selection? The button to the right on 'Styles and formatting'.
Create all at once I think would be a very complicate issue on what to create, paragraphs or character styles, how they should be applied, inheritances. Having a lot of styles without a meaning name to know what it does, to be reapplied.
Sorry but for me only a way to find a lot of issues.
Created attachment 132505 [details]
Test file with direct paragraph and text formatting (see content.xml)
m.a.riosv, thanks, your concerns are valid.
Creating a new style from selection is not a workaround for this bug because you don't know where in the document direct formatted content is lurking. It's not an option for a 50 pages long document.
It's clear that--for such a complex task--the user has to do manual rework after converting. For example, inheritances can't be set automatically, correct. But in my PoV that's not a problem. A user, who is only working with styles, wants to rework the result after converting anyway. From my own experience i can say that uncontrolled growth of direct formatting in a document goes hand in hand with too many formatting variants. With Find & Replace the user can replace "converted styles" with existing styles which makes the whole process of unifying and reworking much easier than today without having all formatting "canalized" in styles. Lot of styles without a meaning name are OK because then the user can edit/reapply/exchange it style after style within this nice styles list in the sidebar.
It shouldn't be impossible to find direct formatting and assign them a (new) style on xml level. In content.xml, direct formatting of paragraphs is assigned with the attributes style:name="Px" and style:family="paragraph". Character formatting has the attributes style:name="Tx" and style:family="text". (Style tags with only internal attributes like officeooo:paragraph-rsid or officeooo:rsid can be ignored.)
Then for example the formatting attribute fo:background-color="#ffff00" in a paragraph style tag can be moved to a new paragraph style tag with the same attribute and a new paragraph style name.
Created attachment 132508 [details]
File manualy changed as described in the workaround
Hi Thomas, here is a workaround: Open file using 7-Zip. Edit content.xml so that you exchange the tag name office:automatic-style to office:style (in start and end tag as well, but my 'XML Notepad 2007' does that automatically). Save and close editor. Confirm changing in 7-Zip. Close 7-zip. All former hard paragraph and text formatting will now be listed in the UI with there automatic names P1, P2, ... and T1, T2, ... respectively. Do it not in the flat fodt format, because there the page styles are inside the office:automatic-style too, and for page-styles this workaround does not work.
Regina, you are wonderful! Seems to be a simple solution but has some disadvantages which should be fixed by a developer.
In my complex test documents this workaround makes visible
* styles for elements with only LibO-internal attributes (like officeooo:paragraph-rsid/officeooo:rsid),
* styles that aren't used in the document anymore (which should be ignored or deleted automatically),
* styles without any attribute (which should be ignored or deleted automatically),
* styles without any practical meaning but were created sometime in the document's lifetime (e.g. <style:style style:name="P15" style:family="paragraph" style:parent-style-name="Text_20_body"><style:text-properties fo:background-color="transparent"/></style:style> which gives transparency to already transparent text paragraph - I think that the text was for example highlighted sometime in the past and LibO hasn't deleted this internal styles - it's an old document anyway),
* character styles for every comment (shouldn't that be a style of its own? maybe there is alredy a bug for it),
* paragraph styles for every index content level (with parent style "Contents 1", "Contents 2", etc. - I don't know for what that's good).
Perhaps you can be interested in this bug:
(In reply to m.a.riosv from comment #5)
> Perhaps you can be interested in this bug:
I know this bug and added it as See Also one day before your comment. As described in previous comments, only a marking is not being helpful in case of long documents or nested styles (e.g. lists with list styles, paragraph styles and character styles).
Definitely would be a useful feature to have and would propose it be in the Styles menu in Writer and Format > Styles menu in Calc, if also implemented there.
Regarding the workflow, i presume some users would prefer to have it automated, while others would prefer to do it step by step so they could name things to their exact liking as well as to ignore changes they dont want to make.
Isn't the batch mode for "new style from selection" - to give the request a different name - a perfect example what should go into an extension?
(In reply to Heiko Tietze from comment #8)
> Isn't the batch mode for "new style from selection" - to give the request a
> different name - a perfect example what should go into an extension?
Definitely could be an extension, but if LO wants to promote the usage of styles, then it has to make it easy for users to convert their direct formatting documents to styles.
In the following Google docs document some ideas are written down similar to this bug report: https://docs.google.com/document/d/1onHj7GLNs-x9jMJBRsYaRLv_xsN3UJhP13P690L6ci8
Convert Direct Formatting to Styles - This command would skim through a document for direct formatting combinations and provide an easy means of creating it to a new style or set that particular combination to an existing style.
The goal is to get a document with zero direct formatting.
Req1 : the tool crawls the entire document.
Req2: as soon as a paragraph with direct formatting applied to all the paragraph is found, if the combination existing style (style1) + direct formatting already exists under name style2, then the style of the paragraph is replaced by style2.
Req3: as soon as a paragraph with direct formatting applied to all the paragraph is found, if the combination existing style (style1) + direct formatting does not exist, the text is selected, ensured visible. A popup is proposed where the user is asked. ...
Req 4: same as Req 2 for Character styles
Req 5: same as Req 3 for Character styles
Req 6: at the end of the crawl, a popup asks what to do with unused styles.
(In reply to Thomas Lendo from comment #0)
> Because the UI of LibreOffice is enforcing the user to use direct formatting
which is not true
> (aka hard formatting) instead of styles, it would be useful to convert all
> direct formatting in a document with a mouse click into styles.
which is questionable. Because direct formatting, applied in larger amounts than just two or three kinds, possibly means that people hardly know what they do. And then suggesting 'meaningful names' for elements that have formatting that may or may not be well thought about, creates a smelly soup.
IMO a slippery path, not to spend time and create even more options in the UI.
Repeating my comment 8, let's do it as extension. What's your opinion, Mike?
No objections against any extensions. But I highly doubt practical usefulness of this; all concerns in comment 1 are valid; and everything mentioned e.g. in comment 4 (e.g., styles with transparent paragraph background) might turn out to be useful. Also same formatting would become same style, while in practice, it's often that several different styles have the same formatting, and serve as logical tags.
I seriously propose to spend more time instead in a concept of UI that would address the preamble in comment 0:
> Because the UI of LibreOffice is enforcing the user to use direct formatting
> (aka hard formatting) instead of styles
... I want to continue the phrase: "It would be useful to have a Muffin mode that doesn't suffer from this".
So up to be implemented by a kind extension developer.