diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/bookmark.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/oberdiek/bookmark.sty | 388 |
1 files changed, 388 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty b/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty new file mode 100644 index 00000000000..758cb6a6134 --- /dev/null +++ b/Master/texmf-dist/tex/latex/oberdiek/bookmark.sty @@ -0,0 +1,388 @@ +%% +%% 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. +%% +%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://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". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% 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-pdftex.def, +%% bookmark-example.tex. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bookmark}% + [2007/02/20 v0.2 PDF bookmarks (HO)] +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfescapehex\endcsname\relax + \PackageWarningNoLine{bookmark}{% + Some features of pdfTeX 1.30 are missing that\MessageBreak + protect some arguments. Replacements for these\MessageBreak + features are not implemented. Thus the pdf file\MessageBreak + can become invalid or the .aux file breaks% + }% + \let\BKM@escapename\@firstofone + \let\BKM@escapestring\@firstofone + \let\BKM@escapehex\@firstofone + \let\BKM@unescapehex\@firstofone +\else + \let\BKM@escapename\pdfescapename + \let\BKM@escapestring\pdfescapestring + \let\BKM@escapehex\pdfescapehex + \let\BKM@unescapehex\pdfunescapehex +\fi +\RequirePackage{ifpdf} +\RequirePackage{ifxetex} +\RequirePackage{hyperref} +\RequirePackage{auxhook} +\RequirePackage{flags} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{family=BKM,prefix=BKM@} +\newcommand*{\bookmarksetup}{\setkeys{BKM}} +\DeclareBoolOption{open} +\DeclareStringOption[\maxdimen]{openlevel} +\DeclareStringOption[\c@tocdepth]{depth} +\DeclareStringOption[\BKM@currentlevel]{level}[\BKM@currentlevel] +\DeclareBoolOption{keeplevel} +\DeclareBoolOption{startatroot} +\define@key{BKM}{rellevel}{% + \edef\BKM@level{\number\numexpr#1+\BKM@currentlevel\relax}% +} +\def\BKM@currentlevel{0} +\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}{% + \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}% + }% + \fi +} +\let\BKM@color\@empty +\DeclareStringOption{dest} +\DeclareStringOption{named} +\DeclareStringOption{uri} +\DeclareStringOption{gotor} +\DeclareStringOption{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 +\define@key{BKM}{view}{% + \BKM@CheckView{#1}% +} +\let\BKM@view\@empty +\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{pdfbookmark}{% + 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 + \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}{% + \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 +} +\define@key{BKM}{pdftex}[]{% + \def\BKM@driver{pdftex}% +} +\define@key{BKM}{dvips}[]{% + \def\BKM@driver{dvips}% +} +\define@key{BKM}{dvipdfm}[]{% + \def\BKM@driver{dvipdfm}% +} +\define@key{BKM}{dvipdfmx}[]{% + \def\BKM@driver{dvipdfm}% +} +\define@key{BKM}{xetex}[]{% + \def\BKM@driver{dvipdfm}% +} +\InputIfFileExists{bookmark.cfg}{}{} +\providecommand*{\BookmarkDriverDefault}{dvips} +\ifpdf + \def\BKM@driver{pdftex}% +\else + \ifxetex + \def\BKM@driver{dvipdfm}% + \else + \let\BKM@driver\BookmarkDriverDefault + \fi +\fi +\ProcessKeyvalOptions* +\DisableKeyvalOption{BKM}{pdftex} +\DisableKeyvalOption{BKM}{dvips} +\DisableKeyvalOption{BKM}{dvipdfm} +\DisableKeyvalOption{BKM}{dvipdfmx} +\DisableKeyvalOption{BKM}{xetex} +\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 + \fi +\fi +\InputIfFileExists{bkm-\BKM@driver.def}{}{% + \PackageError{bookmark}{% + Unsupported driver `\BKM@driver'.\MessageBreak + Package loading is aborted% + }\@ehc + \endinput +} +\renewcommand*{\pdfbookmark}[3][0]{% + \bookmark[level=#1,dest={#3.#1}]{#2}% + \hyper@anchorstart{#3.#1}\hyper@anchorend +} +\renewcommand*{\currentpdfbookmark}{% + \pdfbookmark[\BKM@currentlevel]% +} +\renewcommand*{\subpdfbookmark}{% + \expandafter\pdfbookmark\expandafter[% + \the\numexpr\BKM@currentlevel+1\relax + ]% +} +\renewcommand*{\belowpdfbookmark}[2]{% + \xdef\BKM@gtemp{\number\BKM@currentlevel}% + \subpdfbookmark{#1}{#2}% + \global\let\BKM@currentlevel\BKM@gtemp +} +\renewcommand*{\Hy@writebookmark}[5]{% + \ifnum#4>\Hy@bookmarksdepth\relax + \else + \begingroup + \ifHy@bookmarksnumbered + \let\numberline\Hy@numberline + \let\partnumberline\Hy@numberline + \let\chapternumberline\Hy@numberline + \else + \let\numberline\@gobble + \let\partnumberline\@gobble + \let\chapternumberline\@gobble + \fi + \bookmark[level=#4,dest={#3}]{#2}% + \endgroup + \fi +} +\let\ReadBookmarks\relax +\endinput +%% +%% End of file `bookmark.sty'. |