diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:40 +0000 |
commit | bf2e6836598905624d04944d61680bf7a8e45f49 (patch) | |
tree | 65063504620fc056c92264907dba3b8e47f3c819 /Master/texmf-dist/source/latex/galois | |
parent | 0c6943241405229bdf863374a46abaac9bfd1951 (diff) |
trunk/Master/texmf-dist/source/latex/galois
git-svn-id: svn://tug.org/texlive/trunk@304 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/galois')
-rw-r--r-- | Master/texmf-dist/source/latex/galois/README | 6 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/galois/galois.dtx | 516 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/galois/galois.ins | 40 |
3 files changed, 562 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/galois/README b/Master/texmf-dist/source/latex/galois/README new file mode 100644 index 00000000000..ad58f1ca701 --- /dev/null +++ b/Master/texmf-dist/source/latex/galois/README @@ -0,0 +1,6 @@ +galois.sty V1.04 1999/05/01 +------------------------------------------------------------------------- +A LaTeX package for writing Galois connections (two dimensional notation). +This file may be distributed under the terms of the LPPL. +------------------------------------------------------------------------- +Patrick.Cousot@ens.fr
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/galois/galois.dtx b/Master/texmf-dist/source/latex/galois/galois.dtx new file mode 100644 index 00000000000..f80c8037acd --- /dev/null +++ b/Master/texmf-dist/source/latex/galois/galois.dtx @@ -0,0 +1,516 @@ +\def\fileversion{1.04} +\def\filedate{1999/05/01} +% \iffalse meta-comment +% +% This file can be redistributed and/or modified under the terms of +% the LaTeX Project Public License from CTAN archives, as described in +% macros/latex/base/ lppl.txt in the base LaTeX distribution. Either +% version 1.0 or, at your option, any later version. +% +% \fi +% +% \CheckSum{388} +%% \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 +%% +%% Source File: galois.dtx +%% Copyright 1994 1998 1999 Patrick.Cousot@ens.fr +%% +% +%<*dtx> + \ProvidesFile{galois.dtx} +%</dtx> +%<package>\NeedsTeXFormat{LaTeX2e} +%<package>\ProvidesPackage{galois} +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +% \end{macrocode} +% +% We don't want everything to appear in the index. +% \begin{macrocode} +\DoNotIndex{\,,\:,\ ,\hfill,\hskip,\hspace} +\DoNotIndex{\@ifundefined,\@tempdima,\@tempdimb,\@tempdimc} +\DoNotIndex{\DoNotIndex,\NeedsTeXFormat,\ifx,\else,\fi,\ifdim,\fi,\endtrivlist} +\DoNotIndex{\addtolength,\divide,\circ,\cleaders,\ensuremath} +\DoNotIndex{\begin,\end,\bgroup,\egroup,\begingroup,\endgroup} +\DoNotIndex{\catcode,\noexpand,\protect,\string,\space} +\DoNotIndex{\filedate,\filename,\fileversion} +\DoNotIndex{\hbox,\raisebox,\rlap,\llap,\rule,\smash} +\DoNotIndex{\let,\def,\newcommand,\newenvironment} +\DoNotIndex{\m@th,\mathchoice,\mathord,\mathrel,\max,\mkern,\newlength} +\DoNotIndex{\setlength,\settodepth,\settoheight,\settowidth} +\DoNotIndex{\tiny,\scriptstyle,\scriptscriptstyle} +\DoNotIndex{\leftarrow,\rightarrow,\longleftarrow,\longrightarrow} +\makeatother +% +\CodelineNumbered +\CodelineIndex +\EnableCrossrefs +\RecordChanges +% +\usepackage{galois} +\begin{document} +\DocInput{galois.dtx} +\PrintIndex +\PrintChanges +\end{document} +%</driver> +% \end{macrocode} +% \fi +% \ProvidesFile{galois.dtx} + [\filedate\space v\fileversion, Galois connections, Patrick.Cousot@ens.fr] +% +% +% \changes{v0.00}{1996/11/25} +% {Initial version for LaTeX 2.09} +% \changes{v1.00}{1997/05/19} +% {Adapted to LaTeX2e} +% \changes{v1.01}{1998/10/19} +% {Check "\textbackslash comp" is not already defined (as in "mathtime.sty")} +% \changes{v1.02}{1998/11/13} +% {Rewritting of extendable arrows using the TeX book left/right arrowfill +% p. 357. Added and renamed style parameters ("\textbackslash GaloisSep" now +% "\textbackslash GaloisArrowTagSep")} +% \changes{v1.03}{1999/04/02} +% {Renamed internal macros to avoid interferences with other packages +% "\textbackslash rightarrowfill" $\rightarrow$ "\textbackslash @GALOISrightarrowfill" +% "\textbackslash leftarrowfill" $\rightarrow$ "\textbackslash @GALOISleftarrowfill"} +% \changes{v1.04}{1999/05/01} +% {\LaTeX{} package file documentation} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \title{The \textsf{galois} package\thanks{This file +% has version number \fileversion, last +% revised \filedate.}} +% \author{Patrick Cousot\\ +% \texttt{Patrick.Cousot@ens.fr}} +% +% \date{\filedate} +% +% \maketitle +% +% ^^A x +% ^^A \mor{x} = |-------> total morphism +% ^^A +% \newcommand{\mor}[1]{\mathrel{\raisebox{-0.1ex}^^A fix heigt of 2nd parameter of stackrel +% {$\stackrel{\hbox{$\scriptscriptstyle #1$}}{\raisebox{0pt}[0.5ex][0pt]^^A fix height of 1st parameter of stackrel +% {$\longmapsto$}}$}}} +% +% \section{Introduction} +% +% This |galois| package introduces two-dimensional notations for +% Galois connections. +% +% \section{Detailled explanations on Galois connections} +% +% If $(L$, ${\leq})$ and $(M$, ${\sqsubseteq})$ are posets, $\alpha\in +% L\mapsto M$, $\gamma\in M\mapsto L$ and $\forall x\in L, y\in M$: +% $\alpha(x)\sqsubseteq y$ $\iff$ $x\leq\gamma(y)$ then the pair +% $\langle \alpha$, $\gamma\rangle$ is a {\em Galois connection}, +% written |\galois{\alpha}{\gamma}|: +% \DescribeMacro{\galois} +% \begin{displaymath} +% (L,\,{\leq})\galois{\alpha}{\gamma}(M,\,{\sqsubseteq}) +% \end{displaymath} +% In a Galois connection, $\alpha$ is onto if and only if $\gamma$ is +% one-to-one if and only if $\alpha \comp \gamma$ = 1 (where ${\comp}$ +% is the functional composition and 1 the identity), written +% |\galoiS{\alpha}{\gamma}|: +% \DescribeMacro{\galoiS} +% \begin{displaymath} +% (L,\,{\leq})\galoiS{\alpha}{\gamma}(M,\,{\sqsubseteq}) +% \end{displaymath} +% $\alpha$ is one-to-one if and only if $\gamma$ is onto +% if and only if $\gamma\comp\alpha$ = 1, written +% |\Galois{\alpha}{\gamma}|: +% \DescribeMacro{\Galois} +% \begin{displaymath} +% (L,\,{\leq})\Galois{\alpha}{\gamma}(M,\,{\sqsubseteq}) +% \end{displaymath} +% For a bijection, we write +% |\GaloiS{\alpha}{\gamma}|: +% \DescribeMacro{\GaloiS} +% \begin{displaymath} +% (L,\,{\leq})\GaloiS{\alpha}{\gamma}(M,\,{\sqsubseteq}) +% \end{displaymath} +% The surjection on the quotient of $M$ by the equivalence relation +% $x\equiv y$ defined by $\gamma(x)=\gamma(y)$ is denoted +% |\galoiSr{\alpha}{\gamma}|: +% \DescribeMacro{\galoiSr} +% \begin{displaymath} +% (L,\,{\leq})\galoiSr{\alpha}{\gamma}(M,\,{\sqsubseteq}) +% \end{displaymath} +% The composition of Galois connections: +% \begin{displaymath} +% (L,\,{\leq})\galois{\alpha_1}{\gamma_1}(M,\,{\sqsubseteq}) +% \quad{\rm and}\quad +% (M,\,{\sqsubseteq})\galois{\alpha_2}{\gamma_2}(N,\,{\preceq}) +% \end{displaymath} +% is a Galois connection (the composition $\comp$ o functions is +% |\comp|): +% \DescribeMacro{\comp} +% \begin{displaymath} +% (L,\,{\leq})\galois{\alpha_2\comp\alpha_1}{\gamma_1\comp\gamma_2}(N,\,{\preceq}) +% \end{displaymath} +% Galois connections +% $(L,\,{\leq})\galois{\alpha}{\gamma}(M,\,\sqsubseteq)$ can be lifted +% from sets of properties to sets of monotone functions: +% \begin{displaymath} +% (L\mor{m}L,\,{\leq})\galois{\lambda{\varphi}\cdot{\alpha\comp\varphi\comp\gamma}}{\lambda{\phi}\cdot{\gamma\comp\phi\comp\alpha}}(M\mor{m}M,\,{\sqsubseteq}) +% \end{displaymath} +% where the ordering on functions is pointwise that is +% $\varphi\preceq\phi$ if and only if $\forall +% x:\varphi(x)\preceq\phi(x)$. Observe that the length of the arrows +% stretches automatically to the appropriate width. +% +% \section{Style parameters} +% +% You can use Galois connections in any size (footnotes, transparencies, +% etc.) : +% {\tiny tiny $L\galois{\alpha}{\gamma}M$}, +% {\scriptsize scriptsize $L\galois{\alpha}{\gamma}M$}, +% {\footnotesize footnotesize $L\galois{\alpha}{\gamma}M$}, +% {\small small $L\galois{\alpha}{\gamma}M$}, +% {\normalsize normalsize $L\galois{\alpha}{\gamma}M$}, +% {\large large $L\galois{\alpha}{\gamma}M$}, +% {\Large Large $L\galois{\alpha}{\gamma}M$}, +% {\LARGE LARGE $L\galois{\alpha}{\gamma}M$}, +% {\huge huge $L\galois{\alpha}{\gamma}M$}, +% {\Huge Huge $L\galois{\alpha}{\gamma}M$}. +% Observe that in $\GaloiS{\rule{3cm}{1cm}}{\rule{0.5cm}{1cm}}$ the +% width of arrows and height of enclosing box are automatically adjusted +% according to the size of $\alpha$ and $\gamma$. You can adjust the +% following parameters: +% \DescribeMacro{\GaloisStyle} +% \begin{description} +% \item[]|\GaloisStyle| : style of upper and lower tags +% (|\scripstyle | by default); +% \end{description} +% \DescribeMacro{\GaloisArrowThickness} +% \begin{description} +% \item[]|\GaloisArrowThickness| : thickness of the arrow stems +% \footnote{stem is ``tige'' in french.}; +% (|0.1ex| by default); +% \end{description} +% \DescribeMacro{\GaloisArrowsSep} +% \begin{description} +% \item[]|\GaloisArrowsSep| : distance between the arrows +% (|0.2ex| by default); +% \end{description} +% \DescribeMacro{\GaloisArrowTagSep} +% \begin{description} +% \item[]|\GaloisArrowTagSep| : distance between arrows and tags +% (|0.5ex| by default). +% \end{description} +% For example with: +% \begin{quote} +% |\renewcommand{\GaloisArrowsSep}{1cm}|\\ +% |\renewcommand{\GaloisArrowTagSep}{0pt}| +% \end{quote} +% we get +% \renewcommand{\GaloisArrowsSep}{1cm}\renewcommand{\GaloisArrowTagSep}{0pt} +% $\GaloiS{\rule{3cm}{1cm}}{\rule{0.5cm}{1cm}}$ while with: +% \begin{quote} +% |\renewcommand{\GaloisArrowsSep}{0pt}|\\ +% |\renewcommand{\GaloisArrowTagSep}{5mm}| +% \end{quote} +% we get \renewcommand{\GaloisArrowsSep}{0pt}\renewcommand{\GaloisArrowTagSep}{5mm} +% $\GaloiS{\rule{3cm}{1cm}}{\rule{0.5cm}{1cm}}$ and with +% \begin{quote} +% |\renewcommand{\GaloisArrowsSep}{0pt}|\\ +% |\renewcommand{\GaloisArrowTagSep}{0pt}| +% \end{quote} +% we get +% \renewcommand{\GaloisArrowsSep}{0pt}\renewcommand{\GaloisArrowTagSep}{0pt} +% $\GaloiS{\rule{3cm}{1cm}}{\rule{0.5cm}{1cm}}$. +% +% \StopEventually{} +% +% \section{Implementation} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% ^^A Reset style parameters to default +% \renewcommand{\GaloisStyle}{\scriptstyle}% +% \renewcommand{\GaloisArrowThickness}{0.1ex}% +% \renewcommand{\GaloisArrowsSep}{0.2ex}% +% \renewcommand{\GaloisArrowTagSep}{0.5ex}% +% \begin{macro}{\comp} +% Define functional composition $f\comp g(x)$ is $f(g(x))$ (if not +% already defined e.g.\ as in |mathtime.sty|): +% \begin{macrocode} +\@ifundefined{comp}{% +\newcommand{\comp}{\mathchoice{\mathrel{\raisebox{0.2ex}{$\scriptstyle\circ$}}}% +{\mathrel{\raisebox{0.2ex}{$\scriptstyle\circ$}}}% +{\mathrel{\raisebox{0.1ex}{$\scriptscriptstyle\circ$}}}% +{\mathrel{\raisebox{0.1ex}{$\scriptscriptstyle\circ$}}}}% +}{}% +% \end{macrocode} +% \end{macro} +% +% Style commands: +% \begin{macro}{\GaloisStyle} +% Style of $a$ and $b$ in $\galois{a}{b}$, $\Galois{a}{b}$, $\galoiS{a}{b}$ or +% $\GaloiS{a}{b}$: +% \begin{macrocode} +\newcommand{\GaloisStyle}{\scriptstyle}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GaloisArrowThickness} +% Thickness of the arrow stems (0.1ex by default): +% \begin{macrocode} +\newcommand{\GaloisArrowThickness}{0.1ex}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GaloisArrowsSep} +% Distance between the lower and upper arrows (0.2ex by default): +% \begin{macrocode} +\newcommand{\GaloisArrowsSep}{0.2ex}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GaloisArrowTagSep} +% Distance between the lower arrow and the top of $a$ and the +% top-arrow and the bottom of $b$ (0.5ex by default) +% \begin{macrocode} +\newcommand{\GaloisArrowTagSep}{0.5ex}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@GALOISalphadepth} +% \begin{macro}{\@GALOISalphaheight} +% \begin{macro}{\@GALOISgammadepth} +% \begin{macro}{\@GALOISwidth} +% \begin{macro}{\@GALOISheight} +% \begin{macro}{\@GALOISdepth} +% \begin{macro}{\@GALOIStotalheight} +% \begin{macro}{\@GALOISGap} +% \begin{macro}{\@GALOISalphaarrowwidth} +% \begin{macro}{\@GALOISalphaarrowhalfheight} +% \begin{macro}{\@GALOISgammaarrowwidth} +% \begin{macro}{\@GALOISgammaarrowhalfheight} +% Auxiliary lengths: +% \begin{macrocode}{} +\newlength{\@GALOISalphadepth}% +\newlength{\@GALOISalphaheight}% +\newlength{\@GALOISgammadepth}% +\newlength{\@GALOISwidth}% +\newlength{\@GALOISheight}% +\newlength{\@GALOISdepth}% +\newlength{\@GALOIStotalheight}% +\newlength{\@GALOISGap}% +\newlength{\@GALOISalphaarrowwidth}% +\newlength{\@GALOISalphaarrowhalfheight}% +\newlength{\@GALOISgammaarrowwidth}% +\newlength{\@GALOISgammaarrowhalfheight}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Galois@put} +% |\Galois@put(x,y-d){text}| puts text at coordinates $(x,y-d)$, in +% a box of size 0\texttt{pt} $\times$ 0\texttt{pt}: +% \begin{macrocode} +\def\Galois@put(#1,#2-#3)#4{\rlap{\smash{\hskip#1\setlength{\@tempdimc}{#2}% +\addtolength{\@tempdimc}{-#3}\raisebox{\@tempdimc}{#4}}}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@GALOISrightarrowfill} +% |\@GALOISrightarrowfill{\rightarrow}|, see \TeX book p.\ 357. +% \begin{macrocode} +\def\@GALOISrightarrowfill#1{$\m@th \smash- \mkern-7mu% + \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill% + \mkern-7mu \mathord{#1}$}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@GALOISleftarrowfill} +% |\@GALOISleftarrowfill{\leftarrow}|, see \TeX book p.\ 357. +% \begin{macrocode} +\def\@GALOISleftarrowfill#1{$\m@th \mathord{#1} \mkern-7mu% + \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill% + \mkern-7mu \smash-$}% +% \end{macrocode} +% \end{macro} +% +% Stacking $a$, the arrows and $g$ in $\galois{a}{g}$: +% \begin{macro}{\@GALOIS} +% |\@GALOIS{a}{g}{-->}{<--}| constructs $\galois{a}{g}$: +% \begin{macrocode} +\def\@GALOIS#1#2#3#4{% +\ensuremath{\mathrel{% +\def\@GALOISalphatag{\ $\GaloisStyle#1$\ }% +\def\@GALOISgammatag{\ $\GaloisStyle#2$\ }% +% compute width of alpha/lower and gamma/upper arrows +\settowidth{\@GALOISalphaarrowwidth}{$\mathord{#3}$}% +\settowidth{\@GALOISgammaarrowwidth}{$\mathord{#4}$}% +% compute width of the picture \@GALOISwidth +\ifdim\@GALOISalphaarrowwidth>\@GALOISgammaarrowwidth% +\settowidth{\@tempdima}{\hbox{\hspace*{\@GALOISalphaarrowwidth}\@GALOISalphatag}}% +\settowidth{\@tempdimb}{\hbox{\hspace*{\@GALOISalphaarrowwidth}\@GALOISgammatag}}% +\else% +\settowidth{\@tempdima}{\hbox{\hspace*{\@GALOISgammaarrowwidth}\@GALOISalphatag}}% +\settowidth{\@tempdimb}{\hbox{\hspace*{\@GALOISgammaarrowwidth}\@GALOISgammatag}}% +\fi% +\ifdim\@tempdima>\@tempdimb% +\setlength{\@GALOISwidth}{\@tempdima}% +\else% +\setlength{\@GALOISwidth}{\@tempdimb}% +\fi% +\def\@GALOISrightarrow{\hbox to\@GALOISwidth{\@GALOISrightarrowfill{#3}}}% +\def\@GALOISleftarrow{\hbox to\@GALOISwidth{\@GALOISleftarrowfill{#4}}}% +% compute half height of alpha/lower arrow +\settodepth{\@GALOISalphaarrowhalfheight}{$\mathord{#3}$}% +\settoheight{\@tempdima}{$\mathord{#3}$}% +\addtolength{\@GALOISalphaarrowhalfheight}{\@tempdima}% +\divide \@GALOISalphaarrowhalfheight by 2% +% compute half height of gamma/upper arrow +\settodepth{\@GALOISgammaarrowhalfheight}{$\mathord{#4}$}% +\settoheight{\@tempdima}{$\mathord{#4}$}% +\addtolength{\@GALOISgammaarrowhalfheight}{\@tempdima}% +\divide \@GALOISgammaarrowhalfheight by 2% +% compute the distance between the two arrows \@GALOISGap = +% \max(\@GALOISalphaarrowhalfheight,\@GALOISgammaarrowhalfheight)+\GaloisArrowsSep +\ifdim\@GALOISalphaarrowhalfheight>\@GALOISgammaarrowhalfheight% +\setlength{\@GALOISGap}{\@GALOISalphaarrowhalfheight}% +\else% +\addtolength{\@GALOISGap}{\@GALOISgammaarrowhalfheight}% +\fi% +\addtolength{\@GALOISGap}{\GaloisArrowsSep}% +% lift from the stems thickness +\addtolength{\@GALOISGap}{\GaloisArrowThickness }% +\addtolength{\@GALOISGap}{\GaloisArrowThickness }% +% compute height \@GALOISheight depth \@GALOISdepth +% and total height \@GALOIStotalheight of the picture +\settodepth{\@GALOISalphadepth}{\@GALOISalphatag}% +\settoheight{\@GALOISalphaheight}{\@GALOISalphatag}% +\settodepth{\@GALOISgammadepth}{\@GALOISgammatag}% +% compute depth \@GALOISdepth of the picture +% \@GALOISdepth = \@GALOISalphadepth+\@GALOISalphaheight % vertical size of alpha tag +% + \GaloisArrowTagSep % between top of tag and arrow +\setlength{\@GALOISdepth}{\@GALOISalphadepth}% +\addtolength{\@GALOISdepth}{\@GALOISalphaheight}% +\addtolength{\@GALOISdepth}{\GaloisArrowTagSep}% +\addtolength{\@GALOISdepth}{-\GaloisArrowThickness }% lift from the stem thickness +% compute height \@GALOISheight of the picture +\setlength{\@GALOISheight}{\@GALOISGap}% +\addtolength{\@GALOISheight}{\GaloisArrowTagSep}% +\addtolength{\@GALOISheight}{\@GALOISgammadepth}% +\settoheight{\@tempdima}{\@GALOISgammatag}% +\addtolength{\@GALOISheight}{\@tempdima}% +% compute total height \@GALOIStotalheight of the picture +% \@GALOIStotalheight = \@GALOISdepth + \@GALOISheight +\setlength{\@GALOIStotalheight}{\@GALOISdepth}% +\addtolength{\@GALOIStotalheight}{\@GALOISheight}% +% put alpha arrow +\Galois@put(0pt,0pt-\@GALOISalphaarrowhalfheight){\@GALOISrightarrow}% +% put gamma arrow +\Galois@put(0pt,\@GALOISGap-\@GALOISalphaarrowhalfheight){\@GALOISleftarrow}% +% put alpha +\setlength{\@tempdima}{\@GALOISwidth}% +\settowidth{\@tempdimb}{\@GALOISalphatag}% +\addtolength{\@tempdima}{-\@tempdimb}% +\divide\@tempdima by 2% +\Galois@put(\@tempdima,\@GALOISalphadepth-\@GALOISdepth){\@GALOISalphatag}% +% put gamma +\setlength{\@tempdima}{\@GALOISwidth}% +\settowidth{\@tempdimb}{\@GALOISgammatag}% +\addtolength{\@tempdima}{-\@tempdimb}% +\divide\@tempdima by 2% +\setlength{\@tempdimb}{\@GALOISalphadepth}% +\addtolength{\@tempdimb}{\@GALOISalphaheight}% +\addtolength{\@tempdimb}{\GaloisArrowTagSep}% +\addtolength{\@tempdimb}{\GaloisArrowTagSep}% +\addtolength{\@tempdimb}{\@GALOISGap}% +\addtolength{\@tempdimb}{\@GALOISgammadepth}% +\Galois@put(\@tempdima,\@tempdimb-\@GALOISdepth){\@GALOISgammatag}% +\rule[-\@GALOISdepth]{0pt}{\@GALOIStotalheight}% set depth and height +\hspace*{\@GALOISwidth}% set width +}}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\galois} +% |\galois{a}{g}| is $\galois{a}{g}$. +% \begin{macrocode} +\newcommand{\galois}[2]{\@GALOIS{#1}{#2}{\rightarrow}{\leftarrow}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\galoiS} +% |\galoiS{a}{g}| is $\galoiS{a}{g}$ ($a$ onto, $g$ one-to-one, $a +% \comp g = 1$): +% \begin{macrocode} +\def\@GALOISmytwoheadrightarrow{\rlap{$\:\,{\rightarrow}$}{\longrightarrow}}% +\def\@GALOIStwoheadrightarrow{\protect\@GALOISmytwoheadrightarrow}% +\newcommand{\galoiS}[2]{\@GALOIS{#1}{#2}{\@GALOIStwoheadrightarrow}{\leftarrow}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\galoiSr} +% |\galoiSr{a}{g}| is $\galoiSr{a}{g}$. +% \begin{macrocode} +\def\@GALOISmytwoheadrightarrowreduc{\rlap{\smash{\hskip1ex\raisebox{0.815ex}% +{\tiny$\equiv$}}}\rlap{$\:\,{\rightarrow}$}{\longrightarrow}}% +\def\@GALOIStwoheadrightarrowreduc{\protect\@GALOISmytwoheadrightarrowreduc}% +\newcommand{\galoiSr}[2]{\@GALOIS{#1}{#2}{\@GALOIStwoheadrightarrowreduc}{\leftarrow}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Galois} +% |\Galois{a}{g}| is $\Galois{a}{g}$ ($a$ one-to-one, $g$ onto, $g +% \comp a = 1$): +% \begin{macrocode} +\def\@GALOISmytwoheadleftarrow{\rlap{$\:{\leftarrow}$}{\longleftarrow}}% +\def\@GALOIStwoheadleftarrow{\protect\@GALOISmytwoheadleftarrow}% +\newcommand{\Galois}[2]{\@GALOIS{#1}{#2}{\rightarrow}{\@GALOIStwoheadleftarrow}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GaloiS} +% |\GaloiS{a}{g}| is $\GaloiS{a}{g}$ ($a$ bijective with inverse $g$). +% \begin{macrocode} +\newcommand{\GaloiS}[2]{\@GALOIS{#1}{#2}% +{\@GALOIStwoheadrightarrow}{\@GALOISmytwoheadleftarrow}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \Finale +% +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/galois/galois.ins b/Master/texmf-dist/source/latex/galois/galois.ins new file mode 100644 index 00000000000..25b6d13d039 --- /dev/null +++ b/Master/texmf-dist/source/latex/galois/galois.ins @@ -0,0 +1,40 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% This file can be redistributed and/or modified under the terms of +%% the LaTeX Project Public License from CTAN archives, as described in +%% macros/latex/base/ lppl.txt in the base LaTeX distribution. Either +%% version 1.0 or, at your option, any later version. +%% +%% --------------- start of docstrip commands ------------------ +%% +\input docstrip +\keepsilent +\preamble + +This generated file may be distributed under the terms of the LaTeX +Project Public License, as described in lppl.txt in the base LaTeX +distribution. Either version 1.0 or, at your option, any later +version. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{galois.sty}{\from{galois.dtx}{package}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation move the following} +\Msg{* style file into a directory searched by LaTeX:} +\Msg{*} +\Msg{* \space\space\space galois.sty} +\Msg{*} +\Msg{* To produce the documentation run the file} +\Msg{* `galois.dtx' through LaTeX.} +\Msg{*} +\Msg{***********************************************************} + +\endbatchfile |