我正在写一篇长篇文章,其中有很多关于印度卢比的货币参考(使用包 tfrupee 可以轻松排版)。
在我们继续之前,先了解一下印度货币的一些特有定义:
- 其分组为 ..,2,2,3。例如,100,000 写为 1,00,000。(这与下面的问题不是特别相关,但为了完整性,在此提到了这个事实)。
- 货币单位 十万 = 十万(100,000)
- 货币单位千万=十万(10000000)。
回到问题。
但是,本文档的部分读者将来自美国和欧洲。因此,我想定义以下内容(元代码)。
\usepackage{tfrupee}
\usepackage{eurosym}
\newcommand{\scalefactor}[#1]{100000 if lakh and 10000000 if crore}
\newcommand{\rupeetodollars}{60.08} % Number of rupees to a dollar these days.
\newcommand{\rupeetoeuros}{82.32} % Number of rupees to a Euro these days.
\newcommand{\actualindianmoney}[2]{#1*\scalefactor{#2}}
\newcommand{\indianmoney}[2]{\rupee #1 #2\footnote{\$ \actualindianmoney{#1}{#2}/\rupeetodollars}. \eurosym \actualindianmoney{#1}{#2}/\rupeetosuros.}
使用如下调用:
\indianmoney{10}{lakh}
和\indianmoney{2}{crore}
。
但是,我从未使用 \LaTeX 进行过任何浮点计算(fp 与 pgfmath),也不知道如何将十万转换为 100000,将千万转换为 10000000(进行上述合理的乘法),以及如何确保结果中只有两位小数。
有人能帮我吗?
PS:是否有可能获取上述汇率的编译时间值,而不是可能在几周后过时的硬编码数字(尽管最近已经稳定下来,但印度卢比在过去两年中一直是波动性较大的货币之一)。
答案1
请不要基于此代码进行任何商业交易。至于获取编译时值,如果您在启用 shell-escape 的情况下运行,我猜您可以运行一些外部软件,这些软件会在某处获取信息,然后将其返回给TeX
。但我不知道如何做这些事情,我不擅长赚钱。
这个答案没有关注印度卢比、美元或欧元金额的实际格式;对于后两个包siunitx
或numprint
将有助于获得自己选择的小数点标记和千位分隔符;对于前者在 siunitx 中根据印度数字系统对数字进行分组实现,同样使用xint
,根据印度规则对数字进行分组(但仅适用于整数)。
\documentclass[a4papar]{article}
\usepackage[paperheight=5cm]{geometry}
% \usepackage[UKenglish]{babel}
% \usepackage[autolanguage]{numprint}
\usepackage{xintfrac}
\usepackage{tfrupee}
\usepackage{eurosym}
\newcommand{\rupeetodollars}{60.08} % Number of rupees to a dollar these days.
\newcommand{\rupeetoeuros}{82.32} % Number of rupees to a Euro these days.
\newcommand{\scalefactor}[1]{\csname scalefactor@#1\endcsname }
\makeatletter
\def\scalefactor@lakh {100000}
\def\scalefactor@crore {10000000}
% 100000 if lakh and 10000000 if crore
\makeatother
\newcommand{\actualindianmoney}[2]{\xintMul{#1}{\scalefactor{#2}}}
\newcommand{\indianmoney}[2]{%
\rupee #1 #2\footnote{\$
\xintRound {2}{\xintDiv{\actualindianmoney{#1}{#2}}\rupeetodollars}}.
\EUR{\xintRound {2}{\xintDiv{\actualindianmoney{#1}{#2}}\rupeetoeuros}}}
\begin{document}\thispagestyle{empty}
\indianmoney {1}{lakh}
\indianmoney {0.123}{lakh}
\indianmoney {1}{crore}
\indianmoney {0.987}{crore}
\end{document}