17.2. Index
In order to make LaTeX collect indexing informationthe declaration
\makeindex
must be
put in the preamble. By default the raw index data is put into the
jobname.idx
file. If
the optional file argument is given then index data can be output to
file.idx
. Several
\makeindex
declarations can be used provided they each call for a different file.
The
\printindex
command will print an index where by default the indexed items
are assumed to be in a file called
jobname.ind
. If the optional file argument is given
then the indexed items are read from the file called
file.ind
.
\begin{theindex}
entries
\end{theindex}
\onecolindex \twocolindex
\indexname
The index entries are typeset within the
theindex
environment. By default it is typeset
with two columns but following the
\onecolindex
declaration the environment uses a
single column. The default two column behaviour is restored after the
\twocolindex
declaration. The index title is given by the current value of
\indexname
(default ‘Index’).
\indexintoc \noindexintoc
The declaration
\indexintoc
will cause the
theindex
environment to add the title to the
ToC, while the declaration
\noindexintoc
ensures that the title is not added to the ToC.
The default is
\indexintoc
.
\indexcolsep
\indexrule
The length
\indexcolsep
is the width of the gutter between the two index columns The
length
\indexrule
,default value 0pt, is the thickness of a vertical rule separating the two
columns.
\preindexhook
The macro
\preindexhook
is called after the title is typeset and before the index listing
starts. By default it does nothing but can be changed. For example
\renewcommand{\preindexhook}{Bold page numbers are used
to indicate the main reference for an entry.}
\indexmark
\indexmark
may be used in pagestylesfor page headers in anindex. Its default definition
is:
\newcommand*{\indexmark}{}
but could be redefined like, say,
\renewcommand*{\indexmark}{\markboth{\indexname}{\indexname}}
\ignorenoidxfile
\reportnoidxfile
303
Convert pdf document to text - application SDK tool:C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net, ASP.NET MVC, WinForms, WPF application
C# PDF to Text (TXT) Converting Library to Convert PDF to Text
www.rasteredge.com
Convert pdf document to text - application SDK tool:VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net, ASP.NET MVC, WinForms, WPF application
VB.NET Guide and Sample Codes to Convert PDF to Text in .NET Project
www.rasteredge.com
17. B
ACK MATTER
Following the declaration
\ignorenoidxfile
,which is the default, LaTeX will silently
pass over attempts to use an
idx
file which has not been declared via
\makeindex
.After
the declaration
\reportnoidxfile
LaTeX will whinge about any attempts to write to an
unopened file.
17.2.2 Preparing an index
It it is easy for a computer to provide a list of all the words you have used, and where
they were used. This is called a concordance. Preparing an index, though, is not merely
agathering of words but is an intellectual process that involves recognising and naming
concepts, constructing a logical hierarchy of these and providing links between related
concepts. No computer can do that for you though it can help with some tasks, such as
sorting things into alphabetical order, eliminating duplicates, and so forth.
Several iterations may be required before you have an acceptable index. Generally
you pick out the important words or phrases used on the first pass. Part of the skill of
indexing is finding appropriate words to describe things that may not be obvious from
the text. If there are several ways of describing something they may all be included using
a‘see’ reference to the most obvious of the terms, alternatively you could use ‘see also’
references between the items. Entries should be broken down into subcategories so that
any particular item will not have a long string of page numbers and your reader is more
likely to quickly find the relevant place. After having got the first index you will most
probably have to go back and correct all the sins of ommission and commission, and start
the cycle again.
Ifound that indexing this manual was the most difficult part of preparing it. It was
easy to index the names of all the macros, environments, and so on as I had commands
that would simultaneously print and index these. It was the concepts that was difficult. I
inserted
\index
commands as I went along at what seemed to be appropriate places but
turned out not to be. I would use slightly different words for the same thing, and what was
worse the same word for different things. It took a long time to improve it to its present
rather pitiful state.
\index[
file
]{
stuff
}
The
\index
macro specifies that stuff is to appear in an index. By default the raw index
data — the stuff and the page number — will be output to the
jobname.idx
file, but if
the optional file argument is given then output will be to the
file.idx
file.
Thisbook has two indexes. The mainindex usesthe default indexing commands, while
the second index does not. They are set up like this:
% in preamble
\makeindex
\makeindex[lines]
% in body
...\index{main} ...\index[lines]{First line} ...
...
% at the end
\clearpage
% main index
\pagestyle{Index}
304
application SDK tool:C# PDF Text Extract Library: extract text content from PDF file in
C#.NET PDF text extracting library package, you can easily extract all or partial text content from target PDF document file, edit selected text content, and
www.rasteredge.com
application SDK tool:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
easy for C# developers to convert and transform style that are included in target PDF document file original formatting and interrelation of text and graphical
www.rasteredge.com
17.2. Index
\renewcommand{\preindexhook}{%
The first page number is usually, but not always,
the primary reference to the indexed topic.\vskip\onelineskip}
\printindex
% second index
\clearpage
\pagestyle{ruled}
\renewcommand{\preindexhook}{}
\renewcommand{\indexname}{Index of first lines}
\onecolindex
\printindex[lines]
\specialindex{
file
}{
counter
}{
stuff
}
The
\index
command uses the page number as the reference for the indexed item. In
contrast the
\specialindex
command uses the counter as the reference for the indexed
stuff. It writes stuff to the
file.idx
file, and also writes the page number (in paren-
theses) and the value of the counter. This means that indexing can be with respect to
something other than page numbers. However, if thehyperrefpackage is used the spe-
cial index links will be to pages even though they will appear to be with respect to the
counter; for example, if figure numbers are used as the index reference the hyperref link
will be to the page where the figure caption appears and not to the figure itself.
\showindexmarks \hideindexmarks
\indexmarkstyle
The declaration
\showindexmarks
causes the argument to practically any
\index
and
\specialindex
to be printed in the marginof the page where the indexing command was
issued. The argument is printed using the
\indexmarkstyle
which is initially specified
as
\indexmarkstyle{\normalfont\footnotesize\ttfamily}
ForreasonsI don’t fully understand, spacesin the argument are displayed as though it was
typeset using the starred version of
\verb
. The
\hideindexmarks
,which is the default,
turns off
\showindexmarks
.
The standard classes just provide the plain
\index
command with no optional file
argument. In those classesthe contents of the
jobname.idx
file is limited to the index en-
triesactually seenin the document. In particular, if you are using
\include
for some parts
of the document and
\includeonly
to exclude one or more files, then any
\index
entries
in an excluded file will not appear in the
jobname.idx
file. The new implementation of
indexing eliminates that potential problem.
\item \subitem \subsubitem
The
theindex
environment supports three levels of entries. A
\item
command flags a
main entry; a subentry of a main entry is indicated by
\subitem
and a subentry of a
subentry is flagged by
\subsubitem
.For example a portion of an index might look like:
305
application SDK tool:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Embed zoom setting (fit page, fit width). Free library for .NET framework. Why do we need to convert PDF document to HTML webpage using VB.NET programming code?
www.rasteredge.com
application SDK tool:C# PDF Converter Library SDK to convert PDF to other file formats
need to get text content from PDF file, this C# PDF to text conversion code If you want to transform and convert PDF document to Jpeg image file format, this
www.rasteredge.com
17. B
ACK MATTER
\item bridge, 2,3,7
\subitem railway, 24
\subsubitem Tay, 37
bridge, 2, 3, 7
railway, 24
Tay, 37
if the Tay Bridge
1
was mentioned on page 37.
17.2.3 MakeIndex
It is possible, but time consuming and error prone, to create your index by hand from the
output of the
\index
commands you have scattered throughout the text. Most use the
MakeIndexprogramtodothisforthem;thereisalsothexindyprogram[Keh98]butthisis
much less known.
\xindyindex
It turns out thatxindy cannot handle amemoirhyperindex (which can be obtained with
the aid of thehyperrefpackage), althoughMakeIndexcan do so.
2
If you are going to use
xindytoprocesstherawindexdataput\xindyindexinthepreamble,whichwillprevent
hyperindexing.
MakeIndexreadsanidxfilecontaingtherawindexdata(whichmayincludesome
commands toMakeIndexitself), sorts the data, and then outputsan
ind
file containing the
sorted data, perhaps with some LaTeX commands to control the printing.MakeIndexwas
created as a general purpose index processing program and its operationcan be controlled
by a ‘makeindex configuration file’ (by default this is an
ist
file). Such a file consists of
two parts. The first part specifiesMakeIndexcommands that can be included in the stuff
argument to
\index
.The second part controls how the sorted index data is to be output.
Iwill only describe the most common elements of what you can put in an
ist
file;
consult theMakeIndexmanual [CH88], or the Companion [MG
+
04], for all the details.
You can embed commands, in the form of single characters, in the argument to
\index
that guideMakeIndexin converting the raw
idx
file into an
ind
file for final typesetting.
The complete set of these is given in Table 17.1. They all have defaults and you canmodify
these via aMakeIndexconfiguration file.
In the simplest case you just use the name of the index item as the argument to the
\index
command. However, spaces are significant as far asMakeIndexis concerned. The
following three uses of
\index
will result in three different entries in the final index
\index{ entry} \index{entry} \index{entry }
The
!
character
The
level
specifier starts a new minor level, or subitem, with a maximum of two sub-
levels. The default
level
specifier is the special character
!
.For example:
1
Arailway (railroad)bridge in Scotland that collapsed in 1879 killing 90 people. The disaster lives for ever in the
poem The Tay Bridge Disaster byWilliam McGonagall (1830–?), the first verse ofwhich goes:
Beautiful RailwayBridge oftheSilv’ry Tay!
Alas! Iam verysorrytosay
That ninety lives have been taken away
Onthe last Sabbath day of 1879,
Which will be remember’d fora verylong time.
2
This deficiencyinxindy was discovered byFrederic Connes,who alsoprovided the\xindyindex command.
306
application SDK tool:VB.NET PDF Text Extract Library: extract text content from PDF
With this advanced PDF Add-On, developers are able to extract target text content from source PDF document and save extracted text to other file formats
www.rasteredge.com
application SDK tool:VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
Convert PDF document to DOC and DOCX formats in Visual Basic .NET project. using RasterEdge.XDoc.PDF; Convert PDF to Word Document in VB.NET Demo Code.
www.rasteredge.com
17.2. Index
Table 17.1:MakeIndexconfiguration file input parameters
Keyword
Default
Description
keyword
(s)
"\\indexentry"
The argument to this command is aMakeIn-
dexindexentry
arg_open
(c)
’{’
Argument start delimeter
arg_close
(c)
’}’
Argument end delimeter
range_open
(c)
’(’
Start of an explicit page range
range_close
(c)
’)’
End of an explicit page range
level
(c)
’!’
Character denoting a new subitem level
actual
(c)
’@’
Character denoting that the following text is
to appear in the actual index file
encap
(c)
’|’
Character denoting that the rest of the argu-
ment is to be used as an encapsulating com-
mand for the page number
quote
(c)
’"’
Character that escapes the following charac-
ter
escape
(c)
’\\’
Symbol with no special meaning unless fol-
lowed by the
quote
character, when both
characters will be printed. The
quote
and
escape
characters must be different.
page_compositor
(s)
"-"
Composite number separator
(s) of type string, (c) of type character
p. v:
\index{Alf}
\indexentry{Alf}{v}
p. 1:
\index{Alf}
\indexentry{Alf}{1}
p. 2:
\index{Alf}
\indexentry{Alf}{2}
p. 3:
\index{Alf}
\indexentry{Alf}{3}
p. 5:
\index{Alfabet|see{Bet}}
\indexentry{Alfabet|see{Bet}}{5}
p. 7:
\index{Alf@\textit{Alf}}
\indexentry{Alf@\textit{Alf}}{7}
\index{Bet|textbf}
\indexentry{Bet|textbf}{7}
p. 8:
\index{Alf!Bet!Con}
\indexentry{Alf!Bet!Con}{8}
p. 9:
\index{Alf!Dan}
\indexentry{Alf!Dan}{9}
Figure 17.1: Raw indexing: (left) indexcommandsin the source text; (right)
idx
file entries
307
application SDK tool:VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
Convert PDF to Text. Convert PDF to JPEG. Convert PDF to Png, Gif, Bitmap Images. File & Page Process. File: Merge, Append PDF Files. File: Split PDF Document
www.rasteredge.com
application SDK tool:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
VB.NET PDF - Convert PDF to TIFF Using VB in VB.NET. Free VB.NET Guide to Render and Convert PDF Document to TIFF in Visual Basic Class.
www.rasteredge.com
17. B
ACK MATTER
\begin{theindex}
\item Alf, v, 1-3
\subitem Bet
\subsubitem Con, 8
\subitem Dan, 9
\item \textit{Alf}, 7
\item Alfabet, \see{Bet}{5}
\indexspace
\item Bet, \textbf{7}
\end{theindex}
Alf, v, 1-3
Bet
Con, 8
Dan, 9
Alf, 7
Alfabet, see Bet
Bet, 7
Figure 17.2: Processed index: (left) alphabeticized
ind
file; (right) typeset index
\index{item!sub item!sub sub item}
The
@
character
An indexable item may be represented in two portions, separated by the
actual
specifier,
whichby default isthe
@
character. The portion before the
@
is used whenMakeIndexsorts
the raw index data, and the portion after the
@
is used as the entry text. For example:
\index{MakeIndex@\textit{MakeIndex}}
will result in the final index entry of
\textit{MakeIndex}
in the alphabetic position
accorded to
MakeIndex
.The same treatment can be applied for subitems:
\index{program!MakeIndex@\textit{MakeIndex}!commands}
The
|
character
Anything after the
encap
specifier, which by default is the
|
character, is treated as apply-
ing to the page number. In general
\index{...|str}
will produce a page number, say n, in the form
\str{n}
For example, if you wanted the page number of one particular entry to be in a bold font,
say to indicate that this is where the entry is defined, you would do
\index{entry|textbf}
As aspecialcase, if you want an index item to have a page range put the two characters
|(
at the end of the argument on the first page, and the character pair
|)
at the end of the
argument on the last page. For example:
... \index{range|(} pages about range \index{range|)} ...
The two arguments must match exactly except for the final
(
and
)
.You can also do
\index{...|(str}
which will produce a page range of the form
\str{n-m}
In thiscase, if the range is only a single page, the result is simply
\str{n}
308
17.2. Index
\see{
text
}{
page
}seename
\seealso{
text
}{
page
}alsoname
The macros
\see
and
\seealso
are specifically for use in an
\index
command after
the
|
. The
\see
command replaces the page number by the phrase ‘see text’, while the
\seealso
command adds ‘see also text’ to the entry. For example, in the source for this
manual I have
\index{chapter!style|see{chapterstyle}}
\index{figure|seealso{float}}
A
\see
or
\seealso
should be used once only for a particular entry. The ‘see’ texts for
\see
and
\seealso
are stored in
\seename
and
\alsoname
,whose default definitions
are:
\newcommand*{\seename}{see}
\newcommand*{alsoname}{see also}
The
"
and
\
characters
If, for some reason, you want to index something that includes one of the
!
,
@
,
|
or
"
characters there is the difficulty of persuadingMakeIndexto ignore the special meaning.
This is solved by the
quote
specifier, which is normally the
"
character. The character
immediately after
"
is treated as non-special. For example, if you needed to index the
@
and
!
characters:
\index{"@ (commercial at)}
\index{"! (exclamation)}
The leading
"
isstripped off before entries are alphabetized.
The
escape
specifier is used to strip the specialmeaning from the
quote
specifier. This
is usually the
\
character. So, to index the double quote character itself:
\index{\" (double quote)}
Example of using the special characters
Here is a short example of indexing the special characters. Given an input like this in the
document
\index{exclamation mark ("!)}
\index{vicious|see{circle}}
\index{atsign@\texttt{"@} sign|\textbf}
\index{quote!double ("")}
\index{circle|see{vicious}}
then an index could eventually be produced that looks like:
@
sign, 30
circle, see vicious
exclamation mark (!), 21
quote
double ("), 47
vicious, see circle
309
17. B
ACK MATTER
17.2.4 Controlling MakeIndex output
Table 17.2 lists the parameters that controlMakeIndex’s output, except for the keywords
that control the setting of page numbers. The special characters and strings are not fixed
within theMakeIndexprogram. The program will read an
ist
file in which you can rede-
fine all ofMakeIndex’s defaults.
Ihave used a file called
memman.ist
for configuringMakeIndexfor this manual. Here
it is:
% MakeIndex style file memman.ist
% @ is a valid character in some entries, use ? instead
actual ’?’
% output main entry <entry> as: \item \idxmark{<entry>},
item_0 "\n\\item \\idxmark{"
delim_0 "}, "
% not forgetting the subitem case
item_x1 "} \n \\subitem "
% Wrap and uppercase head letters
headings_flag 1
heading_prefix "\\doidxbookmark{"
heading_suffix "}"
Many items that I need to index include
@
as part of their names, which is one of the
special characters. The
actual
line says that the character
?
performs the same function
as the default
@
(and by implication,
@
is not a special character as far asMakeIndexis
concerned).
The
item_0
line says that a main entry in the generated index starts
\item \idxmark{
and the
delim_0
and
item_x1
lines say that the main entry ends
}, % or
}
\subitem
Thus, main entries will appear in an
ind
file like
\item \idxmark{a main entry}, <list of page numbers>
\item \idxmark{a main entry with no page numbers}
\subitem subitem, <list of page numbers>
Read theMakeIndexmanual [CH88] for full details on how to getMakeIndexto do
what you want.
The
\doidxbookmark
that is used to wrap around the letter group headers, can be
used to not only style the group header, but can also be used to add the headers in the
bookmarks list. This can be done using
\newcommand{\doidxbookmark}[1]{{\def\@tempa{Symbols}\def\@tempb{#1}%
\centering\bfseries \ifx\@tempa\@tempb %
Analphabetics
\phantomsection%
310
17.2. Index
Table 17.2:MakeIndexconfiguration file output parameters
Keyword
Default
Description
preamble
(s)
"\\begin{theindex}\n"
Text for the start of the output file
postamble
(s)
"\n\n\\end{theindex}\n"
Text at the end of the output file
group_skip
(s)
"\n\n\\indexspace\n"
Vertical space before a new letter group
heading_prefix
(s)
""
Prefix for heading for a new letter group
heading_suffix
(s)
""
Suffix for heading for a new letter group
headings_flag
(n)
0
A value = 0 inserts nothing between letter
groups. A value > 0 includes an uppercase
instance of the new symbol, while a value
<0 includes a lowercase instance, all within
heading_prefix
and
heading_suffix
item_0
(s)
"\n\item "
Command inserted in front of a level 0 entry
item_1
(s)
"\n \subitem "
As above for a level 1 entry
item_2
(s)
"\n \subsubitem "
As above for a level 2 entry
item_01
(s)
"\n \subitem "
Command inserted in front of a level 1 entry
starting at level 0
item_12
(s)
"\n \subsubitem "
Command inserted in front of a level 2 entry
starting at level 1
item_x1
(s)
"\n \subitem "
Command inserted in front of a level 1 entry
when the parent level has no page numbers
item_x2
(s)
"\n \subitem "
As above for a level 2 entry
delim_0
(s)
", "
Delimiter betweenlevel 0entry andfirst page
number
delim_1
(s)
", "
As above for level 1 entry
delim_2
(s)
", "
As above for level 2 entry
delim_n
(s)
", "
Delimiter between page numbers
delim_r
(s)
"-"
Designator for a page range
encap_prefix
(s)
"\\"
Prefix in front of a page encapsulator
encap_infix
(s)
"{"
Infix for a page encapsulator
encap_suffix
(s)
"}"
Suffix for a page encapsulator
page_precedence
(s)
"rnaRA"
Page number precedence for sorting.
r
and
R
are lower- and uppercase roman;
a
and
A
are lower- and uppercase alphabetic;
n
is nu-
meric
line_max
(n)
"72"
Maximum length of an output line
indent_space
(s)
"\t\t"
Indentation commands for wrapped lines
indent_length
(n)
"16"
Indentation length for wrapped lines
(s) of type string, (n) of type number,
"\n"
and
"\t"
are newline and tab.
311
17. B
ACK MATTER
\pdfbookmark[0]{Analphabetics}{Analphabetics-idx}%
% \label{AnalphabeticsAnalphabeticsAnalphabetics-idx}%
\else
#1%
\phantomsection%
\pdfbookmark[0]{#1}{#1-idx}%
% \label{#1#1#1-idx}%
\fi%
\vskip\onelineskip\par}}
The labels are generally not needed but can be used to add a visual representation of the
index bookmarks into the index itself.
17.2.5 Indexing and thenatbib package
Thenatbib package [Dal99a] will make an index of citations if
\citeindextrue
is put in
the preamble after thenatbib package is called for.
\citeindexfile
The name of the file for the citation index is stored in the macro
\citeindexfile
.This is
initially defined as:
\newcommand{\citeindexfile}{\jobname}
That is, the citation entries will be written to the default
idx
file. This may be not what
you want so you can change this, for example to:
\renewcommand{\citeindexfile}{names}
If you do change
\citeindexfile
then you have to put
\makeindex[\citeindexfile]
before
\usepackage[...]{natbib}
So, there are effectively two choices, either along the lines of
\renewcommand{\citeindexfile}{authors} % write to authors.idx
\makeindex[\citeindexfile]
\usepackage{natbib}
\citeindextrue
...
\renewcommand{\indexname}{Index of citations}
\printindex[\citeindexfile]
or along the lines of
\usepackage{natbib}
\citeindextrue
\makeindex
...
\printindex
312
Documents you may be interested
Documents you may be interested