1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% 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}%
}
|