blob: 000ab351b4905834e74ac178bfd6baf64560d5af (
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
|
%%
%% This is file `ucshyper.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ucs.dtx (with options: `ucshyper.sty')
%%
%% Copyright 2001 Dominique Unruh <dominique@unruh.de>
%%
%% This program is provided under the terms of the LaTeX Project Public
%% License with some modifications.
%% See the file LICENSE (http://www.unruh.de/DniQ/latex/unicode/content/LICENSE)
%% for information.
%%
\ProvidesPackage{ucshyper}[2002/03/05
UCS: Unicode in Hyperref's PDF bookmarks]%
\ifx\pdfoutput\undefined
\PackageWarning{ucshyper}{ucshyper needs to be run with
pdflatex.\MessageBreak Disabling functionality}%
\expandafter\endinput\fi
\RequirePackage[pdftex,unicode]{hyperref}
\newif\ifucshyper@prerender\ucshyper@prerendertrue
\newif\ifucshyper@direct\ucshyper@directtrue
\DeclareOption{nodirect}{\ucshyper@directfalse}%
\DeclareOption{direct}{\ucshyper@directtrue}%
\DeclareOption{noprerender}{\ucshyper@prerenderfalse}%
\DeclareOption{prerender}{\ucshyper@prerendertrue}%
\ProcessOptions*%
\newcommand\UCSPU@tmp{}%
\newcommand\UCSPU[1]{%
\begingroup\let\UCSPU@tmp\relax\relax\ifx\UCSPU@tmp\relax
\ifx\utf@viii@map\undefined\else
\expandafter\utf@viii@map\expandafter{\number#1}\fi
\ifnum#1>"FFFF
\PackageError{ucshy}{UCSPU does not support codes greater than
\number"FFFF}\fi
\@tempcntb#1\divide\@tempcntb by'40000
\edef\uc@temp@a{\@backslashchar\number\@tempcntb}%
\multiply\@tempcntb by'40000 \@tempcnta#1\advance\@tempcnta by-\@tempcntb
\@tempcntb\@tempcnta\divide\@tempcntb by'4000
\edef\uc@temp@a{\uc@temp@a\number\@tempcntb}%
\multiply\@tempcntb by'4000\advance\@tempcnta by-\@tempcntb
\@tempcntb\@tempcnta\divide\@tempcntb by'400
\edef\uc@temp@a{\uc@temp@a\number\@tempcntb\@backslashchar}%
\multiply\@tempcntb by'400\advance\@tempcnta by-\@tempcntb
\@tempcntb\@tempcnta\divide\@tempcntb by'100
\edef\uc@temp@a{\uc@temp@a\number\@tempcntb}%
\multiply\@tempcntb by'100\advance\@tempcnta by-\@tempcntb
\@tempcntb\@tempcnta\divide\@tempcntb by'10
\edef\uc@temp@a{\uc@temp@a\number\@tempcntb}%
\multiply\@tempcntb by'10\advance\@tempcnta by-\@tempcntb
\@tempcntb\@tempcnta
\expandafter\xdef\csname UCS2PU\number#1\endcsname{%
\uc@temp@a\number\@tempcntb}%
\fi\endgroup
}
\newcommand\ucspu@err[1]{%
\csname[*** Insert \string\UCSPU{\number#1}
into preamble ***]\endcsname}
\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}
\g@addto@macro\pdfstringdefPreHook{%
\ifucshyper@direct
\let\old@unichar\unichar
\def\unichar#1{%
\expandafter\ifx\csname UCS2PU\number#1\endcsname\relax
\ucspu@err{#1}\old@unichar{#1}\else
\csname UCS2PU\number#1\endcsname\fi
}%
\fi
\let\selectfont\empty
\let\fontencoding\@gobble
\let\selectlanguage\@gobble
\let\foreignlanguage\@gobble
}
\let\ucshyper@old@pdfstringdef\pdfstringdef
\def\pdfstringdef#1#2{%
\ifucshyper@prerender
\begingroup
\let\old@unichar\unichar
\let\uc@output\@gobbletwo
\fontencoding{PU}\enc@update
\def\unichar##1{\old@unichar{##1}\UCSPU{##1}}%
\edef\0{\string\0}%
\edef\1{\string\1}%
\edef\2{\string\2}%
\edef\3{\string\3}%
\edef\8{\string\8}%
\edef\9{\string\9}%
\Hy@pdfstringtrue
\PrerenderUnicode{#2}%
\endgroup
\fi
\ucshyper@old@pdfstringdef{#1}{#2}}
\newcommand\UCSPUrange[2]{%
\count255=#1\relax
\loop\ifnum\count255>#2\relax\else
\UCSPU{\count255}%
\advance\count255 by1\relax
\repeat}
\@onlypreamble\UCSPUrange
|