summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/ifmtarg/ifmtarg.tex
blob: d86820b06538eeed35584b78bde54e6196e6a112 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
\documentclass[DIV=8, parskip=half, pagesize=auto]{scrartcl}

\usepackage{fixltx2e}
\usepackage{etex}
\usepackage{xspace}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[svgnames]{xcolor}
\usepackage{array}
\usepackage{microtype}
\usepackage{hyperref}

\newcommand*{\angleurl}[1]{\href{#1}{\texttt{<#1>}}}
\newcommand*{\pkg}[1]{\textsf{#1}}
\newcommand*{\cs}[1]{\texttt{\textbackslash#1}}
\makeatletter
\newcommand*{\cmd}[1]{\cs{\expandafter\@gobble\string#1}}
\makeatother
\newcommand*{\meta}[1]{\textlangle\textsl{#1}\textrangle}
\newcommand*{\marg}[1]{\texttt{\{}\meta{#1}\texttt{\}}}

\addtokomafont{title}{\rmfamily}

\title{The \pkg{ifmtarg} package\thanks{This manual corresponds to \pkg{ifmtarg}~v1.2a, dated~2009/09/02.}}
\author{Author: Peter Wilson, Herries Press\\Maintainer: Will Robertson\thanks{will dot robertson at latex-project dot org}}
\date{2009/09/02}


\begin{document}

\maketitle

Provides an if--then--else command for an empty macro argument
(empty = zero or more spaces only)
Use as \cmd{\@ifmtarg}\marg{arg1}\marg{Code for arg1 empty}\marg{Code for arg1 not empty}

The \cmd{\@ifmtarg} command takes 3~arguments and \cmd{\@ifnotmtarg} takes 2~arguments.
\cmd{\@ifnotmtarg} is slightly more efficient when code is only required
for a non-empty argument.

Example usages:
%
\begin{verbatim}
\newcommand{\isempty}{1]{%
  \@ifmtarg{#1}{\typeout{YES}}{\typeout{NO}}}
\end{verbatim}
%
\begin{tabular}{@{}>{\color{SeaGreen}}l@{$\quad\to\quad$}>{\ttfamily}l@{}}
  \verb+\isempty{}+    & YES \\
  \verb+\isempty{   }+ & YES \\
  \verb+\isempty{E}+   & NO  \\
  \verb+\isempty{ E }+ & NO
\end{tabular}
%
\begin{verbatim}
\newcommand{\isnotempty}[1]{%
   \@ifnotmtarg{#1}{\typeout{YES}}}
\end{verbatim}
%
\begin{tabular}{@{}>{\color{SeaGreen}}l@{$\quad\to\quad$}>{\ttfamily}l@{}}
  \verb+\isnotempty{}+    &     \\
  \verb+\isnotempty{   }+ &     \\
  \verb+\isnotempty{E}+   & YES \\
  \verb+\isnotempty{ E }+ & YES
\end{tabular}

In an Email to me on 13 March 2000, Donald Arseneau pointed out some
failings with my original definition of the \cmd{\@ifmtarg} command:
%
\begin{verbatim}
\newcommand{\@ifmtarg}[3]{%
  \edef\@mtarg{\zap@space#1 \@empty}%  
  \ifx\@empty\@mtarg\relax #2\else #3\fi}
\end{verbatim}
%
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 \cmd{\@ifmtarg} and 
\cmd{\@ifnotmtarg} commands. For a discussion on detecting empty arguments 
see \href{http://www.ctan.org/pub/tex-archive/info/aro-bend/answer.002}{\texttt{CTAN/info/aro-bend/answer.002}}


\minisec{Change History}

\begin{labeling}[\hspace{\labelsep}--]{v1.2a}
\item[v1.2a] New maintainer (Will Robertson)
\end{labeling}

\bigskip

\begin{quote}
  \footnotesize
  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: \angleurl{http://www.latex-project.org/lppl.txt}
  
  This work has the LPPL maintenance status ``maintained''.
  The Current Maintainer of this work is Will Robertson.
\end{quote}

\end{document}