groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] Applying commands to all pages


From: Steffen Nurpmeso
Subject: Re: [Groff] Applying commands to all pages
Date: Fri, 11 Nov 2016 14:29:08 +0100
User-agent: s-nail v14.9.0-pre2-9-gebb59f7

Hello.

Is there any particular reason this is getting private?
I would prefer public lists since answers to your questions can
very well be interesting for other readers of the ML.  I really
would like to forward this answer to the ML unless you speak
against it.  What is wrong with that?  Say, come on, i'll Cc: it
right away.

"Brendan Caluneo" <address@hidden> wrote:
 |the package can format MLA style essays, but I am having a problem \
 |with one word 
 |widow lines. For example, given the line "The highest rating it can \
 |receive: AO for Adults Only.", the page breaks after the first "the" \
 |but the word 
 |"highest" is put in the header with the page numbering while the rest \
 |of the sentence continues on an inch from the top as it should. Something \
 |like:
 |
 |The
 |
 |- page break (this is the header for page numbering)-
 |
 |highest 

That i don't understand.  Roff uses special requests for header
and footer lines; if you want to do that in some special way so
that it serves your purpose, you should create .di (versions) and
dump them out at appropriate times.

 |Caluneo 2
 |
 |-spacing (back to where the essay text should go)-
 |
 |rating it can receive.
 |
 |I've read pages elsewhere about how to fix this, but none of the solutions \
 |they yielded worked for me.

Well the manual has section 5.16 on "Page Control".
The request to deal with orphan lines is .ne, and you will likely
have a hard time getting the paragraphs right.  E.g., i have
a paragraph macro that is (and i have ".blm PARA", too, and yes
the requests are all .als aliases of real roff requests)

  .NUMBER #PARA_SPACE 1v
  .NUMBER #PARA_INDENT 0
  .MACRO PARA
  .\" FIXME
  .  br
  .  \" Suppress any spacing before _and_ at (!) pagestart
  .  ie ((\\n[ROFF:#VERT_POS]u > \\n[S:#PAGE_START]u)) \{\
  '     sp \\n[#PARA_SPACE]u
  .     if (\\n[ROFF:#PAGENO] = 1) \{\
  .        if !d S:TOP_BOXES_SET .S:CHECK_TOP_BOXES

I indeed have some code for doing my own headers, too, and to be
able to get that for the first page (as opposed to follow pages
where the page trap .wh comes into play) i seem to have found no
better solution than this.

  .     \}
  .     if (\\n[ROFF:#VERT_POS] >= \\n[S:#PAGE_END_CRITICAL]) \{\
  .        ne \\n[#ORPHAN_LINES]

I have a page layout calculator which gets sprung for each page,
too, and it sets a critical dimension (as via

  .  nr S:#PAGE_END_CRITICAL \\n[S:#PAGE_END]u-(\\n[#ORPHAN_LINES]u*1v)

) that is then used to adjust .ne requests on the fly, whenever
a paragraph is newly opened.  I.e., you need to (or should) have something
that can be sprung via traps as well as because of explicit user
requests, say a new paragraph.  Otherwise you will sooner or
later have a layout problem that is not solvable except by placing
command into the document itself, and that is something that i for
one really dislike a lot.

  .     \}
  .  \}
  .  if \\n[#PARA_INDENT] \{\
  .     ie d S:PARA_NOINDENT .rm S:PARA_NOINDENT
  .     el .ti \\n[#PARA_INDENT]u
  .  \}
  ..

Hope this helps,
Ciao from gray Germany,

--steffen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]