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/xnewcommand/README | 10 ++ macros/latex/contrib/xnewcommand/xnewcommand.pdf | Bin 0 -> 275079 bytes macros/latex/contrib/xnewcommand/xnewcommand.sty | 16 +++ macros/latex/contrib/xnewcommand/xnewcommand.tex | 153 +++++++++++++++++++++++ 4 files changed, 179 insertions(+) create mode 100644 macros/latex/contrib/xnewcommand/README create mode 100644 macros/latex/contrib/xnewcommand/xnewcommand.pdf create mode 100644 macros/latex/contrib/xnewcommand/xnewcommand.sty create mode 100644 macros/latex/contrib/xnewcommand/xnewcommand.tex (limited to 'macros/latex/contrib/xnewcommand') diff --git a/macros/latex/contrib/xnewcommand/README b/macros/latex/contrib/xnewcommand/README new file mode 100644 index 0000000000..5bb8aabe6a --- /dev/null +++ b/macros/latex/contrib/xnewcommand/README @@ -0,0 +1,10 @@ +For most purposes, the features of \newcommand suffice. Nonetheless, +\newcommand lacks some interesting features like the ability to make +definition global or to use the \protected prefix supplied by +e-TEX. This--surprisingly small--package makes possible to pass an +optional argument \newcommand so that is becomes possible to use the +\global and \protected prefixes. + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. diff --git a/macros/latex/contrib/xnewcommand/xnewcommand.pdf b/macros/latex/contrib/xnewcommand/xnewcommand.pdf new file mode 100644 index 0000000000..08e7d05570 Binary files /dev/null and b/macros/latex/contrib/xnewcommand/xnewcommand.pdf differ diff --git a/macros/latex/contrib/xnewcommand/xnewcommand.sty b/macros/latex/contrib/xnewcommand/xnewcommand.sty new file mode 100644 index 0000000000..69c70e12aa --- /dev/null +++ b/macros/latex/contrib/xnewcommand/xnewcommand.sty @@ -0,0 +1,16 @@ +% $Date: 2007-04-23 17:32:09 +0200 (Mon, 23 Apr 2007) $ +% $Revision: 42 $ +\def \filedate {2007/04/21} +\def \fileversion {v1.2} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{xnewcommand}% + [\filedate \space \fileversion \space Improved newcommand (JN)] + +\def \@star@or@long #1{% + \@ifstar {\let \l@ngrel@x = \relax #1}% + {\@testopt {\@@star@or@long {#1}}{\long}}% +} +\@ifdefinable \@@star@or@long + {\def \@@star@or@long #1[#2]{\def \l@ngrel@x {#2}#1}} + +\endinput diff --git a/macros/latex/contrib/xnewcommand/xnewcommand.tex b/macros/latex/contrib/xnewcommand/xnewcommand.tex new file mode 100644 index 0000000000..0c637fe14a --- /dev/null +++ b/macros/latex/contrib/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}]{\}{\} +\end{texcode} +% +and +% +\begin{texcode} +\cmd[syntax,2]{newcommand}*{command}{definition} +\end{texcode} +% +is equivalent to +% +\begin{texcode} +\cmd[3]{newcommand}[]{\}{\} +\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