Skip to content

Instantly share code, notes, and snippets.

@zr-tex8r
Created August 7, 2022 16:36
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/d9cbbfa2faf54a02cc80c44445a98152 to your computer and use it in GitHub Desktop.
Save zr-tex8r/d9cbbfa2faf54a02cc80c44445a98152 to your computer and use it in GitHub Desktop.
新しい画期的なLaTeX実装⛄
\input sclatex
\dump
%%
%% This is file 'sclatex.tex'.
%%
%% Copyright (c) 2022 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
%% This package is distributed under the MIT License.
%%
%
%--------------------------------------- prologue
%
%% avoid multiple loading
\csname\if11sclxLoaded\fi\endcsname%
\let\sclxLoaded\endinput%
%
%% check current format
\chardef\sclxEqCC\catcode61\catcode61\catcode48%
\chardef\sclxSpCC\catcode32\catcode32=10\relax%
\chardef\sclxFormat=0 % unknown
\ifnum\catcode35=12 \ifnum\catcode123=12 \ifnum\catcode125=12 %
\chardef\sclxFormat=1 % iniTeX
\fi\fi\fi%
\ifnum\catcode35=6 \ifnum\catcode123=1 \ifnum\catcode125=2 %
\def\sclxTempA{plain}\ifx\fmtname\sclxTempA%
\chardef\sclxFormat=2 % plain
\fi%
% but \fmtname of plain (u)pTeX is weird...
\def\sclxTempA{ptex}\ifx\fmtname\sclxTempA%
\chardef\sclxFormat=2 %
\fi%
\def\sclxTempA{uptex}\ifx\fmtname\sclxTempA%
\chardef\sclxFormat=2 %
\fi%
\fi\fi\fi%
\ifnum\sclxFormat=0 % quit when format is unknown
\begingroup \catcode123=1 \catcode125=2 \catcode58=12 %
\errhelp{This is fatal error. Process is aborted.}%
\errmessage{scLaTeX Error: Unsupported format}%
\endgroup%
\catcode61\sclxEqCC \catcode32\sclxSpCC%
\sclxLoaded\fi\relax%
%
% when in INI-mode, load plain.tex
\ifnum\sclxFormat=1 %
\endlinechar=13 \catcode13=5 %
\chardef\sclxEqCC=12 \chardef\sclxSpCC=10 % don't restore
\input plain %
\fi%
%
% code guards
\edef\sclxTempA{%
\catcode61=\the\sclxEqCC%
\catcode32=\the\sclxSpCC%
\catcode13=\the\catcode13%
\catcode33=\the\catcode33%
\catcode34=\the\catcode34%
\catcode39=\the\catcode39%
\catcode40=\the\catcode40%
\catcode41=\the\catcode41%
\catcode42=\the\catcode42%
\catcode43=\the\catcode43%
\catcode45=\the\catcode45%
\catcode46=\the\catcode46%
\catcode47=\the\catcode47%
\catcode58=\the\catcode58%
\catcode59=\the\catcode59%
\catcode60=\the\catcode60%
\catcode62=\the\catcode62%
\catcode63=\the\catcode63%
\catcode64=\the\catcode64%
\catcode91=\the\catcode91%
\catcode93=\the\catcode93%
\catcode94=\the\catcode94%
\catcode96=\the\catcode96%
\catcode124=\the\catcode124%
\endlinechar=\the\endlinechar%
\relax}%
\catcode13=5 \endlinechar=13 %
\catcode33=12 % <!>
\catcode34=12 % <">
\catcode39=12 % <'>
\catcode40=12 % <(>
\catcode41=12 % <)>
\catcode42=12 % <*>
\catcode43=12 % <+>
\catcode45=12 % <->
\catcode46=12 % <.>
\catcode47=12 % </>
\catcode58=12 % <:>
\catcode59=12 % <;>
\catcode60=12 % <<>
\catcode62=12 % <>>
\catcode63=12 % <?>
\catcode64=11 % <@>
\catcode91=12 % <[>
\catcode93=12 % <]>
\catcode94=7 % <^>
\catcode96=12 % <`>
\catcode124=12 % <|>
\let\sclx@restore@codes\sclxTempA
\let\sclxTempA\relax
%% declarations
\def\sclxFmtName{scLaTeX}
\def\sclxFmtVersion{2022-08-08}
\ifx\bxDebug\@undefined \long\def\bxDebug#1{} \fi
\def\sclx@debug#1{\bxDebug{\sclxFmtName> #1}}
%--------------------------------------- job start-up
%% \sclx@show@banner
\edef\sclx@show@banner{%
\immediate\write128{\sclxFmtName\space<\sclxFmtVersion>}%
}
%% show the banner
\ifnum\sclxFormat=1 % iniTeX
\everyjob\expandafter{\the\everyjob\sclx@show@banner}
\fi
\sclx@show@banner
%--------------------------------------- general
%% layout parameters
\let\sclxDVIDriver\relax
\newdimen\sclxPaperWidth
\newdimen\sclxPaperHeight
\newcount\sclxColumnCount
\def\sclxMufflerColor{red,blue}
%% packages
\input ifluatex.sty
\input ifpdf.sty
\input infwarerr.sty
\input kvdefinekeys.sty
\input kvsetkeys.sty
\input ltxcmds.sty
%% unique tokens
\def\sclx@end{\sclx@end@}
\let\sclx@mk\indent % unexpandable
%% variables
\newif\ifsclx@ok
\newif\ifsclx@process@ok
\newif\ifsclx@landscape
\newif\ifsclx@meta@column@count
\newcount\sclx@cnta
\newcount\sclx@cntb
\let\sclx@driver\relax
\let\sclx@option@list\relax
\let\sclx@class@name\relax
\let\sclx@metadata\relax
%% \sclx@org@end : primitive '\end'
\let\sclx@org@end\end
%% \sclx@typeout{<message>}
% NB. \typeout is equated to it if undefined.
\def\sclx@typeout#1{%
\begingroup
\immediate\write\sclx@term{#1}%
\endgroup
}
\chardef\sclx@term=\ifluatex 128 \else 16 \fi
\ifx\typeout\@undefined
\let\typeout\sclx@typeout
\fi
%% \sclx@cond\ifXXX...\fi{<true>}{<false>}
\ltx@gobbletwo\if\if \def\sclx@cond#1\fi{%
#1\expandafter\ltx@firstoftwo\else\expandafter\ltx@secondoftwo\fi
}
%% \sclx@check@same@str{<str1>}{<str2>}
% Sets switch sclx@ok.
\def\sclx@check@same@str#1#2{%
\sclx@okfalse
\begingroup
\edef\sclx@next{#1}\edef\sclx@next{\meaning\sclx@next}%
\edef\sclx@tmpa{#2}\edef\sclx@tmpa{\meaning\sclx@tmpa}%
\ifx\sclx@next\sclx@tmpa \aftergroup\sclx@oktrue \fi
\endgroup
}
%% \sclx@check@primitive\CS
% Sets switch sclx@ok.
\def\sclx@check@primitive#1{%
\sclx@okfalse
\begingroup
\edef\sclx@tmpa{\meaning#1}\edef\sclx@tmpb{\string#1}%
\ifx\sclx@tmpa\sclx@tmpb \aftergroup\sclx@oktrue \fi
\endgroup
}
%% \sclx@exit
% Stops reading this file.
% For safety it should be used either as:
% \sclx@exit%
% \sclx@exit\fi%
\def\sclx@exit{%
\sclxLoaded
\sclx@restore@codes
}
%--------------------------------------- error messages
%% \sclx@cute@oops / \sclx@shrieks
\begingroup
\def\do#1{\catcode`#1=12\relax}\def\nxt{\gdef\sclx@shrieks}
\catcode`\^^?=14 \catcode`\^^\=0 \catcode`\^^[=1 \catcode`\^^]=2
\endlinechar=10 \catcode10=12 \catcode96=7
\dospecials``\gdef``\sclx@cute@oops``[``?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! ____
! ___HHHH _____ ``\sclxFmtName ERROR!
! / . . \ |Oops!| Something is wrong!
! \ --- / |~~~~~
! V :#######: Y
! \/ o*"*\/
! { o }
! \_______/ Cheers!!``]``\nxt``[``?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]``?
``\endgroup% NICE!
%% \sclx@error{<message>}{<help>}
\def\sclx@error#1#2{%
\InfWarErr@GenericError
{\space\@spaces\@spaces\@spaces\@spaces}%
{\sclxFmtName\space Error: #1\sclx@error@a}%
{\empty\sclx@cute@oops\sclx@error@b}%
{#2}%
}
\def\sclx@error@a#1\empty{.^^J}
\def\sclx@error@b#1...{^^J\sclx@shrieks}
%% \sclx@fatal@error{<message>}
\def\sclx@fatal@error#1{%
\sclx@error{#1}%
{This is fatal error. Process is aborted.}%
\sclx@process@okfalse
}
%% \sclx@panic{<message>}
\def\sclx@panic#1{%
\sclx@error{#1}%
{This is fatal error. The current job is aborted.}%
\sclx@org@end
}
%% \sclx@warning{<message>}
\def\sclx@warning#1{%
\InfWarErr@GenericWarning
{\space\@spaces\@spaces\@spaces\@spaces}%
{\sclxFmtName\space Warning: #1}%
}
%% \sclx@warning@no@line{<message>}
\def\sclx@warning@no@line#1{%
\sclx@warning{#1\@gobble}%
}
%% \sclx@info{<message>}
\def\sclx@info#1{%
\InfWarErr@GenericInfo
{\space\space\@spaces\@spaces\@spaces}%
{\sclxFmtName\space Info: #1}%
}
%% \sclx@info@no@line{<message>}
\def\sclx@info@no@line#1{%
\sclx@info{#1\@gobble}%
}
%--------------------------------------- driver settings
%% driver constants
\chardef\sclx@driver@@unknown=0
\chardef\sclx@driver@@dvips=1
\chardef\sclx@driver@@dvipdfmx=2
\chardef\sclx@driver@@xetex=3
\chardef\sclx@driver@@pdftex=4
\chardef\sclx@driver@@luatex=5
%% \sclx@driver@name{<driver>}
\def\sclx@driver@name#1{%
\ifcase#1unknown%
\or dvips%
\or dvipdfmx%
\or xetex%
\or pdftex%
\or luatex%
\fi
}
%% \sclx@dvidriver@list
\def\sclx@dvidriver@list{%
\do{dvips}%
\do{xdvi}%
\do{dviout}%
\do{dvipdfmx}%
\do{dvipdfm}%
}
%% DVI-driver constants
\chardef\sclx@dvidriver@@dvips=\sclx@driver@@dvips
\chardef\sclx@dvidriver@@xdvi=\sclx@driver@@dvips
\chardef\sclx@dvidriver@@dviout=\sclx@driver@@dvips
\chardef\sclx@dvidriver@@dvipdfmx=\sclx@driver@@dvipdfmx
\chardef\sclx@dvidriver@@dvipdfm=\sclx@driver@@dvipdfmx
%% \sclx@dvidriver@default
\def\sclx@dvidriver@default{dvips}
%% \sclx@set@papersize
\let\sclx@set@papersize\relax
%% \sclx@set@papersize@inner
\let\sclx@set@papersize@inner\relax
%% check engine types
% Here \sclx@driver is (tentatively) set to \sclx@driver@@dvips
% when the engine is in normal DVI mode.
\sclx@check@primitive\eTeXversion\ifsclx@ok\else
% e-TeX is required (because TikZ needs it)
\sclx@fatal@error
{The TeX engine in use is not supported}
\sclx@exit\fi%
%---- Now e-TeX features can be used freely.
\let\sclx@driver\sclx@driver@@unknown
\ifpdf % in PDF-mode
\let\sclx@driver\sclx@driver@@pdftex
\ifluatex
\let\sclx@driver\sclx@driver@@luatex
\fi
\fi
\ifnum\sclx@driver=\sclx@driver@@unknown % not in PDF-mode
\let\sclx@driver\sclx@driver@@dvips
\sclx@check@primitive\XeTeXversion\ifsclx@ok
\let\sclx@driver\sclx@driver@@xetex
\fi
\fi
% check for unsupported engines
\sclx@check@primitive\VTeXversion\ifsclx@ok
\let\sclx@driver\sclx@driver@@unknown
\fi
\sclx@check@primitive\HINTversion\ifsclx@ok
\let\sclx@driver\sclx@driver@@unknown
\fi
\sclx@debug{check engine: type=\the\sclx@driver}
\ifnum\sclx@driver=\sclx@driver@@unknown
\sclx@fatal@error
{The TeX engine in use is not supported}%
\sclx@exit\fi%
%%<+> \sclxSetupDriver
\def\sclxSetupDriver{%
\global\let\sclxSetupDriver\relax
% re-set \sclx@driver according to \sclxDVIDriver
\sclx@process@oktrue
\if \ifnum\sclx@driver=\sclx@driver@@dvips F%
\else\ifx\sclxDVIDriver\relax F%
\else T\fi\fi T%
\sclx@fatal@error
{A driver option is used on the wrong engine:\MessageBreak
\space\space\sclxDVIDriver}%
\let\sclxDVIDriver\relax
\fi
\ifsclx@process@ok \ifnum\sclx@driver=\sclx@driver@@dvips
\ifx\sclxDVIDriver\relax
\let\sclxDVIDriver\sclx@dvidriver@default
\fi
\lettocs\sclx@tmpa{sclx@dvidriver@@\sclxDVIDriver}%
\ifdefined\sclx@tmpa
\let\sclx@driver\sclx@tmpa
\else % unknown name
\sclx@fatal@error
{An unknown driver name is given:\MessageBreak
\space\space\sclxDVIDriver}%
\fi
\fi\fi
\ifsclx@process@ok
\sclx@debug{driver: \sclx@driver@name\sclx@driver}%
% load TikZ
\edef\pgfsysdriver{pgfsys-\sclx@driver@name\sclx@driver.def}%
\sclx@suppress@newwrite
\input tikz.tex\relax
\sclx@unsuppress@newwrite
% enable papersize setter
\ifdefined\pdfpagewidth \ifdefined\pdfpageheight
\def\sclx@set@papersize{%
\pdfpagewidth=\sclxPaperWidth
\pdfpageheight=\sclxPaperHeight
}%
\fi\fi
\ifdefined\pagewidth \ifdefined\pageheight
\def\sclx@set@papersize{%
\pagewidth=\sclxPaperWidth
\pageheight=\sclxPaperHeight
}%
\fi\fi
\unless\ifx\sclxDVIDriver\relax
\def\sclx@set@papersize@inner{%
\special{papersize=\the\sclxPaperWidth,\the\sclxPaperHeight}%
}%
\fi
\fi
}
%--------------------------------------- general (e-TeX)
%% packages
\input texapi
%% \sclx@provide{<definer>}\CS
% Defines a stuff only when it is undefined.
\def\sclx@provide#1#2{%
\ifcommand#2{#1\sclx@next}{#1#2}%
}
%--------------------------------------- generate document
%% parameters
\def\sclxMinPaperEdge{32mm}
\def\sclxMinBodyEdge{60mm}
\def\sclxMaxMargin{20mm}
\def\sclxColumnRuleWidth{1pt}
\def\sclxColumnRuleColor{black!40}
\def\sclxEssentialRatio{0.85}
%% variables
\newdimen\sclx@col@width
\newdimen\sclx@col@height
\newdimen\sclx@hmargin
\newdimen\sclx@vmargin
\newdimen\sclx@ess@size
\let\sclx@color@count\relax
%\[sclx@color/<idx>]
%% errors
\def\sclx@error@too@small#1{%
\sclx@fatal@error
{The #1 is too small}%
}
\def\sclx@error@no@colors{%
\sclx@fatal@error
{No color is specified}%
}
%%<+> \sclxWriteDocument
\def\sclxWriteDocument{%
\sclxSetupDriver
\ifsclx@process@ok % if not ok then do nothing
\sclx@set@layout
\fi
\ifsclx@process@ok
\begingroup
\sclx@set@papersize
\shipout\vbox{%
\sclx@set@papersize@inner
\vskip-1in
\moveleft1in\vbox{%
\sclx@essential@page
}%
}%
\endgroup
\fi
}
%% \sclx@set@layout
\def\sclx@set@layout{%
\ifnum\sclxColumnCount<1
\sclxColumnCount=1
\else\ifnum\sclxColumnCount>8
\sclxColumnCount=8
\fi\fi
\ifdim\sclxPaperWidth<\sclxMinPaperEdge\relax
\sclx@error@too@small{paper width}%
\sclxPaperWidth=\sclxMinPaperEdge\relax
\fi
\ifdim\sclxPaperHeight<\sclxMinPaperEdge\relax
\sclx@error@too@small{paper height}%
\sclxPaperHeight=\sclxMinPaperEdge\relax
\fi
\sclx@set@layout@a\sclxPaperWidth\sclx@col@width\sclx@hmargin{width}%
\divide\sclx@col@width\sclxColumnCount
\sclx@set@layout@a\sclxPaperHeight\sclx@col@height\sclx@vmargin{height}%
\ifdim\sclx@col@width>\sclx@col@height
\sclx@ess@size=\sclxEssentialRatio\sclx@col@height
\else
\sclx@ess@size=\sclxEssentialRatio\sclx@col@width
\fi
\sclx@debug{column-width: \the\sclx@col@width}%
\sclx@debug{essential-size: \the\sclx@ess@size}%
% colors
\sclx@cnta=0
\edef\sclx@tmpa{\sclxMufflerColor,}%
\passexpanded\sclx@set@layout@b\sclx@tmpa
\ifnum\sclx@cnta=0
\sclx@error@no@colors
\fi
\chardef\sclx@color@count\sclx@cnta
\sclx@debug{color-count: \the\sclx@color@count}%
}
\def\sclx@set@layout@a#1#2#3#4{%
\ifdim#1<\sclxMinBodyEdge\relax
#3=0pt #2=#1\relax
\else
#2=\sclxMinBodyEdge #3=.5\dimexpr#1-#2\relax
\ifdim#3>\sclxMaxMargin\relax
#3=\sclxMaxMargin #2=\dimexpr#1-2#3\relax
\fi
\fi
\sclx@debug{#4: paper=\the#1; body=\the#2; margin=\the#3}%
}
\newfor\sclx@set@layout@b#1,{%
\ltx@ifblank{#1}{}{%else
\edefcs{sclx@color/\the\sclx@cnta}{\trim{#1}}%
\advance\sclx@cnta1
}%
\sclx@cond\ifnum\sclxColumnCount=\sclx@cnta\fi{\breakfor{}}%
}
%% \sclx@essential@page
\def\sclx@essential@page{%
\vskip\sclx@vmargin
\hbox{\hskip\sclx@hmargin
\sclx@cnta=0
\count@=\sclxColumnCount\relax
\loop\ifnum\count@>0
\begingroup
\passexpandedcs\sclx@essential@box{sclx@color/\the\sclx@cnta}%
\endgroup
\advance\count@-1
\ifnum\count@>0
\dimen@\sclxColumnRuleWidth\relax
\kern-.5\dimen@
\begingroup
\color{\sclxColumnRuleColor}%
\vrule width\dimen@ height\sclx@col@height depth\z@
\endgroup
\kern-.5\dimen@
\fi
\advance\sclx@cnta1
\ifnum\sclx@color@count=\sclx@cnta \sclx@cnta=0 \fi
\repeat
}%
}
%% \sclx@essential@box{<color>}
\def\sclx@essential@box#1{%
\sclx@debug{essential: muffler=#1}%
\vbox to \sclx@col@height{%
\vskip 0pt plus 2fil\relax
\hbox to \sclx@col@width{%
\hfil \sclxDrawEssential{\sclx@ess@size}{#1}\hfil
}%
\vskip 0pt plus 3fil\relax
}%
}
%--------------------------------------- PGF hacks
%% \sclx@suppress@newwrite
\def\sclx@suppress@newwrite{%
\letcstocs{sclx@saved@newwrite}{newwrite}%
\letcstocs{newwrite}{sclx@noop@newwrite}%
\letcstocs{sclx@saved@openout}{openout}%
\letcstocs{openout}{sclx@noop@openout}%
}
%% \sclx@unsuppress@newwrite
\def\sclx@unsuppress@newwrite{%
\letcstocs{newwrite}{sclx@saved@newwrite}%
\letcstocs{openout}{sclx@saved@openout}%
}
%% \sclx@noop@newwrite
\def\sclx@noop@newwrite#1{%
\let#1\ltx@minusone
}
%% \sclx@noop@openout
% MB. A delimiting space is assumed.
\def\sclx@noop@openout#1 {}
%--------------------------------------- the essential one
%%<+> \sclxDrawEssential{<size>}{<muffler-color>}
\def\sclxDrawEssential#1#2{%
\tikzpicture[x=#1,y=#1,line width=#1*0.013888,%
line join=round,line cap=round]
\useasboundingbox (0,0) rectangle (1,1);
\draw % body
(0.5,0.72) .. controls (0.64,0.72) and (0.76,0.65) ..
(0.76,0.55) .. controls (0.76,0.51) and (0.72,0.47) ..
(0.67,0.44) .. controls (0.79,0.41) and (0.84,0.32) ..
(0.84,0.25) .. controls (0.84,0.13) and (0.75,0.08) ..
(0.68,0.08) --
(0.32,0.08) .. controls (0.25,0.08) and (0.16,0.13) ..
(0.16,0.25) .. controls (0.16,0.32) and (0.21,0.41) ..
(0.33,0.44) .. controls (0.28,0.47) and (0.24,0.51) ..
(0.24,0.55) .. controls (0.24,0.65) and (0.36,0.72) ..
(0.5,0.72) --
cycle;
% eyes
\fill (0.40,0.56) circle (0.02 and 0.03);
\fill (0.60,0.56) circle (0.02 and 0.03);
% mouth
\draw (0.40,0.48) .. controls (0.45,0.45) and (0.55,0.45) .. (0.60,0.48);
\filldraw % hat
(0.58,0.90) --
(0.77,0.81) --
(0.74,0.61) .. controls (0.66,0.60) and (0.50,0.66) ..
(0.46,0.72) --
(0.58,0.90) --
cycle;
\filldraw % right arm
(0.20,0.31) .. controls (0.19,0.33) and (0.14,0.41) ..
(0.13,0.42) .. controls (0.12,0.43) and (0.10,0.43) ..
(0.07,0.44) .. controls (0.04,0.46) and (0.06,0.46) ..
(0.08,0.46) .. controls (0.09,0.46) and (0.11,0.44) ..
(0.12,0.44) .. controls (0.14,0.46) and (0.14,0.47) ..
(0.15,0.49) .. controls (0.16,0.51) and (0.16,0.49) ..
(0.16,0.48) .. controls (0.16,0.46) and (0.14,0.44) ..
(0.15,0.43) .. controls (0.16,0.42) and (0.21,0.35) ..
(0.22,0.33) .. controls (0.23,0.31) and (0.21,0.30) ..
(0.20,0.31) --
cycle;
\filldraw % left arm
(0.80,0.31) .. controls (0.81,0.33) and (0.86,0.41) ..
(0.87,0.42) .. controls (0.88,0.43) and (0.90,0.43) ..
(0.93,0.44) .. controls (0.96,0.46) and (0.94,0.46) ..
(0.92,0.46) .. controls (0.91,0.46) and (0.89,0.44) ..
(0.88,0.44) .. controls (0.86,0.46) and (0.86,0.47) ..
(0.85,0.49) .. controls (0.84,0.51) and (0.84,0.49) ..
(0.84,0.48) .. controls (0.84,0.46) and (0.86,0.44) ..
(0.85,0.43) .. controls (0.84,0.42) and (0.79,0.35) ..
(0.78,0.33) .. controls (0.77,0.31) and (0.79,0.30) ..
(0.80,0.31) --
cycle;
\filldraw[#2] % muffler
(0.27,0.48) .. controls (0.42,0.38) and (0.58,0.38) ..
(0.73,0.48) .. controls (0.75,0.46) and (0.76,0.44) ..
(0.77,0.41) .. controls (0.77,0.39) and (0.75,0.37) ..
(0.73,0.36) .. controls (0.74,0.33) and (0.74,0.31) ..
(0.76,0.26) .. controls (0.75,0.25) and (0.72,0.24) ..
(0.66,0.23) .. controls (0.66,0.27) and (0.65,0.30) ..
(0.63,0.34) .. controls (0.42,0.30) and (0.32,0.35) ..
(0.24,0.41) .. controls (0.25,0.45) and (0.26,0.47) ..
(0.27,0.48) --
cycle;
% buttons
\filldraw (0.50,0.16) circle (0.03);
\filldraw (0.50,0.26) circle (0.03);
% snow
\draw (0.07,0.28) circle (0.04);
\draw (0.13,0.55) circle (0.04);
\draw (0.08,0.68) circle (0.04);
\draw (0.23,0.76) circle (0.04);
\draw (0.42,0.89) circle (0.04);
\draw (0.74,0.89) circle (0.04);
\draw (0.88,0.73) circle (0.04);
\draw (0.92,0.53) circle (0.04);
\draw (0.94,0.23) circle (0.04);
\endtikzpicture
}
%--------------------------------------- bits of LaTeX
%% variables
%[sclx@env/<env>] : (pseudo-)environment starter
%% errors
\def\sclx@warn@ignore@cmd#1{%
\sclx@warning
{Command '\string#1' is ignored,\MessageBreak
since it is not *essential*}%
}
\def\sclx@warn@ignore@env#1{%
\sclx@warning
{Environment '#1' is ignored,\MessageBreak
since it is not *essential*}%
}
%% \sclx@check@star{<cont>}
% Sets switch sclx@ok.
\def\sclx@check@star#1{%
\def\sclx@next{#1}%
\sclx@okfalse
\ltx@ifnextchar*{\sclx@check@star@a}{\sclx@next}%
}
\def\sclx@check@star@a*{%
\sclx@oktrue
\sclx@next
}
%% \sclx@gobble@opt{<cont>}
\def\sclx@gobble@opt#1{%
\def\sclx@next{#1}%
\ltx@ifnextchar[{\sclx@gobble@opt@a}{\sclx@gobble@opt@a[]}%
}
\def\sclx@gobble@opt@a[#1]{%
\sclx@next
}
%% \begin{<env>}
\def\begin#1{%
\lettocs\sclx@tmpa{sclx@env/#1}%
\ifcommand\sclx@tmpa{%
\sclx@tmpa
}{%else
\sclx@warn@ignore@env{#1}%
}%
}
%% \end{<env>}
\def\end#1{%
% no check ;)
}
%% \DocumentMetadata{<metadata>,...}
\sclx@provide{\long\def}\DocumentMetadata#1{%
\def\sclx@metadata{#1}%
\sclx@process@metadata
}
%% \documentclass[<option>,...]{<class>}[<version>]
\sclx@provide\def\documentclass{%
\ltx@ifnextchar[{\sclx@documentclass@a}{\sclx@documentclass@a[]}%
}
\def\sclx@documentclass@a[#1]#2{%
\edef\sclx@option@list{#1}%
\edef\sclx@class@name{#2}%
\sclx@process@class
\sclx@leave@latexish
\sclxWriteDocument
\sclx@org@end % quit, so <version> need not be read
}
%% \RequirePackage[<option>,...]{<package>}[<version>]
\sclx@provide\def\RequirePackage{%
\sclx@warn@ignore@cmd\RequirePackage
\sclx@gobble@opt{\sclx@loadfile}%
}
\def\sclx@loadfile#1{%
\sclx@gobble@opt{}%
}
%% environment 'filecontents(*)'
\defcs{sclx@env/filecontents}{%
\sclx@filecontents{filecontents}%
}
\defcs{sclx@env/filecontents*}{%
\sclx@filecontents{filecontents*}%
}
\def\sclx@filecontents#1{%
\sclx@warn@ignore@env{#1}%
\begingroup
\sclx@filecontents@a{#1}%
\catcode13=12
\def\do##1{\catcode`##1=12 }\dospecials
\sclx@next
}
\setcatcodes{\\\{\}\^^M=12,\|=0,\[=1,\]=2}%
|def|sclx@filecontents@a#1[%
|def|sclx@next##1\end{#1}##2^^M[|endgroup]%
]%
|restorecatcodes%
%% environment 'document'
\defcs{sclx@env/document}{%
\sclx@panic
{The font size command \string\normalsize\space
is not defined:\MessageBreak
there is probably something wrong with the class file}%
}
%% \newcommand[*]\CS[<n>]{<code>}
%% \providecommand[*]\CS[<n>]{<code>}
% Ignored.
\sclx@provide\def\newcommand{%
\sclx@warn@ignore@cmd\newcommand
\sclx@check@star{\sclx@new@command}%
}
\sclx@provide\def\providecommand{%
\sclx@warn@ignore@cmd\newcommand
\sclx@check@star{\sclx@new@command}%
}
\def\sclx@new@command#1{%
\sclx@gobble@opt{\ltx@gobble}%
}
%% \renewcommand[*]\CS[<n>]{<code>}
% Redefines \CS only when it is defined and n is zero;
% otherwise does nothing.
\sclx@provide\def\renewcommand{%
\sclx@check@star{\sclx@renewcommand@a}%
}
\def\sclx@renewcommand@a#1{%
\ltx@ifnextchar[{\sclx@renewcommand@b#1}{\sclx@renewcommand@b#1[0]}%
}
\def\sclx@renewcommand@b#1[#2]{%
\sclx@cond\ifnum#2=0 \fi{%
\ifcommand#1{%
\ifsclx@ok \long \fi \def#1%
}{%else
\ltx@gobble
}%
}{% \renewcommand with arguments are deemed inessential
\sclx@warn@ignore@cmd\newcommand
\ltx@gobble
}%
}
%% \setlength{<length-cmd>}{<length>}
% Assigns only when the length command is defined.
\sclx@provide\def\setlength#1{%
\sclx@setlength@a#1\@undefined\sclx@end{#1}%
}
\def\sclx@setlength@a#1#2\sclx@end#3#4{%
\ifdefined#1% check the head of <length-cmd>
#3 #4\relax % assignment
\fi
}
%% \setcounter{<counter>}
% Assigns only when the counter is defined.
\sclx@provide\def\setcounter#1#2{%
\ifcsname c@#1\endcsname
\global\csname c@#1\endcsname#2\relax
\fi
}
%% \stop
\sclx@provide\def\stop{%
\sclx@leave@latexish
\usecs{bye}%
}
%% tracing commands
% NB. They are overwritten.
\def\showoverfull{%
\tracingonline\@ne
}
\def\loggingoutput{%
\tracingoutput\@ne
\showboxbreadth\maxdimen
\showboxdepth\maxdimen
\errorstopmode
}
\def\showoutput{%
\loggingoutput
\showoverfull
}
\def\loggingall{%
\tracingstats\tw@
\tracingpages\@ne
\tracinglostchars\@ne
\tracingparagraphs\@ne
\errorcontextlines\maxdimen
\loggingoutput
\tracingmacros\tw@
\tracingcommands\tw@
\tracingrestores\@ne
}
\def\tracingall{%
\showoverfull
\loggingall
}
\def\tracingnone{%
\tracingonline\z@
\tracingcommands\z@
\showboxdepth\m@ne
\showboxbreadth\m@ne
\tracingoutput\z@
\errorcontextlines\m@ne
\tracingrestores\z@
\tracingparagraphs\z@
\tracingmacros\z@
\tracinglostchars\@ne
\tracingpages\z@
\tracingstats\z@
}
\def\hideoutput{%
\tracingoutput\z@
\showboxbreadth\m@ne
\showboxdepth\m@ne
\tracingonline\m@ne
}
\tracingnone
\tracingstats=1 % as LaTeX does...
%% counter 'errorcontextlines'
\let\c@errorcontextlines\errorcontextlines
%% miscellanea
\sclx@provide\def\makeatletter{\catcode`\@11\relax}
\sclx@provide\def\makeatother{\catcode`\@12\relax}
\sclx@provide\def\listfiles{\sclx@warn@ignore@cmd\listfiles}
\sclx@provide\def\nofiles{\sclx@warn@ignore@cmd\nofiles}
%--------------------------------------- metadata processor
%% \sclx@process@metadata
\def\sclx@process@metadata{%
\kv@set@family@handler{metadata}{%
% ignore all unknown keys
}%
\passexpanded{\kvsetkeys{metadata}}{\sclx@metadata}%
}
%% 'backend'
\kv@define@key{metadata}{backend}{%
\ltx@ifblank{#1}{}{%else
\edef\sclxDVIDriver{#1}%
\sclx@debug{metadata: backend=\sclxDVIDriver}%
}%
}
%% 'muffler' (NICE!)
\kv@define@key{metadata}{muffler}{%
\edef\sclxMufflerColor{#1}%
\sclx@debug{metadata: muffler=\sclxMufflerColor}%
}
%% 'columns'
\kv@define@key{metadata}{columns}{%
\sclxColumnCount=#1\relax
\sclx@meta@column@counttrue
\sclx@debug{metadata: columns=\the\sclxColumnCount}%
}
%--------------------------------------- class processors
%% variables
\let\sclx@bsize@name\relax
\chardef\sclx@iso@bsize=0
%\[sclx@cproc/<class>] : class processors
%% \sclx@process@class
\def\sclx@process@class{%
\lettocs\sclx@next{sclx@cproc/\sclx@class@name}%
\unless\ifdefined\sclx@next
\lettocs\sclx@next{sclx@cproc/*default*}%
\fi
\sclx@typeout{Document Class: \sclx@class@name}%
\sclx@next
}
%% \sclx@declare@class@processor{<class>}{<code>}
\def\sclx@declare@class@processor#1{%
\defcs{sclx@cproc/#1}%
}
%% \sclx@copy@class@processor{<class1>}{<class2>}
\def\sclx@copy@class@processor#1#2{%
\letcstocs{sclx@cproc/#1}{sclx@cproc/#2}%
}
%% \sclx@define@key{<key>}[<default>]{<code>}
\def\sclx@define@key#1{%
\sclx@debug{class key declared: #1}%
\kv@define@key{class}{#1}%
}
\kv@set@family@handler{class}{%
% ignore all unknown keys
}%
%% \sclx@define@dumbkey{<key>}{<code>}
\def\sclx@define@dumbkey#1#2{%
\sclx@define@key{#1}[\sclx@end]{%
\ifx\sclx@end##1#2\fi% process if value is absent
}% otherwise ignore
}
%% \sclx@define@paperkey{<key>}{<ps-name>}
\def\sclx@define@paperkey#1#2{%
\sclx@define@dumbkey{#1}{\usecs{sclx@ps/#2}}%
}
%% \sclx@define@kosokey{<key>}{<true>}{<false>}
\chardef\sclx@kosovalue@@true=1
\chardef\sclx@kosovalue@@on=1
\chardef\sclx@kosovalue@@yes=1
\chardef\sclx@kosovalue@@false=0
\chardef\sclx@kosovalue@@off=0
\chardef\sclx@kosovalue@@no=0
\def\sclx@define@kosokey#1#2#3{%
\sclx@define@key{#1}[true]{%
\lettocs\sclx@tmpa{sclx@kosovalue@@##1}%
\ifcase\ifdefined\sclx@tmpa\sclx@tmpa\else\ltx@minusone\fi
#3% false
\or #2% true
\fi
}%
}
%% \sclx@execute@keys{<key>=<value>,...}
\def\sclx@execute@keys{%
\kvsetkeys{class}%
}
%% \sclx@process@keys
\def\sclx@process@keys{%
\passexpanded\sclx@execute@keys{\sclx@option@list}%
\unless\ifx\sclx@bsize@name\relax
\sclx@adjust@bsize
\fi
\ifsclx@landscape
\sclx@debug{landscape applied}%
\sclx@swap@paper@size@edges
\fi
}
%% \sclx@define@landscape@keys
\def\sclx@define@landscape@keys{%
\sclx@define@dumbkey{landscape}{\sclx@landscapetrue}%
\sclx@define@dumbkey{portrait}{\sclx@landscapefalse}%
}
%% \sclx@define@column@keys
\def\sclx@define@column@keys{%
\sclx@define@dumbkey{onecolumn}{\sclx@set@column@count{1}}%
\sclx@define@dumbkey{twocolumn}{\sclx@set@column@count{2}}%
}
%% \sclx@define@paper@keys@std
\def\sclx@define@paper@keys@std{%
\def\do##1{\sclx@define@paperkey{##1paper}{##1}}%
\do{a3}\do{a4}\do{a5}\do{a6}\do{b4}\do{b5}\do{b6}%
\do{letter}\do{legal}\do{executive}%
}
%% \sclx@define@paper@keys@ja
\def\sclx@define@paper@keys@ja{%
\def\do##1{\sclx@define@paperkey{##1paper}{##1}}%
\do{a3}\do{a4}\do{a5}\do{a6}\do{letter}\do{legal}\do{executive}%
\def\do##1{\sclx@define@paperkey{##1}{##1}}%
\do{b4j}\do{b5j}\do{a4var}\do{b5var}%
\def\do##1{\sclx@define@paperkey{##1paper}{##1j}}%
\do{b4}\do{b5}\do{b6}%
\def\do##1{\sclx@define@paperkey{##1j}{##1}}%
\do{a4}\do{a5}%
}
%% \sclx@define@driver@keys
\def\sclx@define@driver@keys{%
\def\do##1{\sclx@define@dumbkey{##1}{\def\sclxDVIDriver{##1}}}%
\sclx@dvidriver@list
}
%% \sclx@set@paper@size{<width>}{<height>}
\def\sclx@set@paper@size#1#2{%
\sclx@debug{papersize set: width=#1, height=#2}%
\sclxPaperWidth=#1\relax
\sclxPaperHeight=#2\relax
\let\sclx@paper@size@name\relax
}%
%% \sclx@swap@paper@size@edges
\def\sclx@swap@paper@size@edges{%
\dimen@=\sclxPaperWidth
\sclxPaperWidth=\sclxPaperHeight
\sclxPaperHeight=\dimen@
}
%% \sclx@adjust@bsize
\def\sclx@adjust@bsize{%
\sclx@debug{adjust bsize: \number\sclx@iso@bsize}%
\ifnum\sclx@iso@bsize=0
\usecs{sclx@ps/\sclx@bsize@name j}%
\fi
}
%% \sclx@set@column@count{<count>}
\def\sclx@set@column@count#1{%
\unless\ifsclx@meta@column@count
\sclxColumnCount=#1\relax
\fi
}%
%% \sclx@if@two@args{<arg>}{<true>}{<false>}
\def\sclx@if@two@args#1{%
\sclx@if@two@args@a#1{\sclx@mk}{}\sclx@end
}
\def\sclx@if@two@args@a#1#{%
\ltx@ifempty{#1}{\sclx@if@two@args@b}{\sclx@if@two@args@c}%
}
\def\sclx@if@two@args@b#1#2#3#4\sclx@end{%
\sclx@cond\ifx\sclx@mk#3\fi
}
\def\sclx@if@two@args@c#1\sclx@end{%
\ltx@secondoftwo
}
%% the default class
\sclx@declare@class@processor{*default*}{%
\sclx@define@driver@keys
\sclx@define@paper@keys@std
\sclx@define@landscape@keys
\sclx@define@column@keys
\sclx@execute@keys{onecolumn,a4paper,portrait}%
\sclx@process@keys
}
%% classes for Japanese documents
\sclx@declare@class@processor{jsarticle}{%
\sclx@define@dumbkey{slide}{\sclx@landscapetrue}%
\sclx@process@ja@classes
}
\sclx@declare@class@processor{jsreport}{%
\sclx@process@ja@classes
}
\sclx@declare@class@processor{jsbook}{%
\sclx@process@ja@classes
}
\def\sclx@process@ja@classes{%
\sclx@define@driver@keys
\sclx@define@paper@keys@ja
\sclx@define@landscape@keys
\sclx@define@column@keys
\sclx@execute@keys{onecolumn,a4paper,portrait}%
\sclx@process@keys
}
\sclx@copy@class@processor{ltjsarticle}{jsarticle}
\sclx@copy@class@processor{ltjsreport}{jsreport}
\sclx@copy@class@processor{ltjsbook}{jsbook}
\sclx@copy@class@processor{jarticle}{jsarticle}
\sclx@copy@class@processor{jreport}{jsreport}
\sclx@copy@class@processor{jbook}{jsbook}
\sclx@copy@class@processor{ltjarticle}{jsarticle}
\sclx@copy@class@processor{ltjreport}{jsreport}
\sclx@copy@class@processor{ltjbook}{jsbook}
% maybe tate classes should be supported more appropriately...
\sclx@copy@class@processor{tarticle}{jsarticle}
\sclx@copy@class@processor{treport}{jsreport}
\sclx@copy@class@processor{tbook}{jsbook}
\sclx@copy@class@processor{lttarticle}{jsarticle}
\sclx@copy@class@processor{lttreport}{jsreport}
\sclx@copy@class@processor{lttbook}{jsbook}
%% class 'jlreq'
\sclx@declare@class@processor{jlreq}{%
\sclx@define@driver@keys
\sclx@define@paper@keys@jlreq
\sclx@define@landscape@keys
\sclx@define@column@keys
\sclx@execute@keys{onecolumn,a4paper,portrait}%
\sclx@process@keys
}
\def\sclx@define@paper@keys@jlreq{%
\def\do##1{\sclx@define@paperkey{##1paper}{##1}}%
\do{a3}\do{a4}\do{a5}\do{a6}%
\do{b4}\do{b5}\do{b6}%
\do{letter}\do{legal}\do{executive}%
% 'paper=<size>'
\sclx@define@key{paper}{%
\ifcs{sclx@psopt/##1}{% paper size name
\usecs{sclx@ps/\usecs{sclx@psopt/##1}}%
}{\ifcontains{,}{##1}{% values
\splitstringat{,}{##1}{\sclx@set@paper@size}%
}{%else
\@ClassError\sclx@class@name
{The paper ##1 is unknown}%
{\@ehc}%
}}%
}%
\def\sclx@next##1{\defcs{sclx@psopt/##1}}%
\def\do##1##2##3##4##5{%
\if\if##1AT\else\if##1BT\else\if##1CT\else F\fi\fi\fi T%[A/B/C]
\sclx@next{##2paper}{##2}%
\sclx@next{##2}{##2}%
\uppercase{\sclx@next{##2}}{##2}%
\else\if\if##1JT\else\if##1VT\else F\fi\fi T%[J/V]
\sclx@next{##2}{##2}%
\else\if##1U%[U]
\sclx@next{##2paper}{##2}%
\sclx@next{##2}{##2}%
\fi\fi\fi
}%
\sclx@paper@size@list
}
%% classes in BXjscls
\sclx@declare@class@processor{bxjsarticle}{%
\sclx@define@driver@keys
\sclx@define@paper@keys@bxjs
\sclx@define@landscape@keys
\sclx@define@column@keys
\sclx@execute@keys{onecolumn,a4paper,portrait}%
\sclx@process@keys
}
\def\sclx@define@paper@keys@bxjs{%
\def\do##1##2##3##4##5{%
\if##1A%[A]
\sclx@define@paperkey{##2paper}{##2}%
\sclx@define@paperkey@bxjs{##2}{##2}%
\else\if##1B%[B]
\sclx@define@dumbkey{##2paper}{%
\usecs{sclx@ps/##2}%
\def\sclx@bsize@name{##2}%
}%
\sclx@define@paperkey@bxjs{##2}{##2}%
\else\if\if##1CT\else\if##1UT\else F\fi\fi T%[C/U]
\sclx@define@paperkey{##2paper}{##2}%
\else\if\if##1VT\else\if##1XT\else F\fi\fi T%[V/X]
\sclx@define@paperkey{##2paper}{##2}%
\sclx@define@paperkey{##2}{##2}%
\else\if##1J%[J}
\sclx@define@paperkey{##2}{##2}%
\fi\fi\fi\fi\fi
}%
\sclx@paper@size@list
\sclx@define@dumbkey{iso-bsize}{\chardef\sclx@iso@bsize=1 }%
% 'paper=<size>'
\sclx@define@key{paper}{%
\ifcontains{,}{##1}{% width,height
\splitstringat{,}{##1}{\sclx@set@paper@size}%
}{\ifcontains{*}{##1}{% width*height
\splitstringat{*}{##1}{\sclx@set@paper@size}%
}{\sclx@if@two@args{##1}{% {width}{height}%
\sclx@set@paper@size##1%
}{}}}% ignored
}%
}
\def\sclx@define@paperkey@bxjs#1#2{%
\uppercase{\def\sclx@tmpa{#1}}%
\sclx@define@paperkey{\sclx@tmpa paper}{#2}%
}
\sclx@copy@class@processor{bxjsreport}{bxjsarticle}
\sclx@copy@class@processor{bxjsbook}{bxjsarticle}
\sclx@copy@class@processor{bxjsslide}{bxjsarticle}
%% classes in KOMA-Script
\sclx@declare@class@processor{scrartcl}{%
\sclx@define@driver@keys
\sclx@define@paper@keys@koma
\sclx@define@column@keys@koma
\sclx@execute@keys{onecolumn,a4paper,portrait}%
\sclx@process@keys
}
\def\sclx@define@column@keys@koma{%
\sclx@define@kosokey{onecolumn}{\sclx@set@column@count{1}}{}%
\sclx@define@kosokey{twocolumn}{%
\sclx@set@column@count{2}%
}{%else
\sclx@set@column@count{1}%
}%
}
\def\sclx@define@paper@keys@koma{%
\def\do##1{%
\sclx@define@kosokey{##1paper}{\usecs{sclx@ps/##1}}{}%
}%
\do{a4}\do{a5}\do{b5}%
\do{letter}\do{legal}\do{executive}%
\sclx@define@kosokey{portrait}{\sclx@landscapefalse}{}%
\sclx@define@kosokey{landscape}{\sclx@landscapetrue}{}%
% 'paper=<size>'
\sclx@define@key{paper}{%
\ifcs{sclx@psopt/##1}{% paper size name
\usecs{sclx@ps/\usecs{sclx@psopt/##1}}%
}{\ifcs{sclx@psoptl/##1}{% landscape
\usecs{sclx@psoptl/##1}%
}{\ifcontains{:}{##1}{% width:height
\splitstringat{:}{##1}{\sclx@set@paper@size@koma}%
}{}}}% ignored
}%
\def\sclx@next##1{\defcs{sclx@psopt/##1}}%
\def\do##1##2##3##4##5{%
\if\if##1AT\else\if##1BT\else\if##1CT\else\if##1DT\else
F\fi\fi\fi\fi T%[A/B/C/D]
\sclx@next{##2}{##2}%
\uppercase{\sclx@next{##2}}{##2}%
\else\if##1U%[U]
\sclx@next{##2}{##2}%
\fi\fi
}%
\sclx@paper@size@list
\defcs{sclx@psoptl/portrait}{\sclx@landscapefalse}%
\defcs{sclx@psoptl/landscape}{\sclx@landscapetrue}%
\defcs{sclx@psoptl/seascape}{\sclx@landscapetrue}%
}
\def\sclx@set@paper@size@koma#1#2{%
\sclx@set@paper@size{#1}{#2}%
\ifdim\sclxPaperWidth>\sclxPaperHeight
\sclx@swap@paper@size@edges
\fi
}
\sclx@copy@class@processor{scrreprt}{scrartcl}
\sclx@copy@class@processor{scrbook}{scrartcl}
\sclx@copy@class@processor{scrlttr2}{scrartcl}
\sclx@copy@class@processor{scrarticle}{scrartcl}
\sclx@copy@class@processor{scrreport}{scrreprt}
\sclx@copy@class@processor{scrletter}{scrartcl}
%% class 'beamer'
\sclx@declare@class@processor{beamer}{%
\sclx@define@driver@keys
\sclx@define@paper@keys@beamer
\sclx@execute@keys{aspectratio=43}%
\sclx@process@keys
}
\def\sclx@define@paper@keys@beamer{%
\sclx@define@key{aspectratio}{\usecs{sclx@ar/##1}}%
\defcs{sclx@ar/2013}{\sclx@set@paper@size{140mm}{91mm}}%
\defcs{sclx@ar/1610}{\sclx@set@paper@size{160mm}{100mm}}%
\defcs{sclx@ar/169}{\sclx@set@paper@size{160mm}{90mm}}%
\defcs{sclx@ar/149}{\sclx@set@paper@size{140mm}{90mm}}%
\defcs{sclx@ar/141}{\sclx@set@paper@size{148.5mm}{105mm}}%
\defcs{sclx@ar/54}{\sclx@set@paper@size{125mm}{100mm}}%
\defcs{sclx@ar/43}{\sclx@set@paper@size{128mm}{96mm}}%
}
%% class 'minimal'
\sclx@declare@class@processor{minimal}{%
\kv@set@family@handler{class}{%
\def\sclxDVIDriver{##1}%
}%
\sclx@process@keys
}
%--------------------------------------- paper sizes
%% \sclx@paper@size@list
% List of \do{<kind>}{<name>}{<width>}{<height>}{<unit>}.
\def\sclx@paper@size@list{%
\do{A}{a0}{841}{1189}{mm}%
\do{A}{a1}{594}{841}{mm}%
\do{A}{a2}{420}{594}{mm}%
\do{A}{a3}{297}{420}{mm}%
\do{A}{a4}{210}{297}{mm}%
\do{A}{a5}{148}{210}{mm}%
\do{A}{a6}{105}{148}{mm}%
\do{A}{a7}{74}{105}{mm}%
\do{A}{a8}{52}{74}{mm}%
\do{A}{a9}{37}{52}{mm}%
\do{A}{a10}{26}{37}{mm}%
\do{B}{b0}{1000}{1414}{mm}%
\do{B}{b1}{707}{1000}{mm}%
\do{B}{b2}{500}{707}{mm}%
\do{B}{b3}{353}{500}{mm}%
\do{B}{b4}{250}{353}{mm}%
\do{B}{b5}{176}{250}{mm}%
\do{B}{b6}{125}{176}{mm}%
\do{B}{b7}{88}{125}{mm}%
\do{B}{b8}{62}{88}{mm}%
\do{B}{b9}{44}{62}{mm}%
\do{B}{b10}{31}{44}{mm}%
\do{C}{c0}{917}{1297}{mm}%
\do{C}{c1}{648}{917}{mm}%
\do{C}{c2}{458}{648}{mm}%
\do{C}{c3}{324}{458}{mm}%
\do{C}{c4}{229}{324}{mm}%
\do{C}{c5}{162}{229}{mm}%
\do{C}{c6}{114}{162}{mm}%
\do{C}{c7}{81}{114}{mm}%
\do{C}{c8}{57}{81}{mm}%
\do{C}{c9}{40}{57}{mm}%
\do{C}{c10}{28}{40}{mm}%
\do{D}{d0}{771}{1090}{mm}%
\do{D}{d1}{545}{771}{mm}%
\do{D}{d2}{385}{545}{mm}%
\do{D}{d3}{272}{385}{mm}%
\do{D}{d4}{192}{272}{mm}%
\do{D}{d5}{136}{192}{mm}%
\do{D}{d6}{96}{136}{mm}%
\do{D}{d7}{68}{96}{mm}%
\do{D}{d8}{48}{68}{mm}%
\do{J}{b0j}{1030}{1456}{mm}%
\do{J}{b1j}{728}{1030}{mm}%
\do{J}{b2j}{515}{728}{mm}%
\do{J}{b3j}{364}{515}{mm}%
\do{J}{b4j}{257}{364}{mm}%
\do{J}{b5j}{182}{257}{mm}%
\do{J}{b6j}{128}{182}{mm}%
\do{J}{b7j}{91}{128}{mm}%
\do{J}{b8j}{64}{91}{mm}%
\do{J}{b9j}{45}{64}{mm}%
\do{J}{b10j}{32}{45}{mm}%
\do{V}{a4var}{210}{283}{mm}%
\do{V}{b5var}{182}{230}{mm}%
\do{V}{hagaki}{100}{148}{mm}%
\do{U}{ansia}{8.5}{11}{in}%
\do{U}{ansib}{11}{17}{in}%
\do{U}{ansic}{17}{22}{in}%
\do{U}{ansid}{22}{34}{in}%
\do{U}{ansie}{34}{44}{in}%
\do{U}{letter}{8.5}{11}{in}%
\do{U}{legal}{8.5}{14}{in}%
\do{U}{executive}{7.25}{10.5}{in}%
\do{X}{screen}{225}{180}{mm}%
}
%% \[sclx@ps/<name>]: paper sizes
\def\do#1#2#3#4#5{%
\defcs{sclx@ps/#2}{\sclx@set@paper@size{#3#5}{#4#5}}%
}
\sclx@paper@size@list
%--------------------------------------- enter LaTeXish
%% errors
\def\sclx@error@bad@par{%
\sclx@panic
{Missing \string\begin{document}}%
}
%% \sclx@prev@font
\passexpandednobraces{\let\sclx@prev@font}{\the\font}
%% \sclx@leave@latexish
% Rolls back a bit of LaTeXish emulations, so as to avoid
% chaos caused by some module judging LaTeX is running.
\def\sclx@leave@latexish{%
\let\RequirePackage\@undefined
\let\end\sclx@org@end
\sclx@prev@font
\everypar{}%
}
%% enter LaTeXish
\everypar{\sclx@error@bad@par}
\nullfont
%--------------------------------------- all done
\sclx@exit%
%% EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment