diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:38 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:38 +0000 |
commit | 99784fdf77b10036ea4fe24dc7fa7f4ad0444f55 (patch) | |
tree | a73c16fab2c216893ec06fe465ebcd4909e3cb65 /Master/texmf-dist/source/latex/functan | |
parent | bad593825c87bb70ab7a9d7ac554e2d2b603cafd (diff) |
trunk/Master/texmf-dist/source/latex/functan
git-svn-id: svn://tug.org/texlive/trunk@302 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/functan')
-rw-r--r-- | Master/texmf-dist/source/latex/functan/functan.drv | 44 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/functan/functan.dtx | 1057 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/functan/functan.ins | 34 |
3 files changed, 1135 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/functan/functan.drv b/Master/texmf-dist/source/latex/functan/functan.drv new file mode 100644 index 00000000000..ab0d3d6c9b5 --- /dev/null +++ b/Master/texmf-dist/source/latex/functan/functan.drv @@ -0,0 +1,44 @@ +%% +%% This is file `functan.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% functan.dtx (with options: `driver') +%% +%% functan.ins +%% Copyright 2004 Antoine Lejay +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Antoine Lejay (Antoine.Lejay@iecn.u-nancy.fr) +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesFile{functan.drv} +[2004/07/03 v1.0 Macros for functional analysis] +\documentclass[11pt]{ltxdoc} +\usepackage{functan} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%%\OnlyDescription +\begin{document} +\DocInput{functan.dtx} +\end{document} diff --git a/Master/texmf-dist/source/latex/functan/functan.dtx b/Master/texmf-dist/source/latex/functan/functan.dtx new file mode 100644 index 00000000000..03242019a8e --- /dev/null +++ b/Master/texmf-dist/source/latex/functan/functan.dtx @@ -0,0 +1,1057 @@ +% \iffalse +% +% functan.dtx +% Copyright 2004 Antoine Lejay +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Antoine Lejay +% \fi +% \CheckSum{360} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +% \iffalse +%<*dtx> + \ProvidesFile{functan.dtx} +%</dtx> +%<package>\ProvidesPackage{functan} +%<driver>\ProvidesFile{functan.drv} +% \fi +% \ProvidesFile{functan.dtx}% + [2004/07/03 v1.0 Macros for functional analysis] +% \iffalse +%<*driver> +\documentclass[11pt]{ltxdoc} +\usepackage{functan} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%%\OnlyDescription +\begin{document} + \DocInput{functan.dtx} +\end{document} +%</driver> +% \fi +% \def\docdate{July, 13 2004} +% \DoNotIndex{\newcommand,\fi,\def,\else,\edef,\ifx,\let} +% \DoNotIndex{\global,\NeedsTeXFormat,\;,\ProcessOptions,\ProvidesPackage} +% \DoNotIndex{\PassOptionsToPackage} +% \GetFileInfo{functan.dtx} +% \MakeShortVerb{\"} +% \DeleteShortVerb{\|} +% \Macro{L2}{\mathrm{L}^2} +% \Macro{H10}{\mathrm{H}^1_0} +% \Macro{L2Om}{\m{L2}(\Omega)} +% \Macro{H10Om}{\m{H10}(\Omega)} +% \newnorm{aver}{\delonearg[#1]{#2}{\langle}{\rangle}} +% \newconv{*L2Om}{\conv*{\star\text{-}\m{L2Om}}{#1}} +% \newcommand{\itm}{\medskip\noindent The command \ignorespaces} +% \newcommand{\itms}{\medskip\noindent The commands \ignorespaces} +% \newenvironment{examplenotab}{\medskip\hrule\noindent\strut\ignorespaces}{\par\smallskip\hrule} +% \newenvironment{example}{\medskip\hrule\noindent\begin{tabular}{@{\strut}l l}}{\end{tabular}\hrule} +% \newcommand{\event}[2][auto]{\delonearg[#1]{#2}{\{}{\}}} +% \let\package\textsf +% \newcommand{\Nota}{\medskip\noindent\textit{Nota: }\ignorespaces} +% +% +% \title{\package{functan}\thanks{Package version \fileversion{} of +% \filedate{}.}\\ Macros for functional analysis and related domains} +% \author{Antoine Lejay\\ +% $<$\texttt{Antoine.Lejay@iecn.u-nancy.fr}$>$} +% \date{\docdate\\ Printed on \today} +% \maketitle +% \section{Introduction} +% +% This package is designed especially for the people +% working in domains of mathematics such +% as functional analysis and PDE theory. Of course, +% this package may be used in other domains. +% +% In functional analysis and PDE theory, one may face +% a lot of names of spaces, sometimes depending +% on one or more parameters, such as $\m{L2Om}$, $\m{H10Om}$, ... +% Besides, one has to deal +% with norms, convergence and scalar product +% for each of these spaces. +% As a control sequence, i.e., a \TeX{} command, consists only +% of letters, using \TeX's standard macros is not convenient +% for dealing with such spaces. Yet +% composing each of these space names at each their +% occurrence increases the risk of errors, +% and tends to be tedious. +% +% Fortunately, \TeX{} provides some way to +% create commands whose name may contain +% arbitrary characters. We exploit this +% possibility to deal with names of +% functional spaces and related objects +% (norms, convergence, ...). +% +% This package allows for example to typeset: +% \begin{quote} +% We denote by $\m{L2Om}$ the space of measurable +% functions on $\Omega$ which are square integrable. +% The associated norm $\norm{L2Om}{\cdot}$ is defined +% by $\norm{L2Om}{f}=\left(\int_\Omega f(x)^2 dx\right)^{1/2}$ +% and the corresponding scalar product is +% $\scalprod{L2Om}{f}{g}=\int_\Omega f(x)g(x)dx$. +% We write $f_n\conv{L2Om}{n\to\infty}f$ +% if the sequence $(f_n)_n$ converges to $f$ in $\m{L2Om}$. +% If for all $g\in\m{L2Om}$, $\scalprod{L2Om}{f_n}{g}$ +% converges to $\scalprod{L2Om}{f}{g}$, then +% we say that $(f_n)_n$ converges weakly to $f$ +% in $\m{L2Om}$, and we write $f_n\wkconv{L2Om}{n\to\infty}f$. +% \end{quote} +% The code for this example is the following: +% \begin{verbatim} +% \Macro{L2Om}{\mathrm{L}^2(\Omega)} +% +% We denote by $\m{L2Om}$ the space of measurable +% functions on $\Omega$ which are square integrable. +% The associated norm $\norm{L2Om}{\cdot}$ is defined +% by $\norm{L2Om}{f}=\left(\int_\Omega f(x)^2 dx\right)^{1/2}$ +% and the corresponding scalar product is +% $\scalprod{L2Om}{f}{g}=\int_\Omega f(x)g(x)dx$. +% We write $f_n\conv{L2Om}{n\to\infty}f$ +% if the sequence $(f_n)_n$ converges to $f$ in $\m{L2Om}$. +% If for all $g\in\m{L2Om}$, $\scalprod{L2Om}{f_n}{g}$ +% converges to $\scalprod{L2Om}{f}{g}$, then +% we say that $(f_n)_n$ converges weakly to $f$ +% in $\m{L2Om}$, and we write $f_n\wkconv{L2Om}{n\to\infty}f$. +% \end{verbatim} +% +% \begin{center} +% \fbox{\begin{minipage}{0.75\textwidth} This package +% uses of some commands of the package +% \package{amsmath} (some of these commands are available +% only for version \textbf{2.0} or higher), which is then automatically +% loaded. All the options of \package{amsmath} +% may be defined as options of \package{functan}. +% +% Before using \package{functan}, +% be sure you have a recent version of \package{amsmath} +% installed in your computer. +% \end{minipage}} +% \end{center} +% +% \section{Loading the package} +% +% This package is loaded as any package by the command +% "\usepackage". This package has no options, except +% those of \package{amsmath} in order to avoir +% an option clash. Thus, the possible options +% are: +% "leqno", +% "intlimits", +% "nointlimits", +% "sumlimits", +% "nosumlimits", +% "namelimits", +% "nonamelinits", +% "reqno", +% "centertags", +% "tbtags", +% "cmex10" and +% "fleqn". +% +% \medskip +% +% \noindent\textbf{Incompatibilities : } This package +% has no known incompatibilities with other packages. +% +% \section{The commands} +% +% \subsection{An alternative system of macros} +% +% This system consists in associating a sequence +% of tokens to a name by the command "\Macro", +% and call it later by the command "\m". +% +% +% \itm "\Macro"\marg{name}\marg{expansion} +% \DescribeMacro{\Macro} +% associates the list of tokens \meta{expansion} +% to the list of tokens +% \meta{name}, which may contain any arbitrary +% sequence of characters (except~"{", "}" and +% active characters). This macro produces +% a warning message ``The macro `\meta{name}' has +% already been defined'' if \meta{name} already exists. +% +% \Nota The sequence \meta{name} may correspond to the control +% sequence of a \TeX{} macro without creating interferences. +% Internally, the system stores the expansion +% of \meta{name} as the \TeX{} control sequence +% "functan@macro@"\meta{name}. +% +% \itm "\m"\marg{name} gives the expansion corresponding +% \DescribeMacro{\m} +% to \meta{name} if a couple \meta{name} and \meta{expansion} +% has already been defined by +% "\Macro". Otherwise, an error message +% ``The macro `\meta{name}' is not defined'' is produced. +% The error message ``No macro's name given'' is +% also produced if the argument is given, that is +% if "\m{}" is encountered. +% +% +% \begin{examplenotab} +% "\Macro{L2Om}{\mathrm{L}^2(\Omega)}"\\ +% "Denote by $\m{L2Om}$ the space of functions such that..."\\ +% \hbox{}\quad +% Denote by $\m{L2Om}$ the space of functions such that... +% \end{examplenotab} +% +% \Nota A command "\mempty" +% is also defined whose action is similar to +% "\m", except that it does not produce +% an error message if its argument is empty. +% +% \subsection{Norms} +% +% The command "\norm" allows to typeset +% norms easily. +% \begin{table} +% \begin{center} +% \begin{tabular}{l l l l l l} +% \hline +% (empty string) & \texttt{auto} & +% \texttt{big} & \texttt{Big} & \texttt{bigg} & \texttt{Bigg}\\ +% \hline +% \end{tabular} +% \caption{\label{table-1} Possible arguments for the size} +% \end{center} +% \end{table} +% +% \itm "\norm"\oarg{size}\marg{name}\marg{arg} +% \DescribeMacro{\norm} +% is roughly an equivalent to "\|"\meta{arg}"\|_{\m"\marg{name}"}" +% but with a control on the size of the vertical bars. +% If \meta{name} is empty, +% then nothing is put in subscript. +% The optional argument \meta{size} is one of the +% element in Table~\ref{table-1}. +% By default, \meta{size} is set to \texttt{auto}, +% which is equivalent in using "\left\|"..."\right\|" +% around \meta{arg}. +% If \meta{size} is empty, that is when one call +% "\norm[]{...}{...}", then the delimitor $\|$ +% is used with its normal size. If \meta{size} is equal to +% \texttt{big}, \texttt{Big}, \texttt{bigg} or \texttt{Bigg}, +% then \meta{size} is inserted before the delimitors $\|$. +% +% \Nota If \meta{size} is not one of the elements of Table~\ref{table-1}, +% the the normal size is used. +% +% \begin{example} +% "\norm{}{f}" & $\norm{}{f}$\\ +% "\norm{L2Om}{f}" & $\norm{L2Om}{f}$\\ +% "\norm[Big]{L2Om}{f}" & $\norm[Big]{L2Om}{f}$\\ +% "\norm{L2Om}{\frac{1}{f}}" & $\norm{L2Om}{\frac{1}{f}}$\\ +% "\norm[]{L2Om}{\frac{1}{f}}" & $\norm[]{L2Om}{\frac{1}{f}}$\\ +% \end{example} +% +% \itm "\norm*"\oarg{size}\marg{subscr}\marg{arg} +% \DescribeMacro{\norm*} +% works as "\norm", except that \meta{subscr} is not +% one of the macro defined by "\Macro", +% but any sequence of tokens which is put in subscript. +% For example "\norm*{\infty}{f}" is equivalent +% to "\norm{}{f}_{\infty}". +% +% \begin{example} +% "\norm*{\infty}{f}" & $\norm*{\infty}{f}$\\ +% "\norm*[Big]{\infty}{f}" & $\norm*[Big]{\infty}{f}$\\ +% \end{example} +% +% \itm "\newnorm"\marg{name}\marg{expansion} +% \DescribeMacro{\newnorm} +% allows to override the behavior of the "\norm" macro. +% Instead of using a "\|"..."\|" +% structure, the user may for example use other delimitors. +% Here \meta{name} is any sequence of tokens (except +% "{", "}" and active characters), already +% defined by "\Macro" or not. +% The arguments "#1" (for the size) et "#2" (for the argument) may be +% used in \meta{expansion}. The macros +% "\casesize" and "\delonearg" (see Section~\ref{sub-macro} below) +% may be used to create some new kind of norms. +% +% \newnorm{L2Om}{\delonearg[#1]{#2}{|}{|}} +% \begin{example} +% "\newnorm{L2Om}{\delonearg[#1]{#2}{|}{|}}" \\ +% "\norm{L2Om}{f}" & $\norm{L2Om}{f}$\\ +% "\norm[Big]{L2Om}{f}" & $\norm[Big]{L2Om}{f}$\\ +% \end{example} +% +% \Nota It seems that some side effects +% appear when "\newnorm" is used inside a group. +% Hence, it is recommended to use this command +% in the preamble. +% +% +% +% \subsection{Scalar products} +% +% Macros for scalar products are similar to +% macros for the norms, except that two +% argument are needed. +% +% \itm "\scalprod"\oarg{size}\marg{name}\marg{arg 1}\marg{arg 2} +% \DescribeMacro{\scalprod} +% creates roughly +% "\langle"\meta{arg 1}","\meta{arg 2}"\rangle_{\m"\marg{name}"}". +% The optional +% \meta{size} argument shall be taken in Table~\ref{table-1}, +% and acts as a modifier for the size of the brackets. +% +% \begin{example} +% "\scalprod{}{f}{g}" & $\scalprod{}{f}{g}$\\ +% "\scalprod{L2Om}{f}{g}" & $\scalprod{L2Om}{f}{g}$\\ +% "\scalprod{L2Om}{f}{\frac{1}{g}}" & $\scalprod{L2Om}{f}{\frac{1}{g}}$\\ +% "\scalprod[big]{L2Om}{f}{\frac{1}{g}}" & $\scalprod[big]{L2Om}{f}{\frac{1}{g}}$ +% \end{example} +% +% \itm "\scalprod*"\oarg{size}\marg{subscr}\marg{arg 1}\marg{arg 2} +% \DescribeMacro{\scalprod*} +% acts like "\scalprod", except that \meta{subscr} is +% not the name already defined by "\Macro", but +% a sequence of tokens put in subscript after the closing +% bracket. The rules are the same as for "\norm". +% +% \begin{example} +% "\scalprod*{X,Y}{Ax}{y}" & $\scalprod*{X,Y}{Ax}{y}$\\ +% "\scalprod*{X,Y}{B^{-1}x}{y}" & $\scalprod*{X,Y}{B^{-1}x}{y}$\\ +% "\scalprod*[]{X,Y}{B^{-1}x}{y}" & $\scalprod*[]{X,Y}{B^{-1}x}{y}$ +% \end{example} +% +% \itm "\newscalprod"\marg{name}\marg{expansion} +% \DescribeMacro{\newscalprod} +% allows to override the behavior of "\scalprod", +% as for "\newnorm". Here, \meta{expansion} may +% used the three arguments "#1" (for the optional size), +% "#2" (\meta{arg 1}) and "#3" (\meta{arg 2}). +% The command "\towarg" (see Section~\ref{sub-macro} below) +% may be used to help the user to deal with new types +% of scalar products. +% +% \newscalprod{L2}{\deltwoarg[#1]{#2}{#3}{(}{)}{|}} +% \begin{examplenotab} +% \noindent\strut"\newscalprod{L2Om}{\deltwoarg[#1]{#2}{#3}{(}{)}{|}}" +% +% \noindent\begin{tabular}{@{\strut} l l} +% "\scalprod{L2}{f}{g}" & $\scalprod{L2}{f}{g}$ \\ +% "\scalprod[Big]{L2}{f}{g}" & $\scalprod[Big]{L2}{f}{g}$\\ +% "\scalprod[]{L2}{f^2}{g^2}" & $\scalprod[]{L2}{f^2}{g^2}$ +% \end{tabular} +% \end{examplenotab} +% +% \Nota It seems that some side effects +% appear when "\newnorm" is used inside a group. +% Hence, it is recommended to used this command +% in the preamble. +% +% \subsection{Convergence} +% The package \package{amsmath} provides a way +% to create \emph{extensible arrows}, whose +% size depends on the material put above and +% below the arrow. +% +% \itm "\conv"\marg{name}\marg{below} +% \DescribeMacro{\conv} +% creates an extensible arrow by putting the +% expansion of \meta{name} above the arrow, +% and \meta{below} under the arrow. +% This command uses the commands "\xrightarrow" of +% \package{amsmath}. However, the "\xrightarrow" command +% takes as an optional argument the material to be put +% below. Here, it is a mandatory second argument. +% +% \begin{example} +% "x_n\conv{}{} x" & $x_n\conv{}{} x$\\ +% "f_n\conv{}{n\to\infty} f" & $f_n\conv{}{n\to\infty} f$\\ +% "f_n\conv{L2Om}{n\to\infty} f" & $f_n\conv{L2Om}{n\to\infty} f$\\ +% \end{example} +% +% \itm "\conv*"\marg{above}\marg{below} +% \DescribeMacro{\conv*} +% is similar to "\conv", except that both +% \meta{above} and \meta{below} are lists of tokens +% that are put respectively above and below the arrow. +% +% \begin{example} +% "f_n\conv*{\text{uniformly}}{n\to\infty} f" & $f_n\conv*{\text{uniformly}}{n\to\infty} f$ +% \end{example} +% +% \itm "\newconv"\marg{name}\marg{expansion} allows +% \DescribeMacro{\newconv} +% to override the behavior of "\conv"\marg{name}, +% whether \meta{name} corresponds to a name +% defined by "\Macro" or not. The token list +% \meta{expansion} may use one argument "#1". +% +% \begin{examplenotab} +% "\newconv{*L2Om}{\conv*{\star\text{-}\m{L2Om}}{#1}}"\\ +% "f_n\conv{*L2Om}{n\to\infty} f" \quad $f_n\conv{*L2Om}{n\to\infty}f$\\ +% \end{examplenotab} +% +% \itms "\leftconv"\marg{name}\marg{below} +% \DescribeMacro{\leftconv} +% \DescribeMacro{\leftconv*} +%\\ and "\leftconv*"\marg{above}\marg{below} +% act like "\conv" and "\conv*", except that +% an arrow pointing to the left ($\leftconv{}{}$) is used instead +% of an arrow pointing to the right ($\conv{}{}$). +% +% \itms "\leftrightconv"\marg{name}\marg{below} +% \DescribeMacro{\leftrightconv} +% \DescribeMacro{\leftrightconv*} +% \\and "\leftrightconv*"\marg{above}\marg{below} +% act like "\conv" and "\conv*", except that +% an arrow pointing both to the left and to +% the right ($\leftrightconv{}{}$) is used instead +% of an arrow pointing to the right ($\conv{}{}$). +% +% +% There are other commands similar to "\conv", +% "\conv*", "\leftconv", "\leftconv*", +% "\leftrightconv" and "\leftrightconv*" +% that is with the same arguments, but with +% different types of arrows. +% +% \itms "\wkconv", "\wkconv*", "\leftwkconv", +% \DescribeMacro{\wkconv} +% \DescribeMacro{\wkconv*} +% \DescribeMacro{\leftwkconv} +% \DescribeMacro{\leftwkconv*} +% \DescribeMacro{\leftrightwkconv} +% \DescribeMacro{\leftrightwkconv*} +% "\leftwkconv*",\\ +% "\leftrightwkconv" and "\leftrightwkconv*" +% use $\wkconv{}{}$ instead of~$\conv{}{}$. Such an arrow +% is generally used to denote \emph{weak convergence} +% (hence the "wk"). +% +% \begin{example} +% "f_n\wkconv{}{n\to\infty} f" & +% $f_n\wkconv{}{n\to\infty} f$\\ +% "f_n\wkconv{H10}{n\to\infty} f" & +% $f_n\wkconv{H10}{n\to\infty} f$ +% \end{example} +% +% \itms "\Conv", "\Conv*", "\Leftconv", "\Leftconv*", +% \DescribeMacro{\Conv} +% \DescribeMacro{\Conv*} +% \DescribeMacro{\Leftconv} +% \DescribeMacro{\Leftconv*} +% \DescribeMacro{\Leftrightconv} +% \DescribeMacro{\Leftrightconv*} +% "\Leftrightconv" and "\Leftrightconv*" +% use $\Conv{}{}$ instead of~$\conv{}{}$. +% This may be used to denote convergence in +% distribution in probability theory. +% This could also be used for the implication +% and equivalence symbols in logic. +% \begin{examplenotab} +% "\mu_n\Conv{}{n\to\infty} \mu" \quad +% $\mu_n\Conv{}{n\to\infty} \mu$\\ +% "x<0\Leftrightconv*{\text{Lemma 1.1}}{} f(x)\geq 0"\\ +% \hbox{}\quad $x<0\Leftrightconv*{\text{Lemma 1.1}}{} f(x)\geq 0$ +% \end{examplenotab} +% +% \subsection{Defining macros} +% +% \label{sub-macro} +% +% The package \package{functan} provides a few +% macros to help the user to define its own +% norms, scalar products, ... +% +% \itm "\delonearg"\oarg{size}\marg{arg}\marg{left del}\marg{right del} +% \DescribeMacro{\delonearg} +%\\ surrounds \meta{arg} the left delimitor +% \meta{left del} and the right delimitor \meta{right del}. +% The possible values of the optional argument \meta{size} (which is by +% default set to "auto") are given in Table~\ref{table-1}. +% \newcommand{\ket}[2][auto]{\delonearg[#1]{#2}{|}{\rangle}} +% \newcommand{\bra}[2][auto]{\delonearg[#1]{#2}{\langle}{|}} +% \begin{examplenotab} +% "\newcommand{\event}[2][auto]{\delonearg[#1]{#2}{\{}{\}}}"\\ +% "\event{1,\dotsc,\frac{1}{n}}"\\ +% "\cup\event[]{\frac{1}{n^2},\dotsc,\frac{2}{n^2}}"\\ +% \hbox{}\quad$\event{1,\dotsc,\frac{1}{n}}\cup\event[]{\frac{1}{n},\dotsc,\frac{2}{n}}$\\ +% "\newcommand{\ket}[2][auto]{\delonearg[#1]{#2}{|}{\rangle}}"\\ +% "\ket{Ax}" \quad $\ket{Ax}$\\ +% "\newcommand{\bra}[2][auto]{\delonearg[#1]{#2}{\langle}{|}}"\\ +% "\bra{Ax}" \quad $\bra{Ax}$ +% \end{examplenotab} +% +% \itm "\deltwoarg"\oarg{size}\marg{arg 1}\marg{arg 2}... +% \DescribeMacro{\deltwoarg} +% \\...\marg{left del}\marg{right del}\marg{sep} +% is similar to "\delonearg", except that it +% separates \meta{arg 1} and \meta{arg 2} +% by a separator \meta{sep.}. If +% \meta{sep} is set to "|", then a vertical bar +% is used, with an automatic adjustment to the size +% of the delimitors. +% +% \newcommand{\set}[3][auto]{\deltwoarg[#1]{#2}{#3}{\{}{\}}{\,;\,}} +% \newcommand{\braket}[3][auto]{\deltwoarg[#1]{#2}{#3}{\langle}{\rangle}{|}} +% \begin{examplenotab} +% "\newcommand{\set}[3][auto]{\deltwoarg[#1]{#2}{#3}{\{}{\}}{\,;\,}}"\\ +% "\set{x\geq 0}{P(x)=0}" \quad $\set{x\geq 0}{P(x)=0}$\\ +% "\newcommand{\braket}[3][auto]{%"\\ +% "\deltwoarg[#1]{#2}{#3}{\langle}{\rangle}{|}}"\\ +% "\braket{Ax}{y}" \quad $\braket{Ax}{y}$ +% \end{examplenotab} +% +% \itm "\casesize"\marg{size}\marg{auto}\marg{empty}... +% \DescribeMacro{\casesize} +%\\...\marg{big}\marg{Big}\marg{bigg}\marg{Bigg} +% takes \meta{size} in Table~\ref{table-1} +% and executes \marg{empty} if \meta{size} is an empty +% list of tokens, \meta{auto} if \meta{size} is "auto", +% \meta{big} if \meta{size} is "big", ... +% The error message ``Size argument `\meta{size}' of `casesize' not valid'' +% is produced if \meta{size} is not in Table~\ref{table-1} +% +% \itm "\delcasesize"\marg{size}\marg{auto}\marg{empty}\marg{other} +% \DescribeMacro{\delcasesize} +% is similar to "\casesize", except that \meta{other} is +% executed if \meta{size} is different from "auto" +% or from an empty list of tokens. +% +% +% \section{Examples} +% +% \subsection{Macros with arguments} +% +% It is possible to define a macro \meta{name} +% such that "\m"\marg{name} accepts some arguments. +% For that, it is sufficient +% that it expands into a \TeX{} command +% that accepts arguments. +% +% \newcommand{\evolution}[2]{\m{#1}(0,T;\m{#2})} +% \Macro{L20T}{\evolution{L2}} +% \begin{examplenotab} +% "\newcommand{\evolution}[2]{\m{#1}(0,T;\m{#2})}"\\ +% "\Macro{L20T}{\evolution{L2}}"\\ +% "\m{L20T}{H10Om}\cap\m{L20T}{L2Om}"\quad +% $\m{L20T}{H10Om}\cap\m{L20T}{L2Om}$ +% \end{examplenotab} +% +% +% \subsection{Matrix norms} +%\newnorm{matrix}{\delcasesize{#1}% +%{\left|\left|\left| #2\right|\right|\right|}% +%{|||#2|||}% +%{#1|#1|#1|#2 #1|#1|#1|}} +% +% A matrix norm with three bars may be +% defined by +%\begin{verbatim} +%\newnorm{matrix}{\delcasesize{#1}% +%{\left|\left|\left| #2\right|\right|\right|}% +%{|||#2|||}% +%{#1|#1|#1|#2 #1|#1|#1|}} +%\end{verbatim} +% so that +% \begin{examplenotab} +% "\norm{matrix}{A^2}\leq \norm{matrix}{A}^2"\quad +% $\norm{matrix}{A^2}\leq \norm{matrix}{A}^2$\\ +% "\norm[]{matrix}{A^2}\leq \norm{matrix}{A}^2"\quad +% $\norm[]{matrix}{A^2}\leq \norm{matrix}{A}^2$ +% \end{examplenotab} +% +% \subsection{Sets} +% +% An example of code for defining sets was given +% with the documentation of "\deltwoarg". Here is +% another possibility +% \newcommand{\settwo}[3][auto]{\deltwoarg[#1]{#2\,}{\,#3}{\{}{\}}{|}} +% \begin{examplenotab} +% "\newcommand{\set}[3][auto]{%"\\ +% "\deltwoarg[#1]{#2\,}{\,#3}{\{}{\}}{|}}"\\ +% "\set{x>-1}{\frac{x}{1+x}\geq \frac{1}{2}}"\quad +% $\displaystyle \settwo{x>-1}{\frac{x}{1+x}\geq \frac{1}{2}}$ +% \end{examplenotab} +% +% \subsection{Duality products} +% +% The command "\casesize" may be used for defining +% a duality product, which is a bit tricky since +% we want the position of name of the dual space +% to be adjusted to the size of the delimitors. +% The command "\dual" defined by +% +%\newcommand{\dual}[5][auto]{ +%\casesize{#1}{ +%\left.\vphantom{\left\langle #4;#5\right\rangle}% +%\right._{\m{#2}}\left.% +%\left\langle #4;#5\right\rangle\right._{\m{#3}}}% +%{{}_{\m{#2}}\langle #4;#5\rangle_{\m{#3}}}% +%{\bigl._{\m{#2}}\bigl\langle #4;#5\bigr\rangle_{\m{#3}}}% +%{\Bigl._{\m{#2}}\Bigl\langle #4;#5\Bigr\rangle_{\m{#3}}}% +%{\biggl._{\m{#2}}\biggl\langle #4;#5\biggr\rangle_{\m{#3}}}% +%{\Biggl._{\m{#2}}\Biggl\langle #4;#5\Biggr\rangle_{\m{#3}}}} +% \begin{verbatim} +%\newcommand{\dual}[5][auto]{ +%\casesize{#1}{ +%\left.\vphantom{\left\langle #4;#5\right\rangle}% +%\right._{\m{#2}}\left.% +%\left\langle #4;#5\right\rangle\right._{\m{#3}}}% +%{{}_{\m{#2}}\langle #4;#5\rangle_{\m{#3}}}% +%{\bigl._{\m{#2}}\bigl\langle #4;#5\bigr\rangle_{\m{#3}}}% +%{\Bigl._{\m{#2}}\Bigl\langle #4;#5\Bigr\rangle_{\m{#3}}}% +%{\biggl._{\m{#2}}\biggl\langle #4;#5\biggr\rangle_{\m{#3}}}% +%{\Biggl._{\m{#2}}\Biggl\langle #4;#5\Biggr\rangle_{\m{#3}}}} +% \end{verbatim} +% may be used to produce +% \Macro{H1}{\mathrm{H}^1} +% \Macro{H-1}{\mathrm{H}^{-1}} +% \begin{example} +% "\Macro{H1}{\mathrm{H}^1}"\\ +% "\Macro{H-1}{\mathrm{H}^{-1}}"\\ +% "\dual{H-1}{H1}{f}{\frac{1}{g}}" & +% $\dual{H-1}{H1}{f}{\frac{1}{g}}$\\ +% "\dual[]{H-1}{H1}{f}{\frac{1}{g}}" & +% $\dual[]{H-1}{H1}{f}{\frac{1}{g}}$\\ +% "\dual[bigg]{H-1}{H1}{f}{\frac{1}{g}}" & +% $\dual[bigg]{H-1}{H1}{f}{\frac{1}{g}}$ +% \end{example} +% +% +% +% +% \section{The code} +% +% \subsection{Package heading} +% This package uses some code of the \package{amsmath} package. +% All the options of \package{amsmath} may +% be set as options of \package{functan} in +% order to avoir an option clash. +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{functan}[2004/07/03 v1.0, Macros for functional analysis] +\DeclareOption{leqno}{% +\PassOptionsToPackage{leqno}{amsmath}} +\DeclareOption{intlimits}{% +\PassOptionsToPackage{intlimits}{amsmath}} +\DeclareOption{nointlimits}{% +\PassOptionsToPackage{leqno}{amsmath}} +\DeclareOption{sumlimits}{% +\PassOptionsToPackage{sumlimits}{amsmath}} +\DeclareOption{nosumlimits}{% +\PassOptionsToPackage{leqno}{amsmath}} +\DeclareOption{namelimits}{% +\PassOptionsToPackage{namelimits}{amsmath}} +\DeclareOption{nonamelinits}{% +\PassOptionsToPackage{nonamelinits}{amsmath}} +\DeclareOption{reqno}{% +\PassOptionsToPackage{reqno}{amsmath}} +\DeclareOption{centertags}{% +\PassOptionsToPackage{centertags}{amsmath}} +\DeclareOption{tbtags}{% +\PassOptionsToPackage{tbtags}{amsmath}} +\DeclareOption{cmex10}{% +\PassOptionsToPackage{cmex10}{amsmath}} +\DeclareOption{fleqn}{% +\PassOptionsToPackage{fleqn}{amsmath}} +\ProcessOptions +\RequirePackage{amsmath}[2000/01/01 v2.0] +% \end{macrocode} +% \subsection{Defining macros} +% +% \begin{macro}{\Macro} +% This commands defines a new macro with +% name \meta{name}, by creating +% a \TeX{} command \verb+functan@macro@+\meta{name}. +% A warning message is sent if \meta{name} has already +% been defined. +% \begin{macrocode} +\newcommand{\Macro}[2]{\@ifundefined{functan@macro@#1}{}{% +\PackageWarning{functan}{The macro '#1' has already been defined}} +\@namedef{functan@macro@#1}{#2}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\m} +% \begin{macro}{\mempty} +% This command allows to call the macro defined by \meta{name}. +% An error message is sent if \meta{name} has not been +% defined, or if no argument is given. +% The macro \verb+\mempty+ provides no error +% message is the argument is empty. It is used +% to deal with \verb+\conv+ macros. +% \begin{macrocode} +\newcommand{\m}[1]{\@ifempty{#1}{% +\PackageError{functan}{No macro's name given}{} +}{% +\@ifundefined{functan@macro@#1}{% +\PackageError{functan}{The macro `#1' is not defined}{}}{% +\@nameuse{functan@macro@#1}}}} +\newcommand{\mempty}[1]{\@ifempty{#1}{}{% +\@ifundefined{functan@macro@#1}{% +\PackageError{functan}{The macro `#1' is not defined}{}}{% +\@nameuse{functan@macro@#1}}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Dealing with size} +% \begin{macro}{\functan@casesize} +% \begin{macro}{\delcasesize} +% The macro "\delcasesize" is an alias for "\functan@casesize". +% These macros require four arguments. This first one +% is the size among $\emptyset$ (empty argument for normal size) +% \texttt{auto} and one of the delimitors possible +% size (\texttt{big}, \texttt{Big}, \texttt{bigg}, \texttt{Bigg}). +% It \texttt{auto} is detected, then the second argument +% is executed. It no argument is given, then the third +% argument is executed. Otherwise, the fourth argument +% is executed. +% Another macro, "\casesize" (see below), is intended +% to execute a different code the the six distinct possibilities +% ($\emptyset$, \texttt{auto}, +% \texttt{big}, \texttt{Big}, \texttt{bigg}, \texttt{Bigg}). +% \begin{macrocode} +\global\def\functan@size@auto{auto} +\newcommand{\functan@casesize}[4]{\def\functan@size{#1}% +\ifx\functan@size\functan@size@auto #2\else% +\@ifempty{#1}{#3}{#4}\fi} +\let\delcasesize\functan@casesize +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\casesize} +% The first argument is one of the delimitor's size +% specification (\texttt{auto}, $\emptyset$, +% \texttt{big}, \texttt{Big}, \texttt{bigg}, \texttt{Bigg}), +% and the six others are the different codes +% for each of the possible size in the order given just above. +% \begin{macrocode} +\global\def\functan@size@big{big} +\global\def\functan@size@Big{Big} +\global\def\functan@size@bigg{bigg} +\global\def\functan@size@Bigg{Bigg} +\newcommand{\casesize}[7]{% +\def\functan@size{#1} +\@ifempty{#1}{#3}{% +\ifx\functan@size\functan@size@auto{#2}\else% +\ifx\functan@size\functan@size@big{#4}\else% +\ifx\functan@size\functan@size@Big{#5}\else% +\ifx\functan@size\functan@size@bigg{#6}\else% +\ifx\functan@size\functan@size@Bigg{#7}\else% +\PackageError{functan}{Size argument `#1' of `casesize' not valid}% +\fi\fi\fi\fi\fi}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\delonearg} +% \begin{macro}{\deltwoarg} +% These two macros may be used for defining a pair +% of delimitors with automatic or manual size adjustment. +% +% \Nota A "big-g-g" argument is transformed +% into \TeX{} control sequence with the command +% "\@nameuse". If the argument of \@nameuse +% is not a control sequence for an already defined +% control sequence, then "\@nameuse"\marg{...} +% is transformed into an empty list. +% \begin{macrocode} +\newcommand{\delonearg}[4][auto]{% +\functan@casesize{#1}{\left#3 #2 \right#4}{% +#3 #2 #4}{\@nameuse{#1l}#3 #2 \@nameuse{#1r}#4}} +\newcommand{\deltwoarg}[6][auto]{% +\def\functan@vert@bar{|}% +\edef\functan@arg@bar{#6}% +\ifx\functan@arg@bar\functan@vert@bar% +\functan@casesize{#1}{\left#4 #2\;\vrule\; #3\right#5}{% +#4 #2\;\vert\;#3 #5}{% +\@nameuse{#1l}#4 #2\;\@nameuse{#1}\vert\;#3 \@nameuse{#1r}#5} +\else +\functan@casesize{#1}{\left#4 #2 #6 #3 \right#5}{% +#4 #2 #6 #3 #5}{% +\@nameuse{#1l}#4 #2 #6 #3 \@nameuse{#1r}#5} +\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \subsection{Norms} +% \begin{macro}{\functan@norm} +% This is the generic macro for the norms, which +% uses double bars $\Vert$ as delimitors. +% \begin{macrocode} +\newcommand{\functan@norm}[3]{% +\functan@casesize{#1}{\left\lVert #3\right\rVert% +\@ifnotempty{#2}{_{#2}}}{% +\lVert #3\rVert\@ifnotempty{#2}{_{#2}}}{% +\@nameuse{#1l}\lVert #3\@nameuse{#1r}\rVert% +\@ifnotempty{#2}{_{#2}}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\functan@starred@norm} +% \begin{macro}{\functan@nonstarred@norm} +% This two macros call the command +% "\functan@norm" either with (non-starred form) +% or without (starred form) expending the second +% argument \meta{name} as the name of a macro defined by "\Macro". +% Note that if the second argument is empty +% in "\functan@nonstarred@norm", then +% no error message is produced. This allows +% to have a subscript just after the norm +% such as in "\norm{}{f}_1" +% without producing an error message +% of type ``double subscript error''. Note +% that the previous example may also be +% written "\norm*{1}{f}". +% For the non-starred version, +% if a \TeX{} macro +% "functan@named@norm@"\meta{name} +% exists (which is defined by "\newnorm"), +% then this macro is called instead +% of \verb+\functan@norm+. +% \begin{macrocode} +\newcommand{\functan@starred@norm}[3][auto]{% +\functan@norm{#1}{#2}{#3}} +\newcommand{\functan@nonstarred@norm}[3][auto]{% +\@ifundefined{functan@named@norm@#2}% +{\@ifempty{#2}{\functan@norm{#1}{}{#3}}{% +\functan@norm{#1}{\m{#2}}{#3}}}% +{\@nameuse{functan@named@norm@#2}{#1}{#3}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\newnorm} +% This macro allows to override the +% behavior of the "\norm" macro +% by defining a \TeX{} command +% "functan@named@norm@"\meta{name}. +% \begin{macrocode} +\newcommand{\newnorm}[1]{% +\@namedef{functan@named@norm@#1}##1##2} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\norm} This macro is the +%one which is finally used. The presence +%of a star "*" is checked +%and either "\functan@starred@norm" or +%"\functan@nonstarred@norm" is called in +%consequence. +% \begin{macrocode} +\newcommand{\norm}{\@ifstar{\functan@starred@norm}% +{\functan@nonstarred@norm}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Convergence} +% +% \Nota It is for this set of macros that +% the compatibility with version 2.0 of "amsmath" +% or higher is important. +% +% \begin{macro}{\newconv} This macro +% allows to override the behavior of the +% \verb+\conv+ macro, by defining a +% \TeX{} control sequence "functan@named@conv@"\meta{name}. +% \begin{macrocode} +\newcommand{\newconv}[1]{% +\@namedef{functan@named@conv@#1}##1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\conv} +% This macros stands for the usual convergence +% symbol ($\rightarrow$). The presence of a star +% \verb+*+ is checked, and either +% \verb+\functan@nonstarred@conv+ +% or \verb+\functan@starred@conv+ is called in consequence. +% If a \TeX{} command called +% \verb+functan@named@conv@+\meta{name} exists, +% where \meta{name} is the first argument of \verb+\conv+, +% then this command is called instead of the others. +% +% The command \verb+\xrightarrow+ is defined +% in the \package{amsmath} package. +% \begin{macrocode} +\newcommand{\conv}{% +\@ifstar{\functan@starred@conv}{\functan@nonstarred@conv}} +\newcommand{\functan@nonstarred@conv}[2]{% +\@ifundefined{functan@named@conv@#1}% +{\xrightarrow[#2]{\mempty{#1}}}{\@nameuse{functan@named@conv@#1}{#2}}} +\newcommand{\functan@starred@conv}[2]{\xrightarrow[#2]{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\xleftrightglobalarrow} +% \begin{macro}{\Xleftrightglobalarrow} +% \begin{macro}{\Xrightglobalarrow} +% \begin{macro}{\Xleftglobalarrow} +% These commands are defined in a way similar to the +% one in \verb+\xrightarrow+ in the package \package{amsmath}. +% The first four arguments are lengths added on each +% side of the argument. +% \begin{macrocode} +\newcommand{\xleftrightarrow}[2][]{% +\ext@arrow 9999\leftrightarrowfill@{#1}{#2}} +\newcommand{\Xrightarrow}[2][]{% +\ext@arrow 0359\Rightarrowfill@{#1}{#2}} +\newcommand{\Xleftarrow}[2][]{% +\ext@arrow 3095\Leftarrowfill@{#1}{#2}} +\newcommand{\Xleftrightarrow}[2][]{% +\ext@arrow 9999\Leftrightarrowfill@{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\leftconv} +% \begin{macro}{\leftrightconv} +% The commands \verb+\leftconv+ and \verb+\leftrightconv+ are defined +% as the command \verb+\conv+, except that it +% is not possible to override them (however, +% any kind of arrow may be used with the command +% \verb+\newconv+). +% \begin{macrocode} +\newcommand{\leftconv}{% +\@ifstar{\functan@starred@leftconv}% +{\functan@nonstarred@leftconv}} +\newcommand{\functan@nonstarred@leftconv}[2]{% +\xleftarrow[#2]{\mempty{#1}}} +\newcommand{\functan@starred@leftconv}[2]{% +\xleftarrow[#2]{#1}} +\newcommand{\leftrightconv}{% +\@ifstar{\functan@starred@leftrightconv}% +{\functan@nonstarred@leftrightconv}} +\newcommand{\functan@nonstarred@leftrightconv}[2]{% +\xleftrightarrow[#2]{\mempty{#1}}} +\newcommand{\functan@starred@leftrightconv}[2]{% +\xleftrightarrow[#2]{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\Conv} +% \begin{macro}{\Leftconv} +% \begin{macro}{\Leftrightconv} +% These macros are defined like \verb+\conv+. +% \begin{macrocode} +\newcommand{\Conv}{% +\@ifstar{\functan@starred@Conv}{\functan@nonstarred@Conv}} +\newcommand{\functan@nonstarred@Conv}[2]{% +\Xrightarrow[#2]{\mempty{#1}}} +\newcommand{\functan@starred@Conv}[2]{% +\Xrightarrow[#2]{#1}} +\newcommand{\Leftconv}{% +\@ifstar{\functan@starred@Leftconv}% +{\functan@nonstarred@Leftconv}} +\newcommand{\functan@nonstarred@Leftconv}[2]{% +\Xleftarrow[#2]{\mempty{#1}}} +\newcommand{\functan@starred@Leftconv}[2]{% +\Xleftarrow[#2]{#1}} +\newcommand{\Leftrightconv}{% +\@ifstar{\functan@starred@Leftrightconv}% +{\functan@nonstarred@Leftrightconv}} +\newcommand{\functan@nonstarred@Leftrightconv}[2]{% +\Xleftrightarrow[#2]{\mempty{#1}}} +\newcommand{\functan@starred@Leftrightconv}[2]{% +\Xleftrightarrow[#2]{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\xrightharpoon} +% \begin{macro}{\xleftharpoon} +% \begin{macro}{\xleftrightharpoon} +% This type of arrow behaves as the other ones, except +% that an $\rightharpoonup$ is used at the end +% of the arrow. +% \begin{macrocode} +\def\rightharpoonfill@{\arrowfill@\relbar\relbar\rightharpoonup} +\newcommand{\xrightharpoon}[2][]% +{\ext@arrow 0359\rightharpoonfill@{#1}{#2}} +\def\leftharpoonfill@{\arrowfill@\leftharpoonup\relbar\relbar} +\newcommand{\xleftharpoon}[2][]% +{\ext@arrow 3095\leftharpoonfill@{#1}{#2}} +\def\leftrightharpoonfill@% +{\arrowfill@\leftharpoonup\relbar\rightharpoonup} +\newcommand{\xleftrightharpoon}[2][]% +{\ext@arrow 3095\leftrightharpoonfill@{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\wkconv} +% \begin{macro}{\leftwkconv} +% \begin{macro}{\leftrightwkconv} +% These macro may be used for the weak convergence. +% Its definition is similar to the one of \verb+\conv+. +% \begin{macrocode} +\newcommand{\wkconv}{% +\@ifstar{\functan@starred@wkconv}% +{\functan@nonstarred@wkconv}} +\newcommand{\functan@nonstarred@wkconv}[2]{% +\xrightharpoon[#2]{\mempty{#1}}} +\newcommand{\functan@starred@wkconv}[2]{% +\xrightharpoon[#2]{#1}} +\newcommand{\leftwkconv}{% +\@ifstar{\functan@starred@leftwkconv}% +{\functan@nonstarred@leftwkconv}} +\newcommand{\functan@nonstarred@leftwkconv}[2]{% +\xleftharpoon[#2]{\mempty{#1}}} +\newcommand{\functan@starred@leftwkconv}[2]{% +\xleftharpoon[#2]{#1}} +\newcommand{\leftrightwkconv}{% +\@ifstar{\functan@starred@leftrightwkconv}% +{\functan@nonstarred@leftrightwkconv}} +\newcommand{\functan@nonstarred@leftrightwkconv}[2]{% +\xleftrightharpoon[#2]{\mempty{#1}}} +\newcommand{\functan@starred@leftrightwkconv}[2]{% +\xleftrightharpoon[#2]{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Scalar products} +% +% \begin{macro}{\scalprod} +% \begin{macro}{\newscalprod} +% The definition of the scalar product is +% similar to the definition of norms. +% \begin{macrocode} +\newcommand{\scalprod}{\@ifstar{\functan@starred@scalprod}% +{\functan@nonstarred@scalprod}} +\newcommand{\functan@starred@scalprod}[4][auto]{ +\deltwoarg[#1]{#3}{#4}{\langle}% +{\rangle}{,}\@ifempty{#2}{}{_{#2}}} +\newcommand{\functan@nonstarred@scalprod}[4][auto]{ +\@ifundefined{functan@scalprod@named@#2}{ +\deltwoarg[#1]{#3}{#4}{\langle}% +{\rangle}{,}\@ifempty{#2}{}{_{\m{#2}}}}{% +\@nameuse{functan@scalprod@named@#2}{#1}{#3}{#4}}} +\newcommand{\newscalprod}[1]{% +\@namedef{functan@scalprod@named@#1}##1##2##3} +%</package> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \Finale +% \setcounter{IndexColumns}{2} +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/functan/functan.ins b/Master/texmf-dist/source/latex/functan/functan.ins new file mode 100644 index 00000000000..6470f258bc3 --- /dev/null +++ b/Master/texmf-dist/source/latex/functan/functan.ins @@ -0,0 +1,34 @@ +% +% functan.ins +% Copyright 2004 Antoine Lejay +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Antoine Lejay +% +\input docstrip +\keepsilent + +% define preamble +\preamble + +functan.ins +Copyright 2004 Antoine Lejay + +This program is provided under the terms of the +LaTeX Project Public License distributed from CTAN +archives in directory macros/latex/base/lppl.txt. + +Author: Antoine Lejay (Antoine.Lejay@iecn.u-nancy.fr) + +\endpreamble + + +\generate{% + \file{functan.sty}{\from{functan.dtx}{package}}% + \usepostamble\empty + \file{functan.drv}{\from{functan.dtx}{driver}}} + +\endbatchfile |