Writer: draft layout and hide whitespace [long]

Ashod Nakashian ashnakash at gmail.com
Wed Jul 15 09:45:45 PDT 2015


I took a stab at a rather old and popular request, with some positive
results. Please see attached screenshot.

Bug 39080 - Hide white space between pages in 'print layout'
<https://bugs.documentfoundation.org/show_bug.cgi?id=39080> asks for a way
to minimize vertical (between pages) whitespace. This is very similar to a
feature originally found in MS Word. My implementation satisfies this
request (patch attached, no UI or config changes though).

There are two currently-open entries related to the above (and many more
duplicates): Bug 37967 - VIEWING: Option like "MS WORD's normal view" needed
<https://bugs.documentfoundation.org/show_bug.cgi?id=37967> and Bug 67698 -
VIEWING: Implement 'Normal View' that includes the real page numbers in a
'Web Layout'-type view
<https://bugs.documentfoundation.org/show_bug.cgi?id=67698>

I think there is a lot of merit to these feature requests and would be good
if we had a plan of how and what we'd like to add to Writer in both the
short and long terms.

To kick off the discussion, I have made an experimental and functional
attempt the 'Hide Whitespace' feature, which I'm happy to report works (on
my naive test cases). However, it's not clear if this should be a
stand-alone feature, or (as some suggested) part of a new layout.


There are three good possibilities that I can think of:
1) Make this feature independent of layout, and let the user enable/disable
at will.
2) Add a new 'draft' layout that explicitly hides whitespace.
3) Hybrid: Hide whitespace is a rich feature that makes a new layout moot.
4) <Your Suggestion Here>

*1::Hide Whitespace::*

The feature (as I implemented and am suggesting,) when enabled, removes
headers and footers, reduces the top and bottom margins to a bare minimum
(could be configured) and removes the subsidiary lines (the corner lines of
the page body). I also reduced the gap between pages to make the feature
more effective (see attached screenshot if you haven't already).

In practice, we probably would want to have an option to set the top/bottom
margin sizes in this mode and can even have the page gap configurable.
Page-break fly should be used to enable/disable the feature.

*2::The Draft Layout::*

Some have proposed (see entries above) to have a new "draft" layout (both
as a product differentiator and because it's good for productivity). The
idea is that in this mode no styles will be applied, just the text.
Furthermore, it makes sense to have a continuous page (similar to the Hide
Whitespace feature). However unlike the web layout, the page width will be
used, probably without the side margins though.

This doesn't sound trivial work at all. In fact, it might be rather
complicated, considering that both rendering and layouting probably always
take styles into account. So the changes can potentially be huge.

But if this is a feature we want to pursue, it makes sense to plan
according and forgo the Hide Whitesapce feature (although both could live
together, which I actually like).

*3::Hybrid::*

The hybrid solution I'm proposing would be identical to the draft layout,
except we will apply the styles as normal. There will be pagination, but
pages will be free from margins (or have nominal ones). Pages would look
continuous, with the page-break fly to mark boundaries of pages.

This should be far easier than the draft layout (in fact, we might even
make this a layout, rather than a feature). It will sacrifice only the
request to suppress styles, which seems to be a less important request than
reducing whitespace waste.

-----

Who has strong opinions on this? Who does this affect the most? What do we
want to see in Writer in 2016?

Personally, I think adding the Hide Whitespace feature as I implemented
with a config entry and UI would give us the biggest bang for the buck in
the short term. We can later add either the hybrid suggestion or the draft
layout separately at a later time.

Disclaimer: I don't claim to have all the know-how to tackle this (though
do have the skills). In fact, if it weren't for my experience in exploring
unfamiliar code, this would have been virtually impossible to figure on my
own (it took me a full day to create the patch below and two evening trying
to figure out the UI changes to add a menu entry etc. and still need help
with the UI). I still need help to implement any of the above in a
production-ready way. Not to mention to decide what to implement! I also
can't guarantee my time on a long-term project that this might turn into.
However I took the first step and am willing to go much further.

So let us hear your opinion!
Thanks for reading,
Ash
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150715/57df77e9/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: HideWhitespace.png
Type: image/png
Size: 45147 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150715/57df77e9/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-tdf-39080-Hide-white-space-between-pages-in-print-la.patch
Type: application/octet-stream
Size: 4203 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150715/57df77e9/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-tdf-39080-Hide-white-space-between-pages-in-print-la.patch
Type: application/octet-stream
Size: 2600 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150715/57df77e9/attachment-0001.obj>


More information about the LibreOffice mailing list