|
----- Original Message ----- From: "regonly noreply" <CyrTeX-ru@vsu.ru>
To: "Cyrillic TeX Users Group" <CyrTeX-ru@vsu.ru>
Sent: Wednesday, July 23, 2008 10:34 AM
Subject: Re: Пакет ?bookmark? - можно ли задать глобальные настройки?
Александр Иосифович!
Спасибо Вам огромное! Ваша идея работает!
Сейчас я сделал определения для каждого типа заголовка:
% -----------------------------------------------------------
\let\OriginalPart\part
\def\part{\bookmarksetup{bold}\OriginalPart} % Часть - жирная закладка
\let\OriginalChapter\chapter
\def\chapter{\bookmarksetup{bold}\OriginalChapter} % Глава - жирная закладка
\let\OriginalSection\section
\def\section{\bookmarksetup{bold}\OriginalSection} % Раздел - жирная закладка
\let\OriginalSubsection\subsection
\def\subsection{\bookmarksetup{bold=false}\OriginalSubsection} %
Подраздел - обычная
\let\OriginalSubsubsection\subsubsection
\def\subsubsection{\bookmarksetup{bold=false}\OriginalSubsubsection} %
Подподраздел - обычная
\let\OriginalParagraph\paragraph
\def\paragraph{\bookmarksetup{bold=false}\OriginalParagraph} %
Параграф - обычная
\let\OriginalSubparagraph\subparagraph
\def\subparagraph{\bookmarksetup{bold=false}\OriginalSubparagraph} %
Подпараграф - обычная
% -----------------------------------------------------------
Я попытался сразу задавать "отмену", например так:
% -----------------------------------------------------------
\let\OriginalChapter\chapter
\def\chapter{\bookmarksetup{bold}\OriginalChapter}
\addto\OriginalChapter\chapter
\def\chapter{\def\bookmarksetup{bold=false}\OriginalChapter} % ошибки
% -----------------------------------------------------------
или так
% -----------------------------------------------------------
\let\OriginalChapter\chapter
\def\chapter{\bookmarksetup{bold}\OriginalChapter}
\addto\@chapter{\def\bookmarksetup{bold=false}} % ошибки
% -----------------------------------------------------------
и ещё как-то, но либо получаю ошибки, либо нету никаких изменений.
Поэтому пришлось дать определение для КАЖДОГО заголовка, иначе все
последующие закладки (точнее - нижеследующих уровней иерархии) будут
как предыдущие (тоже жирными).
Попытался найти описание команды \addto (правда ли, что она добавляет
в конец) - не нашёл. Возможно, это есть в книге Кнута, но у меня есть
только скан русского издания и английский очень плохой PDF. Я пока не
читал, только заглядывал. Оба без возможности поиска, а быстро найти
нужное вручную в такой толстенной книге не представляется возможным.
Впрочем, \addto нет в предметном указателе, так что и Кнут может не
помочь...
Я ошибся. Команду \addto добавляет содержимое в конец. Но использовать её можно только с командами без параметров, которые в конце не вызывают других команд, берущих параметры из входного потока. Команда определена в пакете Babel (файл babel.def).
Идём дальше. Осталось задать закладки для Библиографии, Предметного
указателя и Оглавления (ну и для списка таблиц, формул, иллюстраций
тоже).
% -----------------------------------------------------------
\let\OriginalTableofcontent\tableofcontent
\def\tableofcontent{\bookmarksetup{bold,color=red165}\OriginalTableofcontent}
%не работает!
\let\OriginalPrintindex\printindex
\def\printindex{\bookmarksetup{bold,color=red165}\OriginalPrintindex}
%не работает!
% -----------------------------------------------------------
В заголовке оглавления используется одна из стандартных команд вывода секций, в зависимости от класса документа. Например, в классе book используется \chapter. Если Вы хотите изменить способ оформления закладки для содержания, поступайте так
\let\OriginalTableofcontent\tableofcontent
\def\tableofcontent{\begingroup
\def\chapter{\bookmarksetup{bold,color=red165}\OriginalChapter}%
\OriginalTableofcontent\endgroup}
Данное переопределение команды \chapter ограничивается только командой \tableofcontent. Вне её будет действовать старое переопределение.
При выводе индекса используется окружение theindex, внутри которого заголовок оформляется достаточно специфически. Так в классе book используется низкоуровневая команда \@makeschapterhead, которую можно аналогичным образом подменить например так:
\makeatletter
\let\OriginalIndex\theindex
\def\theindex{\let\MyTempMacro\@makeschapterhead
\def\@makeschapterhead{\bookmarksetup{bold,color=red165}\MytempMacro}%
\OriginalIndex}
\makeatother
Можно, конечно после \OriginalIndex ещё восстановить старое значение команды
\@makeschapterhead так:
\OriginalIndex \let\@makeschapterhead\MyTempMacro}
но это не обязательно, поскольку оно само восстановится при выходе из окружения theindex.
Это не работает. Если заменить Tableofcontent\tableofcontent и
Printindex\printindex на Thetableofcontent\thetableofcontent - тоже.
Кстати, в чём разница между the и без него, а также между заглавной
буквой и строчной в данном месте?
Разница в том, что это разные команды. Есть специальная команда \the, которую можно применять к переменным, счётчикам и другим регистрам TeX'а. Она печатает текстовое значение регистра. В остальных случаях the в названии команды обычно ничего не означает и появилось исторически. Например, у окружения theindex приставка the отличает его от команды \index, которая уже определена. Поясню в чём особенность обработки окружений. Последовательность
\begin{foo}
...
\end{foo}
практически эквивалентна командам
\begingroup
\foo
...
\endfoo
\endgroup
Это, конечно, не совсем точно, поскольку в командах \begin и \end выполняется ещё несколько дополнительных действий, но по сути можно считать эти последовательности команд эквивалентными. Как видите, каждому окружению соответствует пара команд (\foo и \endfoo). По этой причине нельзя было назвать окружение для предметного указателя так: \begin{index}... \end{index}, поскольку команда \index уже есть и она служит совсем для других целей. Её переопределять с закладками бессмысленно.
Theindex\theindex не работает тоже, зато работает Index/index
(подобрал методом тыка, а не с понятием, к сожалению):
% -----------------------------------------------------------
\let\OriginalIndex\index
\def\index{\bookmarksetup{bold,color=red165}\OriginalIndex}
% -----------------------------------------------------------
но портит всю картину, меняя цвет и некоторых других закладок:
http://s61.radikal.ru/i172/0807/63/d26b6fdbd35e.png (также в приложении)
Я очень не люблю неопределённости и хотел бы знать, почему так
происходит, хотя проблему можно решить, явно ЗАДАВ ЦВЕТ ДЛЯ ВСЕХ
закладок:
% -----------------------------------------------------------
\let\OriginalPart\part
\def\part{\bookmarksetup{bold,color=[rgb]{0,0,0}}\OriginalPart} %
Часть - жирная чёрная закладка
\let\OriginalChapter\chapter
\def\chapter{\bookmarksetup{bold,color=[rgb]{0,0,0}}\OriginalChapter}
% Глава - жирная чёрная закладка
\let\OriginalSection\section
\def\section{\bookmarksetup{bold,color=[rgb]{0,0,0}}\OriginalSection}
% Раздел - жирная чёрная закладка
\let\OriginalSubsection\subsection
\def\subsection{\bookmarksetup{bold=false,color=[rgb]{0,0,0}}\OriginalSubsection}
% Подраздел - обычная чёрная
\let\OriginalSubsubsection\subsubsection
\def\subsubsection{\bookmarksetup{bold=false,color=[rgb]{0,0,0}}\OriginalSubsubsection}
% Подподраздел - обычная чёрная
\let\OriginalParagraph\paragraph
\def\paragraph{\bookmarksetup{bold=false,color=[rgb]{0,0,0}}\OriginalParagraph}
% Параграф - обычная чёрная
\let\OriginalSubparagraph\subparagraph
\def\subparagraph{\bookmarksetup{bold=false,color=[rgb]{0,0,0}}\OriginalSubparagraph}
% Подпараграф - обычная чёрная
\let\OriginalIndex\index
\def\index{\bookmarksetup{bold,color=red165}\OriginalIndex} %
Алфавитный указатель - жирная тёмно-красная закладка - портит всю
картину, меняя цвет и некоторых других закладок, поэтому вид остальных
надо задавать явно.
% -----------------------------------------------------------
Уф-ф-ф...
Осталось разобраться с Оглавлением и его "младшими братьями", а также
с Библиографией (которую я пока не трогал). Буду пока пробовать, а от
всех TeXпертов с нетерпением жду умных мыслей :)
--------------------------------------------------------------------------------
================================================
CyrTeX-ru mailing list Archives and Information:
https://info.vsu.ru/Lists/CyrTeX-ru/List.html
|
|