Woo, that’s going to be a little more complex I suspect. I think your best bet is the nth[] operator. Once you have a list (such as a filter that starts with [tag[Contact]... you can refer to a single position with nth[] In order to use that, you’d probably need to wrap in some more nested lists using the range[#,#] type filter, and if you needed X rows of 5 for example (to get 5 per row to know where to put the <tr></tr> values you’d need to do some math. I don’t have time at the moment to fully flush out, but maybe that gets you started?
You would need to stop adding a tr for each element of the list, in your case you would have to open or close the label depending on whether it is even or odd.
I think that you need to play with the combination of operator remainder, compare and then to add the necessary part of the tag. If it odd then remainder returns 0, use compare with 0 that return true, so you can use then for return the closing tag
Here is an example using CSS grid. It lacks the borders that a table has, but the inner divs can be styled with a border. Paste in a new tiddler at tiddlywiki.com to see the example.
@deshmukh as @amreus suggests below we can use multiple columns. I would have suggested it myself. In some ways the raw requirement is to increase the density of the information displayed within a tiddler. On wide screens we see the opportunity to extend the display of content in the horizontal direction.
A possible solution?
Modern websites now tend to avoid tables for the presentation of data that may need to vary in layout depending on different devices, that is responsive design. The strategy is to make use of flexboxes and other design methods. Then if the tiddler is wide it would automatically make use of more columns or reduce to one on a mobile.
Yes one possible solution is in the word I used “flexbox”. I will be see if I can share more but it is another way of presenting content in html/css.
If you had a narrow table you wanted to break over multiple columns you would have to remove the mention of “table” in the stylesheet, or do a local override.
div, ol, ul, img, table, { break-inside: avoid; }
You could perhaps replace it with “tr” to stop the table breaking in table rows.