summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:57:12 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:57:12 +0000
commiteb43bfc9f989a6d7956ddaf41b8a2980284cfb68 (patch)
tree648e0eac644b49899ec61bdfc26431268d13fcf7
parent4ea980a2a2cd5fb7db0061c5d227d536a8764fca (diff)
trunk/Master/texmf-dist/source/latex/rtkinenc
git-svn-id: svn://tug.org/texlive/trunk@496 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/source/latex/rtkinenc/rtkinenc.dtx583
-rw-r--r--Master/texmf-dist/source/latex/rtkinenc/rtkinenc.ins36
2 files changed, 619 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.dtx b/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.dtx
new file mode 100644
index 00000000000..99ac9d0f1ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.dtx
@@ -0,0 +1,583 @@
+% \CheckSum{407}
+%
+% \iffalse
+%
+%<*driver>
+\documentclass{ltxdoc}
+\DeclareRobustCommand\package[1]{\textsf{#1}}
+\title{The \package{rtkinenc} package}
+\author{Lars Hellstr\"om%
+ \thanks{E-mail: \texttt{Lars.Hellstrom@math.umu.se}}}
+\begin{document}
+\maketitle
+\DocInput{rtkinenc.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \begin{abstract}
+% The \package{rtkinenc} package is functionally similar to the
+% standard \LaTeX\ package \package{inputenc}---both set up active
+% characters so that input character outside 7-bit ASCII are
+% converted to the corresponding \LaTeX\ commands. Names of commands
+% in \package{rtkinenc} have been selected so that it can read
+% \package{inputenc} encoding definition files, and the aim is that
+% \package{rtkinenc} should be backwards compatible with
+% \package{inputenc}. \package{rtkinenc} is not a new version of
+% \package{inputenc} though, nor is it part of standard \LaTeX.
+%
+% The main difference between the two packages lies in the view on the
+% input. With \package{inputenc}, the non-ASCII characters in the
+% input are considered as shorthand representations of the ``true''
+% document contents (usually one or several commands), and the
+% conversion is therefore irreversible. With \package{rtkinenc} the
+% input file itself is considered the true document, and the
+% conversion of non-ASCII characters to \LaTeX\ commands is merely
+% done becuase it is the first step on the preferred route to typeset
+% output. If the command is for an unavailable text symbol, then it is
+% possible to return to the raw input and try some fallback method of
+% typesetting the character.
+%
+% The \package{inputenc} approach is natural for normal \LaTeX\
+% documents, but the \package{rtkinenc} approach is advantageous for
+% program source code, where the \emph{true} meaning of a file is not
+% defined by \TeX, but by the compiler, interpreter, or whatever.
+% \end{abstract}
+%
+%
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*pkg>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{rtkinenc}
+ [2000/01/24 v1.0 Rethinking input encoding package]
+% \end{macrocode}
+%
+%
+% \subsection{Basic machanisms}
+%
+%
+% \begin{macro}{\RIE@last@char}
+% |\RIE@last@char| is a |\count| register for storing the code
+% of the raw character currently being typeset. It is minus one
+% if no raw character is being typeset. This register should always
+% be set globally.
+% \begin{macrocode}
+\newcount\RIE@last@char
+\global\RIE@last@char=\m@ne
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\RieC}
+% \begin{macro}{\RIE@char}
+% \begin{macro}{\RIE@text@char}
+% \begin{macro}{\RIE@code@char}
+% The syntax for the |\RieC| command is
+% \begin{quote}
+% |\RieC|\marg{code}\marg{definition}
+% \end{quote}
+% Here \meta{code} is assumed to be a sequence of digits giving some
+% raw character code, and \meta{definition} is assumed to be robust
+% \LaTeX\ code for typesetting (some representation of) that raw
+% character. |\RieC| is used as \package{inputenc}'s |\IeC|
+% command---an |\RieC| with arguments form the definition of an
+% active character---but it carries extra information in the
+% \meta{code} argument.
+%
+% Depending on what the control sequences |\protect| and |\RIE@char|
+% are there are three different things this can do.
+% \begin{itemize}
+% \item It can execute the \meta{definition} straight off. This
+% happens when |\protect| is |\@typeset@protect| and |\RIE@char|
+% is |\RIE@text@char|.
+% \item It can set |\RIE@last@char| to \meta{code}, then execute
+% the \meta{definition}, and finally set |\RIE@last@char| to minus
+% one. This happens when |\protect| is |\@typeset@protect| and
+% |\RIE@char| is |\RIE@code@char|.
+%
+% Setting |\RIE@last@char| like that has the side-effect of
+% prohibiting kerns and ligatures between the \meta{defintion}
+% and what surrounds it. Therefore it is inapproriate to have
+% |\RIE@char| equal to |\RIE@code@char| in many types of text, and
+% by default it will not be.
+% \item It can expand to itself.\footnote{Unless some command in the
+% \meta{definition} was defined using \cs{DeclareRobustCommand}, in
+% which case it is the one level expansion of that command that
+% will expand to itself. It all works out right in the end anyway.}
+% This happens when |\protect| is not |\@typeset@protect|, e.g.\
+% when writing to a file.
+% \end{itemize}
+%
+% |\RieC| cannot be defined using |\Declare|\-|Robust|\-|Command|,
+% since that would insert |\protect|s that would prohibit normal
+% kerning and ligaturing. Therefore the command robustness is
+% maintained through an ad hoc definition (the |\def|). The reason for
+% starting with an |\@ifundefined| is that the user shouldn't get
+% less info about a redefinition than he\slash she would with a
+% |\Declare|\-|Robust|\-|Command|.
+% \begin{macrocode}
+\@ifundefined{RieC}{}{%
+ \PackageError{rtkinenc}{Redefining \protect\RieC}{%
+ I had expected \protect\RieC\space to be undefined.\MessageBreak
+ Since it wasn't, there's a chance I have\MessageBreak
+ broken something.\MessageBreak\@ehc
+ }
+}
+\def\RieC{%
+ \ifx \protect\@typeset@protect
+ \expandafter\RIE@char
+ \else
+ \noexpand\RieC
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\let\RIE@text@char=\@secondoftwo
+\let\RIE@char=\RIE@text@char
+% \end{macrocode}
+% \begin{macrocode}
+\def\RIE@code@char#1#2{%
+ \global\RIE@last@char=#1
+ #2%
+ \global\RIE@last@char=\m@ne
+}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{RieBC}
+% \begin{macro}{RIE@both@char}
+% The syntax for the |\RieBC| command is
+% \begin{quote}
+% |\RieBC|\marg{code}\marg{text definition}\marg{math definition}
+% \end{quote}
+% Here \meta{code} is assumed to be a sequence of digits giving some
+% raw character code, whereas \meta{text definition} and
+% \meta{math definition} are assumed to be robust \LaTeX\ code for
+% typesetting (some representation of) that raw character in text and
+% math mode, respectively. |\RieBC| is used like |\RieC|, but offers
+% the possibility of alternative definitions for increased
+% typesetting quality.
+%
+% \begin{macrocode}
+\@ifundefined{RieBC}{}{%
+ \PackageError{rtkinenc}{Redefining \protect\RieBC}{%
+ I had expected \protect\RieBC\space to be undefined.\MessageBreak
+ Since it wasn't, there's a chance I have\MessageBreak
+ broken something.\MessageBreak\@ehc
+ }
+}
+\def\RieBC{%
+ \ifx \protect\@typeset@protect
+ \expandafter\RIE@both@char
+ \else
+ \noexpand\RieBC
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\RIE@both@char#1#2#3{%
+ \ifx \RIE@char\RIE@code@char
+ \global\RIE@last@char=#1
+ \fi
+ \ifmmode #3\else #2\fi
+ \ifx \RIE@char\RIE@code@char
+ \global\RIE@last@char=\m@ne
+ \fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+%
+% \begin{macro}{\TextSymbolUnavailable}
+% \begin{macro}{\@@TextSymbolUnavailable}
+% \begin{macro}{\SetUnavailableAction}
+% \begin{macro}{\RIE@symbol@unavailable}
+% The only way to know whether a particular text command could be
+% rendered as intended or not is to seize control of the standard
+% \LaTeX\ command |\Text|\-|Symbol|\-|Unavailable|. This command will
+% then be given a new definition which selects whether some raw
+% character fallback macro or the standard \LaTeX\ error message
+% should be given. The raw character fallback macro can be set using
+% the |\Set|\-|Unavailable|\-|Action| command.
+%
+% Before seizing control of |\Text|\-|Symbol|\-|Unavailable|, one must
+% make sure that it does not have its autoload definition. Then the
+% \LaTeX\ definition is saved away in |\@@Text|\-|Symbol|\-^^A
+% |Unavailable|.
+% \begin{macrocode}
+\def\@tempa{\@autoerr\TextSymbolUnavailable}
+\ifx \@tempa\TextSymbolUnavailable
+ \@autoerr\relax
+\fi
+\let\@@TextSymbolUnavailable=\TextSymbolUnavailable
+% \end{macrocode}
+%
+% Then the new definition is given. It is pretty straightforward.
+% \begin{macrocode}
+\def\TextSymbolUnavailable{%
+ \ifnum \m@ne<\RIE@last@char
+ \expandafter\RIE@symbol@unavailable \expandafter\RIE@last@char
+ \else
+ \expandafter\@@TextSymbolUnavailable
+ \fi
+}
+\PackageInfo{rtkinenc}{Redefining \protect\TextSymbolUnavailable}
+% \end{macrocode}
+%
+% The |\SetUnavailableAction| command locally defines the |\RIE@|\-^^A
+% |symbol@|\-|unavailable| macro, which is executed instead of the
+% standard \LaTeX\ |\Text|\-|Symbol|\-|Unavailable| when the text
+% symbol in case was the representation of a raw input character.
+% |\Set|\-|Unavailable|\-|Action| is used as
+% \begin{quote}
+% |\SetUnavailableAction|\marg{definition}
+% \end{quote}
+% where \meta{definition} is like the last argument of |\newcommand|.
+% The \meta{definition} may contain |#1| and |#2|, where |#1| will
+% contain the current raw character number and |#2| will contain the
+% text command for which no definition could be found.
+% \begin{macrocode}
+\newcommand\SetUnavailableAction{\def\RIE@symbol@unavailable##1##2}
+% \end{macrocode}
+% The default fallback action is to call |\@@Text|\-|Symbol|\-^^A
+% |Unavailable|, but most of the definition deals with recognizing
+% and handling the case that the input character hasn't been
+% declared, rather than that its definition is not available.
+% Normally, this shouldn't be used at all; instead the user should
+% have installed another fallback.
+% \begin{macrocode}
+\SetUnavailableAction{%
+ \ifx #2\relax
+ \begingroup
+ \let\RIE@char=\RIE@text@char
+ \RIE@undefined{#1}%
+ \endgroup
+ \else
+ \@@TextSymbolUnavailable{#2}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+%
+% \begin{macro}{\RIE@undefined}
+% The |\RIE@undefined| macro is used in the definition of input
+% characters which are not defined in the current input encoding. It
+% takes one argument, namely the code for the character in question.
+% In text mode, this is an error. In code mode, it is passed on to
+% the unavailable-action macro |\RIE@|\-|symbol@|\-|unavailable|. The
+% default value of |\RIE@|\-|symbol@|\-|unavailable| recognizes the
+% |\relax| passed as second argument below as a flag that in reality
+% it's the input character that hasn't been defined.
+% \begin{macrocode}
+\def\RIE@undefined#1{%
+ \ifx \RIE@char\RIE@text@char
+ \PackageError{rtkinenc}{%
+ Input character #1 is undefined\MessageBreak
+ in inputencoding \RIE@encoding}\@eha
+ \else
+ \RIE@symbol@unavailable{#1}\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\InputModeCode}
+% \begin{macro}{\InputModeText}
+% \begin{macro}{\IfInputModeCode}
+% The |\InputModeCode| and |\InputModeText| commands switch to the
+% `code' and `text' respectively modes for the \package{rtkinenc}
+% package. They both act locally, since it is often convenient to have
+% the previous mode restored at the end of an environment.
+%
+% The |\IfInputModeCode| command can be used to test which mode the
+% \package{rtkinenc} package currently is in. Is is used as
+% \begin{quote}
+% |\IfInputModeCode|\marg{code}\marg{text}
+% \end{quote}
+% This will expand to \meta{code} or \meta{text} when the current mode
+% is code mode or text mode, respectively.
+% \begin{macrocode}
+\newcommand\InputModeCode{\let\RIE@char=\RIE@code@char}
+\newcommand\InputModeText{\let\RIE@char=\RIE@text@char}
+\newcommand\IfInputModeCode{%
+ \ifx \RIE@char\RIE@code@char
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+%
+% \subsection{Setting the input encoding}
+%
+% The first two commands are identical; the duplication is only for
+% being compabile with \package{inputenc}. The reason that there are two
+% different commands in \package{inputenc} is that |\Declare|\-|Input|^^A
+% \-|Math| saves a little memory by not taking special measures to see
+% to that a space (if there is any) that follows the input character is
+% not gobbled in case it is written to a temporary file and subsequently
+% read back. Saving that small amount of memory is not the aim for
+% \package{rtkinenc}, which is instead using up even more memory by
+% including the character code in the definition.
+%
+% \begin{macro}{\DeclareInputText}
+% \begin{macro}{\DeclareInputMath}
+% These two commands are used as
+% \begin{quote}
+% |\DeclareInputText|\marg{slot}\marg{definition}\\
+% |\DeclareInputMath|\marg{slot}\marg{definition}
+% \end{quote}
+% This makes the active character whose character code is
+% \meta{slot} a parameterless macro whose expansion is
+% \begin{quote}
+% |\RieC|\marg{slot (sanitized)}\marg{definition}
+% \end{quote}
+% \meta{slot (sanitized)} has the same numerical value as
+% \meta{slot}, but consists only of decimal digits. \meta{definition}
+% is the same in both cases.
+%
+% \begin{macrocode}
+\expandafter\ifx \csname DeclareInputText\endcsname\relax
+ \begingroup
+ \catcode\z@=13
+ \gdef\DeclareInputText#1#2{%
+ \@inpenc@test
+ \begingroup
+ \uccode\z@=#1%
+ \uppercase{%
+ \endgroup
+ \expandafter\def \expandafter^^@%
+ }\expandafter{\expandafter\RieC \expandafter{\number#1}{#2}}%
+ }%
+ \endgroup
+\else
+ \PackageError{rtkinenc}{\protect\DeclareInputText\space
+ already defined}{\@ehd\MessageBreak
+ Likely cause: you are already using the inputenc package.}
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\@ifundefined{DeclareInputMath}{%
+ \let\DeclareInputMath=\DeclareInputText
+}{%
+ \PackageError{rtkinenc}{\protect\DeclareInputMath\space
+ already defined}{\@ehd\MessageBreak
+ Likely cause: you are already using the inputenc package.}
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\DeclareInputBoth}
+% The |\DeclareInputBoth| command is similar to |\Declare|\-^^A
+% |Input|\-|Text| and |\Declare|\-|Input|\-|Math| commands, but it
+% offers an extra feature---the text and math definitions of a
+% character can be different. |\Declare|\-|Input|\-|Both| is used as
+% \begin{quote}
+% |\DeclareInputBoth|\marg{slot}\marg{text}\marg{math}
+% \end{quote}
+% where \meta{text} and \meta{math} are the text and math mode
+% definitions respectively.
+% \begin{macrocode}
+\expandafter\ifx \csname DeclareInputBoth\endcsname\relax
+ \begingroup
+ \catcode\z@=13
+ \gdef\DeclareInputBoth#1#2#3{%
+ \@inpenc@test
+ \begingroup
+ \uccode\z@=#1%
+ \uppercase{%
+ \endgroup
+ \expandafter\def \expandafter^^@%
+ }\expandafter{\expandafter\RieBC \expandafter{\number#1}%
+ {#2}{#3}%
+ }%
+ }%
+ \endgroup
+\else
+ \PackageError{rtkinenc}{\protect\DeclareInputBoth\space
+ already defined}\@ehd
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\inputencoding}
+% \begin{macro}{\@inpenc@test}
+% \begin{macro}{\RIE@encoding}
+% The |\inputencoding| command sets the current input encoding to be
+% the one specified in its only argument. First all characters are
+% set to be active and defined as |\RIE@undefined|\marg{slot}, except
+% for Null (|^^@|), tab (|^^I|), line feed (|^^J|), form feed (|^^L|),
+% carriage return (|^^M|), and space--|~| which are left as they were.
+% Then |#1.def| is inputed; this file is expected to contain all the
+% |\DeclareInput|\textellipsis\ commands that are needed for the
+% wanted input encoding.
+%
+% Besides that, |\inputencoding| also does a check to see that the
+% file |#1.def| actually did execute some |\DeclareInput|^^A
+% \textellipsis\ command. Since it wouldn't at all surprise me if
+% someone likes to tinker with this test, it is done exactly as in
+% \package{inputenc}.
+%
+% |\inputencoding| should not be used in horizontal mode since space
+% tokens within the file inputed will produce unwanted spaces in the
+% output.
+%
+% |\RIE@encoding| stores the name of the current input encoding. It is
+% used in an error message by |\RIE@undefined|.
+%
+% \begin{macrocode}
+\def\inputencoding#1{%
+ \gdef\@inpenc@test{\global\let\@inpenc@test\relax}%
+ \protected@edef\RIE@encoding{#1}%
+ \ifvmode
+ \RIE@loop\^^A\^^H%
+ \RIE@loop\^^K\^^K%
+ \RIE@loop\^^N\^^_%
+ \RIE@loop\^^?\^^ff%
+ \input{#1.def}%
+ \fi
+ \ifx \@inpenc@test\relax \else
+ \PackageWarning{rtkinenc}%
+ {No characters defined\MessageBreak
+ by input encoding change to `#1'}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\RIE@loop}
+% The |\RIE@loop| command makes characters |#1| to |#2| inclusive
+% active and undefined.
+% \begin{macrocode}
+\begingroup
+ \catcode\z@=\active
+ \gdef\RIE@loop#1#2{%
+ \@tempcnta=`#1\relax
+ \count@=\uccode\z@
+ \loop
+ \catcode\@tempcnta\active
+ \uccode\z@=\@tempcnta
+ \uppercase{%
+ \expandafter\def \expandafter^^@\expandafter{%
+ \expandafter\RIE@undefined\expandafter{\the\@tempcnta}%
+ }%
+ }%
+ \ifnum `#2>\@tempcnta
+ \advance \@tempcnta \@ne
+ \repeat
+ \uccode\z@=\count@
+ }
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Miscellanea}
+%
+% \begin{macro}{\TypesetHexNumber}
+% \begin{macro}{\TypesetOctalNumber}
+% In many computer languages, special character escape sequences based
+% on character codes must be written with the character code in
+% hexadecimal or octal notation. These commands take a \TeX\ number
+% in the interval 0--255 as argument and typesets it using the
+% hexadecimal (figures |0|--|9| and |a|--|f|) or octal (figures
+% |0|--|7|) notation. No font changes or \TeX\ mode changes are made.
+% |\TypesetHexNumber| always typesets two characters,
+% |\TypesetOctalNumber| always typesets three characters.
+%
+% Care has been taken to see to that every count register can be used
+% as the argument of these two macros, and they only make local
+% assignments. They do not check that the argument is in range, though.
+% \begin{macrocode}
+\newcommand\TypesetHexNumber[1]{%
+ \begingroup
+ \count@=#1\relax
+ \chardef\@tempa=\count@
+ \divide \count@ \sixt@@n
+ \ifcase\count@
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or a\or b\or
+ c\or d\or e\else f%
+ \fi
+ \multiply \count@ -\sixt@@n
+ \advance \count@ \@tempa
+ \ifcase\count@
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or a\or b\or
+ c\or d\or e\else f%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand\TypesetOctalNumber[1]{%
+ \begingroup
+ \count@=#1\relax
+ \chardef\@tempa=\count@
+ \divide \count@ 64\relax
+ \the\count@
+ \multiply \count@ -64%
+ \advance \count@ \@tempa
+ \chardef\@tempa=\count@
+ \divide \count@ 8\relax
+ \the\count@
+ \multiply \count@ -8%
+ \advance \count@ \@tempa
+ \the\count@
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\verifycharcode}
+% The |\verifycharcode| command is used as
+% \begin{quote}
+% |\verifycharcode|\marg{character}\marg{code}
+% \end{quote}
+% Here \meta{character} can be any \meta{character token} (as defined
+% in \emph{The \TeX book}); e.g.\ a control sequence whose name
+% consists of one charater. \meta{code} can be any valid \meta{number}.
+% If \meta{code} is not the character code of the \meta{character},
+% then |\verifycharcode| makes a warning about this.
+%
+% The purpose of this command is to detect when the code of some
+% character used in a document is changed. Today these things happen
+% mainly when transferring a document between two systems which use
+% different encodings, and it is usually the right thing do. Some
+% computer programs (and now I mean the source) do however rely on the
+% exact character codes used in them, and documents containing such
+% programs may use the |\verifycharcode| to test that none of the
+% critical characters have been altered.
+% \begin{macrocode}
+\newcommand\verifycharcode[2]{%
+ \ifnum `#1=#2 \else
+ \PackageWarning{rtkinenc}{%
+ Input character with code \number#2\MessageBreak
+ should be the character with code \number`#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Option processing}
+%
+% Each option is interpreted as the name of an input encoding. That
+% input encoding definition file is inputed.
+%
+% \begin{macrocode}
+\DeclareOption*{\inputencoding{\CurrentOption}}
+\ProcessOptions
+%</pkg>
+% \end{macrocode}
+%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.ins b/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.ins
new file mode 100644
index 00000000000..4e6d76b8501
--- /dev/null
+++ b/Master/texmf-dist/source/latex/rtkinenc/rtkinenc.ins
@@ -0,0 +1,36 @@
+% This file is the docstrip installation script for the rtkinenc package.
+%
+% It may be distributed under the conditions of the LaTeX
+% Project Public License, either version 1.2 of this license or
+% (at your option) any later version. The latest version of this
+% license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% Copyright 2000 Lars Hellstr\"om
+
+\input docstrip.tex
+
+\preamble
+
+This file may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.2 of this
+license or (at your option) any later version. The latest version
+of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.2 or later is part of all distributions of LaTeX
+version 1999/12/01 or later.
+
+This file may only be distributed together with a copy of the source
+file from which it was generated. You may distribute that source file
+without this generated file.
+
+\endpreamble
+
+\usedir{tex/latex/misc}
+
+\generate{\file{rtkinenc.sty}{\from{rtkinenc.dtx}{pkg}}}
+
+\endbatchfile
+\endinput