summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-10-14 23:41:12 +0000
committerKarl Berry <karl@freefriends.org>2010-10-14 23:41:12 +0000
commitfd8b5081012294fd4fa8b3c9371f0b26b39d0ef1 (patch)
tree301d70a405809b8a6546ac76981e6a425ceb4955 /Master/texmf-dist/tex/latex
parent05d8df12c352606ad563fdeeeac432e8437c5c07 (diff)
reinstate bezos, it contains babeltools
git-svn-id: svn://tug.org/texlive/trunk@20106 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/bezos/babeltools.sty362
1 files changed, 362 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bezos/babeltools.sty b/Master/texmf-dist/tex/latex/bezos/babeltools.sty
new file mode 100644
index 00000000000..2818aa36519
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bezos/babeltools.sty
@@ -0,0 +1,362 @@
+% Copyright (c) 2010 by Javier Bezos.
+% All Rights Reserved.
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% 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.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Javier Bezos.
+%
+% TODO:
+% noshorthands -> shorthands=off, nocitations, nocrossrefs
+
+\ProvidesPackage{babeltools}[2010/10/14 v0.2 Tools for the babel system (beta)]
+
+\edef\bbtl@savedcatcodes{%
+ \catcode`\noexpand\~=\the\catcode`\~
+ \catcode`\noexpand\:=\the\catcode`\:
+ \catcode`\noexpand\"=\the\catcode`\"}
+\catcode`\~=\active
+\catcode`\"=12
+\catcode`\:=12
+
+\def\bbtl@meaning{\expandafter\strip@prefix\meaning}
+
+\def\bbtl@ifshorthand#1{%
+ \@expandtwoargs\in@{#1}{\bbtl@o@shorthands}%
+ \ifin@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\let\bbtl@afterbabelhook\@empty
+\newcommand\AfterBabel[1]{%
+ \g@addto@macro\bbtl@afterbabelhook{#1}}
+
+\let\bbtl@atendofbabelhook\@empty
+\newcommand\AtEndOfBabel[1]{%
+ \g@addto@macro\bbtl@atendofbabelhook{#1}}
+
+\let\bbtl@beforebabelhook\@empty
+\newcommand\BeforeBabel[1]{%
+ \g@addto@macro\bbtl@beforebabelhook{#1}}
+
+% Not to be redefined. The current value, saved by babel, is
+% restored. More robust code is necessary, I think.
+
+\def\bbtl@restore@org#1{%
+ \@ifundefined{#1 }% Not robust?
+ {\expandafter\let\csname #1\expandafter\endcsname
+ \csname org@#1\endcsname}%
+ {\expandafter\let\csname #1 \expandafter\endcsname
+ \csname org@#1\endcsname}}
+
+\def\bbtl@save@org#1{%
+ \expandafter\let\csname org@#1\expandafter\endcsname
+ \csname #1\endcsname}
+
+% Citations and cross refs
+% ~~~~~~~~~~~~~~~~~~~~~~~~
+
+\let\bbtl@ignorepackages\@empty
+
+\DeclareOption{nocitations}
+ {\g@addto@macro\bbtl@ignorepackages{,cite,natbib,}%
+ \AfterBabel{%
+ \bbtl@restore@org{nocite}%
+ \bbtl@restore@org{bibcite}%
+ \bbtl@restore@org{@bibitem}%S
+ \bbtl@restore@org{@citex}}}
+
+\DeclareOption{nocrossrefs}
+ {\g@addto@macro\bbtl@ignorepackages{,varioref,}%
+ \BeforeBabel{%
+ \bbtl@save@org{@newl@bel}}% babel DOESN'T save it!
+ \AfterBabel{%
+ \bbtl@restore@org{@newl@bel}%
+ \bbtl@restore@org{ref}% Robust
+ \bbtl@restore@org{pageref}}}% Robust
+
+% More cases are to be added, but they must be delayed at the end of
+% begin document, because they are related to loaded packages (see
+% babel.dtx)
+%
+% Shorthands
+% ~~~~~~~~~~
+% Some languages use the shortand mechanism for tools not defined
+% otherwise, so you can still use them with \babelshorthand{..}.
+% Then you can use it conveniently to define your own macros.
+
+% ~ is an special case, as it's defined in babel.def
+
+% New shorthands
+% --------------
+
+\DeclareOption{adaptive}%
+ {\AfterBabel{%
+ \let\bbtl@initiate@active@char\initiate@active@char
+ \let\initiate@active@char\bbtl@set@shorthand
+ \let\bbtl@declare@shorthand\declare@shorthand
+ \let\declare@shorthand\bbtl@declare
+ \let\bbl@activate\bbtl@activate
+ \let\bbtl@deactivate\bbl@deactivate
+ \let\bbl@deactivate\bbtl@restore}}
+
+% Do \bbtl@initiate@active@char but don't make the char active.
+% Not necessary and a source of bugs.
+
+\def\bbtl@set@shorthand#1{%
+ \expandafter\edef\csname bbtl@savecat\string#1\endcsname
+ {\the\catcode`#1}%
+ \bbtl@initiate@active@char{#1}%
+ \catcode`#1=\csname bbtl@savecat\string#1\endcsname\relax
+ \addto\bbtl@select{\shorthandon{#1}}}
+
+\def\bbtl@use@shorthand{%
+ \if@safe@actives
+ \bbl@afterelse
+ \string
+ \else
+ \bbl@afterfi
+ {\ifx\thepage\relax
+ \bbl@afterelse
+ \string
+ \else
+ \bbl@afterfi
+ \bbtl@use@sh
+ \fi}%
+ \fi}
+
+\def\bbtl@use@sh#1{%
+ \ifx\protect\@unexpandable@protect
+ \bbl@afterelse
+ \noexpand#1%
+ \else%
+ \bbl@afterfi
+ \textormath
+ {\csname active@char\string#1\endcsname}%
+ {\csname normal@char\string#1\endcsname}%
+ \fi}
+
+\gdef\bbtl@activate#1{%
+ \begingroup
+ \lccode`\~=`#1
+ \lowercase{%
+ \endgroup
+ \def~{\bbtl@use@shorthand~}}}
+
+\def\bbtl@restore#1{%
+ \shorthandon{#1}%
+ \begingroup
+ \lccode`\~=`#1
+ \lowercase{%
+ \endgroup
+ \bbtl@deactivate{~}}}
+
+\def\bbtl@declare#1#2{%
+ \@ifundefined{bbtl@savecat\expandafter\string\@firstoftwo#2\@empty}%
+ {\@gobble}%
+ {\bbtl@declare@shorthand{#1}{#2}}}
+
+% No shorthands
+% -------------
+
+% This is done after 'adaptive', if present.
+
+\DeclareOption{shorthands=off}%
+ {\AfterBabel{\bbl@doshorthands}}
+
+\def\babelshorthand#1{%
+ \def\bbtl@tempa{#1}%
+ \@ifundefined{bbtl@@\languagename @@\bbtl@meaning\bbtl@tempa}%
+ {#1}%
+ {\@nameuse{bbtl@@\languagename @@\bbtl@meaning\bbtl@tempa}}}
+
+% Select
+% ----------------------
+\let\bbtl@o@shorthands\@empty
+
+% TO DO: package options are expanded by LaTeX, and ~ raises
+% an error, but not \string~. Is there a way to fix it?
+
+% This is done after 'adaptive', if present.
+
+\def\bbl@doshorthands{%
+ \let\bbtl@s@initiate@active@char\initiate@active@char
+ \def\initiate@active@char##1{%
+ \bbtl@ifshorthand{\string##1}%
+ {\bbtl@s@initiate@active@char{##1}}%
+ {}}%
+ \let\bbtl@s@declare@shorthand\declare@shorthand
+ \def\declare@shorthand##1##2{%
+ \bbtl@ifshorthand{\expandafter\string\@firstoftwo##2\@empty}%
+ {\bbtl@s@declare@shorthand{##1}{##2}}%
+ {\def\bbtl@tempa{##2}%
+ \@namedef{bbtl@@##1@@\bbtl@meaning\bbtl@tempa}}}%
+ \let\bbtl@s@activate\bbl@activate
+ \def\bbl@activate##1{%
+ \bbtl@ifshorthand{\string##1}%
+ {\bbtl@s@activate{##1}}%
+ {}}%
+ \let\bbtl@s@deactivate\bbl@deactivate
+ \def\bbl@deactivate##1{%
+ \bbtl@ifshorthand{\string##1}%
+ {\bbtl@s@deactivate{##1}}%
+ {}}}
+
+% No config
+% ~~~~~~~~~
+% Make sure an unexpected local config doesn't spoil your document.
+% Use of config files is strongly discouraged, but some sites
+% use them
+
+\DeclareOption{noconfig}
+ {\AfterBabel{\let\loadlocalcfg\@gobble}}
+
+% Captions
+% ~~~~~~~~
+
+% redefining names. Somewhat experimental.
+
+\def\bbtl@captions{%
+ \bbtl@elt\prefacename\bbtl@elt\refname\bbtl@elt\abstractname
+ \bbtl@elt\bibname\bbtl@elt\chaptername\bbtl@elt\appendixname
+ \bbtl@elt\contentsname\bbtl@elt\listfigurename
+ \bbtl@elt\listtablename\bbtl@elt\indexname
+ \bbtl@elt\figurename\bbtl@elt\tablename\bbtl@elt\partname
+ \bbtl@elt\enclname\bbtl@elt\ccname\bbtl@elt\headtoname
+ \bbtl@elt\pagename\bbtl@elt\seename\bbtl@elt\alsoname
+ \bbtl@elt\proofname\bbtl@elt\glossaryname}
+
+% 1: \captions... expanded #2 repl fun bbtl@f #3 \...name
+% \lang...name
+\def\bbtl@rep#1\@@\@@#2#3#4{%
+ \in@{#3}{#1}%
+ \ifin@
+ #2#1\@@\@@#3#4%
+ \else
+ \PackageWarningNoLine{babeltools}%
+ {No \string#3 in \bbtl@l}%
+ \fi}
+
+% \bbtl@f is a helper macro:
+% 1 \...name
+% bbtl@f:
+% #1 prev, #2 def of \...name, #3 after
+% #4 \...name, #5 \lang...name
+\DeclareOption{langcaptions}
+ {\def\bbtl@repdef#1{%
+ \def\bbtl@f##1#1##2##3\@@\@@##4##5{%
+ \def##5{##2}%
+ \@namedef{captions\bbtl@l}{##1##4{##5}##3}}}%
+ \def\bbtl@elt#1{%
+ \bbtl@repdef#1%
+ \@temptokena\expandafter\expandafter\expandafter{%
+ \csname captions\bbtl@l\endcsname}%
+ % If \lang...name undefined
+ \edef\bbtl@t{%
+ \noexpand\bbtl@rep
+ \the\@temptokena
+ \noexpand\@@\noexpand\@@
+ \noexpand\bbtl@f
+ \noexpand#1
+ \expandafter\noexpand
+ \csname\bbtl@l\expandafter\@gobble\string#1\endcsname}%
+ \bbtl@t}%
+ \def\bbtl@repdo{%
+ \@for\bbtl@l:=\bbtl@options\do{%
+ \@ifundefined{captions\bbtl@l}{}{%
+ \bbtl@captions}}}%
+ \AtEndOfBabel{\bbtl@repdo}}
+
+% Key=value package options
+% ~~~~~~~~~~~~~~~~~~~~~~~~~
+
+\def\bbtl@process#1=#2\bbtl@process#3{%
+ \expandafter\ifx\csname bbtl@o@#1\endcsname\@empty
+ \expandafter\edef\csname bbtl@o@#1\endcsname{#2}%
+ \DeclareOption{\CurrentOption}{}%
+ \fi}
+
+\DeclareOption*{%
+ \@expandtwoargs\in@{\string=}{\CurrentOption}%
+ \ifin@
+ \expandafter\bbtl@process\CurrentOption\bbtl@process\CurrentOption
+ \fi}
+
+% Process options
+% ~~~~~~~~~~~~~~~~
+
+\ProcessOptions
+
+% shorthands=... option is handled here.
+
+\show\bbtl@o@shorthands
+
+\ifx\bbtl@o@shorthands\@empty\else
+ \edef\bbtl@o@shorthands{\bbtl@meaning\bbtl@o@shorthands}%
+ \bbtl@ifshorthand{'}%
+ {\PassOptionsToPackage{activeacute}{babel}}{}
+ \bbtl@ifshorthand{`}%
+ {\PassOptionsToPackage{activegrave}{babel}}{}
+ \bbtl@ifshorthand{:}{}%
+ {\g@addto@macro\bbtl@ignorepackages{,hhline,}}
+% After any redefinition, the shorthand mechanism comes.
+ \AfterBabel{\bbl@doshorthands}
+\fi
+
+% The first \LdfInit loads the babel core (the sty file doesn't!)
+% That means babeltools is not compatible with classes loading
+% a language:
+
+\@ifundefined{ldf@finish}%
+ {\def\LdfInit{%
+ \expandafter\let\expandafter\bbtl@options
+ \csname opt@babel.sty\endcsname
+ \bbtl@beforebabelhook
+ \AtBeginDocument{%
+ \let\bbtl@ifpackageloaded\@ifpackageloaded
+ \def\@ifpackageloaded##1{%
+ \@expandtwoargs\in@{,##1,}{\bbtl@ignorepackages}%
+ \ifin@
+ \expandafter\@gobbletwo
+ \else
+ \expandafter\bbtl@ifpackageloaded
+ \fi
+ {##1}}}%
+ \chardef\atcatcode =\catcode`\@
+ \catcode`\@=11\relax
+ \input babel.def\relax
+ \catcode`\@ =\atcatcode
+ \let\atcatcode\relax
+ \bbtl@afterbabelhook
+ \AtEndOfPackage{\bbtl@atendofbabelhook}%
+ \LdfInit}}
+ {\PackageError{babeltools}%
+ {Too late -- babel has been loaded}%
+ {babeltools can be used only before babel.\MessageBreak
+ Very likely a package or the class has loaded it.}}
+
+\AtEndOfBabel{%
+ \AtBeginDocument{\let\@ifpackageloaded\bbtl@ifpackageloaded}}
+
+\bbtl@savedcatcodes
+
+\endinput
+
+==============================
+==============================
+
+- Attributes?
+- Quotes ''
+
+
+
+