I want to display a text box which acts as a counter in an animation. I followed the tutorial here, but the text I want to display consists of an integer and a really small number (which is visually better displayed using scientific notation with fixed decimal places with `@sprintf`

).

The following works:

```
iter_idx = Observable(1)
text_str = @lift("iteration : $($iter_idx-1)\ncost function : $(trace_J[$iter_idx])")
text!(ax1, Point2f(0, 0), text=text_str, align=(:left, :top))
```

but then the value of cost function displayed will have fluctuating number of digits and switch between floating point numbers and scientific notation for display.

I tried the following

```
text_str = @lift(@sprintf("iteration : %.0f\ncost function : %.3e",$iter_idx, $(trace_J[$iter_idx])))
```

but I get the error

```
ERROR: syntax: "$" expression outside quote around ...
```

I also tried

```
current_iter = @lift($iter_idx-1)
current_J = @lift(trace_J[$iter_idx])
text_str = @sprintf("iteration : %.0f\ncost function : %.3e", current_iter, current_J)
```

which gives the error

```
ERROR: MethodError: no method matching Float64(::Observable{Int64})
Closest candidates are:
(::Type{T})(::AbstractChar) where T<:Union{AbstractChar, Number} at char.jl:50
(::Type{T})(::Base.TwicePrecision) where T<:Number at twiceprecision.jl:266
(::Type{T})(::Complex) where T<:Real at complex.jl:44
```

So whatâ€™s the proper way to handle this where I want string formatting for a text which is being updated at each frame of the animation?