Pythontex: intentando compilar un ejemplo que encontré en TeX

Pythontex: intentando compilar un ejemplo que encontré en TeX

Encontré un ejemplo simpleaquíRespondido por G. Poore pero no puedo hacerlo funcionar. La salida al pdf es

?? PythonTeX ??
?? PythonTeX ??

¿Qué me falta algo? A continuación encontrará los archivos .tex, .py, .pytxcodey mis .latexmkrcarchivos.

El test.texarchivo es:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[makestderr]{pythontex}

\newenvironment{pyconcodeblock}%
{\VerbatimEnvironment
  \begin{VerbatimOut}{test.py}}%
  {\end{VerbatimOut}%
  \pyconc{exec(compile(open('test.py', 'rb').read(), 'test.py', 'exec'))}%
  \inputpygments{python}{test.py}}

\begin{document}

\begin{pyconcodeblock}
import os
import sys
sys.path.append(os.getcwd())

def foo(x):
  return 2*x
\end{pyconcodeblock}

\begin{pyconsole}
x = 10
foo(x)
\end{pyconsole}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

DeHarvey Mudd, encontré la siguiente entrada para Latexmkla cual agregué:

$pdflatex='pdflatex --shell-escape -interaction=nonstopmode %O %S 
-file-line-error -synctex=1';

# This shows how to use the pythontex package with latexmk

#  This version has a fudge on the latex and pdflatex commands that
#  allows the pythontex custom dependency to work even when $out_dir
#  is used to set the output directory.  Without the fudge (done by
#  trickery symbolic links) the custom dependency for using pythontex
#  will not be detected.

add_cus_dep('pytxcode', 'tex', 0, 'pythontex');
sub pythontex {
# This subroutine is a fudge, because it from latexmk's point of
# view, it makes the main .tex file depend on the .pytxcode file.
# But it doesn't actually make the .tex file, but is used for its
# side effects in creating other files.  The dependence is a way
# of triggering the rule to be run whenever the .pytxcode file
# changes, and to do this before running latex/pdflatex again.
return system("pythontex.py \"$_[0]\"") ;
}


$pdflatex = 'internal mylatex %R %Z pdflatex %O %S';
$latex = 'internal mylatex %R %Z latex %O %S';
sub mylatex {
my $root = shift;
my $dir_string = shift;
my $code = "$root.pytxcode";
my $result = "pythontex-files-$root";
if ($dir_string) {
warn "mylatex: Making symlinks to fool cus_dep creation\n";
unlink $code;
if (-l $result) {
unlink $result;
}
elsif (-d $result) {
unlink glob "$result/*";
rmdir $result;
}
symlink $dir_string.$code, $code;
if ( ! -e $dir_string.$result ) { mkdir $dir_string.$result; }
symlink $dir_string.$result, $result;
}
else {
foreach ($code, $result) { if (-l) { unlink; } }
}
return system @_;
}

El test.pyarchivo contiene:

import os
import sys
sys.path.append(os.getcwd())

def foo(x):                                                                     
  return 2*x  

que también probé sin import os, import sysy sys.path.append(os.getcwd()). Entonces el test.pytxcodecontiene:

=>PYTHONTEX#pycon#default#default#0#c#####22#
exec(compile(open('test.py', 'rb').read(), 'test.py', 'exec'))
=>PYTHONTEX#PYGpython#EXT:test.py#defaultverb#0#verbatim#####22#
=>PYTHONTEX#pycon#default#default#1#console#####24#
x = 10
foo(x)
=>PYTHONTEX:SETTINGS#
version=0.14
outputdir=pythontex-files-test
workingdir=.
workingdirset=false
gobble=none
rerun=default
hashdependencies=default
makestderr=true
stderrfilename=full
keeptemps=none
pyfuture=default
pyconfuture=none
pygments=true
pygglobal=:GLOBAL||
fvextfile=-1
pyconbanner=none
pyconfilename=stdin
depythontex=false
pygfamily=py|python|
pygfamily=pycon|pycon|
pygfamily=sympy|python|
pygfamily=sympycon|pycon|
pygfamily=pylab|python|
pygfamily=pylabcon|pycon|
pygfamily=PYGpython|python|

Respuesta1

Si PythonTeX da ?? PythonTeX ??o ??, es una indicación de que no se ha ejecutado, por lo que no se ha generado ningún contenido.

No .latexmkrcme funcionó en Windows. Tuve que cambiar la línea return system("pythontex.py \"$_[0]\"") ;según return system("pythontex \"$_[0]\"") ;la configuración de mi sistema. Después de eso, funcionó.

Si estás en Windows, eso puede solucionarlo. De lo contrario, deberá leer el latexmkresultado y ver por qué no se pudo ejecutar PythonTeX. De cualquier manera, algo no está del todo bien en el .latexmkrc.

información relacionada