diff options
author | Karl Berry <karl@freefriends.org> | 2024-07-24 19:49:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-07-24 19:49:57 +0000 |
commit | 481a3a20eb1ebe884e805ca3cdab2ef77e2bd990 (patch) | |
tree | c31ec8318454ac0dad831ce99e57cf6125b15f90 | |
parent | 80fd2302f3eeec7e068be172ea988af79087e15e (diff) |
bxpdfver (24jul24)
git-svn-id: svn://tug.org/texlive/trunk@71893 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/bxpdfver/LICENSE | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/bxpdfver/README-ja.md | 39 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/bxpdfver/README.md | 27 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty | 94 |
4 files changed, 120 insertions, 42 deletions
diff --git a/Master/texmf-dist/doc/latex/bxpdfver/LICENSE b/Master/texmf-dist/doc/latex/bxpdfver/LICENSE index b6b8b923303..f6ebffefcab 100644 --- a/Master/texmf-dist/doc/latex/bxpdfver/LICENSE +++ b/Master/texmf-dist/doc/latex/bxpdfver/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2014-2022 Takayuki YATO (aka. "ZR") +Copyright (c) 2014-2024 Takayuki YATO (aka. "ZR") Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Master/texmf-dist/doc/latex/bxpdfver/README-ja.md b/Master/texmf-dist/doc/latex/bxpdfver/README-ja.md index 0f0955d3782..5cc0505780b 100644 --- a/Master/texmf-dist/doc/latex/bxpdfver/README-ja.md +++ b/Master/texmf-dist/doc/latex/bxpdfver/README-ja.md @@ -52,7 +52,8 @@ bxpdfver パッケージ * `lenient+`: サポートしない機能に対するエラーを完全に抑止する。 * `nolenient`(既定): `lenient(+)` の否定。 * `new-dvipdfmx`: dvipdfmx に対するバージョン検査を省略し、常に最新の - バージョンであると仮定する。 + バージョンであると仮定する。 + ※ドライバオプションが `dvipdfmx` に変更される。 `compress`、`objcompress` はこのパッケージによる抑止を行わないという意味 であり、既に抑止されている場合にそれを再び有効化するものではない。 @@ -72,6 +73,8 @@ bxpdfver パッケージ * `\preservepdfdestinations`: PDF 目的地(PDF destination)の名前の 短縮を抑止し、TeX 文書で指定された名前を用いる。異なる PDF 文書間で のリンクを正常に機能させるために必要である。 + * `\setpdfpkresolution{<解像度>}`: PDF に埋め込まれる PK フォントの + 解像度(dpi 値)を指定する。 ### ドライバ指定に関する補足 @@ -83,30 +86,42 @@ bxpdfver パッケージ \suppresspdfobjcompression Yes Maybe(*2) No \setpdfdecimaldigits Yes Maybe(*2) No \preservepdfdestinations No-op(*1) Maybe(*2) No + \setpdfpkresolution Yes Maybe(*3) No 1. pdfTeX/LuaTeX では PDF 目的地の名前が短縮されるることはない。つまり `\preservepdfdestinations` は常に有効になっていると見なせる。 - 2. これらの機能を使用するためには、(x)dvipdfmx のバージョンが 20160307 - 以上である必要がある。 - - バージョン判定のために kpsewhich と extractbb の起動を利用する - ため、少なくともこれらのプログラムについて、シェルエスケープが - 許可されている必要がある。 - - dvipdfmx のバージョン情報は補助ファイル(.aux)中にキャッシュ - される。このため、何か状況が変わった場合は、一旦補助ファイルを - 削除する必要が生じる。 + 2. (x)dvipdfmx のバージョンが 20160307 以上である必要がある。 + 3. (x)dvipdfmx のバージョンが 20211016 以上である必要がある。 + +dvipdfmx のバージョン判定について: + + - 必要が生じた場合にのみバージョン判定が実行される。 + - `new-dvipdfmx` オプションを指定した場合は、バージョン判定を全て + 省略した上で、最新の dvipdfmx を使用していると見なす。 + - バージョン判定のために kpsewhich と extractbb の起動を利用するため、 + 少なくともこれらのプログラムについて、シェル実行が許可されている + 必要がある。 + - バージョン判定は少し時間がかかるため、dvipdfmx のバージョン情報は + 補助ファイル(.aux)中にキャッシュされる。このため、何か状況が変化 + した場合は、一旦補助ファイルを削除する必要が生じる。 以下のことにも注意されたい。 - * 使用不可能な機能を使おうと試みるとエラーが発生する。 + * 使用不可能な機能を使おうと試みるとエラーが発生する。 + ※`lenient` オプションが指定された場合はエラーが警告に変更され、 + また `lenient+` が指定された場合はエラーも警告も抑止される。 * `dvips` 等の“全く対応していない”若干のドライバオプションを認識 する。この場合、全ての機能の呼出でエラーが発生する。 - * `nodvidriver` は特殊で、これを指定した場合は、どの機能の呼出でも - エラーは発生しないが、全く何の動作も行わない。 + * `nodvidriver` オプションは既定で `lenient+` を指定する。つまり、 + どの機能の呼出でもエラーは発生しないが、全く何の動作も行わない。 更新履歴 -------- + * Version 0.7 ‹2024/07/24› + - `\setpdfpkresolution` を(正式に)サポート。(dvipdfmx/XeTeX + でも使用可能になった。) * Version 0.6 ‹2022/04/28› - `lenient+`/`nolenient` オプションを追加。 - 非サポートのドライバでも読込自体はエラーにしない。 diff --git a/Master/texmf-dist/doc/latex/bxpdfver/README.md b/Master/texmf-dist/doc/latex/bxpdfver/README.md index 332b6215f17..df7995de21f 100644 --- a/Master/texmf-dist/doc/latex/bxpdfver/README.md +++ b/Master/texmf-dist/doc/latex/bxpdfver/README.md @@ -72,6 +72,8 @@ when it is already suppressed by other means. * `\preservepdfdestinations`: Stops shortening the PDF destination names and uses the original names given in the LaTeX documents. This is necessary for cross-document links to work correctly. + * `\setpdfpkresolution{<resolution>}`: Sets the resolution (in dpi) + of the PK fonts embedded in the PDF file. ### NOTE ON DRIVERS @@ -83,29 +85,42 @@ when it is already suppressed by other means. \suppresspdfobjcompression Yes Maybe(*2) No \setpdfdecimaldigits Yes Maybe(*2) No \preservepdfdestinations No-op(*1) Maybe(*2) No + \setpdfpkresolution Yes Maybe(*3) No 1. In pdfTeX and LuaTeX, PDF destination names are never shortened; that is, it can be thought as if `\preservepdfdestinations` were always in effect. 2. These features are available only when the version of (x)dvipdfmx - is 20160307 or later. Also shell escape must be accepted (with or - without restriction) so that `kpsewhich` and `extractbb` will be - allowed to run, because those programs are used in order to detect - the dvipdfmx version. + is 20160307 or later. + 2. These features are available only when the version of (x)dvipdfmx + is 20211016 or later. + +On the detection of dvipdfmx version: + + * Shell escape must be accepted (with or without restriction) so that + `kpsewhich` and `extractbb` will be allowed to run, because those + programs are used in order to detect the dvipdfmx version. + * The detection process is slow, so the result is cached in the + auxiliary file (`.aux`). When the environment is changed, you need + to delete the auxiliary file. More notices: - * If you try to use unavailable features, an error will occur. + * If you try to use unavailable features, an error will occur. + NB. Option `lenient` turns the errors into warnings, and `lenient+` + completely suppresses the errors. * The package recognizes some “unsupported” driver options such as `dvips`; when such drivers are used, use of any feature will cause an error. - * The use of `nodvidriver` sets `lenient*` by default; use of any + * The use of `nodvidriver` sets `lenient+` by default; use of any feature will do nothing (nor issue an error). REVISION HISTORY ---------------- + * Version 0.7 ‹2024/07/24› + - Support (officialy) `\setpdfpkresolution`. * Version 0.6 ‹2022/04/28› - Added the `lenient+` and `nolenient` options. * Version 0.5a ‹2021/02/14› diff --git a/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty b/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty index ccc9825f6fb..46c65cd9a26 100644 --- a/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty +++ b/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty @@ -1,7 +1,7 @@ %% %% This is file 'bxpdfver.sty'. %% -%% Copyright (c) 2014-2022 Takayuki YATO (aka. "ZR") +%% Copyright (c) 2014-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% @@ -10,7 +10,7 @@ %% package declaration \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bxpdfver}[2022/04/28 v0.6] +\ProvidesPackage{bxpdfver}[2024/07/24 v0.7] \def\bxpv@pkgname{bxpdfver} %% preparations @@ -144,6 +144,13 @@ \def#3{#2}% } +%% \bxpv@info{<message>} +% Issues an info message. +\@onlypreamble\bxpv@info +\def\bxpv@info#1{% + \PackageInfo\bxpv@pkgname{#1\@gobble}% +} + %% \bxpv@warn{<message>} % Issues a warning. \@onlypreamble\bxpv@warn @@ -175,10 +182,10 @@ } %% \ifbxpv@defined -\let\ifbxpv@defined\ifdefined -\ifx\ifbxpv@defined\@undefined \expandafter\@firstofone -\else \expandafter\@gobble -\fi{\let\ifbxpv@defined\iffalse} +% Identical to \ifdefined, and is used only in e-TeX-aware code. +% On non-e-TeX engines it is made \iffalse to keep \if-balancedness. +\bxpv@csletcs{ifbxpv@defined}{% + if\ifx\ifdefined\@undefined false\else defined\fi} %% \ifbxpv@old@hook@system \newif\ifbxpv@old@hook@system @@ -186,6 +193,9 @@ %--------------------------------------- internal dispatchers +% Initially all dispatchers are "unavailable". +% They are later redefined according to the driver type. + %% \bxpv@suppress@compress \@onlypreamble\bxpv@suppress@compress \def\bxpv@suppress@compress{% @@ -242,7 +252,7 @@ \fi \fi -%% adjust internal dispatchers +%% Redefine internal dispatchers. \ifx 0\bxpv@drv@type\else %-------- \begingroup @@ -386,12 +396,14 @@ \bxpv@warn {Unsupported engine}% \else\if d\bxpv@drv@type % 'dvipdfmx' + % All the real settings are done in the begin-document hook, + % so the dispatchers themselves will do nothing (if available). \global\let\bxpv@suppress@compress\relax \global\let\bxpv@suppress@obj@compress\relax \global\let\bxpv@check@version\relax \global\let\bxpv@set@version\relax \global\let\bxpv@set@decimaldigits\relax - %\global\let\bxpv@set@pkresolution\relax + \global\let\bxpv@set@pkresolution\relax \global\let\bxpv@preserve@destinations\relax \g@addto@macro\bxpv@begin@document@hook{% \bxpv@begin@document@dvipdfmx @@ -671,6 +683,7 @@ \fi %% variables +\let\bxpv@dvipdfmx@known@min\relax \let\bxpv@C@value\relax %% \bxpv@C@bits @@ -689,6 +702,7 @@ %% \bxpv@begin@document@dvipdfmx \@onlypreamble\bxpv@begin@document@dvipdfmx \def\bxpv@begin@document@dvipdfmx{% + \bxpv@get@dvipdfmx@known@min % PDF version \ifx\bxpdfverMajorVersion\tw@ \bxpv@check@dvipdfmx@version{20180217}% @@ -701,8 +715,8 @@ \bxpv@put@special{pdf:minorversion \the\bxpdfverMinorVersion}% \fi \ifx\bxpdfverMinorVersion\relax\else - \bxpv@cache@fetch{dvipdfmxver}% - \ifnum\bxpv@cache@@dvipdfmxver<20180217 \else + \bxpv@at@least@dvipdfmx@version{20180217}% + \ifbxpv@ok \bxpv@put@special{pdf:majorversion \the\bxpdfverMajorVersion}% \fi \fi @@ -734,7 +748,9 @@ \fi % PK resolution \ifx\bxpdfverPkResolution\relax\else - \iffalse % This will never work.... + \bxpv@check@dvipdfmx@version{20211016}% + {Cannot set PK resolution}% + \ifbxpv@ok \bxpv@put@special{dvipdfmx:config r \the\bxpdfverPkResolution}% \fi \fi @@ -748,10 +764,9 @@ \fi % C option value \ifx\bxpv@C@bits\@empty\else - \bxpv@cache@fetch{dvipdfmxcfg}% - \def\bxpv@next##1##2\bxpv@mk{\def\bxpv@C@value{##1}}% - \expandafter\bxpv@next\bxpv@cache@@dvipdfmxcfg{0}\bxpv@mk - \bxpv@rc@bitset{\bxpv@C@value}{64}% + % When C option is used, its value is automatically OR'ed with + % the current value, so we need read the config for that. + \def\bxpv@C@value{0}% \def\do##1{% \bxpv@rc@bitset{\bxpv@C@value}{##1}% \let\bxpv@C@value\bxpv@rc@num}% @@ -776,25 +791,58 @@ \fi } +%% \bxpv@get@dvipdfmx@known@min +\@onlypreamble\bxpv@get@dvipdfmx@known@min +\def\bxpv@get@dvipdfmx@known@min{% + \def\bxpv@dvipdfmx@known@min{0}% + \def\bxpv@tmpa{def}% + \let\bxpv@tmpb\@gobbletwo + \@ifl@aded\bxpv@tmpa{l3backend-dvipdfmx}{% + \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvipdfmx}}% + }{}% + \@ifl@aded\bxpv@tmpa{l3backend-dvips}{% + \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvips}}% + }{}% + \bxpv@tmpb{2022/04/10}{% + \def\bxpv@dvipdfmx@known@min{20201111}% + }{}% + \bxDebug{dvipdfmx-known-min:\bxpv@dvipdfmx@known@min}% +} + +%% \bxpv@at@least@dvipdfmx@version{<version>} +% Checks if dvipdfmx >= <version> and sets bxpv@ok. +\@onlypreamble\bxpv@at@least@dvipdfmx@version +\def\bxpv@at@least@dvipdfmx@version#1{% + % first check using known-min + \ifnum\bxpv@dvipdfmx@known@min<#1 + % get real version + \bxpv@cache@fetch{dvipdfmxver}% + \bxpv@info + {dvipdfmx version is \bxpv@cache@@dvipdfmxver}% + \bxpv@oktrue + \ifnum\bxpv@cache@@dvipdfmxver<#1 + \bxpv@okfalse + \fi + \else % new enough + \bxpv@oktrue + \fi +} + %% \bxpv@check@dvipdfmx@version \@onlypreamble\bxpv@check@dvipdfmx@version \def\bxpv@check@dvipdfmx@version#1#2{% - \bxpv@cache@fetch{dvipdfmxver}% - \bxpv@okfalse - \ifnum\bxpv@cache@@dvipdfmxver=\z@ + \bxpv@at@least@dvipdfmx@version{#1}% + \ifbxpv@ok % no-op + \else\ifnum\bxpv@cache@@dvipdfmxver=\z@ \bxpv@fail {#2, because the\MessageBreak version of dvipdfmx in use is unknown \MessageBreak (v.#1 or later is required)}% - \else\ifnum\bxpv@cache@@dvipdfmxver<#1 + \else \bxpv@fail {#2, because the\MessageBreak version of dvipdfmx in use (v.\bxpv@cache@@dvipdfmxver) is too old \MessageBreak (v.#1 or later is required)}% - \else - \PackageInfo\bxpv@pkgname - {dvipdfmx version is \bxpv@cache@@dvipdfmxver\@gobble}% - \bxpv@oktrue \fi\fi } |