summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html')
-rw-r--r--Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html78
1 files changed, 0 insertions, 78 deletions
diff --git a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html
deleted file mode 100644
index bb7b1a8208c..00000000000
--- a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-twooptarg.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<head>
-<title>UK TeX FAQ -- question label twooptarg</title>
-</head><body>
-<h3>More than one optional argument</h3>
-<p/>If you&rsquo;ve already read
-&ldquo;<a href="FAQ-moren9.html">breaking the 9-argument limit</a>&rdquo;.
-you can probably guess the &ldquo;simple&rdquo; solution to this problem:
-command relaying.
-<p/>LaTeX allows commands with a single optional argument thus:
-<pre>
- \newcommand{\blah}[1][Default]{...}
-</pre>
-<p/>You may legally call such a command either with its optional argument
-present, as
-<code>\</code><code>blah[nonDefault]</code> or without, as <code>\</code><code>blah</code>; in the latter
-case, the code of <code>\</code><code>blah</code> will have an argument of <code>Default</code>.
-<p/>To define a command with two optional arguments, we use the relaying
-technique, as follows:
-<pre>
- \newcommand{\blah}[1][Default1]{%
- \def\ArgI{{#1}}%
- \BlahRelay
- }
- \newcommand\BlahRelay[1][Default2]{%
- % the first optional argument is now in
- % \ArgI
- % the second is in #1
- ...%
- }
-</pre>
-Of course, <code>\</code><code>BlahRelay</code> may have as many mandatory arguments as are
-allowed, after allowance for the one taken up with its own
-optional argument &mdash; that is, 8.
-<p/>Variants of <code>\</code><code>newcommand</code> (and friends), with names like
-<code>\</code><code>newcommandtwoopt</code>, are available in the <i>twoopt</i> package.
-However, if you can, it&rsquo;s probably better to learn to write the commands
-yourself, just to see why they&rsquo;re not even a good idea from the
-programming point of view.
-<p/>A command with two optional arguments strains the limit of what&rsquo;s
-sensible: obviously you can extend the technique to provide as many
-optional arguments as your fevered imagination can summon. However,
-see the comments on the use of the <i>keyval</i> package, in
-&ldquo;<a href="FAQ-moren9.html">breaking the 9-argument limit</a>&rdquo;,
-which offers an alternative way forward.
-<p/>If you must, however, consider the <i>optparams</i> or
-<i>xargs</i> packages. <i>Optparams</i>
-provides a <code>\</code><code>optparams</code> command that you use as an intermediate in
-defining commands with up to nine optional arguments. The
-documentation shows examples of commands with four optional arguments
-(and this from an author who has his own key-value package!).
-<p/>The <i>xargs</i> package uses a key-value package
-(<i>xkeyval</i>) to <em>define</em> the layout of the optional
-arguments. Thus
-<blockquote>
-<pre>
-\usepackage{xargs}
-...
-\newcommandx{\foo}[3][1=1, 3=n]{...}
-</pre>
-</blockquote><p>
-defines a command <code>\</code><code>foo</code> that has an optional first argument
-(default 1), a mandatory second argument, and an optional third
-argument (default n).
-<p/>An alternative approach is offered by Scott Pakin&rsquo;s
-<i>newcommand</i> program, which takes a command name and a
-definition of a set of command arguments (in a fairly
-readily-understood language), and emits (La)TeX macros which enable
-the command to be defined. The command requires that a
-<i>Python</i> interpreter (etc.) be installed on your computer.
-<dl>
-<dt><tt><i>newcommand.py</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/support/newcommand.zip">support/newcommand</a> (<a href="ftp://cam.ctan.org/tex-archive/support/newcommand.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/support/newcommand/">browse</a>)
-<dt><tt><i>optparams.sty</i></tt><dd>Distributed as part of <a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/sauerj.zip">macros/latex/contrib/sauerj</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/sauerj.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/sauerj/">browse</a>)
-<dt><tt><i>twoopt.sty</i></tt><dd>Distributed as part of <a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/oberdiek.zip">macros/latex/contrib/oberdiek</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/oberdiek.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/oberdiek/">browse</a>)
-<dt><tt><i>xargs.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/xargs.zip">macros/latex/contrib/xargs</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/xargs.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/xargs/">browse</a>)
-<dt><tt><i>xkeyval.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/xkeyval.zip">macros/latex/contrib/xkeyval</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/xkeyval.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/xkeyval/">browse</a>)
-</dl>
-<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=twooptarg">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=twooptarg</a>
-</body>