私はテーブルを使用します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
の型は「文字列」ですが、ここでは変数ですか?
ここで、構文をもう一度簡略化しようと試みa = z.a
b=z.b
ap = z[ap]
c_a = z.c_a
、bp = z.bp
成功しました。同じテーブルを指しているので、これは論理的であると思われます。
iso
-- 2 番目の質問:すべての等式を一度に取得するような 1 つの関数を使用したいと思います。
私は次のようなことを試しました:
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
このサイトは、質問ごとに 1 つの質問で最もうまく機能します :-) しかし、私が考える主な混乱点をピックアップすると、
bp = z.bp
の間には関係がありませんbp
。最初は変数 bp ですが、z.bp
の糖衣構文なのでz["bp"]
、キー を持つテーブル エントリにアクセスしますbp
。
"a'" = z["a'"] is not possible
文字列リテラルには何も代入できないので、=
c_aのようなものを表示するには$$を使う必要があることがわかりました
それを数式の下付き文字として表示したい場合のみです。ここではc_a
変数名としてのみ必要なので、\texttt{\detokenize{c_a}}
または同様のものを使用します。
2 番目の質問: iso のような 1 つの関数を使用して、すべての等式を一度に取得したいと思います。
ここで何を望んでいるのか分かりませんでした。