From 4b7e662052174f801c52f6d718662dd8215d94a3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 11 Jan 2006 23:58:53 +0000 Subject: trunk/Master/texmf-dist/source/latex/vector git-svn-id: svn://tug.org/texlive/trunk@580 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/vector/README | 15 ++ Master/texmf-dist/source/latex/vector/vector.drv | 30 +++ Master/texmf-dist/source/latex/vector/vector.dtx | 280 +++++++++++++++++++++++ Master/texmf-dist/source/latex/vector/vector.ins | 26 +++ 4 files changed, 351 insertions(+) create mode 100644 Master/texmf-dist/source/latex/vector/README create mode 100644 Master/texmf-dist/source/latex/vector/vector.drv create mode 100644 Master/texmf-dist/source/latex/vector/vector.dtx create mode 100644 Master/texmf-dist/source/latex/vector/vector.ins (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/source/latex/vector/README b/Master/texmf-dist/source/latex/vector/README new file mode 100644 index 00000000000..e558bd48d4d --- /dev/null +++ b/Master/texmf-dist/source/latex/vector/README @@ -0,0 +1,15 @@ +The vector package provides a set of macros for more convenient +representation of vectors in LaTeX2e, both symbolically and as +implicit or explicit rows/columns of elements. + +To install, simply run TeX on vector.ins, then move vector.sty to +somewhere in your TEXINPUTS path. Run LaTeX on vector.drv to +produce documentation. + +Note: this is my first package for LaTeX2e. There is undoubtedly +room for improvement, and suggestions emailed to nde@dcre.leeds.ac.uk +will be gratefully received... + + +Nick Efford +September 1994 \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/vector/vector.drv b/Master/texmf-dist/source/latex/vector/vector.drv new file mode 100644 index 00000000000..0cb0964a510 --- /dev/null +++ b/Master/texmf-dist/source/latex/vector/vector.drv @@ -0,0 +1,30 @@ +%% +%% This is file `vector.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% vector.dtx (with options: `driver') +%% +%% Copyright (C) 1994 by Nick Efford +%% +%% This file is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +\documentclass{ltxdoc} +\usepackage{array, vector} +\GetFileInfo{vector.sty} +\begin{document} + \title{The \textsf{vector} package\thanks{This file is + \fileversion, last revised \filedate.}} + \author{Nick Efford\thanks{Address: School of Computer Studies, + University of Leeds, Leeds LS2 9JT, United Kingdom}\\ + \texttt{\small nde@dcre.leeds.ac.uk}} + \date{\filedate} + \maketitle + \DocInput{vector.dtx} +\end{document} +\endinput +%% +%% End of file `vector.drv'. diff --git a/Master/texmf-dist/source/latex/vector/vector.dtx b/Master/texmf-dist/source/latex/vector/vector.dtx new file mode 100644 index 00000000000..f8595afac81 --- /dev/null +++ b/Master/texmf-dist/source/latex/vector/vector.dtx @@ -0,0 +1,280 @@ +% \iffalse +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{vector}[1994/09/16 v1.0 vector macros for LaTeX2e (nde)] +%<*driver> +\documentclass{ltxdoc} +\usepackage{array, vector} +\GetFileInfo{vector.sty} +\begin{document} + \title{The \textsf{vector} package\thanks{This file is + \fileversion, last revised \filedate.}} + \author{Nick Efford\thanks{Address: School of Computer Studies, + University of Leeds, Leeds LS2 9JT, United Kingdom}\\ + \texttt{\small nde@dcre.leeds.ac.uk}} + \date{\filedate} + \maketitle + \DocInput{vector.dtx} +\end{document} +% +% \fi +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \CheckSum{107} +% +% \changes{v1.0}{1994/09/16}{First version} +% +% \begin{abstract} +% This package provides a set of new commands for representing vectors in +% various ways. The commonly-used bold and underlined notations are +% supported, as is the `hat' notation for representing unit vectors. Macros +% are also provided to represent a row or column vector as a set of +% elements. +% \end{abstract} +% +% \section{Introduction} +% \LaTeXe{} provides the |\vec| command to represent vectors in math mode; +% |$\vec{a}$|, for example, produces $\vec{a}$. In the author's experience, +% vectors are more commonly represented either in bold face roman +% type or else by means of underlining. Another convenient notation is the +% use of the `hat' to indicate a unit-length vector. This +% package defines more suitable representations for vectors and unit +% vectors, using different fonts (boldface roman and sans serif) and two +% kinds of underlining (straight and wavy). It also defines macros which +% represent row or column vectors as implicit or explicit sequences of +% elements. +% +% \section{Examples} +% Six new commands are defined for representing vectors with a single +% (possibly composite) symbol. They are shown, with sample output, in +% table~\ref{t.commands}. Unlike |\vec|, the new commands can be used in +% text mode as well as math mode. +% \DeleteShortVerb{\|} +% \MakeShortVerb{\+} +% \renewcommand{\arraystretch}{1.5} +% \newcommand{\undertilde}[1]{\ensuremath{\mathord{\vtop{\ialign{##\crcr +% $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern1.5pt\nointerlineskip} +% $\hfil\tilde{}\hfil$\crcr\noalign{\kern1.5pt}}}}}} +% \begin{table}[p] +% \begin{center} +% \begin{tabular}{|c|c|} +% \hline +% +\bvec{a}+, +\buvec{a}+ & \bvec{a}, \buvec{a} \\ +% +\svec{a}+, +\suvec{a}+ & \svec{a}, \suvec{a} \\ +% +\uvec{a}+, +\uuvec{a}+ & \uvec{a}, \uuvec{a} $/$ +% \undertilde{a}, \undertilde{\hat{a}} \\ +% \hline +% \end{tabular} +% \end{center} +% \caption{new commands for symbolic vectors.} +% \label{t.commands} +% \end{table} +% % \DeleteShortVerb{\+} +% \MakeShortVerb{\|} +% +% \DescribeMacro{\uvec}\DescribeMacro{\uuvec} +% By default, |\uvec| and |\uuvec| underline a symbol using a +% straight line. If a wavy line is prefered, then the |wavy| package option +% should be specified. +% +% \DescribeMacro{\irvec}\DescribeMacro{\icvec} +% Another set of commands are defined which can represent a vector as a row +% or column of elements. |\irvec| and |\icvec| generate `implicit' row and +% column vectors, respectively. Here, only the first and last elements +% actually appear; |\ldots| is used to imply the existance of the rest. +% Both macros take one mandatory argument, a character which names the +% vector. By default, the first and last elements are constructed from this +% character and the subscripts `1' and $n$, respectively. An optional +% argument allows final subscripts other than $n$ to be specified. The +% subscript for the first element cannot be altered in this way, but then +% it is not likely that you will want to change this often. +% \DescribeMacro{\firstelement} +% If you do need to change it, the command |\firstelement| can be used. +% Table~\ref{t.irvec} shows some sample output for |\irvec|. +% \DeleteShortVerb{\|} +% \MakeShortVerb{\+} +% \begin{table}[p] +% \begin{center} +% \begin{tabular}{|b{30mm}|c|} +% \hline +% +\irvec{a}+ & \irvec{a} \\ +% +\irvec[4]{a}+ & \irvec[4]{a} \\ +% +\firstelement{0}+ +\irvec[9]{a}+ & \firstelement{0}\irvec[9]{a} \\ +% \hline +% \end{tabular} +% \end{center} +% \caption{row vectors with implicit elements.} +% \label{t.irvec} +% \end{table} +% \DeleteShortVerb{\+} +% \MakeShortVerb{\|} +% +% The syntax for |\icvec| is the same as that for |\irvec|. One important +% difference is that |\icvec| can only be used in math mode, whereas +% |\irvec| can be used in both math and text modes. For example, +% |\buvec{q} = \left(\icvec{q}\right)| produces +% $$\buvec{q} = \left(\icvec{q}\right)$$ +% +% \DescribeMacro{\rvec}\DescribeMacro{\cvec} +% The final pair of macros, |\rvec| and |\cvec|, provide \emph{explicit} +% representations of a vector as a row or column of elements, i.e., all +% elements of the vector are shown\footnote{Clearly, these macros are +% suitable only for vectors with comparatively small numbers of elements!}. +% Three mandatory arguments are used to specify the name of the vector, +% an integer subscript for the first element and an integer subscript for +% the final element. For instance, |\bvec{x} = \{\rvec{x}{1}{6}\}| produces +% $$\uvec{x} = \{\rvec{x}{1}{6}\} \qquad$$ +% and |\bvec{y} = \left[\cvec{y}{0}{3}\right]| gives +% $$\bvec{y} = \left[\cvec{y}{0}{3}\right]$$ +% As with the implicit macros, |\rvec| may be used in both math and text +% modes, whereas |\cvec| may only be used in math mode. +% +% \StopEventually{} +% +% \section{The Macros} +% \setlength{\parindent}{0pt} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% We require that the \textsf{ifthen} and \textsf{calc} packages are loaded: +% \begin{macrocode} +\RequirePackage{ifthen} +\RequirePackage{calc} +% \end{macrocode} +% +% A boolean variable is defined and set to \emph{true} if the |wavy| +% package option has been specified: +% \begin{macrocode} +\newboolean{@wavy} +\DeclareOption{wavy}{\setboolean{@wavy}{true}} +\ProcessOptions +% \end{macrocode} +% +% \begin{macro}{\bvec} +% |\bvec| represents a vector using a bold series roman character. +% \begin{macrocode} +\newcommand{\bvec}[1]{\ensuremath{\mathbf{#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\buvec} +% |\buvec| represents a unit vector as a bold roman character with a hat. +% \begin{macrocode} +\newcommand{\buvec}[1]{\ensuremath{\mathbf{\hat{#1}}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\svec} +% |\svec| represents a vector as a sans serif character. +% family. +% \begin{macrocode} +\newcommand{\svec}[1]{\ensuremath{\mathsf{#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\suvec} +% |\suvec| represents a unit vector as a sans serif character with a hat. +% \begin{macrocode} +\newcommand{\suvec}[1]{\ensuremath{\mathsf{\hat{#1}}}} +% \end{macrocode} +% \end{macro} +% +% How we define underlined vectors depends on the value of boolean variable +% |@wavy|: +% \begin{macrocode} +\ifthenelse{\boolean{@wavy}}{% + \PackageInfo{vector}{wavy underlining selected} +% \end{macrocode} +% If |@wavy| is set then we define a macro |\undertilde|\footnote{Note +% that I didn't write this macro. Unfortunately, I cannot give proper +% credit as I do not recall how I came by it!}, which places a +% tilde symbol underneath its argument: +% \begin{macrocode} + \newcommand{\undertilde}[1]{\mathord{\vtop{\ialign{##\crcr + $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern1.5pt\nointerlineskip} + $\hfil\tilde{}\hfil$\crcr\noalign{\kern1.5pt}}}}} +% \end{macrocode} +% \begin{macro}{\uvec} +% We then define |\uvec| in terms of |\undertilde|: +% \begin{macrocode} + \newcommand{\uvec}[1]{\ensuremath{\undertilde{#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\uuvec} +% And similarly define |\uuvec|: +% \begin{macrocode} + \newcommand{\uuvec}[1]{\ensuremath{\hat{\undertilde{#1}}}}}{% +% \end{macrocode} +% \end{macro} +% If |@wavy| is not set, then we define |\uvec| and |\uuvec| in terms of +% |\underline|: +% \begin{macrocode} + \newcommand{\uvec}[1]{\ensuremath{\underline{#1}}} + \newcommand{\uuvec}[1]{\ensuremath{\hat{\underline{#1}}}}} +% \end{macrocode} +% +% \begin{macro}{\firstelement} +% Now we define a variable to store the subscript used for the first element +% of a row or column vector, along with a command which can be used to +% alter that variable: +% \begin{macrocode} +\def\first@element{1} +\newcommand{\firstelement}[1]{\def\first@element{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\irvec} +% The |\irvec| command is very simple: +% \begin{macrocode} +\newcommand{\irvec}[2][n]{\ensuremath{{#2}_{\first@element},\ldots,{#2}_{#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\icvec} +% The |\icvec| command uses an |array| environment, and so can only be used +% in a math environment: +% \begin{macrocode} +\newcommand{\icvec}[2][n]{% + \begin{array}{c} + {#2}_{\first@element}\\ \vdots\\ {#2}_{#1} + \end{array}} +% \end{macrocode} +% \end{macro} +% +% For |\rvec| and |\cvec|, we must define a loop counter which stores the +% current subscript of a vector element: +% \begin{macrocode} +\newcounter{vec@elem} +% \end{macrocode} +% \begin{macro}{\rvec} +% Now we define |\rvec|. We must check that the last subscript for the +% vector elements (|#3|) is greater than the first subscript (|#2|). If this +% is so, then we use |\whiledo| to loop over specified range of values, +% generating a vector element with subscript |vec@elem| followed by a comma +% on each iteration. Otherwise, we simply generate a single vector element. +% \begin{macrocode} +\newcommand{\rvec}[3]{% + \ensuremath{% + \ifthenelse{#3 > #2}{% + \setcounter{vec@elem}{#2} + \whiledo{\value{vec@elem} < #3}% + {{#1}_{\thevec@elem}, \stepcounter{vec@elem}}% + {#1}_{#3}}{{#1}_{#2}}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\cvec} +% We define |\cvec| in a similar way to |\rvec|, only here we iterate within +% an |array| environment and generate a vector element and a linebreak on +% each iteration. +% \begin{macrocode} +\newcommand{\cvec}[3]{% + \ifthenelse{#3 > #2}{% + \setcounter{vec@elem}{#2} + \begin{array}{c} + \whiledo{\value{vec@elem} < #3}% + {{#1}_{\thevec@elem} \\ \stepcounter{vec@elem}}% + {#1}_{#3} + \end{array}}{{#1}_{#2}}} +% \end{macrocode} +% \end{macro} +% +% \Finale +% \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/vector/vector.ins b/Master/texmf-dist/source/latex/vector/vector.ins new file mode 100644 index 00000000000..eaa23044e28 --- /dev/null +++ b/Master/texmf-dist/source/latex/vector/vector.ins @@ -0,0 +1,26 @@ +\def\batchfile{vector.ins} +\input docstrip.tex +\preamble + +Copyright (C) 1994 by Nick Efford + +This file is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +\endpreamble + +\generateFile{vector.drv}{t}{\from{vector.dtx}{driver}} +\generateFile{vector.sty}{t}{\from{vector.dtx}{package}} + +\Msg{******************************************************************} +\Msg{*} +\Msg{* Now move the following file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space\space vector.sty} +\Msg{*} +\Msg{* To produce documentation, run LaTeX on the file} +\Msg{*} +\Msg{* \space\space\space vector.drv} +\Msg{*} +\Msg{******************************************************************} -- cgit v1.2.3