Problema con la sintaxis de las claves en la tabla lua

Problema con la sintaxis de las claves en la tabla lua

Utilizo una tabla z={}: las claves son nombres de puntos y los valores están en las coordenadas de mi ejemplo.

Ejemplo: z.a = {0,1}prefiero esta notación a la z[a]. Intento mantener la sintaxis lo más simple posible sabiendo que al final las claves se convertirán en nombres de coordenadas en TikZ.

Así que no probé z.O_0 = {0,0}ningún problema por el momento excepto un poco más tarde.

Luego con Tikz es posible utilizar a'. Después de leer la documentación, me di cuenta de que no podía usar la sintaxis de azúcar con ., también lo probé z["a'"]. Esto es correcto pero doloroso de escribir. Nueva prueba ap = "a'"y como esperaba z[ap]se acepta pero sorpresa z.aptambién.

-- Primera pregunta: ¿Por qué se z.apacepta? aptiene tipo "cadena" pero aquí es una variable?

Ahora, para simplificar la sintaxis nuevamente, lo intenté a = z.a b=z.b ap = z[ap] c_a = z.c_ay bp = z.bpcon éxito. Esto parece lógico porque apunta a la misma tabla.

-- Segunda pregunta: Me gustaría utilizar una función para isoobtener todas las igualdades a la vez.

Intenté algo como:

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

pero no he encontrado una solución.

Último problema cuando quería probar el almacenamiento de las coordenadas. No vi este problema antes porque el código se inyectó en el código TikZ, pero en este caso se puede usar _en las coordenadas o en los nombres de los nodos. Al simplificar el código para hacer mi pregunta vi que tenía que usar $$para mostrar algo como c_apero ahora tengo un problema para $$usarlo tex.print.

Solía z.c_a=nil​​sacarlo del circuito.

- Última pregunta: cómo imprimir todas las claves en el archivo for loop. No puedo usarlo \\_como lo hacía antes.

\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}

ingrese la descripción de la imagen aquí

Respuesta1

El sitio funciona mejor con una pregunta por pregunta :-) Pero para resaltar cuál creo que es la principal confusión;

bp = z.bp

No hay relación entre el bp. La primera es la variable bp, pero z.bpes azúcar sintáctica para z["bp"]acceder a la entrada de la tabla con la clave bp.

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

No puedes asignar nada a un literal de cadena, por lo que no importaría lo que pongas después del=

Vi que tenía que usar $$ para mostrar algo como c_a

Solo si desea mostrarlo como un subíndice matemático. Aquí solo lo desea c_acomo nombre de variable, así que use \texttt{\detokenize{c_a}}o similar.

Segunda pregunta: me gustaría utilizar una función como iso para obtener todas las igualdades a la vez.

No pude ver lo que querías aquí.

información relacionada