diff options
author | Karl Berry <karl@freefriends.org> | 2010-11-07 23:47:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-11-07 23:47:29 +0000 |
commit | e7aa3e81b2c6914b42040989d8c0c58f8fab496d (patch) | |
tree | 24ef60bec0b8cf1917948a7885923a4389ed699c /Master/texmf-dist/tex/latex | |
parent | 9e8226cf8fa5064b6ad05024b81992bab84a2b20 (diff) |
new latex package ytableau (8nov10)
git-svn-id: svn://tug.org/texlive/trunk@20357 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/ytableau/ytableau.sty | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ytableau/ytableau.sty b/Master/texmf-dist/tex/latex/ytableau/ytableau.sty new file mode 100644 index 00000000000..a740eb563e0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/ytableau/ytableau.sty @@ -0,0 +1,302 @@ +%% +%% This is file `ytableau.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ytableau.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2010 by Ryan Reich <ryan.reich@gmail.com> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.2 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of LaTeX version +%% 1999/12/01 or later. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ytableau} + [2010/11/07 v1.0 Many-featured Young tableaux and Young diagrams] + +\newbox\ytableau@tableaux +\newbox\ytableau@thistableau +\newbox\ytableau@thisbox +\newbox\ytableau@tmpboxa\newbox\ytableau@tmpboxb +\setbox\ytableau@tmpboxa=\hbox{$b$} +\setbox\ytableau@tmpboxb=\hbox{$g$} +\newtoks\ytableau@toks +\newtoks\ytableau@opttoksa +\newtoks\ytableau@opttoksb +\newdimen\ytableau@boxdim@normal + \ytableau@boxdim@normal=1.5em +\newdimen\ytableau@boxdim@save + \ytableau@boxdim@save=\ytableau@boxdim@normal +\newdimen\ytableau@boxdim + \ytableau@boxdim=\ytableau@boxdim@normal +\newdimen\ytableau@tableauwd +\newdimen\ytableau@boxframe \ytableau@boxframe=0.4pt +\newcount\ytableau@diagram@count +\def\ytableau@ifstar#1{\kernel@ifnextchar *{\@firstoftwo{#1}}} +\def\ytableau@ignorespaces{$} +\def\ytableau@thisboxcolor{clear} +\def\ytableau@centering{top} +\def\ytableau@defarg{} +\def\ytableau@tmpa{} +\def\ytableau@tmpb{} +\def\ytableau@tmpc{} +\def\ytableau@compare#1#2{% + \def\ytableau@tmpa{#1}\def\ytableau@tmpb{#2}% + \ifx\ytableau@tmpa\ytableau@tmpb% + \global\@ytableau@eqtrue% + \else% + \global\@ytableau@eqfalse% + \fi% +} +\def\ytableau@compare@#1#2{% + \def\ytableau@tmpb{#2}% + \ifx#1\ytableau@tmpb% + \global\@ytableau@eqtrue% + \else% + \global\@ytableau@eqfalse% + \fi% +} +\newif\if@ytableau@eq +\RequirePackage{xkeyval} +\newcommand{\ytableausetup}[1]{\setkeys[ytableau]{setup}{#1}} +\define@key[ytableau]{setup}{boxsize}{% + \setkeys[ytableau]{setup}{nosmalltableaux}% + \ytableau@compare{#1}{normal}% + \if@ytableau@eq% + \global\ytableau@boxdim=\ytableau@boxdim@normal% + \else% + \global\ytableau@boxdim=#1% + \fi% +} +\define@choicekey*[ytableau]{setup}{aligntableaux} + {top,center,bottom}[true]{% + \gdef\ytableau@centering{#1} +} +\define@choicekey[ytableau]{setup}{centertableaux}{true}[true]{% + \gdef\ytableau@centering{center}% +} +\define@choicekey[ytableau]{setup}{nocentertableaux}{true}[true]{% + \gdef\ytableau@centering{top}% +} +\define@boolkey[ytableau]{setup}{smalltableaux}[true]{% + \ifytableau@setup@smalltableaux% + \ifnum\ytableau@boxdim@save>0% + \gdef\ytableau@defarg{\scriptstyle}% + \global\ytableau@boxdim@save=-\ytableau@boxdim% + \global\ytableau@boxdim=.81em% + \fi% + \else% + \ifnum\ytableau@boxdim@save<0% + \gdef\ytableau@defarg{}% + \global\ytableau@boxdim=-\ytableau@boxdim@save% + \fi% + \fi% +} +\define@boolkey[ytableau]{setup}{nosmalltableaux}[true]{% + \ifytableau@setup@nosmalltableaux% + \setkeys[ytableau]{setup}{smalltableaux=false}% + \else% + \setkeys[ytableau]{setup}{smalltableaux=true}% + \fi% +} +\define@boolkey[ytableau]{setup}{textmode}[true]{% + \ifytableau@setup@textmode% + \global\def\ytableau@ignorespaces{\ignorespaces}% + \else% + \global\def\ytableau@ignorespaces{$}% + \fi% +} +\define@boolkey[ytableau]{setup}{mathmode}[true]{% + \ifytableau@setup@mathmode% + \setkeys[ytableau]{setup}{textmode=false}% + \else% + \setkeys[ytableau]{setup}{textmode=true}% + \fi% +} +\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{xcolor}} +\ProcessOptionsX[ytableau]<setup>[] +\RequirePackage{xcolor} +\newenvironment{ytableau}[1][] +{% + \leavevmode% + {\iffalse}\fi% + \global\setbox\ytableau@thistableau=\hbox\bgroup$% + \m@th% + \setlength{\fboxrule}{\ytableau@boxframe}% + \setlength{\fboxsep}{0pt}% + \vtop\bgroup% + \let\\=\ytableau@cr% + \offinterlineskip% + \openup-\fboxrule% + \tabskip=-\fboxrule% + \halign\bgroup&\ytableau@startbox{\ytableau@defarg}{#1}##% + \ytableau@endbox\cr% +} +{% + \crcr\egroup% + \egroup% + $\egroup% + \iffalse{\fi}% + \ifnum\wd\ytableau@thistableau>\wd\ytableau@tableaux% + \ytableau@tableauwd=\wd\ytableau@thistableau% + \else% + \ytableau@tableauwd=\wd\ytableau@tableaux% + \fi% + \wd\ytableau@thistableau=0pt% + \setbox\ytableau@tableaux% + =\hbox{\box\ytableau@thistableau\unhbox\ytableau@tableaux}% + \wd\ytableau@tableaux=\ytableau@tableauwd% + \ytableau@ifstar% + {\ydiagram}% + {% + \ytableau@compare@{\ytableau@centering}{center}% + \if@ytableau@eq% + \hbox{$\vcenter{\box\ytableau@tableaux}$}% + \else\ytableau@compare@{\ytableau@centering}{bottom}% + \if@ytableau@eq% + \raise\dp\ytableau@tableaux\box\ytableau@tableaux% + \fi% + \setbox\ytableau@tableaux% + =\hbox{\lower\ht\ytableau@tableaux\box\ytableau@tableaux}% + \setbox\ytableau@tableaux% + =\hbox{\raise\ytableau@boxdim\box\ytableau@tableaux}% + \setbox\ytableau@tableaux% + =\hbox{\raise2\ytableau@boxframe\box\ytableau@tableaux}% + \box\ytableau@tableaux% + \fi% + }% +} +\def\ytableau@cr{\cr} +\def\none{\omit\ytableau@none} +\newcommand{\ytableau@none}[1][]{% + \def\ytableau@thisboxcolor{clear}% + \setlength{\fboxsep}{\ytableau@boxframe}% + \setlength{\fboxrule}{0pt}% + \ytableau@@startbox#1\ytableau@endbox% + \ignorespaces% +} +\def\ytableau@startbox#1#2{% + \ytableau@getcolor{\ytableau@save{\ytableau@opttoksa}}#1\@nil% + \ytableau@getcolor{\ytableau@save{\ytableau@opttoksb}}#2\@nil% + \ytableau@getcolor% + {\ytableau@@startbox\the\ytableau@opttoksa\the\ytableau@opttoksb}% +} +\def\ytableau@save#1#2\@nil{#1={#2}} +\def\ytableau@getcolor#1{\ytableau@ifstar{\ytableau@@getcolor{#1}}{#1}} +\def\ytableau@@getcolor#1(#2){% + \def\ytableau@thisboxcolor{#2}% + #1% +} +\def\ytableau@@startbox{% + \setbox\ytableau@thisbox=\hbox to \ytableau@boxdim\bgroup% + \hss% + \ytableau@ignorespaces% +} +\def\ytableau@endbox{% + \ytableau@ignorespaces% + \hss% + \egroup% + \ht\ytableau@thisbox=\ht\ytableau@tmpboxa% + \dp\ytableau@thisbox=\dp\ytableau@tmpboxb% + \ytableau@fcolorbox{\ytableau@thisboxcolor}{% + \vbox to \ytableau@boxdim{\vss\box\ytableau@thisbox\vss}% + }% +} +\def\ytableau@fcolorbox#1#2{% + \ytableau@compare@{#1}{clear}% + \if@ytableau@eq% + \fbox{#2}% + \else% + \fcolorbox{.}{#1}{#2}% + \fi% +} +\newcommand{\ytableaushort}[2][]{% + \ytableau@toks={}% + \ytableau@getentries{\ytableau@@getentries}{}#2,\@nil% + \ytableau[#1]\the\ytableau@toks\endytableau% +} +\def\ytableau@getentries#1#2{\ytableau@getline{#1}{#2}.} +\def\ytableau@getline#1#2#3,{% + \ytableau@opttoksa=\expandafter{\@gobble#3}% + \ytableau@opttoksb={\ytableau@@getline{#1}{#2}}% + \edef\ytableau@next{\the\ytableau@opttoksb{\the\ytableau@opttoksa}}% + \ytableau@next% +} +\def\ytableau@@getline#1#2#3#4{% + \ytableau@compare{#4}{,}% + \if@ytableau@eq% + \def\ytableau@next{\ytableau@@getline{#1}{#2}{#3}}% + \else% + \ytableau@compare{#4}{\@nil}% + \if@ytableau@eq% + \def\ytableau@next{#1#3#2\@nil}% + \else% + \def\ytableau@next{#1#3#2\@nil\ytableau@getentries{#1}{#2}{#4}}% + \fi% + \fi% + \ytableau@next% +} +\def\ytableau@@getentries#1#2{% + \ytableau@compare{#2}{\@nil}% + \if@ytableau@eq% + \ytableau@toks=\expandafter{\the\ytableau@toks#1\\}% + \def\ytableau@next{}% + \else% + \ytableau@toks=\expandafter{\the\ytableau@toks#1&}% + \def\ytableau@next{\ytableau@@getentries{#2}}% + \fi% + \ytableau@next% +} +\newcommand\ydiagram[2][]{% + \ytableau@toks={}% + \ytableau@getentries{\ytableau@diagram@getentries}{+}#2,\@nil% + \ytableau[#1]\the\ytableau@toks\endytableau% +} +\def\ytableau@diagram@getentries#1+#2\@nil{% + \ytableau@compare{#2}{}% + \if@ytableau@eq% + \def\ytableau@next{% + \ytableau@loop{#1}{}% + }% + \else% + \def\ytableau@next{% + \ytableau@loop{#1}{\none}% + \ytableau@diagram@getentries#2\@nil% + }% + \fi% + \ytableau@next% +} +\def\ytableau@loop#1#2{% + \ytableau@fullexpand{#1}% + \loop\ifnum\ytableau@diagram@count>1% + \ytableau@toks=\expandafter{\the\ytableau@toks#2&}% + \advance\ytableau@diagram@count by -1% + \repeat% + \ifnum\ytableau@diagram@count=1% + \ytableau@compare{#2}{}% + \if@ytableau@eq% + \ytableau@toks=\expandafter{\the\ytableau@toks#2\\}% + \else + \ytableau@toks=\expandafter{\the\ytableau@toks#2&}% + \fi% + \fi% +} +\def\ytableau@fullexpand#1{% + \def\ytableau@tmpa##1{##1}% + \edef\ytableau@tmpb{\ytableau@tmpa#1}% + \edef\ytableau@tmpc{\ytableau@tmpb}% + \ytableau@diagram@count=\ytableau@tmpc% +} +\endinput +%% +%% End of file `ytableau.sty'. |