환경은 MiKTeX 2.9, XeLaTeX, PythonTeX 0.11 베타 및 Python 3.3입니다. 저는 LaTeX와 Python/PythonTeX를 처음 접했고 다음 코드 부분으로 어려움을 겪고 있습니다.
%!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}
오류가 발생 \powww
하고 이유를 이해할 수 없습니다. 도움을 주시면 감사하겠습니다.
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
궁극적인 목표는 2개의 유니코드 문자열 세트를 PythonTeX를 통해 XeLaTeX 문서의 매개변수로 Python에 전달하는 것이지만, 저는 "간단하게 시작한 다음 단계별로 확장"하는 것을 선호합니다.
답변1
pycode 환경과 같은 PythonTeX 환경은 인라인으로 사용할 수 없습니다. 뒤에는 줄바꿈이 있어야 하며 \begin{pycode}
, 은 그 \end{pycode}
자체로 한 줄에 있어야 합니다. 또한, PythonTeX환경LaTeX 명령 내에서는 사용할 수 없습니다. 이러한 제한은 LaTeX가 환경에서 축어적(리터럴) 텍스트를 처리하는 방식 때문입니다(TeX의 catcode와 관련됨).
사용자 정의 명령을 만들고 싶다면 갈 길입니다 \py
. \pyc
더 복잡한 코드가 포함된 명령을 생성하려면 pycode 환경에서 함수를 정의하고 \py
또는 내에서 해당 함수를 호출해야 합니다 \pyc
.
추가 질문이 있는 경우 다음 페이지에 문의하세요.https://tex.stackexchange.com/.