Hi All,

first of all I want to apologize not being responding to several your emails (e.g. this one). My email provider has filtered tens of them as spam... I sighted them just now when I became suspicious of the email delivery.

Hans Hagen wrote:

Vit Zyka wrote:

Hallo,

for text positioning in a layer I needed alignment to baseline. I do not known if I missed something but I did not find it in the current ConTeXt. So I did that. Baseline is choosen by capital 'B' in the position parameter. ('B' is adopted from grahicx LaTeX/plain package.)

Also I add \ctop, \ltop, and \rtop in sence of \cbox, \lbox, and rbox, respectively.

I suggest to add the macros to core-box and supp-box.

Vit Zyka

%-------------------------------------------- baseline alignment
\setvalue{\??ab\??ab  B}{\baselinebox}
\setvalue{\??ab\??ab  Bl}{\baselineleftbox}
\setvalue{\??ab\??ab  Bc}{\baselinecenterbox}
\setvalue{\??ab\??ab  Br}{\baselinerightbox}
\setvalue{\??ab\??ab  lB}{\leftbaselinebox}
\setvalue{\??ab\??ab  cB}{\centerbaselinebox}
\setvalue{\??ab\??ab  rB}{\rightbaselinebox}
\def\baselinecenterbox#1%
  {\normalhbox
     {\setbox0\placedbox{#1}%
      \global\boxhdisplacement-.5\wd0
      \global\advance\boxhdisplacement-\boxoffset
      \global\boxvdisplacement-\boxoffset
      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
\def\baselineleftbox#1%
  {\normalhbox
     {\setbox0\placedbox{#1}%
      \global\boxhdisplacement-\wd0
      \global\advance\boxhdisplacement-\boxoffset
      \global\boxvdisplacement-\boxoffset
      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
\def\baselinerightbox#1%
  {\normalhbox
     {\setbox0\placedbox{#1}%
      \global\boxhdisplacement\boxoffset
      \global\boxvdisplacement-\boxoffset
      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
\let\baselinebox=\baselinecenterbox
\let\leftbaselinebox=\baselineleftbox
\let\rightbaselinebox=\baselinerightbox


hm, in that case we probably need a few more -)

See example below, there is already a grid option; also, keep an eye on topskip (we may need s sl sc sr but who can remember that)

Like this? If so, I can prepare the rest alternatives and to test them.

\setvalue{\??ab\??ab  s}{\topskipcenterbox}
\def\topskipcenterbox#1%
  {\normalhbox
    {\setbox0\placedbox{#1}%
     \global\boxhdisplacement-.5\wd0
     \global\advance\boxhdisplacement-\boxoffset
     \global\boxvdisplacement-\boxoffset
     \global\advance\boxvdisplacement by\topskip
     \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}

I dislike the capital B but the g is available (g from gridline)

OK. But is not better to use also \gridrightbox instead of \baselinerightbox, etc. ?


> i can add that to the kernel if tested

I tested your code and it is all right.

\unprotect

% \v!grid is taken

\setvalue{\??ab\??ab  m}{\middlebox}

\setvalue{\??ab\??ab  g}{\baselinemiddlebox}
\setvalue{\??ab\??ab gl}{\baselineleftbox}
\setvalue{\??ab\??ab gc}{\baselinemiddlebox}
\setvalue{\??ab\??ab gr}{\baselinerightbox}

\setvalue{\??ab\??ab \v!regel }{\baselinemiddlebox} % \v!grid is taken
\setvalue{\??ab\??ab \v!regel\v!links }{\baselineleftbox}
\setvalue{\??ab\??ab \v!regel\v!midden}{\baselinemiddlebox}
\setvalue{\??ab\??ab \v!regel\v!rechts}{\baselinerightbox}


\def\baselinemiddlebox#1%
 {\normalhbox
    {\setbox0\placedbox{#1}%
     \global\boxhdisplacement-.5\wd0
     \global\advance\boxhdisplacement-\boxoffset
     \global\boxvdisplacement-\boxoffset
     \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}

\def\baselineleftbox#1%
 {\normalhbox
    {\setbox0\placedbox{#1}%
     \global\boxhdisplacement-\wd0
     \global\advance\boxhdisplacement-\boxoffset
     \global\boxvdisplacement-\boxoffset
     \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}

\def\baselinerightbox#1%
 {\normalhbox
    {\setbox0\placedbox{#1}%
     \global\boxhdisplacement\boxoffset
     \global\boxvdisplacement-\boxoffset
     \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}

\protect

\definelayer[text] \setupbackgrounds[text][background=text]
\setuplayer[text][width=\textwidth,height=\textheight]

\showgrid

\starttext

\setlayer
 [text]
 [location=grid,line=13]
 {\vtop{\strut \input ward \endstrut}}

\setlayer
 [text]
 [corner={right,top},
  voffset=\topskip, % \topskipgap,
  location=gl]
 {\vtop{\begstrut \input ward \endstrut}}

x

\stoptext

i can add that to the kernel if tested


%------------------------------ \ltop, \rtop, \ctop
\def\lrctop#1#2#%
  {\vtop#2\bgroup
   \let\\=\endgraf
   \forgetall#1\let\next=}
\def\ltop{\lrctop\raggedleft}
\def\rtop{\lrctop\raggedright}
\def\ctop{\lrctop\raggedcenter}


ok, i've patched/added:

\def\lbox{\makelrcbox\normalvbox\raggedleft}
\def\cbox{\makelrcbox\normalvbox\raggedcenter}
\def\rbox{\makelrcbox\normalvbox\raggedright}

\def\ltop{\makelrcbox\normalvtop\raggedleft}
\def\ctop{\makelrcbox\normalvtop\raggedcenter}
\def\rtop{\makelrcbox\normalvtop\raggedright}

\def\makelrcbox#1#2#3#%
 {#1#3\bgroup \forgetall \let\\=\endgraf #2\let\next=}

Great, thank you, Hans.

Vit Zyka

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

Reply via email to