[NTG-context] Table generator : Issues with borders and rotated cells

Wolfgang Schuster schuster.wolfgang at gmail.com
Wed Jun 27 10:50:47 CEST 2018


> Xavier Dionne <mailto:xavier.dionne at hotmail.com>
> 19. Juni 2018 um 03:26
>
> Hi everyone,
>
> Excuse my poor English. I recently updated my online table generator 
> (http://latex-tables.com) to support ConTeXt. It also supports many 
> languages, like LaTeX, Plain TeX, Markdown, HTML and more. It uses the 
> eXtreme table format and supports many features including :
>
> - Borders, border width and border color
>
> - Merged cells
>
> - Background color
>
> - Alignment (flushleft, center, flushright)
>
> - Splitted tables
>
> - Rotated tables
>
> - Caption
>
> - More...
>
> However, I have many issues that I have trouble to fix.
>
> 1/ I have many troubles with borders, because I can't set the color 
> and the width of each border. Instead, I use "fake rows" and "fake 
> cells" when it is necessary. However, I can't figure out how to set 
> the height of a row to 0.4pt. It's always bigger. So, instead I use 
> "location=hanging" on this row but, because of this, borders are 
> hidden behind the next row's background. What can I do about this ?
>

Frames accept only a single color and line thickness for all borders but 
there are two ways to set different values for each side The first 
method is to disable the frame and apply a background graphic where you 
draw different lines for each side. The other method is to create a 
custom renderer for each frame (top, bottom etc.) where you can than 
apply a different color or linewidth for each side, below (and also 
attached) is a example where I show how this can be done.

Wolfgang


%%%% begin meta-imp-mpframe.mkiv
\startuseMPgraphic{mp_frame_left}
   draw leftboundary OverlayBox
     withpen pensquare scaled \frameddimension{leftrulethickness}
     withcolor \MPcolor{\framedparameter{leftframecolor}} ;
   setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\startuseMPgraphic{mp_frame_right}
   draw rightboundary OverlayBox
     withpen pensquare scaled \frameddimension{rightrulethickness}
     withcolor \MPcolor{\framedparameter{rightframecolor}} ;
   setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\startuseMPgraphic{mp_frame_top}
   draw topboundary OverlayBox
     withpen pensquare scaled \frameddimension{toprulethickness}
     withcolor \MPcolor{\framedparameter{topframecolor}} ;
   setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\startuseMPgraphic{mp_frame_bottom}
   draw bottomboundary OverlayBox
     withpen pensquare scaled \frameddimension{bottomrulethickness}
     withcolor \MPcolor{\framedparameter{bottomframecolor}} ;
   setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\installleftframerenderer   {mp} {\useMPgraphic{mp_frame_left}}
\installrightframerenderer  {mp} {\useMPgraphic{mp_frame_right}}
\installtopframerenderer    {mp} {\useMPgraphic{mp_frame_top}}
\installbottomframerenderer {mp} {\useMPgraphic{mp_frame_bottom}}

\setupframed
   [     leftframecolor=\framedparameter{framecolor},
        rightframecolor=\framedparameter{framecolor},
          topframecolor=\framedparameter{framecolor},
       bottomframecolor=\framedparameter{framecolor},
      leftrulethickness=\framedparameter{rulethickness},
     rightrulethickness=\framedparameter{rulethickness},
       toprulethickness=\framedparameter{rulethickness},
    bottomrulethickness=\framedparameter{rulethickness}]

\endinput
%%%% end meta-imp-mpframe.mkiv


%%%% begin mpframe.tex
\useMPlibrary[mpframe]

\definextable
   [mp]
   [width=2cm,
    height=2cm,
    align={middle,lohi},
    foregroundstyle=\ssd,
    framecolor=red,
    % use the custom frame renderer for all four sides:
    leftframe=mp,
    rightframe=mp,
    topframe=mp,
    bottomframe=mp]

\starttext

\startxtable[mp]
     \startxrow[bottomrulethickness=2pt]
         \startxcell[rightframecolor=blue]
             A
         \stopxcell
         \startxcell[leftframe=off]
             B
         \stopxcell
     \stopxrow
     \startxrow
         \startxcell[leftframecolor=green,leftrulethickness=2pt]
             C
         \stopxcell
         \startxcell[rightframecolor=orange,rightrulethickness=2pt]
             D
         \stopxcell
     \stopxrow
\stopxtable

\stoptext
%%%% end mpframe.tex

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20180627/92413be2/attachment-0001.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: meta-imp-mpframe.mkiv
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20180627/92413be2/attachment-0001.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mpframe.tex
Type: application/x-tex
Size: 647 bytes
Desc: not available
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20180627/92413be2/attachment-0001.tex>


More information about the ntg-context mailing list