diff options
Diffstat (limited to 'language/chinese/ctex/ctxdocstrip.tex')
-rw-r--r-- | language/chinese/ctex/ctxdocstrip.tex | 110 |
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 |