blob: 06067015166a93e986a7d738096b7d5f53b6118f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
% 文字コードは UTF-8
% uplatex で組版する
\documentclass[uplatex,a4paper]{jsarticle}
\renewcommand{\headfont}{\gtfamily\romanseries{sbc}\sffamily}
\usepackage{shortvrb}
\MakeShortVerb{\|}
\usepackage{bxtexlogo}
\bxtexlogoimport{*}
\newcommand{\PkgVersion}{0.5a}
\newcommand{\PkgDate}{2020/09/27}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{:\quad}
%-----------------------------------------------------------
\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 |otfcid|(既定)\Means
\Pkg{japanese-otf}パッケージの |\CID| をPDF文字列中で
使えるようにする。
具体的には、当該のAJ1のグリフに“対応”するUnicode文字が
あればそれを出力し、なければ(警告を出した上で)削除する。
\item |nootfcid|\Means
|otfcid| の否定。
\Note |otfcid| の利用には、エンジンの{\eTeX}拡張および
\Pkg{etoolbox}と\Pkg{bxjatoucs}パッケージインストールが必要。
\item |disablecmds|(既定)\Means
「PDF文字列中のテキスト装飾命令の無効化」を有効にする。
\Note 詳細は\ref{ssec:disablecmds}節を参照。
\item |nodisablecmds|\Means
|disablecmds| の否定。
\item |otfmacros|\Means
\Pkg{japanese-otf}付属の\Pkg{ajmacros}パッケージが提供する
文字入力命令(|\ajMaru|、|\ajLig| 等)をPDF文字列中で
“可能な限り”使えるようにする。
\Note Unicode文字で表現可能であればそれを出力し、
なければ代替表現を出力する。
\Note |otfmacros| を指定する場合は |otfcid| も有効にする必要がある。
\Note \Pkg{ajmacros}パッケージの多くの命令は“脆弱(fragile)”である。
そのため、節見出し(|\section| 等の引数)で |\ajMaru| 等の命令を
使いたい場合は、命令の前に |\protect| 付ける必要がある。
\footnote{ちなみに、引数がPDF文字列として解釈される場合には、
|\protect| は全く結果に影響しない。}
\item |nootfmacros|(既定)\Means
|otfmacros| の否定。
\item |bigcode|(既定)\Means
{\upTeX}でのToUnicode CMapとして既定のUTF8-UCSの代わりに\
UTF8-UTF16を用いる。
(当該のファイルが存在する必要がある。)
\item |nobigcode|\Means
|bigcode| の否定。
\Note 0.3a版より既定を |bigcode| に変更した。
\item |dvipdfmx|\Means
dvipdfmxを前提とした動作を行う。
\item |nodvidriver|\Means
dvipdfmxを前提とした動作を抑止する。
\Note 現状では、この場合には本パッケージは実質的に何の動作も行わない。
\Note 0.5版より、|nodvidriver| の別名の |none| は非推奨の扱いとする。
\item |auto|(既定)\Means
\Pkg{hyperref}のドライバがdvipdfmx用ならば |dvipdfmx|、
それ以外は |nodvidriver| の動作。
\end{itemize}
%===========================================================
\section{機能}
「概要」で述べた機能は(オプション設定に応じて)
自動的に実施される。
%-------------------
\subsection{Unicode符号値による入力}
PDF文字列入力中で、|\Ux| が以下の意味になる。
PDF文字列以外では |\Ux| は以前の定義(または未定義)に戻る。
\footnote{|\Ux| という命令名は\Pkg{bxbase}パッケージの
Unicode符号値入力用の命令が使っているものである。
従って、\Pkg{bxbase}パッケージを読み込んでいれば、
「PDF文字列と版面出力の両方に使われる」ようなテキストにおいて、
|\Ux| でUnicode符号値入力が可能になる。
ただし、Unicode符号値入力用の命令としては
「\Pkg{japanese-otf}パッケージの |\UTF| 命令」
の方が有名であり、\Pkg{pxjahyper}は |\UTF| も正しく扱えるので、
こちらを使う方が無難かもしれない。}
\begin{itemize}
\item |\Ux{|Unicode符号値|}|\Means
その符号値の文字を出力する。
\end{itemize}
符号値は16進数で指定する。
なお、\Pkg{japanese-otf}パッケージの |\UTF| 命令は、PDF文字列中では
out2uni用の出力を行うように設計されているが、
本パッケージを {\upLaTeX} で用いた場合は、
|\UTF| も(PDF文字列中では)|\Ux| と同じ動作
(つまりtounicode用の出力)になるように変更される。
%-------------------
\subsection{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}
%-------------------
\subsection{PDF文字列用中のテキスト装飾命令の無効化}
\label{ssec:disablecmds}
PDF文字列は単なるUnicode文字列として扱われるものなので、
|\textit| や |\large| 等のテキスト装飾用の命令は意味をなさず、
またそれらの命令の実装はPDF文字列の解釈中は正常に処理できない。
PDF文字列と版面出力の両方に使われるテキスト(節見出し等)
についてテキスト装飾命令が支障なく使えるように、
\Pkg{hyperref}では基本的なテキスト装飾命令
(多くは{\LaTeX}カーネルが提供するもの)
について、「PDF文字列として扱う場合は自動的に無力化
\footnote{例えば、“|\textit{text}|”や“|{\large text}|”は
単に“|text|”と書いたものと見なされる。}
する」機構を実装している。
これにより、例えば節見出しのテキストに“|\textit{text}|”が
含まれていたとすると、
版面に出力する場合には“\textit{text}”のように装飾が施され、
一方で、PDF文字列としては“|text|”と解釈されることになる。
0.5版以降の\Pkg{pxjahyper}では、この無効化の対象に
「和文用のテキスト装飾命令(およびそれに準じるもの)」
を追加するようになった。
以下の命令が対象になる。
\begin{itemize}
\item 和文のフォント選択命令\Means
|\textmc| |\gtfamily| |\kanjifamily| |\useroman| |\userelfont|
など
\item 次の{\pLaTeX}カーネル命令\Means
|\<|
\item 次の{\pTeX}プリミティブ\Means
|\inhibitglue| |\|(|no|)|autospacing| |\|(|no|)|autoxspacing|
\item 次の\Pkg{plext}の命令\Means
|\bou| |\kasen| |\rensuji|
\item 次の\Pkg{japanese-otf}の命令\Means
|\textmg| |\mgfamily| |\ltseries| |\ebseries| |\propshape|
\end{itemize}
\end{document}
|