%"/a" produces "a with a comma" (e.g. br/azowy); similarly the remaining %diacritical marks can be attached to e, c, l, n, o, s and their %capitalized counterparts. "/z" stands for a dotted z (like in ka/zdy); %accented z is obtained by typing "/x" (e.g. pa/xdziernik). %Additionally "/," represents Polish opening quotation mark ",,", %and "/@" stands for "No", the abbreviation of the word "number". % %---------------------------------------------------------------------- % 20:58:42 5/20/1988 %---------------------------------------------------------------------- % module POLTAILS % % % macro package for PLAIN TeX % ---public domain--- % % % SPECIFICATION: % defines macros \Polisha \PolishA \Polishe \PolishE % for Polish tailed characters, % \Polishl and \PolishL for Polish suppressed l's % and, moreover, macro \polopenquot as Polish % opening quotation symbol, macro \numbersymbol for No % % % IMPLEMENTATION OF module POLTAILS: % %-------- % % authors: B. JACKOWSKI - T. HOLDYS % %-------- \catcode `\@=11 % %-------- \font\fivegr@@k=cmmi5 % \font\sevengr@@k=cmmi7 % \newdimen\d@pthcorr \d@pthcorr=1pt \newdimen\prop@rshift \newdimen\taild@pth %-------- \def\@@lap#1{\vbox to 0pt{\hbox{\raise\d@pthcorr\llap{#1}}\vss}}% %-------- \def\k@@pk@rns#1#2{% #1{\setbox0=\hbox{#2}\kern-\wd0\copy0\kern-\wd0}#1}% %-------- \def\gr@@kchar{\noindent\char'023\kern\prop@rshift}% % \prop@rshift>0 - shift to the left % \prop@rshift<0 - shift to the right %-------- \def\s@tprop@rshift#1{\prop@rshift=#1em}% \prop@rshift should be assigned % in an appropriate moment !!! %-------- \def\stor@curr@ntfont{\relax}% to be developed %-------- \def\s@tprop@rfont#1{% to be developed \ifnum \the\lccode`#1=`#1 % small letter \fivegr@@k\else% \ifnum \the\uccode`#1=`#1 % capital letter \sevengr@@k% \fi\fi% \taild@pth=1ex \advance\taild@pth by -\d@pthcorr} %-------- \def\tail@d#1#2{% #1% preceeding implicit kerns are preserved (e.g., W\\aw\\oz is O.K.) \stor@curr@ntfont% \s@tprop@rshift{#2}% {\s@tprop@rfont{#1}\setbox0=\@@lap{\gr@@kchar}% \dp0=\taild@pth \box0}}% %-------- \def\Polisha{\tail@d{a}{0.0}}% \def\PolishA{\k@@pk@rns{A}{\tail@d{A}{0.05}}}% \def\Polishe{\tail@d{e}{0.05}}% \def\PolishE{\tail@d{E}{0.05}}% %-------- \def\supr@ss#1#2{% kerns may occur only to the right of `L' \leavevmode \rlap{\kern#1\char'40}#2}% #1<0 - shift to the left % #1>0 - shift to the right %-------- \def\Polishl{\leavevmode \/\supr@ss{0em}l}% something seems to be wrong in % available pixels - hence italic % correction here \def\PolishL{\supr@ss{0.1em}L}% %-------- \newdimen\polop@nquotdim% \def\polopenquot{% \setbox0=\hbox{''}\polop@nquotdim=\ht0% \setbox0=\hbox{,}\advance\polop@nquotdim by -\ht0% \setbox1=\hbox{\lower\polop@nquotdim\hbox{''}}% \ht1=\ht0 \dp1=\dp0% \box1}% %-------- \def\@@symbol{\vrule height 1ex width 0.2em depth -0.9ex% \llap{\char'27 \kern -0.28em }\hskip 0.1em}% %-------- \def\numbersymbol{N\kern0.05em\@@symbol}% %-------- \catcode `\@=12% %---------------------------------------------------------------------- %---------------------------------------------------------------------- % module POLSET - uses module POLTAILS % % % macro package for PLAIN TeX % ---public domain--- % % % SPECIFICATION % \\#1 produces the Polish diacritical character % made of a letter #1 % may be used with letters a, c, e, l, n, o, s, x, z, % and A, C, E, L, N, O, S, X, Z, % \\x and \\X represent accented z and Z, resp., like in "\\xd\\xb\\lo", % \\z and \\Z represent dotted z and Z, resp., like in "ka\\zdy", % \\@ repesents No' symbol, % \\, repesents Polish opening quotation mark,i.e. ",,"; % % % GENERAL REMARKS % the module should work well with a basic set of CM or AM fonts; % due to especial arragement of macros accomplishing % Polish "tailed" letters implicit kernings are preserved; % % IT DOES NOT WORK IN MATHMODE!!! - embeding in boxes might help... % % (also typewriter fonts does not provide necessary types) % % % IMPLEMENTATION OF MODULE polset: % %-------- % author: M. RYCKO % \let\previoustwobackslashes=\\% \def\\#1{% \if a#1\Polisha% \else\if c#1\'c% \else\if e#1\Polishe% \else\if l#1\Polishl% \else\if n#1\'n% \else\if o#1\'o% \else\if s#1\'s% \else\if x#1\'z% \else\if z#1\.z% \else\if A#1\PolishA% \else\if C#1\'C% \else\if E#1\PolishE% \else\if L#1\PolishL% \else\if N#1\'N% \else\if O#1\'O% \else\if S#1\'S% \else\if X#1\'Z% \else\if Z#1\.Z% \else\if @#1\numbersymbol% \else\if ,#1\polopenquot% \else% \ifhmode % \hskip2pt \vrule height1.5ex width0.5em depth0.2ex \hskip2pt % \else % \ifvmode % \vskip2pt \hrule height1.5ex width0.5em depth0.2ex \vskip2pt % \fi % \fi % \message{\string\\#1 - NIE MA TAKIEGO ZNAKU}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% %---------------------------------------------------------------------- % after using \switchtoslash \\ retains its previous meaning % and the normal slash `/' can be used instead of \\; % two consecutive backslashes yield the normal slash character %---------------------------------------------------------------------- \def\normalslash{/} \begingroup \catcode`\/=\active \global\def\switchtoslash{% \catcode`\/=\active% \def/##1{% \ifx /##1\normalslash \else\if a##1\Polisha% \else\if c##1\'c% \else\if e##1\Polishe% \else\if l##1\Polishl% \else\if n##1\'n% \else\if o##1\'o% \else\if s##1\'s% \else\if x##1\'z% \else\if z##1\.z% \else\if A##1\PolishA% \else\if C##1\'C% \else\if E##1\PolishE% \else\if L##1\PolishL% \else\if N##1\'N% \else\if O##1\'O% \else\if S##1\'S% \else\if X##1\'Z% \else\if Z##1\.Z% \else\if @##1\numbersymbol% \else\if ,##1\polopenquot% \else% \ifhmode % \hskip2pt \vrule height1.5ex width0.5em depth0.2ex \hskip2pt % \else % \ifvmode % \vskip2pt \hrule height1.5ex width0.5em depth0.2ex \vskip2pt % \fi % \fi % \message{\string/##1 - NIE MA TAKIEGO ZNAKU}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% }% \let\\=\previoustwobackslashes}% \endgroup \switchtoslash \endinput