From 9bc2a0c2350d2837572223c4bd26ab70ffdd2429 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 4 Dec 2019 22:46:05 +0000
Subject: letltxmacro split from oberdiek (4dec19)

git-svn-id: svn://tug.org/texlive/trunk@53022 c570f23f-e606-0410-a88d-b1316a301751
---
 .../tex/latex/letltxmacro/letltxmacro.sty          | 216 +++++++++++++++++++++
 1 file changed, 216 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty

(limited to 'Master/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty')

diff --git a/Master/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty b/Master/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
new file mode 100644
index 00000000000..027b670686e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
@@ -0,0 +1,216 @@
+%%
+%% This is file `letltxmacro.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% letltxmacro.dtx  (with options: `package')
+%% 
+%% This is a generated file.
+%% 
+%% Project: letltxmacro
+%% Version: 2019/12/03 v1.6
+%% 
+%% Copyright (C)
+%%    2008, 2010 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/letltxmacro/issues
+%% 
+%% 
+%% This work consists of the main source file letltxmacro.dtx
+%% and the derived files
+%%    letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv,
+%%    letltxmacro-showcases.tex, letltxmacro-test1.tex,
+%%    letltxmacro-test2.tex.
+%% 
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+  \catcode13=5 % ^^M
+  \endlinechar=13 %
+  \catcode123=1 % {
+  \catcode125=2 % }
+  \catcode64=11 % @
+  \def\x{\endgroup
+    \expandafter\edef\csname llm@AtEnd\endcsname{%
+      \endlinechar=\the\endlinechar\relax
+      \catcode13=\the\catcode13\relax
+      \catcode32=\the\catcode32\relax
+      \catcode35=\the\catcode35\relax
+      \catcode61=\the\catcode61\relax
+      \catcode64=\the\catcode64\relax
+      \catcode123=\the\catcode123\relax
+      \catcode125=\the\catcode125\relax
+    }%
+  }%
+\x\catcode61\catcode48\catcode32=10\relax%
+\catcode13=5 % ^^M
+\endlinechar=13 %
+\catcode35=6 % #
+\catcode64=11 % @
+\catcode123=1 % {
+\catcode125=2 % }
+\def\TMP@EnsureCode#1#2{%
+  \edef\llm@AtEnd{%
+    \llm@AtEnd
+    \catcode#1=\the\catcode#1\relax
+  }%
+  \catcode#1=#2\relax
+}
+\TMP@EnsureCode{40}{12}% (
+\TMP@EnsureCode{41}{12}% )
+\TMP@EnsureCode{42}{12}% *
+\TMP@EnsureCode{45}{12}% -
+\TMP@EnsureCode{46}{12}% .
+\TMP@EnsureCode{47}{12}% /
+\TMP@EnsureCode{58}{12}% :
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{91}{12}% [
+\TMP@EnsureCode{93}{12}% ]
+\edef\llm@AtEnd{%
+  \llm@AtEnd
+  \escapechar\the\escapechar\relax
+  \noexpand\endinput
+}
+\escapechar=92 % `\\
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{letltxmacro}%
+  [2019/12/03 v1.6 Let assignment for LaTeX macros (HO)]
+\newcommand*{\LetLtxMacro}{%
+  \llm@ModeLetLtxMacro{}%
+}
+\newcommand*{\GlobalLetLtxMacro}{%
+  \llm@ModeLetLtxMacro\global
+}
+\newcommand*{\llm@ModeLetLtxMacro}[3]{%
+  \edef\llm@escapechar{\the\escapechar}%
+  \escapechar=-1 %
+  \edef\reserved@a{%
+    \noexpand\protect
+    \expandafter\noexpand
+    \csname\string#3 \endcsname
+  }%
+  \ifx\reserved@a#3\relax
+    #1\edef#2{%
+      \noexpand\protect
+      \expandafter\noexpand
+      \csname\string#2 \endcsname
+    }%
+    #1\expandafter\let
+    \csname\string#2 \expandafter\endcsname
+    \csname\string#3 \endcsname
+    \expandafter\llm@LetLtxMacro
+        \csname\string#2 \expandafter\endcsname
+        \csname\string#3 \endcsname{#1}%
+  \else
+    \llm@LetLtxMacro{#2}{#3}{#1}%
+  \fi
+  \escapechar=\llm@escapechar\relax
+}
+\def\llm@LetLtxMacro#1#2#3{%
+  \escapechar=92 %
+  \expandafter\llm@CheckParams\meaning#2:->\@nil{%
+    \begingroup
+      \def\@protected@testopt{%
+        \expandafter\@testopt\@gobble
+      }%
+      \def\@testopt##1##2{%
+        \toks@={##2}%
+      }%
+      \let\llm@testopt\@empty
+      \edef\x{%
+        \noexpand\@protected@testopt
+        \noexpand#2%
+        \expandafter\noexpand\csname\string#2\endcsname
+      }%
+      \expandafter\expandafter\expandafter\def
+      \expandafter\expandafter\expandafter\y
+      \expandafter\expandafter\expandafter{%
+        \expandafter\llm@CarThree#2{}{}{}\llm@nil
+      }%
+      \ifx\x\y
+        #2%
+        \def\llm@testopt{%
+          \noexpand\@protected@testopt
+          \noexpand#1%
+        }%
+      \else
+        \edef\x{%
+          \noexpand\@testopt
+          \expandafter\noexpand
+          \csname\string#2\endcsname
+        }%
+        \expandafter\expandafter\expandafter\def
+        \expandafter\expandafter\expandafter\y
+        \expandafter\expandafter\expandafter{%
+          \expandafter\llm@CarTwo#2{}{}\llm@nil
+        }%
+        \ifx\x\y
+          #2%
+          \def\llm@testopt{%
+            \noexpand\@testopt
+          }%
+        \fi
+      \fi
+      \ifx\llm@testopt\@empty
+      \else
+        \llm@protected\xdef\llm@GlobalTemp{%
+          \llm@testopt
+          \expandafter\noexpand
+          \csname\string#1\endcsname
+          {\the\toks@}%
+        }%
+      \fi
+    \expandafter\endgroup\ifx\llm@testopt\@empty
+      #3\let#1=#2\relax
+    \else
+      #3\let#1=\llm@GlobalTemp
+      #3\expandafter\let
+          \csname\string#1\expandafter\endcsname
+          \csname\string#2\endcsname
+    \fi
+  }{%
+    #3\let#1=#2\relax
+  }%
+}
+\def\llm@CheckParams#1:->#2\@nil{%
+  \begingroup
+    \def\x{#1}%
+  \ifx\x\llm@macro
+    \endgroup
+    \def\llm@protected{}%
+    \expandafter\@firstoftwo
+  \else
+    \ifx\x\llm@protectedmacro
+      \endgroup
+      \def\llm@protected{\protected}%
+      \expandafter\expandafter\expandafter\@firstoftwo
+    \else
+      \endgroup
+      \expandafter\expandafter\expandafter\@secondoftwo
+    \fi
+  \fi
+}
+\def\llm@macro{macro}
+\@onelevel@sanitize\llm@macro
+\def\llm@protectedmacro{\protected macro}
+\@onelevel@sanitize\llm@protectedmacro
+\def\llm@CarThree#1#2#3#4\llm@nil{#1#2#3}%
+\def\llm@CarTwo#1#2#3\llm@nil{#1#2}%
+\llm@AtEnd%
+\endinput
+%%
+%% End of file `letltxmacro.sty'.
-- 
cgit v1.2.3

