Первое, что вы можете изменить в оформлении предметного указателя (окружение {theindex}), - это отступы, создаваемые командами \item, \subitem и т.д. Для изменения отступов "на первом уровне" (создаваемых командой \item) надо переопределить команду \@idxitem (но не сам item!). Чтобы вам было от чего отталкиваться, посмотрите на стандартное определение этой команды. Оно очень простое:
\newcommand{\@idxitem}{\par\hangindent=40pt}Для изменения отступов, создаваемых такими командами, как \subitem и subsubitem, надо переопределить непосредственно эти команды. Их стандартные определения также бесхитростны:
\newcommand{\subitem}{\par\hangindent=40pt\hspace*{20pt}} \newcommand{\subsubitem}{\par\hangindent=40pt\hspace*{30pt}}Наконец, команда \indexspace, создающая в предметном указателе дополнительный вертикальный пробел, определяется в стандартных стилях так:
\newcommand{\indexspace}{\par\vspace{10pt plus 5pt minus 3pt}}Иногда хочется изменить оформление предметного указателя более существенным образом. Например, вы можете захотеть, чтобы ссылка на предметный указатель присутствовала в оглавлении (в LaTeX'овском стандарте это не предусмотрено); возможно также, что вы захотите предпослать предметному указателю небольшое введение, набранное во всю ширину страницы. Чтобы добиться таких вещей, надо переопределить окружение \theindex. Его стандартное определение в стилях book и report выглядит так:
\newenvironment{theindex}{\@restonecoltrue \if@twocolumn\@restonecolfalse\fi \columnseprule=0pt \columnsep=35pt \twocolumn[\@makeschapterhead{\indexname}]% \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% \thispagestyle{plain}\parindent=0pt \setlength{\parskip}{0pt plus .3pt}% \let\item=\@idxitem}% {\if@restonecol \onecolumn \else \clearpage \fi}Первая, вторая, предпоследняя и последняя строки этого определения содержат незнакомые вам команды; мы не будем пытаться объяснить, что они значат, а только скажем, что менять эти места в определении окружения {theindex} нельзя.