% *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** % Copyright (C) 1992 -- 1998 Y&Y, Inc. % Copyright 2007 TeX Users Group. % You may freely use, modify and/or distribute this file. % *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** % ============================================================================ % Code to allow plain TeX and LaTeX 2.09 to fully exploit `Cork (T1)' encoding % (for `tex256.vec' a.k.a. `T1') VERSION 3.1 (1998 June 6) % ============================================================================ %% 04 Jun 98 modified to run with tub58pl1.tex and tubcover.tex (mb) % \input dcaccent in TeX source when using fonts with `Cork (T1)' encoding. % Rencoding a font to `Cork' (a.k.a. `T1') encoding provides access to % many characters not found in `TeX text' (OT1) encoding (although it % also loses access to many characters found in standard text fonts). % `plain' TeX - and `lplain' TeX - have accents hard-wired to certain codes. % When a font is encoded differently, compound characters and accents move. % This file deals with this for Cork (T1) encoding. % NOTE: Default is to use the ready-made accented/composite characters % that occur in text fonts directly, using the macros defined below. % To instead build them by overprinting, use \buildcomposites. % To instead link to them via pseudo ligatures, use \usecomposites. % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % You can use this file with ordinary text fonts in Type 1 format % (which normally have 58 ready-made accented characters), or with % fonts that cover the full Cork set of accented/composite characters. % Uncomment the following if you are using fonts with a complete Cork set - % leave it commented out if you use `standard' text fonts: % \let\ecfonts\relax % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % First, protect against style files that make quotedbl `active' \chardef\dblcode=\catcode`\" % save catcode of quotedbl \catcode`\"=12 % make quotedbl `other' % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % NOTE: plain TeX (and LaTeX) has the accent character positions hardwired to: % 16 for `dotlessi', 17 for `dotlessj', 18 for `grave', % 19 for `acute', 20 for `caron', 21 for `breve', % 22 for `macron', 23 for `ring', 24 for `cedilla', % 25 for `germandbls', 26 for `ae', 27 for `oe', % 28 for `oslash', 29 for `AE', 30 for 'OE', % 31 for `Oslash', 94 for `circumflex', 95 for `dotaccent', % 125 for `hungarumlaut', 126 for `tilde', 127 for `dieresis', % The *real* troublesome ones are `dotaccent' and `hungarumlaut' % (see page 356 of the TeX book for additional information) % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % The following sample redefinitions are for `Cork' encoding: % Tell TeX where various special characters are: \def\ae{^^e6} % ae (230) \def\oe{^^f7} % oe (247) \def\o{^^f8} % oslash (248) \def\AE{^^c6} % AE (198) \def\OE{^^d7} % OE (215) \def\O{^^d8} % Oslash (216) \def\i{^^19} % dotlessi (25) \def\ss{^^ff} % germandbls (255) % Following are constructed from pieces in CM, but exist in Type 1 text fonts \def\aa{^^e5} \def\AA{^^c5} % aring (229), Aring (197) % \def\cc{^^e7} \def\CC{^^c7} % ccedilla (231), Ccedilla (199) % NOTE: \cc may conflict with `carbon copy' in letter.sty ... \def\l{^^aa} \def\L{^^8a} % lslash (170), Lslash (138) \def\pounds{^^bf} % sterling (191) % NOTE: copyright, registered, trademark, and paragraph do not exist in Cork! % NOTE: dagger, daggerdbl do not exist in Cork! \def\S{^^9f} % section (159) % Cork also has the Icelandic characters: \def\th{^^fe} \def\TH{^^de} % thorn (254), Thorn (222) \def\dh{^^f0} \def\DH{^^d0} % eth (240), Eth (208) % Make it more convenient to use { } _ | \ glyphs direct from text font ? % \chardef\{=`\{ \chardef\}=`\} \chardef\_=`\_ % \chardef\|=`\| \chardef\backslash=`\\ % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % Following set up for the 58 accented characters/composites in text fonts: % aacute, acircumflex, adieresis, agrave, aring, atilde, ccedilla, % eacute, ecircumflex, edieresis, egrave, iacute, icircumflex, % idieresis, igrave, ntilde, oacute, ocircumflex, odieresis, ograve, otilde, % scaron, uacute, ucircumflex, udieresis, ugrave, yacute, ydieresis, zcaron, % Aacute, Acircumflex, Adieresis, Agrave, Aring, Atilde, Ccedilla, % Eacute, Ecircumflex, Edieresis, Egrave, Iacute, Icircumflex, % Idieresis, Igrave, Ntilde, Oacute, Ocircumflex, Odieresis, Ograve, Otilde, % Scaron, Uacute, Ucircumflex, Udieresis, Ugrave, Yacute, Ydieresis, Zcaron, % The following can use ready-made accented characters for everything, % or just the 58 that occur in normal text fonts depending on % whether \let\ecfonts\relax has been set above or not. % This affects those characters between 128 and 159 that use the accents: % acute, breve, caron, cedilla, dotaccent, ogonek, ring, hungarumlaut \def\`#1{% grave \if#1a^^e0\else% \char224 \if#1e^^e8\else% \char232 \if#1i^^ec\else% \char236 \if#1o^^f2\else% \char242 \if#1u^^f9\else% \char249 \if#1A^^c0\else% \char192 \if#1E^^c8\else% \char200 \if#1I^^cc\else% \char204 \if#1O^^d2\else% \char210 \if#1U^^d9\else% \char217 % \if#1{\i}^^ec\else% \char236 \if#1\i^^ec\else% \char236 {\accent0 #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \def\^#1{% circumflex \if#1a^^e2\else% \char226 \if#1e^^ea\else% \char234 \if#1i^^ee\else% \char238 \if#1o^^f4\else% \char244 \if#1u^^fb\else% \char251 \if#1A^^c2\else% \char194 \if#1E^^ca\else% \char202 \if#1I^^ce\else% \char206 \if#1O^^d4\else% \char212 \if#1U^^db\else% \char219 % \if#1{\i}^^ee\else% \char238 \if#1\i^^ee\else% \char238 {\accent2 #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \def\~#1{% tilde \if#1a^^e3\else% \char227 \if#1n^^f1\else% \char241 \if#1o^^f5\else% \char245 \if#1A^^c3\else% \char195 \if#1N^^d1\else% \char209 \if#1O^^d5\else% \char213 {\accent3 #1}% \fi\fi\fi\fi\fi\fi} \def\"#1{% dieresis \if#1a^^e4\else% \char228 \if#1e^^eb\else% \char235 \if#1i^^ef\else% \char239 \if#1o^^f6\else% \char246 \if#1u^^fc\else% \char252 \if#1y^^ff\else% \char255 \if#1A^^c4\else% \char196 \if#1E^^cb\else% \char203 \if#1I^^cf\else% \char207 \if#1O^^d6\else% \char214 \if#1U^^dc\else% \char220 \if#1Y^^9f\else% \char159 % \if#1{\i}^^ef\else% \char239 \if#1\i^^ef\else% \char239 {\accent4 #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \ifx\ecfonts\relax% % if we have cacute, lacute, nacute, sacute, zacute also \def\'#1{% acute \if#1a^^e1\else% \char225 \if#1c^^a2\else% \char162 \if#1e^^e9\else% \char233 \if#1i^^ed\else% \char237 \if#1l^^a8\else% \char168 \if#1n^^ab\else% \char171 \if#1o^^f3\else% \char243 \if#1s^^b1\else% \char177 \if#1u^^fa\else% \char250 \if#1y^^fd\else% \char253 \if#1z^^b9\else% \char185 \if#1A^^c1\else% \char193 \if#1C^^82\else% \char130 \if#1E^^c9\else% \char201 \if#1I^^cd\else% \char205 \if#1L^^88\else% \char136 \if#1N^^8b\else% \char139 \if#1O^^d3\else% \char211 \if#1S^^91\else% \char145 \if#1U^^da\else% \char218 \if#1Y^^dd\else% \char221 \if#1Z^^99\else% \char153 % \if#1{\i}^^ed\else% \char237 \if#1\i^^ed\else% \char237 {\accent1 #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \else % if we only have aacute, eacute, iacute, uacute, yacute \def\'#1{% acute \if#1a^^e1\else% \char225 \if#1e^^e9\else% \char233 \if#1i^^ed\else% \char237 \if#1o^^f3\else% \char243 \if#1u^^fa\else% \char250 \if#1y^^fd\else% \char253 \if#1A^^c1\else% \char193 \if#1E^^c9\else% \char201 \if#1I^^cd\else% \char205 \if#1O^^d3\else% \char211 \if#1U^^da\else% \char218 \if#1Y^^dd\else% \char221 % \if#1{\i}^^ed\else% \char237 \if#1\i^^ed\else% \char237 {\accent1 #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \fi \ifx\ecfonts\relax% % if we have ccaron, dcaron, ecaron, lcaron, ncaron, rcaron as well \def\v #1{% caron \if#1c^^a3\else% \char163 \if#1d^^a4\else% \char164 \if#1e^^a5\else% \char165 \if#1l^^a9\else% \char169 \if#1n^^ac\else% \char172 \if#1r^^b0\else% \char176 \if#1s^^b2\else% \char178 \if#1z^^ba\else% \char186 \if#1C^^83\else% \char131 \if#1D^^84\else% \char132 \if#1E^^85\else% \char133 \if#1L^^89\else% \char137 \if#1N^^8b\else% \char139 \if#1R^^8f\else% \char143 \if#1S^^92\else% \char146 \if#1Z^^97\else% \char151 {\accent7 #1}% \fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \else % if we only have scaron, zcaron, Scaron, Zcaron \def\v #1{% caron \if#1s^^b2\else% \char178 \if#1z^^ba\else% \char186 \if#1S^^92\else% \char146 \if#1Z^^97\else% \char151 {\accent7 #1}% \fi\fi\fi\fi} \fi \ifx\ecfonts\relax% % if uring, Uring are available (as well as aring, Aring): \def\r #1{% ring \if#1a^^e5\else% \char229 \if#1A^^c5\else% \char197 \if#1u^^b7\else% \char183 \if#1U^^97\else% \char151 {\accent6 #1}% \fi\fi\fi\fi} \else % if we only have aring and Aring: \def\r #1{% ring \if#1a^^e5\else% \char229 \if#1A^^c5\else% \char197 {\accent6 #1}% \fi\fi} \fi \ifx\ecfonts\relax% % if we have scedilla, tcedilla, Scedilla, Tcedilla as well \def\c #1{% cedilla \if#1c^^e7\else% \char231 \if#1s^^b3\else% \char179 \if#1t^^b5\else% \char181 \if#1C^^c7\else% \char199 \if#1S^^93\else% \char147 \if#1T^^95\else% \char149 {\setbox0\hbox{#1}\ifdim\ht0=1ex\accent11 #1 \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox0}}\fi}% \fi\fi\fi\fi\fi\fi} \else % if we only have ccedilla and Ccedilla \def\c #1{% cedilla \if#1c^^e7\else% \char231 \if#1C^^c7\else% \char199 {\setbox0\hbox{#1}\ifdim\ht0=1ex\accent11 #1 \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox0}}\fi}% \fi\fi} \fi \ifx\ecfonts\relax% % if ohungarumlaut, uhungarumlaut, Ohungarumlaut, Uhungarumlaut available \def\H #1{% hungarumlaut \if#1\o^^ae\else% \char174 \if#1\u^^b6\else% \char182 \if#1\O^^8e\else% \char142 \if#1\U^^96\else% \char150 {\accent5 #1}}% \fi\fi\fi\fi} \else % if we do not have any hungarumlaut accented chars \def\H #1{{\accent5 #1}}% \fi \ifx\ecfonts\relax% % if abreve, gbreve, Abreve, Gbreve available \def\u #1{% breve \if#1a^^a0\else% \char160 \if#1g^^a7\else% \char167 \if#1A^^80\else% \char128 \if#1G^^87\else% \char135 {\accent8 #1}% \fi\fi\fi\fi} \else % if we do not have the breve accented chars \def\u #1{{\accent8 #1}}% \fi \ifx\ecfonts\relax% % if we have aogonek, eogonek, Aogonek, Eogonek \def\k #1{% ogonek \if#1a^^a1\else% \char161 \if#1e^^a6\else% \char166 \if#1A^^81\else% \char129 \if#1E^^86\else% \char134 \setbox0\hbox{#1}\ifdim\ht0=1ex\accent12 #1 \else{\ooalign{\hidewidth\char12\hidewidth\crcr\unhbox0}}\fi}% \fi\fi\fi\fi} \else % ogonek (using ogonek at 12) \def\k #1{\setbox0\hbox{#1}\ifdim\ht0=1ex\accent12 #1 \else{\ooalign{\hidewidth\char12\hidewidth\crcr\unhbox0}}\fi}% \fi % AMS TeX handles dotaccent and macron differently... % Could do the whole thing with \D in that case ... \ifx\amstexloaded@\relax% \else \ifx\ecfonts\relax% % if we have zdotaccent, Idotaccent and Zdotaccent \def\.#1{% dotaccent \if#1\i^^69\else% \char105 \if#1z^^bb\else% \char187 \if#1I^^9d\else% \char157 \if#1Z^^9b\else% \char155 {\accent10 #1}% \fi\fi\fi\fi} \else % if we do not have dotaccent accented chars \def\.#1{{\accent10 #1}} % dotaccent % not in 95 \fi \fi % There are no macron accented characters in Cork (T1) encoding \ifx\amstexloaded@\relax% \else \def\= #1{{\accent9 #1}}\fi % macron %\fi % ? % dotaccent and macron have to be treated differently in AMS TeX \ifx\amstexloaded@\relax% \def\D#1{{\accent10 #1}} % dotaccent % not in 95 \def\B#1{{\accent9 #1}} % macron \let\graveaccent\` \let\acuteaccent\' \let\tildeaccent\~ \let\hataccent\^ \let\underscore\_ \fi % underline (using macron at 9) \def\b#1{\oalign{#1\crcr\hidewidth \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}% % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % For backward compatability, provide for use of font with TeX's \accent: % (It is however generally better to use ready-made accented characters, since % \accent creates explicit kerning, which breaks the hyphenation machinery) % NOTE: Use \buildcomposites only if you want to force accented/composite % characters to be constructed by `overprinting' base and accent. \def\buildcomposites{% \def\`##1{{\accent0 ##1}}% grave \def\'##1{{\accent1 ##1}}% acute \def\v##1{{\accent7 ##1}}% caron \def\u##1{{\accent8 ##1}}% breve \def\=##1{{\accent9 ##1}}% macron \def\^##1{{\accent2 ##1}}% circumflex \def\.##1{{\accent10 ##1}}% dotaccent \def\H##1{{\accent5 ##1}}% hungarumlaut \def\~##1{{\accent3 ##1}}% tilde \def\"##1{{\accent4 ##1}}% dieresis % underline and cedilla accents (macron at 9, cedilla at 11) \def\b##1{\oalign{##1\crcr\hidewidth \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}% \def\c##1{\setbox0\hbox{##1}\ifdim\ht0=1ex\accent11 ##1 \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox0}}\fi}% } % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % USING READY-MADE ACCENTED CHARACTERS: % We can also use pre-built accented character using pseudo ligatures --- % provided the TFM files for the text fonts have them wired in. % The following assumes that the TFM files have the required pseudo-ligatures. % Use -vadj on the command line with AFMtoTFM to set up these pseudo-ligatures. % This only works for the 58 ready-made accented/composite characters. \def\usecomposites{% \chardef\`=0 % grave \chardef\'=1 % acute \chardef\^=2 % circumflex \chardef\~=3 % tilde \chardef\"=4 % dieresis \chardef\v=7 % caron \chardef\c=11 % cedilla \chardef\==9 % macron % no macron accented chars in standard fonts \def\aa{\char6 a} \def\AA{\char6 A} % aring and Aring % underline and cedilla accents (macron at 9, cedilla at 11) \def\b#1{\oalign{#1\crcr\hidewidth \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}} \def\c#1{\setbox0\hbox{#1}\ifdim\ht0=1ex\accent11 #1% \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox0}}\fi} } %% NOTE: To use the above scheme, use \'a, NOT \'{a}, and \c c, NOT \c{c}. % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % \buildcomposites % build composites by overprinting base and accent % \usecomposites % use 58 ready-made composites via pseudo ligatures % Default is to use ready-made composites, and build others by overprinting. % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % Changes required in math maros when roman font is reencoded to `DC Cork'. % (An alternative is to draw the accents from the math fonts if they have them) \def\usetextaccents{ \def\acute{\mathaccent"7001 } % 1 acute \def\grave{\mathaccent"7000 } % 0 grave \def\ddot{\mathaccent"7004 } % 4 dieresis \def\tilde{\mathaccent"7003 } % 3 tilde \def\bar{\mathaccent"7009 } % 9 macron \def\breve{\mathaccent"7008 } % 8 breve \def\check{\mathaccent"7007 } % 7 caron \def\hat{\mathaccent"7002 } % 2 circumflex \def\dot{\mathaccent"700A } % 10 dotaccent } % Do not redefine accents in math mode when using MathTime, % since MathTime uses accents in the math fonts - not those in the text font % In LaTeX 2e check whether mathtime package has been loaded, % otherwise check whether \MTMI is defined \ifx\@ifpackageloaded\undefined\ifx\MTMI\undefined\usetextaccents\fi \else\@ifpackageloaded{mathtime}{}{\usetextaccents}\fi % --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- % NOTE: `DC Cork' has additional *caron, *ring, *cedilla accented chars % NOTE: `DC Cork' has accented characters using `hungarumlaut', `dotaccent', % NOTE: `DC Cork' has composite characters using `breve', `ogonek' % Remaining four `composites': aring, Aring, ccedilla, Ccedilla defined above. % Also: percentextender (zeroinferior), eng, Eng, ij, IJ, dcroat (dbar) % Also: hanging hyphen (sfthyphen) and cwm (nobreakzerospace) SS (Germandbls) % ************************************************************************** % If you want to use < for `guilsinglleft' and > for `guilsinglright' % then uncomment the following lines: % \catcode`\<=\active \chardef<=14 % \catcode`\>=\active \chardef>=15 % If you use < for `exclamdown', > for `questiondown', and | for `emdash' % then uncomment the following lines: % \catcode`\<=\active \chardef<=189 % \catcode`\>=\active \chardef>=190 % \catcode`\|=\active \chardef|=22 % \chardef\lq=96 \chardef\rq=39 % Note that \lq and \rq also provide access to ` and ' \catcode`\"=\dblcode % restore original catcode of quotedbl % If you use " for quotedblright then uncomment the following: % \catcode`\"=\active \chardef"=148 % For proper hyphenation of words with accented characters we need to let % TeX know how to translate words with accented characters to lower case. % Hence define \lccode so that one can use them in \hyphenation{...} % Just for fun, we also define \uccode, and set the \catcode to letter... % Mostly in Cork, accented characters (and a few special characters) % occur in upper case form in the range 128 - 159, which is offset % by 32 from the corresponding lower case forms in the range 160 - 191 % exception: 157 Idotaccent 189 exclamdown % exception: 158 dmacron 190 questiondown % exception: 159 section 191 sterling \bgroup \newcount\n\newcount\m\n=160\m=128 \loop\ifnum\n<191 \global\catcode\n=11\global\catcode\m=11 \global\lccode\n=\n\global\lccode\m=\n \global\uccode\m=\m\global\uccode\n=\m \advance\n by1\advance\m by1\repeat \egroup % Mostly in Cork, accented characters (and a few special characters) % occur in upper case form in the range 192 - 223, which is offset % by 32 from the corresponding lower case forms in the range 224 - 255. \bgroup \newcount\n\newcount\m\n=224\m=192 \loop\ifnum\n<256 \global\catcode\n=11\global\catcode\m=11 \global\lccode\n=\n\global\lccode\m=\n \global\uccode\m=\m\global\uccode\n=\m \advance\n by1\advance\m by1\repeat \egroup \endinput % ************************************************************************** % NOTE: definitions have embedded numbers that depend on the chosen encoding % These will need to be changed if you use an encoding other than `DC Cork'