From 07b24050f61cb529dad91d5ca871f01119b9a9b7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 10 Dec 2019 22:08:55 +0000 Subject: selinput split from oberdiek (10dec19) git-svn-id: svn://tug.org/texlive/trunk@53080 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/selinput/selinput.dtx | 851 ++++++++++++++++++++++ Master/texmf-dist/tex/latex/selinput/selinput.sty | 275 +++++++ 2 files changed, 1126 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/selinput/selinput.dtx create mode 100644 Master/texmf-dist/tex/latex/selinput/selinput.sty (limited to 'Master/texmf-dist/tex/latex/selinput') diff --git a/Master/texmf-dist/tex/latex/selinput/selinput.dtx b/Master/texmf-dist/tex/latex/selinput/selinput.dtx new file mode 100644 index 00000000000..80755bbc20c --- /dev/null +++ b/Master/texmf-dist/tex/latex/selinput/selinput.dtx @@ -0,0 +1,851 @@ +% \iffalse meta-comment +% +% File: selinput.dtx +% Version: 2019/12/09 v1.5 +% Info: Semi-automatic input encoding detection +% +% Copyright (C) +% 2007 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/selinput/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/selinput/issues +% +% This work consists of the main source file selinput.dtx +% and the derived files +% selinput.sty, selinput.pdf, selinput.ins, selinput.drv, +% selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, +% selinput-test4.tex, selinput-test5.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/selinput/selinput.dtx +% CTAN:macros/latex/contrib/selinput/selinput.pdf +% +% Unpacking: +% (a) If selinput.ins is present: +% tex selinput.ins +% (b) Without selinput.ins: +% tex selinput.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{selinput.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If selinput.drv is present: +% latex selinput.drv +% (b) Without selinput.drv: +% latex selinput.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex selinput.dtx +% makeindex -s gind.ist selinput.idx +% pdflatex selinput.dtx +% makeindex -s gind.ist selinput.idx +% pdflatex selinput.dtx +% +% Installation: +% TDS:tex/latex/selinput/selinput.sty +% TDS:doc/latex/selinput/selinput.pdf +% TDS:source/latex/selinput/selinput.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: selinput 2019/12/09 v1.5 Semi-automatic input encoding detection (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: selinput +Version: 2019/12/09 v1.5 + +Copyright (C) + 2007 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/selinput/issues + + +This work consists of the main source file selinput.dtx +and the derived files + selinput.sty, selinput.pdf, selinput.ins, selinput.drv, + selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, + selinput-test4.tex, selinput-test5.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{selinput.ins}{\from{selinput.dtx}{install}}% + \file{selinput.drv}{\from{selinput.dtx}{driver}}% + \usedir{tex/latex/selinput}% + \file{selinput.sty}{\from{selinput.dtx}{package}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* selinput.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `selinput.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{selinput.drv}% + [2019/12/09 v1.5 Semi-automatic input encoding detection (HO)]% +\documentclass{ltxdoc} +\ifx\Umathcode\undefined +\usepackage[T1]{fontenc} +\fi +\usepackage{textcomp} +\usepackage{lmodern} +\usepackage{holtxdoc}[2011/11/22] +\usepackage{color} +\begin{document} + \DocInput{selinput.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{selinput.drv} +% +% \title{The \xpackage{selinput} package} +% \date{2019/12/09 v1.5} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/selinput/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package selects the input encoding by specifying between +% input characters and their glyph names. +% \end{abstract} +% +% \tableofcontents +% +% \newcommand*{\EM}{\textcolor{blue}} +% \newcommand*{\ExampleText}{^^A +% Umlauts:\ \EM{\"A\"O\"U\"a\"o\"u\ss}^^A +% } +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% \LaTeX\ supports the direct use of 8-bit characters by means +% of package \xpackage{inputenc}. However you must know +% and specify the encoding, e.g.: +% \begin{quote} +% \ttfamily +% |\documentclass{article}|\\ +% |\usepackage[|\EM{latin1}|]{inputenc}|\\ +% |% or \usepackage[|\EM{utf8}|]{inputenc}|\\ +% |% or \usepackage[|\EM{??}|]{inputenc}|\\ +% |\begin{document}|\\ +% | |\ExampleText\\ +% |\end{document}| +% \end{quote} +% +% If the document is transferred in an environment that +% uses a different encoding, then there are programs that +% convert the input characters. Examples for conversion +% of file \xfile{test.tex} +% from encoding latin1 (ISO-8859-1) to UTF-8: +% \begin{quote} +% \ttfamily +% |recode ISO-8859-1..UTF-8 test.tex|\\ +% |recode latin1..utf8 test.tex|\\ +% |iconv --from-code ISO-8859-1|\\ +% \hphantom{iconv}| --to-code UTF-8|\\ +% \hphantom{iconv}| --output testnew.tex|\\ +% \hphantom{iconv}| test.tex|\\ +% |iconv -f latin1 -t utf8 -o testnew.tex test.tex| +% \end{quote} +% However, the encoding name for package \xpackage{inputenc} +% must be changed: +% \begin{quote} +% |\usepackage[latin1]{inputenc}| $\rightarrow$ +% |\usepackage[utf8]{inputenc}|\kern-4pt\relax +% \end{quote} +% Of course, unless you are using some clever editor +% that knows package \xpackage{inputenc}, recodes +% the file and adjusts the option at the same time. +% But most editors can perhaps recode the file, but +% they let the option untouched. +% +% Therefore package \xpackage{selinput} chooses another way for +% specifying the input encoding. The encoding name is not needed +% at all. Some 8-bit characters are identified by their glyph +% name and the package chooses an appropriate encoding, example: +% \begin{quote} +% \ttfamily +% |\documentclass{article}|\\ +% |\usepackage{selinput}|\\ +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% | Euro={|\EM{\texteuro}|}|,\\ +% |}|\\ +% |\begin{document}|\\ +% | |\ExampleText\\ +% |\end{document}| +% \end{quote} +% +% \subsection{User interface} +% +% \begin{declcs}{SelectInputEncodingList} \M{encoding list} +% \end{declcs} +% \cs{SelectInputEncodingList} expects a comma separated list of +% encoding names. Example: +% \begin{quote} +% |\SelectInputEncodingList{utf8,ansinew,mac-roman}| +% \end{quote} +% The encodings of package \xpackage{inputenx} are used as default. +% +% \begin{declcs}{SelectInputMappings} \M{mapping pairs} +% \end{declcs} +% A mapping pair consists of a glyph name and its input +% character: +% \begin{quote} +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% | Euro={|\EM{\texteuro}|}|,\\ +% |}| +% \end{quote} +% The supported glyph names can be found in file \xfile{ix-name.def} +% of project \xpackage{inputenx} \cite{inputenx}. The names are +% basically taken from Adobe's glyphlists \cite{adobe:glyphlist,adobe:aglfn}. +% As many pairs are needed as necessary to identify the encoding. +% Example with insufficient pairs: +% \begin{quote} +% \ttfamily +% |\SelectInputEncodingSet{latin1,latin9}|\\ +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% |}|\\ +% \ExampleText| and Euro: |\EM{\textcurrency} (wrong) +% \end{quote} +% The first encoding \xoption{latin1} passes the constraints given +% by the mapping pairs. However the Euro symbol is not part of +% the encoding. Thus a mapping pair with the Euro symbol +% solves the problem. In fact the symbol alone already succeeds in selecting +% between \xoption{latin1} and \xoption{latin9}: +% \begin{quote} +% \ttfamily +% |\SelectInputEncodingSet{latin1,latin9}|\\ +% |\SelectInputMappings{|\\ +% | Euro={|\EM{\texteuro}|},|\\ +% |}|\\ +% \ExampleText| and Euro: |\EM{\texteuro} +% \end{quote} +% +% \subsection{Options} +% +% \begin{description} +% \item[\xoption{warning}:] +% The selected encoding is written +% by \cs{PackageInfo} into the \xfile{.log} file only. +% Option \xoption{warning} changes it to \cs{PackageWarning}. +% Then the selected encoding is shown on the terminal as well. +% \item[\xoption{ucs}:] +% The encoding file \xfile{utf8x} of package \cs{ucs} requires +% that the package itself is loaded before. +% If the package is not loaded, then the option \xoption{ucs} +% will load package \xpackage{ucs} if the detected encoding is +% UTF-8 (limited to the preamble, packages cannot be loaded later). +% \item[\xoption{utf8=\dots}:] +% The option allows to specify other encoding files +% for UTF-8 than \LaTeX's \xfile{utf8.def}. For example, +% |utf8=utf-8| will load \xfile{utf-8.def} instead. +% \end{description} +% +% \subsection{Encodings} +% +% Package \xpackage{stringenc} \cite{stringenc} +% is used for testing the encoding. Thus the encoding +% name must be known by this package. Then the found +% encoding is loaded by \cs{inputencoding} by package +% \xpackage{inputenc} or \cs{InputEncoding} if package +% \xpackage{inputenx} is loaded. +% +% The supported encodings are present in the encoding list, +% thus usually the encoding names do not matter. +% If the list is set by \cs{SelectInputEncodingList}, +% then you can use the names that work for package +% \xpackage{inputenc} and are known by package \xpackage{stringenc}, +% for example: \xoption{latin1}, \xoption{x-iso-8859-1}. Encoding +% file names of package \xpackage{inputenx} are prefixed with \xfile{x-}. +% The prefix can be dropped, if package \xpackage{inputenx} is loaded. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{selinput} + [2019/12/09 v1.5 Semi-automatic input encoding detection (HO)]% +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{inputenc} +\RequirePackage{kvsetkeys}[2006/10/19] +\RequirePackage{stringenc}[2007/06/16] +\RequirePackage{kvoptions} +% \end{macrocode} +% \begin{macro}{\SelectInputEncodingList} +% \begin{macrocode} +\newcommand*{\SelectInputEncodingList}{% + \let\SIE@EncodingList\@empty + \kvsetkeys{SelInputEnc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SelectInputMappings} +% \begin{macrocode} +\newcommand*{\SelectInputMappings}[1]{% + \SIE@LoadNameDefs + \let\SIE@StringUnicode\@empty + \let\SIE@StringDest\@empty + \kvsetkeys{SelInputMap}{#1}% + \ifx\\SIE@StringUnicode\SIE@StringDest\\% + \PackageError{selinput}{% + No mappings specified% + }\@ehc + \else + \EdefUnescapeHex\SIE@StringUnicode\SIE@StringUnicode + \let\SIE@Encoding\@empty + \@for\SIE@EncodingTest:=\SIE@EncodingList\do{% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringUnicode + {utf16be}\SIE@EncodingTest{% + \ifx\SIE@temp\SIE@StringDest + \let\SIE@Encoding\SIE@EncodingTest + \fi + }{}% + \fi + }% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringDest + {ascii}{utf16be}{% + \def\SIE@Encoding{ascii}% + \SIE@Info{selinput}{% + Matching encoding not found, but input characters% + \MessageBreak + are 7-bit (possibly editor replacements).% + \MessageBreak + Hence using ascii encoding% + }% + }{}% + \fi + \ifx\SIE@Encoding\@empty + \PackageError{selinput}{% + Cannot find a matching encoding% + }\@ehd + \else + \ifx\SIE@Encoding\SIE@EncodingUTFviii + \SIE@LoadUnicodePackage + \ifx\SIE@UseUTFviii\@empty + \else + \let\SIE@Encoding\SIE@UseUTFviii + \fi + \fi + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname InputEncoding\endcsname\relax + \inputencoding\SIE@Encoding + \else + \InputEncoding\SIE@Encoding + \fi + \SIE@Info{selinput}{Encoding `\SIE@Encoding' selected}% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SIE@LoadNameDefs} +% \begin{macrocode} +\def\SIE@LoadNameDefs{% + \begingroup + \endlinechar=\m@ne + \catcode92=0 % backslash + \catcode123=1 % left curly brace/beginning of group + \catcode125=2 % right curly brace/end of group + \catcode37=14 % percent/comment character + \@makeother\[% + \@makeother\]% + \@makeother\.% + \@makeother\(% + \@makeother\)% + \@makeother\/% + \@makeother\-% + \let\InputenxName\SelectInputDefineMapping + \InputIfFileExists{ix-name.def}{}{% + \PackageError{selinput}{% + Missing `ix-name.def' (part of package `inputenx')% + }\@ehd + }% + \global\let\SIE@LoadNameDefs\relax + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SelectInputDefineMapping} +% \begin{macrocode} +\newcommand*{\SelectInputDefineMapping}[1]{% + \expandafter\gdef\csname SIE@@#1\endcsname +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\kv@set@family@handler{SelInputMap}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \PackageError{selinput}{% + Missing input character for `\kv@key'% + }\@ehc + \else + \@onelevel@sanitize\kv@value + \ifx\kv@value\@empty + \PackageError{selinput}{% + Input character got lost?\MessageBreak + Missing input character for `\kv@key'% + }\@ehc + \else + \@ifundefined{SIE@@\kv@key}{% + \PackageWarning{selinput}{% + Missing definition for `\kv@key'% + }% + }{% + \edef\SIE@StringDest{% + \SIE@StringDest + \kv@value + }% + \edef\SIE@StringUnicode{% + \SIE@StringUnicode + \csname SIE@@\kv@key\endcsname + }% + }% + \fi + \fi +} +% \end{macrocode} +% \begin{macrocode} +\kv@set@family@handler{SelInputEnc}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \ifx\SIE@EncodingList\@empty + \let\SIE@EncodingList\kv@key + \else + \edef\SIE@EncodingList{\SIE@EncodingList,\kv@key}% + \fi + \else + \@onelevel@sanitize\kv@value + \PackageError{selinput}{% + Illegal key value pair (\kv@key=\kv@value)\MessagBreak + in encoding list% + }\@ehc + \fi +} +% \end{macrocode} +% +% \begin{macro}{\SIE@LoadUnicodePackage} +% \begin{macrocode} +\def\SIE@LoadUnicodePackage{% + \@ifpackageloaded\SIE@UnicodePackage{}{% + \RequirePackage\SIE@UnicodePackage\relax + }% + \SIE@PatchUCS + \global\let\SIE@LoadUnicodePackage\relax +} +\let\SIE@show\show +\def\SIE@PatchUCS{% + \AtBeginDocument{% + \expandafter\ifx\csname ver@ucsencs.def\endcsname\relax + \else + \let\show\SIE@show + \fi + }% +} +\SIE@PatchUCS +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\AtBeginDocument{% + \let\SIE@LoadUnicodePackage\relax +} +% \end{macrocode} +% \begin{macro}{\SIE@EncodingUTFviii} +% \begin{macrocode} +\def\SIE@EncodingUTFviii{utf8} +\@onelevel@sanitize\SIE@EncodingUTFviii +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SIE@EncodingUTFviiix} +% \begin{macrocode} +\def\SIE@EncodingUTFviiix{utf8x} +\@onelevel@sanitize\SIE@EncodingUTFviiix +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\let\SIE@UnicodePackage\@empty +\let\SIE@UseUTFviii\@empty +\let\SIE@Info\PackageInfo +% \end{macrocode} +% \begin{macrocode} +\SetupKeyvalOptions{% + family=SelInput,% + prefix=SelInput@% +} +\define@key{SelInput}{utf8}{% + \def\SIE@UseUTFviii{#1}% + \@onelevel@sanitize\SIE@UseUTFviii +} +\DeclareBoolOption{ucs} +\DeclareVoidOption{warning}{% + \let\SIE@Info\PackageWarning +} +\ProcessKeyvalOptions{SelInput} +\ifSelInput@ucs + \def\SIE@UnicodePackage{ucs}% + \ifx\SIE@UseUTFviii\@empty + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + \fi +\else + \ifx\SIE@UseUTFviii\@empty + \@ifpackageloaded{ucs}{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + }{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviii + }% + \fi +\fi +% \end{macrocode} +% +% \begin{macro}{\SIE@EncodingList} +% \begin{macrocode} +\edef\SIE@EncodingList{% + utf8,% + x-iso-8859-1,% + x-iso-8859-15,% + x-cp1252,% ansinew + x-mac-roman,% + x-iso-8859-2,% + x-iso-8859-3,% + x-iso-8859-4,% + x-iso-8859-5,% + x-iso-8859-6,% + x-iso-8859-7,% + x-iso-8859-8,% + x-iso-8859-9,% + x-iso-8859-10,% + x-iso-8859-11,% + x-iso-8859-13,% + x-iso-8859-14,% + x-iso-8859-15,% + x-mac-centeuro,% + x-mac-cyrillic,% + x-koi8-r,% + x-cp1250,% + x-cp1251,% + x-cp1257,% + x-cp437,% + x-cp850,% + x-cp852,% + x-cp855,% + x-cp858,% + x-cp865,% + x-cp866,% + x-nextstep,% + x-dec-mcs% +}% +\@onelevel@sanitize\SIE@EncodingList +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{selinput}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/selinput/selinput.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/selinput/selinput.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `selinput' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/selinput.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{selinput.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip selinput.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex selinput.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% selinput.sty & tex/latex/selinput/selinput.sty\\ +% selinput.pdf & doc/latex/selinput/selinput.pdf\\ +% selinput.dtx & source/latex/selinput/selinput.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{selinput.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex selinput.dtx +%makeindex -s gind.ist selinput.idx +%pdflatex selinput.dtx +%makeindex -s gind.ist selinput.idx +%pdflatex selinput.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% \bibitem{inputenx} +% Heiko Oberdiek: \textit{The \xpackage{inputenx} package}; +% 2007-04-11 v1.1; +% \CTANpkg{inputenx}. +% +% \bibitem{adobe:glyphlist} +% Adobe: \textit{Adobe Glyph List}; +% 2002-09-20 v2.0; +% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/glyphlist.txt}. +% +% \bibitem{adobe:aglfn} +% Adobe: \textit{Adobe Glyph List For New Fonts}; +% 2005-11-18 v1.5; +% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/aglfn.txt}. +% +% \bibitem{stringenc} +% Heiko Oberdiek: \textit{The \xpackage{stringenc} package}; +% 2007-06-16 v1.1; +% \CTANpkg{stringenc}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2007/06/16 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/06/20 v1.1} +% \item +% Requested date for package \xpackage{stringenc} fixed. +% \end{Version} +% \begin{Version}{2007/09/09 v1.2} +% \item +% Line end fixed. +% \end{Version} +% \begin{Version}{2016/05/16 v1.3} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2016/05/17 v1.4} +% \item +% Documentation updates: Avoid T1 encoding with Unicode \TeX. +% \end{Version} +% \begin{Version}{2019/12/09 v1.5} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/tex/latex/selinput/selinput.sty b/Master/texmf-dist/tex/latex/selinput/selinput.sty new file mode 100644 index 00000000000..9449f157117 --- /dev/null +++ b/Master/texmf-dist/tex/latex/selinput/selinput.sty @@ -0,0 +1,275 @@ +%% +%% This is file `selinput.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% selinput.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: selinput +%% Version: 2019/12/09 v1.5 +%% +%% Copyright (C) +%% 2007 Heiko Oberdiek +%% 2016-2019 Oberdiek Package Support Group +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% https://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainers of this work are +%% Heiko Oberdiek and the Oberdiek Package Support Group +%% https://github.com/ho-tex/selinput/issues +%% +%% +%% This work consists of the main source file selinput.dtx +%% and the derived files +%% selinput.sty, selinput.pdf, selinput.ins, selinput.drv, +%% selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, +%% selinput-test4.tex, selinput-test5.tex. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{selinput} + [2019/12/09 v1.5 Semi-automatic input encoding detection (HO)]% +\RequirePackage{inputenc} +\RequirePackage{kvsetkeys}[2006/10/19] +\RequirePackage{stringenc}[2007/06/16] +\RequirePackage{kvoptions} +\newcommand*{\SelectInputEncodingList}{% + \let\SIE@EncodingList\@empty + \kvsetkeys{SelInputEnc}% +} +\newcommand*{\SelectInputMappings}[1]{% + \SIE@LoadNameDefs + \let\SIE@StringUnicode\@empty + \let\SIE@StringDest\@empty + \kvsetkeys{SelInputMap}{#1}% + \ifx\\SIE@StringUnicode\SIE@StringDest\\% + \PackageError{selinput}{% + No mappings specified% + }\@ehc + \else + \EdefUnescapeHex\SIE@StringUnicode\SIE@StringUnicode + \let\SIE@Encoding\@empty + \@for\SIE@EncodingTest:=\SIE@EncodingList\do{% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringUnicode + {utf16be}\SIE@EncodingTest{% + \ifx\SIE@temp\SIE@StringDest + \let\SIE@Encoding\SIE@EncodingTest + \fi + }{}% + \fi + }% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringDest + {ascii}{utf16be}{% + \def\SIE@Encoding{ascii}% + \SIE@Info{selinput}{% + Matching encoding not found, but input characters% + \MessageBreak + are 7-bit (possibly editor replacements).% + \MessageBreak + Hence using ascii encoding% + }% + }{}% + \fi + \ifx\SIE@Encoding\@empty + \PackageError{selinput}{% + Cannot find a matching encoding% + }\@ehd + \else + \ifx\SIE@Encoding\SIE@EncodingUTFviii + \SIE@LoadUnicodePackage + \ifx\SIE@UseUTFviii\@empty + \else + \let\SIE@Encoding\SIE@UseUTFviii + \fi + \fi + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname InputEncoding\endcsname\relax + \inputencoding\SIE@Encoding + \else + \InputEncoding\SIE@Encoding + \fi + \SIE@Info{selinput}{Encoding `\SIE@Encoding' selected}% + \fi + \fi +} +\def\SIE@LoadNameDefs{% + \begingroup + \endlinechar=\m@ne + \catcode92=0 % backslash + \catcode123=1 % left curly brace/beginning of group + \catcode125=2 % right curly brace/end of group + \catcode37=14 % percent/comment character + \@makeother\[% + \@makeother\]% + \@makeother\.% + \@makeother\(% + \@makeother\)% + \@makeother\/% + \@makeother\-% + \let\InputenxName\SelectInputDefineMapping + \InputIfFileExists{ix-name.def}{}{% + \PackageError{selinput}{% + Missing `ix-name.def' (part of package `inputenx')% + }\@ehd + }% + \global\let\SIE@LoadNameDefs\relax + \endgroup +} +\newcommand*{\SelectInputDefineMapping}[1]{% + \expandafter\gdef\csname SIE@@#1\endcsname +} +\kv@set@family@handler{SelInputMap}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \PackageError{selinput}{% + Missing input character for `\kv@key'% + }\@ehc + \else + \@onelevel@sanitize\kv@value + \ifx\kv@value\@empty + \PackageError{selinput}{% + Input character got lost?\MessageBreak + Missing input character for `\kv@key'% + }\@ehc + \else + \@ifundefined{SIE@@\kv@key}{% + \PackageWarning{selinput}{% + Missing definition for `\kv@key'% + }% + }{% + \edef\SIE@StringDest{% + \SIE@StringDest + \kv@value + }% + \edef\SIE@StringUnicode{% + \SIE@StringUnicode + \csname SIE@@\kv@key\endcsname + }% + }% + \fi + \fi +} +\kv@set@family@handler{SelInputEnc}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \ifx\SIE@EncodingList\@empty + \let\SIE@EncodingList\kv@key + \else + \edef\SIE@EncodingList{\SIE@EncodingList,\kv@key}% + \fi + \else + \@onelevel@sanitize\kv@value + \PackageError{selinput}{% + Illegal key value pair (\kv@key=\kv@value)\MessagBreak + in encoding list% + }\@ehc + \fi +} +\def\SIE@LoadUnicodePackage{% + \@ifpackageloaded\SIE@UnicodePackage{}{% + \RequirePackage\SIE@UnicodePackage\relax + }% + \SIE@PatchUCS + \global\let\SIE@LoadUnicodePackage\relax +} +\let\SIE@show\show +\def\SIE@PatchUCS{% + \AtBeginDocument{% + \expandafter\ifx\csname ver@ucsencs.def\endcsname\relax + \else + \let\show\SIE@show + \fi + }% +} +\SIE@PatchUCS +\AtBeginDocument{% + \let\SIE@LoadUnicodePackage\relax +} +\def\SIE@EncodingUTFviii{utf8} +\@onelevel@sanitize\SIE@EncodingUTFviii +\def\SIE@EncodingUTFviiix{utf8x} +\@onelevel@sanitize\SIE@EncodingUTFviiix +\let\SIE@UnicodePackage\@empty +\let\SIE@UseUTFviii\@empty +\let\SIE@Info\PackageInfo +\SetupKeyvalOptions{% + family=SelInput,% + prefix=SelInput@% +} +\define@key{SelInput}{utf8}{% + \def\SIE@UseUTFviii{#1}% + \@onelevel@sanitize\SIE@UseUTFviii +} +\DeclareBoolOption{ucs} +\DeclareVoidOption{warning}{% + \let\SIE@Info\PackageWarning +} +\ProcessKeyvalOptions{SelInput} +\ifSelInput@ucs + \def\SIE@UnicodePackage{ucs}% + \ifx\SIE@UseUTFviii\@empty + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + \fi +\else + \ifx\SIE@UseUTFviii\@empty + \@ifpackageloaded{ucs}{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + }{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviii + }% + \fi +\fi +\edef\SIE@EncodingList{% + utf8,% + x-iso-8859-1,% + x-iso-8859-15,% + x-cp1252,% ansinew + x-mac-roman,% + x-iso-8859-2,% + x-iso-8859-3,% + x-iso-8859-4,% + x-iso-8859-5,% + x-iso-8859-6,% + x-iso-8859-7,% + x-iso-8859-8,% + x-iso-8859-9,% + x-iso-8859-10,% + x-iso-8859-11,% + x-iso-8859-13,% + x-iso-8859-14,% + x-iso-8859-15,% + x-mac-centeuro,% + x-mac-cyrillic,% + x-koi8-r,% + x-cp1250,% + x-cp1251,% + x-cp1257,% + x-cp437,% + x-cp850,% + x-cp852,% + x-cp855,% + x-cp858,% + x-cp865,% + x-cp866,% + x-nextstep,% + x-dec-mcs% +}% +\@onelevel@sanitize\SIE@EncodingList +%% \section{Installation} +\endinput +%% +%% End of file `selinput.sty'. -- cgit v1.2.3