Alternatively to my first proposal but still overloading the original xtables I came up with another solution which does not have the \NC\NR but only \NR and does not read the cell content as an argument.
\unprotect % Overload tabl_x_start_table \unexpanded\def\tabl_x_start_table[#settings]% maybe two arguments: [tag][settings] | [tag] | [settings] {\bgroup \let\NC\tabl_xte_start_nc \let\NR\tabl_xte_start_nr \settrue\c_tabl_xte_first_nc \tabl_x_prepare{#settings}% \edef\tabl_x_current_buffer{\tabl_x_default_buffer}% \buff_pickup{\tabl_x_current_buffer}{startxtable}{stopxtable}\relax\tabl_x_process\zerocount} % xtable extensions \newconditional\c_tabl_xte_first_nc \unexpanded\def\tabl_xte_start_nr {\stopxcell\stopxrow \settrue\c_tabl_xte_first_nc} \unexpanded\def\tabl_xte_start_nc {\ifconditional\c_tabl_xte_first_nc \setfalse\c_tabl_xte_first_nc \expandafter\startxrow\expandafter\startxcell \else \expandafter\stopxcell\expandafter\startxcell \fi} \protect \starttext \startxtable[align={lohi,middle}] \NC OSI-Schicht \NC[nx=6] Umsetzung \NR \NC Anwendungsschicht \NC[nx=2,ny=3] SOME/I \NC[nx=2,ny=3] AVB/TSN \NC[nx=2,ny=3] DoIP \NR \NC Darstellungsschicht \NR \NC Sitzungsschicht \NR \NC Transportschicht \NC[nx=3] TCP \NC[nx=3] UDP \NR \NC Vermittlungsschicht \NC[nx=3] IPv4 \NC[nx=3] IPv6 \NR \NC Sicherungsschicht \NC[nx=6] Ethernet \NR \NC Bitübertragungsschicht \NC[nx=2] 100BASE-TX \NC[nx=2] 100BASE-T \NC[nx=2] 1000BASE-T \NR \stopxtable \stoptext On 03/08/2017 04:39 PM, Henri Menke wrote: > I quickly came up with something myself. Unfortunately, it involves > overloading of the original xtables. Perhaps there is a better way but it > works. I am happy to hear your opinions! > > \unprotect > > % Overload tabl_x_start_table > \unexpanded\def\tabl_x_start_table[#settings]% maybe two arguments: > [tag][settings] | [tag] | [settings] > {\bgroup > \let\NC\tabl_xte_start_nc > \let\NR\tabl_xte_start_nr > \tabl_x_prepare{#settings}% > \edef\tabl_x_current_buffer{\tabl_x_default_buffer}% > > \buff_pickup{\tabl_x_current_buffer}{startxtable}{stopxtable}\relax\tabl_x_process\zerocount} > > % xtable extensions > \newconditional\c_tabl_xte_in_nc > > \unexpanded\def\tabl_xte_start_nr > {\stopxrow > \setfalse\c_tabl_xte_in_nc} > > \unexpanded\def\tabl_xte_start_nc > {\futurelet\next\tabl_xte_start_nc_indeed} > > \def\tabl_xte_start_nc_indeed > {\ifx\next\tabl_xte_start_nr \else > \expandafter\tabl_xte_start_nc_finish > \fi} > > \def\tabl_xte_start_nc_finish#1\NC > {\ifconditional\c_tabl_xte_in_nc \else > \settrue\c_tabl_xte_in_nc > \startxrow[]% > \fi > \startxcell#1\stopxcell\NC} > > \protect > > \starttext > > \startxtable[align={lohi,middle}] > \NC OSI-Schicht \NC[nx=6] Umsetzung \NC\NR > \NC Anwendungsschicht \NC[nx=2,ny=3] SOME/I \NC[nx=2,ny=3] AVB/TSN > \NC[nx=2,ny=3] DoIP \NC\NR > \NC Darstellungsschicht \NC\NR > \NC Sitzungsschicht \NC\NR > \NC Transportschicht \NC[nx=3] TCP \NC[nx=3] UDP \NC\NR > \NC Vermittlungsschicht \NC[nx=3] IPv4 \NC[nx=3] IPv6 \NC\NR > \NC Sicherungsschicht \NC[nx=6] Ethernet \NC\NR > \NC Bitübertragungsschicht \NC[nx=2] 100BASE-TX \NC[nx=2] 100BASE-T > \NC[nx=2] 1000BASE-T \NC\NR > \stopxtable > > \stoptext > > On 03/08/2017 04:29 PM, Henri Menke wrote: >> Dear devs, >> >> Natural Tables are quite handy but their syntax is a little verbose. >> >> \bTABLE >> \bTR >> \bTD ... \eTD >> \eTR >> \eTABLE >> >> There exist nice extensions which make the format less verbose by mapping >> >> \startTABLE >> \NC ... \NR\NR >> \stopTABLE >> >> back to the original macros. >> >> The new method for tables, called xtables, is faster and seems to have less >> problems than Natural Tables. However, the syntax is even more verbose >> >> \startxtable >> \startxrow >> \startxcell ... \stopxcell >> \stopxrow >> \stopxtable >> >> Can we have similar abbreviations as for Natural Tables? I am thinking of >> something like >> >> \startXTABLE >> \NC ... \NR\NR >> \stopXTABLE >> >> I tried myself rewriting tabl-nte.mkiv for xtables but it is not >> straightforward. >> >> What do you think of this proposal? >> >> Kind regards, >> Henri >> > ___________________________________________________________________________________ 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 ___________________________________________________________________________________