在排版印度货币(例如 100000)时,逗号 , 先放在三位数后面,然后每两位数后面再加一个 - 1,00,000 - 我们该如何在 latex 中做到这一点?我需要将卢比利润格式化为 xx,xx,xx,xxx/--
\documentclass[10pt]{book}
\begin{document}
\begin{table}[!htb]
\caption{ Profit}
\begin{minipage}[t]{.5\linewidth}
\caption{}
\centering
\begin{tabular}{ll}
\hline
\multicolumn{2}{c}{\textsc{profit earned}}\\
\hline
Apr 2018 & 70263.78\\
May 2018 & 33759.19\\
Jun 2018 & 39554.66\\
Jul 2018 & 51529.42\\
Aug 2018 & 46292.94\\
Sep 2018 & 32186.44\\
Oct 2018 & 42185.60\\
Nov 2018 & 31372.17\\
Dec 2018 & 12853.60\\
Jan 2019 & 2602.42\\
Feb 2019 & 33776.46\\
Mar 2019 & 318773.33\\
Apr 2019 & 0.00\\
May 2019 & 0.00\\
Jun 2019 & 0.00\\
Jul 2019 & 17455.88\\
\hline
\end{tabular}
\end{minipage}%
\begin{minipage}[t]{.5\linewidth}
\centering
\caption{}
\begin{tabular}{ll}
\hline
\multicolumn{2}{c}{\textsc{profit distributed}}\\
\hline
diqa & 20150\\
dqacv & 47164\\
cqahv & 188582\\
cqava & 75433\\
cqavl & 66004\\
Reserve & 48346\\
\hline
\end{tabular}
\end{minipage}
\end{table}
\end{document}
编辑:表格内部的数字未对齐 - 但是在正常段落中使用宏是完美的 - 为什么这样?
\subsection*{Fixed Deposit}
\begin{tabular}{lS}
\hline
Fixed Deposit & \indiancurrency{2264812}\\
\hline
\\
\multicolumn{2}{l}{{Dt of deposit}}\\
\hline\\
06 Mar 2018 & \indiancurrency{1500000}\\
%\multicolumn{2}{l}{{Dt of deposit }}\\
01 Nov 2016 & \indiancurrency{764812}\\
\hline
\end{tabular}
答案1
这里是一个完全可扩展的实现expl3
。金额可以带有小数部分或没有小数部分;无论哪种情况,/
都会附加小数部分并显示小数部分,至少有两位小数(但如果小数部分为零,则使用破折号)。
其思路是先在可能的小数点处进行拆分,然后处理整数部分。如果小于 1000,则生成数字;否则,将最后三位数字分离,并按对处理剩余数字({}
如果数字为奇数,则在前面添加)。然后添加逗号并传递最后三位数字。
对于附加小数部分/
,则当传递短划线时,检查该部分是否缺失或为零;否则传递小数部分,如果它是一位数字,则传递尾随 0。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\indiancurrency}{m}
{
\bibra_format_number:w #1 .. \q_stop
}
\cs_new:Npn \bibra_format_number:w #1 . #2 . #3 \q_stop
{
\bibra_format_number:n { #1 }
\tl_if_empty:nTF { #2 }
{ / --- }
{ / \__bibra_format_decimal:n { #2 } }
}
\cs_new:Npn \__bibra_format_decimal:n #1
{
\int_compare:nTF { #1 = 0 }
{ --- }
{ #1 \int_compare:nT { \tl_count:n { #1 } = 1 } { 0 } }
}
\cs_new:Npn \bibra_format_number:n #1
{
\tl_if_empty:nTF { #1 }
{ 0 }
{ \__bibra_format_integral:n { #1 } }
}
\cs_new:Npn \__bibra_format_integral:n #1
{
\int_compare:nTF { #1 < 1000 }
{ #1 }
{
\__bibra_format_thousands:e { \tl_range:nnn { #1 } { 1 } { -4 } }
,
\tl_range:nnn { #1 } { -3 } { -1 }
}
}
\cs_new:Npn \__bibra_format_thousands:n #1
{
\int_if_odd:nTF { \tl_count:n { #1 } }
{
\__bibra_format_comma:nn {}#1 \q_nil \q_stop
}
{
\__bibra_format_comma:nn #1 \q_nil \q_stop
}
}
\cs_generate_variant:Nn \__bibra_format_thousands:n { e }
\cs_new:Npn \__bibra_format_comma:nn #1 #2
{
#1 #2 \__bibra_format_comma_again:nn
}
\cs_new:Npn \__bibra_format_comma_again:nn #1 #2
{
\cs_if_eq:NNF #1 \q_nil
{
, #1 #2 \__bibra_format_comma_again:nn
}
}
\ExplSyntaxOff
\begin{document}
\indiancurrency{.34}
\indiancurrency{.3}
\indiancurrency{12}
\indiancurrency{12.3}
\indiancurrency{12.0}
\indiancurrency{12.34}
\indiancurrency{1234.56}
\indiancurrency{12345.67}
\indiancurrency{123456.78}
\indiancurrency{1234567.89}
\indiancurrency{12345678.90}
\end{document}