summaryrefslogtreecommitdiff
path: root/language/chinese/ctex/ctxdocstrip.tex
diff options
context:
space:
mode:
Diffstat (limited to 'language/chinese/ctex/ctxdocstrip.tex')
-rw-r--r--language/chinese/ctex/ctxdocstrip.tex110
1 files changed, 110 insertions, 0 deletions
diff --git a/language/chinese/ctex/ctxdocstrip.tex b/language/chinese/ctex/ctxdocstrip.tex
new file mode 100644
index 0000000000..425496c0e5
--- /dev/null
+++ b/language/chinese/ctex/ctxdocstrip.tex
@@ -0,0 +1,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("zhconv").conv
+ local scan_string = token.scan_string
+ local t = lua.get_functions_table()
+ local id = 233
+ while t[id] do id = id + 1 end
+ t[id] = function ()
+ local enc = scan_string()
+ local file = scan_string()
+ 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