Lua 테이블의 키 구문에 문제가 있습니다.

Lua 테이블의 키 구문에 문제가 있습니다.

나는 테이블을 사용합니다 z={}. 키는 점의 이름이고 값은 예제 좌표에 있습니다.

예: z.a = {0,1}나는 이 표기법을 선호합니다 z[a]. 결국 키가 TikZ에서 좌표 이름이 될 것이라는 점을 알고 구문을 최대한 단순하게 유지하려고 노력합니다.

그래서 z.O_0 = {0,0}잠시 후를 제외하고는 잠시 동안 아무런 문제도 테스트하지 않았습니다.

그런 다음 Tikz를 사용하면 a'. 문서를 읽은 후 설탕 구문을 .와 함께 사용할 수 없다는 것을 깨달았고 z["a'"]. 이것은 정확하지만 쓰기가 고통스럽습니다. 새로운 테스트 ap = "a'"와 예상대로 z[ap]받아들여졌지만 놀라움 z.ap도 있었습니다.

-- 첫 번째 질문: 왜 z.ap받아들여지나요? ap"string" 유형이 있지만 여기서는 변수입니까?

이제 구문을 다시 단순화하기 위해 시도했고 a = z.a b=z.b ap = z[ap] c_a = z.c_a성공 bp = z.bp했습니다. 이는 동일한 테이블을 가리키기 때문에 논리적으로 보입니다.

iso-- 두 번째 질문: 한 번에 모든 평등을 얻는 것과 같은 하나의 기능을 사용하고 싶습니다 .

나는 다음과 같은 것을 시도했습니다 :

for k,v in pairs(z) do
   k = ...
end

하지만 해결책을 찾지 못했습니다.

좌표 저장을 테스트하고 싶었을 때의 마지막 문제입니다. 코드가 TikZ 코드에 삽입되었기 때문에 이전에는 이 문제를 볼 수 없었지만 이 경우 _좌표 또는 노드 이름에 사용할 수 있습니다. 질문을 하기 위해 코드를 단순화할 때 다음과 $$같은 것을 표시하는 데 사용해야 한다는 것을 알았지 만 c_a이제는 .$$tex.print

z.c_a=nil그걸 루프에서 꺼내곤 했어

-- 마지막 질문: for loop. \\_이전처럼 사용할 수 없습니다 .

\documentclass{article}
\usepackage{luacode}

\begin{document}
\parindent = 0pt
\begin{luacode}
tp=tex.print
z = {}
z.a = {5,2}
z.b = {3,-2}
z.c_a = {3,2}

ap = "a'"
bp = "b'"

tex.print("type of ap is :".. type(ap)) -- > string
tex.print('\\\\')

z[ap] = {99,0}   -- z."a'" = {1,1} -- > error it's ok
z.bp = {66,55} -- 
tex.print("x coordinate for z[ap] is ".. z[ap][1])
tex.print('\\\\')
tex.print("x coordinate for z.bp= \\{66,0\\} is ".. "z.bp[1] = " ..z.bp[1])
tex.print('\\\\')


bp = z.bp --  but  "a'" = z["a'"] is not possible
--tex.print(" ap works like :" .. z[ap][1])
tex.print('\\\\')

tp("Sugar syntax : a=z.a b=z.b ap =z[ap] bp=z.bp")
a=z.a
b=z.b
bp = z.bp
ap = z[ap]
c_a = z.c_a

tex.print('\\\\')
tp("Test with sugar syntax :"..'\\\\')
tp("y coordinate for a[2] is ".. "a[2]= "..a[2]) 
tp('\\\\')
tp("y coordinate for ap[2] is ".. "ap[2]= "..ap[2])
tp('\\\\')
tp("y coordinate with bp[2]= "..bp[2]) 
tp('\\\\')
tp("y coordinate with c\\_a[1]= "..c_a[1]) 
tp('\\\\')

tex.print("The stored coordinates are : "..'\\\\')
z.c_a = nil. -- when `k=c_a` $$ are required but `$k$`does not work
for k,v in pairs(z) do
   tp(k) tp(tostring(" represents :")) tp(tostring("(" .. v[1]..","..v[2]..")"))
  tex.print('\\\\')
end     
\end{luacode}
\end{document}

여기에 이미지 설명을 입력하세요

답변1

이 사이트는 질문 당 하나의 질문으로 가장 잘 작동합니다.:-) 그러나 제가 생각하는 것을 고르는 것이 주요 혼란입니다.

bp = z.bp

사이에는 아무런 관계가 없습니다 bp. 첫 번째는 bp 변수이지만 key 를 사용하여 테이블 항목에 액세스하는 z.bp구문 설탕입니다 .z["bp"]bp

"a'" = z["a'"] is not possible

문자열 리터럴에는 아무 것도 할당할 수 없으므로 뒤에 무엇을 넣는지는 중요하지 않습니다.=

c_a와 같은 것을 표시하려면 $$를 사용해야 한다는 것을 알았습니다.

수학 첨자로 표시하려는 경우에만 가능합니다. 여기서는 c_a변수 이름으로 사용하기를 원하므로 \texttt{\detokenize{c_a}}또는 유사하게 사용하십시오.

두 번째 질문: iso와 같은 하나의 함수를 사용하여 모든 동등성을 한 번에 얻고 싶습니다.

나는 당신이 여기서 원하는 것을 볼 수 없었습니다.

관련 정보