From 372e8497bf41d3fe0563c5c44fac9957c553a376 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 24 Apr 2007 23:58:20 +0000
Subject: new latex package xnewcommand (23apr07)

git-svn-id: svn://tug.org/texlive/trunk@4185 c570f23f-e606-0410-a88d-b1316a301751
---
 .../doc/latex/xnewcommand/xnewcommand.tex          | 153 +++++++++++++++++++++
 1 file changed, 153 insertions(+)
 create mode 100644 Master/texmf-dist/doc/latex/xnewcommand/xnewcommand.tex

(limited to 'Master/texmf-dist/doc/latex/xnewcommand/xnewcommand.tex')

diff --git a/Master/texmf-dist/doc/latex/xnewcommand/xnewcommand.tex b/Master/texmf-dist/doc/latex/xnewcommand/xnewcommand.tex
new file mode 100644
index 00000000000..0c637fe14a0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/xnewcommand/xnewcommand.tex
@@ -0,0 +1,153 @@
+\documentclass{article}
+
+\usepackage{etex}
+\usepackage[ascii]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[warn]{textcomp}
+\usepackage[a4paper, pdftex, margin=1.5in]{geometry}
+\usepackage{lmodern}
+\usepackage{typetex}
+\usepackage{xnewcommand}
+\usepackage{microtype}
+\usepackage{xcolor}
+\usepackage{url}
+\usepackage[bottom,hang]{footmisc}
+\usepackage[babel]{csquotes}
+\usepackage[british]{babel}
+\usepackage{hyperref}
+
+\setcounter{secnumdepth}{-\maxdimen}
+
+\newcommand*{\setdate}{}
+\def \setdate #1/#2/#3#4{%
+  \year  = #1
+  \month = #2
+  \day   = #3#4
+}
+
+\makeatletter
+\newcommand*{\getfileinfo}[1]{%
+  \def \filename {#1}%
+  \def \@tempb ##1 ##2 ##3\relax ##4\relax {%
+    \def \filedate    {##1}%
+    \def \fileversion {##2}%
+    \def \fileinfo    {##3}%
+  }%
+  \edef \@tempa {\csname ver@#1\endcsname}%
+  \expandafter \@tempb \@tempa \relax ? ? \relax \relax
+}
+\makeatother
+
+\newcommand*{\pack}{\textsf}
+
+\title  {The \pack{xnewcommand} package}
+\author {Josselin Noirel\\\url{http://www.jnoirel.fr/}}
+\date   {%
+  \getfileinfo{xnewcommand.sty}%
+  \expandafter \setdate \filedate
+  \today\ (\fileversion)}
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\begin{abstract}
+  For most purposes, the features of \cmd{newcommand} suffice.
+  Nonetheless, \cmd{newcommand} lacks some interesting features like
+  the ability to make definition global or to use the \cmd{protected}
+  prefix supplied by \eTeX.  This---surprisingly small---package makes
+  possible to pass an~optional argument \cmd{newcommand} so that is
+  becomes possible to use the \cmd{global} and \cmd{protected}
+  prefixes.
+\end{abstract}
+
+\section{Usage}
+
+Load the package with
+%
+\begin{texcode}
+  \cmd[1]{usepackage}{xnewcommand}
+\end{texcode}
+%
+Then \cmd{newcommand} can take an additional optional argument:
+%
+\begin{texcode}
+  \cmd[syntax,5]{newcommand}[prefix]{command}[number][default]{definition}
+\end{texcode}
+%
+where \meta{prefix} can be any valid prefix or combination of them:
+%
+\begin{description}
+\item [\cmd{long}]       The command will accept `long arguments', in
+                         other words, its arguments may contain ends
+                         of paragraph (explicit \cmd{par} or empty
+                         lines);
+
+\item [\cmd{global}]     The command is defined globally, in other
+                         words, the definition won't be confined to
+                         the current group;
+
+\item [\cmd{protected}]  The command will be robust in moving
+                         arguments and won't undergo systematic
+                         expansion at the beginning of tabular cells;
+
+\item [\cmd{outer}]      Makes the macro \cmd{outer} (not very useful,
+                         but included for the sake of completeness).
+\end{description}
+
+The same syntax applies to the commands \cmd{renewcommand},
+\cmd{DeclareRobustCommand}, \cmd{newenvironment} and
+\cmd{renewenvironment}.
+
+\section{Remarks}
+
+It should not break anything.  The normal syntax is preserved:
+%
+\begin{texcode}
+\cmd[syntax,2]{newcommand}{command}{definition}
+\end{texcode}
+%
+is equivalent to
+%
+\begin{texcode}
+\cmd[3]{newcommand}[\cmd{long}]{\<command\>}{\<definition\>}
+\end{texcode}
+%
+and
+%
+\begin{texcode}
+\cmd[syntax,2]{newcommand}*{command}{definition}
+\end{texcode}
+%
+is equivalent to
+%
+\begin{texcode}
+\cmd[3]{newcommand}[]{\<command\>}{\<definition\>}
+\end{texcode}
+%
+Any macro that uses \cmd{star@or@long} will inheritate the features
+described above.
+
+\section{Examples}
+
+Global definition:
+%
+\begin{texcode}
+\cmd{newcommand}[\cmd{global}]\marg{command}\marg{definition}
+\end{texcode}
+%
+Protected definition:
+%
+\begin{texcode}
+\cmd{newcommand}[\cmd{protected}]\marg{command}\marg{definition}
+\end{texcode}
+%
+Combination of both:
+%
+\begin{texcode}
+\cmd{newcommand}[\cmd{global} \cmd{protected}]\marg{command}\marg{definition}
+\end{texcode}
+
+\end{document}
-- 
cgit v1.2.3

