summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ifmtarg
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-09-04 00:59:35 +0000
committerKarl Berry <karl@freefriends.org>2009-09-04 00:59:35 +0000
commitacfe8d23f443df0daee4ef6929bbd905070110d0 (patch)
treee929349924e32224b588f76e3a36bee2a4037f8b /Master/texmf-dist/tex/latex/ifmtarg
parent8fda9c296233009102ded664a7386ef0f035a76b (diff)
ifmtarg update (2sep09)
git-svn-id: svn://tug.org/texlive/trunk@15065 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/ifmtarg')
-rw-r--r--Master/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty72
1 files changed, 72 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty b/Master/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty
new file mode 100644
index 00000000000..f34d97e828a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty
@@ -0,0 +1,72 @@
+% ifmtarg.sty
+%
+% Provides an if-then-else command for an empty macro argument
+% (empty = zero or more spaces only)
+% Use as \@ifmtarg{arg1}{Code for arg1 empty}{Code for arg1 not empty}
+%
+% Author: Peter Wilson, Herries Press
+% Maintainer: Will Robertson (will dot robertson at latex-project dot org)
+% Copyright Peter Wilson, 1996
+% Copyright Peter Wilson and Donald Arseneau, 2000
+%
+% 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: <http://www.latex-project.org/lppl.txt>
+%
+% This work has the LPPL maintenance status "maintained".
+% The Current Maintainer of this work is Will Robertson.
+%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ifmtarg}[2009/09/02 v1.2a check for an empty argument]
+
+%% Commands by Donald Arseneau
+\begingroup
+\catcode`\Q=3
+\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
+\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
+\long\gdef\@ifnotmtarg#1{\@xifmtarg#1QQ\@firstofone\@gobble\@nil}
+\endgroup
+
+\endinput
+
+%
+% The \@ifmtarg command takes 3 arguments and \@ifnotmtarg takes 2 arguments.
+% \@ifnotmtarg is slightly more efficient when code is only required
+% for a non-empty argument.
+%
+% Example usages:
+% \newcommand{\isempty}{1]{%
+% \@ifmtarg{#1}{\typeout{YES}}{\typeout{NO}}}
+%
+% \isempty{} -> YES
+% \isempty{ } -> YES
+% \isempty{E} -> NO
+% \isempty{ E } -> NO
+%
+% \newcommand{\isnotempty}[1]{%
+% \@ifnotmtarg{#1}{\typeout{YES}}}
+%
+% \isnotempty{} ->
+% \isnotempty{ } ->
+% \isnotempty{E} -> YES
+% \isnotempty{ E } -> YES
+%
+% In an Email to me on 13 March 2000, Donald Arseneau pointed out some
+% failings with my original definition of the \@ifmtarg command:
+% \newcommand{\@ifmtarg}[3]{%
+% \edef\@mtarg{\zap@space#1 \@empty}%
+% \ifx\@empty\@mtarg\relax #2\else #3\fi}
+%
+% It works most of the time correctly but Donald showed that it can
+% give unexpected results
+% under conditions that I had not thought of. He suggested the coding
+% that now appears in the package above for the \@ifmtarg and
+% \@ifnotmtarg commands. For a discussion on detecting empty arguments
+% see CTAN/info/aro-bend/answer.002
+%
+%
+% CHANGE HISTORY
+% v1.2a - New maintainer (Will Robertson)
+%