# Re: [NTG-context] mkiv digits/units zero padding not working

Following up on the work-around, here is my improved code for xtable.

What doesn’t work is:

* alignment on the decimal separator takes place only in the first column with
decimals (i.e. B), not on the  following one; this is independent of R1 having
a decimal value in this column or not

* row spanning is now tricky since the width of the header column is taken for
the first of the three rows spanned, which becomes even more complicated with
option=stretch, I guess if I right align the second column and would phantomize
the hsize of the header, this could work with a bit of optimization.

arguments from a CSV file, which would save a lot of typing (and to manually

\def\mpm#1#2{
\doifsomethingelse{#2}{
\startxcell[align=left] \digits{#1} \stopxcell
\startxcell ± \stopxcell
\startxcell \digits{#2} \stopxcell
}{
\startxcell[align=left] \digits{#1} \stopxcell
\startxcell \stopxcell
\startxcell \digits{#2} \stopxcell
}
}

\startxtable[split=repeat, aligncharacter=yes, alignmentcharacter={.}]

\startxrow[topframe=on, foregroundstyle=bold]
\startxcell A \stopxcell
\startxcell[align=left, nx=3] Bla bla bla bla bla bla bla bla
\stopxcell
\startxcell C \stopxcell
\stopxrow

\startxtablebody
\startxrow[topframe=on]
\startxcell R1 \stopxcell
\mpm{12.3}{}%{1.5}
\startxcell one \stopxcell
\stopxrow

\startxrow
\startxcell R2 \stopxcell
\mpm{0.01}{0.023}
\startxcell two \stopxcell
\stopxrow

\startxrow
\startxcell R3 \stopxcell
\mpm{2.3}{0.1}
\startxcell three\stopxcell
\stopxrow

\stopxtablebody

\stopxtable

> On 7 May 2020, at 21:22, Benjamin Buchmuller <benjamin.buchmul...@gmail.com>
> wrote:
>
> Hi Wolfgang,
>
> you are (of course) right again. I realised that I wouldn’t get the expected
> behaviour after checking the snippet isolated from my document’s context,
> where it is embedded in a \startplacetable[…]{}{}. I’m still learning to get
> the gist of the \doifs, the curly and square bracketed arguments and so on.
> Thanks for the hint!
>
> Seems like I’m going to make three cells and span the header column for now,
> though I guess it would be a nice feature to have the padding working in the
> other cases.
>
> I’ll write a feature request for no 4.
>
> Thanks!
>
>
>> On 7 May 2020, at 20:00, Wolfgang Schuster
>> <wolfgang.schuster.li...@gmail.com> wrote:
>>
>> Benjamin Buchmuller schrieb am 07.05.2020 um 19:41:
>>> Hi Wolfang,
>>> Thank you for your reply. I have indeed not explained my intended result
>>> very clearly.
>>> 1.
>>> Primarily, I need to get the two values aligned at the digit separator of
>>> the first and second number respectively and overall at the ± sign. I’m
>>> working in an xtable, where I have entries such as
>>> \startxcell \mpm{14.0==}{_1.5==} \stopxcell
>>> \startxcell \mpm{_0.034}{_0.013} \stopxcell
>>> and defined
>>> \def\mpm#1#2{
>>>     \ifsecondargument
>>>     \digits{#1}\,±\,\digits{#2}%
>>>     \else
>>>     \digits{#1}%
>>>     \fi
>>> }
>>
>> Is there something missing in here because the \ifsecondargument check here
>> makes non sense because the second argument is mandatory and not optional.
>>
>> Is this what you want?
>>
>> \define[2]\mpm
>> {\digits{#1}%
>>  \doifsomething{#2}{\,±\,\digits{#2}}}
>>
>>> Since I was hoping that I could exploit the zeropadding of \digits to get
>>> the format right. Indeed, it would save a lot of typing, if I wouldn’t have
>>> to specify the padding manually and I vaguely recall that there is
>>> somewhere a ConTeXt solution that can make such alignments, but I simply
>>> can’t find it any more …
>>
>> You can align number on the decimal point (comma) but this works only when
>> you have only one number in a cell.
>>
>> \starttext
>>
>> \startxtable[aligncharacter=yes,alignmentcharacter=±]
>>   \startxrow
>>       \startxcell
>>           \digits {14.0} ± \digits {1.5}
>>       \stopxcell
>>   \stopxrow
>>   \startxrow
>>       \startxcell
>>           \digits {0.034} ± \digits {0.013}
>>       \stopxcell
>>   \stopxrow
>> \stopxtable
>>
>> \stoptext
>>
>>> 2. + 3.
>>> Absolutely right, this is my bad. I have badly mixed from Hans’ solution to
>>> a similar problem,
>>> https://www.mail-archive.com/ntg-context@ntg.nl/msg00724.html
>>> which was actually \def\zeroamount{-} and the example in the source, I
>>> didn’t read properly. Just skip that part. :)
>>
>> The message is from 2003!
>>
>>> 4.
>>> Indeed,
>>> \startxcell \mpm{14.==}{_1.5=} \stopxcell
>>> \startxcell \mpm{_0.03}{_0.01} \stopxcell
>>> aligns properly. But sometimes, I have the first digit specified, but not
>>> the second and unfortunately this doesn’t work
>>> \startxcell \mpm{14.5=}{_1.5=} \stopxcell
>>> \startxcell \mpm{_0.03}{_0.01} \stopxcell
>>> because = is not immediately preceded by .
>>
>> Can you write another mail with a request for this.
>>
>> Wolfgang
>

___________________________________________________________________________________