summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/currency
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-06-05 23:21:01 +0000
committerKarl Berry <karl@freefriends.org>2017-06-05 23:21:01 +0000
commitda608b3bc374d79a689b8a7b2f8bc30d43d22d2b (patch)
tree612be83e8b6f8a9969b532b7c9d73253600530e9 /Master/texmf-dist/source/latex/currency
parentb5a93c0fae61203d8391db893157a51f9234e550 (diff)
currency (28may17)
git-svn-id: svn://tug.org/texlive/trunk@44489 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/currency')
-rw-r--r--Master/texmf-dist/source/latex/currency/currency.dtx330
-rw-r--r--Master/texmf-dist/source/latex/currency/currency.ins55
2 files changed, 385 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/currency/currency.dtx b/Master/texmf-dist/source/latex/currency/currency.dtx
new file mode 100644
index 00000000000..b471b945e61
--- /dev/null
+++ b/Master/texmf-dist/source/latex/currency/currency.dtx
@@ -0,0 +1,330 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2015 by Scott Pakin <scott+dtx@pakin.org>
+% -------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{currency.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{currency}
+%<*package>
+ [2017/05/25 v0.1 .dtx currency file]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{currency}
+\usepackage{url}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{currency.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v1.0}{2016/07/07}{Initial version}
+%
+% \GetFileInfo{currency.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+%
+% \title{The \textsf{currency} package\thanks{This document
+% corresponds to \textsf{currency}~\fileversion, dated \filedate.}}
+% \author{Antoine Lejay \\ \texttt{Antoine.Lejay@univ-lorraine.fr}}
+%
+% \maketitle
+%
+%
+% \DefineCurrency{EUR}{name={euro},plural-name={euros},symbol={\euro},iso={EUR},kind=iso}
+% \DefineCurrency{USD}{name={dollar},plural-name={dollars},symbol={\$},iso={USD},kind=iso}
+%
+% \section{Introduction}
+%
+% This package creates macros for defined currencies which follow
+% the ISO 4217 codes, with various formatting options for both
+% the currency (code, symbols, names, ...) and the numbers (using \texttt{siunitx}).
+%
+% The currency code ISO 4217 specifies the code of the currency as
+% a three-letters code. The first two ones are the code of the country
+% according to ISO 3166. The last one is the name of the currency name.
+%
+% \section{Licence}
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% \url{http://www.latex-project.org/lppl.txt}
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Antoine Lejay.
+%
+% \section{Documentation and sources}
+%
+% This package is documented in \texttt{currency\_doc}.
+%
+% A source of this package is hosted in
+% \begin{center}
+% \url{https://github.com/antoinelejay/currency}
+% \end{center}
+%
+% \section{Implementation}
+%
+% \subsection{Dependencies}
+%
+% \begin{macrocode}
+\RequirePackage{siunitx}
+\RequirePackage{pgfkeys}
+\RequirePackage{etoolbox}
+\RequirePackage{xparse}
+\RequirePackage{expl3}
+\RequirePackage{textcomp}
+\RequirePackage{eurosym}
+% \end{macrocode}
+% The unit could be printed before or after
+% \begin{macrocode}
+\newif\ifcurrencynumber
+\pgfkeys{/currency/.cd,number/.is if=currencynumber,number=true}
+\newif\ifprintbefore
+\pgfkeys{/currency/pre/.is if=printbefore}
+\pgfkeys{/currency/name/.initial=ZZZ}
+\pgfkeys{/currency/symbol/.initial=\textcurrency}
+% \end{macrocode}
+%
+% Defines a style currency, which is general and empty.
+% The styles are then called in order
+% - the currency style
+% - currency (initially empty)
+% - the options passed to the command
+
+% \begin{macrocode}
+\pgfkeys{/currency/currency/.style={}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\CurrencySetup}[1]{%
+ \pgfkeys{/currency/currency/.style={#1}}%
+}
+\newcommand{\CurrencySetupAppend}[1]{%
+ \pgfkeys{/currency/currency/.append style={#1}}%
+}
+% \end{macrocode}
+%
+% \subsection{Names and symbols definitions}
+%
+% The commands \verb|\currencyName|, \verb|\currencyNames|, \verb|\currencyISO| and \verb|\currencySymbol|
+% are used internally every time a currency is called to define the name, the plural,
+% the ISO code and the symbol associated to a currency.
+%
+% \begin{macrocode}
+\pgfkeys{/currency/name/.store in=\currencyName}
+\pgfkeys{/currency/plural/.store in=\currencyNames}
+\pgfkeys{/currency/plural/.initial=\currencyName s}
+\pgfkeys{/currency/iso/.store in=\currencyISO}
+\pgfkeys{/currency/symbol/.store in=\currencySymbol}
+% \end{macrocode}
+%
+% \subsection{Keys for formatting}
+%
+% Several keys are devoted to insert tokens before or after th unit
+% and the amount, set up the font, ...
+%
+% \begin{macrocode}
+% between the symbol and the num if before
+\pgfkeys{/currency/pre-between/.initial={~}}
+% between the symbol and the num if after
+\pgfkeys{/currency/post-between/.initial={~}}
+% tokens that are inserted before
+\pgfkeys{/currency/before/.initial={}}
+% append to before
+\pgfkeys{/currency/before+/.code={\pgfkeys{/currency/before/.append={#1}}}}
+% prepend to before
+\pgfkeys{/currency/before</.code={\pgfkeys{/currency/before/.prefix={#1}}}}
+\pgfkeys{/currency/after/.initial={}} % tokens that are inserted after
+% append to after
+\pgfkeys{/currency/after+/.code={\pgfkeys{/currency/after/.append={#1}}}}
+% prepend to after
+\pgfkeys{/currency/after</.code={\pgfkeys{/currency/after/.prefix={#1}}}}
+\pgfkeys{/currency/font/.initial={}} % for setting up the fonts
+% append to the font definition
+\pgfkeys{/currency/font+/.code={\pgfkeys{/currency/font/.append={#1}}}}
+% the prefix before the name
+\pgfkeys{/currency/prefix/.initial={}}
+% \end{macrocode}
+%
+% Several options are given for printing the kind of unit (\verb|iso|,
+% \verb|plural|, \verb|name|, \verb|symbol|).
+% \begin{macrocode}
+%
+\pgfkeys{/currency/kind/.is choice}
+\pgfkeys{/currency/kind/iso/.code=%
+ {\def\currencyunit{\currencyISO}}}
+\pgfkeys{/currency/kind/plural/.code=%
+ {\def\currencyunit{\currencyNames}\printbeforefalse}}
+\pgfkeys{/currency/kind/name/.code=%
+ {\def\currencyunit{\currencyName}\printbeforefalse}}
+\pgfkeys{/currency/kind/symbol/.code=%
+ {\def\currencyunit{\currencySymbol}}}
+\pgfkeys{/currency/kind=iso}
+% \end{macrocode}
+%
+% Options are also define for printing the cents (\verb|true|, \verb|false|, \verb|always|).
+%
+% \begin{macrocode}
+\pgfkeys{/currency/cents/.is choice}
+\pgfkeys{/currency/cents/true/.code=%
+ {\sisetup{zero-decimal-to-integer=true}}}
+\pgfkeys{/currency/cents/false/.code=%
+ {\sisetup{zero-decimal-to-integer=true,round-precision=0}}}
+\pgfkeys{/currency/cents/always/.code=%
+ {\sisetup{zero-decimal-to-integer=false,round-integer-to-decimal=true}}}
+\pgfkeys{/currency/cents=true}
+% \end{macrocode}
+%
+% \subsection{Dealing with unknown keys}
+%
+% The unknown keys are passed to the \verb|\num| command of \texttt{siunitx}, which use the \LaTeX3 syntax
+% and not the pgf one.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\pgfkeys{/currency/.unknown/.code={%
+\edef\Unknown{\pgfkeyscurrentname=\pgfkeyscurrentvalue}%
+\keys_set:nV {siunitx} {\Unknown}%
+ }}%
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \subsection{Setting the precision}
+%
+% The key \verb|base| is used to set the precision.
+% Its value is passed to the key \verb|round-precision| of \verb|siunitx|.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\pgfkeys{/currency/base/.code={%
+\edef\SetPrecision{round-precision=\pgfkeyscurrentvalue}%
+\keys_set:nV {siunitx} {\SetPrecision}%
+ }}%
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \subsection{Defining new currencies}
+%
+% The first argument is the name of the currency, normally its ISO symbol (3 letters).
+% This commands defines two global commands.
+%
+% \begin{macro}{\DefineCurrency}
+% Define the parameters for a new currency. The first parameter is
+% a three letters code of type \verb|XXX| (actually, it should by any suitable word).
+% Global commands \verb|\dXXX|
+% (for printing currency with an amount)
+% and \verb|\cXXX| (for printing only the symbols) are then defined, as
+% well as a style under the pgfkey \verb|/currency/XXX|.
+%
+% \begin{macrocode}
+\newcommand{\DefineCurrency}[2]{%
+\pgfkeys{/currency/#1/.style={#2}}%%
+% define the currency with digits as \dXXX
+\global\expandafter\DeclareDocumentCommand\csname d#1\endcsname{o m}{%
+\begingroup%
+% default parameters, to put outside
+\sisetup{round-mode=places,round-precision=2}
+\IfNoValueTF{##1}%
+ {\pgfkeys{/currency/.cd,#1,currency}}%
+ {\pgfkeys{/currency/.cd,#1,currency,##1}}%
+\ifbool{currencynumber}%
+ {\sisetup{parse-numbers=true}}%
+ {\sisetup{parse-numbers=false}}%
+\edef\value{##2}% store the value of the currency
+%
+\ifprintbefore%
+% true clause / print the unit before
+\pgfkeys{/currency/font}%
+\pgfkeys{/currency/before}%
+\text{\pgfkeys{/currency/prefix}\currencyunit}%
+\pgfkeys{/currency/pre-between}%
+\num{\value}\pgfkeys{/currency/after}%
+\else% print the unit after
+\pgfkeys{/currency/font}%
+\pgfkeys{/currency/before}%
+\num{\value}%
+\pgfkeys{/currency/post-between}%
+\text{\pgfkeys{/currency/prefix}\currencyunit}%
+\pgfkeys{/currency/after}%
+\fi%
+\endgroup%
+ }%
+ % define the currency symbol as \cXXX with one optional argument
+ \global\expandafter\DeclareDocumentCommand\csname c#1\endcsname{o}{%
+\begingroup%
+ \IfNoValueTF{##1}%
+ {\pgfkeys{/currency/.cd,#1,currency}}%
+ {\pgfkeys{/currency/.cd,#1,currency,##1}}%
+ \pgfkeys{/currency/font}%
+ \pgfkeys{/currency/before}%
+ \text{\pgfkeys{/currency/prefix}\currencyunit}
+ \pgfkeys{/currency/after}%
+\endgroup%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Predefined styles}
+%
+% Some styles are defined to shorten the typesetting.
+%
+% \begin{macrocode}
+\pgfkeys{/currency/@iso/.style={kind=iso}}
+\pgfkeys{/currency/@symb/.style={kind=symbol}}
+\pgfkeys{/currency/@sy/.style={kind=symbol}}
+\pgfkeys{/currency/@name/.style={kind=name}}
+\pgfkeys{/currency/@na/.style={kind=name}}
+\pgfkeys{/currency/@plural/.style={kind=plural}}
+\pgfkeys{/currency/@pl/.style={kind=plural}}
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/currency/currency.ins b/Master/texmf-dist/source/latex/currency/currency.ins
new file mode 100644
index 00000000000..5712ab3a12d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/currency/currency.ins
@@ -0,0 +1,55 @@
+%%
+%% Copyright (C) 2015 by Scott Pakin <scott+dtx@pakin.org>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{currency}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2015 by Scott Pakin <scott+dtx@pakin.org>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+\endpreamble
+
+\generate{\file{currency.sty}{\from{currency.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* currency.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file skeleton.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile