在 latex for 循环中使用 python 变量或数组

在 latex for 循环中使用 python 变量或数组

我想在 latex for 循环中访问数组的第 '\j' 个元素。

语法错误:行继续符后出现意外字符


\usepackage[top=4cm,right=2.5cm,left=3cm,bottom=2.5cm]{geometry}
\usepackage{pgffor}
\usepackage{pythontex}
\usepackage{pdfsync}

\begin{document}

\begin{pycode}

from numpy import *

a=7

array=[]

for i in range(0,a):
    array.append(i**2)

long=int(len(array))

\end{pycode}

\begin{center}

    \begin{pysub}
        \foreach \j in {0,...,!{long-1}}
        { 
            \( \py{array[\j]} \) \par   
        }
    \end{pysub}

\end{center}

\end{document}

我想在 latex for 循环中访问数组的第 '\j' 个元素。

答案1

在我看来,这是不可能的, !{array[3]}例如我们可以用 访问,但不能用 访问\j

我们可以在 中准备循环python

\documentclass{article}
\usepackage[top=4cm,right=2.5cm,left=3cm,bottom=2.5cm]{geometry}
\usepackage{pgffor}
\usepackage{pythontex}
% \usepackage{pdfsync}

\begin{document}

\begin{pycode}
from numpy import *
a=7
array=[]
tab=''
for i in range(0,a):
    array.append(i**2)
#long=int(len(array))
    tab=tab+str(array[i])+r"\par"
\end{pycode}

\begin{pysub}
    !{tab}
    % !{array[0]}
    % !{array[1]}
    % !{array[2]}
    % !{array[3]}
    % !{array[4]}
    % !{array[5]}
    % !{array[6]}
\end{pysub}

% \end{center}

\end{document}

在此处输入图片描述

注意,可以直接在 中操作来获得相同的表格latex。如果您有兴趣,这里有一个教程https://www.alanshawn.com/latex3-tutorial/interface3文档

\documentclass{article}
\usepackage[top=4cm,right=2.5cm,left=3cm,bottom=2.5cm]{geometry}
\usepackage{pgffor}
\ExplSyntaxOn
\int_new:N \llengthint %<-- your a in python

\NewDocumentCommand{\settab}{ m }%<-- to fill the table
    {
        \int_set:Nn \llengthint { #1 }%<- #1 is th paramter 
        \intarray_new:Nn \g_python_intarray { #1 }
        \int_step_inline:nn {#1}%<-- loop 
            {
                \intarray_gset:Nnn \g_python_intarray {##1} { ##1*##1 }% ##1 is the \j in a loop python
            }
    }
% \NewDocumentCommand{\looptab}{ O{1} m }
%     {
%         \int_step_inline:nnn {#1} {#2}
%             {
%                 \intarray_item:Nn \g_python_intarray {##1}\par
%             }
%     }
\NewDocumentCommand{\getitem}{ m }
    {
        \intarray_item:Nn \g_python_intarray {#1}
    }
\ExplSyntaxOff
\begin{document}

\settab{7}%<-- to fill the table 

% \looptab[4]{7}

% \looptab{5}

\foreach \j in {1,...,\llengthint}
        { 
            \( \getitem{\j} \) \par   
        }
\end{document}

相关内容