diff options
Diffstat (limited to 'Master/texmf-doc/doc/english/FAQ-en/html/FAQ-patch.html')
-rw-r--r-- | Master/texmf-doc/doc/english/FAQ-en/html/FAQ-patch.html | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-patch.html b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-patch.html deleted file mode 100644 index 41ea39fc4c6..00000000000 --- a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-patch.html +++ /dev/null @@ -1,97 +0,0 @@ -<head> -<title>UK TeX FAQ -- question label patch</title> -</head><body> -<h3>Patching existing commands</h3> -<p/>In the general case (possibly sticking something in the middle of an -existing command) this is difficult. However, the common requirement, -to add some code at the beginning or the end of an existing command, -is conceptually quite easy. Suppose we want to define a version of a -command that does some small extension of its original definition: we -would naturally write: -<blockquote> -<pre> -\renewcommand{\splat}{\mumble\splat} -</pre> -</blockquote><p> -However, this would not work: a call to <code>\</code><code>splat</code> would execute -<code>\</code><code>mumble</code>, and the call the redefined <code>\</code><code>splat</code> again; this is an -infinite recursive loop, that will quickly exhaust TeX’s memory. -<p/>Fortunately, the TeX primitive <code>\</code><code>let</code> command comes to our -rescue; it allows us to take a “snapshot” of the current state of a -command, which we can then use in the redefinition of the command. -So: -<blockquote> -<pre> -\let\OldSmooth\smooth -\renewcommand{\smooth}{\mumble\OldSmooth} -</pre> -</blockquote><p> -effects the required patch, safely. Adding things at the end of a -command works similarly. If <code>\</code><code>smooth</code> takes arguments, one must -pass them on: -<blockquote> -<pre> -\renewcommand{\smooth}[2]{\mumble\OldSmooth{#1}{#2}} -</pre> - -</blockquote><p> -<p/>The general case may be achieved in two ways. First, one can use the -LaTeX command <code>\</code><code>CheckCommand</code>; this compares an existing command -with the definition you give it, and issues a warning if two don’t -match. Use is therefore: -<blockquote> - <code>\CheckCommand{\complex}{</code><<i>original definition</i>><code>}</code><br> - <code>\renewcommand{\complex}{</code><<i>new definition</i>><code>}</code> -</blockquote><p> -This technique is obviously somewhat laborious, but if the original -command comes from a source that’s liable to change under the control -of someone else, it does at least warn you that your patch is in -danger of going wrong. -<p/>Otherwise, LaTeX users may use one of the <i>patchcmd</i>, -<i>ted</i> or <i>etoolbox</i> packages. -<p/>The <i>patchcmd</i> package addresses a slightly simpler task, by -restricting the set of commands that you may patch; you mayn’t patch -any command that has an optional argument, though it does deal with -the case of commands defined with <code>\</code><code>DeclareRobustCommand</code>. The -package defines a <code>\</code><code>patchcommand</code> command, that takes three -arguments: the command to patch, stuff to stick at the front of its -definition, and stuff to stick on the end of its definition. So, -after -<blockquote> -<pre> -\def\b{b} -\patchcmd\b{a}{c} -</pre> -</blockquote><p> -we will have a new version of <code>\</code><code>b</code> defined as “<code>abc</code>”. -<p/>The <i>ted</i> package is a ‘token list editor’, and provides a -command <code>\</code><code>Substitute*</code> which will patch the contents of a macro, -putting the result in a token-list, or (optionally) using the result -to (re)define a macro. The package may also be used as a powerful -debugging tool. -<p/>The <i>etoolbox</i> (which provides user access to e-TeX’s -programming facilities) provides a command <code>\</code><code>patchcmd</code> which will -perform a “string substitution” in a macro’s definition. The -package also provides commands that prepend (<code>\</code><code>pretocmd</code>) or append -(<code>\</code><code>apptocmd</code>) to the definition of a command. -<p/>Finally, we’ll briefly consider a package that is (just about) -usable, but not really recommendable. <i>Patch</i> gives you an -ingenious (and difficult to understand) mechanism, and comes as an -old-style LaTeX documented macro file, which can no longer be -processed (as in - - <a href="FAQ-install-doc.html">generating documentation for a new package</a>). -Fortunately, the file (<i>patch.doc</i>) may be input directly, and -“documentation” may found by reading the source of the package. -Roughly speaking, one gives the command a set of instructions -analogous to <i>sed</i> substitutions, and it regenerates the -command thus amended. Unless you can’t do your job any other way, you -had probably best avoid <i>Patch</i>. -<dl> -<dt><tt><i>etoolbox.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/etoolbox.zip">macros/latex/contrib/etoolbox</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/etoolbox.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/etoolbox/">browse</a>) -<dt><tt><i>patch.doc</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/generic/misc/patch.doc">macros/generic/misc/patch.doc</a> -<dt><tt><i>patchcommand.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/patchcmd.zip">macros/latex/contrib/patchcmd</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/patchcmd.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/patchcmd/">browse</a>) -<dt><tt><i>ted.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/ted.zip">macros/latex/contrib/ted</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/ted.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/ted/">browse</a>) -</dl> -<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=patch">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=patch</a> -</body> |