Skip to content
Snippets Groups Projects
Select Git revision
  • 633e84b5a17d0c0bc1079843c13afb051e53b6be
  • main default protected
  • v1.0.0
3 results

pandoc-include-code-files

user avatar
Bruno BEAUFILS authored
633e84b5
History

Include code from source files in pandoc

Pandoc filter to include code from source files as code blocks.

The filter is largely inspired by pandoc-include-code written by Oskar WICKSTRÖM.

This repository exists thanks to the work of Albert KREWINKEL among other things in pandoc/lua-filters.

Lua filter for pandoc

Installing

The filter can be used without special installation, just by passing the include-code-files.lua file path to pandoc via --lua-filter/-L.

User-global installation is possible by placing the filter within the filters directory of pandoc's user data directory. This allows to use the filter just by using the filename, without having to specify the full file path.

Using

The filter recognizes code blocks with the include attribute present. It swaps the content of the code block with contents from a file.

Including Files

The simplest way to use this filter is to include an entire file:

```{include="hello.c"}
```

You can still use other attributes, and classes, to control the code blocks:

```{.c include="hello.c" numberLines}
```

Ranges

If you want to include a specific range of lines, use startLine and endLine:

```{include="hello.c" startLine=35 endLine=80}
```

start-line and end-line alternatives are also recognized.

Dedent

Using the dedent attribute, 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).

```{include="hello.c" dedent=4}
```

Line Numbers

If you include the numberLines class in your code block, and use include, the startFrom attribute will be added with respect to the included code's location in the source file.

```{include="hello.c" startLine=35 endLine=80 .numberLines}
```

Example

An HTML version of input.md can be produced as output.html with this command:

pandoc -s --lua-filter=include-code-files.lua test/input.md --output test/output.html

Extension for Quarto

Screenshot of an example output using include-code-files

Installing

quarto add SamEdwardes/include-code-files

This will install the extension under the _extensions subdirectory. You will want to check in this directory if you're using version control.

Using

To use the include-code-files filter, add it to your documents YAML front matter:

---
title: "My doc"
filters:
  - include-code-files
---

With the include-code-files filter, you can include code snippets directly from a file using include. For example, you may have a python script like this:

# _snippets/hello_world.py
for name in ["Sam", "Jake"]:
    print(f"Hello {name}!")

To render this file in a code chunk, use the include attribute:

```{.python include="_snippets/hello_world.py"}
```

You can combine this with other quarto attributes like filename or code-line-numbers:

```{.python include="_snippets/hello_world.py" filename="hello_world.py" code-line-numbers="true"}
```

Example

Here is the source code for a minimal example: example.qmd. See a rendered sample here: https://samedwardes.quarto.pub/example-for-include-code-files-filter/.