From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/ifmtarg/README | 51 ++++++++ macros/latex/contrib/ifmtarg/ifmtarg.ins | 4 + macros/latex/contrib/ifmtarg/ifmtarg.pdf | Bin 0 -> 36658 bytes macros/latex/contrib/ifmtarg/ifmtarg.tex | 193 +++++++++++++++++++++++++++++++ 4 files changed, 248 insertions(+) create mode 100644 macros/latex/contrib/ifmtarg/README create mode 100644 macros/latex/contrib/ifmtarg/ifmtarg.ins create mode 100644 macros/latex/contrib/ifmtarg/ifmtarg.pdf create mode 100644 macros/latex/contrib/ifmtarg/ifmtarg.tex (limited to 'macros/latex/contrib/ifmtarg') diff --git a/macros/latex/contrib/ifmtarg/README b/macros/latex/contrib/ifmtarg/README new file mode 100644 index 0000000000..644988fcbb --- /dev/null +++ b/macros/latex/contrib/ifmtarg/README @@ -0,0 +1,51 @@ + +The IFMTARG package +=================== + +Provides a command for the LaTeX programmer for testing +whether an argument is empty. + + +INSTALLATION +------------ + +Run `pdflatex` on ifmtarg.tex to produce the files + ifmtarg.ins and ifmtarg.sty, +as well as to compile the PDF documentation. + +Execute `tex ifmtarg.ins` to produce the files above +except ifmtarg.ins itself (and the PDF file, obviously). + + +COPYRIGHT AND LICENSING +----------------------- + +Authors: Donald Arseneau and Peter Wilson (Herries Press) +Maintainer: Will Robertson (will dot robertson at latex-project dot org) +Copyright 1996 Peter Wilson +Copyright 2000 Peter Wilson and Donald Arseneau + +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: + +This work has the LPPL maintenance status "maintained". +The Current Maintainer of this work is Will Robertson. + +This work consists of the files ifmtarg.tex and the +derived files ifmtarg.sty and ifmtarg.ins. + + +MAINTENANCE +----------- + +Please report bugs or request features: + + +Developmental and historical versions: + + +Current release version: + + diff --git a/macros/latex/contrib/ifmtarg/ifmtarg.ins b/macros/latex/contrib/ifmtarg/ifmtarg.ins new file mode 100644 index 0000000000..92b714e153 --- /dev/null +++ b/macros/latex/contrib/ifmtarg/ifmtarg.ins @@ -0,0 +1,4 @@ +%&latex +\def\documentationCompile{N} +\input ifmtarg.tex +\csname@@end\endcsname diff --git a/macros/latex/contrib/ifmtarg/ifmtarg.pdf b/macros/latex/contrib/ifmtarg/ifmtarg.pdf new file mode 100644 index 0000000000..1f97b86ab6 Binary files /dev/null and b/macros/latex/contrib/ifmtarg/ifmtarg.pdf differ diff --git a/macros/latex/contrib/ifmtarg/ifmtarg.tex b/macros/latex/contrib/ifmtarg/ifmtarg.tex new file mode 100644 index 0000000000..dafebad84c --- /dev/null +++ b/macros/latex/contrib/ifmtarg/ifmtarg.tex @@ -0,0 +1,193 @@ + +%%%%%%%%%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 + +\RequirePackage{filecontents} +\begin{filecontents*}{ifmtarg.sty} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ifmtarg}[2018/04/16 v1.2b 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*} + + + + +\makeatletter +\documentclass[twocolumn]{ltxdoc} + +\usepackage{shortvrb} +\MakeShortVerb\| +\usepackage[it,medium]{titlesec} + +\usepackage{array,ifmtarg,bigfoot,fancyvrb} +\usepackage[svgnames]{xcolor} +\usepackage[colorlinks,linktocpage]{hyperref} + +\usepackage{geometry} +\geometry{margin=2cm} + +\usepackage{tocloft,varwidth} +\setcounter{tocdepth}{1} +\def\tocwidthA{0.55} +\def\tocwidthB{0.44} +\def\cftpartfont{\scshape} +\def\cftsecfont{\small} +\cftbeforesecskip=0pt +\def\cftpartleader{} +\def\cftpartafterpnum{\cftparfillskip} +\def\cftsecleader{} +\def\cftsecafterpnum{\cftparfillskip} + +\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,listings} +\lstset{basicstyle=\ttfamily,columns=fullflexible} + +\usepackage{changepage} +\usepackage[T1]{fontenc} +\usepackage{microtype} +\usepackage{lmodern} +\usepackage[sc,osf]{mathpazo} +\linespread{1.1} +\frenchspacing + +\GetFileInfo{ifmtarg.sty} +\begin{document} +{\addtocontents{toc}{\protect\begin{varwidth}[t]{\tocwidthA\linewidth}}} + +\title{The \pkg{ifmtarg} package} +\author{% + Author: Donald Arseneau, and Peter Wilson, Herries Press\\ + Maintainer: Will Robertson\\ + \texttt{will dot robertson at latex-project dot org}% +} +\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 \verb|\tl_if_empty:nTF| conditional from the \pkg{expl3} package. \verb|\@ifmtarg| is equivalent to \pkg{expl3}'s \verb|\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{http://www.ctan.org/pub/tex-archive/info/aro-bend/answer.002}{\texttt{CTAN/info/aro-bend/answer.002}} + + +\section*{Change History} + +\begin{itemize} +\item[v1.2a] New maintainer (Will Robertson) +\item[v1.2b] Typo in documentation example code +\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{http://www.latex-project.org/lppl.txt}}, version~1.3c or later (your choice). +The current maintainer of this work is Will Robertson. + +\bigskip + \noindent + Copyright Peter Wilson, 1996 \\ + Copyright Peter Wilson and Donald Arseneau, 2000 + +{\addtocontents{toc}{\protect\end{varwidth}\protect\hfill}} +{\addtocontents{toc}{\protect\begin{varwidth}[t]{\protect\tocwidthB\protect\linewidth}}} +\clearpage +\parindent=0pt + +\section{Implementation} +\VerbatimInput{ifmtarg.sty} + +{\addtocontents{toc}{\protect\end{varwidth}}} + +\end{document} -- cgit v1.2.3