I have a content file:
~~~ cpp
{{% readfile file="/documents/sample.cpp" %}}
~~~
And the readfile shortcode as described in the docs.
This results in an empty <pre>
block (i.e., it appears the readfile is ignored completely). If I remove the surrounding ~~~
then the file is included as expected (but not in a code block, of course). If I move the ~~~
into the shortcode itself then the tildes are output verbatim (i.e., no markdown processing into a code block).
Is there a way to include an external file AND have it appear in a code block (that is preferrably syntax highlighted)?
1 Like
Maybe try backticks ```
instead of the tilde ~~~
? And no space between the backticks and the language declaration, e.g. ```cpp
. And <
as well as >
instead of %
.
See the example from the hugoDocs source:
```
{{< readfile file="/content/en/readfiles/testing.txt" >}}
```
(Please ignore the /*
and */
in the code example. It’s just not that simple to show a code block example within a code block.)
To show a fenced block with three backticks, surround it with a fence of four backticks.
```
{{< readfile file="/content/en/readfiles/testing.txt" >}}
```
Thanks for the suggestions. I tried them and a few others. Turns out the solution was to remove the cpp
tag and then it works as expected. My guess is there’s a bug where reading the tag processes the rest of the code block content in a different way than normal.
Shortcode
{{< file "sample.cpp" >}} <!-- will get format from extension -->
{{< file "sample.style" "css" >}} <!-- will get format from 2nd parameter -->
2 Likes
Yes, that works. Thanks a lot.