diff options
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.html | 78 |
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’ve already read -“<a href="FAQ-moren9.html">breaking the 9-argument limit</a>”. -you can probably guess the “simple” 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 — 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’s probably better to learn to write the commands -yourself, just to see why they’re not even a good idea from the -programming point of view. -<p/>A command with two optional arguments strains the limit of what’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 -“<a href="FAQ-moren9.html">breaking the 9-argument limit</a>”, -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’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> |