# String interpolation in docstring

**URL:** <https://discourse.julialang.org/t/string-interpolation-in-docstring/48371>\
**Category:** New to Julia\
**Tags:** question, string-interpolation\
**Created:** [October 14, 2020, 2:59pm UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371 "2020-10-14T14:59:12Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 14, 2020, 2:59pm UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/1 "2020-10-14T14:59:12Z")

</div>

Hey community 🙂

That’s probably a quick question. I’m writing docstrings and want to show an little example like

```julia
"""
    f(s::String)::Nothing
# Example
for i in 1:10
    f("i = $i")
end
"""
function f(s::String)
    println(s)
end

```

But I can’t compile it because `i` is not known. Is there a easy fix?

---

<div class="post-metadata">

**Author:** ![citkane](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/citkane/32/17595_2.png) [@citkane](https://discourse.julialang.org/u/citkane)\
**Post date:** [October 14, 2020, 4:01pm UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/2 "2020-10-14T16:01:56Z")

</div>

Easy fix:

````julia
"""
    f(s::String)::Nothing
# Example
```julia
for i in 1:10
    f("i = $1")
end
\```
"""
function f(s::String)
    println(s)
end

````

Note that added an extraneous escape `\` just after `end` so that the markup here will render.

This will only render your example, and not try to run it in the documentation context.

---

<div class="post-metadata">

**Author:** ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)\
**Post date:** [October 14, 2020, 4:09pm UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/3 "2020-10-14T16:09:46Z")

</div>

The problem is that you want the `$` to show up in the docs rather than perform interpolation? If so use `\$` like this

````julia
"""
    f(s::String)::Nothing
# Example
```julia
for i in 1:10
    f("i = \$i")
end
```
"""
function f(s::String)
    println(s)
end

````

---

<div class="post-metadata">

**Author:** ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)\
**Post date:** [October 14, 2020, 6:33pm UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/4 "2020-10-14T18:33:27Z")

</div>

An alternative is to use a raw string literal, but then you need to explicitly call `@doc`:

````julia
@doc raw"""
    f(s::String)::Nothing
# Example
```julia
for i in 1:10
    f("i = $1")
end
```
"""
function f(s::String)
    println(s)
end

````

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 15, 2020, 8:50am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/5 "2020-10-15T08:50:20Z")

</div>

> [@citkane](#):
>
> ````julia
> """
> f(s::String)::Nothing
> # Example
> ```julia
> for i in 1:10
> f("i = $1")
> end
> \```
> """
> function f(s::String)
> println(s)
> end
> 
> ````

That doesn’t work for me. Why is the `\` at the end?

````julia
julia> """
           f(s::String)::Nothing
           # Example
       ```julia
       for i in 1:10
           f("i = $1")
ERROR: syntax: invalid interpolation syntax: "$1"
Stacktrace:
 [1] top-level scope at none:0

julia> end
ERROR: syntax: unexpected "end"
Stacktrace:
 [1] top-level scope at none:0

julia> \```
ERROR: syntax: "\" is not a unary operator
Stacktrace:
 [1] top-level scope at none:0

julia> """
       function f(s::String)
           println(s)
       end

````

---

<div class="post-metadata">

**Author:** ![citkane](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/citkane/32/17595_2.png) [@citkane](https://discourse.julialang.org/u/citkane)\
**Post date:** [October 15, 2020, 8:52am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/6 "2020-10-15T08:52:56Z")

</div>

> [@Impressium](#):
>
> That doesn’t work for me. Why is the `\` at the end?

Just delete the `\` in your code. I put it there because the markdown wasn’t rendering on this forum for me with a nested ```

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 15, 2020, 9:02am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/7 "2020-10-15T09:02:41Z")

</div>

Oh now I see. But it still won’t work for me… Have you tried it in a file?

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 15, 2020, 9:07am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/8 "2020-10-15T09:07:25Z")

</div>

That works as well 👍

---

<div class="post-metadata">

**Author:** ![citkane](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/citkane/32/17595_2.png) [@citkane](https://discourse.julialang.org/u/citkane)\
**Post date:** [October 15, 2020, 9:07am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/9 "2020-10-15T09:07:58Z")

</div>

[https://docs.julialang.org/en/v1/manual/documentation/](https://docs.julialang.org/en/v1/manual/documentation/)

Docstrings are meant to be used in files, not sure if trying it in REPL is going to work. Try the exact syntax in the Julia manual. Works for me.

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 15, 2020, 9:08am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/10 "2020-10-15T09:08:32Z")

</div>

That works as well 👍  
thy

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [October 15, 2020, 9:11am UTC](https://discourse.julialang.org/t/string-interpolation-in-docstring/48371/11 "2020-10-15T09:11:57Z")

</div>

But the problem is the `$`. It tries to use `$i`…
