summaryrefslogtreecommitdiff
path: root/language/japanese/pxjahyper
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/japanese/pxjahyper
Initial commit
Diffstat (limited to 'language/japanese/pxjahyper')
-rw-r--r--language/japanese/pxjahyper/LICENSE21
-rw-r--r--language/japanese/pxjahyper/README-ja.md66
-rw-r--r--language/japanese/pxjahyper/README.md49
-rw-r--r--language/japanese/pxjahyper/pxjahyper.pdfbin0 -> 96162 bytes
-rw-r--r--language/japanese/pxjahyper/pxjahyper.sty982
-rw-r--r--language/japanese/pxjahyper/pxjahyper.tex136
6 files changed, 1254 insertions, 0 deletions
diff --git a/language/japanese/pxjahyper/LICENSE b/language/japanese/pxjahyper/LICENSE
new file mode 100644
index 0000000000..534324b756
--- /dev/null
+++ b/language/japanese/pxjahyper/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 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
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxjahyper/README-ja.md b/language/japanese/pxjahyper/README-ja.md
new file mode 100644
index 0000000000..dd70862687
--- /dev/null
+++ b/language/japanese/pxjahyper/README-ja.md
@@ -0,0 +1,66 @@
+PXjahyper パッケージバンドル
+============================
+
+LaTeX: pLaTeX 上での hyperref のサポート
+
+(u)pLaTeX 上で hyperref を用いて日本語の文書情報を含む PDF 文書を作成する
+場合に必要となる以下の機能を提供する。
+
+ * PDF 文字列内の和文文字のサポート
+ * mag 指定に対するサポート
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pTeX、upTeX、pTeX-ng
+ * DVIウェア: dvipdfmx
+ * 依存パッケージ:
+ - hyperref
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/platex/PXjahyper
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+pxjahyper パッケージ ー 本体
+----------------------------
+
+詳細についてはマニュアル `pxjahyper.pdf` を参照されたい。
+
+
+更新履歴
+--------
+
+ * Version 0.3e 〈2019/06/20〉
+ - hyperref の `unicode` 指定が後から変更された場合はエラーを出す。
+
+ * Version 0.3d 〈2018/07/15〉
+ - バグ修正。
+
+ * Version 0.3c 〈2018/01/25〉
+ - バグ修正。
+
+ * Version 0.3b 〈2018/01/13〉
+ - パッケージ定義の PDF 文字列の文字定義を拡充した。
+ - (試験的) 自動判別の誤判定を防ぐため、アウトラインファイルに
+ 日本語文字のコメントを含ませておく。
+ - (試験的) `(no)jacommentline` オプション。
+
+ * Version 0.3a 〈2017/10/17〉
+ - `bigcode` を既定に変更。
+ - (試験的) upLaTeX で hyperref の `unicode` 指定を可能にする。
+
+ * Version 0.3 〈2012/05/28〉
+ - papersize special の調整機能を追加。
+ - `\Ux` を追加。
+
+ * Version 0.2 〈2012/05/27〉
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxjahyper/README.md b/language/japanese/pxjahyper/README.md
new file mode 100644
index 0000000000..60c28b0e99
--- /dev/null
+++ b/language/japanese/pxjahyper/README.md
@@ -0,0 +1,49 @@
+PXjahyper Package
+=================
+
+LaTeX: Hyperref support for pLaTeX
+
+This package adjusts the behavior of hyperref on (u)pLaTeX so that authors
+can properly create PDF documents that contain document information in
+Japanese.
+
+ * Support for PDF strings containing Japanese characters.
+ * Support for magnification settings.
+
+### System Requirements
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX, upTeX, pTeX-ng.
+ * DVI-ware: dvipdfmx.
+ * Dependent packages:
+ - hyperref
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/platex/PXjahyper
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The pxjahyper Package ー main
+-----------------------------
+
+Please refer to the manual `pxjahyper.pdf` (in Japanese) for detail.
+
+
+Revision History
+----------------
+
+ * Version 0.3e 〈2019/06/20〉
+ * Version 0.3d 〈2018/07/15〉
+ * Version 0.3c 〈2018/01/25〉
+ * Version 0.3b 〈2018/01/13〉
+ * Version 0.3a 〈2017/10/17〉
+ * Version 0.3 〈2012/05/28〉
+ * Version 0.2 〈2012/05/27〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxjahyper/pxjahyper.pdf b/language/japanese/pxjahyper/pxjahyper.pdf
new file mode 100644
index 0000000000..03ef941185
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.pdf
Binary files differ
diff --git a/language/japanese/pxjahyper/pxjahyper.sty b/language/japanese/pxjahyper/pxjahyper.sty
new file mode 100644
index 0000000000..68166215ec
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.sty
@@ -0,0 +1,982 @@
+%%
+%% This is file 'pxjahyper.sty'.
+%%
+%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxjahyper}[2019/06/20 v0.3e]
+
+%% error messages
+\def\pxhy@pkgname{pxjahyper}
+\def\pxhy@warn{\PackageWarningNoLine\pxhy@pkgname}
+\def\pxhy@error{\PackageError\pxhy@pkgname}
+\@onlypreamble\pxhy@fatal
+\def\pxhy@fatal#1#2{%
+ \PackageError\pxhy@pkgname
+ {#1}%
+ {#2Package loading is aborted right now.}%
+}
+\providecommand{\bxDebug}[1]{}
+
+%% packages
+\RequirePackage{atbegshi}
+
+%% globals
+\newif\ifpxhy@ptex
+\newif\ifpxhy@uptex
+\let\pxhy@jcode\@undefined
+\newif\ifpxhy@tounicode
+\newif\ifpxhy@zerox
+\newif\ifpxhy@bigcode
+\let\pxhy@bigcode\relax
+\chardef\pxhy@driver@none=0
+\chardef\pxhy@driver@dvipdfmx=1
+\let\pxhy@driver\@undefined
+\newif\ifpxhy@hy@unicode
+\newif\ifpxhy@jacommentline
+
+%--------------------------------------- Package options
+
+\DeclareOption{dvipdfmx}{%
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+}
+\DeclareOption{dvipdfm}{%
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+}
+\DeclareOption{nodvidriver}{%
+ \let\pxhy@driver\pxhy@driver@none
+}
+\DeclareOption{none}{%
+ \let\pxhy@driver\pxhy@driver@none
+}
+\DeclareOption{auto}{%
+ \let\pxhy@driver\@undefined
+}
+\DeclareOption{tounicode}{%
+ \pxhy@tounicodetrue
+}
+\DeclareOption{notounicode}{%
+ \pxhy@tounicodefalse
+}
+\DeclareOption{out2uni}{%
+ \pxhy@zeroxtrue
+}
+\DeclareOption{noout2uni}{%
+ \pxhy@zeroxfalse
+}
+\DeclareOption{bigcode}{%
+ \let\pxhy@bigcode=t%
+}
+\DeclareOption{nobigcode}{%
+ \let\pxhy@bigcode=f%
+}
+\DeclareOption{jacommentline}{%
+ \pxhy@jacommentlinetrue
+}
+\DeclareOption{nojacommentline}{%
+ \pxhy@jacommentlinefalse
+}
+\ExecuteOptions{%
+ auto,tounicode,noout2uni,jacommentline%
+}
+\ProcessOptions*
+
+%--------------------------------------- Environment check
+
+%% The hyperref package must be loaded in advance.
+\@ifpackageloaded{hyperref}{}{%else
+ \pxhy@fatal{'hyperref' not yet loaded}{}%
+ \endinput
+}
+
+%% Check for the hyperref option 'unicode'.
+\expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname iftrue\endcsname
+ \pxhy@hy@unicodetrue
+\fi
+\AtBeginDocument{%
+ \@tempswafalse
+ \expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname iftrue\endcsname
+ \@tempswatrue
+ \fi
+ \ifnum0\ifpxhy@hy@unicode1\fi\if@tempswa1\fi=1
+ \PackageError\pxhy@pkgname
+ {You must not change the encoding setting (e.g.\MessageBreak
+ 'unicode) of hyperref after pxjahyper is loaded}%
+ {\@ehc}%
+ \fi
+}
+
+%% Check hyperref driver.
+\ifx\pxhy@driver\@undefined
+ \def\pxhy@tmpa{hdvipdfm}
+ \ifx\Hy@driver\pxhy@tmpa
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+ \else
+ \let\pxhy@driver\pxhy@driver@none
+ \fi
+\fi
+
+%% Check the engine.
+\def\pxhy@check#1#2{%
+ \edef\pxhy@tmpa{\string#1}%
+ \edef\pxhy@tmpb{\meaning#1}%
+ \ifx\pxhy@tmpa\pxhy@tmpb #2\fi
+}
+\pxhy@check\kanjiskip{\pxhy@ptextrue}
+\pxhy@check\forcecjktoken{\pxhy@uptextrue}
+\ifpxhy@ptex\else
+ \pxhy@fatal{Unknown engine used!!!}{}
+ \expandafter\endinput
+\fi
+
+%% Check the internal jcode.
+\ifnum \jis"2121="8140
+ \let\pxhy@jcode=s\relax
+\else\ifnum\jis"2121="A1A1
+ \let\pxhy@jcode=e\relax
+\else\ifnum\jis"2121="3000
+ \let\pxhy@jcode=u\relax
+\fi\fi\fi
+\ifx\pxhy@jcode\@undefined
+ \pxhy@fatal{Unknown internal kanji code!!!}{}
+ \expandafter\endinput
+\fi
+
+%% adjustment
+% upTeX not in unicode is not seen as upTeX.
+\if u\pxhy@jcode\else
+ \pxhy@uptexfalse
+\fi
+% out2uni cannot be used with upTeX.
+\ifpxhy@uptex \ifpxhy@zerox
+ \pxhy@warn{out2uni is invalid in upTeX}
+ \pxhy@zeroxfalse
+\fi\fi
+% bigcode cannot be used without upTeX.
+\if t\pxhy@bigcode
+ \ifpxhy@uptex
+ \pxhy@bigcodetrue
+ \else
+ \pxhy@warn{bigcode is invalid without upTeX}
+ \fi
+\else\if f\pxhy@bigcode
+\else
+ \ifpxhy@uptex
+ \pxhy@bigcodetrue
+ \fi
+\fi\fi
+% out2uni disables tounicode.
+\ifpxhy@zerox
+ \pxhy@tounicodefalse
+\fi
+% hyperref 'unicode' is allowed only on upLaTeX.
+\ifnum0\ifpxhy@hy@unicode\ifpxhy@uptex\else1\fi\fi>\z@
+ \pxhy@fatal{hyperref 'unicode' mode is not supported}{}%
+ \expandafter\endinput
+\fi
+
+\iffalse
+\typeout{%
+pxhy@ptex = \ifpxhy@ptex true\else false\fi^^J%
+pxhy@uptex = \ifpxhy@uptex true\else false\fi^^J%
+pxhy@jcode = \meaning\pxhy@jcode^^J%
+pxhy@tounicode = \ifpxhy@tounicode true\else false\fi^^J%
+pxhy@zerox = \ifpxhy@zerox true\else false\fi^^J%
+pxhy@driver = \the\pxhy@driver^^J%
+}
+\fi
+
+%--------------------------------------- Helpers
+
+%% pxhy@end
+\def\pxhy@end{\pxhy@end@}
+
+%% \pxhy@out@special{<text>}
+\def\pxhy@out@special#1{%
+ \begingroup
+ \toks\z@{\special{#1}}%
+ \toks\tw@\expandafter{\AtBegShi@HookFirst}%
+ \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}%
+ \endgroup
+}
+
+%% \pxhy@get@jchar{<num>}
+% Let \pxhy@jchar a macro expanding to a single jchar token
+% of the char code <num>.
+\def\pxhy@get@jchar#1{%
+ \begingroup
+ \pxhy@forcecjktoken
+ \kansujichar\@ne=#1\relax
+ \xdef\pxhy@jchar{\kansuji\@ne}%
+ \endgroup
+}
+
+%% \pxhy@forcecjktoken
+\ifpxhy@uptex
+ \let\pxhy@forcecjktoken\forcecjktoken
+\else
+ \let\pxhy@forcecjktoken\relax
+\fi
+
+%--------------------------------------- Output 'tounicode' special
+\ifpxhy@tounicode
+
+ \ifnum\pxhy@driver=\pxhy@driver@dvipdfmx %<*dvipdfmx>
+ %% dvipdfmx
+ \if e\pxhy@jcode % euc
+ \pxhy@out@special{pdf:tounicode EUC-UCS2}
+ \else\if s\pxhy@jcode % sjis
+ \pxhy@out@special{pdf:tounicode 90ms-RKSJ-UCS2}
+ \else\ifpxhy@bigcode % ucs, bigcode
+ \pxhy@out@special{pdf:tounicode UTF8-UTF16}
+ \else
+ \pxhy@out@special{pdf:tounicode UTF8-UCS2}
+ \fi\fi\fi
+ \fi %</dvipdfmx>
+
+\fi
+%--------------------------------------- Papersize special adjustment
+
+% When the magnification is in effect (i.e. \mag<>1000), hyperref
+% emits a papersize special with wrong value. (dvipdfmx interprets
+% the lengths in the special as 'true' length.) So here a papersize
+% special with adjusted values will be output.
+\ifnum\mag=1000 \else
+ \expandafter\ifx\csname ifHy@setpagesize\expandafter\endcsname
+ \csname iftrue\endcsname % hyperref setpagesize is on
+ \ifnum0<\mag \ifnum32768>\mag % \mag is in valid range
+ \begingroup
+ \@ifundefined{stockwidth}{}{%else
+ \paperwidth=\stockwidth
+ \paperheight=\stockheight
+ }%
+ \@tempcnta=\mag \advance\@tempcnta100000
+ \def\pxhy@next1#1#2#3#4#5\relax{%
+ \def\pxhy@tmpa{#1#2.#3#4#5}%
+ }%
+ \expandafter\pxhy@next\the\@tempcnta\relax
+ \paperwidth=\pxhy@tmpa\paperwidth
+ \paperheight=\pxhy@tmpa\paperheight
+ \xdef\pxhy@spec@papersize{%
+ papersize=\the\paperwidth,\the\paperheight
+ }%
+ \AtBeginShipoutFirst{%
+ \special{\pxhy@spec@papersize}%
+ }
+ \endgroup
+ \fi\fi
+ \fi
+\fi
+
+%--------------------------------------- Hooks to pdfstringdef
+
+\def\pxhy@uc@REPL{FFFD}
+\def\pxhy@uc@XNAC{FDD1} % not-a-char codepoint used as marker
+\let\pxhy@burst\romannumeral
+\let\pxhy@nxend\indent
+
+%% \pxhy@uchex{<hex>}
+% The entity of the code-value input function. If the input
+% is a valid code value in hex then it passes the value to
+% \pxhy@uchex@res in 4-6 digits; otherwise passes FFFD to
+% \pxhy@uchex@res.
+\def\pxhy@uchex#1{%
+ \expandafter\pxhy@uchex@a\pxhy@burst-`>#1\pxhy@nxend
+}
+\edef\pxhy@uchex@err{%
+ \noexpand\pxhy@uchex@res{\pxhy@uc@REPL}%
+}
+\def\pxhy@uchex@a#1#2\pxhy@nxend{%
+ \ifnum2<"1#1
+ \expandafter\pxhy@uchex@b\romannumeral-"#1#2\pxhy@nxend{#1#2}%
+ \else \pxhy@uchex@err
+ \fi
+}
+\def\pxhy@uchex@b#1\pxhy@nxend#2{%
+ \ifx\pxhy@empty#1\pxhy@empty
+ \ifnum"#2>"10FFFF
+ \pxhy@uchex@err
+ \else\ifnum"#2>"FFF
+ \pxhy@uchex@res{#2}%
+ \else
+ \pxhy@uchex@c#2"000\pxhy@end
+ \fi\fi
+ \else \pxhy@uchex@err
+ \fi
+}
+\def\pxhy@uchex@c#1#2#3#4#5#6\pxhy@end{%
+ \pxhy@uchex@d#1#2#3#4#5\pxhy@end
+}
+\def\pxhy@uchex@d#1"#2\pxhy@end{%
+ \pxhy@uchex@res{#2#1}%
+}
+
+\ifpxhy@uptex %<*upTeX>
+
+ %% \pxhy@marker: a not-a-char U+FDD1
+ \pxhy@get@jchar{\ucs"\pxhy@uc@XNAC}
+ \edef\pxhy@marker{\pxhy@jchar}
+
+ %% Makes \Ux and \UTF be the code input command in PDF strings.
+ \pdfstringdefDisableCommands{%
+ \let\Ux\pxhy@uchex
+ \let\UTF\pxhy@uchex
+ \let\UTFM\pxhy@uchex
+ \let\UTFK\pxhy@uchex
+ \let\UTFC\pxhy@uchex
+ \let\UTFT\pxhy@uchex
+ }
+
+ %BEGIN-- in the following block #1 means the marker
+ \def\pxhy@next#1{% #1=marker
+ %% \pxhy@uchex@res
+ % Expands to a tag string which will later be converted to
+ % a real character in the postprocess.
+ \def\pxhy@uchex@res##1{#1##1>}%
+ %% \pxhy@posthook
+ % The postprocess of this package. It is registered to
+ % \pdfstringdefPostHook.
+ \def\pxhy@posthook##1{%
+ \expandafter\pxhy@posthook@a##1#1\pxhy@end
+ \pxhy@posthook@b##1%
+ }%
+ \def\pxhy@posthook@a##1#1##2\pxhy@end{%
+ \ifx\pxhy@empty##2\pxhy@empty
+ \expandafter\@gobbletwo
+ \fi
+ }%
+ \def\pxhy@posthook@b##1{%
+ \let\pxhy@str\@empty
+ \expandafter\pxhy@posthook@c##1#1>%
+ \global\let##1=\pxhy@str
+ }%
+ \def\pxhy@posthook@c##1#1##2>{%
+ \ifx\pxhy@empty##2\pxhy@empty
+ \edef\pxhy@str{\pxhy@str##1}%
+ \else
+ \pxhy@get@jchar{"##2}%
+ \edef\pxhy@str{\pxhy@str##1\pxhy@jchar}%
+ \expandafter\pxhy@posthook@c
+ \fi
+ }%
+ }
+ \expandafter\pxhy@next\pxhy@marker
+ %END--
+
+ % Add \pxhy@posthook to \pdfstringdefPostHook.
+ \begingroup
+ \toks@\expandafter{\pdfstringdefPostHook{#1}}
+ \edef\pxhy@next{%
+ \gdef\noexpand\pdfstringdefPostHook##1{%
+ \the\toks@
+ \noexpand\pxhy@posthook{##1}%
+ }%
+ }%
+ \pxhy@next
+ \endgroup
+
+\else\ifpxhy@zerox %<*!upTeX>
+
+ %% \pxhy@uchex@res
+ % Expands to \0x form.
+ \def\pxhy@uchex@res#1{%
+ \0x#1%
+ }
+
+ %% Makes \Ux be the code input command in PDF strings.
+ % (If the otf package is loaded, then \UTF already does
+ % the same thing.)
+ \pdfstringdefDisableCommands{%
+ \let\Ux\pxhy@uchex
+ }
+
+ %Note: if out2uni is off then \Ux remains undefined.
+\fi\fi %</upTeX>
+
+%--------------------------------------- Redefine text commands for PD1
+
+\ifnum\pxhy@driver=\pxhy@driver@dvipdfmx %<*dvipdfmx>
+
+%%<+> \pxDeclarePdfTextCommand{\CS}{<jis>}{<ucs>}
+\@onlypreamble\pxDeclarePdfTextCommand
+\newcommand*\pxDeclarePdfTextCommand[3]{%
+ \pxhy@decl@pdf@tc{#2}{#3}%
+ {\DeclareTextCommand{#1}{PD1}}%
+ {\pxhy@revoke@pdf@tc{#1}}%
+}
+
+%%<+> \pxDeclarePdfTextComposite{\CS}{<arg>}{<jis>}{<ucs>}
+\@onlypreamble\pxDeclarePdfTextComposite
+\newcommand*\pxDeclarePdfTextComposite[4]{%
+ \pxhy@decl@pdf@tc{#3}{#4}%
+ {\DeclareTextCompositeCommand{#1}{PD1}{#2}}%
+ {\pxhy@revoke@pdf@tcc{#1}{#2}}%
+}
+
+\else %<*!dvipdfmx>
+
+\@onlypreamble\pxDeclarePdfTextCommand
+\newcommand*\pxDeclarePdfTextCommand[3]{}
+\@onlypreamble\pxDeclarePdfTextComposite
+\newcommand*\pxDeclarePdfTextComposite[4]{}
+
+\fi %</dvipdfmx>
+
+%% \pxhy@revoke@pdf@tc
+\@onlypreamble\pxhy@revoke@pdf@tc
+\def\pxhy@revoke@pdf@tc#1{%
+ \expandafter\let\csname PD1\string#1\endcsname\@undefined
+ \pxhy@make@txtcmd\pxhy@tmpa{PD1}#1%
+ \ifx#1\pxhy@tmpa
+ \pxhy@make@txtcmd#1?#1%
+ \fi
+}
+\@onlypreamble\pxhy@make@txtcmd
+\def\pxhy@make@txtcmd#1#2#3{%
+ \expandafter\def\expandafter#1\expandafter{%
+ \csname#2-cmd\expandafter\endcsname\expandafter#3%
+ \csname#2\string#3\endcsname
+ }%
+}
+
+%% \pxhy@revoke@pdf@tcc
+\@onlypreamble\pxhy@revoke@pdf@tc
+\def\pxhy@revoke@pdf@tcc#1#2{%
+ \expandafter\let\csname\string\PD1\string#1-\string#2%
+ \endcsname\@undefined
+}
+
+%% \pxhy@decl@pdf@tc
+\@onlypreamble\pxhy@decl@pdf@tc
+\def\pxhy@decl@pdf@tc#1#2{%
+ \pxhy@get@body{#1}{#2}%
+ \ifx\pxhy@body\@undefined
+ \let\pxhy@next\@secondoftwo
+ \else
+ \def\pxhy@next{%
+ \expandafter\pxhy@decl@pdf@tc@a\pxhy@body\pxhy@end}%
+ \fi
+ \pxhy@next
+}
+\@onlypreamble\pxhy@decl@pdf@tc@a
+\def\pxhy@decl@pdf@tc@a#1\pxhy@end#2#3{%
+ #2{#1}%
+}
+
+%% \pxhy@get@body{<jis>}{<ucs>}
+\@onlypreamble\pxhy@get@body
+\ifpxhy@uptex %<*upTeX>
+ \def\pxhy@get@body#1#2{%
+ \pxhy@get@jchar{\ucs"#2}%
+ \let\pxhy@body\pxhy@jchar
+ }%
+\else %<*!upTeX>
+ \ifpxhy@zerox
+ \def\pxhy@get@body#1#2{%
+ \ifx\pxhy@end#1\pxhy@end
+ \def\pxhy@body{\0x#2}%
+ \else
+ \pxhy@get@jchar{\jis"#1}%
+ \let\pxhy@body\pxhy@jchar
+ \fi
+ }%
+ \else
+ \def\pxhy@get@body#1#2{%
+ \ifx\pxhy@end#1\pxhy@end
+ \let\pxhy@body\@undefined
+ \else
+ \pxhy@get@jchar{\jis"#1}%
+ \let\pxhy@body\pxhy@jchar
+ \fi
+ }%
+ \fi
+\fi %</upTeX>
+
+%%%%%%%%%%%%%%%%%%%% the definitions
+
+% JIS X 0213 does not distinguish the following pairs:
+% - circumflex(U+02C6) and asciicircum(U+005E)
+% - tilde(U+02DC) and asciitilde(U+007E)
+% Here I use ASCII characters as done in JIS.
+\DeclareTextCommand{\textcircumflex}{PD1}{\136}
+\DeclareTextCommand{\textasciicircum}{PD1}{\136}
+\DeclareTextCommand{\texttilde}{PD1}{\176}
+\DeclareTextCommand{\textasciitilde}{PD1}{\176}
+
+% Some ad-hoc redefinitions.
+\DeclareTextCommand{\textfi}{PD1}{fi}
+\DeclareTextCommand{\textfl}{PD1}{fl}
+\DeclareTextCommand{\IJ}{PD1}{IJ}
+\DeclareTextCommand{\ij}{PD1}{ij}
+\DeclareTextCommand{\textspace}{PD1}{\040}
+\DeclareTextCommand{\textquotesingle}{PD1}{\047}
+
+%%[A] The characters in PdfDocEncoding (except ASCII).
+\pxDeclarePdfTextCommand{\textasciibreve}{}{02D8}
+\pxDeclarePdfTextCommand{\textasciicaron}{}{02C7}
+\pxDeclarePdfTextCommand{\textdotaccent}{}{02D9}
+\pxDeclarePdfTextCommand{\texthungarumlaut}{}{02DD}
+\pxDeclarePdfTextCommand{\textogonek}{}{02DB}
+\pxDeclarePdfTextCommand{\textring}{}{02DA}
+\pxDeclarePdfTextCommand{\texttilde}{}{02DC}
+\pxDeclarePdfTextCommand{\textbullet}{}{2022}
+\pxDeclarePdfTextCommand{\textdagger}{2277}{2020}
+\pxDeclarePdfTextCommand{\textdaggerdbl}{2278}{2021}
+\pxDeclarePdfTextCommand{\textellipsis}{2144}{2026}
+\pxDeclarePdfTextCommand{\textemdash}{213D}{2014}
+\pxDeclarePdfTextCommand{\textendash}{}{2013}
+\pxDeclarePdfTextCommand{\textflorin}{}{0192}
+\pxDeclarePdfTextCommand{\textfractionsolidus}{}{2044}
+\pxDeclarePdfTextCommand{\guilsinglleft}{}{2039}
+\pxDeclarePdfTextCommand{\guilsinglright}{}{203A}
+\pxDeclarePdfTextCommand{\textminus}{215D}{2212}
+\pxDeclarePdfTextCommand{\textperthousand}{2273}{2030}
+\pxDeclarePdfTextCommand{\quotedblbase}{}{201E}
+\pxDeclarePdfTextCommand{\textquotedblleft}{2148}{201C}
+\pxDeclarePdfTextCommand{\textquotedblright}{2149}{201D}
+\pxDeclarePdfTextCommand{\textquoteleft}{2146}{2018}
+\pxDeclarePdfTextCommand{\textquoteright}{2147}{2019}
+\pxDeclarePdfTextCommand{\quotesinglbase}{}{201A}
+\pxDeclarePdfTextCommand{\texttrademark}{}{2122}
+\pxDeclarePdfTextCommand{\L}{}{0141}
+\pxDeclarePdfTextCommand{\OE}{}{0152}
+\pxDeclarePdfTextComposite{\v}{S}{}{0160}
+\pxDeclarePdfTextComposite{\"}{Y}{}{0178}
+\pxDeclarePdfTextComposite{\v}{Z}{}{017D}
+\pxDeclarePdfTextCommand{\i}{}{0131}
+\pxDeclarePdfTextCommand{\l}{}{0142}
+\pxDeclarePdfTextCommand{\oe}{}{0153}
+\pxDeclarePdfTextComposite{\v}{s}{}{0161}
+\pxDeclarePdfTextComposite{\v}{z}{}{017E}
+\pxDeclarePdfTextCommand{\texteuro}{}{20AC}
+\pxDeclarePdfTextCommand{\textexclamdown}{}{00A1}
+\pxDeclarePdfTextCommand{\textcent}{2171}{00A2}
+\pxDeclarePdfTextCommand{\textsterling}{2172}{00A3}
+\pxDeclarePdfTextCommand{\textcurrency}{}{00A4}
+\pxDeclarePdfTextCommand{\textyen}{}{00A5}
+\pxDeclarePdfTextCommand{\textbrokenbar}{}{00A6}
+\pxDeclarePdfTextCommand{\textsection}{2178}{00A7}
+\pxDeclarePdfTextCommand{\textasciidieresis}{212F}{00A8}
+\pxDeclarePdfTextCommand{\textcopyright}{}{00A9}
+\pxDeclarePdfTextCommand{\textordfeminine}{}{00AA}
+\pxDeclarePdfTextCommand{\guillemotleft}{}{00AB}
+\pxDeclarePdfTextCommand{\textlogicalnot}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textlnot}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textregistered}{}{00AE}
+\pxDeclarePdfTextCommand{\textasciimacron}{}{00AF}
+\pxDeclarePdfTextCommand{\textdegree}{216B}{00B0}
+\pxDeclarePdfTextCommand{\textplusminus}{215E}{00B1}
+\pxDeclarePdfTextCommand{\texttwosuperior}{}{00B2}
+\pxDeclarePdfTextCommand{\textthreesuperior}{}{00B3}
+\pxDeclarePdfTextCommand{\textacute}{212D}{00B4}
+%\pxDeclarePdfTextCommand{\textmu}{}{00B5}
+\pxDeclarePdfTextCommand{\textparagraph}{2279}{00B6}
+\pxDeclarePdfTextCommand{\textperiodcentered}{}{00B7}
+\pxDeclarePdfTextCommand{\textcedilla}{}{00B8}
+\pxDeclarePdfTextCommand{\textonesuperior}{}{00B9}
+\pxDeclarePdfTextCommand{\textordmasculine}{}{00BA}
+\pxDeclarePdfTextCommand{\guillemotright}{}{00BB}
+\pxDeclarePdfTextCommand{\textonequarter}{}{00BC}
+\pxDeclarePdfTextCommand{\textonehalf}{}{00BD}
+\pxDeclarePdfTextCommand{\textthreequarters}{}{00BE}
+\pxDeclarePdfTextCommand{\textquestiondown}{}{00BF}
+\pxDeclarePdfTextComposite{\`}{A}{}{00C0}
+\pxDeclarePdfTextComposite{\'}{A}{}{00C1}
+\pxDeclarePdfTextComposite{\^}{A}{}{00C2}
+\pxDeclarePdfTextComposite{\~}{A}{}{00C3}
+\pxDeclarePdfTextComposite{\"}{A}{}{00C4}
+\pxDeclarePdfTextComposite{\r}{A}{}{00C5}
+\pxDeclarePdfTextCommand{\AE}{}{00C6}
+\pxDeclarePdfTextComposite{\c}{C}{}{00C7}
+\pxDeclarePdfTextComposite{\`}{E}{}{00C8}
+\pxDeclarePdfTextComposite{\'}{E}{}{00C9}
+\pxDeclarePdfTextComposite{\^}{E}{}{00CA}
+\pxDeclarePdfTextComposite{\"}{E}{}{00CB}
+\pxDeclarePdfTextComposite{\`}{I}{}{00CC}
+\pxDeclarePdfTextComposite{\'}{I}{}{00CD}
+\pxDeclarePdfTextComposite{\^}{I}{}{00CE}
+\pxDeclarePdfTextComposite{\"}{I}{}{00CF}
+\pxDeclarePdfTextCommand{\DH}{}{00D0}
+\pxDeclarePdfTextCommand{\DJ}{}{00D0}
+\pxDeclarePdfTextComposite{\~}{N}{}{00D1}
+\pxDeclarePdfTextComposite{\`}{O}{}{00D2}
+\pxDeclarePdfTextComposite{\'}{O}{}{00D3}
+\pxDeclarePdfTextComposite{\^}{O}{}{00D4}
+\pxDeclarePdfTextComposite{\~}{O}{}{00D5}
+\pxDeclarePdfTextComposite{\"}{O}{}{00D6}
+\pxDeclarePdfTextCommand{\textmultiply}{215F}{00D7}
+\pxDeclarePdfTextCommand{\O}{}{00D8}
+\pxDeclarePdfTextComposite{\`}{U}{}{00D9}
+\pxDeclarePdfTextComposite{\'}{U}{}{00DA}
+\pxDeclarePdfTextComposite{\^}{U}{}{00DB}
+\pxDeclarePdfTextComposite{\"}{U}{}{00DC}
+\pxDeclarePdfTextComposite{\'}{Y}{}{00DD}
+\pxDeclarePdfTextCommand{\TH}{}{00DE}
+\pxDeclarePdfTextCommand{\ss}{}{00DF}
+\pxDeclarePdfTextComposite{\`}{a}{}{00E0}
+\pxDeclarePdfTextComposite{\'}{a}{}{00E1}
+\pxDeclarePdfTextComposite{\^}{a}{}{00E2}
+\pxDeclarePdfTextComposite{\~}{a}{}{00E3}
+\pxDeclarePdfTextComposite{\"}{a}{}{00E4}
+\pxDeclarePdfTextComposite{\r}{a}{}{00E5}
+\pxDeclarePdfTextCommand{\ae}{}{00E6}
+\pxDeclarePdfTextComposite{\c}{c}{}{00E7}
+\pxDeclarePdfTextComposite{\`}{e}{}{00E8}
+\pxDeclarePdfTextComposite{\'}{e}{}{00E9}
+\pxDeclarePdfTextComposite{\^}{e}{}{00EA}
+\pxDeclarePdfTextComposite{\"}{e}{}{00EB}
+\pxDeclarePdfTextComposite{\`}{i}{}{00EC}
+\pxDeclarePdfTextComposite{\`}{\i}{}{00EC}
+\pxDeclarePdfTextComposite{\'}{i}{}{00ED}
+\pxDeclarePdfTextComposite{\'}{\i}{}{00ED}
+\pxDeclarePdfTextComposite{\^}{i}{}{00EE}
+\pxDeclarePdfTextComposite{\^}{\i}{}{00EE}
+\pxDeclarePdfTextComposite{\"}{i}{}{00EF}
+\pxDeclarePdfTextComposite{\"}{\i}{}{00EF}
+\pxDeclarePdfTextCommand{\dh}{}{00F0}
+\pxDeclarePdfTextComposite{\~}{n}{}{00F1}
+\pxDeclarePdfTextComposite{\`}{o}{}{00F2}
+\pxDeclarePdfTextComposite{\'}{o}{}{00F3}
+\pxDeclarePdfTextComposite{\^}{o}{}{00F4}
+\pxDeclarePdfTextComposite{\~}{o}{}{00F5}
+\pxDeclarePdfTextComposite{\"}{o}{}{00F6}
+\pxDeclarePdfTextCommand{\textdivide}{2160}{00F7}
+\pxDeclarePdfTextCommand{\o}{}{00F8}
+\pxDeclarePdfTextComposite{\`}{u}{}{00F9}
+\pxDeclarePdfTextComposite{\'}{u}{}{00FA}
+\pxDeclarePdfTextComposite{\^}{u}{}{00FB}
+\pxDeclarePdfTextComposite{\"}{u}{}{00FC}
+\pxDeclarePdfTextComposite{\'}{y}{}{00FD}
+\pxDeclarePdfTextCommand{\th}{}{00FE}
+\pxDeclarePdfTextComposite{\"}{y}{}{00FF}
+\pxDeclarePdfTextCommand{\textcelsius}{216E}{2103}
+%%%%%%%%
+
+%%[B] Aliases to [A].
+\pxDeclarePdfTextCommand{\copyright}{}{00A9}
+\pxDeclarePdfTextCommand{\textflqq}{}{00AB}
+\pxDeclarePdfTextCommand{\flqq}{}{00AB}
+\pxDeclarePdfTextCommand{\textneg}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textpm}{215E}{00B1}
+\pxDeclarePdfTextCommand{\textcdot}{}{00B7}
+\pxDeclarePdfTextCommand{\textfrqq}{}{00BB}
+\pxDeclarePdfTextCommand{\frqq}{}{00BB}
+\pxDeclarePdfTextCommand{\texttimes}{215F}{00D7}
+\pxDeclarePdfTextCommand{\textdiv}{2160}{00F7}
+\pxDeclarePdfTextCommand{\textgrq}{2146}{2018}
+\pxDeclarePdfTextCommand{\textglq}{}{201A}
+\pxDeclarePdfTextCommand{\textquotesinglbase}{}{201A}
+\pxDeclarePdfTextCommand{\textgrqq}{2148}{201C}
+\pxDeclarePdfTextCommand{\crqq}{2148}{201C}
+\pxDeclarePdfTextCommand{\textglqq}{}{201E}
+\pxDeclarePdfTextCommand{\clqq}{}{201E}
+\pxDeclarePdfTextCommand{\textquotedblbase}{}{201E}
+\pxDeclarePdfTextCommand{\textflq}{}{2039}
+\pxDeclarePdfTextCommand{\textfrq}{}{203A}
+\pxDeclarePdfTextCommand{\textEuro}{}{20AC}
+%%
+
+%%[C] The characters that are included both in JIS X 0213
+% and some of the TeX encodings.
+% Note: The entries marked with (*) involves non-standard mappings.
+\pxDeclarePdfTextCommand{\textbardbl}{2142}{2016}
+\pxDeclarePdfTextCommand{\textlangle}{2152}{3008}%(*)2329
+\pxDeclarePdfTextCommand{\textrangle}{2153}{3009}%(*)232A
+\pxDeclarePdfTextCommand{\textxleq}{2165}{2266}%(*)2264
+\pxDeclarePdfTextCommand{\textxgeq}{2166}{2267}%(*)2265
+\pxDeclarePdfTextCommand{\textinfty}{2167}{221E}
+\pxDeclarePdfTextCommand{\textborn}{217A}{2605}
+\pxDeclarePdfTextCommand{\textreferencemark}{2228}{203B}
+\pxDeclarePdfTextCommand{\textrightarrow}{222A}{2192}
+\pxDeclarePdfTextCommand{\textleftarrow}{222B}{2190}
+\pxDeclarePdfTextCommand{\textuparrow}{222C}{2191}
+\pxDeclarePdfTextCommand{\textdownarrow}{222D}{2193}
+\pxDeclarePdfTextCommand{\textsurd}{2265}{221A}
+\pxDeclarePdfTextCommand{\textapprox}{}{2245}
+\pxDeclarePdfTextCommand{\textmusicalnote}{2276}{266A}
+\pxDeclarePdfTextCommand{\textbigcircle}{227E}{25EF}
+\pxDeclarePdfTextCommand{\textopenbullet}{}{25E6}
+\pxDeclarePdfTextCommand{\textell}{}{2113}
+\pxDeclarePdfTextCommand{\textmho}{}{2127}
+\pxDeclarePdfTextCommand{\textAlpha}{2621}{0391}
+\pxDeclarePdfTextCommand{\textBeta}{2622}{0392}
+\pxDeclarePdfTextCommand{\textGamma}{2623}{0393}
+\pxDeclarePdfTextCommand{\textDelta}{2624}{0394}
+\pxDeclarePdfTextCommand{\textEpsilon}{2625}{0395}
+\pxDeclarePdfTextCommand{\textZeta}{2626}{0396}
+\pxDeclarePdfTextCommand{\textEta}{2627}{0397}
+\pxDeclarePdfTextCommand{\textTheta}{2628}{0398}
+\pxDeclarePdfTextCommand{\textIota}{2629}{0399}
+\pxDeclarePdfTextCommand{\textKappa}{262A}{039A}
+\pxDeclarePdfTextCommand{\textLambda}{262B}{039B}
+\pxDeclarePdfTextCommand{\textMu}{262C}{039C}
+\pxDeclarePdfTextCommand{\textNu}{262D}{039D}
+\pxDeclarePdfTextCommand{\textXi}{262E}{039E}
+\pxDeclarePdfTextCommand{\textOmicron}{262F}{039F}
+\pxDeclarePdfTextCommand{\textPi}{2630}{03A0}
+\pxDeclarePdfTextCommand{\textRho}{2631}{03A1}
+\pxDeclarePdfTextCommand{\textSigma}{2632}{03A3}
+\pxDeclarePdfTextCommand{\textTau}{2633}{03A4}
+\pxDeclarePdfTextCommand{\textUpsilon}{2634}{03A5}
+\pxDeclarePdfTextCommand{\textPhi}{2635}{03A6}
+\pxDeclarePdfTextCommand{\textChi}{2636}{03A7}
+\pxDeclarePdfTextCommand{\textPsi}{2637}{03A8}
+\pxDeclarePdfTextCommand{\textOmega}{2638}{03A9}
+\pxDeclarePdfTextCommand{\textohm}{2638}{03A9}%(*)2126
+\pxDeclarePdfTextCommand{\textalpha}{2641}{03B1}
+\pxDeclarePdfTextCommand{\textbeta}{2642}{03B2}
+\pxDeclarePdfTextCommand{\textgamma}{2643}{03B3}
+\pxDeclarePdfTextCommand{\textdelta}{2644}{03B4}
+\pxDeclarePdfTextCommand{\textepsilon}{2645}{03B5}
+\pxDeclarePdfTextCommand{\textzeta}{2646}{03B6}
+\pxDeclarePdfTextCommand{\texteta}{2647}{03B7}
+\pxDeclarePdfTextCommand{\texttheta}{2648}{03B8}
+\pxDeclarePdfTextCommand{\textiota}{2649}{03B9}
+\pxDeclarePdfTextCommand{\textkappa}{264A}{03BA}
+\pxDeclarePdfTextCommand{\textlambda}{264B}{03BB}
+\pxDeclarePdfTextCommand{\textmu}{264C}{03BC}
+\pxDeclarePdfTextCommand{\textnu}{264D}{03BD}
+\pxDeclarePdfTextCommand{\textxi}{264E}{03BE}
+\pxDeclarePdfTextCommand{\textomicron}{264F}{03BF}
+\pxDeclarePdfTextCommand{\textpi}{2650}{03C0}
+\pxDeclarePdfTextCommand{\textrho}{2651}{03C1}
+\pxDeclarePdfTextCommand{\textsigma}{2652}{03C3}
+\pxDeclarePdfTextCommand{\texttau}{2653}{03C4}
+\pxDeclarePdfTextCommand{\textupsilon}{2654}{03C5}
+\pxDeclarePdfTextCommand{\textphi}{2655}{03C6}
+\pxDeclarePdfTextCommand{\textchi}{2656}{03C7}
+\pxDeclarePdfTextCommand{\textpsi}{2657}{03C8}
+\pxDeclarePdfTextCommand{\textomega}{2658}{03C9}
+\pxDeclarePdfTextCommand{\textvarsigma}{}{03C2}
+\pxDeclarePdfTextCommand{\textfinalsigma}{}{03C2}
+\pxDeclarePdfTextCommand{\CYRA}{2721}{0410}
+\pxDeclarePdfTextCommand{\CYRB}{2722}{0411}
+\pxDeclarePdfTextCommand{\CYRV}{2723}{0412}
+\pxDeclarePdfTextCommand{\CYRG}{2724}{0413}
+\pxDeclarePdfTextCommand{\CYRD}{2725}{0414}
+\pxDeclarePdfTextCommand{\CYRE}{2726}{0415}
+\pxDeclarePdfTextCommand{\CYRYO}{2727}{0401}
+\pxDeclarePdfTextCommand{\CYRZH}{2728}{0416}
+\pxDeclarePdfTextCommand{\CYRZ}{2729}{0417}
+\pxDeclarePdfTextCommand{\CYRI}{272A}{0418}
+\pxDeclarePdfTextCommand{\CYRISHRT}{272B}{0419}
+\pxDeclarePdfTextCommand{\CYRK}{272C}{041A}
+\pxDeclarePdfTextCommand{\CYRL}{272D}{041B}
+\pxDeclarePdfTextCommand{\CYRM}{272E}{041C}
+\pxDeclarePdfTextCommand{\CYRN}{272F}{041D}
+\pxDeclarePdfTextCommand{\CYRO}{2730}{041E}
+\pxDeclarePdfTextCommand{\CYRP}{2731}{041F}
+\pxDeclarePdfTextCommand{\CYRR}{2732}{0420}
+\pxDeclarePdfTextCommand{\CYRS}{2733}{0421}
+\pxDeclarePdfTextCommand{\CYRT}{2734}{0422}
+\pxDeclarePdfTextCommand{\CYRU}{2735}{0423}
+\pxDeclarePdfTextCommand{\CYRF}{2736}{0424}
+\pxDeclarePdfTextCommand{\CYRH}{2737}{0425}
+\pxDeclarePdfTextCommand{\CYRC}{2738}{0426}
+\pxDeclarePdfTextCommand{\CYRCH}{2739}{0427}
+\pxDeclarePdfTextCommand{\CYRSH}{273A}{0428}
+\pxDeclarePdfTextCommand{\CYRSHCH}{273B}{0429}
+\pxDeclarePdfTextCommand{\CYRHRDSN}{273C}{042A}
+\pxDeclarePdfTextCommand{\CYRERY}{273D}{042B}
+\pxDeclarePdfTextCommand{\CYRSFTSN}{273E}{042C}
+\pxDeclarePdfTextCommand{\CYREREV}{273F}{042D}
+\pxDeclarePdfTextCommand{\CYRYU}{2740}{042E}
+\pxDeclarePdfTextCommand{\CYRYA}{2741}{042F}
+\pxDeclarePdfTextCommand{\cyra}{2751}{0430}
+\pxDeclarePdfTextCommand{\cyrb}{2752}{0431}
+\pxDeclarePdfTextCommand{\cyrv}{2753}{0432}
+\pxDeclarePdfTextCommand{\cyrg}{2754}{0433}
+\pxDeclarePdfTextCommand{\cyrd}{2755}{0434}
+\pxDeclarePdfTextCommand{\cyre}{2756}{0435}
+\pxDeclarePdfTextCommand{\cyryo}{2757}{0451}
+\pxDeclarePdfTextCommand{\cyrzh}{2758}{0436}
+\pxDeclarePdfTextCommand{\cyrz}{2759}{0437}
+\pxDeclarePdfTextCommand{\cyri}{275A}{0438}
+\pxDeclarePdfTextCommand{\cyrishrt}{275B}{0439}
+\pxDeclarePdfTextCommand{\cyrk}{275C}{043A}
+\pxDeclarePdfTextCommand{\cyrl}{275D}{043B}
+\pxDeclarePdfTextCommand{\cyrm}{275E}{043C}
+\pxDeclarePdfTextCommand{\cyrn}{275F}{043D}
+\pxDeclarePdfTextCommand{\cyro}{2760}{043E}
+\pxDeclarePdfTextCommand{\cyrp}{2761}{043F}
+\pxDeclarePdfTextCommand{\cyrr}{2762}{0440}
+\pxDeclarePdfTextCommand{\cyrs}{2763}{0441}
+\pxDeclarePdfTextCommand{\cyrt}{2764}{0442}
+\pxDeclarePdfTextCommand{\cyru}{2765}{0443}
+\pxDeclarePdfTextCommand{\cyrf}{2766}{0444}
+\pxDeclarePdfTextCommand{\cyrh}{2767}{0445}
+\pxDeclarePdfTextCommand{\cyrc}{2768}{0446}
+\pxDeclarePdfTextCommand{\cyrch}{2769}{0447}
+\pxDeclarePdfTextCommand{\cyrsh}{276A}{0448}
+\pxDeclarePdfTextCommand{\cyrshch}{276B}{0449}
+\pxDeclarePdfTextCommand{\cyrhrdsn}{276C}{044A}
+\pxDeclarePdfTextCommand{\cyrery}{276D}{044B}
+\pxDeclarePdfTextCommand{\cyrsftsn}{276E}{044C}
+\pxDeclarePdfTextCommand{\cyrerev}{276F}{044D}
+\pxDeclarePdfTextCommand{\cyryu}{2770}{044E}
+\pxDeclarePdfTextCommand{\cyrya}{2771}{044F}
+\pxDeclarePdfTextCommand{\textvisiblespace}{}{2423}
+\pxDeclarePdfTextComposite{\=}{A}{}{0100}
+\pxDeclarePdfTextComposite{\=}{I}{}{012A}
+\pxDeclarePdfTextComposite{\=}{U}{}{016A}
+\pxDeclarePdfTextComposite{\=}{E}{}{0112}
+\pxDeclarePdfTextComposite{\=}{O}{}{014C}
+\pxDeclarePdfTextComposite{\=}{a}{}{0101}
+\pxDeclarePdfTextComposite{\=}{i}{}{012B}
+\pxDeclarePdfTextComposite{\=}{u}{}{016B}
+\pxDeclarePdfTextComposite{\=}{e}{}{0113}
+\pxDeclarePdfTextComposite{\=}{o}{}{014D}
+\pxDeclarePdfTextComposite{\k}{A}{}{0104}
+\pxDeclarePdfTextComposite{\v}{L}{}{013D}
+\pxDeclarePdfTextComposite{\'}{S}{}{015A}
+\pxDeclarePdfTextComposite{\c}{S}{}{015E}
+\pxDeclarePdfTextComposite{\v}{T}{}{0164}
+\pxDeclarePdfTextComposite{\'}{Z}{}{0179}
+\pxDeclarePdfTextComposite{\.}{Z}{}{017B}
+\pxDeclarePdfTextComposite{\k}{a}{}{0105}
+\pxDeclarePdfTextComposite{\v}{l}{}{013E}
+\pxDeclarePdfTextComposite{\'}{s}{}{015B}
+\pxDeclarePdfTextComposite{\c}{s}{}{015F}
+\pxDeclarePdfTextComposite{\v}{t}{}{0165}
+\pxDeclarePdfTextComposite{\'}{z}{}{017A}
+\pxDeclarePdfTextComposite{\.}{z}{}{017C}
+\pxDeclarePdfTextComposite{\'}{R}{}{0154}
+\pxDeclarePdfTextComposite{\u}{A}{}{0102}
+\pxDeclarePdfTextComposite{\'}{L}{}{0139}
+\pxDeclarePdfTextComposite{\'}{C}{}{0106}
+\pxDeclarePdfTextComposite{\v}{C}{}{010C}
+\pxDeclarePdfTextComposite{\k}{E}{}{0118}
+\pxDeclarePdfTextComposite{\v}{E}{}{011A}
+\pxDeclarePdfTextComposite{\v}{D}{}{010E}
+\pxDeclarePdfTextComposite{\'}{N}{}{0143}
+\pxDeclarePdfTextComposite{\v}{N}{}{0147}
+\pxDeclarePdfTextComposite{\H}{O}{}{0150}
+\pxDeclarePdfTextComposite{\v}{R}{}{0158}
+\pxDeclarePdfTextComposite{\r}{U}{}{016E}
+\pxDeclarePdfTextComposite{\H}{U}{}{0170}
+\pxDeclarePdfTextComposite{\c}{T}{}{0162}
+\pxDeclarePdfTextComposite{\'}{r}{}{0155}
+\pxDeclarePdfTextComposite{\u}{a}{}{0103}
+\pxDeclarePdfTextComposite{\'}{l}{}{013A}
+\pxDeclarePdfTextComposite{\'}{c}{}{0107}
+\pxDeclarePdfTextComposite{\v}{c}{}{010D}
+\pxDeclarePdfTextComposite{\k}{e}{}{0119}
+\pxDeclarePdfTextComposite{\v}{e}{}{011B}
+\pxDeclarePdfTextComposite{\v}{d}{}{010F}
+\pxDeclarePdfTextCommand{\dj}{}{0111}
+\pxDeclarePdfTextComposite{\'}{n}{}{0144}
+\pxDeclarePdfTextComposite{\v}{n}{}{0148}
+\pxDeclarePdfTextComposite{\H}{o}{}{0151}
+\pxDeclarePdfTextComposite{\v}{r}{}{0159}
+\pxDeclarePdfTextComposite{\r}{u}{}{016F}
+\pxDeclarePdfTextComposite{\H}{u}{}{0171}
+\pxDeclarePdfTextComposite{\c}{t}{}{0163}
+\pxDeclarePdfTextCommand{\ng}{}{014B}
+\pxDeclarePdfTextCommand{\textnumero}{}{2116}
+%%
+
+% Give a substitute definition to characters that appear as
+% ligatures, since otherwise hyperref leaves some garbage in
+% output pdf-strings when such ligatures appear.
+\ifpxhy@uptex\else
+ \ifpxhy@zerox\else
+ \DeclareTextCommand{\textendash}{PD1}{--}
+ \DeclareTextCommand{\textquestiondown}{PD1}{}% empty
+ \DeclareTextCommand{\textexclamdown}{PD1}{}% empty
+ \fi
+\fi
+
+%--------------------------------------- Enable hyperref unicode
+\ifpxhy@hy@unicode
+
+\PackageInfo\pxhy@pkgname
+ {The setup for hyperref 'unicode' is applied.\MessageBreak
+ (Note that this feature is experimental.)\@gobbletwo}
+
+%% The following code is taken from hyperref.sty.
+%%%%BEGIN
+ \def\HyPsd@Char#1{%
+ \ifnum`#1<128 %
+ \@backslashchar 000#1%
+ \else
+ \ifnum`#1<65536 %
+ \expandafter\HyPsd@CharTwoByte\number`#1!%
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@CharSurrogate
+ \intcalcSub{`#1}{65536}!%
+ \fi
+ \fi
+ }%
+ \def\HyPsd@CharTwoByte#1!{%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcDiv#1!256!!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+ \def\HyPsd@CharOctByte#1!{%
+ \@backslashchar
+ \IntCalcDiv#1!64!%
+ \intcalcDiv{\IntCalcMod#1!64!}{8}%
+ \IntCalcMod#1!8!%
+ }%
+ \def\HyPsd@CharSurrogate#1!{%
+ \@backslashchar 33%
+ \IntCalcDiv#1!262144!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \intcalcDiv{\IntCalcMod#1!262144!}{1024}!%
+ \@backslashchar 33%
+ \expandafter\expandafter\expandafter\IntCalcAdd
+ \intcalcDiv{\IntCalcMod#1!1024!}{256}!4!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+%%%%END
+
+%% disable the verification of bxjscls
+\let\jsCheckHyperrefUnicode\@empty
+
+\fi
+%--------------------------------------- 'jacommentline'
+\ifpxhy@jacommentline
+
+% The 'jacomemntline' feature outputs at the top of the
+% hyperref outline file (*.out) a comment line including
+% some Japanese characters.
+
+%% \pxhy@jacomment
+\let\pxhy@jacomment\@empty
+\begingroup
+ \@for\pxhy@x:={%
+ 2433,244E,2555,2521,2524,256B,244F,467C,4B5C,386C,%
+ 4A38,3B7A,2472,345E,245F,245E,2439%
+ }\do{%
+ \kansujichar1=\jis"\pxhy@x\relax
+ \xdef\pxhy@jacomment{\pxhy@jacomment\kansuji1}%
+ }
+\endgroup
+
+%% attach a hook
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname ReadBookmarks\endcsname\relax\else
+ \g@addto@macro\ReadBookmarks{%
+ \if@filesw
+ \ifx\@outlinefile\@undefined\else
+ \immediate\write\@outlinefile{%
+ \@percentchar\pxhy@jacomment.}%
+ \fi
+ \fi
+ }
+\fi
+
+\fi
+%--------------------------------------- All done
+\endinput
+%% EOF
diff --git a/language/japanese/pxjahyper/pxjahyper.tex b/language/japanese/pxjahyper/pxjahyper.tex
new file mode 100644
index 0000000000..41b1b1c7f5
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.tex
@@ -0,0 +1,136 @@
+% 文字コードは UTF-8
+% platex で組版する
+\documentclass[a4paper]{jsarticle}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.3e}
+\newcommand{\PkgDate}{2019/06/20}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{~:\quad}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\pLaTeX}{p\LaTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxjahyper} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+(u){\pLaTeX} + hyperref + dvipdfmxの組み合わせで
+日本語を含む「しおり」をもつPDF文書を作成する
+場合に必要となる機能を提供する。
+\begin{itemize}
+\item dvipdfmx用の「tounicode special」について、
+ 内部漢字コードに応じて適切なものを出力する。
+\item PDF文字列の中でLICR(|\"a| や |\textsection| 等の
+ 文字出力の命令)が正しく機能するようにする。
+ ただし、エンジンが {\pTeX} の場合は、out2uni を利用
+ する場合を除き、JIS~X~0208にない文字は出力できない
+ (hyperrefの警告が出る)。
+\item {\TeX} の版面拡大機能が使われている
+ (|\mag| が1000でない;典型的には\Pkg{jsclasses}の
+ 文書クラスで基底フォントサイズが10\,pt以外である)
+ 場合に、\Pkg{hyperref}が出力するpapersize specialの
+ 紙面サイズの値が不正になるが、この場合に |\mag| 値を
+ 考慮して求めた正しいサイズによるpapersize specialを
+ 改めて出力する。
+\end{itemize}
+
+%===========================================================
+\section{パッケージの読込}
+
+|\usepackage| で読み込む。
+\begin{quote}\small\begin{verbatim}
+\usepackage[オプション,...]{pxjahyper}
+\end{verbatim}\end{quote}
+
+使用可能なオプションは以下の通り。
+\begin{itemize}
+\item |tounicode|(既定)\Means
+ dvipdfmx用の「tounicode special」を出力する。
+\item |notounicode|\Means
+ |tounicode| の否定。
+\item |out2uni|\Means
+ out2uniフィルタ(角藤氏製作)を使うことを前提にした
+ 出力を行う。
+ (|tounicode| が無効になる。)
+ {\upLaTeX} では使用不可。
+\item |noout2uni|(既定)\Means
+ |out2uni| の否定。
+\item |bigcode|(既定)\Means
+ {\upTeX}でのToUnicode CMapとして既定のUTF8-UCSの代わりに\
+ UTF8-UTF16を用いる。
+ (当該のファイルが存在する必要がある。)
+\item |nobigcode|\Means
+ |bigcode| の否定。
+ \Note 0.3a版より既定を |bigcode| に変更した。
+\item |dvipdfmx|\Means
+ dvipdfmxを前提とした動作を行う。
+\item |nodriver|/|none|\Means
+ dvipdfmxを前提とした動作を抑止する。
+ 現状では、この場合には本パッケージは実質的に何の動作も行わない。
+\item |auto|(既定)\Means
+ \Pkg{hyperref}のドライバがdvipdfmx用ならば |dvipdfmx|、
+ それ以外は |none| の動作。
+\end{itemize}
+
+%===========================================================
+\section{機能}
+
+「概要」で述べた機能は(オプション設定に応じて)
+自動的に実施される。
+
+\paragraph{Unicode符号値による入力}
+PDF文字列入力中で、|\Ux| が以下の意味になる。
+PDF文字列以外では |\Ux| は以前の定義(または未定義)に戻る。
+
+\begin{itemize}
+\item |\Ux{|Unicode符号値|}|\Means
+ その符号値の文字を出力する。
+\end{itemize}
+
+符号値は16進数で指定する。
+
+なお、\Pkg{OTF}パッケージの |\UTF| 命令は、PDF文字列中では
+out2uni用の出力を行うように設計されているが、
+本パッケージを {\upLaTeX} で用いた場合は、
+|\UTF| も(PDF文字列中では)|\Ux| と同じ動作
+(つまりtounicode用の出力)になるように変更される。
+
+\paragraph{PDF文字列用の文字命令の定義}
+以下の命令が提供される。(プリアンブルでのみ使用可能。)
+
+\begin{itemize}
+\item |\pxDeclarePdfTextCommand{\制御綴}{|\Meta{JIS符号値}|}{|\Meta
+{Unicode符号値}|}|\Means
+ PDF文字列中の |\制御綴| の動作として、
+ 指定した符号値の文字を出力することを指定する。
+\item |\pxDeclarePdfTextComposite{\制御綴}{|\Meta{引数}|}{|\Meta
+{JIS符号値}|}{|\Meta{Unicode符号値}|}|\Means
+ PDF文字列中の |\制御綴|(アクセント命令)+ \Meta{引数}の
+ 動作として、指定した符号値の文字を出力することを指定する。
+\end{itemize}
+
+これらの命令において、符号値は16進数で指定する。
+「JIS符号値」は {\upLaTeX} では使われないので省略して
+(空にして)もよい
+(或いはそもそも JIS~X~0208 にない文字の場合は省略する)。
+逆に「Unicode符号値」は {\pLaTeX} の動作でかつ「JIS符号値」が
+指定されている場合は省略してよい。
+
+例えば、以下のように定義しておくと、
+PDF文字列中で |\textschwa|(schwa記号)や |\d{t}|(\d{t})が
+使えるようになる。
+\begin{quote}\small\begin{verbatim}
+\pxDeclarePdfTextCommand{\textschwa}{}{0259}
+\pxDeclarePdfTextComposite{\d}{t}{}{1E6D}
+\end{verbatim}\end{quote}
+
+\end{document}