+\cs_new:Nn \__kivi_calc_desc_column: {
+ \bool_if:NTF \g__kivi_Tabular_rowcolor_bool
+ {\dim_set:Nn \l_kivi_tab_desc_leftskip_dim {2\g_kivi_tabcolsep_dim}}
+ {\dim_zero:N \l_kivi_tab_desc_leftskip_dim}
+ \dim_zero:N \l_kivi_tab_desc_dim
+ \bool_set_false:N \l_tmpa_bool
+ \tl_gclear:N \g_kivi_Pricing_colspec_tl
+ \clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
+ \tl_if_eq:nnTF {##1} {desc} {
+ \dim_set:Nn \l_kivi_tab_desc_dim {
+ \textwidth-\l_kivi_tab_desc_leftskip_dim
+ }
+ \bool_set_true:N \l_tmpa_bool
+ \tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {p{\l_kivi_tab_desc_dim}}
+ }{
+ \bool_if:cT {l_kivi_col_##1_bool} {
+ \bool_if:NTF \l_tmpa_bool {
+ \dim_sub:Nn \l_kivi_tab_desc_dim {
+ \dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
+ }
+ }{
+ \dim_add:Nn \l_kivi_tab_desc_leftskip_dim {
+ \dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
+ }
+ }
+ \tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {K{\dim_use:c {l_kivi_tab_##1_dim}}}
+ \kivi_if_Price_col:nT {##1} {\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {<{\__kivi_tab_column_currency:}}}
+ }
+ }
+ }
+ \bool_if:NF \g__kivi_Tabular_rowcolor_bool {
+ \tl_gput_left:Nn \g_kivi_Pricing_colspec_tl {@{}}
+ \tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {@{}}
+ }
+}
+
+\newcolumntype{K}[1]{>{\raggedleft\arraybackslash}p{#1}}
+\newcolumntype{P}[1]{K{#1}<{\__kivi_tab_column_currency:}}