diff options
author | Karl Berry <karl@freefriends.org> | 2019-12-04 22:50:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-12-04 22:50:54 +0000 |
commit | 70220b77fcae855692634cec42e89f758fd050d4 (patch) | |
tree | ae78eb76c53925ed7ff6c263d25ec17016ef539a /Master/texmf-dist/tex/latex/bookmark/bookmark.sty | |
parent | 49e487c1d97324ceaf3c3da5c2c5fa6925628519 (diff) |
bookmark split from oberdiek (4dec19)
git-svn-id: svn://tug.org/texlive/trunk@53026 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/bookmark/bookmark.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/bookmark/bookmark.sty | 760 |
1 files changed, 760 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bookmark/bookmark.sty b/Master/texmf-dist/tex/latex/bookmark/bookmark.sty new file mode 100644 index 00000000000..9b8e40ec642 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bookmark/bookmark.sty @@ -0,0 +1,760 @@ +%% +%% 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'. |