From 468e15f0c59bbedcccfaa606c1f72d3b6d3a8f9a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 17 Oct 2012 22:47:12 +0000 Subject: new latex package actuarialangle git-svn-id: svn://tug.org/texlive/trunk@28004 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/actuarialangle/actuarialangle.sty | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/actuarialangle/actuarialangle.sty (limited to 'Master/texmf-dist/tex/latex/actuarialangle') 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'. -- cgit v1.2.3