summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/actuarialangle
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-10-17 22:47:12 +0000
committerKarl Berry <karl@freefriends.org>2012-10-17 22:47:12 +0000
commit468e15f0c59bbedcccfaa606c1f72d3b6d3a8f9a (patch)
tree13e51d2fbe41c3a86c59bf8c0e34c36f50471d5e /Master/texmf-dist/tex/latex/actuarialangle
parent5c8abbc605957614e0807fd0423b0eebb8c5b96a (diff)
new latex package actuarialangle
git-svn-id: svn://tug.org/texlive/trunk@28004 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/actuarialangle')
-rw-r--r--Master/texmf-dist/tex/latex/actuarialangle/actuarialangle.sty125
1 files changed, 125 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/actuarialangle/actuarialangle.sty b/Master/texmf-dist/tex/latex/actuarialangle/actuarialangle.sty
new file mode 100644
index 00000000000..6c79423ec53
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/actuarialangle/actuarialangle.sty
@@ -0,0 +1,125 @@
+%%
+%% This file is put in the Public Domain by Vincent Goulet.
+%%
+%% Original author of the code (and comments past this header) is
+%% unknown.
+%%
+%% This package defines a single command \actuarialangle to typeset
+%% nice looking "angles" in present value of an annuity symbols common
+%% in actuarial and financial notation.
+%%
+%% USAGE
+%%
+%% In math mode
+%%
+%% \actuarialangle{n}
+%%
+%% to typeset "angle n". For a complete present value symbol,
+%% something like
+%%
+%% a_{\actuarialangle{n}}
+%%
+%% SHORTCUTS
+%%
+%% You will most likely want to use the following shortcuts:
+%%
+%% \angl for \actuarialangle
+%% \angln for \angl{n}
+%% \anglr for \angl{r}
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{actuarialangle}
+
+\catcode`\@=11
+\def\actuarialangle{\mathpalette\act@angle}
+%
+% The operation of \mathpalette causes \actuarialangle{30} to expand
+% to a mathchoice. This ensures that proper sizing will be done if
+% \angle is ever used outside of a first-level subscript:
+%
+% \mathchoice{%
+% {\act@angle\displaystyle{30}}%
+% {\act@angle\textstyle{30}}%
+% {\act@angle\scriptstyle{30}}%
+% {\act@angle\scriptscriptstyle{30}}%
+% }
+%
+\def\act@angle#1#2{%
+\mathord{%
+\mkern1mu % Add a bit of preceding space
+\vbox{\hrule \hbox{\vbox{%
+% This amount of vertical space is the normal space for \overline in a
+% subscript:
+\kern3\fontdimen8\scriptfont\thr@@
+\hbox{$#1#2\m@th$}}%
+% Make the right-hand rule extend down to the depth of a parenthesis
+% even if the symbol under the angle does not have a descender:
+\setbox\z@\hbox{$#1()$}\vrule depth\dp\z@}}%
+\mkern1mu}% Add a bit of following space
+}% end \act@angle
+%
+% \topprecedence puts a precedence number above an item, smashed so
+% that the apparent height of the item is its normal height.
+%
+\def\topprecedence#1#2{\mathpalette{\preced@ t{}{#1}}{#2}}
+%
+% Put a multiplier in the empty set of braces to increase
+% the spacing between the precedence number and the
+% symbol to which it applies, e.g.
+%
+% \def\topprecedence#1#2{\mathpalette{\preced@ t{2.5}{#1}}{#2}}
+%
+% This also applies for \botprecedence and \vartopprecedence.
+% If it is desired that all precedence numbers fall at the
+% same height, regardless of whether there is an hrule between
+% them and the symbol to which they apply, then make
+% \topprecedence the same as \vartopprecedence.
+%
+\def\botprecedence#1#2{\mathpalette{\preced@ b{}{#1}}{#2}}
+%
+% \vartopprecedence provides extra space below the top
+% symbol, to accommodate an intervening hrule.
+%
+\def\vartopprecedence#1#2{\mathpalette{\preced@ t3{#1}}{#2}}
+%
+% In \preced@, #1 is `t' for top or `b' for bottom, #2 is a
+% multiplier for the space between the top and bottom symbols (may
+% be empty), #3 is the first argument from the user, #4 is
+% \displaystyle or \textstyle or \scriptstyle or
+% \scriptscriptstyle, from \mathpalette, and #5 is the second
+% argument given by the user. This peculiar ordering of the
+% arguments is done to work around the restriction of \mathpalette
+% that it only reads 2 arguments.
+%
+\def\preced@#1#2#3#4#5{%
+% Measure the arguments:
+\setbox\tw@\hbox{$\m@th#4#3$}%
+\setbox\z@\hbox{$\m@th#4#5$}\dimen@\wd\z@
+\vbox{% to\ht\z@{%
+\baselineskip\z@skip
+% \lineskip is set using AMSTeX's \ex@, if available, for a slight
+% refinement in the spacing if this macro is used in eightpoint
+% text. If \ex@ is not available, \p@ is used.
+\lineskip#2\ifx\UNDEFINED\ex@\p@\else\ex@\fi\relax
+\lineskiplimit\lineskip
+\if b#1\relax\box\z@\else\vss\fi
+\hbox to\dimen@{\hss\unhbox\tw@\hss}%
+\if t#1\relax\box\z@\else\vss\fi
+}% end \vbox
+}% end \preced@
+% Restore the category code of the @ character:
+\catcode`\@=11
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%To get a little more space after stuff under the angle, define \angl
+% in the following way:
+%
+\def\angl#1{{\actuarialangle{{#1}\mkern2mu}}}
+%
+%
+\def\angln{{\angl n}}
+%
+\def\anglr{{\angl r}}
+%
+\def\lift#1#2{{\topprecedence{#1}{#2}}}
+%%
+%% End of file `actuarialangle.sty'.