From 7196059486607f8e6e3e03267a23649d6666a599 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 23 Jan 2012 23:06:58 +0000
Subject: new package xpatch (13jan12,23jan12)

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

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

diff --git a/Master/texmf-dist/tex/latex/xpatch/xpatch.sty b/Master/texmf-dist/tex/latex/xpatch/xpatch.sty
new file mode 100644
index 00000000000..b26de40e4df
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xpatch/xpatch.sty
@@ -0,0 +1,142 @@
+%%
+%% This is file `xpatch.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xpatch.dtx  (with options: `package')
+%% 
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%% 
+%% File: xpatch.dtx (C) Copyright 2012 Enrico Gregorio
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version.  The latest version
+%% of this license is in the file
+%%
+%%    http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "xpatch bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+\RequirePackage{expl3}
+\GetIdInfo$Id: xpatch.dtx 0.2 2012-01-13 12:00:00Z Enrico $
+          {Extending etoolbox patching commands}
+\ProvidesExplPackage
+  {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
+\@ifpackagelater { expl3 } { 2011/10/09 }
+  { }
+  {
+    \PackageError { xpatch } { Support~package~l3kernel~too~old. }
+      {
+        Please~install~an~up~to~date~version~of~l3kernel~
+        using~your~TeX~package~manager~or~from~CTAN.\\ \\
+        Loading~xparse~will~abort!
+      }
+    \tex_endinput:D
+  }
+\RequirePackage{xparse,etoolbox}
+\cs_generate_variant:Nn \tl_if_in:NnT { Nx }
+\bool_new:N \l_xpatch_protect_bool
+\cs_if_exist:NF \c_backslash_str
+  { \tl_const:Nx \c_backslash_str { \cs_to_str:N \\ } }
+\tl_const:Nx \c_xpatch_bizarre_tl
+  { \tl_to_str:n { **)-(**/**]-[** } }
+\cs_new:Npn \xpatch_main:NN #1 #2
+  {
+    \bool_set_false:N \l_xpatch_protect_bool
+   \tl_set:Nx \l_xpatch_name_tl { \cs_to_str:N #2  }
+   \tl_set:Nx \l_xpatch_repl_tl
+     { \c_xpatch_bizarre_tl \token_get_replacement_spec:N #2 }
+   \tl_if_in:NxT \l_xpatch_repl_tl
+     {
+      \c_xpatch_bizarre_tl
+      \token_to_str:N \protect \c_space_tl
+      \c_backslash_str \l_xpatch_name_tl \c_space_tl \c_space_tl
+     }
+     {
+      \bool_set_true:N \l_xpatch_protect_bool
+      \xpatch_add_space:
+     }
+   \tl_if_in:NxT \l_xpatch_repl_tl
+     {
+      \c_xpatch_bizarre_tl
+      \token_to_str:N \x@protect \c_space_tl
+        \c_backslash_str \l_xpatch_name_tl \c_backslash_str
+     }
+     {
+      \bool_set_true:N \l_xpatch_protect_bool
+      \xpatch_add_space:
+     }
+   \tl_if_in:NxT \l_xpatch_repl_tl
+     {
+      \c_xpatch_bizarre_tl
+      \token_to_str:N \@protected@testopt \c_space_tl
+        \c_backslash_str \l_xpatch_name_tl
+        \c_space_tl \c_backslash_str \c_backslash_str
+     }
+     { \xpatch_add_backslash: }
+   \tl_if_in:NxT \l_xpatch_repl_tl
+     {
+      \c_xpatch_bizarre_tl
+      \token_to_str:N \@protected@testopt \c_space_tl
+        \c_backslash_str \l_xpatch_name_tl
+        \c_backslash_str \c_backslash_str
+     }
+     { \xpatch_add_backslash: }
+   \tl_if_in:NxT \l_xpatch_repl_tl
+     {
+      \c_xpatch_bizarre_tl
+      \token_to_str:N \@testopt \c_space_tl
+        \c_backslash_str \c_backslash_str \l_xpatch_name_tl
+     }
+     { \xpatch_add_backslash: }
+   \bool_if:NT \l_xpatch_protect_bool
+     {
+      \tl_set:Nx \l_xpatch_repl_tl
+        { \c_xpatch_bizarre_tl
+          \exp_after:wN \token_get_replacement_spec:N
+            \cs:w \l_xpatch_name_tl \cs_end: }
+      \tl_if_in:NxT \l_xpatch_repl_tl
+        {
+         \c_xpatch_bizarre_tl
+         \token_to_str:N \@protected@testopt \c_space_tl
+           \c_backslash_str \l_xpatch_name_tl
+           \c_space_tl \c_backslash_str \c_backslash_str
+        }
+        { \xpatch_add_backslash: }
+     }
+   \exp_after:wN #1 \cs:w \l_xpatch_name_tl \cs_end:
+  }
+\cs_new:Npn \xpatch_add_space:
+  { \tl_set:Nx \l_xpatch_name_tl { \l_xpatch_name_tl \c_space_tl } }
+\cs_new:Npn \xpatch_add_backslash:
+  { \tl_set:Nx \l_xpatch_name_tl { \c_backslash_str \l_xpatch_name_tl } }
+\NewDocumentCommand{\xpatchcmd}{}{ \xpatch_main:NN \patchcmd }
+\NewDocumentCommand{\xpretocmd}{}{ \xpatch_main:NN \pretocmd }
+\NewDocumentCommand{\xapptocmd}{}{ \xpatch_main:NN \apptocmd }
+\NewDocumentCommand{\xshowcmd} {}{ \xpatch_main:NN \show     }
+\cs_generate_variant:Nn \xpatch_main:NN { Nc }
+\NewDocumentCommand{\xpatchbibmacro} { m }
+  { \xpatch_main:Nc \patchcmd { abx@macro@ \tl_to_str:n {#1} } }
+\NewDocumentCommand{\xpretobibmacro} { m }
+  { \xpatch_main:Nc \pretocmd { abx@macro@ \tl_to_str:n {#1} } }
+\NewDocumentCommand{\xapptobibmacro} { m }
+  { \xpatch_main:Nc \apptocmd { abx@macro@ \tl_to_str:n {#1} } }
+\NewDocumentCommand{\xshowbibmacro} { m }
+  { \xpatch_main:Nc \show { abx@macro@ \tl_to_str:n {#1} } }
+\NewDocumentCommand{\xpatchbibdriver} { m }
+  { \exp_args:Nc \patchcmd {blx@bbx@#1} }
+\NewDocumentCommand{\xpretobibdriver} { m }
+  { \exp_args:Nc \pretocmd {blx@bbx@#1} }
+\NewDocumentCommand{\xapptobibdriver} { m }
+  { \exp_args:Nc \apptocmd {blx@bbx@#1} }
+\NewDocumentCommand{\xshowbibdriver} { m }
+  { \exp_args:Nc \show {blx@bbx@#1} }
+%% 
+%%
+%% End of file `xpatch.sty'.
-- 
cgit v1.2.3

