blob: e11443cb3ba29a1450e3165dfb89e768ab747521 (
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
|
%%
%% File ctxdocstrip.tex
%%
%% Copyright (C) 2016--2020
%% CTEX.ORG and any individual authors listed in the documentation.
%%---------------------------------------------------------------------
%%
%% 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
%% http://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%% http://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".
%%
%%---------------------------------------------------------------------
%%
\csname ctxDocstripLoaded\endcsname
\let\ctxDocstripLoaded\endinput
\input l3docstrip %
\edef\ctxResetCatcode{%
\catcode\number`\$=\the\catcode`\$\relax
\catcode\number`\@=\the\catcode`\@\relax
}
\makeOther\$
\catcode`\@=11\relax
\def\plusOption+#1>#2$#3$\endLine{%
\maybeMsg{<+#1 . >}%
\Evaluate{#1}%
\def\ctxCMD{#2}%
\def\ctxID{$#3$}%
\def\do##1##2##3{%
\if1\Expr{##2}%
\ctxReadIDFile
\StreamPut##1{\inLine}%
\fi
}%
\activefiles
}
\def\ctxReadIDFile{%
\openin\inputcheck=\jobname.id\relax
\ifeof\inputcheck\else
\read \inputcheck to \inLine
\closein\inputcheck
\ifx\inLine\empty\else
\let\ctxID\inLine
\fi
\fi
\maybeMsg{^^J\ctxID^^J}%
\def\inLine{\ctxCMD\ctxID}%
}
\keepsilent
\askforoverwritefalse
\declarepreamble\emptypreamble
\endpreamble
\declarepostamble\emptypostamble
\endpostamble
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\expandafter\ctxResetCatcode\expandafter\endinput
\fi
\let\OriginalStreamClose\StreamClose
\def\ctxStreamClose#1{%
\OriginalStreamClose{#1}%
\ctxConvFile{#1}%
}
\def\ctxConvFile#1{%
\ifcsname zhconv@\csstring#1\endcsname
\ctxConv{\lastnamedcs}%
{\begincsname pth@\csstring#1\endcsname}%
\fi
}
\def\ctxLuaFunc{%
\directlua{
local zhconv = require("ctex-zhconv").conv
local scan_arg = token.scan_argument
local t = lua.get_functions_table()
local id = 233
while t[id] do id = id + 1 end
t[id] = function ()
local enc = scan_arg()
local file = scan_arg()
return zhconv(enc, file, file)
end
token.set_lua("ctxConv", id, "global", "protected")
}%
\global\let\ctxLuaFunc\relax
}
\def\convfile{%
\ifx\@file\file
\expandafter\ctxfile\else
\expandafter\setconvfile\fi
}
\def\setconvfile#1#2{%
\ctxLuaFunc
\Name\def{zhconv@#2}{#1}%
\let\StreamClose\ctxStreamClose
}
\def\ctxfile#1#2{%
\setconvfile{#1}{#2}%
\file{#2}%
}
\ctxResetCatcode
%%
%%
%% End of file ctxdocstrip.tex
|