Mailing List CyrTeX-ru@vsu.ru Message #436
From: Alexander I Rozhenko <CyrTeX-ru@vsu.ru>
Subject: Re: Пакет ?bookmark? - можно ли задать глобальные настройки?
Date: Sat, 26 Jul 2008 00:37:23 +0700
To: Cyrillic TeX Users Group <CyrTeX-ru@vsu.ru>
На вскидку сказать не могу. Надо смотреть Ваш код. Какие классы используете и как. Тогда можно будет покопаться и найти решение. И ещё мне нужно точно понимать чего Вы хотите. Чтобы не грузить рассылку, можете выслать мне примеры на адрес

arozhenko at oapmg point sscc point ru

С уважением,
Александр Роженко

----- Original Message ----- From: "regonly noreply" <CyrTeX-ru@vsu.ru>
To: "Cyrillic TeX Users Group" <CyrTeX-ru@vsu.ru>
Sent: Thursday, July 24, 2008 3:46 PM
Subject: Re: Пакет ?bookmark? - можно ли задать глобальные настройки?


Добрый день!

Александр Иосифович, в этот раз, к сожалению, Ваши коды не работают.

Код для оглавления система переваривает, но результата не даёт.
Я подумал, не может ли это быть связано с тем, что оглавление у меня
заносится в закладки командой \pdfbookmark{Contents}{Tableofcontents}
(чтобы "Оглавление" не попадало в само оглавление, а только в
закладки)?

На код для индекса система заругалась, что нельзя в горизонтальном
режиме, поэтому я убрал "\makeatletter ... \makeatother". После этого
заругалась, что "Undefined control sequence" - исправил опечатку
(разные T в "MyTempMacro").

После этого, как и с оглавлением, компилируется, но без нужных изменений.
(Алфавитный указатель попадает и в закладки, и в оглавление при помощи
\addcontentsline{toc}{chapter}{\indexname}.)

Пока ничего не добился - знаний маловато...

----------------------------
Про разницу \Index, \ndex, \Theindex, \theindex, \the и т.п. я понял -
это разные вещи с исторически сложившимися сходными названиями. Надо
просто запомнить и не путать.


23.07.08, Alexander I Rozhenko<CyrTeX-ru@vsu.ru> написал(а):

----- 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




================================================
CyrTeX-ru mailing list Archives and Information:
https://info.vsu.ru/Lists/CyrTeX-ru/List.html



================================================
CyrTeX-ru mailing list Archives and Information:
https://info.vsu.ru/Lists/CyrTeX-ru/List.html



Subscribe (FEED) Subscribe (DIGEST) Subscribe (INDEX) Unsubscribe Mail to Listmaster