Created
December 7, 2024 15:09
-
-
Save zr-tex8r/651147b8d24957d0afa0ed8047c33663 to your computer and use it in GitHub Desktop.
TeX: LuaLaTeXを爆速にする設定ファイル(※ただし画期的)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- This is file 'scspeddy.lua'. | |
local module_name = 'scspeedy' | |
local version = '2024-12-08' | |
-- the module | |
scspeedy = {} | |
---------------------------------------- | |
-- logging | |
local function make_message(...) | |
return module_name..": "..table.concat({...}, ": ") | |
end | |
local function abort(...) | |
error(make_message(...)) | |
end | |
local function info(...) | |
if scspeedy.debug then | |
texio.write_nl(make_message(...)) | |
end | |
end | |
---------------------------------------- | |
-- fake reader | |
local function make_reader(source) | |
return tostring(source):gmatch('[^\n]+') | |
end | |
---------------------------------------- | |
local tex_source = [=[ | |
\catcode`\@=11 | |
% recover some primitives | |
\let\par\@@par | |
\begingroup | |
\catcode`_=11 \catcode`:=11 | |
\long\def\do#1#2{% | |
\ifdefined#2 \global\let#1=#2\fi} | |
\do\primitive\tex_primitive:D | |
\do\shipout\tex_shipout:D | |
\do\output\tex_output:D | |
\do\par\tex_par:D | |
\endgroup | |
% purge all LaTeX things | |
\everypar{} | |
\everyeof{} | |
\everyhbox{} | |
\everyvbox{} | |
\output{\setbox0\box255 \deadcycles=0 } | |
% environment check | |
\def\scsp@error#1{% | |
\errhelp{The job quits right now.}% | |
\errmessage{scspeedy: #1}% | |
\batchmode \primitive\end} | |
\unless\ifprimitive\par | |
\scsp@error{cannot recover \string\par} | |
\fi | |
\unless\ifdefined\@@par | |
\scsp@error{not LaTeX} | |
\fi | |
\unless\ifprimitive\pdfextension | |
\scsp@error{too old LuaTeX} | |
\fi | |
% create page | |
\protected\def\scsp@color{\pdfextension colorstack 0 } | |
\protected\def\scsp@draw{\pdfextension literal page} | |
\font\scsp@font=cmr10 \scsp@font | |
\pagewidth=210mm \pageheight=297mm | |
\primitive\shipout\vbox{% | |
\scsp@color push{0 g 0 G}% | |
\scsp@draw{q}% | |
\scsp@draw{4.76 0 0 4.76 59.52 219.39 cm}% | |
\scsp@draw{1.39 w}% | |
\scsp@draw{1 j 1 J}% | |
\scsp@draw{50 72 m}% | |
\scsp@draw{64 72 76 65 76 55 c}% | |
\scsp@draw{76 51 72 47 67 44 c}% | |
\scsp@draw{79 41 84 32 84 25 c}% | |
\scsp@draw{84 13 75 8 68 8 c}% | |
\scsp@draw{32 8 l}% | |
\scsp@draw{25 8 16 13 16 25 c}% | |
\scsp@draw{16 32 21 41 33 44 c}% | |
\scsp@draw{28 47 24 51 24 55 c}% | |
\scsp@draw{24 65 36 72 50 72 c}% | |
\scsp@draw{s}% | |
\scsp@draw{42 56 m}% | |
\scsp@draw{42 57.66 41.1 59 40 59 c}% | |
\scsp@draw{38.89 59 38 57.66 38 56 c}% | |
\scsp@draw{38 54.34 38.89 53 40 53 c}% | |
\scsp@draw{41.1 53 42 54.34 42 56 c}% | |
\scsp@draw{f}% | |
\scsp@draw{62 56 m}% | |
\scsp@draw{62 57.66 61.11 59 60 59 c}% | |
\scsp@draw{58.9 59 58 57.66 58 56 c}% | |
\scsp@draw{58 54.34 58.9 53 60 53 c}% | |
\scsp@draw{61.11 53 62 54.34 62 56 c}% | |
\scsp@draw{f}% | |
\scsp@draw{40 48 m}% | |
\scsp@draw{45 45 55 45 60 48 c}% | |
\scsp@draw{S}% | |
\scsp@draw{58 90 m}% | |
\scsp@draw{77 81 l}% | |
\scsp@draw{74 61 l}% | |
\scsp@draw{66 60 50 66 46 72 c}% | |
\scsp@draw{58 90 l}% | |
\scsp@draw{b}% | |
\scsp@draw{20 31 m}% | |
\scsp@draw{19 33 14 41 13 42 c}% | |
\scsp@draw{12 43 10 43 7 44 c}% | |
\scsp@draw{4 46 6 46 8 46 c}% | |
\scsp@draw{9 46 11 44 12 44 c}% | |
\scsp@draw{14 46 14 47 15 49 c}% | |
\scsp@draw{16 51 16 49 16 48 c}% | |
\scsp@draw{16 46 14 44 15 43 c}% | |
\scsp@draw{16 42 21 35 22 33 c}% | |
\scsp@draw{23 31 21 30 20 31 c}% | |
\scsp@draw{b}% | |
\scsp@draw{80 31 m}% | |
\scsp@draw{81 33 86 41 87 42 c}% | |
\scsp@draw{88 43 90 43 93 44 c}% | |
\scsp@draw{96 46 94 46 92 46 c}% | |
\scsp@draw{91 46 89 44 88 44 c}% | |
\scsp@draw{86 46 86 47 85 49 c}% | |
\scsp@draw{84 51 84 49 84 48 c}% | |
\scsp@draw{84 46 86 44 85 43 c}% | |
\scsp@draw{84 42 79 35 78 33 c}% | |
\scsp@draw{77 31 79 30 80 31 c}% | |
\scsp@draw{b}% | |
\scsp@draw{q}% | |
\scsp@color set{1 0 0 RG 1 0 0 rg}% | |
\scsp@draw{27 48 m}% | |
\scsp@draw{42 38 58 38 73 48 c}% | |
\scsp@draw{75 46 76 44 77 41 c}% | |
\scsp@draw{77 39 75 37 73 36 c}% | |
\scsp@draw{74 33 74 31 76 26 c}% | |
\scsp@draw{75 25 72 24 66 23 c}% | |
\scsp@draw{66 27 65 30 63 34 c}% | |
\scsp@draw{42 30 32 35 24 41 c}% | |
\scsp@draw{25 45 26 47 27 48 c}% | |
\scsp@draw{b}% | |
\scsp@color set{0 G 0 g}% | |
\scsp@draw{53 16 m}% | |
\scsp@draw{53 17.66 51.66 19 50 19 c}% | |
\scsp@draw{48.34 19 47 17.66 47 16 c}% | |
\scsp@draw{47 14.34 48.34 13 50 13 c}% | |
\scsp@draw{51.66 13 53 14.34 53 16 c}% | |
\scsp@draw{b}% | |
\scsp@draw{53 26 m}% | |
\scsp@draw{53 27.66 51.66 29 50 29 c}% | |
\scsp@draw{48.34 29 47 27.66 47 26 c}% | |
\scsp@draw{47 24.34 48.34 23 50 23 c}% | |
\scsp@draw{51.66 23 53 24.34 53 26 c}% | |
\scsp@draw{b}% | |
\scsp@draw{11 28 m}% | |
\scsp@draw{11 30.21 9.21 32 7 32 c}% | |
\scsp@draw{4.79 32 3 30.21 3 28 c}% | |
\scsp@draw{3 25.79 4.79 24 7 24 c}% | |
\scsp@draw{9.21 24 11 25.79 11 28 c}% | |
\scsp@draw{s}% | |
\scsp@draw{17 55 m}% | |
\scsp@draw{17 57.21 15.21 59 13 59 c}% | |
\scsp@draw{10.79 59 9 57.21 9 55 c}% | |
\scsp@draw{9 52.79 10.79 51 13 51 c}% | |
\scsp@draw{15.21 51 17 52.79 17 55 c}% | |
\scsp@draw{s}% | |
\scsp@draw{12 68 m}% | |
\scsp@draw{12 70.21 10.21 72 8 72 c}% | |
\scsp@draw{5.79 72 4 70.21 4 68 c}% | |
\scsp@draw{4 65.79 5.79 64 8 64 c}% | |
\scsp@draw{10.21 64 12 65.79 12 68 c}% | |
\scsp@draw{s}% | |
\scsp@draw{27 76 m}% | |
\scsp@draw{27 78.21 25.21 80 23 80 c}% | |
\scsp@draw{20.79 80 19 78.21 19 76 c}% | |
\scsp@draw{19 73.79 20.79 72 23 72 c}% | |
\scsp@draw{25.21 72 27 73.79 27 76 c}% | |
\scsp@draw{s}% | |
\scsp@draw{46 89 m}% | |
\scsp@draw{46 91.21 44.21 93 42 93 c}% | |
\scsp@draw{39.79 93 38 91.21 38 89 c}% | |
\scsp@draw{38 86.79 39.79 85 42 85 c}% | |
\scsp@draw{44.21 85 46 86.79 46 89 c}% | |
\scsp@draw{s}% | |
\scsp@draw{78 89 m}% | |
\scsp@draw{78 91.21 76.21 93 74 93 c}% | |
\scsp@draw{71.79 93 70 91.21 70 89 c}% | |
\scsp@draw{70 86.79 71.79 85 74 85 c}% | |
\scsp@draw{76.21 85 78 86.79 78 89 c}% | |
\scsp@draw{s}% | |
\scsp@draw{92 73 m}% | |
\scsp@draw{92 75.21 90.21 77 88 77 c}% | |
\scsp@draw{85.79 77 84 75.21 84 73 c}% | |
\scsp@draw{84 70.79 85.79 69 88 69 c}% | |
\scsp@draw{90.21 69 92 70.79 92 73 c}% | |
\scsp@draw{s}% | |
\scsp@draw{96 53 m}% | |
\scsp@draw{96 55.21 94.21 57 92 57 c}% | |
\scsp@draw{89.79 57 88 55.21 88 53 c}% | |
\scsp@draw{88 50.79 89.79 49 92 49 c}% | |
\scsp@draw{94.21 49 96 50.79 96 53 c}% | |
\scsp@draw{s}% | |
\scsp@draw{98 23 m}% | |
\scsp@draw{98 25.21 96.21 27 94 27 c}% | |
\scsp@draw{91.79 27 90 25.21 90 23 c}% | |
\scsp@draw{90 20.79 91.79 19 94 19 c}% | |
\scsp@draw{96.21 19 98 20.79 98 23 c}% | |
\scsp@draw{s}% | |
\scsp@draw{Q}% | |
\scsp@color pop | |
} | |
% fine | |
\primitive\end | |
]=] | |
---------------------------------------- | |
-- callback 'open_read_file' | |
callback.register('open_read_file', function(filename) | |
info("run open_read_file", filename) | |
if scspeedy.phase then | |
info("bad phase", scspeedy.phase) | |
abort("internal error") | |
end | |
scspeedy.phase = 'open' | |
-- clear \everyjob (WOW!) | |
scspeedy.orig_everyjob = tex.everyjob | |
tex.everyjob = "" | |
-- read from nice_source | |
return { | |
reader = make_reader(tex_source) | |
} | |
end) | |
---------------------------------------- | |
-- End of file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
使用方法については以下の記事を参照してください:snowman: