% This is the file plainenc.tex of the T2 package. % Copyright 1997-1999, 2003 Werner Lemberg, Vladimir Volovich % and any individual authors listed elsewhere in package files. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % 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 2003/12/01 or later. % % This file defines some commands for Plain TeX, so that it is able to % read (and interpret accordingly) some LaTeX files (unchanged), such as % inputenc.sty, font encoding definition files (lcyenc.def, t2aenc.def, % t1enc.def, etc.), and various input encoding definition files % (koi8-r.def, latin1.def, etc.). % % These definitions are the `minimal' possible. Probably, some % extensions will be needed. %\ProvidesFile{plainenc.tex}[1999/12/15 v0.1 inputenc support for Plain TeX] \ifx\inputencoding\undefined\else\expandafter\endinput\fi \chardef\atcatcode=\catcode`\@ \catcode`\@=11 % load definitions from BABEL's plain.def (\adddialect should now be defined) \ifx\adddialect\undefined\let\adddialect\relax\let\protect\relax\fi \input plain.def \def\NeedsTeXFormat#1[#2]{} \def\ProvidesFile#1{% \begingroup \catcode`\ 10 % \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}} \def\@providesfile#1[#2]{% \wlog{File: #1 #2}% \expandafter\xdef\csname ver@#1\endcsname{#2}% \endgroup} \let\ProvidesPackage\ProvidesFile % better than #1[#2] -> {} %\def\DeclareOption#1#2{\def\@OptionBody{#2}} %\def\ProcessOptions{\@OptionBody} \def\DeclareOption#1#2{} \def\ProcessOptions{} \newlinechar`\^^J \def\MessageBreak{^^J} \let\@empty\empty \long\def\@gobbletwo#1#2{} \let\@inmathwarn\@gobble \def\PackageWarning#1#2{\immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}} \def\PackageWarningNoLine#1#2{\PackageWarning{#1}{#2\@gobble}} \def\on@line{ on input line \the\inputlineno} \def\PackageError#1#2#3{\begingroup\let\protect\string \errmessage{Package #1 Error: #2.^^J}\endgroup} \def\@latex@error#1{\PackageError{plainenc}{#1}{}} \def\@latex@info#1{\wlog{Info: #1}} \def\DeclareFontEncoding#1#2#3{% \expandafter\let\csname#1-cmd\endcsname\@current@cmd % \expandafter\let\csname#1-tmcmd\endcsname\@current@tmcmd \def\LastDeclaredEncoding{#1}} % special math setup is unneeded if only one font encoding is used \def\@current@cmd#1{% \ifx\protect\@typeset@protect \else \noexpand#1\expandafter\@gobble \fi} \def\DeclareFontSubstitution#1#2#3#4{} \def\DeclareErrorFont#1#2#3#4#5{} \def\DeclareSymbolFont#1#2#3#4#5{} \def\SetSymbolFont#1#2#3#4#5#6{} \def\DeclareSymbolFontAlphabet#1#2{} \def\DeclareMathAlphabet#1#2#3#4#5{} \def\SetMathAlphabet#1#2#3#4#5#6{} \def\DeclareMathSymbol#1#2#3#4{% simplified definition \count@=#4 \advance\count@ "7000 \mathchardef#1\count@} \def\@unexpandable@protect{\noexpand\protect\noexpand} %\let\protect\@typeset@protect \def\protected@edef{% \let\@@protect\protect \let\protect\@unexpandable@protect \afterassignment\restore@protect \@edef} \def\protected@xdef{% \let\@@protect\protect \let\protect\@unexpandable@protect \afterassignment\restore@protect \@xdef} \def\restore@protect{\let\protect\@@protect} \let\@edef\edef \let\@xdef\xdef % redefine \input to be compatible with LaTeX (for inputenc.sty) \ifx\@@input\@undefined\let\@@input\input\fi \def\input{\@ifnextchar\bgroup\@iinput\@@input} \def\@iinput#1{\@@input#1 } % This is a simplified definition % this is used in cyrillic encoding definition files \def\@ifundefined#1{% \expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi} \long\def\@secondoftwo#1#2{#2} % support for uppercase/lowercase \let\@uppercase\uppercase \let\@lowercase\lowercase \newtoks\@uclctoks \DeclareRobustCommand\uppercas@{\afterassignment\upperc@se\@uclctoks} \DeclareRobustCommand\lowercas@{\afterassignment\lowerc@se\@uclctoks} \def\upperc@se{{% \def\i{I}\def\j{J}% \def\reserved@a##1##2{\let##1##2\reserved@a}% \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% \protected@edef\reserved@a{\@uppercase\expandafter{\the\@uclctoks}}% \reserved@a}} \def\lowerc@se{{% \def\reserved@a##1##2{\let##2##1\reserved@a}% \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% \protected@edef\reserved@a{\@lowercase\expandafter{\the\@uclctoks}}% \reserved@a}} \def\@uclclist{\oe\OE\o\O\ae\AE\dh\DH\dj\DJ\l\L\ng\NG\ss\SS\th\TH \cyra\CYRA\cyrabhch\CYRABHCH\cyrabhchdsc\CYRABHCHDSC\cyrabhdze \CYRABHDZE\cyrabhha\CYRABHHA\cyrae\CYRAE\cyrb\CYRB\cyrbyus \CYRBYUS\cyrc\CYRC\cyrch\CYRCH\cyrchldsc\CYRCHLDSC\cyrchrdsc \CYRCHRDSC\cyrchvcrs\CYRCHVCRS\cyrd\CYRD\cyrdelta\CYRDELTA \cyrdje\CYRDJE\cyrdze\CYRDZE\cyrdzhe\CYRDZHE\cyre\CYRE\cyreps \CYREPS\cyrerev\CYREREV\cyrery\CYRERY\cyrf\CYRF\cyrfita \CYRFITA\cyrg\CYRG\cyrgdsc\CYRGDSC\cyrgdschcrs\CYRGDSCHCRS \cyrghcrs\CYRGHCRS\cyrghk\CYRGHK\cyrgup\CYRGUP\cyrh\CYRH \cyrhdsc\CYRHDSC\cyrhhcrs\CYRHHCRS\cyrhhk\CYRHHK\cyrhrdsn \CYRHRDSN\cyri\CYRI\cyrie\CYRIE\cyrii\CYRII\cyrishrt\CYRISHRT \cyrishrtdsc\CYRISHRTDSC\cyrizh\CYRIZH\cyrje\CYRJE\cyrk\CYRK \cyrkbeak\CYRKBEAK\cyrkdsc\CYRKDSC\cyrkhcrs\CYRKHCRS\cyrkhk \CYRKHK\cyrkvcrs\CYRKVCRS\cyrl\CYRL\cyrldsc\CYRLDSC\cyrlhk \CYRLHK\cyrlje\CYRLJE\cyrm\CYRM\cyrmdsc\CYRMDSC\cyrmhk\CYRMHK \cyrn\CYRN\cyrndsc\CYRNDSC\cyrng\CYRNG\cyrnhk\CYRNHK\cyrnje \CYRNJE\cyrnlhk\CYRNLHK\cyro\CYRO\cyrotld\CYROTLD\cyrp\CYRP \cyrphk\CYRPHK\cyrq\CYRQ\cyrr\CYRR\cyrrdsc\CYRRDSC\cyrrhk \CYRRHK\cyrrtick\CYRRTICK\cyrs\CYRS\cyrsacrs\CYRSACRS \cyrschwa\CYRSCHWA\cyrsdsc\CYRSDSC\cyrsemisftsn\CYRSEMISFTSN \cyrsftsn\CYRSFTSN\cyrsh\CYRSH\cyrshch\CYRSHCH\cyrshha\CYRSHHA \cyrt\CYRT\cyrtdsc\CYRTDSC\cyrtetse\CYRTETSE\cyrtshe\CYRTSHE \cyru\CYRU\cyrushrt\CYRUSHRT\cyrv\CYRV\cyrw\CYRW\cyry\CYRY \cyrya\CYRYA\cyryat\CYRYAT\cyryhcrs\CYRYHCRS\cyryi\CYRYI\cyryo \CYRYO\cyryu\CYRYU\cyrz\CYRZ\cyrzdsc\CYRZDSC\cyrzh\CYRZH \cyrzhdsc\CYRZHDSC} \def\PROTECT{% \let\uppercase\uppercas@\let\lowercase\lowercas@ \let\edef\protected@edef\let\xdef\protected@xdef} \def\UNPROTECT{% \let\uppercase\@uppercase\let\lowercase\@lowercase \let\edef\@edef\let\xdef\@xdef} \PROTECT \let\org@write\write \let\org@immediate\immediate \DeclareRobustCommand\write{\afterassignment\write@a\count@} \def\immediate#1{\ifx#1\write\def\immediate@{\org@immediate}\fi\org@immediate#1} \let\immediate@\@empty \long\def\write@a#1{% \begingroup \let\thepage\relax \let\protect\@unexpandable@protect % \@edef\reserved@a{\expandafter\noexpand\immediate@\org@write\the\count@{#1}}% % \reserved@a \immediate@\org@write\the\count@{#1}% \endgroup \let\immediate@\@empty} % make handling of protected commands within whatsits correct: \let\org@shipout\shipout \def\shipout#1#2{\begingroup\setbox0=#1{#2}\let\protect\noexpand\org@shipout\box0\endgroup} % avoid problems in references with russian letters (e.g. in Texinfo) % (experimental code): %\def\DeclareTextSymbol#1#2#3{% % \@dec@text@cmd\chardef@hack#1{#2}#3\relax %} %\def\chardef@hack#1#2{% % \bgroup % \lccode`\0=#2 % \lowercase{ % \egroup % \let#1=0 % } % \show#1 %} % for inputenc files \def\makeatletter{\catcode`\@11\relax} \def\makeatother{\catcode`\@12\relax} \ifx\Orb\undefined \message{^^J* Please get newer version of plain.tex from^^J% * CTAN:systems/knuth/lib/plain.tex^^J* Aborting.^^J^^J}\end \fi \def\textcircled#1{{\ooalign{\hfil\raise.07ex\hbox{#1}\hfil\crcr\Orb}}} %\let\textlatin\rm \def\fontencoding#1{\makeatletter \UNPROTECT % \lowercase for \DeclareTextComposite \@lowercase{\input{#1enc.def}}% \PROTECT \@edef\cf@encoding{\@uppercase{\def\noexpand\cf@encoding{#1}}}% \cf@encoding \makeatother} \input inputenc.sty \let\org@inputencoding\inputencoding \def\inputencoding#1{\UNPROTECT % \uppercase, \edef \org@inputencoding{#1}% \PROTECT} % definitions of some LaTeX macros used in enc.def and .def files \def\sh@ft#1{\dimen@.00#1ex\multiply\dimen@\fontdimen1\font\kern-.0156\dimen@} \chardef\@xxxii=32 \def\hb@xt@{\hbox to} \def\@tabacckludge#1{\expandafter\@changed@cmd \csname\string#1\endcsname\relax} \DeclareRobustCommand{\ensuremath}{% \ifmmode \expandafter\@firstofone \else \expandafter\@ensuredmath \fi} \long\def\@ensuredmath#1{$\relax#1$} \def\TextSymbolUnavailable#1{\@latex@error{% Command \protect#1 unavailable in encoding \cf@encoding}} \def\textbullet{{\tensy\char15}} \def\textperiodcentered{{\tensy\char1}} %\font\tensmc=cmcsc10 %\DeclareTextCommandDefault{\textregistered}{\textcircled{\tensmc r}} \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}} \DeclareTextCommandDefault{\SS}{SS} \DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}} \DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}} \DeclareRobustCommand*\textsuperscript[1]{% {\m@th\ensuremath{^{\hbox{\sevenrm#1}}}}} \DeclareRobustCommand{\nobreakspace}{\leavevmode\nobreak\ } %\DeclareRobustCommand{\pounds}{% % \ifmmode\mathsterling\else\textsterling\fi} %\def\mathsterling{\mathit{\mathchar"7024}} %\def\mathit#1{{\it#1}} \def\frac#1#2{{\begingroup#1\endgroup\over#2}} \def\@height{height} \def\@depth{depth} \def\@width{width} \def\hmode@bgroup{\leavevmode\bgroup} % a helper command \def\makerobust#1{\expandafter\let\csname\expandafter \@gobble\string#1 \endcsname#1% \@edef#1{\noexpand\protect\expandafter\noexpand\csname\expandafter \@gobble\string#1 \endcsname}} \catcode`\@=\atcatcode \let\atcatcode\undefined \endinput