summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/bookmark.sty')
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/bookmark.sty155
1 files changed, 110 insertions, 45 deletions
diff --git a/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty b/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty
index ad62d8cea75..a2eb799ac2f 100644
--- a/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty
+++ b/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty
@@ -31,8 +31,29 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bookmark}%
- [2007/03/03 v0.6 PDF bookmarks (HO)]
-\RequirePackage{pdfescape}%
+ [2007/04/09 v0.8 PDF bookmarks (HO)]%
+\newif\ifBKM@WithFlags
+\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
+ }%
+ \BKM@WithFlagsfalse
+\else
+ \def\BKM@CalcExpr#1#2#3#4{%
+ \edef#1{%
+ \the\numexpr#2#3#4\relax
+ }%
+ }%
+ \BKM@WithFlagstrue
+\fi
+\RequirePackage{pdfescape}[2007/03/20]
\def\BKM@EscapeName#1{%
\ifx#1\@empty
\else
@@ -59,8 +80,11 @@
\RequirePackage{ifvtex}
\RequirePackage{hyperref}
\RequirePackage{auxhook}
-\RequirePackage{flags}
\RequirePackage{kvoptions}
+\RequirePackage{hycolor}
+\ifBKM@WithFlags
+ \RequirePackage{flags}%
+\fi
\SetupKeyvalOptions{family=BKM,prefix=BKM@}
\newcommand*{\bookmarksetup}{\setkeys{BKM}}
\DeclareBoolOption[\ifHy@bookmarksopen true\else false\fi]{open}
@@ -111,7 +135,7 @@
\DeclareBoolOption{keeplevel}
\DeclareBoolOption{startatroot}
\define@key{BKM}{rellevel}{%
- \edef\BKM@level{\number\numexpr#1+\BKM@currentlevel\relax}%
+ \BKM@CalcExpr\BKM@level{#1}+\BKM@currentlevel
}
\def\BKM@currentlevel{0}
\DeclareBoolOption[%
@@ -144,43 +168,45 @@
\BKM@PatchHyperrefOption{bookmarksopen}{open}
\BKM@PatchHyperrefOption{bookmarksopenlevel}{openlevel}
\BKM@PatchHyperrefOption{bookmarksdepth}{depth}
-\resetflags{BKM@style}
-\define@key{BKM}{italic}[true]{%
- \expandafter\ifx\csname if#1\endcsname\iftrue
- \setflag{BKM@style}{1}%
- \else
- \clearflag{BKM@style}{1}%
- \fi
-}
-\define@key{BKM}{bold}[true]{%
- \expandafter\ifx\csname if#1\endcsname\iftrue
- \setflag{BKM@style}{2}%
- \else
- \clearflag{BKM@style}{2}%
- \fi
-}
-\define@key{BKM}{rgbcolor}{%
- \def\BKM@color{#1}%
-}
-\define@key{BKM}{color}{%
- \ifx\\#1\\%
- \let\BKM@color\@empty
- \else
- \@ifundefined{XC@bordercolor}{%
+\ifBKM@WithFlags
+ \expandafter\@firstoftwo
+\else
+ \expandafter\@secondoftwo
+\fi
+{%
+ \resetflags{BKM@style}%
+ \define@key{BKM}{italic}[true]{%
+ \expandafter\ifx\csname if#1\endcsname\iftrue
+ \setflag{BKM@style}{1}%
+ \else
+ \clearflag{BKM@style}{1}%
+ \fi
+ }%
+ \define@key{BKM}{bold}[true]{%
+ \expandafter\ifx\csname if#1\endcsname\iftrue
+ \setflag{BKM@style}{2}%
+ \else
+ \clearflag{BKM@style}{2}%
+ \fi
+ }%
+ \def\BKM@PrintStyle{%
+ \printflags{BKM@style}%
+ }%
+}{%
+ \def\BKM@temp#1{%
+ \define@key{BKM}{#1}[true]{%
\PackageWarning{bookmark}{%
- Load package `xcolor' (version >= 2.11) first.\MessageBreak
- Ignoring color specification%
- }%
- }{%
- \begingroup
- \csname @safe@activestrue\endcsname
- \XC@bordercolor{}{#1}%
- \expandafter\endgroup
- \expandafter\def\expandafter\BKM@color\expandafter{%
- \@bordercolor
+ Option `#1' is not available\MessageBreak
+ because of missing e-TeX%
}%
}%
- \fi
+ }%
+ \BKM@temp{italic}%
+ \BKM@temp{bold}%
+ \def\BKM@PrintStyle{0}%
+}
+\define@key{BKM}{color}{%
+ \HyColor@BookmarkColor{#1}\BKM@color{bookmark}{color}%
}
\let\BKM@color\@empty
\DeclareStringOption{dest}
@@ -359,22 +385,37 @@
\endgroup
\fi
}
+\DeclareBoolOption{atend}
+\def\BKM@DisableOptions{%
+ \DisableKeyvalOption{BKM}{atend}%
+}
\def\BKM@DefineDriverKey#1{%
\define@key{BKM}{#1}[]{%
\def\BKM@driver{#1}%
}%
- \g@addto@macro\BKM@DisableDriverOptions{%
+ \g@addto@macro\BKM@DisableOptions{%
\DisableKeyvalOption{BKM}{#1}%
}%
}
-\let\BKM@DisableDriverOptions\@empty
\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}%
+}
\InputIfFileExists{bookmark.cfg}{}{}
\providecommand*{\BookmarkDriverDefault}{dvips}
\ifpdf
@@ -386,12 +427,24 @@
\ifvtex
\def\BKM@driver{vtex}%
\else
- \let\BKM@driver\BookmarkDriverDefault
+ \edef\BKM@driver{\BookmarkDriverDefault}%
\fi
\fi
\fi
\ProcessKeyvalOptions*
-\BKM@DisableDriverOptions
+\BKM@DisableOptions
+\newif\ifBKM@DvipdfmxOutlineOpen
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname SpecialDvipdfmxOutlineOpen\endcsname\relax
+\else
+ \ifnum\SpecialDvipdfmxOutlineOpen>\z@
+ \BKM@DvipdfmxOutlineOpentrue
+ \fi
+\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
@@ -456,9 +509,8 @@
\pdfbookmark[\BKM@currentlevel]%
}
\renewcommand*{\subpdfbookmark}{%
- \expandafter\pdfbookmark\expandafter[%
- \the\numexpr\BKM@currentlevel+1\relax
- ]%
+ \BKM@CalcExpr\BKM@CalcResult\BKM@currentlevel+1%
+ \expandafter\pdfbookmark\expandafter[\BKM@CalcResult]%
}
\renewcommand*{\belowpdfbookmark}[2]{%
\xdef\BKM@gtemp{\number\BKM@currentlevel}%
@@ -486,6 +538,19 @@
\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'.