groff
[Top][All Lists]
Advanced

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

Re: [Groff] multi-line macro arguments


From: Łukasz Stelmach
Subject: Re: [Groff] multi-line macro arguments
Date: Thu, 28 Apr 2016 00:20:41 +0200
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.4 (gnu/linux)

(Ted Harding) <address@hidden> writes:
> On 27-Apr-2016 18:24:41 Carsten Kunze wrote:
>> Łukasz Stelmach <address@hidden> wrote:
>> 
>>> I am developing a macro to print envelopes. Is it possible to pass a
>>> multi-line string (not necessarily defined with .ds) as a parameter
>>> for a macro?
>> 
>> what exactly would you like to do? Can you please give an example?
>> 
>> --Carsten
>
> There is a good point to Carsten's question, since things like
> laying out addresses on envelopes can depend on a lot of detail!

I'd like to have as simple API as possible. Something like Steffen
Nurpmeso's. I need groff only to typeset two diversions and place them
properly (I've already got the placement part quite right) according to
the paper size defined in the command line (-dpaper=c5l -P-pc5
-P-l). The content of the diversions is going to be assembled either
"manually" (say, I've got a single envelope to print) or by a properly
crafted script that reads a database.

> However, you may find the following useful (no doubt with
> some extra details to suit your formatting requirements).
> The basic idea is not to give a "multi-line string" as a single
> paramater, but to give the separate lines as separate arguments.
>
> This basic macro is called "envaddr" and is defined as follows:
>
> .de envaddr
> \f[HB]\s[15]\\$1\s0\fP
> .shift
> .br
> .while \\n[.$]>0 \{
^^^^^^^^^^^^^^^^^^^^

> \f[HB]\s[12]\\$1\s0\fP
> .br
> .shift
^^^^^^^^^^^

These are the bits I haven't known that somehow prevented me from
thinking about multiple (and variable number of) parameters.

> .\}
> ..
>
> You can then obtain the formatted output for an address, e.g.:
>
> .envaddr "Mr Obskewer" "999 Dead End" "Nowhere" "Caddo, OKLAHOMA" "USA"
>
> But you can equivalently input the components of the address on
> separate lines, if you terminate each line (except the last)
> with "\"
[...]
> So:
>
> .envaddr \
> "Mr Obskewer" \
> "999 Dead End" \
> "Nowhere" \
> "Caddo, OKLAHOMA" \
> "USA"

Or maybe yours looks even better.

> Hoping this helps.

It sure does. Thanks a lot.

-- 
Było mi bardzo miło.                                  --- Rurku. --- ...
>Łukasz<                                --- To dobrze, że mnie słuchasz.

Attachment: pgplpTLxCLdlw.pgp
Description: PGP signature


reply via email to

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