Created
March 14, 2011 12:43
-
-
Save astanin/869067 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| %% 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, ehmsen@imada.sdu.dk. | |
| %% Department of Mathematics and Computer Science, | |
| %% University of Southern Denmark, DK | |
| %% | |
| %% 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). | |
| % | |
| % \gdef\@prepython{} | |
| % \def\prepython#1{% | |
| % \gdef\@prepython{#1} | |
| % } | |
| % sed -e 's/^ //g' cluster.py | |
| % \immediate\write18{\@prepython\space\jobname.py > \ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment