Ich verwende eine Tabelle z={}
: Die Schlüssel sind Namen von Punkten und die Werte liegen in meinen Beispielkoordinaten.
Beispiel: z.a = {0,1}
Ich bevorzuge diese Notation gegenüber der anderen z[a]
. Ich versuche, die Syntax so einfach wie möglich zu halten, da ich weiß, dass die Schlüssel letztendlich zu Koordinatennamen in TikZ werden.
Ich habe also z.O_0 = {0,0}
im Moment kein Problem beim Testen festgestellt, außer etwas später.
Dann ist es mit Tikz möglich, zu verwenden a'
. Nachdem ich die Dokumentation gelesen hatte, wurde mir klar, dass ich die Sugar-Syntax nicht mit verwenden konnte .
, außerdem habe ich getestet z["a'"]
. Das ist richtig, aber mühsam zu schreiben. Neuer Test ap = "a'"
und wie erwartet z[ap]
wird es akzeptiert, aber z.ap
auch Überraschung.
- Erste Frage: Warum wird es z.ap
akzeptiert? ap
Es hat den Typ „String“, ist hier aber eine Variable?
Nun habe ich versucht, die Syntax noch einmal zu vereinfachen, a = z.a
b=z.b
ap = z[ap]
c_a = z.c_a
und bp = z.bp
das mit Erfolg. Das erscheint logisch, da es auf dieselbe Tabelle verweist.
- Zweite Frage: Ich möchte eine Funktion verwenden, um iso
alle Gleichungen auf einmal zu erhalten.
Ich habe so etwas versucht:
for k,v in pairs(z) do
k = ...
end
aber ich habe keine Lösung gefunden.
Letztes Problem, als ich die Speicherung der Koordinaten testen wollte. Ich habe dieses Problem vorher nicht gesehen, weil der Code in TikZ-Code eingefügt wurde, aber in diesem Fall können Sie _
die Koordinaten- oder Knotennamen verwenden. Als ich den Code vereinfachte, um meine Frage zu stellen, sah ich, dass ich verwenden musste, $$
um etwas wie anzuzeigen, c_a
aber jetzt habe ich ein Problem mit der Verwendung $$
in tex.print
.
Früher habe ich z.c_a=nil
es aus der Schleife bekommen
- Letzte Frage: Wie drucke ich alle Schlüssel im for loop
? Ich kann es nicht mehr so verwenden \\_
wie vorher.
\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}
Antwort1
Die Site funktioniert am besten mit einer Frage pro Frage :-) Aber um das herauszupicken, was meiner Meinung nach die größte Verwirrung ausmacht:
bp = z.bp
Es besteht keine Beziehung zwischen den bp
. Die erste ist die Variable bp, z.bp
ist aber syntaktischer Zucker für , z["bp"]
greift also auf den Tabelleneintrag mit dem Schlüssel zu bp
.
"a'" = z["a'"] is not possible
Sie können einem Stringliteral nichts zuweisen, daher ist es egal, was Sie nach dem=
Ich sah, dass ich $$ verwenden musste, um etwas wie c_a anzuzeigen
Nur wenn du das als mathematischen Index anzeigen möchtest. Hier möchtest du einfach c_a
als Variablennamen, also verwende \texttt{\detokenize{c_a}}
oder ähnlich.
Zweite Frage: Ich möchte eine Funktion wie iso verwenden, um alle Gleichungen auf einmal zu erhalten.
Ich konnte nicht erkennen, was Sie hier wollten.