blob: 7b39cb999f0c425416f35ae4127caf49b73441eb (
plain)
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
113
114
115
116
117
118
119
120
121
122
123
|
% $Id: deIndex.sty 737 2009-10-12 08:59:10Z herbert $
%%
%% IMPORTANT NOTICE:
%%
%% This is file `hvindex.sty',
%%
%% Herbert Voss <herbert@dante.de>
%% October 01, 2009
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%% `hvindex' offers macros for simplifing indexing of words
%%
\NeedsTeXFormat{LaTeX2e}
\def\fileversion{0.03}
\def\filedate{2009/10/24}
%
\ProvidesPackage{hvindex}[\filedate\ \fileversion\ Index macros (hv)]
\message{`hvindex' v\fileversion, \filedate\space (hv)}
%
\newif\ifhv@makeidx\hv@makeidxfalse
\DeclareOption{makeidx}{\hv@makeidxtrue}
\ProcessOptions\relax
\ifhv@makeidx
\RequirePackage{makeidx}\makeindex
\fi
%
\let\IndexNIL\@nil
\def\hvIDXfontDefault#1{#1}
\let\hvIDXfont\hvIDXfontDefault
%\providecommand*\shorthandoff[1]{}
%\providecommand*\shorthandon[1]{}
\newif\ifhvShortHandOff\hvShortHandOfffalse
%\ifcat"~\shorthandoff{"}\hvShortHandOfftrue\fi
\def\hvEncap{"|}
%
\makeatother
\def\Index#1{\expandafter\IndexXi#1!!!\IndexNIL}
\def\IndexXi#1!#2!#3!#4\IndexNIL{%
\ifx\relax#3\relax % no 3rd argument
\ifx\relax#2\relax % no 2nd argument
\IndexXXi#1@@\IndexNIL % scan #1 for @
\else\IndexXXii#1!#2@@\IndexNIL\fi % scan #2 for @
\else\IndexXXiii#1!\noexpand#2!#3@@\IndexNIL% scan #3 for @
\fi}
\def\IndexXXi#1@#2@#3\IndexNIL{%
\ifx\relax#2\relax % no @ in last arg
\def\hvTemp{#1}%
\ifx\hvTemp\hvEncap\index{{#1}}#1\else% {{...}} to get "| with hyperref
\ifx\hvIDXfont\hvIDXfontDefault\index{#1}#1
\else\index{#1@\hvIDXfont{#1}}\hvIDXfont{#1}\fi\fi%#1
\else\index{#1@#2}#2\fi}% % #1@#2
%
\def\IndexXXii#1!#2@#3@#4\IndexNIL{%
\ifx\relax#3\relax % no @ in last arg
\def\hvTemp{#2}%
\ifx\hvTemp\hvEncap\index{#1!{#2}}#2\else
\ifx\hvIDXfont\hvIDXfontDefault\index{#2}#2
\else\index{#1!#2@\hvIDXfont{#2}}\hvIDXfont{#2}\fi\fi%
\else\index{#1!\protect#2@#3}#3\fi}
%
\def\IndexXXiii#1!#2!#3@#4@#5\IndexNIL{%
\ifx\relax#4\relax % no @ in last arg
\def\hvTemp{#3}%
\ifx\hvTemp\hvEncap\index{#1!#2!{#3}}#3\else
\ifx\hvIDXfont\hvIDXfontDefault\index{#3}#3
\else\index{#1!#2!#3@\hvIDXfont{#3}}\hvIDXfont{#3}\fi\fi%
\else\index{#1!#2!\protect#3@#4}#4\fi}
%
\def\sfIndex#1{\let\hvIDXfont\textsf\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\ttIndex#1{\let\hvIDXfont\texttt\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\scIndex#1{\let\hvIDXfont\textsc\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\itIndex#1{\let\hvIDXfont\textit\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\bfIndex#1{\let\hvIDXfont\textbf\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
%
\makeatletter
\def\sIndex#1{\expandafter\sIndex@i#1\@nil}
\def\sIndex@i#1|#2\@nil{\index{#1|see{#2}}#1}
\def\saIndex#1{\expandafter\saIndex@i#1\@nil}
\def\saIndex@i#1|#2\@nil{\index{#1|seealso{#2}}#1}
%
\begingroup
\lccode`0=`\{
\lccode`1=`\}
\lowercase{%
\endgroup
\newcommand\hv@BraceLeft{0}%
\newcommand\hv@BraceRight{1}%
}
\iffalse
\def\iBraceL{%
\begingroup
\edef\x{\endgroup
\noexpand\index{\string"\string{@\string\textbraceleft}%
}\x}
\def\iBraceR{%
\begingroup
\edef\x{\endgroup
\noexpand\index{\string"\string{@\string\textbraceleft}%
}\x}
\fi
%\begingroup
% \edef\x{\endgroup
% \noexpand\index{\string"\string{@\string\textbraceleft}%
% }%
%\x
\newcommand*{\hv@braceIndex}[1]{\index{#1}}
\newcommand*\iBraceL{\hv@braceIndex{\string"\hv@BraceLeft @\string\textbraceleft}}
\newcommand*\iBraceR{\hv@braceIndex{\string"\hv@BraceRight @\string\textbraceright}}
\newcommand*\IBraceL{\hv@braceIndex{\string"\hv@BraceLeft @\string\textbraceleft}\{}
\newcommand*\IBraceR{\hv@braceIndex{\string"\hv@BraceRight @\string\textbraceright}\}}
%\newcommand*\iBraceL{\iBraceL}
%\newcommand*\iBraceR{\iBraceR}
%\newcommand*\IBraceL{\iBraceL\textbraceleft}
%\newcommand*\IBraceR{\iBraceR\textbraceright}
%\ifhvShortHandOff\shorthandon{"}\fi
\endinput
|