Changes

Jump to navigation Jump to search
2,388 bytes added ,  15:06, 25 August 2021
m
Convert to an HTML table
This is ConTeXts oldest table module. It uses the same formatting as [[Tabulate]] (see [[Tables Overview]]).
This mode is based on Michael Wichura's TaBlE package for PlainTeX. The official manual for it is commercial (about 40 USD), see [http://www.pctex.com/books.html PCTeX] -- but note that the TaBlE manual only talks about the original syntax, which does not use <{{cmd>|NC</cmd>}}, <{{cmd>|HL</cmd> }} cum suis.
The only ConTeXt docs are in [[manual:ms-cb-en.pdf|ConTeXt - an excursion]]. There is also two introductory articles in tugboat [http://tug.org/TUGboat/Articles/tb28-3/tb90mahajan.pdf ConTeXt basics for users: Table macros] [http://www.tug.org/TUGboat/Articles/tb29-1/tb91mahajan.pdf Table macros II] by Aditya Mahajan (2007 and 2008).
== Basic Commands ==
</td></tr></table>
* You get vertical lines (rules), if you use <{{cmd>|VL</cmd> }} instead of <{{cmd>|NC</cmd>}}.* Better use <{{cmd>|SR</cmd>}}, <{{cmd>|FR</cmd>}}, <{{cmd>|MR</cmd>}}, <{{cmd>|LR</cmd> }} instead of <{{cmd>|NR</cmd>}}.* You can also use <{{cmd>|AR</cmd> }} instead of <{{cmd>|SR</cmd>}}, <{{cmd>|FR</cmd>}}, <{{cmd>|MR</cmd> }} and <{{cmd>|LR</cmd> }} (AR for automatic row).* You can leave out the <{{cmd>|NC</cmd> }} before the "row" command, but not if you use <{{cmd>|AR</cmd> }} in a last or single row (see example).* You can influence the table with <{{cmd>|setuptables</cmd>.* There are also <cmd>BL</cmd> and <cmd>CL</cmd> for colored backgrounds, see below}}.
==Column Definition==
The table is defined by the template enclosed in square brackets after <{{cmd>|starttable</cmd>}}. The template has the form<tt>|keys for the first column|keys for the second column|...|keys for the last column|</tt>. Please note that the each column is surrounded by <tt>|</tt> signs. These are necessary. The formatting keys for each column can be a choice of
<table width="100%" cols{| class="2wikitable"><tr valign="top"><td><context> ! Key\switchtobodyfont[ss, 8pt] ! Meaning\starttable[ |l|lp(.5\textwidth)|]\HL\NC \bf Key \VL \bf Meaning \SR\HL-\NC \NC ! colspan="2" | Primitive Keys \SR\HL |-\NC \type{| <code>a{<em>tokens</em>}}\VL </code> | Adds \type{<code><em>tokens} {\</em></code> <em >after} </em> the column content\AR\NC \type{|- |- | <code>b{<em>tokens</em>}}\VL </code> | Adds \type{<code><em>tokens} '''</em></code> <em>before''' </em> the column content\AR\NC {\tt \backslash|- | <code>\{ } \VL </code> | Enclose the column in braces (grouping)\AR\NC \type{|- | <code>*{<em>n</em>}{<em>keys</em>}}\VL </code> | Equivalent to repeating the formatting keys \type{<code><i>keys} \type{</i></code> <code><i>n} </i></code> times\NC\LR\HL |-\NC \NC ! colspan="2" | Positioning Keys\SR\HL |-\NC \type{| <code>\LeftGlue} \VL </code> | Specifies the left glue to be used before the column\AR\NC \type{|- | <code>\RightGlue} \VL </code> | Specifies the right glue to be used after the column\AR\NC \type{|- | <code>l} \VL </code> | left-aligned column\AR\NC \type{|- | <code>c} \VL </code> | centered column\AR\NC \type{|- | <code>r} \VL </code> | right-aligned column\AR\NC \type{|- | <code>p(<em>width</em>)} \VL </code> | Set each cell as a paragraph\AR\NC \type{|- | <code>s(<em>width</em>)</code> | Specify the inter-column width |- | <code>w} \VL </code> | Set minimum column width\AR\NC \type{|- | <code>k} \VL </code> | Insert a kern both left and right of the column\AR\NC \type{|- | <code>i} \VL </code> | Add a kern to the left of the column\AR\NC \type{|- | <code>j} \VL </code> | Add a kern to the right of the column\LR\HL |-\NC \NC ! colspan="2" | Numeric and Math Item Keys \SR\HL |-\NC \type{| <code>n} \VL </code> | Numeric item not in math mode\AR\NC \type{|- | <code>N} \VL </code> | Numeric item in math mode\AR\NC \type{|- | <code>m} \VL </code> | Each cell is in (inline) math mode. Equivalent to \type{<code>b$ a$}\AR</code> |-\NC \type{| <code>M} \VL </code> | Each cell is in display math mode. Equivalent to \type{<code>\{b{$\displaystyle}a$}} \AR</code> |-\NC \type{| <code>\m} \VL </code> | Equivalent to \type{1 <code>l b{{}}m}\AR</code> |-\NC \type{| <code>\M} \VL </code> | Equivalent to \type{1 <code>l b{{}}M}\LR</code>\HL |-\NC \NC ! colspan="2" | Style Keys \SR\HL |-\NC \type{| <code>f\<em>command} \VL </em></code> | Set font according to following \tex{<code><em>command}\AR</em></code> |-\NC \type{| <code>B} \VL </code> | Bold. Equivalent to \type{<code>f\bf}\AR</code> |-\NC \type{| <code>I} \VL </code> | Italic. Equivalent to \type{<code>f\it}\AR</code> |-\NC \type{| <code>S} \VL </code> | Slanted. Equivalent to \type{<code>f\sl}\AR</code> |-\NC \type{| <code>R} \VL </code> | Roman. Equivalent to \type{<code>f\rm}\AR</code> |-\NC \type{| <code>T} \VL </code> | Teletype. Equivalent to \type{<code>f\tt}\AR</code> |-\NC \type{| <code>C} \VL </code> | Color. Use it in combination with \backslash<code>\{ </code> (e.g. \backslash<code>\{C\{<em>red\</em>} </code>)\LR\HL |-\NC \NC ! colspan="2" | Tabskip Keys \SR\HL |-\NC \type{| <code>s} \VL </code> | Set the tabskip to the right of this column and of all following columns up to the next \type{<code>s} </code> or \type{<code>o} </code> key\AR\NC \type{|- | <code>o} \VL </code> | Set the tabskip to the right of this column only\LR\HL |-\stoptable</context> |}</td><td>===ExamplesColumn definition examples===
; <code>|l|</code> : a left aligned column, as wide as necessary
; <code>|lw(2cm)|</code> : a left aligned column of at least 2 cm width
; <code>|cp(.5\textwidth)|</code> : a center aligned paragraph of specified width
; <code>|xp(.5\textwidth)|</code> : a justified paragraph of specified width
; <code>...</code> : Please add more
; <code>...</code> :
{{Todotodo|add more examples of column definitions}}</td></tr></table>
==Column Spans==
It's possible to create columnspans (i.e. cells that span more than one column) with the command <{{cmd>|use|{<i>N</i>}</cmd> }} where ''N'' is the number of columns spanned by the cell. It's often necessary to use <{{cmd>|ReFormat|[<i>new keys</i>]{}</cmd> }} to reformat this specific cell according to the ''new keys''.
\NC \use{2}\ReFormat[cB]{Spanning head} \SR
\HL
\NC \Use{2}[cB]{Spanning head} \SR % slightly shorted\HL\NC left column text \VL right column text \NC \AR\NC new row \VL new row \NC \AR\NC left column text \VL \ReFormat[l]{reformatted} \NC \AR
\HL
\NC \use{2}Spanning entry \SR
</td><td>
<context>
\setuppapersize[A5]
\starttable[s(0pt)|ls(10pt)|rs(0pt)|]
\HL
\NC \use{2}\ReFormat[cB]{Spanning head} \SR
\HL
\NC \Use{2}[cB]{Spanning head} \SR\HL\NC left column text \VL right column text \NC \AR\NC new row \VL new row \NC \AR\NC left column text \VL \ReFormat[l]{reformatted} \NC \AR
\HL
\NC \use{2}Spanning entry \SR
\HL
\stoptable
</context>
</td></tr></table>
 
 
({{cmd|ReFormat}} can be abbreviated {{cmd|REF}} for brevity.)
 
== Row Spans==
 
It's also possible to create rowspans (i.e. cells that span more than one row) with the command {{cmd|Raise|(<i>dimen</i>){<i>content</i>}}} or {{cmd|Lower|(<i>dimen</i>){</i>content</i>}}} that raise or lower ''content'' by ''dimen''.
 
<table cols="2"><tr valign="top"><td>
<texcode>
\starttable[|c|c|]
\HL
\VL \Lower(.5\lineheight){a} \VL b \VL \AR
\DC \DL[1] \DR
\VL \VL c \VL \AR
\HL
\stoptable
</texcode>
</td><td>
<context>
\starttable[|c|c|]
\HL
\VL \Lower(.5\lineheight){a} \VL b \VL \AR
\DC \DL[1] \DR
\VL \VL c \VL \AR
\HL
\stoptable
</context>
</td></tr></table>
 
({{cmd|Lower|(.5\lineheight){a}}} can be abbreviated {{cmd|LOW|{a}}} for brevity.)
An alternative means of spanning rows by a tall object makes use of a bit of TeX magic:
{{cmd|smash|{tall object}}}:
 
<table cols="2"><tr valign="top"><td>
<texcode>
\starttable[|M|c|]
\HL
\VL \VL a \VL \AR
\DC \DL[1] \DR
\VL \smash{\sum_0^N} \VL b \VL \AR
\DC \DL[1] \DR
\VL \VL c \VL \AR
\HL
\stoptable
</texcode>
</td><td>
<context>
\starttable[|M|c|]
\HL
\VL \VL a \VL \AR
\DC \DL[1] \DR
\VL \smash{\sum_0^N} \VL b \VL \AR
\DC \DL[1] \DR
\VL \VL c \VL \AR
\HL
\stoptable
* See [[Floating Objects]] in general.
* If you need information about <{{cmd>|placetable</cmd> }} look after <{{cmd>|placefloat</cmd> }} in the manual or texshow!* If you'd like do not want a caption for your table, to get rid of it altogether you have to add "none" to settings and then leave out the braces empty; if you only leave the braces empty, your table's caption will still be numbered (here: "sample tableTable 1"etc.), you can't simply leave the braces empty but must write . <tttexcode>\placetable[here,none][tab:sample]{}{\starttable ...\stoptable}</tttexcode>!
==Background Colors==
 
Note: Adding color to tables using the `\CL` and `\BL` commands appears to be deprecated in MKIV; see: http://wiki.contextgarden.net/Tabulate
A very nice application in table are background colors for rows/cells (a feature that doesn't work in [[Tabulate]]):
won't cover the whole cell.
* <{{cmd>|BL</cmd> }} makes a gray background: the optional argument tells BL how many cells it should color* <{{cmd>|CL</cmd> }} makes a colored linerow
==Fit Table Width==
</texcode>
<!-- It makes no sense to typeset this here. -->
 
Since table module has been under [http://www.ntg.nl/pipermail/ntg-context/2010/055004.html reconstruction] this approach works only for MKII. In MKIV one can use
 
<texcode>
\starttable[|l|l|][textwidth=max]
\HL
\VL foo foo foo foo foo foo \VL bar bar bar bar bar bar \VL\AR
\HL
\stoptable
</texcode>
 
to change the width of the current table only.
 
<code>\setuptables[textwidth=...]</code> will affect the behavior of every table.
== Booktabs ==
</td><td>
<context>
\setuppapersize[A5]
\setuptables[rulethickness=0.03em]
8

edits

Navigation menu