% kbconfig.tex An idea of Bernard Gaulle 07/29/92 % V1.19 % Copyright GUTenberg-Bernard Gaulle as in french.doc % % Is supposed to run with \catcode`@=11. % % mods: Let \csubinverse be known of the rest of the world. --bg 04/20/93 % Let 7-bit accent macro produce 8-bit chars when possible. --bg 04/28/93 % Accent macros must produce only one token otherwise % upper/lower-casing isn't correctly % converted (bug found by Jean-Claude Vivalda). --bg 05/06/93 % V1.3 Define << and >> for any 8-bit usage(pointed by H.Soulard)--bg 08/10/93 % V1.4 Define a \global \FontEncoding as "CMR" or "ECM" to pass % to any run-time style such as french.sty (but let % it asis if already defined). --bg 08/18/93 % Add code for kb2lex interface (only for TeX V3.xx) --bg 08/27/93 % #4 param of \Madef wasn't a balanced text. --bg 08/30/93 % Replace \FontEncoding by \encodingdefault of NFSS2. --bg 08/31/93 % Current encoding used if any (\f@encoding). --bg 09/01/93 % \@tempa no more redefined bec. used in \input def of NFSS2--bg 09/02/93 % But ngow using \@tempc... % Introduce \protect outside kb2lex because a macro such % as \copyright is not expandable due to alignement macros. --bg 09/03/93 % LaTeX loop over \@tempc solved by \edef to null in[ macros % Issue warning when TeX V3 and CMR only. --bg 11/22/93 % \f@encoding may be undefined. --bg 12/03/93 % Allow the NFSS2 user to change of font encoding on the fly--bg 12/15/93 % \input replaced by \@@input if defined. --bg 12/17/93 % V1.5 Accent macros redefined at end to usual if outside MlTeX. % \aa and \AA were not redefined for 8bits. --bg 12/21/93 % V1.6 Let \ifECM be globaly false if undefined. (pb of Goussard)--bg 03/23/94 % V1.7 Correction of previous change that was wrongly coded. --bg 03/31/94 % V1.8 \ISOfalse disactivated too much active chars. --bg 05/09/94 % V1.9 Reduced usage of backslash in lex code.(pointed by Vial). --bg 05/30/94 % V1.10 Give a global default definition for < and >. --bg 06/07/94 % V1.11 Reset invalid LaTeX2e chars to internal \catcode 11. --bg 09/27/94 % Hack the format dumping time to set catcode correctly % (normally to remove for the 94-95 winter release of LaTeX)--bg 09/29/94 % Take care of \I & \SS already defined in 2e. % Correct 2e bug regarding OT1 uppercasing of ^^Y, ^^Z --bg 09/30/94 % Document these hacks via \wlog. --bg 10/03/94 % Create a latex209.cfg to patch latex209.def which wrongly % reset \catcodes. --bg 10/06/94 % Let 8bit << and >> be equal to \fguillemets and \endfguillemets % avoiding them to become back 7bit when a solution will % be found... --bg 10/10/94 % Don't define globally current 2e TextSymbols. % Don't redefine accent macros for 2e T1 which includes something % like our MlTeX \csubinverse mechanism. --bg 10/26/94 % Rename \: in \r wich is what 2e is using. --bg 11/16/94 % Stronger error messages when running initex TeX+cmr. % Define MlTeX \OT1\accent macros for 2e. --bg 11/30/94 % Take in account case when hexa code are undefined for % double chars outside MlTeX. --bg 12/17/94 % Set low invalid chars to 11 even if gobbled. % Reload of kbconfig needed only for OT1. --bg 12/18/94 % 8bit chars in T1 were not defined as accent on letter. --bg 12/20/94 % V1.13 oe, ae, etc were not activated in T1 ISO. % Uppercase of oe, ae, etc were not set to 11 in T1. % Force T1 if necessary when emulating 209. --bg 01/05/95 % V1.14 \@c@@ wasn't correctly defined for OT1 in 2e. --bg 01/09/95 % Avoid hexa codes to point back elsewhere in non-ISO. % Enforce \ifHB and encodingdefault wishes. --bg 01/10/95 % Use ^^9c as a gateway to uppercase estzet. % \csubinverse didn't use hexa code for non-ISO. % \r was undefined in plain TeX. % \lccode of \OE was undefined in (and for) plain TeX. % Plain def of pounds must not use \char bu \string --bg 01/14/95 % V1.15 Let \i and \j be i and j inside 2e. --bg 02/05/95 % V1.16 Low chars need to be 11, even in 2e. --bg 03/06/95 % Force T1 in latex209.cfg for non-MlTeX engines to ensure % that hyphenation be clean. Sugg. by D.B.Roegel. % No lcc/ucc for normal T1 ISO slots (correctly set in font). % In T1 ISO, chars are not initiated. This was true except % for MACRO & LIGS (chars were already activated). % \DOhex provides chardef adjustement in hex. True but not % for LEX. % Plain has an incompatible \i definition for \csubinverse % and no definition of \pounds (was wrongly removed by me % as few defs for \oe \OE \ae \AE \o \O \ss... (just that!) % probably when modifying the code for LEX and 2e). --bg 03/07/95 % TeX3+CMR warning message rewritten in english and no more % issued twice. --bg 03/08/95 % V1.17 Reset \Def \Let \Let to undefined as suggested by jose % Grimm to avoid conflicts with theorem.sty. --bg 10/12/95 % V1.18 Math accents too introduced!. --bg 01/09/96 % V1.19 Allow to load various keyboard.xxx with \@kbencoding which % is defautly set to "dat". See keyboard.sty too. --bg 02/21/96 % Add \documentsyle option "english" for compatibilty, thus % avoiding to load english.sty. --bg 04/05/96 %% %% checksum = "43690 1039 3119 51313" %% \def\@tempc{\let\ifLEX\iffalse\let\ifLEXhic\iftrue}% \ifx\ifLEX\undefined\message{keyboard,}\@tempc\fi% \let\@tempc=\undefined% so if someone use it... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This code is able to read keyboard.dat and do appropriate customisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\let\charsubdef\undefined% make MlTeX 3 unkown for tests %\let\starthyph\undefined% make MlTeX 2 unkown for tests %\font\rm=dcr10\input dc-plain.ch% do test with dc fonts %------------------------------------------------------------------ %\def\tracingall{\tracingonline\@ne\tracingcommands\tw@\tracingstats\tw@ % \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne % \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne % \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode} % %%%% Dirty hack to be remove later... \def\@tempc{\let\ifECM\iffalse}% \ifx\ifECM\undefined\relax\@tempc\fi% \ifx\documentclass\undefined\else% \edef\@tempb{\encodingdefault}\edef\@tempc{OT1}% \ifx\dumpORI\undefined\let\dumpORI=\dump% \wlog{french-kbconfig: Intercepting the dump control sequence for % eliminating few invalid chars}% \let\SetCfgFor\undefined% \def\dump{\makeatletter\input kbconfig.tex % \message{french-kbconfig: Writing latex209.cfg ************************}% \SetCfgFor209% \message{french-kbconfig: PLEASE COPY latex209.cfg in your LaTeX inputs}% \ifECM\relax\else\uccode`\^^Y=`\^^Y% \uccode`\^^Z=`\^^Z% \wlog{french-kbconfig: Redefining \string ^\string ^\string Y uccode}% \wlog{french-kbconfig: Redefining \string ^\string ^\string Z uccode}% \fi% \makeatother\dumpORI}% \fi% \fi% %%%% \ifx\I\undefined\def\I{I}\fi% \ifx\SS\undefined\def\SS{\hbox{SS}}\fi% new defs % \" is redefined, look at the accentuation macros \ifLEX\else% don't activate for kb2lex \expandafter\ifx\csname ^^63\endcsname\c % 128-255 going \active locally in V3 \catcode`^^80=13\catcode`^^81=13\catcode`^^82=13\catcode`^^83=13 \catcode`^^90=13\catcode`^^91=13\catcode`^^92=13\catcode`^^93=13 \catcode`^^a0=13\catcode`^^a1=13\catcode`^^a2=13\catcode`^^a3=13 \catcode`^^b0=13\catcode`^^b1=13\catcode`^^b2=13\catcode`^^b3=13 \catcode`^^c0=13\catcode`^^c1=13\catcode`^^c2=13\catcode`^^c3=13 \catcode`^^d0=13\catcode`^^d1=13\catcode`^^d2=13\catcode`^^d3=13 \catcode`^^e0=13\catcode`^^e1=13\catcode`^^e2=13\catcode`^^e3=13 \catcode`^^f0=13\catcode`^^f1=13\catcode`^^f2=13\catcode`^^f3=13 \catcode`^^84=13\catcode`^^85=13\catcode`^^86=13\catcode`^^87=13 \catcode`^^94=13\catcode`^^95=13\catcode`^^96=13\catcode`^^97=13 \catcode`^^a4=13\catcode`^^a5=13\catcode`^^a6=13\catcode`^^a7=13 \catcode`^^b4=13\catcode`^^b5=13\catcode`^^b6=13\catcode`^^b7=13 \catcode`^^c4=13\catcode`^^c5=13\catcode`^^c6=13\catcode`^^c7=13 \catcode`^^d4=13\catcode`^^d5=13\catcode`^^d6=13\catcode`^^d7=13 \catcode`^^e4=13\catcode`^^e5=13\catcode`^^e6=13\catcode`^^e7=13 \catcode`^^f4=13\catcode`^^f5=13\catcode`^^f6=13\catcode`^^f7=13 \catcode`^^88=13\catcode`^^89=13\catcode`^^8a=13\catcode`^^8b=13 \catcode`^^98=13\catcode`^^99=13\catcode`^^9a=13\catcode`^^9b=13 \catcode`^^a8=13\catcode`^^a9=13\catcode`^^aa=13\catcode`^^ab=13 \catcode`^^b8=13\catcode`^^b9=13\catcode`^^ba=13\catcode`^^bb=13 \catcode`^^c8=13\catcode`^^c9=13\catcode`^^ca=13\catcode`^^cb=13 \catcode`^^d8=13\catcode`^^d9=13\catcode`^^da=13\catcode`^^db=13 \catcode`^^e8=13\catcode`^^e9=13\catcode`^^ea=13\catcode`^^eb=13 \catcode`^^f8=13\catcode`^^f9=13\catcode`^^fa=13\catcode`^^fb=13 \catcode`^^8c=13\catcode`^^8d=13\catcode`^^8e=13\catcode`^^8f=13 \catcode`^^9c=13\catcode`^^9d=13\catcode`^^9e=13\catcode`^^9f=13 \catcode`^^ac=13\catcode`^^ad=13\catcode`^^ae=13\catcode`^^af=13 \catcode`^^bc=13\catcode`^^bd=13\catcode`^^be=13\catcode`^^bf=13 \catcode`^^cc=13\catcode`^^cd=13\catcode`^^ce=13\catcode`^^cf=13 \catcode`^^dc=13\catcode`^^dd=13\catcode`^^de=13\catcode`^^df=13 \catcode`^^ec=13\catcode`^^ed=13\catcode`^^ee=13\catcode`^^ef=13 \catcode`^^fc=13\catcode`^^fd=13\catcode`^^fe=13\catcode`^^ff=13 \let ^^9c=\undefined% \fi \fi%\ifLEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %------------------------------------------------------------------ % code coming from compatible.tex (Aug. 1990) of MJF and Justin Bur \def\csubinverse #1#2#3{\expandafter\xdef\csname #2#3\endcsname{#1}}% % #1 -- extended 8bits character to replace accent+letter % #2 -- accent macro invocation for... % #3 -- this letter (base character) %------------------------------------------------------------------ \begingroup% to protect all the marmelade done here \ifLEX\else\let\protect\noexpand\fi% \catcode`[=13\catcode`@=11% \catcode`<=13\catcode`>=13% will allow << and >> in keyboard.dat %%%%%%%%% % test if ECM can be used (in fact DCM here) % \newif\ifECM% local redefinition for a global expansion. \global\let\ifECM\ifHB% may be it's already set by \ifHB in lhyphen/plain \ifx\ifHB\undefined\global\ECMfalse\fi% \ifECM\else% skip this if already decided \ifx\encodingdefault\undefined%%%%%%%%%%%% \ifECM\else% if false test (again) if it might be an ec/dc font \ifx\rm\undefined% may be \rm isn't allready defined (specially with LaTeX) \def\graveDC{\mathaccent"7000 }% so test such char \ifx\graveDC\grave\ECMtrue\else\ECMfalse\fi% \else% try on fontname that is a better security \def\is@DC#1#2#3\relax{\if d#11\fi \if e#11\fi \if c#22\fi}% \def\dcdo{% \dcdo code Version 3 as of 01/27/92 on DCFONT discussion list \ifnum 12=0\expandafter\is@DC\fontname\font xx\relax\space% \expandafter\dc@first% \else \expandafter\dc@second% \fi}% \def\dc@first#1#2{#1}% \def\dc@second#1#2{#2}% {\rm\dcdo{\global\ECMtrue}{\global\ECMfalse}}% final DC test \fi%\ifx\rm\undefined \fi%\ifECM\else.. % \ifECM\global\def\encodingdefault{T1}% T1 is for DC/EC \else\global\def\encodingdefault{OT1}% OT1 is for CMR \fi% % \else% \ifx\f@encoding\undefined\edef\f@encoding{\encodingdefault}\fi% \edef\@tempa{T1}\ifx\@tempa\f@encoding% {\global\ECMtrue}% \else{\global\ECMfalse}% \fi% \fi%\encodingdefault \fi% ifECM %%%%%% % Prevent LaTeX2e invalid chars \ifx\documentclass\undefined\else \ifECM% \catcode`\^^_=11% \catcode`\^^Y=11% \else% \catcode`\^^P=11% \catcode`\^^Q=11% \catcode`\^^Y=11% \catcode`\^^Z=11% \catcode`\^^]=11% \catcode`\^^[=11% \catcode`\^^^=11% \catcode`\^^\=11% \catcode`\^^_=11% \fi\fi% %%%%%% \newif\ifMACRO\MACROfalse\newif\ifLIGS\LIGSfalse %------------------------------------------------------------------ % Now where is the accent in the font? local mods of plain code. % and how code it: diacritic+letter or accented 8bits char? % %Caution: never use TeX V2 hexadecimal notation, lowercase would be wrong \ifECM\def\POSgr{"00}\def\POSac{"01}\def\POSan{"06} \def\POSv{"07}\def\POSu{"08}\def\POSeq{"09} \def\POShat{"02}\def\POSdot{"0a}\def\POSH{"05}\def\POStil{"03} \def\POSum{"04}\def\POSc{"13} \else\def\POSgr{18}\def\POSac{19} \def\POSv{20}\def\POSu{21}\def\POSeq{22}\def\POSan{23} \def\POShat{94}\def\POSdot{95}\def\POSH{125}\def\POStil{126} \def\POSum{127}\def\POSc{24} \fi% \ifLEX\begingroup\catcode`+=0\catcode`[= 1\catcode`]=2 \catcode`\{=12\catcode`\}=12\catcode`\\=12 +gdef+ToEight[% Due to lex capacities we keep only one expansion of % usual accent macros e.g. {\'E} but not \'{E} nor \'E +def+`##1[%\\`\{##1\}|\\`##1| \{\\`##1\}] +def+'##1[%\\'\{##1\}|\\'##1| \{\\'##1\}] +def+r##1[\\"r "##1|\\r\{##1\}] +def+v##1[\\"v "##1|\\v\{##1\}] +def+u##1[\\"u "##1|\\u\{##1\}] +def+=##1[%\\=\{##1\}|\\=##1| \{\\=##1\}] +def+^##1[%\\^\{##1\}|\\^##1| \{\\^##1\}] +def+.##1[%\\.\{##1\}|\\.##1| \{\\.##1\}] +def+H##1[\\"H "##1|\\H\{##1\}] +def+~##1[%\\~\{##1\}|\\~##1| \{\\~##1\}] +def+"##1[%\\\"\{##1\}|\\\"##1| \{\\\"##1\}] +def+c##1[\\"c "##1|\\c\{##1\}] +def+i[\\i] +def+j[\\j] +def+copyright[\\"copyright "|\{\\"copyright"\}|\\"copyright"\{\}] +def+oe[\\"oe "|\{\\"oe"\}|\\"oe"\{\}] +def+OE[\\"OE "|\{\\"OE"\}|\\"OE"\{\}] +def+ss[\\"ss "|\{\\"ss"\}|\\"ss"\{\}] +def+ae[\\"ae "|\{\\"ae"\}|\\"ae"\{\}] +def+AE[\\"AE "|\{\\"AE"\}|\\"AE"\{\}] +def+l[\\"l "|\{\\l\}|\\l\{\}] +def+L[\\"L "|\{\\L\}|\\L\{\}] +def+o[\\"o "|\{\\o\}|\\o\{\}] +def+O[\\"O "|\{\\O\}|\\O\{\}] +def+P[\\"P "|\{\\P\}|\\P\{\}] +def+pounds[\\"pounds "|\{\\"pounds"\}|\\"pounds"\{\}] +def+S[\\"S "|\{\\S\}|\\S\{\}] +def+fguillemets["+string<+string<"] +def+endfguillemets["+string>+string>"]% ]% +gdef+ToSeven[% +def+`##1[{\\`##1}] +def+'##1[{\\'##1}] +def+r##1[\\r{##1}] +def+v##1[\\v{##1}] +def+u##1[\\u{##1}] +def+=##1[{\\=##1}] +def+^##1[{\\^##1}] +def+.##1[{\\.##1}] +def+H##1[\\H{##1}] +def+~##1[{\\~##1}] +def+"##1[{\\\"##1}] +def+c##1[\\c{##1}] +def+i[\\i] +def+j[\\j] +def+copyright[{\\copyright}] +def+oe[{\\oe}] +def+OE[{\\OE}] +def+ss[{\\ss}] +def+ae[{\\ae}] +def+AE[{\\AE}] +def+l[{\\l}] +def+L[{\\L}] +def+o[{\\o}] +def+O[{\\O}] +def+P[{\\P}] +def+pounds[{\\pounds}] +def+S[{\\S}] +def+fguillemets[+string<+string<] +def+endfguillemets[+string>+string>]% ]% +endgroup \else% % Folowing \ifx are not required there are here in case of any misplacement % of kbconfig (eg after hyconfig). \ifx\documentclass\undefined% do it in 2.09 \edef\`#1{\expandafter\ifx\csname @gr@#1\endcsname\relax% \ifECM{\accent"00 #1}\else{\accent18 #1}\fi% \else\csname @gr@#1\endcsname\fi}% \edef\'#1{\expandafter\ifx\csname @ac@#1\endcsname\relax% \ifECM{\accent"01 #1}\else{\accent19 #1}\fi% \else\csname @ac@#1\endcsname\fi}% \edef\v#1{\expandafter\ifx\csname @v@#1\endcsname\relax% \ifECM{\accent"07 #1}\else{\accent20 #1}\fi% \else\csname @v@#1\endcsname\fi}% \edef\u#1{\expandafter\ifx\csname @u@#1\endcsname\relax% \ifECM{\accent"08 #1}\else{\accent21 #1}\fi% \else\csname @u@#1\endcsname\fi}% \edef\=#1{\expandafter\ifx\csname @eq@#1\endcsname\relax% \ifECM{\accent"09 #1}\else{\accent22 #1}\fi% \else\csname @eq@#1\endcsname\fi}% \edef\^#1{\expandafter\ifx\csname @hat@#1\endcsname\relax% \ifECM{\accent"02 #1}\else{\accent94 #1}\fi% \else\csname @hat@#1\endcsname\fi}% \edef\.#1{\expandafter\ifx\csname @dot@#1\endcsname\relax% \ifECM{\accent"0a #1}\else{\accent95 #1}\fi% \else\csname @dot@#1\endcsname\fi}% \edef\H#1{\expandafter\ifx\csname @H@#1\endcsname\relax% \ifECM{\accent"05 #1}\else{\accent125 #1}\fi% \else\csname @H@#1\endcsname\fi}% \edef\~#1{\expandafter\ifx\csname @til@#1\endcsname\relax% \ifECM{\accent"03 #1}\else{\accent126 #1}\fi% \else\csname @til@#1\endcsname\fi}% % plain defined it ``wrongly'' in hex ("7F) and so could be wrongly lowercased \edef\"#1{\expandafter\ifx\csname @um@#1\endcsname\relax%plain define it in hex \ifECM{\accent"04 #1}\else{\accent127 #1}\fi% \else\csname @um@#1\endcsname\fi}% \def\c#1{\expandafter\ifx\csname @c@#1\endcsname\relax\noexpand\c#1% \else\csname @c@#1\endcsname\fi}% % D. Knuth defined \oalign in a way that we can't use it in % an \edef or \xdef so i changed it temporarily \def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% \ialign{####\crcr#1\crcr}}}% put characters over each other % our new def for angstrom bec. undefined in plain as an accent. macro \def\r#1{\if#1a\@a:a\else\if#1A\@A:A\fi\fi}% \def\@a:a{\expandafter\ifx\csname @an@a\endcsname\relax% \ifECM{\accent"06a}\else{\accent23a}\fi% \else\csname @an@a\endcsname\fi}% \def\@A:A{\expandafter\ifx\csname @an@A\endcsname\relax% \leavevmode\setbox0\hbox{h}\dimen@\ht0% \advance\dimen@-1ex\rlap{\raise.67\dimen@\hbox{% \ifECM\char"06\else\char'27\fi}}A% \else\csname @an@A\endcsname\fi}% \xdef\aa{\r a}\xdef\AA{\r A}% \fi% done for 2.09 \fi%\ifLEX % Strings def are global to allow \@accent@ to work properly (not for 2e) \def\@gobbletwo#1#2{}% \ifx\documentclass\undefined% \let\Gdef=\gdef% \else\let\Gdef\@gobbletwo% %%%%%% % Prevent LaTeX2e invalid chars even if gobbled \catcode`\^^P=11% \catcode`\^^Q=11% \catcode`\^^Y=11% \catcode`\^^Z=11% \catcode`\^^]=11% \catcode`\^^[=11% \catcode`\^^^=11% \catcode`\^^\=11% \catcode`\^^_=11% %%%%%% \fi% \ifECM\Gdef\oe{\string^^f7}\else\Gdef\oe{^^[}\fi% \ifECM\Gdef\OE{\string^^d7}\else\Gdef\OE{^^^}\fi% \ifECM\Gdef\ss{\string^^ff}\else\Gdef\ss{^^Y}\fi% \ifECM\Gdef\ae{\string^^e6}% ^^e6 introduce a pb, why? \else% \ifx\undefined\starthyph\Gdef\ae{^^Z}% for V3 \else\Gdef\ae{\char`^^Z}\fi% for V2 \fi% \ifECM\Gdef\AE{\string^^c6}\else\Gdef\AE{^^]}\fi% \ifECM\else\global\lccode`^^]=`^^Z% a bypass for V2 \global\uccode`^^Z=`^^]% \global\uccode`^^[=`^^^% \global\lccode`^^^=`^^[% \global\lccode`^^_=`^^\% \global\uccode`^^\=`^^_% \global\uccode`^^P=`I% \global\uccode`^^Q=`J% \fi% \ifECM\Gdef\o {\string^^f8}\else\Gdef\o {^^\}\fi% \ifECM\Gdef\O {\string^^d8}\else\Gdef\O {^^_}\fi% % but require an uppercase def for \ss different for ec/dc ie: \ifECM\Gdef\SS{\string^^df}\fi% valid global def for DC % \def\D{\char^^bf}% \ifx\D\pounds\Gdef\pounds{\string^^bf}\fi% % Plain has no definition of \pounds \ifx\pounds\undefined{\ifECM\Gdef\pounds{\string ^^bf}%lfonts.tex will redef.it \else\Gdef\pounds{{\csname it\endcsname\char'44}}\fi}\fi% % \ifx<\undefined\gdef<{\string<}\fi% defs until french.sty were activated \ifx>\undefined\gdef>{\string>}\fi% % \ifECM\Gdef\i{^^Y}\else\Gdef\i{^^P}\fi% needed by \csubinverse for patterns \ifECM\Gdef\j{^^Z}\else\Gdef\j{^^Q}\fi% dotless letters % Localy needed anyway: \ifECM\def\i{^^Y}\else\def\i{^^P}\fi% needed by \csubinverse for patterns % LaTeX 2e doesn't care of i and j without dot on it \ifx\documentclass\undefined\else% \ifECM\edef\i{i}\edef\j{j}\fi% \fi% % % Are we in TeX V2 or V3? \newif\ifVtwo \newif\ifSkip \Skipfalse \newif\ifISO \ISOtrue % ISO 8859-1/Cork \newif\ifMlTeXthree \MlTeXthreefalse \catcode`^=\active% non hexa processing in V2 \ifx\undefined\lefthyphenmin\Vtwotrue% Vtwo means MlTeX V2 \def^#1{\ifx#1^\else\string^#1\fi}% eat ^^ in TeX v2 \ifx\starthyph\undefined% \message{ATTENTION : TeX Version 2 ne permet pas d'utiliser des caracteres accentues 8bits}% \ifnum\catcode`\{=1%\} emacs \message{Vous devez :} \message{- soit utiliser un moteur MlTeX,} \message{- soit passer en encodage OT1 par defaut.} \Stop% a vous de choisir... --bg \fi% \Skiptrue\fi% \else\ifx\starthyph\undefined\Vtwofalse\else\Vtwotrue\fi% \ifx\charsubdef\undefined\else\MlTeXthreetrue\fi% \ifx\SetCfgFor\undefined% \ifLEX\else% \ifMlTeXthree\else% \ifECM\else% {\catcode`\^=12\newlinechar=`\^ \message{^french-kbconfig ****Warning****: your TeX V3 engine + CMR}} \message{fonts (your format default) isn't sufficient to hyphenate}% \message{words containing diacritics (like in French).}% \fi% \fi% \fi% ifLEX \fi%\SerCfg \fi% lefthyphenmin \ifVtwo\else\catcode`\^=7% reset value of plain % reset first 32 chars too erroneously (?) illegal since 2e \catcode`\^^00=11% \catcode`\^^01=11% \catcode`\^^02=11% \catcode`\^^03=11% \catcode`\^^04=11% \catcode`\^^05=11% \catcode`\^^06=11% \catcode`\^^07=11% \catcode`\^^08=11% %\catcode`\^^09=11% is tab ^^I %\catcode`\^^0a=11% is nl ^^J \catcode`\^^0b=11% %\catcode`\^^0c=11% is ff ^^L %\catcode`\^^0d=11% is cr ^^M \catcode`\^^0e=11% \catcode`\^^0f=11% \catcode`\^^10=11% \catcode`\^^11=11% \catcode`\^^12=11% \catcode`\^^13=11% \catcode`\^^14=11% \catcode`\^^15=11% \catcode`\^^16=11% \catcode`\^^17=11% \catcode`\^^18=11% \catcode`\^^19=11% \catcode`\^^1a=11% \catcode`\^^1b=11% \catcode`\^^1c=11% \catcode`\^^1d=11% \catcode`\^^1e=11% \catcode`\^^1f=11% \fi% \ifSkip\else% The code is only for MlTeX or TeX V3.xxxx %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Codage du tableau : definition de l'accentuation \def\ac[ #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 ]% {\ifLEX\message{^^J PROCESSED CHARACTERS ARE:}\fi \ifx.#1\let\ACa\undefined\else\def\ACa{#1}\fi% si different d'un point \ifx.#2\let\ACb\undefined\else\def\ACb{#2}\fi% \ifx.#3\let\ACc\undefined\else\def\ACc{#3}\fi% \ifx.#4\let\ACd\undefined\else\def\ACd{#4}\fi% \ifx.#5\let\ACe\undefined\else\def\ACe{#5}\fi% \ifx.#6\let\ACf\undefined\else\def\ACf{#6}\fi% \ifx.#7\let\ACg\undefined\else\def\ACg{#7}\fi% \ifx.#8\let\ACh\undefined\else\def\ACh{#8}\fi\let[\minu%] }% % La macro precisant les noms internes \def\noms| #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 |% {\ifx.#1\let\ANa\undefined\else\def\ANa{#1}\fi% \ifx.#2\let\ANb\undefined\else\def\ANb{#2}\fi% \ifx.#3\let\ANc\undefined\else\def\ANc{#3}\fi% \ifx.#4\let\ANd\undefined\else\def\ANd{#4}\fi% \ifx.#5\let\ANe\undefined\else\def\ANe{#5}\fi% \ifx.#6\let\ANf\undefined\else\def\ANf{#6}\fi% \ifx.#7\let\ANg\undefined\else\def\ANg{#7}\fi% \ifx.#8\let\ANh\undefined\else\def\ANh{#8}\fi}% \newif\ifONE\newif\ifOK% \def\ONECHAR#1#2/{\ifx9#2\ONEtrue\else\ONEfalse\fi}% %definition des minuscules %==>\madef{caract accentue}{accentuation}{Nom minuscule}{lettre} \def\madef#1#2#3#4{\ifx.#1\else\@madef{#1}{#2}{#3}{#4}\fi}% si pas un . \def\@madef#1#2#3#4{\ONECHAR#19/% \ifx#2\undefined% \else\ifVtwo\ifONE\xdef#1{#2{#4}}\fi% #1 is defaultly \active with MlTeX V2 \else\def\tempb{\catcode`}% now in V3 \let\A=A\ifMACRO\let\A\active\else\ifLIGS\let\A\active\fi\fi% \ifx#2\empty\let\A=\active\fi% \ifcat\active\A% \ifECM\OKfalse% normally nothing to do \ifMACRO\OKtrue\fi% except for macros \ifLIGS\OKtrue\fi% except for ligs \ifISO\ifx#4\ss\OKtrue\fi% \ss is specific \else\OKtrue\fi% except if not ISO \ifOK% \ifONE% exclude multiletters \ifLEX\else\gdef #1{#4}\fi% \edef\OldActiveChars{\@tempc}% \xdef\@tempc{\OldActiveChars% \tempb\string#1=\active}% \fi% \fi% \else% Not using ECM \ifONE% exclude multiletters \ifMlTeXthree\else\tempb#1=\active\fi% \ifLEX\else% \gdef #1{#4}% don't xdef for oe, ae, etc. \fi%ifLEX \edef\OldActiveChars{\@tempc}% \xdef\@tempc{\OldActiveChars% \tempb\string#1=\active}% \fi% \fi% \else% Not a Macro, Not a lig, .. %%% \ifECM\else% no accentuation in 8bits ??? \ifLEX\else\xdef#1{\expandafter\noexpand#2{#4}}\fi% \ifMlTeXthree\else\tempb#1=\active\fi% \edef\OldActiveChars{\@tempc}% \xdef\@tempc{\OldActiveChars% \tempb\string#1=\active}% %%% \fi% \fi% \fi% ifVtwo \expandafter\def\csname #3\endcsname{#1}% for further use \fi% ifx#2 \ifLEX\ifLEXhic\ifONE\message{\string#1 \space} {\ToSeven\def\GUILL{"} \edef\FULL{#2\LaLettre}% \ifx\empty#2\edef\FULL{\LaLettre}\fi \immediate\write\kbseven{\string#1\space\space\space printf(\GUILL\FULL\GUILL);}} {\ToEight\def\GUILL{\ifLIGS"\fi}% \edef\FULL{#2{\GUILL\LaLettre\GUILL}}% \ifx\empty#2\edef\FULL{\GUILL\LaLettre\GUILL}\fi \immediate\write\kbeight{\FULL% |\string#1\space\space\space printf("\string#1");}} \fi\fi\fi% ifLEX }% @madef \def\minu#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 |% {\ifLEX\edef\@tempc{}\fi% required for LaTeX kb2lex! \def\@tempa##1/{\def\LaLettre{##1}}\@tempa#1/% \madef#2{\ACa}{LAa}{#1}% \madef#3{\ACb}{LAb}{#1}% \madef#4{\ACc}{LAc}{#1}% \madef#5{\ACd}{LAd}{#1}% \madef#6{\ACe}{LAe}{#1}% \madef#7{\ACf}{LAf}{#1}% \madef#8{\ACg}{LAg}{#1}% \madef#9{\ACh}{LAh}{#1}% \let\A=A\ifMACRO\let\A\active\else\ifLIGS\let\A\active\fi\fi% \ifcat\A\active\xdef\Lchar{}\else\xdef\Lchar{#1}\fi%dummy for \oe \ae etc. \let\hex\hexminu}% \def\hexminu| #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 %[ ]% {\ifx.#1\let\HLa\undefined\else\edef\HLa{\noexpand#1}\fi% \ifx.#2\let\HLb\undefined\else\edef\HLb{\noexpand#2}\fi% \ifx.#3\let\HLc\undefined\else\edef\HLc{\noexpand#3}\fi% \ifx.#4\let\HLd\undefined\else\edef\HLd{\noexpand#4}\fi% \ifx.#5\let\HLe\undefined\else\edef\HLe{\noexpand#5}\fi% \ifx.#6\let\HLf\undefined\else\edef\HLf{\noexpand#6}\fi% \ifx.#7\let\HLg\undefined\else\edef\HLg{\noexpand#7}\fi% \ifx.#8\let\HLh\undefined\else\edef\HLh{\noexpand#8}\fi% \let[\MAJU%] }% %definition des majuscules %==>\Madef{caract accentue}{accentuation}{Nom majuscule}{lettre} \def\Madef#1#2#3#4{\ifx.#1\else\@madef{#1}{#2}{#3}{#4}\fi}% si pas un . \def\MAJU#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 |% {\let\MAa\undefined\let\MAb\undefined\let\MAc\undefined\let\MAd\undefined \let\MAe\undefined\let\MAf\undefined\let\MAg\undefined\let\MAh\undefined \ifLEX\edef\@tempc{}\fi% required for LaTeX kb2lex! \def\@tempa##1/{\def\LaLettre{##1}}\@tempa#1/% \Madef#2{\ACa}{MAa}{#1}% \Madef#3{\ACb}{MAb}{#1}% \Madef#4{\ACc}{MAc}{#1}% \Madef#5{\ACd}{MAd}{#1}% \Madef#6{\ACe}{MAe}{#1}% \Madef#7{\ACf}{MAf}{#1}% \Madef#8{\ACg}{MAg}{#1}% \Madef#9{\ACh}{MAh}{#1}% \let\A=A\ifMACRO\let\A\active\else\ifLIGS\let\A\active\fi\fi% \ifcat\A\active\xdef\Mchar{}\else\xdef\Mchar{#1}\fi%dummy for \OE etc. \let\hex\hexMAJU}% \def\hexMAJU| #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 %[ ]% {\ifx.#1\let\HMa\undefined\else\edef\HMa{\noexpand#1}\fi% \ifx.#2\let\HMb\undefined\else\edef\HMb{\noexpand#2}\fi% \ifx.#3\let\HMc\undefined\else\edef\HMc{\noexpand#3}\fi% \ifx.#4\let\HMd\undefined\else\edef\HMd{\noexpand#4}\fi% \ifx.#5\let\HMe\undefined\else\edef\HMe{\noexpand#5}\fi% \ifx.#6\let\HMf\undefined\else\edef\HMf{\noexpand#6}\fi% \ifx.#7\let\HMg\undefined\else\edef\HMg{\noexpand#7}\fi% \ifx.#8\let\HMh\undefined\else\edef\HMh{\noexpand#8}\fi% % process hexdecimal codes if necessary \ifx\HLa\undefined\else\DOhex\ACa{\LAa}{\HLa}{\MAa}{\HMa}{\ANa}\fi% \ifx\HLb\undefined\else\DOhex\ACb{\LAb}{\HLb}{\MAb}{\HMb}{\ANb}\fi% \ifx\HLc\undefined\else\DOhex\ACc{\LAc}{\HLc}{\MAc}{\HMc}{\ANc}\fi% \ifx\HLd\undefined\else\DOhex\ACd{\LAd}{\HLd}{\MAd}{\HMd}{\ANd}\fi% \ifx\HLe\undefined\else\DOhex\ACe{\LAe}{\HLe}{\MAe}{\HMe}{\ANe}\fi% \ifx\HLf\undefined\else\DOhex\ACf{\LAf}{\HLf}{\MAf}{\HMf}{\ANf}\fi% \ifx\HLg\undefined\else\DOhex\ACg{\LAg}{\HLg}{\MAg}{\HMg}{\ANg}\fi% \ifx\HLh\undefined\else\DOhex\ACh{\LAh}{\HLh}{\MAh}{\HMh}{\ANh}\fi% % now ready to start a 4up \let[\minu%] }% \def\@tempc{}% \def\DOhex#1#2#3#4#5#6{% % 1 2 3 4 5 6 % accentuation, lettre_min+ code_hex, lettre_maj+code_hex, nom_accent %look firstly to see if there are more than one letter character \ONEfalse\ifx\undefined#4\else\expandafter\ONECHAR#49/\fi% \ifVtwo% nothing to do in MlTeX V2 \else% we are with TeX 3 or MlTeX 3 \ifECM\ifISO\else% as just a chardef adjustement in hex. \ifLEX\else% not for LEX \def\tempa{\catcode`}\expandafter\tempa#2=\active% \expandafter\xdef#2{\expandafter\string#3}% \fi% \ifONE% exclude multiletters \ifx\undefined#4\else% \def\tempa{\catcode`}\expandafter\tempa#4=\active% \expandafter\xdef#4{\expandafter\string#5}% \fi% \fi% \fi% \fi% now define \lccode & \uccode %%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifx\empty#1\let\X=X% \ifECM\ifISO% don't activate oe ae etc in 8bits \edef\D{#2}\edef\E{\noexpand\ss} \ifx \D\E% but let s-tzet \else% \def\tempa{\catcode`}%\def\tempb{^}% \expandafter\tempa#2=11% \edef\OldActiveChars{\@tempc}% disactivate \xdef\@tempc{\OldActiveChars% \tempa\expandafter\string#2=11}% \ifx\undefined#4\else \ifONE\expandafter\tempa#4=11% \edef\OldActiveChars{\@tempc}%disactivate \xdef\@tempc{\OldActiveChars% \tempa\expandafter\string#4=11}% \else% \ifx\undefined#5\else% case hex code is undef \let\tempc=#5\expandafter\tempa\tempc=11% \fi% ifx undefined \fi% \fi \let\X=\active% \fi% s-tzet \fi\fi% \else\let\X\active\ifISO% \def\tempa{\catcode`}\expandafter\tempa#2=11% \ifx\undefined#4\else\expandafter\tempa#4=11\fi% \fi% \ifECM\ifISO\let\X=\active\fi\fi% No lcc/ucc for normal T1 ISO \fi% \def\tempa{\lccode`}\def\tempb{=`}% \ifLIGS\let\X=\active\fi% don't do that for ligs \ifMACRO\let\X=\active\fi% don't do that for macros \ifcat\X\active% do usual ucc/lcc encoding \global\expandafter\tempa#2\expandafter\tempb#2% \ifx\undefined#4\else \ifONE% \global\expandafter\tempa#4\expandafter\tempb#2% \def\tempa{\global\uccode`}% \expandafter\tempa#2\expandafter\tempb#4% \expandafter\tempa#4\expandafter\tempb#4% \else% do it in hexa for #4 ==> #5 replace #4 \ifx\undefined#5\else% hex code may be undef \global\expandafter\tempa #5\expandafter\tempb #2% \ifLEX\else\def\tempa{\global\uccode`}% \edef\D{\expandafter\string#5}\edef\E{#2}% \expandafter\ifx#5\undefined\else\edef\D{#5}\fi% \ifx\D\E% \ifx ^^9c\undefined% do it once {\def\tempa{\catcode`}\expandafter\tempa#2=11% \def\tempa{\global\uccode`}% \expandafter\tempa#2\tempb^^9c}% \xdef ^^9c{#4}% \def\tempa{\catcode`}% \edef\OldActiveChars{\@tempc}% disactivate \xdef\@tempc{\OldActiveChars% \tempa\string ^^9c=13}% \fi% \else% \expandafter\tempa #2\expandafter\tempb #5% \expandafter\tempa #5\expandafter\tempb #5% \fi% \ifECM\ifISO\else% \ifx\D\E\else% case estzet and SS \global\expandafter\edef #3{\expandafter\string #3}% dont point \global\expandafter\edef #5{\expandafter\string #5}% elsewhere \fi\fi\fi% \fi% ifLEX \fi% ifx undefined \fi% \fi% \else\edef\D{#2}% do ucc/lcc encoding *after* expanding macros \global\expandafter\tempa\D\expandafter\tempb\D% \ifx\undefined#4\else\edef\Q{#4}% \global\expandafter\tempa\Q\expandafter\tempb\D% \def\tempa{\uccode`}% \global\expandafter\tempa\D\expandafter\tempb\Q% \global\expandafter\tempa\Q\expandafter\tempb\Q\fi% \fi% \ifMlTeXthree\OKfalse% MlTeX V3 \ifx\Lchar\empty% ............. this is a control sequence \else% ........................ this is a letter+diacritic \ifx\undefined#6\else%maybe we dont have an accent-name \OKtrue\ifLEX\else% \def\tempa{\charsubdef`}\def\tempb{= }% \edef\tempc{`\Lchar}% \global\expandafter\tempa#2% \expandafter\tempb\csname POS#6\endcsname \tempc% \fi%\ifLEX \fi \fi% \ifx\Mchar\empty% and now uppercase \else% \ifx\undefined#6\else%maybe we dont have an accent-name \OKtrue\ifLEX\else% \def\tempa{\charsubdef`}\def\tempb{= }% \edef\tempc{`\Mchar}% \global\expandafter\tempa#4% \expandafter\tempb\csname POS#6\endcsname \tempc% \fi%\ifLEX \fi \fi% \ifOK% \def\tempb{\catcode`}% \edef\OldActiveChars{\@tempc}% in fact disactivate \xdef\@tempc{\OldActiveChars% \tempb\expandafter\string#2=11}% \ifx\undefined#4\else% \ifONE% \edef\OldActiveChars{\@tempc}% disactivate \xdef\@tempc{\OldActiveChars% \tempb\expandafter\string#4=11}% \fi% \fi% \fi% ifOK \fi% MlTeX3 \fi%\ifVtwo \ifx\undefined#6\else% \csubinverse {\expandafter\string#3}{@#6@}\Lchar% \csubinverse {\expandafter\string#5}{@#6@}\Mchar% \fi }%end of DOhex \ifx\@@input\undefined\let\@@input\input\fi \ifx\@kbencoding\undefined\def\@kbencoding{dat}\fi% \@@input keyboard.\@kbencoding % load my keyboard specs \fi% de \ifSkip \endgroup% \expandafter\ifx\csname ^^63\endcsname\c % 128-255 going chars in V3 \catcode`^^80=11\catcode`^^81=11\catcode`^^82=11\catcode`^^83=11 \catcode`^^90=11\catcode`^^91=11\catcode`^^92=11\catcode`^^93=11 \catcode`^^a0=11\catcode`^^a1=11\catcode`^^a2=11\catcode`^^a3=11 \catcode`^^b0=11\catcode`^^b1=11\catcode`^^b2=11\catcode`^^b3=11 \catcode`^^c0=11\catcode`^^c1=11\catcode`^^c2=11\catcode`^^c3=11 \catcode`^^d0=11\catcode`^^d1=11\catcode`^^d2=11\catcode`^^d3=11 \catcode`^^e0=11\catcode`^^e1=11\catcode`^^e2=11\catcode`^^e3=11 \catcode`^^f0=11\catcode`^^f1=11\catcode`^^f2=11\catcode`^^f3=11 \catcode`^^84=11\catcode`^^85=11\catcode`^^86=11\catcode`^^87=11 \catcode`^^94=11\catcode`^^95=11\catcode`^^96=11\catcode`^^97=11 \catcode`^^a4=11\catcode`^^a5=11\catcode`^^a6=11\catcode`^^a7=11 \catcode`^^b4=11\catcode`^^b5=11\catcode`^^b6=11\catcode`^^b7=11 \catcode`^^c4=11\catcode`^^c5=11\catcode`^^c6=11\catcode`^^c7=11 \catcode`^^d4=11\catcode`^^d5=11\catcode`^^d6=11\catcode`^^d7=11 \catcode`^^e4=11\catcode`^^e5=11\catcode`^^e6=11\catcode`^^e7=11 \catcode`^^f4=11\catcode`^^f5=11\catcode`^^f6=11\catcode`^^f7=11 \catcode`^^88=11\catcode`^^89=11\catcode`^^8a=11\catcode`^^8b=11 \catcode`^^98=11\catcode`^^99=11\catcode`^^9a=11\catcode`^^9b=11 \catcode`^^a8=11\catcode`^^a9=11\catcode`^^aa=11\catcode`^^ab=11 \catcode`^^b8=11\catcode`^^b9=11\catcode`^^ba=11\catcode`^^bb=11 \catcode`^^c8=11\catcode`^^c9=11\catcode`^^ca=11\catcode`^^cb=11 \catcode`^^d8=11\catcode`^^d9=11\catcode`^^da=11\catcode`^^db=11 \catcode`^^e8=11\catcode`^^e9=11\catcode`^^ea=11\catcode`^^eb=11 \catcode`^^f8=11\catcode`^^f9=11\catcode`^^fa=11\catcode`^^fb=11 \catcode`^^8c=11\catcode`^^8d=11\catcode`^^8e=11\catcode`^^8f=11 % \catcode`^^9c=11% this is our bypass \catcode`^^9d=11\catcode`^^9e=11\catcode`^^9f=11 \catcode`^^ac=11\catcode`^^ad=11\catcode`^^ae=11\catcode`^^af=11 \catcode`^^bc=11\catcode`^^bd=11\catcode`^^be=11\catcode`^^bf=11 \catcode`^^cc=11\catcode`^^cd=11\catcode`^^ce=11\catcode`^^cf=11 \catcode`^^dc=11\catcode`^^dd=11\catcode`^^de=11\catcode`^^df=11 \catcode`^^ec=11\catcode`^^ed=11\catcode`^^ee=11\catcode`^^ef=11 \catcode`^^fc=11\catcode`^^fd=11\catcode`^^fe=11\catcode`^^ff=11 %%%%%% % Prevent LaTeX2e invalid chars \ifx\documentclass\undefined\else\ifECM \catcode`\^^_=11% \catcode`\^^Y=11% \catcode`\^^Z=11% \catcode`\^^P=11% \catcode`\^^Q=11% \else% \catcode`\^^P=11% \catcode`\^^Q=11% \catcode`\^^Y=11% \catcode`\^^Z=11% \catcode`\^^]=11% \catcode`\^^[=11% \catcode`\^^^=11% \catcode`\^^\=11% \catcode`\^^_=11% \fi\fi% %%%%%% % now intitialize only \ae \ae etc. \@tempc% %\show\@tempc% %%%%%%%% correct bug in latex209.def regarding catcodes %%%%%%% \edef\SetCfgFor209{{\noexpand\newwrite\noexpand\kbclean% \noexpand\immediate\noexpand\openout\noexpand\kbclean% =latex209.cfg% \noexpand\immediate\noexpand\write\noexpand\kbclean% {\@tempc% \noexpand\noexpand\noexpand\let% \noexpand\noexpand\noexpand\ds@english% \noexpand\noexpand\noexpand\english}% \ifECM% Force T1 if we are in T1 \noexpand\immediate\noexpand\write\noexpand\kbclean% {\noexpand\noexpand\noexpand\def% \noexpand\noexpand\noexpand\encodingdefault{T1}}% \else% Force T1 for non-MlTeX \noexpand\immediate\noexpand\write\noexpand\kbclean% {\noexpand\noexpand\noexpand\ifx% \noexpand\noexpand\noexpand\charsubdef% \noexpand\noexpand\noexpand\undefined% \noexpand\noexpand\noexpand\def% \noexpand\noexpand\noexpand\encodingdefault{T1}% \noexpand\noexpand\noexpand\fi% }% \fi% }% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Reset no more useful macros \let\@tempc\undefined% \global\let\Lchar\undefined\global\let\Mchar\undefined% \ifx\fguillemets\undefined\def\fguillemets{<<}\fi% \ifx\endfguillemets\undefined\def\endfguillemets{>>}\fi% % % Take in account \mathaccent for OT1 and T1 % \ifECM \def\acute{\mathaccent"7001 } \def\grave{\mathaccent"7000 } \def\ddot{\mathaccent"7004 } \def\tilde{\mathaccent"7003 } \def\bar{\mathaccent"7009 } \def\breve{\mathaccent"7008 } \def\check{\mathaccent"7007 } \def\hat{\mathaccent"7002 } \def\dot{\mathaccent"700A } \else \def\acute{\mathaccent"7013 } \def\grave{\mathaccent"7012 } \def\ddot{\mathaccent"707F } \def\tilde{\mathaccent"707E } \def\bar{\mathaccent"7016 } \def\breve{\mathaccent"7015 } \def\check{\mathaccent"7014 } \def\hat{\mathaccent"705E } \def\dot{\mathaccent"705F } \fi % % Now provide 7-bit new accent macros to produce 8-bit chars % %\catcode`@=11% normally done \let\next\undefined \ifx\starthyph\undefined\else\let\next\relax\fi \ifx\charsubdef\undefined\else\let\next\relax\fi \ifECM\let\next\relax\fi %% \ifx\documentclass\undefined% \let\Edef\edef\let\Def\def\let\Let\let% \else% \def\Edef#1{\expandafter\relax% define only for MlTeX OT1 \expandafter\global% \expandafter\edef\csname OT\string1\string#1\endcsname} \def\Def#1{\expandafter\relax% define only for MlTeX OT1 \expandafter\global% \expandafter\def\csname OT\string1\string#1\endcsname} \def\Let#1{\expandafter\relax% define only for MlTeX OT1 \expandafter\global% \expandafter\let\csname OT\string1\string#1\endcsname} \ifECM\Edef\i{^^Y}\else\Edef\i{^^P}\fi% needed by \csubinverse for patterns \ifECM\Edef\j{^^Z}\else\Edef\j{^^Q}\fi% dotless letters \fi% \ifx\next\relax% then do it (we have 8bits chars) \Edef\`#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @gr@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"00 #1}\else{\accent18 #1}\fi% \noexpand\else% \noexpand\csname @gr@#1\noexpand\endcsname\noexpand\fi}}% \Edef\'#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @ac@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"01 #1}\else{\accent19 #1}\fi% \noexpand\else% \noexpand\csname @ac@#1\noexpand\endcsname\noexpand\fi}}% \Edef\v#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @v@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"07 #1}\else{\accent20 #1}\fi% \noexpand\else% \noexpand\csname @v@#1\noexpand\endcsname\noexpand\fi}}% \Edef\u#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @u@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"08 #1}\else{\accent21 #1}\fi% \noexpand\else% \noexpand\csname @u@#1\noexpand\endcsname\noexpand\fi}}% \Edef\=#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @eq@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"09 #1}\else{\accent22 #1}\fi% \noexpand\else% \noexpand\csname @eq@#1\noexpand\endcsname\noexpand\fi}}% \Edef\^#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @hat@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"02 #1}\else{\accent94 #1}\fi% \noexpand\else% \noexpand\csname @hat@#1\noexpand\endcsname\noexpand\fi}}% \Edef\.#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @dot@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"0a #1}\else{\accent95 #1}\fi% \noexpand\else% \noexpand\csname @dot@#1\noexpand\endcsname\noexpand\fi}}% \Edef\H#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @H@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"05 #1}\else{\accent125 #1}\fi% \noexpand\else% \noexpand\csname @H@#1\noexpand\endcsname\noexpand\fi}}% \Edef\~#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @til@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"03 #1}\else{\accent126 #1}\fi% \noexpand\else% \noexpand\csname @til@#1\noexpand\endcsname\noexpand\fi}}% \Edef\"#1{{\noexpand\expandafter\noexpand\ifx% \noexpand\csname @um@#1\noexpand\endcsname\noexpand\relax% \ifECM{\accent"04 #1}\else{\accent127 #1}\fi% \noexpand\else% \noexpand\csname @um@#1\noexpand\endcsname\noexpand\fi}}% \ifx\@c@@\undefined% needed for OT1 \def\@c@@#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1% \else{\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}}\fi}% \fi% \Def\c#1{{\expandafter\ifx% \csname @c@#1\endcsname\relax% \@c@@{#1}% \else% \csname @c@#1\endcsname\fi}}% \ifx\@an@a\undefined\else\Let\aa\@an@a\fi% \ifx\@an@A\undefined\else\Let\AA\@an@A\fi% \ifx\r\undefined% \global\Def\r#1{\if#1a\@a:a\else\if#1A\@A:A\fi\fi}% \global\Def\@a:a{\expandafter\ifx\csname @an@a\endcsname\relax% \ifECM{\accent"06a}\else{\accent23a}\fi% \else\csname @an@a\endcsname\fi}% \global\Def\@A:A{\expandafter\ifx\csname @an@A\endcsname\relax% \leavevmode\setbox0\hbox{h}\dimen@\ht0% \advance\dimen@-1ex\rlap{\raise.67\dimen@\hbox{% \ifECM\char"06\else\char'27\fi}}A% \else\csname @an@A\endcsname\fi}% \fi% \r undefined \fi% we have 8bits chars \ifx\next\undefined% we don't have any csubsinverse mechanism % % so reset any previous accent macros to usual \edef\`#1{\ifECM{\accent"00 #1}\else{\accent18 #1}\fi}% \edef\'#1{\ifECM{\accent"01 #1}\else{\accent19 #1}\fi}% \edef\v#1{\ifECM{\accent"07 #1}\else{\accent20 #1}\fi}% \edef\u#1{\ifECM{\accent"08 #1}\else{\accent21 #1}\fi}% \edef\=#1{\ifECM{\accent"09 #1}\else{\accent22 #1}\fi}% \edef\^#1{\ifECM{\accent"02 #1}\else{\accent94 #1}\fi}% \edef\.#1{\ifECM{\accent"0a #1}\else{\accent95 #1}\fi}% \edef\H#1{\ifECM{\accent"05 #1}\else{\accent125 #1}\fi}% \edef\~#1{\ifECM{\accent"03 #1}\else{\accent126 #1}\fi}% \edef\"#1{\ifECM{\accent"04 #1}\else{\accent127 #1}\fi}% \ifx\@c@@\undefined\else\let\c=\@c@@\fi% \def\aa{\ifECM{\accent"06a}\else{\accent23a}\fi}% \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0% \advance\dimen@-1ex\rlap{\raise.67\dimen@\hbox{% \ifECM\char"06\else\char'27\fi}}A}% \fi%we don't have any csubsinverse mechanism \fi % reset misc \let\Edef\undefined\let\Def\undefined\let\Let\undefined% \endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%