summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/ifthenx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-03-31 22:29:04 +0000
committerKarl Berry <karl@freefriends.org>2012-03-31 22:29:04 +0000
commit3687879dd2dab0c4f3374c2d800ef35789902105 (patch)
tree6d33c7f8129ef28e9435fca055ff25a14e0a9c9e /Master/texmf-dist/doc/latex/ifthenx
parent9c01b63974296c5795e3a8b63460ff6a46bf3b4d (diff)
new latex package ifthenx (31mar12)
git-svn-id: svn://tug.org/texlive/trunk@25801 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/ifthenx')
-rw-r--r--Master/texmf-dist/doc/latex/ifthenx/README80
1 files changed, 80 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ifthenx/README b/Master/texmf-dist/doc/latex/ifthenx/README
new file mode 100644
index 00000000000..954344ce2d6
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ifthenx/README
@@ -0,0 +1,80 @@
+ifthenx.sty Copyright (C) 2012 Geoffrey Jones 2012/03/31 (v0.1)
+<geoffrey stop jones snailshell uqconnect stop edu stop au>
+
+Package ifthenx.sty -- this little package extends David Carlisle's
+ifthen package, adding a few extra tests. These include:
+ \isinteger
+ \ispositiveinteger
+ \isrealnumber (synonym: \isnumber)
+ \ispositiverealnumber (synonym: \ispositivenumber)
+ \classloaded
+ \packageloaded
+ \fileexists
+
+Example:
+ \ifthenelse{\ispositiveinteger{\foo}\AND\fileexists{\foo.log}}
+ { commands to execute if true }
+ { commands to execute if false }
+
+ The production rules for numbers are quite straightforward:
+ \ispositiveinteger (string of one or more digits)
+ \isinteger (ditto, with optional leading minus sign)
+ \isrealnumber (ditto, with optional decimal point)
+ \ispositiverealnumber (ditto, with no leading minus sign)
+
+ Note that well-formed numbers are considered negative if they
+ possess a leading minus sign. Accordingly, while 0, 0.0, -0 and
+ -0.0 are all well-formed numbers, only 0 and 0.0 test positive.
+ Consider this a feature.
+
+Motivation:
+ While nowadays the ifthen package is sometimes deprecated (e.g., see the
+ March 2011 stackexchange.com conversation on this topic), it has several
+ useful attributes that make it attractive in certain situations.
+ Setting aside its downsides (particularly, the care needed when using it
+ inside fragile contexts), positives include:
+ 1. it provides a simple mechanism for assembling complex logical
+ expressions, i.e., those employing \AND, \OR, \NOT and \( ... \)
+ 2. its syntax, while always subject to preference, may be somewhat
+ easier for LaTeX novices to read, write and understand. (To my
+ eye, it presents a more approachable and certainly more uniform
+ grammar than etoolbox's syntax. E.g., compare
+ \ifboolexpr{ test {\ifnumcomp{\value{mycounter}}{>}{3}}}...
+ with
+ \ifthenelse{\value{mycounter} > 3}...
+ )
+ 3. string expansion semantics (cf., etoolbox that does not)
+ 4. it is relatively lightweight compared to, say, the might of etoolbox
+ (although note that we use etoolbox's \patchcmd if already loaded).
+
+Required Packages:
+ ifthen.sty (that's all)
+
+ However, note that ifthenx uses \patchcmd if etoolbox.sty is already
+ loaded.
+
+Related Packages:
+ xifthen.sty provides an alternative set of ifthen package extension
+ tests, several of which are based around capabilities drawn from
+ the calc package.
+
+ xifthen and ifthenx are compatible, but only if xifthen is loaded
+ before ifthenx (xifthen doesn't patch \ifthenelse but rewrites its
+ own modified version instead). If loaded in the recommended order,
+ users can ``mix and match'' the tests.
+ For example:
+ \newcommand\foo{-4}
+ \ifthenelse{\NOT\isundefined{\foo} % native ifthen pkg cmd
+ \AND\isnamedefined{foo} % xifthen pkg command
+ \AND\isnumber{\foo}}{true}{false} % ifthenx pkg command
+ evaluates true.
+
+Version: v0.1 *** prerelease ***
+ The author would welcome bug reports, comments, suggestions,
+ extensions and so forth at this early stage.
+
+Acknowledgements:
+ Gracious thanks David Carlisle for the ifthen package and for
+ teaching me a new technique for run-time patching macro code.
+
+-------------------------- End README ------------------------------------