\nuevocomando con PythonTeX PyCode

\nuevocomando con PythonTeX PyCode

Los entornos son MiKTeX 2.9, XeLaTeX, PythonTeX 0.11 beta y Python 3.3. Soy bastante nuevo en LaTeX y Python/PythonTeX y tengo problemas con el siguiente código.

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8
\documentclass{article}
\usepackage{fontspec,xunicode,xltxtra}
\usepackage{fancyvrb}
\usepackage{etex}
\usepackage{etoolbox}
\usepackage{xstring}
\usepackage{pgfopts}
\usepackage{newfloat}
\usepackage{xcolor}
\usepackage{pythontex}

\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\newcommand{\pow}[2]{\py{#1**#2}}
\newcommand{\poww}[2]{\pyc{print(#1**#2)}}
\newcommand{\powww}[2]{\begin{pycode}print(#1**#2) \end{pycode}}

\begin{document}
\pow{2}{5}      % success
\poww{2}{6}     % success
\powww{2}{7}    % fail
\end{document}

Recibo un error \powwwy no puedo entender por qué. Cualquier ayuda se agradece.

Extraneous input `print(2**7) \end {pycode}^^I% fail' between \begin{pycode}[
<key=value>] and line end
.
\FV@Error ...ncyVerb Error:^^J\space \space #1^^J}

l.28 \powww{2}{7}^^I% fail

El objetivo final es pasar conjuntos de 2 cadenas Unicode como parámetros del documento XeLaTeX a través de PythonTeX a Python, pero prefiero "comenzar de manera simple y luego expandirlo paso a paso".

Respuesta1

Los entornos PythonTeX, como el entorno pycode, no se pueden utilizar en línea. Debe haber un salto de línea después de \begin{pycode}, y el\end{pycode} también debe estar en una línea sola. Además, PythonTeXentornosno se puede utilizar dentro de los comandos LaTeX. Esta limitación se debe a la forma en que LaTeX trata el texto palabra por palabra (literal) en los entornos (está relacionado con los catcodes de TeX).

Si desea crear comandos personalizados, \pyeste \pyces el camino a seguir. Si desea crear un comando que involucre código más complejo, entonces probablemente debería definir una función en un entorno pycode y llamar a esa función dentro de \pyo \pyc.

Si tiene preguntas adicionales, puede hacerlas enhttps://tex.stackexchange.com/.

información relacionada