From: Wolfgang Schuster <schuster.wolfgang@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Cc: Xavier Dionne <xavier.dionne@hotmail.com>
Subject: Re: Table generator : Issues with borders and rotated cells
Date: Wed, 27 Jun 2018 10:50:47 +0200 [thread overview]
Message-ID: <5B334FE7.40106@gmail.com> (raw)
In-Reply-To: <DM5PR19MB14650491293D24AECEBC6F53F7700@DM5PR19MB1465.namprd19.prod.outlook.com>
[-- Attachment #1.1: Type: text/plain, Size: 4196 bytes --]
> Xavier Dionne <mailto:xavier.dionne@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
[-- Attachment #1.2: Type: text/html, Size: 6863 bytes --]
[-- Attachment #2: meta-imp-mpframe.mkiv --]
[-- Type: text/plain, Size: 1735 bytes --]
\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
[-- Attachment #3: mpframe.tex --]
[-- Type: application/x-tex, Size: 647 bytes --]
[-- Attachment #4: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
prev parent reply other threads:[~2018-06-27 8:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-19 1:26 Xavier Dionne
2018-06-27 8:50 ` Wolfgang Schuster [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5B334FE7.40106@gmail.com \
--to=schuster.wolfgang@gmail.com \
--cc=ntg-context@ntg.nl \
--cc=xavier.dionne@hotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).