Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dcsunset/pandoc-code-attribute

Pandoc filter to add attributes to code blocks based on their classes.
https://github.com/dcsunset/pandoc-code-attribute

Last synced: 3 days ago
JSON representation

Pandoc filter to add attributes to code blocks based on their classes.

Awesome Lists containing this project

README

        

# pandoc-code-attribute

Pandoc filter to add attributes to code blocks based on their classes.

## Installation

First install python and python-pip.

Then use pip to install:

```
pip3 install --user pandoc-code-attribute
```

## Usage

### Configuration

By default, this filter won't add style attributes to prevent undefined errors.

You can enable it by setting `code-attribute` field in metadata.

To add attributes to all classes, use:

```
code-attribute: true
```

To add attributes to specific classes, use:

```
code-attribute:
- cpp
```

### Example

This pandoc filter will add attributes to code blocks based on their classes.

For example, it can be very useful to use different styles for different language in `listings` :

---
code-attribute:
- cpp
- python
header-includes: |
\usepackage{listings}
\usepackage[usenames,dvipsnames]{color}

\lstset{ % General settings
numbers=left,
numberstyle=\tiny
}

\lstdefinestyle{cpp}{ % Only for C++
keywordstyle=\color{Green}
}

\lstdefinestyle{python}{ % Only for Python
keywordstyle=\color{Magenta}
}
---

C++:

```cpp
int main(int argc, char *argv[])
{
return 0;
}
```

Python:

```python
def main():
print('Hello')

if __name__ == '__main__':
main()
```

Then compile the example (`--listings` is needed only for this example):

```
pandoc input.md --filter pandoc-code-attribute --listings -o output.pdf
```

Results:

### Command

In general, to use this filter, just add this filter to pandoc command:

```
pandoc input.md --filter pandoc-code-attribute -o output.pdf
```

## License

MIT License