The $args[0] inside of the quotes is printing as text and not the variable. How can I change this code to actually print the variable? The second $args[0] and $args[1] is working as expected.
If you want SugarCube to modify the contents of an attribute in an HTML element, then you have to use attribute directives. To do that, you basically stick an @ in front of the attribute name, and then you treat the contents of the quoted attribute value as code to be evaluated.
And that sets the src attribute to whatever this code evaluates to: 'img/' + $args[0] + '/p.png' . For example, if $args[0] was set to “Anne”, then it will act like it’s this: src="img/Anne/p.png"
Edit: Oops, too late. Well, I can’t delete the post, so I’ll just leave my answer here.
If you want to use the value of a variable inside of an HTML attribute, you’ll need to use the @ operator. When this is put before the name of an attribute, it tells SugarCube to treat whatever is inside the quotes like an expression, which it evaluates to get the actual value of the attribute. So, your src attribute should look like this:
@src="'img/' + $args[0] + '/p.png'"
So, you’ll treat it as if you are building a string using variables, except that all of it will need to be enclosed in double-quotes, so it’s best to use single-quotes (’) around the bits that are plain text. Do this for any attribute which you want determined by the value of a variable.