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.ap
también.
-- Primera pregunta: ¿Por qué se z.ap
acepta? ap
tiene 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_a
y bp = z.bp
con éxito. Esto parece lógico porque apunta a la misma tabla.
-- Segunda pregunta: Me gustaría utilizar una función para iso
obtener 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_a
pero 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}
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.bp
es 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_a
como 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í.