summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/acromake/acromake.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/acromake/acromake.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/acromake/acromake.sty')
-rw-r--r--macros/latex/contrib/acromake/acromake.sty110
1 files changed, 110 insertions, 0 deletions
diff --git a/macros/latex/contrib/acromake/acromake.sty b/macros/latex/contrib/acromake/acromake.sty
new file mode 100644
index 0000000000..93291fec1b
--- /dev/null
+++ b/macros/latex/contrib/acromake/acromake.sty
@@ -0,0 +1,110 @@
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This is file `acromake.sty', written on
+%% on <1995/7/16> by Paul A. Thompson, Ph.D.
+%%
+%% Copyright (C) 1995 Paul A. Thompson
+%% All rights reserved.
+%%
+%% Advice and suggestions of D. Carlisle, D. Arseneau and P. Schmitt noted.
+%% Errors responsibility of author.
+%%
+%% This file requires LaTeX2e.
+%% ---------------------------
+%%
+%% No permission is granted to modify this file.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This algorithm is presented and discussed in TeX and TUG News, V4, #1.
+%% The algorithm as presented there has several small problems, which are
+%% solved here.
+%%
+%% This file generates acronyms. There are three parameters which may be
+%% set by the user
+%% 1. To generate an acronym
+%% \acromk{ANSA}{{\tt ANSA}}{another nasty stupid acronym}
+%%
+%% The first argument is the name used in text to implement the acronym.
+%% The second argument is the name printed in the text when the acronym
+%% is used. The final argument is the full, non-acronymized version.
+%%
+%% So, if there was an acronym
+%% \acromake{ANSA}{{\tt ANSA}}{another nasty stupid acronym}
+%% it could be used as
+%%
+%% \ANSA is a new approach to the use of \ANSA, where \ANSA is ...
+%%
+%% This would result in
+%%
+%% another nasty stupid acronym ({\tt ANSA}) is a new approach to
+%% the use of {\tt ANSA}, where {\tt ANSA} is ...
+%%
+%% 2. To use the acronym
+%% here \ANSA whatever {foo}lish use of acronym you wish
+%% This will generate the following:
+%% Usage number Resolved text
+%% 1 another nasty stupid acronym (ANSA)
+%% 2 ANSA (page 2)
+%% 3 (and beyond) ANSA
+%%
+%% 3. The following may be set by the user:
+%% ACRcnta - count of uses of acronym macro which will be in full form
+%% (default is 1)
+%% ACRcntb - count of uses of acronym macro which will include page of
+%% acronym def (default is 1 reference, or ACRcntb-ACRcnta)
+%% useACRlb - should the page reference be used - 1-yes, 0-no
+%%
+%% For every acronym, the macro generates the acronym macro and a macro which
+%% acts like a counter for acronym use. Since counters are quite rare, it is
+%% not responsible to use a counter for every acronym - rather, a macro is
+%% generated which fills this function. The acronym macro is called \foo,
+%% while the counter macro is called \fooz. Thus, I would avoid calling any
+%% acronym fooz, as this may be confoozing.
+%%
+%% The .sty file generates 1 counter if it is included. For each acronym
+%% specified, the .sty file generates two macros, 1 for the acronym, and 1 for
+%% the count of acronym use
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\NeedsTeXFormat{LaTeX2e}% % 1
+\RequirePackage{xspace}
+\newcommand{\pv}{} \newcounter{util}
+\newcommand{\ACRcnta}{1}% full acronym generations
+\newcommand{\ACRcntb}{2}% ACRcntb - ACRcnta = acronym + page number
+\newcommand{\addtomacro}[2]{% % like \addtocounter, but for a macro
+ \setcounter{util}{#1}\addtocounter{util}{#2}\xdef#1{\theutil}}%
+\newcommand{\acromake}[3]{%
+ \ifnum\ACRcnta<1\renewcommand{\ACRcnta}{1}\fi%
+ \expandafter\gdef\csname#1z\endcsname{0}% count occurrences
+ \expandafter\newcommand\csname#1\endcsname{%
+ \ifnum\csname#1z\endcsname=0\label{acro:#1}\fi%
+ \expandafter\addtomacro\expandafter{\csname#1z\endcsname}{1}%
+ #3 (#2)% expansion and acronym printed here
+ \ifnum\csname#1z\endcsname=\ACRcnta%
+ \expandafter\renewcommand\csname#1\endcsname{%
+ \expandafter\addtomacro\expandafter{\csname#1z\endcsname}{1}%
+ \renewcommand{\pv}{ (see Page \pageref{acro:#1})}%
+ \ifnum\csname#1z\endcsname>\ACRcntb%
+ \renewcommand{\pv}{#2}%
+ \else%
+ \ifnum\ACRcntb=0%
+ \renewcommand{\pv}{#2}%
+ \else%
+ \ifnum\thepage=0\pageref{acro:#1}%
+ \renewcommand{\pv}{#2}%
+ \else%
+ \renewcommand{\pv}{#2\ (see Page \pageref{acro:#1})}%
+ \fi%
+ \fi%
+ \fi%
+ \pv\xspace%
+ }%
+ \fi%
+ \xspace}%
+}