From 1bb0f10c71d9b14e011afb3e1eb54ea7f7f3df4b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 8 Nov 2020 21:41:19 +0000 Subject: bookmark (8nov20) git-svn-id: svn://tug.org/texlive/trunk@56885 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/bookmark/bookmark-frozen.dtx | 1073 ++++++++++++++++++++ .../texmf-dist/source/latex/bookmark/bookmark.dtx | 250 ++--- 2 files changed, 1173 insertions(+), 150 deletions(-) create mode 100644 Master/texmf-dist/source/latex/bookmark/bookmark-frozen.dtx (limited to 'Master/texmf-dist/source/latex') diff --git a/Master/texmf-dist/source/latex/bookmark/bookmark-frozen.dtx b/Master/texmf-dist/source/latex/bookmark/bookmark-frozen.dtx new file mode 100644 index 00000000000..bf4456829f3 --- /dev/null +++ b/Master/texmf-dist/source/latex/bookmark/bookmark-frozen.dtx @@ -0,0 +1,1073 @@ +% \iffalse meta-comment +% +% File: bookmark-frozen.dtx +% Version: 2020-11-06 v1.29 +% Info: PDF bookmarks +% +% Copyright (C) +% 2007-2011 Heiko Oberdiek +% 2016-2020 Oberdiek Package Support Group +% https://github.com/ho-tex/bookmark/issues +% +% 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-pdftex.def, bkm-vtex.def, +% bkm-dvipdfm-2019-12-03.def, bkm-dvips-2019-12-03.def, +% bkm-pdftex-2019-12-03.def, bkm-vtex-2019-12-03.def, +% bookmark-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/bookmark/bookmark.dtx +% CTAN:macros/latex/contrib/bookmark/bookmark-frozen.dtx +% CTAN:macros/latex/contrib/bookmark/bookmark.pdf +% +% Unpacking: +% (a) If bookmark.ins is present: +% tex bookmark.ins +% (b) Without bookmark.ins: +% tex bookmark.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{bookmark.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If bookmark.drv is present: +% latex bookmark.drv +% (b) Without bookmark.drv: +% latex bookmark.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex bookmark.dtx +% makeindex -s gind.ist bookmark.idx +% pdflatex bookmark.dtx +% makeindex -s gind.ist bookmark.idx +% pdflatex bookmark.dtx +% +% Installation: +% TDS:tex/latex/bookmark/bookmark.sty +% TDS:tex/latex/bookmark/bkm-dvipdfm.def +% TDS:tex/latex/bookmark/bkm-dvips.def +% TDS:tex/latex/bookmark/bkm-pdftex.def +% TDS:tex/latex/bookmark/bkm-vtex.def +% TDS:tex/latex/bookmark/bkm-dvipdfm-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-dvips-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-pdftex-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-vtex-2019-12-03.def% +% TDS:doc/latex/bookmark/bookmark.pdf +% TDS:doc/latex/bookmark/bookmark-example.tex +% TDS:source/latex/bookmark/bookmark.dtx +% TDS:source/latex/bookmark/bookmark-frozen.dtx +% +% \fi +%<*pdftexfrozen> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bkm-pdftex.def}% + [2019/12/03 v1.28 bookmark driver for pdfTeX (HO)]% +\def\BKM@DO@entry#1#2{% + \begingroup + \kvsetkeys{BKM@DO}{#1}% + \def\BKM@DO@title{#2}% + \ifx\BKM@DO@srcfile\@empty + \else + \BKM@UnescapeHex\BKM@DO@srcfile + \fi + \BKM@UnescapeHex\BKM@DO@title + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@DO@id\endcsname\@empty\@empty + \let\BKM@attr\@empty + \ifx\BKM@DO@flags\@empty + \else + \edef\BKM@attr{\BKM@attr/F \BKM@DO@flags}% + \fi + \ifx\BKM@DO@color\@empty + \else + \edef\BKM@attr{\BKM@attr/C[\BKM@DO@color]}% + \fi + \ifx\BKM@attr\@empty + \else + \edef\BKM@attr{attr{\BKM@attr}}% + \fi + \let\BKM@action\@empty + \ifx\BKM@DO@gotor\@empty + \ifx\BKM@DO@dest\@empty + \ifx\BKM@DO@named\@empty + \ifx\BKM@DO@rawaction\@empty + \ifx\BKM@DO@uri\@empty + \ifx\BKM@DO@page\@empty + \PackageError{bookmark}{% + Missing action\BKM@SourceLocation + }\@ehc + \edef\BKM@action{goto page1{/Fit}}% + \else + \ifx\BKM@DO@view\@empty + \def\BKM@DO@view{Fit}% + \fi + \edef\BKM@action{goto page\BKM@DO@page{/\BKM@DO@view}}% + \fi + \else + \BKM@UnescapeHex\BKM@DO@uri + \BKM@EscapeString\BKM@DO@uri + \edef\BKM@action{user{<>}}% + \fi + \else + \BKM@UnescapeHex\BKM@DO@rawaction + \edef\BKM@action{% + user{% + <<% + \BKM@DO@rawaction + >>% + }% + }% + \fi + \else + \BKM@EscapeName\BKM@DO@named + \edef\BKM@action{% + user{<>}% + }% + \fi + \else + \BKM@UnescapeHex\BKM@DO@dest + \BKM@DefGotoNameAction\BKM@action\BKM@DO@dest + \fi + \else + \ifx\BKM@DO@dest\@empty + \ifx\BKM@DO@page\@empty + \def\BKM@DO@page{0}% + \else + \BKM@CalcExpr\BKM@DO@page\BKM@DO@page-1% + \fi + \ifx\BKM@DO@view\@empty + \def\BKM@DO@view{Fit}% + \fi + \edef\BKM@action{/D[\BKM@DO@page/\BKM@DO@view]}% + \else + \BKM@UnescapeHex\BKM@DO@dest + \BKM@EscapeString\BKM@DO@dest + \edef\BKM@action{/D(\BKM@DO@dest)}% + \fi + \BKM@UnescapeHex\BKM@DO@gotor + \BKM@EscapeString\BKM@DO@gotor + \edef\BKM@action{% + user{% + <<% + /S/GoToR% + /F(\BKM@DO@gotor)% + \BKM@action + >>% + }% + }% + \fi + \pdfoutline\BKM@attr\BKM@action + count\ifBKM@DO@open\else-\fi\BKM@x@childs + {\BKM@DO@title}% + \endgroup +} +\def\BKM@DefGotoNameAction#1#2{% + \BKM@EscapeString\BKM@DO@dest + \edef#1{goto name{#2}}% +} +\def\BKM@SourceLocation{% + \ifx\BKM@DO@srcfile\@empty + \ifx\BKM@DO@srcline\@empty + \else + .\MessageBreak + Source: line \BKM@DO@srcline + \fi + \else + \ifx\BKM@DO@srcline\@empty + .\MessageBreak + Source: file `\BKM@DO@srcfile'% + \else + .\MessageBreak + Source: file `\BKM@DO@srcfile', line \BKM@DO@srcline + \fi + \fi +} +\RequirePackage{auxhook} +\AddLineBeginMainAux{% + \string\providecommand\string\BKM@entry[2]{}% +} +\newcount\BKM@id +\BKM@id=\z@ +\@namedef{BKM@0}{000} +\newif\ifBKM@sw +\newcommand*{\bookmark}[2][]{% + \if@filesw + \begingroup + \BKM@InitSourceLocation + \def\bookmark@text{#2}% + \BKM@setup{#1}% + \ifx\BKM@srcfile\@empty + \else + \BKM@EscapeHex\BKM@srcfile + \fi + \edef\BKM@prev{\the\BKM@id}% + \global\advance\BKM@id\@ne + \BKM@swtrue + \@whilesw\ifBKM@sw\fi{% + \ifnum\ifBKM@startatroot\z@\else\BKM@prev\fi=\z@ + \BKM@startatrootfalse + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + 0{\BKM@level}0% + }% + \BKM@swfalse + \else + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@prev\endcsname + \ifnum\BKM@level>\BKM@x@level\relax + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + {\BKM@prev}{\BKM@level}0% + }% + \ifnum\BKM@prev>\z@ + \BKM@CalcExpr\BKM@CalcResult\BKM@x@childs+1% + \expandafter\xdef\csname BKM@\BKM@prev\endcsname{% + {\BKM@x@parent}{\BKM@x@level}{\BKM@CalcResult}% + }% + \fi + \BKM@swfalse + \else + \let\BKM@prev\BKM@x@parent + \fi + \fi + }% + \pdfstringdef\BKM@title{\bookmark@text}% + \edef\BKM@FLAGS{\BKM@PrintStyle}% + \csname BKM@HypDestOptHook\endcsname + \BKM@EscapeHex\BKM@dest + \BKM@EscapeHex\BKM@uri + \BKM@EscapeHex\BKM@gotor + \BKM@EscapeHex\BKM@rawaction + \BKM@EscapeHex\BKM@title + \immediate\write\@mainaux{% + \string\BKM@entry{% + id=\number\BKM@id + \ifBKM@open + \ifnum\BKM@level<\BKM@openlevel + ,open% + \fi + \fi + \BKM@auxentry{dest}% + \BKM@auxentry{named}% + \BKM@auxentry{uri}% + \BKM@auxentry{gotor}% + \BKM@auxentry{page}% + \BKM@auxentry{view}% + \BKM@auxentry{rawaction}% + \BKM@auxentry{color}% + \ifnum\BKM@FLAGS>\z@ + ,flags=\BKM@FLAGS + \fi + \BKM@auxentry{srcline}% + \BKM@auxentry{srcfile}% + }{\BKM@title}% + }% + \endgroup + \fi +} +\def\BKM@getx#1#2#3{% + \def\BKM@x@parent{#1}% + \def\BKM@x@level{#2}% + \def\BKM@x@childs{#3}% +} +\def\BKM@auxentry#1{% + \expandafter\ifx\csname BKM@#1\endcsname\@empty + \else + ,#1={\csname BKM@#1\endcsname}% + \fi +} +\def\BKM@InitSourceLocation{% + \edef\BKM@srcline{\the\inputlineno}% + \BKM@LuaTeX@InitFile + \ifx\BKM@srcfile\@empty + \ltx@IfUndefined{currfilepath}{}{% + \edef\BKM@srcfile{\currfilepath}% + }% + \fi +} +\ifluatex + \ifnum\luatexversion>36 % + \def\BKM@LuaTeX@InitFile{% + \begingroup + \ltx@LocToksA={}% + \edef\x{\endgroup + \def\noexpand\BKM@srcfile{% + \the\expandafter\ltx@LocToksA + \directlua{% + if status and status.filename then % + tex.settoks('ltx@LocToksA', status.filename)% + end% + }% + }% + }\x + }% + \else + \let\BKM@LuaTeX@InitFile\relax + \fi +\else + \let\BKM@LuaTeX@InitFile\relax +\fi +\SetupKeyvalOptions{family=BKM@DO,prefix=BKM@DO@} +\DeclareStringOption[0]{id} +\DeclareBoolOption{open} +\DeclareStringOption{flags} +\DeclareStringOption{color} +\DeclareStringOption{dest} +\DeclareStringOption{named} +\DeclareStringOption{uri} +\DeclareStringOption{gotor} +\DeclareStringOption{page} +\DeclareStringOption{view} +\DeclareStringOption{rawaction} +\DeclareStringOption{srcline} +\DeclareStringOption{srcfile} +\AtBeginDocument{% + \let\BKM@entry\BKM@DO@entry +} +\ifBKM@atend + \AfterLastShipout{% + \BKM@EndHook + }% +\fi +% +%<*dvipsfrozen> +\def\BKM@SourceLocation{% + \ifx\BKM@DO@srcfile\@empty + \ifx\BKM@DO@srcline\@empty + \else + .\MessageBreak + Source: line \BKM@DO@srcline + \fi + \else + \ifx\BKM@DO@srcline\@empty + .\MessageBreak + Source: file `\BKM@DO@srcfile'% + \else + .\MessageBreak + Source: file `\BKM@DO@srcfile', line \BKM@DO@srcline + \fi + \fi +} +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bkm-dvips.def}% + [2019/12/03 v1.28 bookmark driver for dvips (HO)]% +\def\BKM@PSHeaderFile#1{% + \special{header=#1}% +} +\def\BKM@filename{\jobname.out.ps} +\BKM@PSHeaderFile\BKM@filename +\RequirePackage{atveryend}[2009/12/07] +\AfterLastShipout{\BKM@pdfmark@out} +\def\BKM@pdfmark@out{% + \if@filesw + \newwrite\BKM@file + \immediate\openout\BKM@file=\BKM@filename\relax + \BKM@write{\@percentchar!}% + \BKM@write{/pdfmark where{pop}}% + \BKM@write{% + {% + /globaldict where{pop globaldict}{userdict}ifelse% + /pdfmark/cleartomark load put% + }% + }% + \BKM@write{ifelse}% + \else + \let\BKM@write\@gobble + \let\BKM@DO@entry\@gobbletwo + \fi +} +\def\BKM@write#{% + \immediate\write\BKM@file +} +\def\BKM@DO@entry#1#2{% + \begingroup + \kvsetkeys{BKM@DO}{#1}% + \ifx\BKM@DO@srcfile\@empty + \else + \BKM@UnescapeHex\BKM@DO@srcfile + \fi + \def\BKM@DO@title{#2}% + \BKM@UnescapeHex\BKM@DO@title + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@DO@id\endcsname\@empty\@empty + \let\BKM@attr\@empty + \ifx\BKM@DO@flags\@empty + \else + \edef\BKM@attr{\BKM@attr/F \BKM@DO@flags}% + \fi + \ifx\BKM@DO@color\@empty + \else + \edef\BKM@attr{\BKM@attr/C[\BKM@DO@color]}% + \fi + \let\BKM@action\@empty + \ifx\BKM@DO@gotor\@empty + \ifx\BKM@DO@dest\@empty + \ifx\BKM@DO@named\@empty + \ifx\BKM@DO@rawaction\@empty + \ifx\BKM@DO@uri\@empty + \ifx\BKM@DO@page\@empty + \PackageError{bookmark}{% + Missing action\BKM@SourceLocation + }\@ehc + \edef\BKM@action{% + /Action/GoTo% + /Page 1% + /View[/Fit]% + }% + \else + \ifx\BKM@DO@view\@empty + \def\BKM@DO@view{Fit}% + \fi + \edef\BKM@action{% + /Action/GoTo% + /Page \BKM@DO@page + /View[/\BKM@DO@view]% + }% + \fi + \else + \BKM@UnescapeHex\BKM@DO@uri + \BKM@EscapeString\BKM@DO@uri + \edef\BKM@action{% + /Action<<% + /Subtype/URI% + /URI(\BKM@DO@uri)% + >>% + }% + \fi + \else + \BKM@UnescapeHex\BKM@DO@rawaction + \edef\BKM@action{% + /Action<<% + \BKM@DO@rawaction + >>% + }% + \fi + \else + \BKM@EscapeName\BKM@DO@named + \edef\BKM@action{% + /Action<<% + /Subtype/Named% + /N/\BKM@DO@named + >>% + }% + \fi + \else + \BKM@UnescapeHex\BKM@DO@dest + \BKM@EscapeString\BKM@DO@dest + \edef\BKM@action{% + /Action/GoTo% + /Dest(\BKM@DO@dest)cvn% + }% + \fi + \else + \ifx\BKM@DO@dest\@empty + \ifx\BKM@DO@page\@empty + \def\BKM@DO@page{1}% + \fi + \ifx\BKM@DO@view\@empty + \def\BKM@DO@view{Fit}% + \fi + \edef\BKM@action{% + /Page \BKM@DO@page + /View[/\BKM@DO@view]% + }% + \else + \BKM@UnescapeHex\BKM@DO@dest + \BKM@EscapeString\BKM@DO@dest + \edef\BKM@action{% + /Dest(\BKM@DO@dest)cvn% + }% + \fi + \BKM@UnescapeHex\BKM@DO@gotor + \BKM@EscapeString\BKM@DO@gotor + \edef\BKM@action{% + /Action/GoToR% + /File(\BKM@DO@gotor)% + \BKM@action + }% + \fi + \BKM@write{[}% + \BKM@write{/Title(\BKM@DO@title)}% + \ifnum\BKM@x@childs>\z@ + \BKM@write{/Count \ifBKM@DO@open\else-\fi\BKM@x@childs}% + \fi + \ifx\BKM@attr\@empty + \else + \BKM@write{\BKM@attr}% + \fi + \BKM@write{\BKM@action}% + \BKM@write{/OUT pdfmark}% + \endgroup +} +\RequirePackage{auxhook} +\AddLineBeginMainAux{% + \string\providecommand\string\BKM@entry[2]{}% +} +\newcount\BKM@id +\BKM@id=\z@ +\@namedef{BKM@0}{000} +\newif\ifBKM@sw +\newcommand*{\bookmark}[2][]{% + \if@filesw + \begingroup + \BKM@InitSourceLocation + \def\bookmark@text{#2}% + \BKM@setup{#1}% + \ifx\BKM@srcfile\@empty + \else + \BKM@EscapeHex\BKM@srcfile + \fi + \edef\BKM@prev{\the\BKM@id}% + \global\advance\BKM@id\@ne + \BKM@swtrue + \@whilesw\ifBKM@sw\fi{% + \ifnum\ifBKM@startatroot\z@\else\BKM@prev\fi=\z@ + \BKM@startatrootfalse + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + 0{\BKM@level}0% + }% + \BKM@swfalse + \else + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@prev\endcsname + \ifnum\BKM@level>\BKM@x@level\relax + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + {\BKM@prev}{\BKM@level}0% + }% + \ifnum\BKM@prev>\z@ + \BKM@CalcExpr\BKM@CalcResult\BKM@x@childs+1% + \expandafter\xdef\csname BKM@\BKM@prev\endcsname{% + {\BKM@x@parent}{\BKM@x@level}{\BKM@CalcResult}% + }% + \fi + \BKM@swfalse + \else + \let\BKM@prev\BKM@x@parent + \fi + \fi + }% + \pdfstringdef\BKM@title{\bookmark@text}% + \edef\BKM@FLAGS{\BKM@PrintStyle}% + \csname BKM@HypDestOptHook\endcsname + \BKM@EscapeHex\BKM@dest + \BKM@EscapeHex\BKM@uri + \BKM@EscapeHex\BKM@gotor + \BKM@EscapeHex\BKM@rawaction + \BKM@EscapeHex\BKM@title + \immediate\write\@mainaux{% + \string\BKM@entry{% + id=\number\BKM@id + \ifBKM@open + \ifnum\BKM@level<\BKM@openlevel + ,open% + \fi + \fi + \BKM@auxentry{dest}% + \BKM@auxentry{named}% + \BKM@auxentry{uri}% + \BKM@auxentry{gotor}% + \BKM@auxentry{page}% + \BKM@auxentry{view}% + \BKM@auxentry{rawaction}% + \BKM@auxentry{color}% + \ifnum\BKM@FLAGS>\z@ + ,flags=\BKM@FLAGS + \fi + \BKM@auxentry{srcline}% + \BKM@auxentry{srcfile}% + }{\BKM@title}% + }% + \endgroup + \fi +} +\def\BKM@getx#1#2#3{% + \def\BKM@x@parent{#1}% + \def\BKM@x@level{#2}% + \def\BKM@x@childs{#3}% +} +\def\BKM@auxentry#1{% + \expandafter\ifx\csname BKM@#1\endcsname\@empty + \else + ,#1={\csname BKM@#1\endcsname}% + \fi +} +\def\BKM@InitSourceLocation{% + \edef\BKM@srcline{\the\inputlineno}% + \BKM@LuaTeX@InitFile + \ifx\BKM@srcfile\@empty + \ltx@IfUndefined{currfilepath}{}{% + \edef\BKM@srcfile{\currfilepath}% + }% + \fi +} +\ifluatex + \ifnum\luatexversion>36 % + \def\BKM@LuaTeX@InitFile{% + \begingroup + \ltx@LocToksA={}% + \edef\x{\endgroup + \def\noexpand\BKM@srcfile{% + \the\expandafter\ltx@LocToksA + \directlua{% + if status and status.filename then % + tex.settoks('ltx@LocToksA', status.filename)% + end% + }% + }% + }\x + }% + \else + \let\BKM@LuaTeX@InitFile\relax + \fi +\else + \let\BKM@LuaTeX@InitFile\relax +\fi +\SetupKeyvalOptions{family=BKM@DO,prefix=BKM@DO@} +\DeclareStringOption[0]{id} +\DeclareBoolOption{open} +\DeclareStringOption{flags} +\DeclareStringOption{color} +\DeclareStringOption{dest} +\DeclareStringOption{named} +\DeclareStringOption{uri} +\DeclareStringOption{gotor} +\DeclareStringOption{page} +\DeclareStringOption{view} +\DeclareStringOption{rawaction} +\DeclareStringOption{srcline} +\DeclareStringOption{srcfile} +\AtBeginDocument{% + \let\BKM@entry\BKM@DO@entry +} +\ifBKM@atend + \AfterLastShipout{% + \BKM@EndHook + }% +\fi +% +%<*dvipdfmfrozen> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bkm-dvipdfm.def}% + [2019/12/03 v1.28 bookmark driver for dvipdfm (HO)]% +\newcount\BKM@id +\BKM@id=\z@ +\@namedef{BKM@0}{000} +\newif\ifBKM@sw +\newcommand*{\bookmark}[2][]{% + \if@filesw + \begingroup + \def\bookmark@text{#2}% + \BKM@setup{#1}% + \edef\BKM@prev{\the\BKM@id}% + \global\advance\BKM@id\@ne + \BKM@swtrue + \@whilesw\ifBKM@sw\fi{% + \def\BKM@abslevel{1}% + \ifnum\ifBKM@startatroot\z@\else\BKM@prev\fi=\z@ + \BKM@startatrootfalse + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + 0{\BKM@level}\BKM@abslevel + }% + \BKM@swfalse + \else + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@prev\endcsname + \ifnum\BKM@level>\BKM@x@level\relax + \BKM@CalcExpr\BKM@abslevel\BKM@x@abslevel+1% + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + {\BKM@prev}{\BKM@level}\BKM@abslevel + }% + \BKM@swfalse + \else + \let\BKM@prev\BKM@x@parent + \fi + \fi + }% + \csname HyPsd@XeTeXBigCharstrue\endcsname + \pdfstringdef\BKM@title{\bookmark@text}% + \edef\BKM@FLAGS{\BKM@PrintStyle}% + \let\BKM@action\@empty + \ifx\BKM@gotor\@empty + \ifx\BKM@dest\@empty + \ifx\BKM@named\@empty + \ifx\BKM@rawaction\@empty + \ifx\BKM@uri\@empty + \ifx\BKM@page\@empty + \PackageError{bookmark}{Missing action}\@ehc + \edef\BKM@action{/Dest[@page1/Fit]}% + \else + \ifx\BKM@view\@empty + \def\BKM@view{Fit}% + \fi + \edef\BKM@action{/Dest[@page\BKM@page/\BKM@view]}% + \fi + \else + \BKM@EscapeString\BKM@uri + \edef\BKM@action{% + /A<<% + /S/URI% + /URI(\BKM@uri)% + >>% + }% + \fi + \else + \edef\BKM@action{/A<<\BKM@rawaction>>}% + \fi + \else + \BKM@EscapeName\BKM@named + \edef\BKM@action{% + /A<>% + }% + \fi + \else + \BKM@EscapeString\BKM@dest + \edef\BKM@action{% + /A<<% + /S/GoTo% + /D(\BKM@dest)% + >>% + }% + \fi + \else + \ifx\BKM@dest\@empty + \ifx\BKM@page\@empty + \def\BKM@page{0}% + \else + \BKM@CalcExpr\BKM@page\BKM@page-1% + \fi + \ifx\BKM@view\@empty + \def\BKM@view{Fit}% + \fi + \edef\BKM@action{/D[\BKM@page/\BKM@view]}% + \else + \BKM@EscapeString\BKM@dest + \edef\BKM@action{/D(\BKM@dest)}% + \fi + \BKM@EscapeString\BKM@gotor + \edef\BKM@action{% + /A<<% + /S/GoToR% + /F(\BKM@gotor)% + \BKM@action + >>% + }% + \fi + \special{pdf:% + out \ifBKM@DvipdfmxOutlineOpen + [% + \ifBKM@open + \ifnum\BKM@level<% + \expandafter\ltx@firstofone\expandafter + {\number\BKM@openlevel} % + \else + -% + \fi + \else + -% + \fi + ] % + \fi + \BKM@abslevel + <<% + /Title(\BKM@title)% + \ifx\BKM@color\@empty + \else + /C[\BKM@color]% + \fi + \ifnum\BKM@FLAGS>\z@ + /F \BKM@FLAGS + \fi + \BKM@action + >>% + }% + \endgroup + \fi +} +\def\BKM@getx#1#2#3{% + \def\BKM@x@parent{#1}% + \def\BKM@x@level{#2}% + \def\BKM@x@abslevel{#3}% +} +\ifBKM@atend + \RequirePackage{atenddvi}% + \AtEndDvi{\BKM@EndHook}% +\fi +% +%<*vtexfrozen> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bkm-vtex.def}% + [2019/12/03 v1.28 bookmark driver for VTeX (HO)]% +\ifvtexpdf +\else + \PackageWarningNoLine{bookmark}{% + The VTeX driver only supports PDF mode% + }% +\fi +\newcount\BKM@id +\BKM@id=\z@ +\@namedef{BKM@0}{00} +\newif\ifBKM@sw +\newcommand*{\bookmark}[2][]{% + \if@filesw + \begingroup + \def\bookmark@text{#2}% + \BKM@setup{#1}% + \edef\BKM@prev{\the\BKM@id}% + \global\advance\BKM@id\@ne + \BKM@swtrue + \@whilesw\ifBKM@sw\fi{% + \ifnum\ifBKM@startatroot\z@\else\BKM@prev\fi=\z@ + \BKM@startatrootfalse + \def\BKM@parent{0}% + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + 0{\BKM@level}% + }% + \BKM@swfalse + \else + \expandafter\expandafter\expandafter\BKM@getx + \csname BKM@\BKM@prev\endcsname + \ifnum\BKM@level>\BKM@x@level\relax + \let\BKM@parent\BKM@prev + \expandafter\xdef\csname BKM@\the\BKM@id\endcsname{% + {\BKM@prev}{\BKM@level}% + }% + \BKM@swfalse + \else + \let\BKM@prev\BKM@x@parent + \fi + \fi + }% + \pdfstringdef\BKM@title{\bookmark@text}% + \BKM@vtex@title + \edef\BKM@FLAGS{\BKM@PrintStyle}% + \let\BKM@action\@empty + \ifx\BKM@gotor\@empty + \ifx\BKM@dest\@empty + \ifx\BKM@named\@empty + \ifx\BKM@rawaction\@empty + \ifx\BKM@uri\@empty + \ifx\BKM@page\@empty + \PackageError{bookmark}{Missing action}\@ehc + \def\BKM@action{!1}% + \else + \edef\BKM@action{!\BKM@page}% + \fi + \else + \BKM@EscapeString\BKM@uri + \edef\BKM@action{% + % + }% + \fi + \else + \edef\BKM@action{}% + \fi + \else + \BKM@EscapeName\BKM@named + \edef\BKM@action{% + % + }% + \fi + \else + \BKM@EscapeString\BKM@dest + \edef\BKM@action{\BKM@dest}% + \fi + \else + \ifx\BKM@dest\@empty + \ifx\BKM@page\@empty + \def\BKM@page{1}% + \fi + \ifx\BKM@view\@empty + \def\BKM@view{Fit}% + \fi + \edef\BKM@action{/D[\BKM@page/\BKM@view]}% + \else + \BKM@EscapeString\BKM@dest + \edef\BKM@action{/D(\BKM@dest)}% + \fi + \BKM@EscapeString\BKM@gotor + \edef\BKM@action{% + >% + }% + \fi + \ifx\BKM@color\@empty + \let\BKM@RGBcolor\@empty + \else + \expandafter\BKM@toRGB\BKM@color\@nil + \fi + \special{% + !outline \BKM@action;% + p=\BKM@parent,% + i=\number\BKM@id,% + s=% + \ifBKM@open + \ifnum\BKM@level<\BKM@openlevel + o% + \else + c% + \fi + \else + c% + \fi,% + \ifx\BKM@RGBcolor\@empty + \else + c=\BKM@RGBcolor,% + \fi + \ifnum\BKM@FLAGS>\z@ + f=\BKM@FLAGS,% + \fi + t=\BKM@title + }% + \endgroup + \fi +} +\def\BKM@getx#1#2{% + \def\BKM@x@parent{#1}% + \def\BKM@x@level{#2}% +} +\def\BKM@toRGB#1 #2 #3\@nil{% + \let\BKM@RGBcolor\@empty + \BKM@toRGBComponent{#1}% + \BKM@toRGBComponent{#2}% + \BKM@toRGBComponent{#3}% +} +\def\BKM@toRGBComponent#1{% + \dimen@=#1pt\relax + \ifdim\dimen@>\z@ + \ifdim\dimen@<\p@ + \dimen@=255\dimen@ + \advance\dimen@ by 32768sp\relax + \divide\dimen@ by 65536\relax + \dimen@ii=\dimen@ + \divide\dimen@ii by 16\relax + \edef\BKM@RGBcolor{% + \BKM@RGBcolor + \BKM@toHexDigit\dimen@ii + }% + \dimen@ii=16\dimen@ii + \advance\dimen@-\dimen@ii + \edef\BKM@RGBcolor{% + \BKM@RGBcolor + \BKM@toHexDigit\dimen@ + }% + \else + \edef\BKM@RGBcolor{\BKM@RGBcolor FF}% + \fi + \else + \edef\BKM@RGBcolor{\BKM@RGBcolor00}% + \fi +} +\def\BKM@toHexDigit#1{% + \ifcase\expandafter\@firstofone\expandafter{\number#1} % + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F% + \fi +} +\begingroup + \catcode`\|=0 % + \catcode`\\=12 % + |gdef|BKM@vtex@title{% + |@onelevel@sanitize|BKM@title + |edef|BKM@title{|expandafter|BKM@vtex@leftparen|BKM@title\(|@nil}% + |edef|BKM@title{|expandafter|BKM@vtex@rightparen|BKM@title\)|@nil}% + |edef|BKM@title{|expandafter|BKM@vtex@zero|BKM@title\0|@nil}% + |edef|BKM@title{|expandafter|BKM@vtex@one|BKM@title\1|@nil}% + |edef|BKM@title{|expandafter|BKM@vtex@two|BKM@title\2|@nil}% + |edef|BKM@title{|expandafter|BKM@vtex@three|BKM@title\3|@nil}% + }% + |gdef|BKM@vtex@leftparen#1\(#2|@nil{% + #1% + |ifx||#2||% + |else + (% + |ltx@ReturnAfterFi{% + |BKM@vtex@leftparen#2|@nil + }% + |fi + }% + |gdef|BKM@vtex@rightparen#1\)#2|@nil{% + #1% + |ifx||#2||% + |else + )% + |ltx@ReturnAfterFi{% + |BKM@vtex@rightparen#2|@nil + }% + |fi + }% + |gdef|BKM@vtex@zero#1\0#2|@nil{% + #1% + |ifx||#2||% + |else + |noexpand|hv@pdf@char0% + |ltx@ReturnAfterFi{% + |BKM@vtex@zero#2|@nil + }% + |fi + }% + |gdef|BKM@vtex@one#1\1#2|@nil{% + #1% + |ifx||#2||% + |else + |noexpand|hv@pdf@char1% + |ltx@ReturnAfterFi{% + |BKM@vtex@one#2|@nil + }% + |fi + }% + |gdef|BKM@vtex@two#1\2#2|@nil{% + #1% + |ifx||#2||% + |else + |noexpand|hv@pdf@char2% + |ltx@ReturnAfterFi{% + |BKM@vtex@two#2|@nil + }% + |fi + }% + |gdef|BKM@vtex@three#1\3#2|@nil{% + #1% + |ifx||#2||% + |else + |noexpand|hv@pdf@char3% + |ltx@ReturnAfterFi{% + |BKM@vtex@three#2|@nil + }% + |fi + }% +|endgroup +\ifBKM@atend + \RequirePackage{atenddvi}% + \AtEndDvi{\BKM@EndHook}% +\fi +% diff --git a/Master/texmf-dist/source/latex/bookmark/bookmark.dtx b/Master/texmf-dist/source/latex/bookmark/bookmark.dtx index 49ed2e897d1..c4431428b95 100644 --- a/Master/texmf-dist/source/latex/bookmark/bookmark.dtx +++ b/Master/texmf-dist/source/latex/bookmark/bookmark.dtx @@ -1,12 +1,12 @@ % \iffalse meta-comment % % File: bookmark.dtx -% Version: 2019/12/03 v1.28 +% Version: 2020-11-06 v1.29 % Info: PDF bookmarks % % Copyright (C) % 2007-2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group +% 2016-2020 Oberdiek Package Support Group % https://github.com/ho-tex/bookmark/issues % % This work may be distributed and/or modified under the @@ -28,12 +28,15 @@ % 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, +% bkm-dvipdfm.def, bkm-dvips.def, +% bkm-pdftex.def, bkm-vtex.def, +% bkm-dvipdfm-2019-12-03.def, bkm-dvips-2019-12-03.def, +% bkm-pdftex-2019-12-03.def, bkm-vtex-2019-12-03.def, % bookmark-example.tex. % % Distribution: % CTAN:macros/latex/contrib/bookmark/bookmark.dtx +% CTAN:macros/latex/contrib/bookmark/bookmark-frozen.dtx % CTAN:macros/latex/contrib/bookmark/bookmark.pdf % % Unpacking: @@ -66,13 +69,16 @@ % TDS:tex/latex/bookmark/bookmark.sty % TDS:tex/latex/bookmark/bkm-dvipdfm.def % TDS:tex/latex/bookmark/bkm-dvips.def -% TDS:tex/latex/bookmark/bkm-dvipsone.def -% TDS:tex/latex/bookmark/bkm-textures.def % TDS:tex/latex/bookmark/bkm-pdftex.def % TDS:tex/latex/bookmark/bkm-vtex.def +% TDS:tex/latex/bookmark/bkm-dvipdfm-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-dvips-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-pdftex-2019-12-03.def +% TDS:tex/latex/bookmark/bkm-vtex-2019-12-03.def% % TDS:doc/latex/bookmark/bookmark.pdf % TDS:doc/latex/bookmark/bookmark-example.tex % TDS:source/latex/bookmark/bookmark.dtx +% TDS:source/latex/bookmark/bookmark-frozen.dtx % %<*ignore> \begingroup @@ -89,7 +95,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: bookmark 2019/12/03 v1.28 PDF bookmarks (HO)} +\Msg{* Package: bookmark 2020-11-06 v1.29 PDF bookmarks (HO)} \Msg{************************************************************************} \keepsilent @@ -101,11 +107,11 @@ This is a generated file. Project: bookmark -Version: 2019/12/03 v1.28 +Version: 2020-11-06 v1.29 Copyright (C) 2007-2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group + 2016-2020 Oberdiek Package Support Group This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -124,11 +130,12 @@ 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 +This work consists of the main source file bookmark.dtx and bookmark-frozen.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, + bkm-dvipdfm.def, bkm-dvips.def, bkm-pdftex.def, bkm-vtex.def, + bkm-dvipdfm-2019-12-03.def, bkm-dvips-2019-12-03.def, + bkm-pdftex-2019-12-03.def, bkm-vtex-2019-12-03.def, bookmark-example.tex. \endpreamble @@ -141,12 +148,14 @@ and the derived files \file{bookmark.sty}{\from{bookmark.dtx}{package}}% \file{bkm-dvipdfm.def}{\from{bookmark.dtx}{dvipdfm}}% \file{bkm-dvips.def}{\from{bookmark.dtx}{dvips,pdfmark}}% - \file{bkm-dvipsone.def}{\from{bookmark.dtx}{dvipsone,pdfmark}}% - \file{bkm-textures.def}{\from{bookmark.dtx}{textures,pdfmark}}% \file{bkm-pdftex.def}{\from{bookmark.dtx}{pdftex}}% \file{bkm-vtex.def}{\from{bookmark.dtx}{vtex}}% \usedir{doc/latex/bookmark}% \file{bookmark-example.tex}{\from{bookmark.dtx}{example}}% + \file{bkm-pdftex-2019-12-03.def}{\from{bookmark-frozen.dtx}{pdftexfrozen}}% + \file{bkm-dvips-2019-12-03.def}{\from{bookmark-frozen.dtx}{dvipsfrozen}}% + \file{bkm-vtex-2019-12-03.def}{\from{bookmark-frozen.dtx}{vtexfrozen}}% + \file{bkm-dvipdfm-2019-12-03.def}{\from{bookmark-frozen.dtx}{dvipdfmfrozen}}% } \catcode32=13\relax% active space @@ -157,8 +166,9 @@ and the derived files \Msg{* files into a directory searched by TeX:} \Msg{*} \Msg{* bookmark.sty, bkm-dvipdfm.def, bkm-dvips.def,} -\Msg{* bkm-dvipsone.def, bkm-textures.def, bkm-pdftex.def,} -\Msg{* bkm-vtex.def} +\Msg{* bkm-pdftex.def, bkm-vtex.def, bkm-dvipdfm-2019-12-03.def,} +\Msg{* bkm-dvips-2019-12-03.def, bkm-pdftex-2019-12-03.def,} +\Msg{* and bkm-vtex-2019-12-03.def} \Msg{*} \Msg{* To produce the documentation run the file `bookmark.drv'} \Msg{* through LaTeX.} @@ -175,7 +185,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bookmark.drv}% - [2019/12/03 v1.28 PDF bookmarks (HO)]% + [2020-11-06 v1.29 PDF bookmarks (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] \begin{document} @@ -189,7 +199,7 @@ and the derived files % \GetFileInfo{bookmark.drv} % % \title{The \xpackage{bookmark} package} -% \date{2019/12/03 v1.28} +% \date{2020-11-06 v1.29} % \author{Heiko Oberdiek\thanks % {Please report any issues at \url{https://github.com/ho-tex/bookmark/issues}}} % @@ -287,7 +297,6 @@ and the derived files % \subsubsection{Driver options} % % Supported drivers are \xoption{pdftex}, \xoption{dvips}, -% \xoption{dvipsone}, \xoption{textures}, % \xoption{dvipdfm} (\xoption{xetex}), and \xoption{vtex}. % The \hologo{TeX} engines \hologo{pdfTeX}, \hologo{XeTeX}, % and \hologo{VTeX} are automatically detected. @@ -297,18 +306,18 @@ and the derived files % \begin{quote} % |\def\BookmarkDriverDefault{dvipdfm}| % \end{quote} +% The current versions of the drivers uses new \LaTeX-hooks. If an +% older format than 2020-10-01 is detected frozen versions of +% the previous drivers are used as fallback. +% +% \paragraph{Open bookmarks with dvipdfmx.} Older version of +% the package had an option \xoption{dvipdfmx-outline-open} +% to activate code which allows to specify the open +% status of an outline entry. +% The package now assumes that all used dvipdfmx version are current enough to +% understand this code and so activates the code always. +% The option itself will be ignored. % -% \paragraph{Open bookmarks with dvipdfmx.} Since 2007-04-25 the -% cvs version of dvipmdfmx contains a patch that extends the -% \cs{special} for bookmarks in order to specify the open status of -% an outline entry. Option \xoption{dvipdfmx-outline-open} notifies -% the package that the dvi driver program understands this kind -% of \cs{special}. Alternatively \cs{SpecialDvipdfmxOutlineOpen} -% can be defined as number one in the configuration file or before -% the package is loaded, e.g.: -% \begin{quote} -% |\chardef\SpecialDvipdfmxOutlineOpen=1\relax| -% \end{quote} % % \subsubsection{Layout options} % @@ -396,7 +405,7 @@ and the derived files % unhappily the file name is a secret. The package supports % some ways to get the file name: % \begin{itemize} -% \item If \hologo{LuaTeX} (indenpendently from DVI or PDF modus) +% \item If \hologo{LuaTeX} (independently from DVI or PDF modus) % is running, then its |status.filename| is used automatically. % \item Package \cs{currfile} \cite{currfile} redefines \hologo{LaTeX} % internals to keep track of the file name. If the package @@ -607,12 +616,11 @@ and the derived files % adding bookmarks at the end of the document depends % on the driver. % -% Some drivers -% (\xoption{pdftex}, \xoption{dvips}, \xoption{dvipsone}, -% \xoption{textures}) use package \xpackage{atveryend}'s +% The driver \xoption{pdftex} +% use package \xpackage{atveryend}'s % for this purpose. \cs{AtEndDocument} is too early, % the last page might not been shipped out. Because the \xext{aux} -% file is needed, these drivers use \cs{AfterLastShipout}. +% file is needed, this driver use \cs{AfterLastShipout}. % % The implementation of the other drivers % (\xoption{dvipdfm}, \xoption{xetex}, \xoption{vtex}) @@ -622,6 +630,8 @@ and the derived files % helps. It puts its argument on last page of the document. % Two \hologo{LaTeX} runs are necessary at least, because % the last page is detected by a reference. +% +% \xoption{dvips} uses now the new LaTeX hook \texttt{shipout/lastpage}. % \item % The time of expansion of the argument of \cs{BookmarkAtEnd} % is not specified. This can happen immediately or at the end @@ -752,7 +762,7 @@ and the derived files %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bookmark}% - [2019/12/03 v1.28 PDF bookmarks (HO)]% + [2020-11-06 v1.29 PDF bookmarks (HO)]% % \end{macrocode} % % \subsubsection{Requirements} @@ -1622,23 +1632,13 @@ and the derived files % \begin{macrocode} \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}% -} + \PackageWarning{bookmark}{Option 'dvipdfmx-outline-open' is obsolete + and ignored}{}} % \end{macrocode} % \begin{macro}{\bookmark@driver} % \begin{macrocode} @@ -1709,22 +1709,6 @@ and the derived files % \paragraph{Driver validation and loading.} % % \begin{macrocode} -\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 -} -% \end{macrocode} -% \begin{macrocode} \def\BKM@temp{dvipdfmx}% \ifx\BKM@temp\BKM@driver \def\BKM@driver{dvipdfm}% @@ -1778,6 +1762,8 @@ and the derived files \fi \fi \fi +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2020/10/01}{}{\edef\BKM@driver{\BKM@driver-2019-12-03}} \InputIfFileExists{bkm-\BKM@driver.def}{}{% \PackageError{bookmark}{% Unsupported driver `\BKM@driver'.\MessageBreak @@ -1843,7 +1829,7 @@ and the derived files \let\partnumberline\@gobble \let\chapternumberline\@gobble \fi - \bookmark[level=#4,dest={#3}]{#2}% + \bookmark[level=#4,dest={\HyperDestNameFilter{#3}}]{#2}% \endgroup \fi \fi @@ -1867,7 +1853,7 @@ and the derived files %<*dvipdfm> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-dvipdfm.def}% - [2019/12/03 v1.28 bookmark driver for dvipdfm (HO)]% + [2020-11-06 v1.29 bookmark driver for dvipdfm (HO)]% % \end{macrocode} % % \begin{macro}{\BKM@id} @@ -1990,7 +1976,7 @@ and the derived files }% \fi \special{pdf:% - out \ifBKM@DvipdfmxOutlineOpen + out [% \ifBKM@open \ifnum\BKM@level<% @@ -2003,7 +1989,6 @@ and the derived files -% \fi ] % - \fi \BKM@abslevel <<% /Title(\BKM@title)% @@ -2042,7 +2027,7 @@ and the derived files %<*vtex> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-vtex.def}% - [2019/12/03 v1.28 bookmark driver for VTeX (HO)]% + [2020-11-06 v1.29 bookmark driver for VTeX (HO)]% % \end{macrocode} % % \begin{macrocode} @@ -2373,7 +2358,7 @@ and the derived files %<*pdftex> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-pdftex.def}% - [2019/12/03 v1.28 bookmark driver for pdfTeX (HO)]% + [2020-11-06 v1.29 bookmark driver for pdfTeX (HO)]% % \end{macrocode} % % \begin{macro}{\BKM@DO@entry} @@ -2529,55 +2514,28 @@ and the derived files %<*dvips> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-dvips.def}% - [2019/12/03 v1.28 bookmark driver for dvips (HO)]% + [2020-11-06 v1.29 bookmark driver for dvips (HO)]% % \end{macrocode} % \begin{macro}{\BKM@PSHeaderFile} % \begin{macrocode} \def\BKM@PSHeaderFile#1{% - \special{header=#1}% + \special{PSfile=#1}% } % \end{macrocode} -% \end{macro} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsubsection{Driver dvipsone} -% -% \begin{macrocode} -%<*dvipsone> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{bkm-dvipsone.def}% - [2019/12/03 v1.28 bookmark driver for dvipsone (HO)]% -% \end{macrocode} -% \begin{macro}{\BKM@PSHeaderFile} +% \begin{macro}{\BKM@filename} % \begin{macrocode} -\def\BKM@PSHeaderFile#1{% - \special{header=#1}% -} +\def\BKM@filename{\jobname.out.ps} % \end{macrocode} % \end{macro} % \begin{macrocode} -% -% \end{macrocode} -% -% \subsubsection{Driver textures} -% -% \begin{macrocode} -%<*textures> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{bkm-textures.def}% - [2019/12/03 v1.28 bookmark driver for textures (HO)]% -% \end{macrocode} -% \begin{macro}{\BKM@PSHeaderFile} -% \begin{macrocode} -\def\BKM@PSHeaderFile#1{% - \special{prePostScriptfile #1}% -} +\AddToHook{shipout/lastpage}{% + \BKM@pdfmark@out + \BKM@PSHeaderFile\BKM@filename + } % \end{macrocode} % \end{macro} % \begin{macrocode} -% +% % \end{macrocode} % % \subsubsection{Common part} @@ -2585,19 +2543,6 @@ and the derived files % \begin{macrocode} %<*pdfmark> % \end{macrocode} -% \begin{macro}{\BKM@filename} -% \begin{macrocode} -\def\BKM@filename{\jobname.out.ps} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\BKM@PSHeaderFile\BKM@filename -% \end{macrocode} -% -% \begin{macrocode} -\RequirePackage{atveryend}[2009/12/07] -\AfterLastShipout{\BKM@pdfmark@out} -% \end{macrocode} % % \begin{macro}{\BKM@pdfmark@out} % Do not use package \xpackage{rerunfilecheck} here, because @@ -2771,12 +2716,8 @@ and the derived files % \subsubsection{Write auxiliary file} % % \begin{macrocode} -\RequirePackage{auxhook} -% \end{macrocode} -% \begin{macrocode} -\AddLineBeginMainAux{% - \string\providecommand\string\BKM@entry[2]{}% -} +\AddToHook{begindocument}{% + \immediate\write\@mainaux{\string\providecommand\string\BKM@entry[2]{}}} % \end{macrocode} % % \begin{macro}{\BKM@id} @@ -3005,46 +2946,44 @@ and the derived files % % \subsubsection{Drivers using hooks at end of document} % -% The following drivers use package \xpackage{atveryend}'s -% \cs{AfterLastShipout}, because they still need the -% \xext{aux} file. +% Driver \xoption{pdftex} use the LaTeX hook \xoption{enddocument/afterlastpage} +% (which is equivalent to the previously used +% \cs{AfterLastShipout} of \xpackage{atveryend}'s), +% because it still needs the \xext{aux} file. It uses +% uses \cs{pdfoutline} for the bookmakrs that can be used after the last page. % \begin{itemize} % \item % Driver \xoption{pdftex} uses \cs{pdfoutline} that can % be used after the last page. -% \item -% PostScript drivers such as -% \xoption{dvips} use an external PostScript header file -% for the bookmarks. File writing can be done after -% the last shipout page, but before the \xext{aux} file is closed. % \end{itemize} % \begin{macrocode} -%<*pdftex|pdfmark> +%<*pdftex> \ifBKM@atend - \AfterLastShipout{% + \AddToHook{enddocument/afterlastpage}{% \BKM@EndHook }% \fi -% +% % \end{macrocode} % -% \subsubsection{Drivers using \cs{AtEndDvi}} +% \subsubsection{Drivers using \xoption{shipout/lastpage}} % % The other drivers implement \cs{bookmark} using \cs{special} % commands. Thus the last bookmarks must be put on the last page, % not afterwards. % \cs{AtEndDocument} cannot be used, because it is too late, the -% last page can already be output. Therefore we use package -% \xpackage{atenddvi} that uses the help of packages \xpackage{atbegshi} -% and \xpackage{zref}. The argument of \cs{AtEndDvi} is put -% at the end of the last page. At least two \hologo{LaTeX} runs are necessary. -% \begin{macrocode} -%<*dvipdfm|vtex> +% last page can already be output. Therefore we use the +% LaTeX hook \xoption{shipout/lastpage}. +% At least two \hologo{LaTeX} runs are necessary. +% The postscript driver \xoption{dvips} use an external PostScript file +% for the bookmarks. The file writing has been moved to the +% the last shipout page too to avoid conflicts with pgf. +% \begin{macrocode} +%<*dvipdfm|vtex|pdfmark> \ifBKM@atend - \RequirePackage{atenddvi}% - \AtEndDvi{\BKM@EndHook}% + \AddToHook{shipout/lastpage}{\BKM@EndHook}% \fi -% +% % \end{macrocode} % % \section{Installation} @@ -3097,8 +3036,6 @@ and the derived files % bookmark.sty & tex/latex/bookmark/bookmark.sty\\ % bkm-dvipdfm.def & tex/latex/bookmark/bkm-dvipdfm.def\\ % bkm-dvips.def & tex/latex/bookmark/bkm-dvips.def\\ -% bkm-dvipsone.def & tex/latex/bookmark/bkm-dvipsone.def\\ -% bkm-textures.def & tex/latex/bookmark/bkm-textures.def\\ % bkm-pdftex.def & tex/latex/bookmark/bkm-pdftex.def\\ % bkm-vtex.def & tex/latex/bookmark/bkm-vtex.def\\ % bookmark.pdf & doc/latex/bookmark/bookmark.pdf\\ @@ -3424,7 +3361,7 @@ and the derived files % \end{Version} % \begin{Version}{2016/05/17 v1.26} % \item -% define \cs{pdfbookmark} to allow pdftex driver to be used with Lua\TeX. +% define \cs{pdfoutline} to allow pdftex driver to be used with Lua\TeX. % \end{Version} % \begin{Version}{2019/06/04 v1.27} % \item @@ -3434,9 +3371,22 @@ and the derived files % \begin{Version}{2019/12/03 v1.28} % \item % Documentation updates. -% \item adjust package loading (all required packages already loade +% \item adjust package loading (all required packages already loaded % by \xpackage{hyperref}). % \end{Version} +% \begin{Version}{2020-11-06 v1.29} +% \item Adapted the dvips to avoid a clash with pgf. +% https://github.com/pgf-tikz/pgf/issues/944 +% \item All drivers now use the new LaTeX hooks +% and so require a format 2020-10-01 or newer. The older +% drivers are provided as frozen versions and are used if an older +% format is detected. +% \item Added support for destlabel option of hyperref, https://github.com/ho-tex/bookmark/issues/1 +% \item Removed the \xoption{dvipsone} and \xoption{textures} driver. +% \item Removed the code for option \xoption{dvipdfmx-outline-open} +% and \cs{SpecialDvipdfmxOutlineOpen}. All dvipdfmx version should now support +% this out-of-the-box. +% \end{Version} % \end{History} % % \PrintIndex -- cgit v1.2.3