You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
760 lines
18 KiB
760 lines
18 KiB
%%
|
|
%% This is file `bookmark.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% bookmark.dtx (with options: `package')
|
|
%%
|
|
%% This is a generated file.
|
|
%%
|
|
%% Project: bookmark
|
|
%% Version: 2019/12/03 v1.28
|
|
%%
|
|
%% Copyright (C)
|
|
%% 2007-2011 Heiko Oberdiek
|
|
%% 2016-2019 Oberdiek Package Support Group
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either
|
|
%% version 1.3c of this license or (at your option) any later
|
|
%% version. This version of this license is in
|
|
%% https://www.latex-project.org/lppl/lppl-1-3c.txt
|
|
%% and the latest version of this license is in
|
|
%% https://www.latex-project.org/lppl.txt
|
|
%% and version 1.3 or later is part of all distributions of
|
|
%% LaTeX version 2005/12/01 or later.
|
|
%%
|
|
%% This work has the LPPL maintenance status "maintained".
|
|
%%
|
|
%% The Current Maintainers of this work are
|
|
%% Heiko Oberdiek and the Oberdiek Package Support Group
|
|
%% https://github.com/ho-tex/bookmark/issues
|
|
%%
|
|
%%
|
|
%% This work consists of the main source file bookmark.dtx
|
|
%% and the derived files
|
|
%% bookmark.sty, bookmark.pdf, bookmark.ins, bookmark.drv,
|
|
%% bkm-dvipdfm.def, bkm-dvips.def, bkm-dvipsone.def,
|
|
%% bkm-textures.def, bkm-pdftex.def, bkm-vtex.def,
|
|
%% bookmark-example.tex.
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{bookmark}%
|
|
[2019/12/03 v1.28 PDF bookmarks (HO)]%
|
|
\begingroup\expandafter\expandafter\expandafter\endgroup
|
|
\expandafter\ifx\csname numexpr\endcsname\relax
|
|
\def\BKM@CalcExpr#1#2#3#4{%
|
|
\begingroup
|
|
\count@=#2\relax
|
|
\advance\count@ by#3#4\relax
|
|
\edef\x{\endgroup
|
|
\def\noexpand#1{\the\count@}%
|
|
}%
|
|
\x
|
|
}%
|
|
\else
|
|
\def\BKM@CalcExpr#1#2#3#4{%
|
|
\edef#1{%
|
|
\the\numexpr#2#3#4\relax
|
|
}%
|
|
}%
|
|
\fi
|
|
\def\BKM@EscapeName#1{%
|
|
\ifx#1\@empty
|
|
\else
|
|
\EdefEscapeName#1#1%
|
|
\fi
|
|
}%
|
|
\def\BKM@EscapeString#1{%
|
|
\ifx#1\@empty
|
|
\else
|
|
\EdefEscapeString#1#1%
|
|
\fi
|
|
}%
|
|
\def\BKM@EscapeHex#1{%
|
|
\ifx#1\@empty
|
|
\else
|
|
\EdefEscapeHex#1#1%
|
|
\fi
|
|
}%
|
|
\def\BKM@UnescapeHex#1{%
|
|
\EdefUnescapeHex#1#1%
|
|
}%
|
|
\RequirePackage{hyperref}[2010/06/18]
|
|
\SetupKeyvalOptions{family=BKM,prefix=BKM@}
|
|
\DeclareLocalOptions{%
|
|
atend,%
|
|
bold,%
|
|
color,%
|
|
depth,%
|
|
dest,%
|
|
draft,%
|
|
final,%
|
|
gotor,%
|
|
italic,%
|
|
keeplevel,%
|
|
level,%
|
|
named,%
|
|
numbered,%
|
|
open,%
|
|
openlevel,%
|
|
page,%
|
|
rawaction,%
|
|
rellevel,%
|
|
srcfile,%
|
|
srcline,%
|
|
startatroot,%
|
|
uri,%
|
|
view,%
|
|
}
|
|
\newcommand*{\bookmarksetup}{\kvsetkeys{BKM}}
|
|
\def\BKM@setup#1{%
|
|
\bookmarksetup{#1}%
|
|
\ifx\BKM@HookNext\ltx@empty
|
|
\else
|
|
\expandafter\bookmarksetup\expandafter{\BKM@HookNext}%
|
|
\BKM@HookNextClear
|
|
\fi
|
|
\BKM@hook
|
|
\ifBKM@keeplevel
|
|
\else
|
|
\xdef\BKM@currentlevel{\BKM@level}%
|
|
\fi
|
|
}
|
|
\newcommand*{\bookmarksetupnext}[1]{%
|
|
\ltx@GlobalAppendToMacro\BKM@HookNext{,#1}%
|
|
}
|
|
\def\BKM@HookNextClear{%
|
|
\global\let\BKM@HookNext\ltx@empty
|
|
}
|
|
\BKM@HookNextClear
|
|
\DeclareBoolOption{draft}
|
|
\DeclareComplementaryOption{final}{draft}
|
|
\def\BKM@DisableOptions{%
|
|
\DisableKeyvalOption[action=warning,package=bookmark]%
|
|
{BKM}{draft}%
|
|
\DisableKeyvalOption[action=warning,package=bookmark]%
|
|
{BKM}{final}%
|
|
}
|
|
\DeclareBoolOption[\ifHy@bookmarksopen true\else false\fi]{open}
|
|
\def\bookmark@open{%
|
|
\ifBKM@open\ltx@one\else\ltx@zero\fi
|
|
}
|
|
\DeclareStringOption[\maxdimen]{openlevel}
|
|
\edef\BKM@openlevel{\number\@bookmarksopenlevel}
|
|
\ltx@IfUndefined{Hy@bookmarksdepth}{%
|
|
\def\BKM@depth{\c@tocdepth}%
|
|
}{%
|
|
\let\BKM@depth\Hy@bookmarksdepth
|
|
}
|
|
\define@key{BKM}{depth}[]{%
|
|
\edef\BKM@param{#1}%
|
|
\ifx\BKM@param\@empty
|
|
\def\BKM@depth{\c@tocdepth}%
|
|
\else
|
|
\ltx@IfUndefined{toclevel@\BKM@param}{%
|
|
\@onelevel@sanitize\BKM@param
|
|
\edef\BKM@temp{\expandafter\@car\BKM@param\@nil}%
|
|
\ifcase 0\expandafter\ifx\BKM@temp-1\fi
|
|
\expandafter\ifnum\expandafter`\BKM@temp>47 %
|
|
\expandafter\ifnum\expandafter`\BKM@temp<58 %
|
|
1%
|
|
\fi
|
|
\fi
|
|
\relax
|
|
\PackageWarning{bookmark}{%
|
|
Unknown document division name (\BKM@param)\MessageBreak
|
|
for option `depth'%
|
|
}%
|
|
\else
|
|
\BKM@SetDepthOrLevel\BKM@depth\BKM@param
|
|
\fi
|
|
}{%
|
|
\BKM@SetDepthOrLevel\BKM@depth{%
|
|
\csname toclevel@\BKM@param\endcsname
|
|
}%
|
|
}%
|
|
\fi
|
|
}
|
|
\def\bookmark@depth{\BKM@depth}
|
|
\def\BKM@SetDepthOrLevel#1#2{%
|
|
\begingroup
|
|
\setbox\z@=\hbox{%
|
|
\count@=#2\relax
|
|
\expandafter
|
|
}%
|
|
\expandafter\endgroup
|
|
\expandafter\def\expandafter#1\expandafter{\the\count@}%
|
|
}
|
|
\DeclareStringOption[\BKM@currentlevel]{level}[\BKM@currentlevel]
|
|
\define@key{BKM}{level}{%
|
|
\edef\BKM@param{#1}%
|
|
\ifx\BKM@param\BKM@MacroCurrentLevel
|
|
\let\BKM@level\BKM@param
|
|
\else
|
|
\ltx@IfUndefined{toclevel@\BKM@param}{%
|
|
\@onelevel@sanitize\BKM@param
|
|
\edef\BKM@temp{\expandafter\@car\BKM@param\@nil}%
|
|
\ifcase 0\expandafter\ifx\BKM@temp-1\fi
|
|
\expandafter\ifnum\expandafter`\BKM@temp>47 %
|
|
\expandafter\ifnum\expandafter`\BKM@temp<58 %
|
|
1%
|
|
\fi
|
|
\fi
|
|
\relax
|
|
\PackageWarning{bookmark}{%
|
|
Unknown document division name (\BKM@param)\MessageBreak
|
|
for option `level'%
|
|
}%
|
|
\else
|
|
\BKM@SetDepthOrLevel\BKM@level\BKM@param
|
|
\fi
|
|
}{%
|
|
\BKM@SetDepthOrLevel\BKM@level{%
|
|
\csname toclevel@\BKM@param\endcsname
|
|
}%
|
|
}%
|
|
\fi
|
|
}
|
|
\def\BKM@MacroCurrentLevel{\BKM@currentlevel}
|
|
\DeclareBoolOption{keeplevel}
|
|
\DeclareBoolOption{startatroot}
|
|
\def\BKM@startatrootfalse{%
|
|
\global\let\ifBKM@startatroot\iffalse
|
|
}
|
|
\def\BKM@startatroottrue{%
|
|
\global\let\ifBKM@startatroot\iftrue
|
|
}
|
|
\define@key{BKM}{rellevel}{%
|
|
\BKM@CalcExpr\BKM@level{#1}+\BKM@currentlevel
|
|
}
|
|
\def\bookmark@level{\BKM@level}
|
|
\def\BKM@currentlevel{0}
|
|
\DeclareBoolOption[%
|
|
\ifHy@bookmarksnumbered true\else false\fi
|
|
]{numbered}
|
|
\g@addto@macro\BKM@numberedtrue{%
|
|
\let\ifHy@bookmarksnumbered\iftrue
|
|
}
|
|
\g@addto@macro\BKM@numberedfalse{%
|
|
\let\ifHy@bookmarksnumbered\iffalse
|
|
}
|
|
\g@addto@macro\Hy@bookmarksnumberedtrue{%
|
|
\let\ifBKM@numbered\iftrue
|
|
}
|
|
\g@addto@macro\Hy@bookmarksnumberedfalse{%
|
|
\let\ifBKM@numbered\iffalse
|
|
}
|
|
\def\bookmark@numbered{%
|
|
\ifBKM@numbered\ltx@one\else\ltx@zero\fi
|
|
}
|
|
\def\BKM@PatchHyperrefOption#1{%
|
|
\expandafter\BKM@@PatchHyperrefOption\csname KV@Hyp@#1\endcsname%
|
|
}
|
|
\def\BKM@@PatchHyperrefOption#1{%
|
|
\expandafter\BKM@@@PatchHyperrefOption#1{##1}\BKM@nil#1%
|
|
}
|
|
\def\BKM@@@PatchHyperrefOption#1\BKM@nil#2#3{%
|
|
\def#2##1{%
|
|
#1%
|
|
\bookmarksetup{#3={##1}}%
|
|
}%
|
|
}
|
|
\BKM@PatchHyperrefOption{bookmarksopen}{open}
|
|
\BKM@PatchHyperrefOption{bookmarksopenlevel}{openlevel}
|
|
\BKM@PatchHyperrefOption{bookmarksdepth}{depth}
|
|
\bitsetReset{BKM@FontStyle}%
|
|
\define@key{BKM}{italic}[true]{%
|
|
\expandafter\ifx\csname if#1\endcsname\iftrue
|
|
\bitsetSet{BKM@FontStyle}{0}%
|
|
\else
|
|
\bitsetClear{BKM@FontStyle}{0}%
|
|
\fi
|
|
}%
|
|
\define@key{BKM}{bold}[true]{%
|
|
\expandafter\ifx\csname if#1\endcsname\iftrue
|
|
\bitsetSet{BKM@FontStyle}{1}%
|
|
\else
|
|
\bitsetClear{BKM@FontStyle}{1}%
|
|
\fi
|
|
}%
|
|
\def\bookmark@italic{%
|
|
\ifnum\bitsetGet{BKM@FontStyle}{0}=1 \ltx@one\else\ltx@zero\fi
|
|
}
|
|
\def\bookmark@bold{%
|
|
\ifnum\bitsetGet{BKM@FontStyle}{1}=1 \ltx@one\else\ltx@zero\fi
|
|
}
|
|
\def\BKM@PrintStyle{%
|
|
\bitsetGetDec{BKM@FontStyle}%
|
|
}%
|
|
\define@key{BKM}{color}{%
|
|
\HyColor@BookmarkColor{#1}\BKM@color{bookmark}{color}%
|
|
}
|
|
\let\BKM@color\@empty
|
|
\def\bookmark@color{\BKM@color}
|
|
\def\BKM@temp#1{%
|
|
\DeclareStringOption{#1}%
|
|
\expandafter\edef\csname bookmark@#1\endcsname{%
|
|
\expandafter\noexpand\csname BKM@#1\endcsname
|
|
}%
|
|
}
|
|
\BKM@temp{dest}
|
|
\BKM@temp{named}
|
|
\BKM@temp{uri}
|
|
\BKM@temp{gotor}
|
|
\BKM@temp{rawaction}
|
|
\define@key{BKM}{page}{%
|
|
\def\BKM@page{#1}%
|
|
\ifx\BKM@page\@empty
|
|
\else
|
|
\edef\BKM@page{\number\BKM@page}%
|
|
\ifnum\BKM@page>\z@
|
|
\else
|
|
\PackageError{bookmark}{Page must be positive}\@ehc
|
|
\def\BKM@page{1}%
|
|
\fi
|
|
\fi
|
|
}
|
|
\let\BKM@page\@empty
|
|
\def\bookmark@page{\BKM@@page}
|
|
\define@key{BKM}{view}{%
|
|
\BKM@CheckView{#1}%
|
|
}
|
|
\let\BKM@view\@empty
|
|
\def\bookmark@view{\BKM@view}
|
|
\def\BKM@CheckView#1{%
|
|
\BKM@CheckViewType#1 \@nil
|
|
}
|
|
\def\BKM@CheckViewType#1 #2\@nil{%
|
|
\def\BKM@type{#1}%
|
|
\@onelevel@sanitize\BKM@type
|
|
\BKM@TestViewType{Fit}{}%
|
|
\BKM@TestViewType{FitB}{}%
|
|
\BKM@TestViewType{FitH}{%
|
|
\BKM@CheckParam#2 \@nil{top}%
|
|
}%
|
|
\BKM@TestViewType{FitBH}{%
|
|
\BKM@CheckParam#2 \@nil{top}%
|
|
}%
|
|
\BKM@TestViewType{FitV}{%
|
|
\BKM@CheckParam#2 \@nil{bottom}%
|
|
}%
|
|
\BKM@TestViewType{FitBV}{%
|
|
\BKM@CheckParam#2 \@nil{bottom}%
|
|
}%
|
|
\BKM@TestViewType{FitR}{%
|
|
\BKM@CheckRect{#2}{ }%
|
|
}%
|
|
\BKM@TestViewType{XYZ}{%
|
|
\BKM@CheckXYZ{#2}{ }%
|
|
}%
|
|
\@car{%
|
|
\PackageError{bookmark}{%
|
|
Unknown view type `\BKM@type',\MessageBreak
|
|
using `FitH' instead%
|
|
}\@ehc
|
|
\def\BKM@view{FitH}%
|
|
}%
|
|
\@nil
|
|
}
|
|
\def\BKM@TestViewType#1{%
|
|
\def\BKM@temp{#1}%
|
|
\@onelevel@sanitize\BKM@temp
|
|
\ifx\BKM@type\BKM@temp
|
|
\let\BKM@view\BKM@temp
|
|
\expandafter\@car
|
|
\else
|
|
\expandafter\@gobble
|
|
\fi
|
|
}
|
|
\def\BKM@CheckParam#1 #2\@nil#3{%
|
|
\def\BKM@param{#1}%
|
|
\ifx\BKM@param\@empty
|
|
\PackageWarning{bookmark}{%
|
|
Missing parameter (#3) for `\BKM@type',\MessageBreak
|
|
using 0%
|
|
}%
|
|
\def\BKM@param{0}%
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
}
|
|
\def\BKM@CheckRect#1#2{%
|
|
\BKM@@CheckRect#1#2#2#2#2\@nil
|
|
}
|
|
\def\BKM@@CheckRect#1 #2 #3 #4 #5\@nil{%
|
|
\def\BKM@temp{0}%
|
|
\def\BKM@param{#1}%
|
|
\ifx\BKM@param\@empty
|
|
\def\BKM@param{0}%
|
|
\def\BKM@temp{1}%
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\def\BKM@param{#2}%
|
|
\ifx\BKM@param\@empty
|
|
\def\BKM@param{0}%
|
|
\def\BKM@temp{1}%
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\def\BKM@param{#3}%
|
|
\ifx\BKM@param\@empty
|
|
\def\BKM@param{0}%
|
|
\def\BKM@temp{1}%
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\def\BKM@param{#4}%
|
|
\ifx\BKM@param\@empty
|
|
\def\BKM@param{0}%
|
|
\def\BKM@temp{1}%
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\ifnum\BKM@temp>\z@
|
|
\PackageWarning{bookmark}{Missing parameters for `\BKM@type'}%
|
|
\fi
|
|
}
|
|
\def\BKM@CheckXYZ#1#2{%
|
|
\BKM@@CheckXYZ#1#2#2#2\@nil
|
|
}
|
|
\def\BKM@@CheckXYZ#1 #2 #3 #4\@nil{%
|
|
\def\BKM@param{#1}%
|
|
\let\BKM@temp\BKM@param
|
|
\@onelevel@sanitize\BKM@temp
|
|
\ifx\BKM@param\@empty
|
|
\let\BKM@param\BKM@null
|
|
\else
|
|
\ifx\BKM@temp\BKM@null
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\def\BKM@param{#2}%
|
|
\let\BKM@temp\BKM@param
|
|
\@onelevel@sanitize\BKM@temp
|
|
\ifx\BKM@param\@empty
|
|
\let\BKM@param\BKM@null
|
|
\else
|
|
\ifx\BKM@temp\BKM@null
|
|
\else
|
|
\BKM@CalcParam
|
|
\fi
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
\def\BKM@param{#3}%
|
|
\ifx\BKM@param\@empty
|
|
\let\BKM@param\BKM@null
|
|
\fi
|
|
\edef\BKM@view{\BKM@view\space\BKM@param}%
|
|
}
|
|
\def\BKM@null{null}
|
|
\@onelevel@sanitize\BKM@null
|
|
\def\BKM@CalcParam{%
|
|
\begingroup
|
|
\let\calc\@firstofone
|
|
\expandafter\BKM@@CalcParam\BKM@param\@empty\@empty\@nil
|
|
}
|
|
\def\BKM@@CalcParam#1#2#3\@nil{%
|
|
\ifx\calc#1%
|
|
\@ifundefined{calc@assign@dimen}{%
|
|
\@ifundefined{dimexpr}{%
|
|
\setlength{\dimen@}{#2}%
|
|
}{%
|
|
\setlength{\dimen@}{\dimexpr#2\relax}%
|
|
}%
|
|
}{%
|
|
\setlength{\dimen@}{#2}%
|
|
}%
|
|
\dimen@.99626\dimen@
|
|
\edef\BKM@param{\strip@pt\dimen@}%
|
|
\expandafter\endgroup
|
|
\expandafter\def\expandafter\BKM@param\expandafter{\BKM@param}%
|
|
\else
|
|
\endgroup
|
|
\fi
|
|
}
|
|
\DeclareBoolOption{atend}
|
|
\g@addto@macro\BKM@DisableOptions{%
|
|
\DisableKeyvalOption[action=warning,package=bookmark]%
|
|
{BKM}{atend}%
|
|
}
|
|
\newcommand*{\bookmarkdefinestyle}[2]{%
|
|
\@ifundefined{BKM@style@#1}{%
|
|
}{%
|
|
\PackageInfo{bookmark}{Redefining style `#1'}%
|
|
}%
|
|
\@namedef{BKM@style@#1}{#2}%
|
|
}
|
|
\define@key{BKM}{style}{%
|
|
\BKM@StyleCall{#1}%
|
|
}
|
|
\newif\ifBKM@ok
|
|
\def\BKM@StyleCall#1{%
|
|
\@ifundefined{BKM@style@#1}{%
|
|
\PackageWarning{bookmark}{%
|
|
Ignoring unknown style `#1'%
|
|
}%
|
|
}{%
|
|
\BKM@oktrue
|
|
\edef\BKM@StyleCurrent{#1}%
|
|
\@onelevel@sanitize\BKM@StyleCurrent
|
|
\let\BKM@StyleEntry\BKM@StyleEntryCheck
|
|
\BKM@StyleStack
|
|
\ifBKM@ok
|
|
\expandafter\@firstofone
|
|
\else
|
|
\PackageError{bookmark}{%
|
|
Ignoring recursive call of style `\BKM@StyleCurrent'%
|
|
}\@ehc
|
|
\expandafter\@gobble
|
|
\fi
|
|
{%
|
|
\let\BKM@StyleEntry\relax
|
|
\edef\BKM@StyleStack{%
|
|
\BKM@StyleEntry{\BKM@StyleCurrent}%
|
|
\BKM@StyleStack
|
|
}%
|
|
\expandafter\expandafter\expandafter\bookmarksetup
|
|
\expandafter\expandafter\expandafter{%
|
|
\csname BKM@style@\BKM@StyleCurrent\endcsname
|
|
}%
|
|
\BKM@StyleStackPop
|
|
}%
|
|
}%
|
|
}
|
|
\def\BKM@StyleStackPop{%
|
|
\let\BKM@StyleEntry\relax
|
|
\edef\BKM@StyleStack{%
|
|
\expandafter\@gobbletwo\BKM@StyleStack
|
|
}%
|
|
}
|
|
\def\BKM@StyleEntryCheck#1{%
|
|
\def\BKM@temp{#1}%
|
|
\ifx\BKM@temp\BKM@StyleCurrent
|
|
\BKM@okfalse
|
|
\fi
|
|
}
|
|
\def\BKM@StyleStack{}
|
|
\DeclareStringOption{srcline}
|
|
\DeclareStringOption{srcfile}
|
|
\def\BKM@hook{}
|
|
\define@key{BKM}{addtohook}{%
|
|
\ltx@LocalAppendToMacro\BKM@hook{#1}%
|
|
}
|
|
\newcommand*{\bookmarkget}[1]{%
|
|
\romannumeral0%
|
|
\ltx@ifundefined{bookmark@#1}{%
|
|
\ltx@space
|
|
}{%
|
|
\expandafter\expandafter\expandafter\ltx@space
|
|
\csname bookmark@#1\endcsname
|
|
}%
|
|
}
|
|
\def\BKM@DefineDriverKey#1{%
|
|
\define@key{BKM}{#1}[]{%
|
|
\def\BKM@driver{#1}%
|
|
}%
|
|
\g@addto@macro\BKM@DisableOptions{%
|
|
\DisableKeyvalOption[action=warning,package=bookmark]%
|
|
{BKM}{#1}%
|
|
}%
|
|
}
|
|
\BKM@DefineDriverKey{pdftex}
|
|
\BKM@DefineDriverKey{dvips}
|
|
\BKM@DefineDriverKey{dvipsone}
|
|
\BKM@DefineDriverKey{textures}
|
|
\BKM@DefineDriverKey{dvipdfm}
|
|
\BKM@DefineDriverKey{dvipdfmx}
|
|
\BKM@DefineDriverKey{xetex}
|
|
\BKM@DefineDriverKey{vtex}
|
|
\define@key{BKM}{dvipdfmx-outline-open}[true]{%
|
|
\expandafter\ifx\csname if#1\expandafter\endcsname
|
|
\csname iftrue\endcsname
|
|
\chardef\SpecialDvipdfmxOutlineOpen\@ne
|
|
\else
|
|
\chardef\SpecialDvipdfmxOutlineOpen\z@
|
|
\fi
|
|
}
|
|
\g@addto@macro\BKM@DisableOptions{%
|
|
\DisableKeyvalOption{BKM}{dvipdfmx-outline-open}%
|
|
}
|
|
\def\bookmark@driver{\BKM@driver}
|
|
\InputIfFileExists{bookmark.cfg}{}{}
|
|
\providecommand*{\BookmarkDriverDefault}{dvips}
|
|
\ifpdf
|
|
\def\BKM@driver{pdftex}%
|
|
\ifx\pdfoutline\@undefined
|
|
\ifx\pdfextension\@undefined\else
|
|
\protected\def\pdfoutline{\pdfextension outline }
|
|
\fi
|
|
\fi
|
|
\else
|
|
\ifxetex
|
|
\def\BKM@driver{dvipdfm}%
|
|
\else
|
|
\ifvtex
|
|
\def\BKM@driver{vtex}%
|
|
\else
|
|
\edef\BKM@driver{\BookmarkDriverDefault}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\ProcessKeyvalOptions*
|
|
\BKM@DisableOptions
|
|
\ifBKM@draft
|
|
\PackageWarningNoLine{bookmark}{Draft mode on}%
|
|
\let\bookmarksetup\ltx@gobble
|
|
\let\BookmarkAtEnd\ltx@gobble
|
|
\let\bookmarkdefinestyle\ltx@gobbletwo
|
|
\let\bookmarkget\ltx@gobble
|
|
\let\pdfbookmark\ltx@undefined
|
|
\newcommand*{\pdfbookmark}[3][]{}%
|
|
\let\currentpdfbookmark\ltx@gobbletwo
|
|
\let\subpdfbookmark\ltx@gobbletwo
|
|
\let\belowpdfbookmark\ltx@gobbletwo
|
|
\newcommand*{\bookmark}[2][]{}%
|
|
\renewcommand*{\Hy@writebookmark}[5]{}%
|
|
\let\ReadBookmarks\relax
|
|
\let\BKM@DefGotoNameAction\ltx@gobbletwo % package `hypdestopt'
|
|
\expandafter\endinput
|
|
\fi
|
|
\newif\ifBKM@DvipdfmxOutlineOpen
|
|
\ltx@IfUndefined{SpecialDvipdfmxOutlineOpen}{%
|
|
\ifxetex
|
|
\ifdim\number\XeTeXversion\XeTeXrevision in<0.9995in %
|
|
\else
|
|
\chardef\SpecialDvipdfmxOutlineOpen\ltx@one
|
|
\BKM@DvipdfmxOutlineOpentrue
|
|
\fi
|
|
\fi
|
|
}{%
|
|
\ifnum\SpecialDvipdfmxOutlineOpen>\z@
|
|
\BKM@DvipdfmxOutlineOpentrue
|
|
\fi
|
|
}
|
|
\def\BKM@temp{dvipdfmx}%
|
|
\ifx\BKM@temp\BKM@driver
|
|
\def\BKM@driver{dvipdfm}%
|
|
\fi
|
|
\def\BKM@temp{pdftex}%
|
|
\ifpdf
|
|
\ifx\BKM@temp\BKM@driver
|
|
\else
|
|
\PackageWarningNoLine{bookmark}{%
|
|
Wrong driver `\BKM@driver', using `pdftex' instead%
|
|
}%
|
|
\let\BKM@driver\BKM@temp
|
|
\fi
|
|
\else
|
|
\ifx\BKM@temp\BKM@driver
|
|
\PackageError{bookmark}{%
|
|
Wrong driver, pdfTeX is not running in PDF mode.\MessageBreak
|
|
Package loading is aborted%
|
|
}\@ehc
|
|
\expandafter\expandafter\expandafter\endinput
|
|
\fi
|
|
\def\BKM@temp{dvipdfm}%
|
|
\ifxetex
|
|
\ifx\BKM@temp\BKM@driver
|
|
\else
|
|
\PackageWarningNoLine{bookmark}{%
|
|
Wrong driver `\BKM@driver',\MessageBreak
|
|
using `dvipdfm' for XeTeX instead%
|
|
}%
|
|
\let\BKM@driver\BKM@temp
|
|
\fi
|
|
\else
|
|
\def\BKM@temp{vtex}%
|
|
\ifvtex
|
|
\ifx\BKM@temp\BKM@driver
|
|
\else
|
|
\PackageWarningNoLine{bookmark}{%
|
|
Wrong driver `\BKM@driver',\MessageBreak
|
|
using `vtex' for VTeX instead%
|
|
}%
|
|
\let\BKM@driver\BKM@temp
|
|
\fi
|
|
\else
|
|
\ifx\BKM@temp\BKM@driver
|
|
\PackageError{bookmark}{%
|
|
Wrong driver, VTeX is not running in PDF mode.\MessageBreak
|
|
Package loading is aborted%
|
|
}\@ehc
|
|
\expandafter\expandafter\expandafter\endinput
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\InputIfFileExists{bkm-\BKM@driver.def}{}{%
|
|
\PackageError{bookmark}{%
|
|
Unsupported driver `\BKM@driver'.\MessageBreak
|
|
Package loading is aborted%
|
|
}\@ehc
|
|
\endinput
|
|
}
|
|
\let\pdfbookmark\ltx@undefined
|
|
\newcommand*{\pdfbookmark}[3][0]{%
|
|
\bookmark[level=#1,dest={#3.#1}]{#2}%
|
|
\hyper@anchorstart{#3.#1}\hyper@anchorend
|
|
}
|
|
\def\currentpdfbookmark{%
|
|
\pdfbookmark[\BKM@currentlevel]%
|
|
}
|
|
\def\subpdfbookmark{%
|
|
\BKM@CalcExpr\BKM@CalcResult\BKM@currentlevel+1%
|
|
\expandafter\pdfbookmark\expandafter[\BKM@CalcResult]%
|
|
}
|
|
\def\belowpdfbookmark#1#2{%
|
|
\xdef\BKM@gtemp{\number\BKM@currentlevel}%
|
|
\subpdfbookmark{#1}{#2}%
|
|
\global\let\BKM@currentlevel\BKM@gtemp
|
|
}
|
|
\def\Hy@writebookmark#1#2#3#4#5{%
|
|
\ifnum#4>\BKM@depth\relax
|
|
\else
|
|
\def\BKM@type{#5}%
|
|
\ifx\BKM@type\Hy@bookmarkstype
|
|
\begingroup
|
|
\ifBKM@numbered
|
|
\let\numberline\Hy@numberline
|
|
\let\booknumberline\Hy@numberline
|
|
\let\partnumberline\Hy@numberline
|
|
\let\chapternumberline\Hy@numberline
|
|
\else
|
|
\let\numberline\@gobble
|
|
\let\booknumberline\@gobble
|
|
\let\partnumberline\@gobble
|
|
\let\chapternumberline\@gobble
|
|
\fi
|
|
\bookmark[level=#4,dest={#3}]{#2}%
|
|
\endgroup
|
|
\fi
|
|
\fi
|
|
}
|
|
\let\ReadBookmarks\relax
|
|
\ifBKM@atend
|
|
\else
|
|
\newcommand{\BookmarkAtEnd}[1]{%
|
|
\PackageWarning{bookmark}{%
|
|
Ignored, because option `atend' is missing%
|
|
}%
|
|
}%
|
|
\expandafter\endinput
|
|
\fi
|
|
\newcommand*{\BookmarkAtEnd}{%
|
|
\g@addto@macro\BKM@EndHook
|
|
}
|
|
\let\BKM@EndHook\@empty
|
|
|
|
\endinput
|
|
%%
|
|
%% End of file `bookmark.sty'.
|
|
|