summaryrefslogtreecommitdiff
path: root/support/textoolspro
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/textoolspro
Initial commit
Diffstat (limited to 'support/textoolspro')
-rw-r--r--support/textoolspro/README.textoolspro40
-rw-r--r--support/textoolspro/boxerer.py161
-rw-r--r--support/textoolspro/highnest.tex46
-rw-r--r--support/textoolspro/miarticle.cls837
-rw-r--r--support/textoolspro/sectioner.py155
-rw-r--r--support/textoolspro/strucincode.tex13
-rw-r--r--support/textoolspro/textoolspro.pdfbin0 -> 107173 bytes
-rw-r--r--support/textoolspro/textoolspro.tex343
8 files changed, 1595 insertions, 0 deletions
diff --git a/support/textoolspro/README.textoolspro b/support/textoolspro/README.textoolspro
new file mode 100644
index 0000000000..43c326b2e0
--- /dev/null
+++ b/support/textoolspro/README.textoolspro
@@ -0,0 +1,40 @@
+Readme of TeXtoolspro
+
+What is it
+----------
+TeXtoolspro This is a small set of utility very useful for doing
+documenation in LaTeX . It's intended mainly for programmers.
+It's composed of :
+
+boxerer.py: - It creates structured boxes, one inside another
+so the structure of data and functions can be easily shown
+-It creates black boxes ( diagrams who show the inputs,outputs
+and functions of a module or a function).
+
+sectioner.py : - This is a front-end filter of LaTeX-modified ( very
+little ) code, so you can write sections in a relative way ( not
+\section, but \+, \4- , \n , and so on ). This is in fact a really
+new thing in LaTeX(AFAIK) and quite worthy.
+
+miarticle.cls: This is a LaTeX class that allows up to 14 levels
+ of nesting, needed for doing documentations ( usually 7 levels
+are not enough).
+
+How to run it.
+---------------
+
+Take a look at the end of boxerer.py, there you'll see good examples.
+For sectioner,
+python sectioner.py mode_of_use inputfile outputfile
+
+mode_of_use is article or report or manolo. See documentation
+for further details.
+
+How to make the documentation.
+------------------------------
+
+Run "latex textoolspro.tex" several times , because it needs to update
+the crossreferences and such.
+
+Or use a ghostscript visor to view textoolspro.ps.
+
diff --git a/support/textoolspro/boxerer.py b/support/textoolspro/boxerer.py
new file mode 100644
index 0000000000..7be1a151b2
--- /dev/null
+++ b/support/textoolspro/boxerer.py
@@ -0,0 +1,161 @@
+"""
+Manuel Gutierrez Algaba 1999
+
+You are free to use , modify, distribute and copy this piece of
+python code, if you keep this free copyright notice in it.
+
+boxerer Version 1.1
+
+Constructor of boxes:
+
+This code does a series of boxes, one inside another ,
+so that the structure of a specific thing is clearly shown.
+
+"""
+import string
+
+class included:
+ def __init__(self, title_of_the_thing, width = 350, decrement = 20, spaced = 'on' ):
+ self.limit_of_generation=10000
+ self.spaced= spaced
+ self.title = title_of_the_thing[0]
+ self.set_of_articles = []
+ self.width = width
+ self.decrement = decrement
+ print title_of_the_thing
+ if not title_of_the_thing[1] is None:
+ for i in title_of_the_thing[1]:
+ #print "line 18",i
+ self.add(included(i,width - decrement, decrement))
+ try:
+ self.coment = title_of_the_thing[2]
+ except:
+ self.coment = ""
+
+ def do_limit_of_generation(self,y):
+ self.limit_of_generation= y
+
+ def add(self,i):
+ self.set_of_articles.append(i)
+
+ def genera(self, f, level = 0):
+ if level==self.limit_of_generation:
+ return -1
+ f.write("\\framebox{\\parbox{"+str(self.width)+" pt }{\\textit{ "+ self.title+"}")
+ print self.coment
+ if self.coment!="":
+ f.write("\\newline "+self.coment)
+ if self.set_of_articles !=[]:
+ f.write(" \\newline")
+ if self.spaced=='on':
+ f.write("\\vspace*{3 pt} \n")
+ for i in self.set_of_articles[:-1]:
+ if i.genera(f,level + 1)==1:
+ f.write(" \\newline")
+ if self.spaced=='on':
+ f.write("\\vspace*{3 pt} \n")
+
+ if self.set_of_articles !=[]:
+ self.set_of_articles[len(self.set_of_articles)-1].genera(f)
+ f.write("}}")
+ return 1
+
+"""
+inputoutputfunction
+
+This class creates a box, where it's detailed what is that
+module of function for, what are its inputs,outputs and what internal
+functions does it call.
+"""
+
+class inputoutputfunction:
+ def __init__(self, name, description, lang='en'):
+ self.name = name
+ self.description = description
+ self.lang = lang
+ self.inputnamelang={'en':'Inputs','es':'Entradas'}
+ self.outputnamelang={'en':'Outputs','es':'Salidas'}
+ self.functionnamelang={'en':'Functions','es':'Funciones'}
+ if lang=='en':
+ self.inputs=("None",0)
+ self.outputs=("None",0)
+ self.functions=("None",0)
+ elif lang=='es':
+ self.inputs=("No hay",0)
+ self.outputs=("No hay",0)
+ self.functions=("No hay",0)
+
+ def do_inputs(self, inputs):
+ self.inputs=[]
+ for i in inputs:
+ self.inputs.append(string.replace(i,"_","\_"))
+
+ def do_outputs(self, outputs):
+ self.outputs=[]
+ for i in outputs:
+ self.outputs.append(string.replace(i,"_","\_"))
+
+ def do_functions(self, functions):
+ self.functions=[]
+ for i in functions:
+ self.functions.append(string.replace(i,"_","\_"))
+
+ def generate_latex_code(self,file,width):
+ f = open(file,"w")
+ inputs = self.generate_inputs()
+ outputs = self.generate_outputs()
+ functions = self.generate_functions()
+ #print (self.name, [inputs,functions,outputs], self.description)
+ i = included((self.name, [inputs,functions,outputs],
+ self.description), width)
+ f = open(file,"w")
+ i.genera(f)
+ f.close()
+
+ def generate_inputs(self):
+ return self.generate_thing(self.inputs, self.inputnamelang)
+
+ def generate_outputs(self):
+ return self.generate_thing(self.outputs, self.outputnamelang)
+
+ def generate_functions(self):
+ return self.generate_thing(self.functions, self.functionnamelang)
+
+ def generate_thing(self,thing,dic):
+ if type(thing)==type((0,0)):
+ return (dic[self.lang],None,thing[0])
+ else:
+ t = ""
+ for i in thing:
+ t=t+"\\item{"+i+"}"+"\n"
+ head = "\\begin{list}{*}{\\baselineskip 2pt}\n"
+ foot = "\\end{list}\n"
+ all= head+t+foot
+ return (dic[self.lang],None,all)
+
+
+def test():
+ r0 = ("men\\_prin.py",None,"Here it's the main menu is defined")
+ r1 = ("Graphic representation", [("tkinter.py",None,"Main calling module"),r0], "Graphic interfases with the user, mainly")
+ r2 = ("Structures of the languages(grammar)", None)
+ r3 = ("Configuration", [("Database of words",None),
+ ("Labels",None)])
+ i = included(("Lritaunas Peki",[r1,r2,r3]," This programm aims to teach vocabulary and grammar of different languages."))
+ f = open("result.tex","w")
+ i.genera(f)
+ f.close()
+
+ example2=inputoutputfunction('taxman',"This is your best friend, who helps you when you earn too much")
+ example2.do_inputs(["Your income","Your properties","The Law"])
+ example2.do_outputs(["Your taxes","Your fines","Historical information"])
+ example2.do_functions(["Compute your taxes","Check your lies",
+ "Send you to prison","Bribery"])
+ example2.generate_latex_code("result2.tex",200)
+
+ example3=inputoutputfunction('doctor',"This is your best friend, who helps you when you are tired of life")
+ example3.do_inputs(["Your income","Your properties","Your confidence"])
+ example3.do_functions(["Kill you","Heal you"])
+ example3.generate_latex_code("result3.tex",200)
+
+if __name__=='__main__':
+ test()
diff --git a/support/textoolspro/highnest.tex b/support/textoolspro/highnest.tex
new file mode 100644
index 0000000000..0e020a7755
--- /dev/null
+++ b/support/textoolspro/highnest.tex
@@ -0,0 +1,46 @@
+\documentclass[10pt]{miarticle}
+\begin{document}
+\n
+Lritaunas Peki Documentation
+Lritaunas Peki is a programm for learning languages.
+
+\+
+Structure of the Code
+
+\+
+Graphic user interfaces
+\+
+Ideas
+Basically, you must think about it as a nested layers of metawidgets.
+So we can reuse the code.
+\n
+Python mega widgets
+This is a nice library of megawidgets, that supports scrollbars,
+multiple entries, dialogs...
+\+
+My meta widgets.
+Trying to isolate GUI from tk and from Pmw(python megawidgets) I
+wrote a higher set of widgets.
+
+\+
+Specialized metawidgets
+This widgets are those really used in the GUI, they're composites
+of my meta widgets, and they make calls to the structures of
+the core code~\ref{lookupindictionaries}
+
+
+\-2
+\n
+What you really see in your screen
+Blah, blah
+
+\-2
+
+
+/minput{strucincode.tex}
+
+\n
+And yeah more blah
+Blah , and blah
+
+\end{document}
diff --git a/support/textoolspro/miarticle.cls b/support/textoolspro/miarticle.cls
new file mode 100644
index 0000000000..24882f8348
--- /dev/null
+++ b/support/textoolspro/miarticle.cls
@@ -0,0 +1,837 @@
+%%
+%% This is file `article.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% classes.dtx (with options: `miarticle')
+%%
+%% This is a generated file.
+%%
+%% Copyright 1993 1994 1995 1996 1997
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% For further copyright information, and conditions for modification
+%% and distribution, see the file legal.txt, and any other copyright
+%% notices in this file.
+%%
+%% This file is part of the LaTeX2e system.
+%% ----------------------------------------
+%% This system 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.
+%%
+%% For error reports concerning UNCHANGED versions of this file no
+%% more than one year old, see bugs.txt.
+%%
+%% Please do not request updates from us directly. Primary
+%% distribution is through the CTAN archives.
+%%
+%%
+%% IMPORTANT COPYRIGHT NOTICE:
+%%
+%% You are NOT ALLOWED to distribute this file alone.
+%%
+%% You are allowed to distribute this file under the condition that it
+%% is distributed together with all the files listed in manifest.txt.
+%%
+%% If you receive only some of these files from someone, complain!
+%%
+%%
+%% Permission is granted to copy this file to another file with a
+%% clearly different name and to customize the declarations in that
+%% copy to serve the needs of your installation, provided that you
+%% comply with the conditions in the file legal.txt.
+%%
+%% However, NO PERMISSION is granted to generate or to distribute a
+%% modified version of this file under its original name.
+%%
+%% You are NOT ALLOWED to change this file.
+%%
+%%
+%% MODIFICATION ADVICE:
+%%
+%% If you want to customize this file, it is best to make a copy of
+%% the source file(s) from which it was produced. Use a different
+%% name for your copy(ies) and modify the copy(ies); this will ensure
+%% that your modifications do not get overwritten when you install a
+%% new release of the standard system. You should also ensure that
+%% your modified source file does not generate any modified file with
+%% the same name as a standard file.
+%%
+%% You can then easily distribute your modifications by distributing
+%% the modified and renamed copy of the source file, taking care to
+%% observe the conditions in legal.txt; this will ensure that other
+%% users can safely use your modifications.
+%%
+%% You will also need to produce your own, suitably named, .ins file to
+%% control the generation of files from your source file; this file
+%% should contain your own preambles for the files it generates, not
+%% those in the standard .ins files.
+%%
+%% The names of the source files used are shown above.
+%%
+%%
+%%
+%% \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 \~}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{miarticle}
+ [1998/10/2 v1.0
+ Standard LaTeX document class]
+\newcommand\@ptsize{}
+\newif\if@restonecol
+\newif\if@titlepage
+\@titlepagefalse
+\if@compatibility\else
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}
+ {\setlength\paperheight {210mm}%
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b5paper}
+ {\setlength\paperheight {250mm}%
+ \setlength\paperwidth {176mm}}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+\fi
+\if@compatibility
+ \renewcommand\@ptsize{0}
+\else
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\fi
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+\if@compatibility\else
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\fi
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\if@compatibility\else
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\fi
+\DeclareOption{titlepage}{\@titlepagetrue}
+\if@compatibility\else
+\DeclareOption{notitlepage}{\@titlepagefalse}
+\fi
+\if@compatibility\else
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\fi
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+\DeclareOption{openbib}{%
+ \AtEndOfPackage{%
+ \renewcommand\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand\newblock{\par}}%
+}
+\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
+\ProcessOptions
+\input{size1\@ptsize.clo}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\setlength\parskip{0\p@ \@plus \p@}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\setcounter{secnumdepth}{16}
+\setcounter{topnumber}{16}
+\renewcommand\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand\bottomfraction{.3}
+\setcounter{totalnumber}{12}
+\renewcommand\textfraction{.2}
+\renewcommand\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand\dbltopfraction{.7}
+\renewcommand\dblfloatpagefraction{.5}
+\if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection\quad
+ \fi
+ ##1}}{}}%
+ \def\subsectionmark##1{%
+ \markright {%
+ \ifnum \c@secnumdepth >\@ne
+ \thesubsection\quad
+ \fi
+ ##1}}}
+\else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thesection\quad
+ \fi
+ ##1}}}}
+\fi
+\def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\@gobbletwo
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ }
+ \if@titlepage
+ \newcommand\maketitle{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let \footnote \thanks
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+}
+\else
+\newcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{%
+ \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+}
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \let \footnote \thanks
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+\fi
+\newcounter {part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {sssection}[subsubsection]
+\newcounter {ssssection}[sssection]
+\newcounter {Section}[ssssection]
+\newcounter {Ssection}[Section]
+\newcounter {Sssection}[Ssection]
+\newcounter {Ssssection}[Sssection]
+\newcounter {Sssssection}[Ssssection]
+\newcounter {SSection}[Sssssection]
+\newcounter {SSsection}[SSection]
+\newcounter {SSssection}[SSsection]
+\newcounter {SSsssection}[SSssection]
+\renewcommand \thepart {\@Roman\c@part}
+\renewcommand \thesection {\@arabic\c@section}
+\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
+
+% the number 3
+\newcommand\sssection{\@startsection{sssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\sssectionmark[1]{}
+
+\renewcommand\thesssection{\thesubsubsection .\@arabic\c@sssection}
+
+% the number 3
+% the number 4
+
+\newcommand\ssssection{\@startsection{ssssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\ssssectionmark[1]{}
+
+\renewcommand\thessssection{\thesssection .\@arabic\c@ssssection}
+% the number 4
+% the number 5
+
+\newcommand\Section{\@startsection{Section}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\Sectionmark[1]{}
+
+\renewcommand\theSection{\thessssection .\@arabic\c@Section}
+
+% the number 5
+% the number 6
+
+\newcommand\Ssection{\@startsection{Ssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\Ssectionmark[1]{}
+
+\renewcommand\theSsection{\theSection .\@arabic\c@Ssection}
+% the number 6
+% the number 7
+
+\newcommand\Sssection{\@startsection{Sssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\Sssectionmark[1]{}
+
+\renewcommand\theSssection{\thessssection .\@arabic\c@ssssection}
+% the number 7
+% the number 8
+
+\newcommand\Ssssection{\@startsection{Ssssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\Ssssectionmark[1]{}
+
+\renewcommand\theSsssection{\theSssection .\@arabic\c@Sssection}
+% the number 8
+% the number 9
+
+\newcommand\Sssssection{\@startsection{Sssssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\Sssssectionmark[1]{}
+
+\renewcommand\theSssssection{\theSsssection .\@arabic\c@Sssssection}
+% the number 9
+% the number 10
+
+\newcommand\SSection{\@startsection{SSection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\SSectionmark[1]{}
+
+\renewcommand\theSSection{\theSssssection .\@arabic\c@SSection}
+% the number 10
+% the number 11
+
+\newcommand\SSsection{\@startsection{SSsection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\SSsectionmark[1]{}
+
+\renewcommand\theSSsection{\theSSsection .\@arabic\c@ssssection}
+% the number 11
+% the number 12
+
+\newcommand\SSssection{\@startsection{SSssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\SSssectionmark[1]{}
+
+\renewcommand\theSSssection{\theSSsection .\@arabic\c@SSssection}
+
+% the number 12
+% the number 13
+
+\newcommand\SSsssection{\@startsection{SSsssection}{4}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {0.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\newcommand*\SSsssectionmark[1]{}
+
+\renewcommand\theSSsssection{\theSSssection .\@arabic\c@SSsssection}
+
+% the number 13
+
+
+\newcommand\part{\par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@part\@spart}
+
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries \partname~\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+\def\@spart#1{%
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \bfseries #1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+\newcommand\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}
+\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}
+\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+
+\if@twocolumn
+ \setlength\leftmargini {2em}
+\else
+ \setlength\leftmargini {2.5em}
+\fi
+\leftmargin \leftmargini
+\setlength\leftmarginii {2.2em}
+\setlength\leftmarginiii {1.87em}
+\setlength\leftmarginiv {1.7em}
+\if@twocolumn
+ \setlength\leftmarginv {.5em}
+ \setlength\leftmarginvi {.5em}
+\else
+ \setlength\leftmarginv {1em}
+ \setlength\leftmarginvi {1em}
+\fi
+\setlength \labelsep {.5em}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\textbullet}
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{\textasteriskcentered}
+\newcommand\labelitemiv{\textperiodcentered}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont\bfseries #1}
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}
+ {\if@twocolumn\else\endquotation\fi}
+\fi
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+\if@compatibility
+\newenvironment{titlepage}
+ {%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \setcounter{page}\z@
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ }
+\else
+\newenvironment{titlepage}
+ {%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \setcounter{page}\@ne
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ \if@twoside\else
+ \setcounter{page}\@ne
+ \fi
+ }
+\fi
+\newcommand\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \setcounter{ssssection}{0}%
+ \renewcommand\thesection{\@Alph\c@section}}
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+\renewcommand \theequation {\@arabic\c@equation}
+\newcounter{figure}
+\renewcommand \thefigure {\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+\newcounter{table}
+\renewcommand\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#1: #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ #1: #2\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg{2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{6}
+\newcommand\tableofcontents{%
+ \section*{\contentsname
+ \@mkboth{%
+ \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
+ \@starttoc{toc}%
+ }
+\newcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty\@secpenalty
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \setlength\@tempdima{3em}%
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\leavevmode
+ \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+ \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+ \endgroup
+ \fi}
+\newcommand*\l@section[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \bfseries
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{2.8em}{2.4em}}
+\newcommand*\l@sssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@ssssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@Section{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@Ssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@Sssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@Ssssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@Sssssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@SSection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@SSsection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@SSssection{\@dottedtocline{4}{3em}{4em}}
+\newcommand*\l@SSsssection{\@dottedtocline{4}{3em}{4em}}
+
+
+\newcommand\listoffigures{%
+ \section*{\listfigurename
+ \@mkboth{\MakeUppercase\listfigurename}%
+ {\MakeUppercase\listfigurename}}%
+ \@starttoc{lof}%
+ }
+\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\newcommand\listoftables{%
+ \section*{\listtablename
+ \@mkboth{%
+ \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
+ \@starttoc{lot}%
+ }
+\let\l@table\l@figure
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+\newenvironment{thebibliography}[1]
+ {\section*{\refname
+ \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\section*{\indexname}]%
+ \@mkboth{\MakeUppercase\indexname}%
+ {\MakeUppercase\indexname}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\newcommand\@idxitem{\par\hangindent 40\p@}
+\newcommand\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \hrule\@width.4\columnwidth
+ \kern2.6\p@}
+\newcommand\@makefntext[1]{%
+ \parindent 1em%
+ \noindent
+ \hb@xt@1.8em{\hss\@makefnmark}#1}
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\today{}
+\edef\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\setlength\columnsep{10\p@}
+\setlength\columnseprule{0\p@}
+\pagestyle{plain}
+\pagenumbering{arabic}
+\if@twoside
+\else
+ \raggedbottom
+\fi
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+\else
+ \onecolumn
+\fi
+
+\endinput
+%%
+%% End of file `miarticle.cls'.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/support/textoolspro/sectioner.py b/support/textoolspro/sectioner.py
new file mode 100644
index 0000000000..2aa4f210c3
--- /dev/null
+++ b/support/textoolspro/sectioner.py
@@ -0,0 +1,155 @@
+"""
+1999 Manuel Gutierrez Algaba
+You are free to use , modify, distribute and copy this piece of
+python code, if you keep this free copyright notice in it.
+
+sectioner.py Version 1.0
+
+relative sectioning of code:
+Given a source in LaTeX, it generates the \sections, \subsections,
+..., in an automatic way.
+It abstracts the idea of absolute sectioning of LaTeX , and supplies
+relative positioning. It makes document more independent of their
+type. The decission article-report-miarticle can be done in the end
+, not when you start to write the document.
+Possibly you can use it ( adapting it a bit ) in TeX, or another
+sorts of languages of typesseting.
+
+how to use:
+python sectioner.py method inputfile outputfile
+"""
+
+"""
+You use a command in a single line, and in the next line you
+put the title of that (sub)section or whatever. And it should
+be in the first column of the line.
+
+For example:
+
+\n
+Coding Decissions.
+<Body of this part>
+...
+
+It uses the following commands:
+
+\n : This says the next section is at the same current level.
+\+ : This goes a level down
+\- : A level up
+\+4 ( or any other number ) : 4 levels down
+\-4: 4 levels up
+\minput{name of file} : This includes another file of sectioner-LaTeX
+style.
+
+For more details see the example:
+highnest.tex ( a source of sectioner-LaTeX )
+
+"""
+
+import sys
+import re
+import string
+
+print sys.argv
+if not sys.argv[1:] or not sys.argv[2:] or not sys.argv[3:]:
+ print "usage: python sectioner.py method inputfile outputfile"
+ print "method can be 'manolo' or it can be article or report"
+ print "And you should include all the parameters"
+ sys.exit(2)
+
+method = sys.argv[1]
+inputfile = sys.argv[2]
+outputfile = sys.argv[3]
+
+i = open(inputfile,"r")
+lines_of_the_main_file =i.readlines()
+i.close()
+
+outputfile = open(outputfile,"w")
+
+
+# This counters what section we are in
+counters = [ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+dic_sections_manolo = { 0:'\\part', 1:'\\section', 2:'\\subsection',
+ 3:'\\subsubsection', 4:'\\sssection', 5:'\\ssssection',
+ 6:'\\Section', 7:'\\Ssection', 8:'\\Sssection',
+ 9:'\\Ssssection', 10: '\\Sssssection',
+ 11:'\\SSection', 12:'\\SSsection', 13:'\\SSssection',
+ 14:'\\SSsssection'}
+
+dic_sections_article = { 0:'\\section', 1:'\\subsection',
+ 2:'\\subsubsection', 3:'\\paragraph', 4:'\\subparagraph'}
+
+dic_sections_report = { 0:'\\chapter', 1:'\\section', 2:'\\subsection',
+ 3:'\\subsubsection', 4:'\\paragraph', 5:'\\subparagraph'}
+
+if method=='manolo':
+ dic_sections = dic_sections_manolo
+elif method =='article':
+ dic_sections = dic_sections_article
+elif method =='report':
+ dic_sections = dic_sections_report
+
+level = 0
+next = 0
+
+#print y[240]=="\\n\n"
+#print y[274]=="\\+\n"
+
+def process_file(file):
+ i = open(file,"r")
+ v =i.readlines()
+ i.close()
+ process_lines_in_file(v)
+ del v
+
+minputfile= re.compile("/minput\{(?P<file>[^\}]+)\}.*")
+
+def process_lines_in_file(lines_in_file):
+ next = 0
+ global level
+ for i in lines_in_file:
+ if i[0]=="\\" and i[1] in "+-" and i[2] in "123456789":
+ signo = i[1]
+ if signo == '+':
+ level = level + eval(i[2])
+ else:
+ level = level - eval(i[2])
+ counters[level] = counters[level] + 1
+ next = 0
+ continue
+ if i[0]=="\\" and i[1]=="n":
+ counters[level] = counters[level] + 1
+ next = 1
+ continue
+ if i[0]=="\\" and i[1]=="+":
+ level = level + 1
+ counters[level] = 1
+ next = 1
+ continue
+ if i[0]=="\\" and i[1]=="-":
+ #counters[level] = 0
+ level = level - 1
+ counters[level] = counters[level] + 1
+ next = 1
+ continue
+ mmatch = minputfile.match(i)
+ if not mmatch is None:
+ print mmatch.group('file')
+ process_file(mmatch.group('file'))
+ continue
+ if next == 1:
+ #print counters[level]
+ #print range(0,1)
+ t= ""
+ for k in range(0,level+1):
+ t = t+ `counters[k]`+"."
+ #print t,i, # por culpa de tener antes una linea
+ outputfile.write(dic_sections[level]+"{"+string.strip(i)+"}\n")
+ next = 0
+ continue
+ outputfile.write(i)
+
+process_lines_in_file(lines_of_the_main_file)
+
+outputfile.close()
diff --git a/support/textoolspro/strucincode.tex b/support/textoolspro/strucincode.tex
new file mode 100644
index 0000000000..9c6dd737bf
--- /dev/null
+++ b/support/textoolspro/strucincode.tex
@@ -0,0 +1,13 @@
+\n
+Structures used
+
+\+
+Dictionaries
+\+
+Functions
+\+
+Lookups
+\label{lookupindictionaries}
+This is probably one of the most used flavors.. blah, blah
+
+\-3 \ No newline at end of file
diff --git a/support/textoolspro/textoolspro.pdf b/support/textoolspro/textoolspro.pdf
new file mode 100644
index 0000000000..fef059ddad
--- /dev/null
+++ b/support/textoolspro/textoolspro.pdf
Binary files differ
diff --git a/support/textoolspro/textoolspro.tex b/support/textoolspro/textoolspro.tex
new file mode 100644
index 0000000000..e08058965c
--- /dev/null
+++ b/support/textoolspro/textoolspro.tex
@@ -0,0 +1,343 @@
+% If you don't know how to handle a .tex file, do this :
+% This is documentation file for textoolspro ( tex tools for the
+% programmer ).
+% latex textoolspro.tex
+% xdvi textoolspro.dvi
+% See dvips man page if you want it in postscript
+% I don't supply postscripts because they're usually huge.
+
+\documentclass[10pt,a4paper]{article}
+\begin{document}
+\title{Documentation and examples of sectioner.py 1.0 \\
+boxerer.py 1.0 and miarticle.cls}
+\author{ Manuel Gutierrez Algaba \\ irmina@ctv.es \\ http://www.ctv.es/USERS/irmina/texpython.htm }
+\date{ January 1999 }
+\maketitle
+
+\section{Copyright issues}
+boxerer.py, sectioner.py, miarticle.cls and its documentation ( this text and the sources
+of tex drawings included in it) are copyrighted by Manuel
+Gutierrez Algaba 1999 and you are free
+to use, modify , copy and distribute it under the
+condition that
+you include this notice ad in it.
+
+\section{Introduction}
+This document explains all the details for the user of boxerer.py,
+sectioner.py and miarticle.cls
+
+\subsection{boxerer.py }
+When I wrote boxerer.py there wasn't any automated utility for
+doing input-output-function boxes. Of course, you can write them
+directly in \LaTeX. But boxerer.py has
+two major advantages, it's easier to use and it's faster to 'write'.
+Besides it can be used as an interface by CASE programs.
+The kinds of available drawings are good for:
+\begin{itemize}
+\item Expressing the internal structure of large pieces of code, resembling their inner and overall structure.
+\item Expressing the interfaces of modules or functions ,that is,
+expressing modules and functions as black boxes.
+\end{itemize}
+
+And this is an utility written in python.
+\begin{verbatim}
+http://www.python.org
+\end{verbatim}
+
+I imagine that it could be written in \TeX { }but It's 3 times easier
+to use python. And what's more important \TeX{ }programmers have a
+model , if they want to do the translation. \\ Another point, the
+python code could be improved \ldots
+
+And, it generates tex code. So if you want it in postscript, gif
+or whatever, use the programs dvi, gs or grab directly from a
+window!
+
+\subsection{sectioner.py and miarticle.cls}
+When I wrote sectioner.py there wasn't any automated utility for
+handling relative sectioning in \LaTeX / \TeX, or I didn't know
+anything about it. Of course, you can write traditional sections in
+ \LaTeX. But sectioner.py has several major advantages:
+\begin{itemize}
+\item It's easier to use because you don't need to know if you are in a section, subsection, \ldots, you just go up or go down a level.
+\item {It's more abstract. You don't need to take any decision about
+the class of the document ( article, report, letter, miarticle, \ldots), this is done when you filter the tex source through sectioner.py.
+This , somehow, follows the true spirit of \TeX:
+\begin{quote}
+To pay attention to logical design.
+\end{quote}
+\item { It allows a greater structuration and modularity of \LaTeX code, see details below~\ref{structure_of_sectioner}. }}
+\item { You are still compatible with \LaTeX, because you can flatten
+your sources of sectioner-\LaTeX into pure \LaTeX (using sectioner.py), and nobody would
+never know you used it. }
+\end{itemize}
+
+And this is an utility written in python.
+\begin{verbatim}
+http://www.python.org
+\end{verbatim}
+
+I imagine that it could be written in \TeX { }but It's 8 times easier
+to use python. And what's more important \TeX{ }programmers have a
+model , if they want to do the translation. \\ Another point, the
+python code could be improved \ldots
+
+
+\section{ How to use it}
+
+\subsection{Using boxerer.py }
+Always use a ``from boxerer import * `` at the beginning of your
+python code.
+\subsubsection{Using the class 'included'}
+This piece of python code illustrates the full capabilities
+of included, basically, you can put lot of structured stuff in
+it, this is very good, when you program has got very rich in
+terms of modularity and information.
+This code
+\begin{verbatim}
+r0 = ("men\\_prin.py",None,"Here it's the main menu is defined")
+r1 = ("Graphic representation", [("tkinter.py",None,
+ "Main calling module"),r0],
+ "Graphic interfases with the user, mainly")
+r2 = ("Structures of the languages(grammar)", None)
+r3 = ("Configuration", [("Database of words",None),
+ ("Labels",None)])
+i = included(("Lritaunas Peki",[r1,r2,r3],
+ " This programm aims to teach \
+vocabulary and grammar of different languages."))
+f = open("result.tex","w")
+i.genera(f)
+f.close()
+\end{verbatim}
+generates this:
+\input{result.tex}
+
+As you notice, what it generates is \LaTeX code, it can be included
+in a figure, or not, as you please.
+
+\subsubsection{Using the class 'inputoutputfunction'}
+This piece of python code illustrates the full capabilities
+of inputoutputfunction, basically, you say what are inputs,
+what are outputs, and what are functions and that's all. The generated code can be inserted directly or it can be put in a figure.
+If it's included directly ,then it's a good idea to insert
+a \verb|\newline| after and before the \verb|\input| command, otherwise,
+it can be messed with the text below it.
+This code
+\begin{verbatim}
+example2=inputoutputfunction('taxman',
+"This is your best friend, who helps you when you earn too much")
+example2.do_inputs(["Your income","Your properties","The Law"])
+example2.do_outputs(["Your taxes","Your fines",
+ "Historical information"])
+example2.do_functions(["Compute your taxes","Check your lies",
+ "Send you to prison","Bribery"])
+example2.generate_latex_code("result2.tex",200)
+\end{verbatim}
+generates fig~\ref{fig:input1}
+
+\begin{figure}
+\caption{Input-output-function figure}
+\label{fig:input1}
+\input{result2.tex}
+\end{figure}
+
+When you don't want to put its outputs(for example) then you
+got a figure as fig~\ref{fig:input2}
+\begin{figure}
+\caption{Input-output-function figure, without outputs}
+\label{fig:input2}
+\center{
+\input{result3.tex}}
+\end{figure}
+
+Besides, if you put
+\begin{verbatim}
+example2=inputoutputfunction('taxman',
+"This is your best friend, who helps you when you earn too much",
+'es')
+\end{verbatim}
+,then it generates the labels in Spanish.
+
+\subsection{Using sectioner.py}
+This program is a small revolution in the \LaTeX--world, I think.
+Let's take a look at a sectioner-\LaTeX\ code:
+\\
+\begin{minipage}[l]{300 pt }
+\small
+\begin{verbatim}
+\documentclass[10pt]{miarticle}
+\begin{document}
+\n
+Lritaunas Peki Documentation
+Lritaunas Peki is a programm for learning languages.
+
+\+
+Structure of the Code
+
+\+
+Graphic user interfaces
+\+
+Ideas
+Basically, you must think about it as a nested layers of metawidgets.
+So we can reuse the code.
+\n
+Python mega widgets
+This is a nice library of megawidgets, that supports scrollbars,
+multiple entries, dialogs...
+\+
+My meta widgets.
+Trying to isolate GUI from tk and from Pmw(python megawidgets) I
+wrote a higher set of widgets.
+
+\+
+Specialized metawidgets
+This widgets are those really used in the GUI, they're composites
+of my meta widgets, and they make calls to the structures of
+the core code~\ref{lookupindictionaries}
+
+
+\-2
+\n
+What you really see in your screen
+Blah, blah
+
+\-2
+
+
+/minput{strucincode.tex}
+
+\n
+And yeah more blah
+Blah , and blah
+
+\end{document}
+\end{verbatim}
+\end{minipage}
+\\
+Well, as you notice, \verb|\sections| have been replaced by \verb|\n,\+ or \-|.
+The line below a \verb|\n,\+ or \-| is the title of the (sub)section
+or whatever. There's no binding with the style of the document,
+if you replace miarticle by report, then the sectioning of report
+style will be used. The only thing you musn't forget is that the title of it {\large CAN BE ONLY IN THE NEXT LINE TO THE \verb|\n,\+ or \-|}.
+
+The \verb|\+2 or \-3 | things say you go two levels up or down.
+And the \verb|\n| stays at the same level.
+
+And the last thing is \verb|/minput{strucincode.tex}| , this includes
+more code in sectioner--\LaTeX style. As a matter of fact, all this
+story about sectioner is that it's better for modularity, look at
+this:
+\\
+\begin{minipage}[l]{300 pt }
+\small
+\begin{verbatim}
+\n
+Structures used
+
+\+
+Dictionaries
+\+
+Functions
+\+
+Lookups
+\label{lookupindictionaries}
+This is probably one of the most used flavors.. blah, blah
+
+\-3
+
+\end{verbatim}
+\end{minipage}
+\\
+As you may notice , \verb|\-3| makes that all that module is
+encapsulated, in terms of sectioning. Depending where you include
+it , you got sections, subsubsections, or paragraphs, or whatever.
+And you can use labels, because, sectioner is just a filter,
+when it finishes its work, you got pure \LaTeX, code. Of course
+you can nest to the level you want ( if your style allows it).
+\label{structure_of_sectioner}
+
+\subsubsection{ How to call to sectioner.py}
+\begin{verbatim}
+python sectioner.py method inputfile outputfile
+\end{verbatim}
+method can be: manolo ( for miarticle.cls), article or report.
+inputfile would be highnest.tex in this case, and outputfile whatever
+you want.
+As a example lets take a look at the output ( I wrote o.tex as outputfile):
+\\
+\begin{minipage}[l]{300 pt }
+\small
+\begin{verbatim}
+\documentclass[10pt]{miarticle}
+\begin{document}
+\part{Lritaunas Peki Documentation}
+Lritaunas Peki is a programm for learning languages.
+
+\section{Structure of the Code}
+
+\subsection{Graphic user interfaces}
+\subsubsection{Ideas}
+Basically, you must think about it as a nested layers of metawidgets.
+So we can reuse the code.
+\subsubsection{Python mega widgets}
+This is a nice library of megawidgets, that supports scrollbars,
+multiple entries, dialogs...
+\sssection{My meta widgets.}
+Trying to isolate GUI from tk and from Pmw(python megawidgets) I
+wrote a higher set of widgets.
+
+\ssssection{Specialized metawidgets}
+This widgets are those really used in the GUI, they're composites
+of my meta widgets, and they make calls to the structures of
+the core code~\ref{lookupindictionaries}
+
+
+\subsubsection{What you really see in your screen}
+Blah, blah
+
+
+
+\section{Structures used}
+
+\subsection{Dictionaries}
+\subsubsection{Functions}
+\sssection{Lookups}
+\label{lookupindictionaries}
+This is probably one of the most used flavors.. blah, blah
+
+
+\section{And yeah more blah}
+Blah , and blah
+
+\end{document}
+\end{verbatim}
+\end{minipage}
+
+\subsubsection{About miarticle.cls}
+It's a good style when you require more than 7 levels of nesting.
+It has a small bug, it says some warning when compiling. Press Return
+twice and forget it.
+
+\subsection{Sources of help}
+Well, the best you can do is to take a look at the end of boxerer.py
+and sectioner.py
+where you can see how boxerer generates the draws and how sectioner filter.
+Secondly, you should take a look at the source of this document,
+that is: less textoolspro.tex
+
+The figures are included using a simple \verb|\input| command.
+
+
+\section{ Caveats and bugs}
+Boxerer has no bugs. Sectioner has no bugs, miarticle has that
+nasty warning about that number ( forget it). Even so, there'll
+be some bugs.
+
+\section{Bye bye}
+I hope this documentation helps you to use these utilities. It's not
+difficult and greatly profitable.
+And if you want to get similar drawings or improve some of them
+just take a look at the code, once you get accostumed to it , you'll
+find it quite logical.
+
+\end{document}