# How do you assign (different) LaTex names to elements of a list?

Say I have the following list of variables.

v = {(i,j): var("v_{}{}".format(i, j), latex_name="v_{{}{}}") for i in range(2) for j in range(2)}


How do I make it so that when I use the

show(v[0,0])


command, I get $v_{0,0}$ as output? I've tried stuff like

v = {(i,j): var("v_{}{}".format(i, j), latex_name="v_{i,j}") for i in range(2) for j in range(2)}


and

v = {(i,j): var("v_{}{}".format(i, j), latex_name="v_{{i}{j}}") for i in range(2) for j in range(2)}


but it only ever give me stuff like $v_{i,j}$ where it's just the literal symbols $i$ and $j$, not the entries of

v[k,m]


for some $k$ and $m$ I plug in, like 0, 0.

edit retag close merge delete

Sort by » oldest newest most voted

You sould use double the braces as follows:

v = {(i,j): var("v_{}{}".format(i, j), latex_name="v_{{{}{}}}".format(i, j)) for i in range(2) for j in range(2)}

more

Thank you!

( 2021-06-16 22:22:47 +0200 )edit

I have a bit of a follow-up, lets say I want the latex name to have a bar over it for conjugation, like $\bar{v}$. My naive guess of

v = {(i,j): var("v_{}{}".format(i, j), latex_name="\bar{v}_{{{}{}}}".format(i, j)) for i in range(2) for j in range(2)}


doesn't seem to work. Any suggestions?

( 2021-06-17 05:27:03 +0200 )edit

Idem, use double braces around v.

( 2021-06-17 09:02:03 +0200 )edit