Работа в системе LaTeX

       

Предметный указатель


Первое, что вы можете изменить в оформлении предметного указателя (окружение {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} нельзя.
Зато все остальное в этом определении должно быть понятно читателю, усвоившему основную часть нашей книги. Именно, в третьей строке задаются параметры двухколонного оформления в предметном указателе: там сказано, что колонки в окружении theindex не надо разделять линейкой и задается промежуток между двумя колонками. В пятой строке дана команда, задающая (неким не рассматривавшимся нами способом) материал для колонтитулов. Она либо вносит левую и правую пометки, совпадающие со стандартным заглавием предметного указателя, либо ничего не делает. Если вы переопределяете \theindex, то можете в этой строке написать \markboth вместо \@mkboth с теми аргументами, с какими считаете нужным, или вообще убрать эту строку, чтоб пометок не было. В шестой строке обратите внимание на команду, устанавливающую нулевое значение абзацного отступа. Менять ее не надо, поскольку именно с таким значением абзацного отступа согласовано действие команд \item, \subitem и т.п. (вспомните, как действует команда \angindent).

Наконец, в четвертой строке стоит команда \twocolumn с необязательным аргументом. Как объяснялось в лекции 3, то, что стоит в необязательном аргументе, будет напечатано во всю ширину страницы. В стандартном определении тут стоит команда \@makeschapterhead, создающая заголовок ненумерованной главы, но вы можете записать туда и любой текст, который хотите предпослать собственно предметному указателю. Правда, тут возникает один технический момент: введение к предметному указателю вы, видимо, захотите редактировать, и нехорошо для этого всякий раз лазать в стилевой пакет. Один из возможных выходов таков. Запишите в вашем определении окружения {theindex} четвертую строку так:

\twocolumn[\@makeschapterhead{\indexname}\input{ukaz.tex}] Здесь ukaz.tex — файл, в который вы запишете свое введение к предметному указателю.

Если вы хотите, чтобы предметный указатель был отражен в оглавлении, то в необязательный аргумент команды \twocolumn надо добавить команду \addcontentsline, например, в таком виде:



\addcontentsline{toc}{chapter}{\indexname} Поскольку предметный указатель, задаваемый с помощью окружения {theindex}, использует команду \twocolumn, колонки на последней странице указателя могут оказаться разной высоты. Как обычно, лекарство от этого — подключить стилевой пакет {multicol} и сделать так, чтобы окружение {theindex} использовало для печати окружение {multicols}. Для этого нужно переопределить окружение {theindex} следующим образом (мы предполагаем, что пакет {multicol} подключен):

\renewenvironment*{theindex}{\columnseprule=0pt\columnsep=35pt \@makeschapterhead{\indexname}% \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% \thispagestyle{plain}\parindent=0pt \setlength{\parskip}{0pt plus .3pt}% \let\item=\@idxitem \begin{multicols}{2}}% {\end{multicols}} Разумеется, вы можете также изменить параметры в этом определении по своему усмотрению.

Последнее, что нужно сказать про окружение {theindex}, это то, что в классе article четвертая строка его стандартного определения выглядит так:

\twocolumn[\section*{\indexname}]% (поскольку в классе article главы не определены).



  1)   Если просто написать\@addtoreset(скоро вы узнаете, что это значит), то TeX воспримет это как команду \@ (имя — из одной не-буквы!), за которой следует текст addtoreset.
  2)   Но возможно: это сделано, например, в пакете {russcorr}, использованном при подготовке данной книги. См. приложения E и Ж.
  3)   Эта терминология не совпадает с традиционной, но удобна для наших целей.
  4)   Точнее говоря, так будет, если в тексте нет команд типа \section: эти команды, как мы увидим ниже, автоматически вставляют в текст свои пометки, что усложняет картину.
  5)   Но не в именах команд; что будет с русскими буквами, зависит от русификации.
  6)   Точнее говоря, это будет заглавие либо текущего раздела, либо первого из разделов, начинающихся на этой странице — см. выше обсуждение \leftmark и \rightmark.
  7)   Именно так, а не переопределить с помощью \renewcommand!


Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий