diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/textoolspro |
Initial commit
Diffstat (limited to 'support/textoolspro')
-rw-r--r-- | support/textoolspro/README.textoolspro | 40 | ||||
-rw-r--r-- | support/textoolspro/boxerer.py | 161 | ||||
-rw-r--r-- | support/textoolspro/highnest.tex | 46 | ||||
-rw-r--r-- | support/textoolspro/miarticle.cls | 837 | ||||
-rw-r--r-- | support/textoolspro/sectioner.py | 155 | ||||
-rw-r--r-- | support/textoolspro/strucincode.tex | 13 | ||||
-rw-r--r-- | support/textoolspro/textoolspro.pdf | bin | 0 -> 107173 bytes | |||
-rw-r--r-- | support/textoolspro/textoolspro.tex | 343 |
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 Binary files differnew file mode 100644 index 0000000000..fef059ddad --- /dev/null +++ b/support/textoolspro/textoolspro.pdf 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} |