From 6276ddaa8561fe1603991a3adaca08e7d63578e7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 21 Apr 2022 20:16:55 +0000 Subject: unisc (21apr22) git-svn-id: svn://tug.org/texlive/trunk@63101 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/unisc/README.txt | 10 + Master/texmf-dist/doc/latex/unisc/unisc.pdf | Bin 0 -> 133592 bytes Master/texmf-dist/source/latex/unisc/unisc.dtx | 496 +++++++++++++++++++++++++ Master/texmf-dist/source/latex/unisc/unisc.ins | 55 +++ Master/texmf-dist/tex/latex/unisc/unisc.sty | 274 ++++++++++++++ 5 files changed, 835 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/unisc/README.txt create mode 100644 Master/texmf-dist/doc/latex/unisc/unisc.pdf create mode 100644 Master/texmf-dist/source/latex/unisc/unisc.dtx create mode 100644 Master/texmf-dist/source/latex/unisc/unisc.ins create mode 100644 Master/texmf-dist/tex/latex/unisc/unisc.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/unisc/README.txt b/Master/texmf-dist/doc/latex/unisc/README.txt new file mode 100644 index 00000000000..74fb043a2c2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/unisc/README.txt @@ -0,0 +1,10 @@ +------------------------------------------------------- +Package: unisc +Version: v0.1 (21 April, 2022) +Author: निरंजन +Description: Unicode small caps with Xe/LuaLaTeX. +Repository: https://puszcza.gnu.org.ua/projects/unisc +License: GPLv3+, GFDLv1.3+ +------------------------------------------------------- + + diff --git a/Master/texmf-dist/doc/latex/unisc/unisc.pdf b/Master/texmf-dist/doc/latex/unisc/unisc.pdf new file mode 100644 index 00000000000..97b1df006ca Binary files /dev/null and b/Master/texmf-dist/doc/latex/unisc/unisc.pdf differ diff --git a/Master/texmf-dist/source/latex/unisc/unisc.dtx b/Master/texmf-dist/source/latex/unisc/unisc.dtx new file mode 100644 index 00000000000..676bcf4a2d2 --- /dev/null +++ b/Master/texmf-dist/source/latex/unisc/unisc.dtx @@ -0,0 +1,496 @@ +% \iffalse meta-comment +% +% File: unisc.dtx +% ------------------------------------------------------- +% Package: unisc +% Version: v0.1 (21 April, 2022) +% Author: निरंजन +% Description: Unicode small caps with Xe/LuaLaTeX. +% Repository: https://puszcza.gnu.org.ua/projects/unisc +% License: GPLv3+, GFDLv1.3+ +% ------------------------------------------------------- +% +% LaTeX Package unisc v0.1 +% Copyright © 2022 निरंजन +% +% This program is free software: you can redistribute it +% and/or modify it under the terms of the GNU General Public +% License as published by the Free Software Foundation, +% either version 3 of the License, or (at your option) any +% later version. +% +% This program is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied +% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +% PURPOSE. See the GNU General Public License for more +% details. +% +% You should have received a copy of the GNU General Public +% License along with this program. If not, see +% . +% +% The current maintainer of this work is निरंजन. +% +% This work consists of the files unisc.dtx +% unisc.ins +% and the derived file unisc.sty. +% \fi +% \iffalse +%<*internal> +\iffalse +% +%<*readme> +------------------------------------------------------- +Package: unisc +Version: v0.1 (21 April, 2022) +Author: निरंजन +Description: Unicode small caps with Xe/LuaLaTeX. +Repository: https://puszcza.gnu.org.ua/projects/unisc +License: GPLv3+, GFDLv1.3+ +------------------------------------------------------- +% +%<*internal> +\fi +% +%<*driver|package> +\def\uniscname{unisc} +\def\uniscversion{0.1} +\def\uniscdate{2022-04-21} +\def\uniscdescription{% + Unicode small caps with Xe/LuaLaTeX.% +} +% +%<*driver> +\documentclass{l3doc} +\usepackage{xcolor} +\usepackage{fontawesome5} +\usepackage{hologo} +\DeclareRobustCommand\XeLaTeX{\hologo{XeLaTeX}} +\usepackage{unisc} +\usepackage{hyperref} +\hypersetup{% + unicode,% + colorlinks,% + urlcolor=blue!60!black,% + linkcolor=red!60!black,% + citecolor=green!60!black,% + pdftitle={The unisc package},% + pdfauthor={निरंजन},% + pdfsubject={\uniscdescription} +}% +\usepackage{mdframed} +\usepackage{fontspec} +\newfontfamily\charissil{CharisSIL} +\newfontfamily\devanagari[% + Script=Devanagari,% + Scale=0.8% +]% +{Shobhika} +\NewCommandCopy\oldamp\& +\def\&{\textit{\oldamp}} + +\begin{document} + \DocInput{\uniscname.dtx} +\end{document} +% +% \fi +% \title{The \pkg{\uniscname} package} +% \author{^^A +% {\devanagari निरंजन}\thanks{^^A +% \href{mailto:hi.niranjan@pm.me}^^A +% {\faIcon{envelope} \texttt{hi.niranjan@pm.me}}^^A +% }^^A +% } +% \date{^^A +% Version \uniscversion\ --- \uniscdate\\[1ex]^^A +% {^^A +% \small +% \faIcon{globe}^^A +% \quad +% \url{https://puszcza.gnu.org.ua/projects/unisc}\\[0.5ex]^^A +% \faIcon{bug}^^A +% \quad +% \url{https://puszcza.gnu.org.ua/bugs/?group=unisc}^^A +% }^^A +% } +% +% \maketitle +% +% \begin{documentation} +% \begin{abstract} +% \LaTeX\ produces small caps with +% \cs{textsc}\marg{text} or \cs{scshape}. Both of these +% commands don't produce small caps in Unicode. If the +% output text is copied and pasted somewhere it shows +% the same characters used in the input. This package +% aims to internally convert all the characters provided +% to the commands mentioned above. It assumes that the +% file using this package is compiled with Lua/\XeLaTeX\ +% \& a good Unicode font which has the small caps +% characters, e.g., +% \href{https://ctan.org/pkg/charissil}{Charis +% SIL}. Please note that as there are no Unicode slots +% allotted to upper case small caps, both the lower case +% and upper case input will be converted to only one +% relevant Unicode character in the output, e.g., +% \verb|\textsc{Hh}| will produce the same character +% twice unlike \verb|\oldtextsc{Hh}|. +% \end{abstract} +% +% \tableofcontents +% +% \vfill +% +% {^^A +% \setlength{\parindent}{0pt} +% \LaTeX\ package \pkg{unisc} +% +% Copyright © 2022 {\devanagari निरंजन} +% +% Permission is granted to copy, distribute and/or +% modify this document under the terms of the GNU Free +% Documentation License, Version 1.3 or any later +% version published by the Free Software Foundation; +% with no Invariant Sections, no Front-Cover Texts, and +% no Back-Cover Texts. A copy of the license is included +% in the section entitled ``GNU Free Documentation +% License''.^^A +% }^^A +% +% \newpage +% +% \section{Documentation} +% +% This package provides the following two macros. +% +% \subsection{Macros} +% +% This package renews two basic \LaTeX\ commands, i.e., +% \cs{scshape} \& \cs{textsc}. To keep the original +% definitions available for the users, I have copied the +% old commands \& provided two of the following macros +% which behave exactly like their old variants. +% +% \begin{function}{\oldscshape} +% \begin{syntax} +% \{\cs{oldscshape} \meta{text}\} +% \end{syntax} +% \end{function} +% +% \begin{function}{\oldtextsc} +% \begin{syntax} +% \cs{oldtextsc}\marg{text} +% \end{syntax} +% \end{function} +% +% \subsection{The \enquote*{x} factor} +% +% This package doesn't support the small capital shape +% of the character \enquote*{x} as there is no Unicode +% number allotted for a \enquote*{small capital x} as of +% now. The package simply prints the small x (for both +% \verb|\textsc{x}| \& \verb|\textsc{X}|) as it is of +% the same height of the other small capital letters +% along with a warning message that warns the users +% about this deviation. +% +% \subsection{Example} +% +% \begin{mdframed} +% \begin{verbatim} +% \documentclass{article} +% \usepackage{unisc} +% \usepackage{fontspec} +% \setmainfont{CharisSIL}% https://ctan.org/pkg/charissil + +% \begin{document} +% \noindent\textbf{Fake small caps:} +% {\oldscshape hello world} \oldtextsc{hello world}. + +% \noindent\textbf{Unicode small caps:} +% {\scshape hello world} \textsc{hello world}. +% \end{document} +% \end{verbatim} +% \end{mdframed} +% +% This produces the following: +% +% \begin{mdframed} +% \charissil +% \noindent\textbf{Fake small caps:} +% {\oldscshape hello world} \oldtextsc{hello world}. +% +% \noindent\textbf{Unicode small caps:} +% {\scshape hello world} \textsc{hello world}. +% \end{mdframed} +% \end{documentation} +% +% \newpage +% +% \begin{implementation} +% \section{Implementation} +% Provide package with its basic information. +% \begin{macrocode} +%<@@=unisc> +%<*package> +\ProvidesPackage{unisc}[2022/04/21 v0.1 +Unicode small caps with Lua/XeLaTeX.] +% \end{macrocode} +% Load the necessary packages. +% \begin{macrocode} +\RequirePackage{pgfparser} +\RequirePackage{xpatch} +% \end{macrocode} +% Make copies of old commands. +% \begin{macrocode} +\NewCommandCopy\oldtextsc\textsc +\NewCommandCopy\oldscshape\scshape +% \end{macrocode} +% As pointed out by Florent Rougon in +% \href{https://topanswers.xyz/transcript?room=2050&id=138859#c138859}% +% {this} comment; the definition of \cs{oldtextsc} uses +% \cs{scshape} twice which needs to be replaced with +% \cs{oldscshape}. For that the following patching is done +% \& the old definition is retained. +% \begin{macrocode} +\xpatchcmd{\oldtextsc}{\scshape}{\oldscshape}{}{\ERROR} +\xpatchcmd{\oldtextsc}{\scshape}{\oldscshape}{}{\ERROR} +% \end{macrocode} +% The following code is kindly provided by Jonathan P.\ +% Spratte on the following thread: +% \url{https://topanswers.xyz/tex?q=2005}. I have modified +% it a bit as per my needs and my indentation style. +% \begin{macrocode} +\protected\long\def\unisc@output#1{% + \xdef\unisc@outputcontainer{% + \unexpanded\expandafter{% + \unisc@outputcontainer\unexpanded{#1}% + }% + }% +} +\protected\long\def\unisc@outputexpanded#1{% + \xdef\unisc@outputcontainer{% + \unexpanded\expandafter{\unisc@outputcontainer#1% + }% + }% +} +\providecommand\@gobbletwo[2]{} +\pgfparserdefunknown{scparser}{initial}{% + \let\unisc@initiated\@empty + \pgfparserswitch{initiated}% + \pgfparserreinsert +} +\pgfparserset{scparser/silent=true} +\pgfparserdefunknown{scparser}{all}{% + \expandafter\unisc@output\expandafter{\pgfparserletter}% +} +\newcommand*\unisc@bgroup{\expandafter{\iffalse}\fi} +\newcommand*\unisc@egroup{\iffalse{\fi}} +\pgfparserdef{scparser}{all}\begingroup + {\begingroup\unisc@outputexpanded\begingroup} +\pgfparserdef{scparser}{all}\endgroup + {\unisc@checkend\endgroup} +\pgfparserdef{scparser}{all}{\meaning\bgroup}{% + \unisc@bgroup\unisc@outputexpanded\unisc@bgroup +} +\pgfparserdef{scparser}{all}{\meaning\egroup} + {\unisc@checkend\unisc@egroup} +\newcommand\unisc@savedefinition[1] + {\unexpanded{\def#1}{\unexpanded\expandafter{#1}}} +\protected\def\unisc@checkend#1{% + \expanded{% + \unexpanded{#1}% + \unexpanded{\ifdefined\unisc@initiated}% + \unisc@savedefinition\pgfparserstate + \unexpanded{\unisc@outputexpanded#1}% + \unexpanded{\else}% + \unexpanded{\pgfparserswitch{final}}% + \unisc@savedefinition\pgfparser@current + \unisc@savedefinition\pgfparser@usersname + \unexpanded{\fi}% + }% +} +% \end{macrocode} +% Following is the code for the replacements of the +% regular characters with the Unicode ones. +% \begin{macrocode} +%% LATIN LETTER SMALL CAPITAL A +\pgfparserdef{scparser}{initiated}a% + {\unisc@outputexpanded{\symbol{"1D00}}} +\pgfparserdef{scparser}{initiated}A% + {\unisc@outputexpanded{\symbol{"1D00}}} +%% LATIN LETTER SMALL CAPITAL B +\pgfparserdef{scparser}{initiated}b% + {\unisc@outputexpanded{\symbol{"0299}}} +\pgfparserdef{scparser}{initiated}B% + {\unisc@outputexpanded{\symbol{"0299}}} +%% LATIN LETTER SMALL CAPITAL C +\pgfparserdef{scparser}{initiated}c% + {\unisc@outputexpanded{\symbol{"1D04}}} +\pgfparserdef{scparser}{initiated}C% + {\unisc@outputexpanded{\symbol{"1D04}}} +%% LATIN LETTER SMALL CAPITAL D +\pgfparserdef{scparser}{initiated}d% + {\unisc@outputexpanded{\symbol{"1D05}}} +\pgfparserdef{scparser}{initiated}D% + {\unisc@outputexpanded{\symbol{"1D05}}} +%% LATIN LETTER SMALL CAPITAL E +\pgfparserdef{scparser}{initiated}e% + {\unisc@outputexpanded{\symbol{"1D07}}} +\pgfparserdef{scparser}{initiated}E% + {\unisc@outputexpanded{\symbol{"1D07}}} +%% LATIN LETTER SMALL CAPITAL F +\pgfparserdef{scparser}{initiated}f% + {\unisc@outputexpanded{\symbol{"A730}}} +\pgfparserdef{scparser}{initiated}F% + {\unisc@outputexpanded{\symbol{"A730}}} +%% LATIN LETTER SMALL CAPITAL G +\pgfparserdef{scparser}{initiated}g% + {\unisc@outputexpanded{\symbol{"0262}}} +\pgfparserdef{scparser}{initiated}G% + {\unisc@outputexpanded{\symbol{"0262}}} +%% LATIN LETTER SMALL CAPITAL H +\pgfparserdef{scparser}{initiated}h% + {\unisc@outputexpanded{\symbol{"029C}}} +\pgfparserdef{scparser}{initiated}H% + {\unisc@outputexpanded{\symbol{"029C}}} +%% LATIN LETTER SMALL CAPITAL I +\pgfparserdef{scparser}{initiated}i% + {\unisc@outputexpanded{\symbol{"026A}}} +\pgfparserdef{scparser}{initiated}I% + {\unisc@outputexpanded{\symbol{"026A}}} +%% LATIN LETTER SMALL CAPITAL J +\pgfparserdef{scparser}{initiated}j% + {\unisc@outputexpanded{\symbol{"1D0A}}} +\pgfparserdef{scparser}{initiated}J% + {\unisc@outputexpanded{\symbol{"1D0A}}} +%% LATIN LETTER SMALL CAPITAL K +\pgfparserdef{scparser}{initiated}k% + {\unisc@outputexpanded{\symbol{"1D0B}}} +\pgfparserdef{scparser}{initiated}K% + {\unisc@outputexpanded{\symbol{"1D0B}}} +%% LATIN LETTER SMALL CAPITAL L +\pgfparserdef{scparser}{initiated}l% + {\unisc@outputexpanded{\symbol{"029F}}} +\pgfparserdef{scparser}{initiated}L% + {\unisc@outputexpanded{\symbol{"029F}}} +%% LATIN LETTER SMALL CAPITAL M +\pgfparserdef{scparser}{initiated}m% + {\unisc@outputexpanded{\symbol{"1D0D}}} +\pgfparserdef{scparser}{initiated}M% + {\unisc@outputexpanded{\symbol{"1D0D}}} +%% LATIN LETTER SMALL CAPITAL N +\pgfparserdef{scparser}{initiated}n% + {\unisc@outputexpanded{\symbol{"0274}}} +\pgfparserdef{scparser}{initiated}N% + {\unisc@outputexpanded{\symbol{"0274}}} +%% LATIN LETTER SMALL CAPITAL O +\pgfparserdef{scparser}{initiated}o% + {\unisc@outputexpanded{\symbol{"1D0F}}} +\pgfparserdef{scparser}{initiated}O% + {\unisc@outputexpanded{\symbol{"1D0F}}} +%% LATIN LETTER SMALL CAPITAL P +\pgfparserdef{scparser}{initiated}p% + {\unisc@outputexpanded{\symbol{"1D18}}} +\pgfparserdef{scparser}{initiated}P% + {\unisc@outputexpanded{\symbol{"1D18}}} +%% LATIN LETTER SMALL CAPITAL Q +\pgfparserdef{scparser}{initiated}q% + {\unisc@outputexpanded{\symbol{"A7AF}}} +\pgfparserdef{scparser}{initiated}Q% + {\unisc@outputexpanded{\symbol{"A7AF}}} +%% LATIN LETTER SMALL CAPITAL R +\pgfparserdef{scparser}{initiated}r% + {\unisc@outputexpanded{\symbol{"0280}}} +\pgfparserdef{scparser}{initiated}R% + {\unisc@outputexpanded{\symbol{"0280}}} +%% LATIN LETTER SMALL CAPITAL S +\pgfparserdef{scparser}{initiated}s% + {\unisc@outputexpanded{\symbol{"A731}}} +\pgfparserdef{scparser}{initiated}S% + {\unisc@outputexpanded{\symbol{"A731}}} +%% LATIN LETTER SMALL CAPITAL T +\pgfparserdef{scparser}{initiated}t% + {\unisc@outputexpanded{\symbol{"1D1B}}} +\pgfparserdef{scparser}{initiated}T% + {\unisc@outputexpanded{\symbol{"1D1B}}} +%% LATIN LETTER SMALL CAPITAL U +\pgfparserdef{scparser}{initiated}u% + {\unisc@outputexpanded{\symbol{"1D1C}}} +\pgfparserdef{scparser}{initiated}U% + {\unisc@outputexpanded{\symbol{"1D1C}}} +%% LATIN LETTER SMALL CAPITAL V +\pgfparserdef{scparser}{initiated}v% + {\unisc@outputexpanded{\symbol{"1D20}}} +\pgfparserdef{scparser}{initiated}V% + {\unisc@outputexpanded{\symbol{"1D20}}} +%% LATIN LETTER SMALL CAPITAL W +\pgfparserdef{scparser}{initiated}w% + {\unisc@outputexpanded{\symbol{"1D21}}} +\pgfparserdef{scparser}{initiated}W% + {\unisc@outputexpanded{\symbol{"1D21}}} +%% LATIN LETTER X +\pgfparserdef{scparser}{initiated}x{% + \unisc@outputexpanded{\symbol{"0078}}% + \PackageWarning{unisc}{% + You have used the unsupported character `x' in the\MessageBreak + argument of \string\textsc + }% +} +\pgfparserdef{scparser}{initiated}X{% + \unisc@outputexpanded{\symbol{"0078}}% + \PackageWarning{unisc}{% + You have used the unsupported character `X' in the\MessageBreak + argument of \string\textsc + }% +} +%% No Unicode number for small capital x as of now. +%% \textsc{X} == \textsc{x} for size-consistency. +%% LATIN LETTER SMALL CAPITAL Y +\pgfparserdef{scparser}{initiated}y% + {\unisc@outputexpanded{\symbol{"028F}}} +\pgfparserdef{scparser}{initiated}Y% + {\unisc@outputexpanded{\symbol{"028F}}} +%% LATIN LETTER SMALL CAPITAL Z +\pgfparserdef{scparser}{initiated}z% + {\unisc@outputexpanded{\symbol{"1D22}}} +\pgfparserdef{scparser}{initiated}Z% + {\unisc@outputexpanded{\symbol{"1D22}}} +%% BLANK SPACE +\pgfparserdef{scparser}{initiated}{blank space}% + {\unisc@outputexpanded{ }} +%% END OF INPUT CHARACTERS +\pgfparserdeffinal{scparser}% + {\expanded{\unisc@outputcontainer}} +% \end{macrocode} +% Renew the definitions of \cs{textsc} \& \cs{scshape} +% commands. +% \begin{macrocode} +\AddToHook{begindocument/end}{% + \RenewDocumentCommand\scshape{ }{% + \ifdefined\unisc@initiated + \PackageError{unisc}{Nested use not allowed}{% + You somehow made \string\nirshape\space expand inside + the parser. This isn't supported.% + }% + \expandafter\@gobbletwo + \else + \global\let\unisc@outputcontainer\@empty + \fi + \pgfparserparse{scparser}% + } + \RenewDocumentCommand\textsc{ m }{% + \begingroup\scshape #1\endgroup + }% +} +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% \end{implementation} +% \newpage +% \addcontentsline{toc}{section}{^^A +% GNU Free Documentation License^^A +% } +% \include{gfdl-tex.tex} +% \Finale diff --git a/Master/texmf-dist/source/latex/unisc/unisc.ins b/Master/texmf-dist/source/latex/unisc/unisc.ins new file mode 100644 index 00000000000..f9024a665b8 --- /dev/null +++ b/Master/texmf-dist/source/latex/unisc/unisc.ins @@ -0,0 +1,55 @@ +% File: unisc.ins +\input l3docstrip.tex + +\keepsilent +\askforoverwritefalse + +\preamble +---------------------------------------------------------- +Package: unisc +Version: v0.1 (21 April, 2022) +Author: निरंजन +Description: Unicode small caps with Lua/XeLaTeX. +Repository: https://puszcza.gnu.org.ua/projects/unisc +License: GPLv3+, GFDLv1.3+ +---------------------------------------------------------- + +LaTeX Package unisc v0.1 +Copyright © 2022 निरंजन + +This program is free software: you can redistribute it +and/or modify it under the terms of the GNU General Public +License as published by the Free Software Foundation, either +version 3 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public +License along with this program. If not, see +. + +The current maintainer of this work is निरंजन. + +This work consists of the files unisc.dtx + unisc.ins +and the derived file unisc.sty. +---------------------------------------------------------- +\endpreamble + +\usedir{tex/latex/\jobname} +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} + +\nopreamble\nopostamble +\usedir{doc/latex/\jobname} +\generate{ + \file{README.txt}{\from{\jobname.dtx}{readme}} +} + +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/unisc/unisc.sty b/Master/texmf-dist/tex/latex/unisc/unisc.sty new file mode 100644 index 00000000000..e2315ba9417 --- /dev/null +++ b/Master/texmf-dist/tex/latex/unisc/unisc.sty @@ -0,0 +1,274 @@ +%% +%% This is file `unisc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% unisc.dtx (with options: `package') +%% ---------------------------------------------------------- +%% Package: unisc +%% Version: v0.1 (21 April, 2022) +%% Author: निरंजन +%% Description: Unicode small caps with Lua/XeLaTeX. +%% Repository: https://puszcza.gnu.org.ua/projects/unisc +%% License: GPLv3+, GFDLv1.3+ +%% ---------------------------------------------------------- +%% +%% LaTeX Package unisc v0.1 +%% Copyright © 2022 निरंजन +%% +%% This program is free software: you can redistribute it +%% and/or modify it under the terms of the GNU General Public +%% License as published by the Free Software Foundation, either +%% version 3 of the License, or (at your option) any later +%% version. +%% +%% This program is distributed in the hope that it will be +%% useful, but WITHOUT ANY WARRANTY; without even the implied +%% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +%% PURPOSE. See the GNU General Public License for more +%% details. +%% +%% You should have received a copy of the GNU General Public +%% License along with this program. If not, see +%% . +%% +%% The current maintainer of this work is निरंजन. +%% +%% This work consists of the files unisc.dtx +%% unisc.ins +%% and the derived file unisc.sty. +%% ---------------------------------------------------------- +\def\uniscname{unisc} +\def\uniscversion{0.1} +\def\uniscdate{2022-04-21} +\def\uniscdescription{% + Unicode small caps with Xe/LuaLaTeX.% +} + + +\ProvidesPackage{unisc}[2022/04/21 v0.1 +Unicode small caps with Lua/XeLaTeX.] +\RequirePackage{pgfparser} +\RequirePackage{xpatch} +\NewCommandCopy\oldtextsc\textsc +\NewCommandCopy\oldscshape\scshape +\xpatchcmd{\oldtextsc}{\scshape}{\oldscshape}{}{\ERROR} +\xpatchcmd{\oldtextsc}{\scshape}{\oldscshape}{}{\ERROR} +\protected\long\def\unisc@output#1{% + \xdef\unisc@outputcontainer{% + \unexpanded\expandafter{% + \unisc@outputcontainer\unexpanded{#1}% + }% + }% +} +\protected\long\def\unisc@outputexpanded#1{% + \xdef\unisc@outputcontainer{% + \unexpanded\expandafter{\unisc@outputcontainer#1% + }% + }% +} +\providecommand\@gobbletwo[2]{} +\pgfparserdefunknown{scparser}{initial}{% + \let\unisc@initiated\@empty + \pgfparserswitch{initiated}% + \pgfparserreinsert +} +\pgfparserset{scparser/silent=true} +\pgfparserdefunknown{scparser}{all}{% + \expandafter\unisc@output\expandafter{\pgfparserletter}% +} +\newcommand*\unisc@bgroup{\expandafter{\iffalse}\fi} +\newcommand*\unisc@egroup{\iffalse{\fi}} +\pgfparserdef{scparser}{all}\begingroup + {\begingroup\unisc@outputexpanded\begingroup} +\pgfparserdef{scparser}{all}\endgroup + {\unisc@checkend\endgroup} +\pgfparserdef{scparser}{all}{\meaning\bgroup}{% + \unisc@bgroup\unisc@outputexpanded\unisc@bgroup +} +\pgfparserdef{scparser}{all}{\meaning\egroup} + {\unisc@checkend\unisc@egroup} +\newcommand\unisc@savedefinition[1] + {\unexpanded{\def#1}{\unexpanded\expandafter{#1}}} +\protected\def\unisc@checkend#1{% + \expanded{% + \unexpanded{#1}% + \unexpanded{\ifdefined\unisc@initiated}% + \unisc@savedefinition\pgfparserstate + \unexpanded{\unisc@outputexpanded#1}% + \unexpanded{\else}% + \unexpanded{\pgfparserswitch{final}}% + \unisc@savedefinition\pgfparser@current + \unisc@savedefinition\pgfparser@usersname + \unexpanded{\fi}% + }% +} +%% LATIN LETTER SMALL CAPITAL A +\pgfparserdef{scparser}{initiated}a% + {\unisc@outputexpanded{\symbol{"1D00}}} +\pgfparserdef{scparser}{initiated}A% + {\unisc@outputexpanded{\symbol{"1D00}}} +%% LATIN LETTER SMALL CAPITAL B +\pgfparserdef{scparser}{initiated}b% + {\unisc@outputexpanded{\symbol{"0299}}} +\pgfparserdef{scparser}{initiated}B% + {\unisc@outputexpanded{\symbol{"0299}}} +%% LATIN LETTER SMALL CAPITAL C +\pgfparserdef{scparser}{initiated}c% + {\unisc@outputexpanded{\symbol{"1D04}}} +\pgfparserdef{scparser}{initiated}C% + {\unisc@outputexpanded{\symbol{"1D04}}} +%% LATIN LETTER SMALL CAPITAL D +\pgfparserdef{scparser}{initiated}d% + {\unisc@outputexpanded{\symbol{"1D05}}} +\pgfparserdef{scparser}{initiated}D% + {\unisc@outputexpanded{\symbol{"1D05}}} +%% LATIN LETTER SMALL CAPITAL E +\pgfparserdef{scparser}{initiated}e% + {\unisc@outputexpanded{\symbol{"1D07}}} +\pgfparserdef{scparser}{initiated}E% + {\unisc@outputexpanded{\symbol{"1D07}}} +%% LATIN LETTER SMALL CAPITAL F +\pgfparserdef{scparser}{initiated}f% + {\unisc@outputexpanded{\symbol{"A730}}} +\pgfparserdef{scparser}{initiated}F% + {\unisc@outputexpanded{\symbol{"A730}}} +%% LATIN LETTER SMALL CAPITAL G +\pgfparserdef{scparser}{initiated}g% + {\unisc@outputexpanded{\symbol{"0262}}} +\pgfparserdef{scparser}{initiated}G% + {\unisc@outputexpanded{\symbol{"0262}}} +%% LATIN LETTER SMALL CAPITAL H +\pgfparserdef{scparser}{initiated}h% + {\unisc@outputexpanded{\symbol{"029C}}} +\pgfparserdef{scparser}{initiated}H% + {\unisc@outputexpanded{\symbol{"029C}}} +%% LATIN LETTER SMALL CAPITAL I +\pgfparserdef{scparser}{initiated}i% + {\unisc@outputexpanded{\symbol{"026A}}} +\pgfparserdef{scparser}{initiated}I% + {\unisc@outputexpanded{\symbol{"026A}}} +%% LATIN LETTER SMALL CAPITAL J +\pgfparserdef{scparser}{initiated}j% + {\unisc@outputexpanded{\symbol{"1D0A}}} +\pgfparserdef{scparser}{initiated}J% + {\unisc@outputexpanded{\symbol{"1D0A}}} +%% LATIN LETTER SMALL CAPITAL K +\pgfparserdef{scparser}{initiated}k% + {\unisc@outputexpanded{\symbol{"1D0B}}} +\pgfparserdef{scparser}{initiated}K% + {\unisc@outputexpanded{\symbol{"1D0B}}} +%% LATIN LETTER SMALL CAPITAL L +\pgfparserdef{scparser}{initiated}l% + {\unisc@outputexpanded{\symbol{"029F}}} +\pgfparserdef{scparser}{initiated}L% + {\unisc@outputexpanded{\symbol{"029F}}} +%% LATIN LETTER SMALL CAPITAL M +\pgfparserdef{scparser}{initiated}m% + {\unisc@outputexpanded{\symbol{"1D0D}}} +\pgfparserdef{scparser}{initiated}M% + {\unisc@outputexpanded{\symbol{"1D0D}}} +%% LATIN LETTER SMALL CAPITAL N +\pgfparserdef{scparser}{initiated}n% + {\unisc@outputexpanded{\symbol{"0274}}} +\pgfparserdef{scparser}{initiated}N% + {\unisc@outputexpanded{\symbol{"0274}}} +%% LATIN LETTER SMALL CAPITAL O +\pgfparserdef{scparser}{initiated}o% + {\unisc@outputexpanded{\symbol{"1D0F}}} +\pgfparserdef{scparser}{initiated}O% + {\unisc@outputexpanded{\symbol{"1D0F}}} +%% LATIN LETTER SMALL CAPITAL P +\pgfparserdef{scparser}{initiated}p% + {\unisc@outputexpanded{\symbol{"1D18}}} +\pgfparserdef{scparser}{initiated}P% + {\unisc@outputexpanded{\symbol{"1D18}}} +%% LATIN LETTER SMALL CAPITAL Q +\pgfparserdef{scparser}{initiated}q% + {\unisc@outputexpanded{\symbol{"A7AF}}} +\pgfparserdef{scparser}{initiated}Q% + {\unisc@outputexpanded{\symbol{"A7AF}}} +%% LATIN LETTER SMALL CAPITAL R +\pgfparserdef{scparser}{initiated}r% + {\unisc@outputexpanded{\symbol{"0280}}} +\pgfparserdef{scparser}{initiated}R% + {\unisc@outputexpanded{\symbol{"0280}}} +%% LATIN LETTER SMALL CAPITAL S +\pgfparserdef{scparser}{initiated}s% + {\unisc@outputexpanded{\symbol{"A731}}} +\pgfparserdef{scparser}{initiated}S% + {\unisc@outputexpanded{\symbol{"A731}}} +%% LATIN LETTER SMALL CAPITAL T +\pgfparserdef{scparser}{initiated}t% + {\unisc@outputexpanded{\symbol{"1D1B}}} +\pgfparserdef{scparser}{initiated}T% + {\unisc@outputexpanded{\symbol{"1D1B}}} +%% LATIN LETTER SMALL CAPITAL U +\pgfparserdef{scparser}{initiated}u% + {\unisc@outputexpanded{\symbol{"1D1C}}} +\pgfparserdef{scparser}{initiated}U% + {\unisc@outputexpanded{\symbol{"1D1C}}} +%% LATIN LETTER SMALL CAPITAL V +\pgfparserdef{scparser}{initiated}v% + {\unisc@outputexpanded{\symbol{"1D20}}} +\pgfparserdef{scparser}{initiated}V% + {\unisc@outputexpanded{\symbol{"1D20}}} +%% LATIN LETTER SMALL CAPITAL W +\pgfparserdef{scparser}{initiated}w% + {\unisc@outputexpanded{\symbol{"1D21}}} +\pgfparserdef{scparser}{initiated}W% + {\unisc@outputexpanded{\symbol{"1D21}}} +%% LATIN LETTER X +\pgfparserdef{scparser}{initiated}x{% + \unisc@outputexpanded{\symbol{"0078}}% + \PackageWarning{unisc}{% + You have used the unsupported character `x' in the\MessageBreak + argument of \string\textsc + }% +} +\pgfparserdef{scparser}{initiated}X{% + \unisc@outputexpanded{\symbol{"0078}}% + \PackageWarning{unisc}{% + You have used the unsupported character `X' in the\MessageBreak + argument of \string\textsc + }% +} +%% No Unicode number for small capital x as of now. +%% \textsc{X} == \textsc{x} for size-consistency. +%% LATIN LETTER SMALL CAPITAL Y +\pgfparserdef{scparser}{initiated}y% + {\unisc@outputexpanded{\symbol{"028F}}} +\pgfparserdef{scparser}{initiated}Y% + {\unisc@outputexpanded{\symbol{"028F}}} +%% LATIN LETTER SMALL CAPITAL Z +\pgfparserdef{scparser}{initiated}z% + {\unisc@outputexpanded{\symbol{"1D22}}} +\pgfparserdef{scparser}{initiated}Z% + {\unisc@outputexpanded{\symbol{"1D22}}} +%% BLANK SPACE +\pgfparserdef{scparser}{initiated}{blank space}% + {\unisc@outputexpanded{ }} +%% END OF INPUT CHARACTERS +\pgfparserdeffinal{scparser}% + {\expanded{\unisc@outputcontainer}} +\AddToHook{begindocument/end}{% + \RenewDocumentCommand\scshape{ }{% + \ifdefined\unisc@initiated + \PackageError{unisc}{Nested use not allowed}{% + You somehow made \string\nirshape\space expand inside + the parser. This isn't supported.% + }% + \expandafter\@gobbletwo + \else + \global\let\unisc@outputcontainer\@empty + \fi + \pgfparserparse{scparser}% + } + \RenewDocumentCommand\textsc{ m }{% + \begingroup\scshape #1\endgroup + }% +} +\endinput +%% +%% End of file `unisc.sty'. -- cgit v1.2.3