Skip to content

Instantly share code, notes, and snippets.

@zr-tex8r
Created November 10, 2015 19:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zr-tex8r/975937ee20d79d094e6e to your computer and use it in GitHub Desktop.
Save zr-tex8r/975937ee20d79d094e6e to your computer and use it in GitHub Desktop.
LaTeX: to compile 1TeX source using ordinary LaTeX
% ez1tex.sty
%% package declaration
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ez1tex}[2015/11/11 v1.1 ez-1TeX]
\def\bxii@pkgname{ez1tex}
%------------------- handle options
%% \bxii@srcname
\edef\bxii@srcname{\jobname.1tex}
%% options
\DeclareOption*{%
\edef\bxii@srcname{\CurrentOption}%
}
\ProcessOptions*
%% check sequence
\def\next{%
\let\documentclass\@twoclasseserror
\if@compatibility\else\let\usepackage\RequirePackage\fi
\@fileswithoptions\@clsextension}
\ifx\next\documentclass\else
\PackageError\bxii@pkgname
{This package must be loaded before
\string\documentclass}
{Package loading is aborted.\MessageBreak\@ehc}
\expandafter\endinput\fi\relax
%------------------- prepare "very-end" hook
\AtEndOfPackage{%
\let\next\@reset@ptions
\def\@reset@ptions{%
\let\@reset@ptions\next
\@reset@ptions
\let\next\bxii@endpkg@hook
\let\bxii@endpkg@hook\@undefined
\next
}%
}
%------------------- prepare clean-up procedure
%% \bxii@onlyinoneproc\CS
\def\bxii@onlyinoneproc#1{%
\g@addto@macro\bxii@revoke@all{\bxii@revoke#1}%
}
\let\bxii@revoke@all\@empty
\def\bxii@revoke#1{\let#1=\@undefined}
%
\bxii@onlyinoneproc\bxii@srcname
%% \bxii@cleanup
\bxii@onlyinoneproc\bxii@cleanup
\def\bxii@cleanup{%
\bxii@onlyinoneproc\bxii@onlyinoneproc
\bxii@onlyinoneproc\bxii@revoke@all
\bxii@onlyinoneproc\bxii@revoke % must be the last
\bxii@revoke@all
\let\bxii@onetex@setup\@empty
}
%------------------- setup catcodes etc.
%% \bxii@latex@active
%% \bxii@onetex@active
\bxii@onlyinoneproc\bxii@latex@active
\bxii@onlyinoneproc\bxii@onetex@active
\begingroup
\catcode13=13 \catcode`1=13 %
\gdef\bxii@latex@active{\let^^M=\par \let1=\@undefined}%
\gdef\bxii@onetex@active{\let^^M=\bxii@cr \let1=\bxii@one}%
\endgroup
%% \bxii@set@catcodes{<start>}{<end>}{<value>}
\bxii@onlyinoneproc\bxii@set@catcodes
\def\bxii@set@catcodes#1#2#3{%
\@tempcnta=#1\relax
\loop
\catcode\@tempcnta=#3\relax
\ifnum \@tempcnta<#2\relax
\advance\@tempcnta\@ne
\repeat
}
%% \bxii@onetex@setup
\bxii@onlyinoneproc\bxii@onetex@setup
\def\bxii@onetex@setup{%
\catcode12=10
\catcode13=13
\bxii@set@catcodes{33}{255}{9}%
\catcode`1=13
\bxii@onetex@active
\bxii@oneproc@init
}
%% \bxii@latex@setup
\bxii@onlyinoneproc\bxii@latex@catcodes
\def\bxii@latex@setup{%
\catcode12=13
\catcode13=5
\bxii@set@catcodes{33}{34}{12}%
\bxii@set@catcodes{33}{34}{12}%
\catcode35=6
\catcode36=3
\catcode37=14
\catcode38=4
\catcode35=6
\catcode36=3
\catcode37=14
\catcode38=4
\bxii@set@catcodes{39}{64}{12}%
\bxii@set@catcodes{65}{90}{11}%
\catcode91=12
\catcode92=0
\catcode93=12
\catcode94=7
\catcode95=8
\catcode96=12
\bxii@set@catcodes{97}{122}{11}%
\catcode123=1
\catcode124=12
\catcode125=2
\catcode126=13
\catcode127=15
\bxii@set@catcodes{128}{255}{12}%
\bxii@latex@active
}
%------------------- decode procedure
%% \let\bxii@outfile
\let\bxii@outfile\@mainaux
%% \bxii@outname
% Temporary output file name.
\bxii@onlyinoneproc\bxii@set@outname
\def\bxii@outname{texput.one}
\def\bxii@set@outname{%
\edef\bxii@outname{\jobname.one}%
}
%% \bxii@oneproc@init
\bxii@onlyinoneproc\bxii@oneproc@init
\def\bxii@oneproc@init{%
\immediate\openout\bxii@outfile=\bxii@outname\relax
\count@=\z@
\let\bxii@line\@empty
}
%% \bxii@one
\bxii@onlyinoneproc\bxii@one
\def\bxii@one{%
\advance\count@\@ne
}
%% \bxii@cr
\bxii@onlyinoneproc\bxii@cr
\def\bxii@cr{%
\ifnum\count@=\z@
\expandafter\bxii@oneproc@fin
\else\ifnum\count@=10
\immediate\write\bxii@outfile{\bxii@line}%
\let\bxii@line\@empty
\count@=\z@
\else\ifnum\count@<128
\begingroup
\lccode`\Z=\count@
\lowercase{\xdef\bxii@line{\bxii@line Z}}%
\endgroup
\count@=\z@
\fi\fi\fi
}
%% \bxii@oneproc@fin
\bxii@onlyinoneproc\bxii@oneproc@fin
\def\bxii@oneproc@fin{%
\ifx\bxii@line\@empty\else
\immediate\write\bxii@outfile{\bxii@line}%
\let\bxii@line\@empty
\fi
\count@=\z@
\immediate\closeout\bxii@outfile
\edef\next{%
\noexpand\@@input\bxii@outname\space
}%
\bxii@latex@setup
\bxii@cleanup
\next
}
%------------------- attach hooks
%% \everyjob hook
\bxii@onlyinoneproc\bxii@endpkg@hook
\def\bxii@endpkg@hook{%
\bxii@set@outname
\bxii@onetex@setup
\@@input\bxii@srcname\space
\ifx\bxii@oneproc@fin\@undefined\else
\expandafter\bxii@oneproc@fin
\fi
\endinput
}
%------------------- all done
\endinput
%% EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment