summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/python
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-07-15 14:41:26 +0000
committerKarl Berry <karl@freefriends.org>2012-07-15 14:41:26 +0000
commita88eee4f63bd9cb82a7e71070f20fef1bc3d3bce (patch)
tree1cd5bcc95dcb939eba1c3076b0f82ec8bb9cee8d /Master/texmf-dist/tex/latex/python
parent80541a40bf4620d03027f5f89c159fb497a948a9 (diff)
new latex package python (12jun12)
git-svn-id: svn://tug.org/texlive/trunk@27064 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/python')
-rw-r--r--Master/texmf-dist/tex/latex/python/python.sty89
1 files changed, 89 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/python/python.sty b/Master/texmf-dist/tex/latex/python/python.sty
new file mode 100644
index 00000000000..2d08fdf6cd4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/python/python.sty
@@ -0,0 +1,89 @@
+%% This program is free software; you can redistribute it and/or
+%% modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation; either version 2
+%% of the License, or (at your option) any later version.
+%%
+%% This program 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. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%
+%% Author: Martin R. Ehmsen, martin@ehmsen.org.
+%%
+%% You can find an online copy of the GPL at
+%% http://www.gnu.org/copyleft/gpl.html .
+%%
+%% Note: shell-escape needs to be activated for this to work.
+%% This can either be done by passing -shell-escape as an option to
+%% latex or by adding/changing "shell_escape = t" in your texmf.cnf .
+
+%% 0.2 -> 0.21: Moved \newwrite\@module from \@writemodule and out, since
+%% no more than 15 \newwrites are allowed (and the previous version created a new
+%% every time \@writemodule was called.
+
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{python}[2007/06/07 v0.21 Python in LaTeX]
+
+\newwrite\@out
+\newwrite\@module
+
+\begingroup \catcode `|=0 \catcode `[=1
+\catcode`]=2 \catcode `\{=12 \catcode `\}=12
+\catcode`\\=12 |gdef|@xpython#1\end{python}[|immediate|write|@out[#1]|end[python]]
+|endgroup
+
+\def\python{\kernel@ifnextchar [{\@python}{\@python[]}}
+
+\def\@python[#1]{%
+\gdef\@pythoninclude{#1}
+\immediate\openout\@out=\jobname.py
+\newlinechar='15
+\begingroup \catcode`\^^M=12 %
+\let\do\@makeother\dospecials\obeyspaces%
+\@xpython}
+
+\def\endpython{%
+\endgroup
+\immediate\closeout\@out
+\@writemodule
+\immediate\write18{cat \@pythoninclude\space\jobname.py | python > \jobname.py.out 2> \jobname.py.err}
+\immediate\input\jobname.py.out}
+%\immediate\write{\begin{verbatim}}
+%\immediate\input\jobname.py.err
+%\immediate\write{\end{verbatim}}}
+
+\def\@writemodule{%
+\immediate\openout\@module=latex.py
+\immediate\write\@module{jobname="\jobname"}
+\immediate\closeout\@module}
+
+% BUGS:
+% 1. If anything gets send to stderr then it should be included
+% in \begin{verbatim}...\end{verbatim} to be properly displayed
+%
+% \immediate\write18{cat \@pythoninclude\space\jobname.py | python > \jobname.py.out 2>\jobname.py.err}
+%
+% 2. Watch out for indentation done by aucTeX in Emacs
+%
+% 3. Let the package accept a "final version" option, such
+% that the output of each python run is saved such that it can be
+% inserted into the document by hand
+% (conference, journals are not likely to compile with
+% shell_escape or have python).
+%
+% 4. Somehow cache the output for each \begin{python}...\end{python}
+% and reuse the cached version if it has not changed.
+% Perhaps dangerous if the included python script has changed
+% but we would check for that as well.
+%
+%
+% \gdef\@prepython{}
+% \def\prepython#1{%
+% \gdef\@prepython{#1}
+% }
+% sed -e 's/^ //g' cluster.py
+% \immediate\write18{\@prepython\space\jobname.py > \