
%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5
% Bundled source file for the IFMTARG package
%--------1---------2---------3---------4---------5
% Please see the accompanying README for author,
% license, documentation and installation information
%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5

\begin{filecontents*}{ifmtarg.sty}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ifmtarg}[2026/10/09 v1.2c check for an empty argument]
\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
\end{filecontents*}
%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5


% Conditionally compile the documentation & generate the .ins file:
\providecommand\documentationCompile{Y}
\makeatletter
\if\documentationCompile N
  \expandafter\@@end
\fi


\begin{filecontents*}{ifmtarg.ins}
%&latex
\def\documentationCompile{N}
\input ifmtarg.tex
\csname@@end\endcsname
\end{filecontents*}

\DocumentMetadata{tagging=on,pdfstandard={UA-2,A-4f}}
\PassOptionsToPackage{colorlinks,linktocpage}{hyperref}
\documentclass[twocolumn]{l3in2edoc}

\MakeShortVerb\|

\usepackage{array,ifmtarg,fancyvrb}
\fvset{gobble=0,fontsize=\small}
\usepackage[svgnames]{xcolor}

\usepackage{geometry}
\geometry{margin=2cm}

\DeclareRobustCommand\pkg{\textsf}
\def\pkgopt#1{\texttt{[#1]}}
\newcommand\chng[1]{\marginpar{\footnotesize\raggedright\textsf{#1}}}

\def\PDF{\textsc{pdf}}
\def\PS{\textsc{ps}}
\def\DVI{\textsc{dvi}}
\def\EPS{\textsc{eps}}

\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{lum-pagella}
\setmainfont{TeX Gyre Pagella}[Numbers=OldStyle]

\usepackage{microtype}
\linespread{1.1}
\frenchspacing

\EditInstance{heading}{section}{heading-decls=\itshape\Large}

\GetFileInfo{ifmtarg.sty}
\begin{document}

\title{The \pkg{ifmtarg} package}
\author{%
 Author: Donald Arseneau and Peter Wilson, Herries Press\\
 Maintainer: LaTeX Project\\
 \url{https://github.com/LaTeX-Package-Repositories/herries-press}%
}
\date{\fileversion \qquad \filedate}

\maketitle

\section{Documentation}

The \pkg{ifmtarg} package provides an if--then--else programmer's command \verb|\@ifmtarg| for testing for an empty macro argument.
`Empty' here refers to an argument of zero or more spaces only.\footnote{If you need a command to test for emptiness that doesn't include spaces, use the \cs{tl_if_empty:nTF} conditional from the \pkg{expl3} package. \cs{@ifmtarg} is equivalent to \pkg{expl3}'s \cs{tl_if_blank:nTF}.}
The command is fully expandable; its syntax is:
\begin{quote}
\cmd{\@ifmtarg}\marg{arg}\marg{Code for arg empty}
\\\null\hfill
\marg{Code for arg not empty}
\end{quote}

A variation is provided, \cmd{\@ifnotmtarg}, to be used when only the `false' branch is required.
It is slightly more efficient when code is only required for a non-empty argument.
\begin{quote}
\cmd{\@ifnotmtarg}\marg{arg}\marg{Code for not empty}
\end{quote}

\section{Examples}

\begin{verbatim}
\newcommand\isempty[1]{\@ifmtarg{#1}{YES}{NO}}
\end{verbatim}
\nobreak
\begin{tabular}{@{\hspace{1.8em}}>{\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}{YES}}
\end{verbatim}
\nobreak
\begin{tabular}{@{\hspace{1.8em}}>{\color{SeaGreen}}l@{$\quad\to\quad$}>{\ttfamily}l@{}}
  \verb+\isnotempty{}+    &     \\
  \verb+\isnotempty{   }+ &     \\
  \verb+\isnotempty{E}+   & YES \\
  \verb+\isnotempty{ E }+ & YES
\end{tabular}

\newpage
\section{History}

(\emph{Peter's comments follow.}) 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{https://mirrors.ctan.org/info/challenges/aro-bend/answer.002}{\texttt{CTAN/info/challenges/aro-bend/answer.002}}.


\section*{Change History}

\begin{itemize}
\item[v1.2a] New maintainer (Will Robertson)
\item[v1.2b] Typo in documentation example code
\item[v1.2c] Tag documentation; new maintainer (\LaTeX{} team)
\end{itemize}



\section*{Licence and copyright}

This work may be modified and/or distributed under the terms and
conditions of the \LaTeX\ Project Public License\footnote{\url{https://www.latex-project.org/lppl.txt}}, version~1.3c or later (your choice).
The current maintainer of this work is the \LaTeX{} Team.

\bigskip
  \noindent
  Copyright Peter Wilson, 1996 \\
  Copyright Peter Wilson and Donald Arseneau, 2000 \\
  Copyright \LaTeX{} Team, 2026

\clearpage
\parindent=0pt

\section{Implementation}
\VerbatimInput{ifmtarg.sty}
{\addtocontents{toc}{\protect\end{varwidth}}}

\end{document}