# Displaying program generated markdown

**URL:** <https://discourse.julialang.org/t/displaying-program-generated-markdown/64997>\
**Category:** Pluto\
**Tags:** pluto-markdown\
**Created:** [July 20, 2021, 5:16pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997 "2021-07-20T17:16:10Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![grahamstark](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/grahamstark/32/5200_2.png) [@grahamstark](https://discourse.julialang.org/u/grahamstark)\
**Post date:** [July 20, 2021, 5:16pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/1 "2021-07-20T17:16:10Z")

</div>

Apologies if this is an obvious question…

I have a function that generates a big chunk of markdown with embedded newline characters. A simple version would be:

```julia

function makemd()
	md"# HELLO\n## Some\n	* list\n* list\n"	
end

```

That produces a string that `print`s correctly in the repl, but of course you can’t `print` to Pluto. So, how can I get the output to render nicely in Pluto, as when you simply type in a chunk of markdown? At present I just see the raw string, with the "\n"s embedded in it.

Graham

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [July 20, 2021, 6:41pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/2 "2021-07-20T18:41:08Z")

</div>

This works:

```julia
function makemd()
	md"""# HELLO
	## Some
	* list
	* list"""	
end

makemd()

```

Looks like the md macro automatically escapes `\n`.

---

<div class="post-metadata">

**Author:** ![grahamstark](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/grahamstark/32/5200_2.png) [@grahamstark](https://discourse.julialang.org/u/grahamstark)\
**Post date:** [July 20, 2021, 6:45pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/3 "2021-07-20T18:45:30Z")

</div>

Hi Lungbenm

Indeed that does work, but unfortunately it’s not possible for me to produce my markdown in that way: I’m actually producing quite big md tables line-by-line. Sorry if my example was misleading.

Graham

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [July 20, 2021, 6:50pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/4 "2021-07-20T18:50:44Z")

</div>

You can use `Markdown.parse`:

```julia
function makemd()
	Markdown.parse("# HELLO\n## Some\n	* list\n* list\n")
end

```

---

<div class="post-metadata">

**Author:** ![genkuroki](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/genkuroki/32/18030_2.png) [@genkuroki](https://discourse.julialang.org/u/genkuroki)\
**Post date:** [July 20, 2021, 7:10pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/5 "2021-07-20T19:10:08Z")

</div>

When `str` is a string of markdown code, `Markdown.parse(str)` and `@eval @md_str $str` work fine.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/5/6518ec412fc9fcdc6b4f957e5b605851ad834913.jpeg)

---

<div class="post-metadata">

**Author:** ![grahamstark](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/grahamstark/32/5200_2.png) [@grahamstark](https://discourse.julialang.org/u/grahamstark)\
**Post date:** [July 20, 2021, 8:36pm UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/6 "2021-07-20T20:36:20Z")

</div>

> [@genkuroki](#):
>
> `@eval @md_str $str`

That’s brilliant; worked perfectly. Many thanks, both.

Graham

---

<div class="post-metadata">

**Author:** ![Pol\_del\_Aguila\_Pla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pol_del_aguila_pla/32/207687_2.png) [@Pol\_del\_Aguila\_Pla](https://discourse.julialang.org/u/Pol_del_Aguila_Pla)\
**Post date:** [March 12, 2024, 10:58am UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/7 "2024-03-12T10:58:34Z")

</div>

Hello. Apologies if this has in some way made easier, but the accepted solution does not seem to work anymore. I’ll be most grateful for any help I can get.

My MWE:

```julia
begin
	str = "| a | b |\n"
	str *= "| - | - |\n"
	for ind in 1:10
		str *= "| $(ind) | $(2*ind) |\n"
	end
	@eval @md_str $str
end

```

and the output I get

 ![Screenshot from 2024-03-12 11-58-20](https://global.discourse-cdn.com/julialang/original/3X/f/f/ff2b3e9fa3c176c26b09f62a1f73f4a59ad7b62e.png)

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [March 12, 2024, 11:23am UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/8 "2024-03-12T11:23:15Z")

</div>

For some reason it seems that `Markdown.parse` requires at least three dashes (`---`) per column. Maybe file an issue to change that, or a PR to document this behavior…

---

<div class="post-metadata">

**Author:** ![Pol\_del\_Aguila\_Pla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pol_del_aguila_pla/32/207687_2.png) [@Pol\_del\_Aguila\_Pla](https://discourse.julialang.org/u/Pol_del_Aguila_Pla)\
**Post date:** [March 12, 2024, 11:31am UTC](https://discourse.julialang.org/t/displaying-program-generated-markdown/64997/9 "2024-03-12T11:31:14Z")

</div>

Thank you so much! That is amazing 🙂
