Hello,

I'm still trying to typeset a "grid-keeping" list (or table).
Wolfgang Schuster supplied me off-list with the attached module.
This works fine except for one problem:

Only the first few lines are placed on the grid, then the grid is lost.

After the next pass (i.e. after the next "texmfstart texexec testfile"),
some more lines are placed on the grid.
(So I need many passes to typeset the complete list correctly).

Why? Any idea?

(I fiddled around with \synchronizegrid, \placeongrid, \moveongrid, and
\startlinecorrection \stoplinecorrection, but none of these seems to work.)

You could try the effect with the following example:

%%%%%%%%%%

\setuplayout[grid=yes, columns=2]
\showgrid
%\showstruts

\usemodule[gridlist]

\starttext

\startcolumns[n=2, balance=no]
%% (columns are not necessary to show the effect)

\dorecurse{20}{
  \zeichen{0001}{a}{first letter}{}%
  \zeichen{0002}{b}{second letter}{}%
  \zeichen{0002}{c}{third letter, this one has a longer entry
                    which needs more than one line}{}%
}

\stopcolumns

\stoptext

%%%%%%%%%%


(This should result in an annotated list of mathematical symbols,
showing the Unicode number, the math symbol, and some explanation (and
where the explanation could need more than one line); quite similar to
the list I published in "Detailtypografie" (2nd ed. 2004), but for
another -- quite pressing -- project.)


Johannes

-- 
Johannes Kuester
typoma

mailto:[EMAIL PROTECTED]
http://www.typoma.com
\startmodule[gridlist]

\unprotect

\def\????ze{@@@@ze} % ZEichen

\newcount\zeichencolumn

\def\setupzeichen
  {\dodoubleempty\dosetupzeichen}

\def\dosetupzeichen[#1][#2]%
  {\ifsecondargument
     \dodosetupzeichen[#1][#2]
   \else
     \dodosetupzeichen[\v!line][#1]
   \fi}

\def\dodosetupzeichen[#1][#2]%
  {\def\docommand##1%
    {\getparameters[\????ze##1][#2]}
   \processcommalist[#1]\docommand}

\def\zeichenparameter#1%
  {\csname
     \ifcsname\????ze\number\zeichencolumn#1\endcsname
       \????ze\number\zeichencolumn
     \else
       \????ze\v!line
     \fi
   #1\endcsname}

\definehspace[myindent][10pt]

\def\startunisym%
  {\bgroup%
   \setbox\scratchbox\hbox\bgroup}

\def\stopunisym%
  {\egroup%
   \raise.3ex\hbox{\box\scratchbox}
   \egroup}

\def\zeichen%
  {\ignorespaces\permitspacesbetweengroups
   \doquadruplegroupempty\dozeichen}

\def\dozeichen#1#2#3#4%
  {\begingroup
   \zeichenparameter\c!before
   \zeichencolumn\zerocount
   \hbox\!!to\zeichenparameter\c!textwidth
     {\zeichenzelle{#1}%
      \zeichenzelle{#2}%
      \hfill
      \zeichenzelle{#3}}%
   \zeichenparameter\c!after
   \endgroup}


\def\zeichenzelle#1%
  {\advance\zeichencolumn\plusone
   \hbox
     {\vtop
        {\hsize\zeichenparameter\c!width
         \zeichenparameter\c!before
         \begstrut
           \dostartattributes{\????ze\number\zeichencolumn}\c!style\c!color
           \zeichenparameter\c!left
             #1
           \zeichenparameter\c!right
           \dostopattributes
         \endstrut
         \zeichenparameter\c!after}}}

\setupzeichen
  [\c!textwidth=63.8833mm,%
   \c!before=\noindenting\synchronizegrid,%
   \c!after=\synchronizegrid,%
  ]

\setupzeichen
  [1,2,3,4]
  [\c!before=,
   \c!after=,
   \c!left=,
   \c!right=]

\setupzeichen
  [1]
  [\c!width=6.5mm,
   \c!left=\startunisym,
   \c!right=\stopunisym,
   \c!align=right,
   \c!before=\raggedright,
   \c!after=,   
   \c!style={\switchtobodyfont[6.8pt]\tt\bf}]

\setupzeichen
  [2]
  [\c!width=7.5mm,
   \c!left=$,
   \c!right=$,
   \c!before=\raggedcenter,
   \c!style={\switchtobodyfont[9.6pt]}]

\setupzeichen
  [3]
  [\c!width=49.883mm,
   \c!style={\switchtobodyfont[8.4pt]},
   \c!before=\hangindent10pt\hangafter1\raggedright]

\protect 
\stopmodule
\endinput
_______________________________________________
ntg-context mailing list
[EMAIL PROTECTED]
http://www.ntg.nl/mailman/listinfo/ntg-context

Reply via email to