groff
[Top][All Lists]
Advanced

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

Re: [Groff] string variable in pic


From: Ted Harding
Subject: Re: [Groff] string variable in pic
Date: Sun, 11 Dec 2005 21:29:48 -0000 (GMT)

On 11-Dec-05 Heinz-Jürgen Oertel wrote:
> Thanks Ted,
> The reason for placing some values in a "global" variable is
> avoiding a large number of macro arguments having always the same
> value. Like with the  variable "slant" in my example.
> Look at the example I'm just trying:
> 
> ----------------
> .fam H
> .PS
> 
>     slant = .2
> 
> 
> define arrowbox { [
> 
>     box xslanted -slant color $1 $3
>     box xslanted slant color $2  $3 \
>       with .ne at last box.se + ( -slant, 0)
>     # place a box centered above both slanted boxes
>     box ht 2*boxht invisible \
>       with .ne at 1st box.ne + ( -(slant/2),0)
> ] }
> .PE
> 
> .PS
> arrowbox("darkgreen", "darkgreen") \
>       "\m[white]1st"  "first" "colored" "box"
> arrowbox("darkgreen", "darkgreen") \
>       "2nd"  "second" "colored" "box"
> arrowbox("darkgreen", "darkgreen") \
>       "3rd"  "third" "colored" "box"
> arrowbox("darkgreen", "darkgreen") \
>       "4th"  "fourth" "colored" "box"
> .PE
> 
> .PS
> slant = .3
> arrowbox("tomato", "tomato") \
>       "\m[black]1st"  "first" "colored" "box"
> move -0.2
> arrowbox("tomato", "tomato") \
>       "2nd"  "second" "colored" "box"
> move -0.2
> arrowbox("tomato", "tomato", outline "white") \
>       "3rd"  "third" "colored" "box"
> move -0.2
> arrowbox("tomato", "red") \
>       "4th"  "fourth" "colored" "box"
> .PE
> ---------------------
> The result is attached.
> Is the only way extending pic to accept strings in expressions, or at
> least 
> in variable assignments?
> 
>  Regards 
>    Heinz

I have found out a way to do it -- essentially, you use the macro
mechanism, but the trick is to define the macro so that the
quotation marks are included in the replacement text.

To take your simple box example as illustration:

.PS
define bcolor { "red" }

define cbox {
    box wid $1 color bcolor
}
.PE
.PS
cbox(1) "this is red"
define bcolor { "yellow" }
cbox(1) "this is yellow"
.PE 

This ensures that occurrences of

  bcolor

are replaced by

  "red"

or

  "yellow"

*including* the quotation marks!

Best wishes,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <address@hidden>
Fax-to-email: +44 (0)870 094 0861
Date: 11-Dec-05                                       Time: 21:29:45
------------------------------ XFMail ------------------------------




reply via email to

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