Eu uso uma tabela z={}
: as chaves são nomes de pontos e os valores estão nas minhas coordenadas de exemplo.
Exemplo: z.a = {0,1}
prefiro esta notação a essa z[a]
. Tento manter a sintaxe o mais simples possível sabendo que no final as chaves se tornarão nomes de coordenadas no TikZ.
Portanto, não testei z.O_0 = {0,0}
nenhum problema no momento, exceto um pouco mais tarde.
Então com o Tikz é possível usar arquivos a'
. Depois de ler a documentação, percebi que não poderia usar a sintaxe do sugar com o .
, também testei z["a'"]
. Isso é correto, mas doloroso de escrever. Novo teste ap = "a'"
e como eu esperava z[ap]
é aceito mas surpresa z.ap
também.
- Primeira pergunta: Por que é z.ap
aceito? ap
tem tipo "string" mas aqui é uma variável?
Agora para simplificar a sintaxe novamente tentei a = z.a
b=z.b
ap = z[ap]
c_a = z.c_a
e bp = z.bp
com sucesso. Isso parece lógico porque aponta para a mesma tabela.
- Segunda pergunta: eu gostaria de usar uma função para iso
obter todas as igualdades de uma vez.
Eu tentei algo como:
for k,v in pairs(z) do
k = ...
end
mas não encontrei uma solução.
Último problema quando quis testar o armazenamento das coordenadas. Não vi esse problema antes porque o código foi injetado no código TikZ, mas neste caso você pode usar _
nos nomes das coordenadas ou dos nós. Ao simplificar o código para fazer minha pergunta vi que tinha que usar $$
para exibir algo parecido c_a
mas agora estou com um problema para usar $$
no tex.print
.
Eu costumava z.c_a=nil
tirá-lo do circuito
- Última pergunta: como imprimir todas as chaves do arquivo for loop
. Não posso usar \\_
como 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}
Responder1
O site funciona melhor com uma pergunta por pergunta :-) Mas para destacar o que considero ser a principal confusão;
bp = z.bp
Não há relação entre o bp
. A primeira é a variável bp, mas z.bp
é um açúcar sintático, pois z["bp"]
acessa a entrada da tabela com key bp
.
"a'" = z["a'"] is not possible
Você não pode atribuir nada a uma string literal, então não importa o que você coloque depois do=
Vi que precisava usar $$ para exibir algo como c_a
Somente se você quiser exibir isso como um subscrito matemático. Aqui você quer apenas c_a
um nome de variável, então use \texttt{\detokenize{c_a}}
ou similar.
Segunda pergunta: gostaria de usar uma função como iso para obter todas as igualdades de uma vez.
Não consegui ver o que você queria aqui.