
Hello, On Wednesday 18 June 2008 22:13, Alfonso Acosta wrote:
Hi,
Can anyone give a good explanation of what ribbonsPerLine means?
Maybe it would be better to simply ask for the meaning of ribbon in this context. The documentation is totally meaningless to me: "reibbonsPerLine: Ratio of ribbon length to line length".
7.4 Choosing a Pretty Layout
Now that we have designed combinators for constructing documents with many
In the paper "The Design of a Pretty-printing Library" by John Hughes (http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps) that introduced this pretty printing library, the ribbon concept is introduced like this (apologies for the layout, please use the original .ps file for accuracy): possible layouts, it is time to discuss choosing among those alternatives. Many prettyprinters aim simply to avoid exceeding a given page width. However, we found that using this criterion alone tends to produce layouts such as
for i = 1 to 100 do for j = 1 to 100 do for k = 1 to 100 do a[i,j,k] := 0
which fits on a page, but cannot be described as pretty. We therefore impose
an additional constraint limiting the number of characters on each line (excluding indentation) to a smaller number. The idea is to avoid placing too much information on a line -- even a line that begins at the left margin. Under this constraint the example above might instead be laid out as
for i = 1 to 100 do for j = 1 to 100 do for k = 1 to 100 do a[i,j,k] := 0
In general a pretty layout will consist of a ribbon of text snaking across
the page. To see that this is reasonable, ask yourself: `is the prettiest layout on an infinitely wide page really to place everything on one line?' So pretty printing is guided by two lengths: The line length and the (smaller) ribbon length. The ribbons per line ratio that you can specify is simply a way of specifying the ribbon length relative to the line length. So, for example, if the line length is 80 and the ratio is 1.5, the ribbon length would be 80/1.5 which is rounded to 53.
...
Best regards Thorkil