/usr/share/texlive/texmf-dist/tex/plain/js-misc/sperr.tex is in texlive-plain-extra 2014.20141024-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | % $Id: sperr.tex,v 1.2 1995/04/16 23:27:04 schrod Exp $
%---------------------------------------------------------
% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>.
% This file is distributed without any copyright restriction.
%
% Makro-Datei zum Sperren von Zeichenfolgen.
%
% Bitte sperrt damit keine Gemeinen.
%
% Joachim Schrod
%
%
% Benutzung: \sperr{TEXT}{KERNING}
% Wenn in TEXT mehrere Token als eines behandelt werden sollen
% (z.B. Umlaute), m\"ussen diese Tokens geklammert werden.
%
\ifx \CatEscape\undefined
\chardef\CatEscape=0
\chardef\CatOpen=1
\chardef\CatClose=2
\chardef\CatIgnore=9
\chardef\CatLetter=11
\chardef\CatOther=12
\chardef\CatActive=13 % \active of plain.tex
\chardef\CatInvalid=15
\chardef\CatAtCode=\catcode`\@
\chardef\CatUsCode=\catcode`\_
\fi
\catcode`\@=\CatLetter % top level macro file
\catcode`\_=\CatLetter
\begingroup
\catcode`\$=\CatIgnore
\catcode`\:=\CatIgnore
\message{Text sperren, $Revision: 1.2 $}
\endgroup
\let\end_list=\relax
\edef\empty_list{\end_list}
\def\split#1#2\end_list{%
\edef\sec_char{#1}%
\toks@={#2\end_list}%
}
\def\do_split{%
\expandafter \split \the\toks@ \end_list
}
\def\next_char{%
\edef\first_char{\sec_char}%
\do_split
}
\newdimen\sperr_width
\def\sperr#1#2{% % Text, Sperrbreite
\toks@={#1\end_list}%
\sperr_width=#2\relax
\do_split
\next_char % initialize pipeline
\ifx \sec_char\empty_list #1% % nur 1 Zeichen
\else \do_sperr
\fi
}
\newif \if@loop
\def\do_sperr{%
\loop
\set_char % Zeichen und nachfolgendes Kerning setzen
\next_char
\ifx \sec_char\empty_list
\first_char
\@loopfalse
\else \@looptrue
\fi
\if@loop
\repeat
}
\newbox\kern_box
\newdimen\kern_width
\def\set_char{%
\setbox\kern_box=\hbox{\first_char\sec_char}%
\kern_width=\wd\kern_box
\setbox\kern_box=\hbox{\hbox{\first_char}\hbox{\sec_char}}%
\advance \kern_width by -\wd\kern_box
\advance \kern_width by \sperr_width
\first_char \kern\kern_width
}
\catcode`\@=\CatAtCode
\catcode`\_=\CatUsCode
\endinput
|