%+----------------------------------------------------------------------------+ %| Fichier IBM.MAC : graphismes repr‚sentant les touches sp‚ciales d'un | %| clavier IBM | %| Michel Quercia, 27/10/1994 | %+----------------------------------------------------------------------------+ %------------------------------------------------------------------ S‚curit‚ % Le code qui suit permet de ne charger les macros que la premiŠre fois % en cas d'appels multiples : \ifx\ibmcharge\undefined\let\next\relax\else\let\next\endinput\fi\next \def\ibmcharge{IBM charg‚} %--------------------------------------------------------------------------- % autorise @ dans les noms \catcode 64=11 %------------------------------------------------------- D‚tection du format % Les macros \ifplainmt et \ifplainlb sont d‚finies dans CARNOT.MAC % Je les recopie ici pour le cas o— CARNOT.MAC n'est pas utilis‚. % Pour ‚viter une double d‚finition,je teste d'abord si \ifplainmt et \ifplainlb % sont connus de TeX. % Comme CARNOT.MAC fait de mˆme, l'ordre d'inclusion de ces deux fichiers est % alors indiff‚rent. \ifx\ifplainmt\undefined \csname newif\endcsname\ifplainmt % plain-mt ? \def\temp{plain-mt} \csname ifx\endcsname\fmtname\temp\plainmttrue\else\plainmtfalse\fi \fi \ifx\ifplainlb\undefined \csname newif\endcsname \ifplainlb % plain-mb ? \def\temp{plain-lb} \csname ifx\endcsname\fmtname\temp\plainlbtrue\else\plainlbfalse\fi \fi %------------------------------------------------------------------- Fontes \font\@circle=lcircle10 % quarts de cercle \font\@Msam =msam7 % pointes de flŠches verticales \font\@msam =msam5 % pointes de flŠches horizontales \font\@Msbm =msbm7 % trait oblique pour HOME % les inscriptions dans les touches sont faites en sanss‚rif 8pt \ifplainmt \font\@sansserif=hv at 8pt \else\ifplainlb \font\@sansserif=lsr at 8pt \else \font\@sansserif=cmss8 \fi\fi %------------------------------------------------------- flŠches de direction \def\@flechekern{\kern0.8pt} % cale pour les flŠches horizontales \def\UP{\kern2.5pt\vrule height 3pt depth 0pt width 0.4pt\kern-2.9pt \raise3pt\hbox{\@Msam\char78}} \def\DOWN{\kern2.5pt\vrule height 7pt depth -2pt width 0.4pt\kern-2.9pt {\@Msam\char72}} \def\PGUP{\kern2.5pt\vrule height 3pt depth 0.3pt width 0.4pt\kern-2.1pt \vrule height 2.2pt depth -1.9pt width 3.8pt\kern-3.8pt \vrule height 1.4pt depth -1.1pt width 3.8pt\kern-3.8pt \vrule height 0.6pt depth -0.3pt width 3.8pt\kern-4.6pt \raise3pt\hbox{\@Msam\char78}} \def\PGDOWN{\kern2.5pt\vrule height 7.3pt depth -2pt width 0.4pt\kern-2.1pt \vrule height 6.7pt depth -6.4pt width 3.8pt\kern-3.8pt \vrule height 5.9pt depth -5.6pt width 3.8pt\kern-3.8pt \vrule height 5.1pt depth -4.8pt width 3.8pt\kern-4.6pt {\@Msam\char72}} \def\LEFT{\kern-0.8pt\@flechekern \raise2.4pt\hbox{\@msam\char74}\kern-0.9pt \vrule height 3.9pt depth-3.5pt width 2.1pt\@flechekern} \def\RIGHT{\@flechekern\vrule height 3.9pt depth-3.5pt width 2.1pt\kern-0.9pt \raise2.4pt\hbox{\@msam\char73}\kern-0.8pt\@flechekern} \def\BACK{\raise2.4pt\hbox{\@msam\char74}\kern-0.9pt \vrule height 4.1pt depth-3.3pt width 8.1pt\kern0.8pt} \def\TAB{\kern0.8pt\vrule height 2.9pt depth 0.3pt width 0.4pt\kern-0.8pt {\@msam\char74}\kern-0.9pt \vrule height 1.5pt depth-1.1pt width 7.7pt\kern-12.2pt \vrule height 5.0pt depth-4.6pt width 7.7pt\kern-0.9pt \raise3.5pt\hbox{\@msam\char73}\kern-0.8pt \vrule height 6.4pt depth -3.2pt width 0.4pt\kern0.8pt} \def\ENTER{{\@msam\char74}\kern-0.9pt \vrule height 1.5pt depth-1.1pt width 7.7pt \vrule height 5pt depth-1.1pt width 0.4pt \kern0.8pt} \def\HOME{\@flechekern\kern-0.8pt \raise 1.35pt\hbox{\@Msam\char72}\kern-2.4pt \raise0.5pt\hbox{\@Msbm\char114}\kern-0.8pt\@flechekern} \def\SHIFT{{\kern 0.8pt \ifplainmt \dimen0=0.3pt % correction de largeur \else\ifplainlb \dimen0=0.55pt % variable selon la fonte utilis‚e \else \dimen0=0.6pt \fi\fi \setbox0=\hbox{\kern-\dimen0\sevensy\char94\kern-\dimen0}% \dimen0=6.7pt \advance\dimen0-\ht0 \dimen1=\dimen0 \advance\dimen1 -0.3pt \dimen2=\wd0 \advance\dimen2 -1.8pt \divide\dimen2 by 2 \vrule height\dimen0 depth -\dimen1 width \dimen2 \vrule height\dimen0 depth 0pt width 0.3pt \vrule height 0.3pt depth 0pt width 1.2pt \vrule height\dimen0 depth 0pt width 0.3pt \vrule height\dimen0 depth -\dimen1 width \dimen2 \kern-\wd0\raise\dimen0\box0 \kern 0.8pt}} \def\LOCK{{\ifplainmt \dimen0=0.4pt\dimen1=0pt \else\ifplainlb\dimen0=0.7pt\dimen1=0pt \else \dimen0=0.6pt\dimen1=0.3pt \fi\fi \setbox0=\hbox{\kern-\dimen0\sevensy\char91\kern-\dimen0}% \dimen0=\ht0\advance\dimen0 by -0.3pt \vrule height\ht0 depth-\dimen0 width \wd0\kern-\wd0 \raise\ht0\hbox to \wd0{\hss\fivesy\char92\hss}\kern-\wd0 \raise0.5\ht0\hbox to \wd0{\hfil\tenrm.\hfil}\kern-\wd0 \lower\dimen1\box0}} \def\@SPACE#1{\kern0.8pt \vrule height 0.5pt depth 0.5pt width 0.3pt \vrule height -0.2pt depth 0.5pt width #1% \vrule height 0.5pt depth 0.5pt width 0.3pt \kern 0.8pt} \def\SPACE{\@SPACE{3pt}} %---------------------------------------------------- cadre autour d'une touche \def\toucheronde#1{{% \leavevmode \let\@flechekern=\relax % tasse les fl. horizontales \setbox0=\hbox{\@sansserif#1}% % texte ou symbole \dp0=0pt\ht0=7pt% % cale de hauteur \dimen0=8pt% % largeur = 8pt \loop\ifdim\dimen0<\wd0\advance\dimen0 by 6pt\repeat % + multiple de 6pt \advance\dimen0 by 3pt % + 3pt autour \setbox0=\hbox to \dimen0{\vrule\hfil\box0\hfil\vrule}% % traits verticaux \offinterlineskip % empilement exact \@circle % fonte 1/4 cercle \setbox1=\hbox{\char3}\dimen0=\wd1\divide\dimen0by2 % mesure le rayon \dimen1=\wd0\advance\dimen1\wd1\advance\dimen1-0.4pt % correction de largeur \setbox2=\hbox to\dimen1{% % trac‚ sup‚rieur \char3\hskip-\dimen0 % 1/4 sud->est \hrulefill % trait \hskip\dimen0\char0}% % 1/4 ouest->sud \wd2=\wd0 % correction de largeur \setbox3=\hbox to\dimen1{% % trac‚ inf‚rieur \char2\hskip-\dimen0 % 1/4 nord->est \hrulefill % trait \hskip\dimen0\char1}% % 1/4 ouest->nord \wd3=\wd0 % correction de largeur \kern0.8pt % cale de largeur \vbox{\vskip-\ht1\box2\vtop{\box0\box3\vskip-\dp1}}% % assemblage final \kern0.8pt}} \def\touchecarree#1{{% \leavevmode \let\@flechekern=\relax % tasse les fl. horizontales \setbox0=\hbox{\@sansserif#1}% % texte ou symbole \dp0=2pt\ht0=9pt% % cale de hauteur \dimen0=8pt% % largeur = 8pt \loop\ifdim\dimen0<\wd0\advance\dimen0 by 6pt\repeat % + multiple de 6pt \advance\dimen0 by 3pt % + 3pt autour \setbox0=\hbox to \dimen0{\vrule\hfil\box0\hfil\vrule width 1.2pt}% % traits v \kern0.8pt % cale de largeur \vbox{\hrule\vtop{\box0\hrule height 1.2pt}}% % assemblage final \kern0.8pt}} \let\touche=\toucheronde % \wide et \Wide augmentent la largeur de ce qui suit de 12pt, ou 24pt \def\wide{\@wide{6pt}} \def\Wide{\@wide{12pt}} \def\@wide#1#2{{\futurelet\test\@@wide#2\@wide{#1}}} \def\@@wide#1\@wide#2{% \dimen0=#2% \ifx\test\SPACE\dimen0=2\dimen0\advance\dimen0 3pt\@SPACE{\the\dimen0}% \else\kern\dimen0{#1}\kern\dimen0 \fi} %---------------------------------------------------------- s‚quence de touches \def\touches#1{\suitetouches#1\suitetouches} \def\suitetouches#1{% \ifx\suitetouches#1\let\next=\relax \else \touche{#1}\let\next=\suitetouches \fi\next} %--------------------------------------------------------------------- Termin‚ \catcode64=\active