CTAN Comprehensive TeX Archive Network

Direc­tory support/newcommand

                |           NEWCOMMAND.PY	     |
		|				     |
                | More flexible argument processing  |
                | than what \newcommand provides     |
		|				     |
                | By Scott Pakin, scott+nc@pakin.org |


LaTeX's \newcommand is fairly limited in the way it processes optional
arguments, but the TeX alternative, a batch of \defs and \futurelets,
can be overwhelming to the casual LaTeX user.  newcommand.py is a
Python program that automatically generates LaTeX macro definitions
for macros that require more powerful argument processing than
\newcommand can handle.  newcommand.py is intended for LaTeX advanced
beginners (i.e., those who know how to use \newcommand but not
internal LaTeX2e commands such as \@ifnextchar) and for more advanced
users who want to save some typing when defining complex macros.

With newcommand.py, the user specifies a template for a macro's
arguments.  newcommand.py then custom-generates a macro definition
according to the user's specifications and includes a user-friendly
"Put code here" comment to indicate where the macro's main code should
appear.  newcommand.py supports arbitrary interleavings of required
and optional arguments, starred macros, mandatory literal text, macros
with more than nine arguments, optional arguments delimited by
parentheses instead of square brackets, and optional arguments whose
value defaults to the value given for a prior argument.  The generated
macros can easily be pasted into a LaTeX document and edited as


You'll need a Python interpreter (http://www.python.org/).  Besides
that, just make sure that newcommand.py is placed somewhere in your
path and that spark.py is somewhere that newcommand.py can find it.

Copyright and license

Copyright (C) 2010 Scott Pakin, scott+nc@pakin.org

This package 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.  The latest version of
this license is in:


and version 1.3c or later is part of all distributions of LaTeX version
2006/05/20 or later.

Down­load the con­tents of this pack­age in one zip archive (399.0k).

new­com­mand – Gen­er­ate new com­mand def­i­ni­tions

Gen­er­at­ing any other than the sim­ple \new­com­mand-style com­mands, in , is te­dious (in the least). This script al­lows the spec­i­fi­ca­tion of com­mands in a ‘nat­u­ral’ style; the script then gen­er­ates macros to de­fine the com­mand.

Li­censesThe Project Public Li­cense
Copy­right2008 Scott Pakin
Main­tainerScott Pakin
Con­tained inTeX Live as new­com­mand
TopicsMacro sup­port
Guest Book Sitemap Contact Contact Author