This extension provides filter that to add code from source files.
ℹ️ This filter is an alternative to the include-code-files by @quarto-ext with code-fold-ing capability. If you just want to add contents from another file and do not care about code-folding you probably want to use the former filter, which is simpler to use.
quarto add shafayetShafee/add-code-filesThis will install the extension under the _extensions subdirectory.
If you're using version control, you will want to check in this directory.
The filter recognizes Divs or code-chunk with the add-from attribute present. It swaps the content of the code block with contents from a file.
Here is how you add the filter to a quarto document,
---
title: "Quarto"
filters:
- add-code-files
---
Once adding the filter to the quarto document, use the add-from attribute in a Div containing a empty code-block. For example,
::: {add-from=hello-world.cpp}
```{.cpp}
```
:::
would add the codes from hello-world.cpp within that .cpp code block. And you need to use .cpp to get correct syntax highlighting for added c++ code. Run quarto pandoc --list-highlight-languages to get the list of languages for which syntax highlighting is supported.
You can also use the following options,
start-line,end-line: To add a specific range of lines.code-line-numbers: To enable source code line numbering.- dedent: using this you can have whitespaces removed on each line, where possible (non-whitespace character will not be removed even if they occur in the dedent area).
::: {add-from=hello-world.cpp start-line=1 end-line=8 code-line-numbers="true"}
```{.cpp}
```
:::
View the live demo of
You can also use the filename attribute to show a name of the file the added code is associated with. But the issue is, the attribute filename does not work with code-folding as intended for that code block. This filter provides another option code-filename which works with code-folding.
Therefore, use code-filename only when using code-fold: true, otherwise use filename (for non HTML format or for html format without code-fold: true)
code-filename only works with code-folding. For othercases, use filename
View a live demo of this issue