我想在 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}