[NTG-context] \placelist disturbs grid?

Hans Hagen pragma at wxs.nl
Fri Aug 5 11:01:26 CEST 2005


Vit Zyka wrote:

> Hans Hagen wrote:
>
>> Vit Zyka wrote:
>>
>>> Hello Hans, Taco, and the next gurus,
>>>
>>> sorry for bother with another thing I can not understand. Very high 
>>> glyphs like \v S disturb grid in the \placelist. The same glyph in 
>>> the common paragraph with the same (intentionally) interline setting 
>>> preserves grid:
>>>
>>> ---------------------------------------
>>> \setupbodyfont[10pt,rm]
>>> \setupinterlinespace[line=12pt]
>>> \setuplayout[grid=yes,width=8cm]
>>> \showgrid
>>>
>>> \writetolist[section]{}{See the next line:}
>>> \writetolist[section]{}{\v Sejba}
>>> \writetolist[section]{}{Another list line}
>>>
>>> \starttext
>>> \v Sejba\par
>>> Here grid is OK, but in \type{placelist}:
>>>
>>> \placelist[section]
>>>
>>> no!
>>> \stoptext
>>> ------------------------------------------
>>> I was looking in definitions for some font-size dependent line 
>>> setting, I also tried to
>>> \setuplist[section]{style=\baselineskip=12pt\lineskiplimit=-10pt}
>>> but without success to lounging on the grid.
>>
>>
>>
>>
>> this is the default ratio:
>>
>> \setupinterlinespace
>>  [height=.72,
>>   depth=.28]
>
>
> Thank you Hans; after some experimenting I understood:
> - height and depth in \setupinterlinespace are baseline-ratio/size of 
> struts (add description to tex-show)
> - some my chars (/,\v S, \tfa, ...) oversized \strut size of any ratio
> - list items are typeset with struts (perhaps all alternative)
> - only alternative without strut is 'none' with command=\Mycommand def
>
> So I do know how to preserve grid. But I do not know HOW TO TYPESET 
> \Mycommand TO FIT THE PARAGRAPH WIDTH. It seem it is not in the 
> restricted horizontal mode and continue on one long line. And another 
> question/request: can the list distance param (alternative d,...) be 
> glue instead of skip? For better line fitting.
>
> example:
> ------------------
> \setupbodyfont[10pt,rm]
> \setupinterlinespace[line=12pt,height=.77,depth=.23]
> \setuplayout[grid=yes,width=8cm]
> \showgrid
>
> \setuplist[section]
>   [style=\tfd,alternative=none,command=\MyListItem]
> \def\MyListItem#1#2#3{{\tfb (#1-#2-#3) }}
>
> \starttext
> \writetolist[section]{}{See the next line}
> \writetolist[section]{}{\v Sejba}
> \writetolist[section]{}{Another list line}
> \writetolist[section]{}{And the last one}
>
> \lineskiplimit=-10pt
> Line\par
> Anothet line of \v Sejba\par
>
> \placelist[section]
>
> \strut  %% should be! why?
> After list line.
>
> \stoptext
> ------------------
>
> Vit

\setuplist
  [section]
  [style=\tfd,
   alternative=none,
   after=\blank,
   before=\blank,
   command=\MyListItem]

\setuplist
  [section]
  [style=\tfd,
   alternative=command
   command=\MyListItem]

in core-lst you can see how the alternatives are defined 

ok, let's give you a bonus (goes in cont-new): 

\unprotect 

\def\definelistplacement
  {\dodoubleempty\dodefinelistplacement}

\def\dodefinelistplacement[#1][#2]%
  {\setvalue{\@@dodolistelement#1}%
     {\doifelsenothing{#2}
        {\getvalue{\@@dodolistelement\v!command}}%
        {\executeifdefined{\@@dodolistelement#2}
           {\getvalue{\@@dodolistelement\v!command}}}%
     \setvalue{\??li\currentlist\c!command}%
       {\getvalue{\@@dodolistelement::#1}}}%
   \setvalue{\@@dodolistelement::#1}}

\definelistplacement[MyListItem][none]#1#2#3%
  {\listparameter{style} (#1 - #2 - #3) }

\protect 

now you can say: 

\definelistplacement[MyListItem][none]#1#2#3%
  {\listparameter{style} (#1 - #2 - #3) }

\setuplist
  [section]
  [style=\tfd,
   alternative=MyListItem,
   after=\blank,
   before=\blank]

(btw, watch how one can ask for listparameters)  

\definelistplacement[MyListItem][none]#1#2#3%
  {\listparameter{style} (#1 - #2 - #3) }

\setuplist
  [section]
  [style=\tfd,
   alternative=MyListItem,
   after=\blank,
   before=\blank]

\definelistplacement[MyListItem][none]#1#2#3%
  {\listparameter{before}
   \listparameter{style} (#1 - #2 - #3) 
   \listparameter{after}}



Hans 
-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------



More information about the ntg-context mailing list