Add custom-writers.md.

This commit is contained in:
John MacFarlane 2021-11-21 10:07:05 -08:00
parent a9e5145c3a
commit 1d56e6059e
2 changed files with 55 additions and 4 deletions

View file

@ -1,4 +1,4 @@
# Revision history for pandoc ## Revision history for pandoc
## pandoc 2.16.2 (2021-11-21) ## pandoc 2.16.2 (2021-11-21)
@ -147,13 +147,16 @@
* Require Cabal 2.4. Use wildcards to ensure that all pptx tests are * Require Cabal 2.4. Use wildcards to ensure that all pptx tests are
included (#7677). included (#7677).
* Update bash_completion.tpl (S.P.H.). * Update `bash_completion.tpl` (S.P.H.).
* Add `data/creole.lua` as sample custom reader. * Add `data/creole.lua` as sample custom reader.
* Add `doc/custom-readers.md`. * Add `doc/custom-readers.md` and `doc/custom-writers.md`.
* MANUAL.txt: update table of exit codes and corresponding errors * `doc/lua-filters.md`: add section on global modules, including lpeg
(Albert Krewinkel).
* `MANUAL.txt`: update table of exit codes and corresponding errors
(Albert Krewinkel). (Albert Krewinkel).
* Use latest texmath. * Use latest texmath.

48
doc/custom-writers.md Normal file
View file

@ -0,0 +1,48 @@
---
author:
- John MacFarlane
date: 'November 21, 2021'
title: Creating Custom Pandoc Writers in Lua
---
# Introduction
If you need to render a format not already handled by pandoc,
or you want to change how pandoc renders a format,
you can create a custom writer using the [Lua] language.
Pandoc has a built-in Lua interpreter, so you needn't
install any additional software to do this.
[Lua]: https://www.lua.org
A custom writer is a Lua file that defines functions for
rendering each element of a pandoc AST.
For example,
``` lua
function Para(s)
return "<paragraph>" .. s .. "</paragraph>"
end
```
The best way to go about creating a custom writer is to modify
the example that comes with pandoc. To get the example, you
can do
```
pandoc --print-default-data-file sample.lua > sample.lua
```
`sample.lua` is a full-features HTML writer, with explanatory
comments. To use it, just use the path to the custom writer as
the writer name:
```
pandoc -t sample.lua myfile.md
```
`sample.lua` defines all the functions needed by any custom
writer, so you can design your own custom writer by modifying
the functions in `sample.lua` according to your needs.