2017-09-30 16:45:31 +02:00
|
|
|
|
---
|
2017-11-21 01:51:45 +01:00
|
|
|
|
author:
|
|
|
|
|
- Albert Krewinkel
|
|
|
|
|
- John MacFarlane
|
2017-12-06 20:45:38 +01:00
|
|
|
|
date: 'December 6, 2017'
|
2017-12-29 07:02:59 +01:00
|
|
|
|
title: Pandoc Lua Filters
|
2017-09-30 16:45:31 +02:00
|
|
|
|
---
|
2017-08-22 07:14:26 +02:00
|
|
|
|
|
|
|
|
|
# Introduction
|
|
|
|
|
|
|
|
|
|
Pandoc has long supported filters, which allow the pandoc
|
|
|
|
|
abstract syntax tree (AST) to be manipulated between the parsing
|
2018-09-08 01:29:21 +02:00
|
|
|
|
and the writing phase. [Traditional pandoc
|
2019-05-02 02:09:36 +02:00
|
|
|
|
filters](https://pandoc.org/filters.html) accept a JSON representation of the
|
2018-09-08 01:29:21 +02:00
|
|
|
|
pandoc AST and produce an altered JSON representation of the
|
|
|
|
|
AST. They may be written in any programming language, and
|
|
|
|
|
invoked from pandoc using the `--filter` option.
|
2017-08-22 07:14:26 +02:00
|
|
|
|
|
|
|
|
|
Although traditional filters are very flexible, they have a
|
2017-09-30 16:45:31 +02:00
|
|
|
|
couple of disadvantages. First, there is some overhead in
|
|
|
|
|
writing JSON to stdout and reading it from stdin (twice, once on
|
|
|
|
|
each side of the filter). Second, whether a filter will work
|
|
|
|
|
will depend on details of the user's environment. A filter may
|
|
|
|
|
require an interpreter for a certain programming language to be
|
|
|
|
|
available, as well as a library for manipulating the pandoc AST
|
|
|
|
|
in JSON form. One cannot simply provide a filter that can be
|
|
|
|
|
used by anyone who has a certain version of the pandoc
|
|
|
|
|
executable.
|
2017-08-22 07:14:26 +02:00
|
|
|
|
|
|
|
|
|
Starting with pandoc 2.0, we have made it possible to write
|
2017-09-30 16:45:31 +02:00
|
|
|
|
filters in lua without any external dependencies at all. A lua
|
|
|
|
|
interpreter and a lua library for creating pandoc filters is
|
|
|
|
|
built into the pandoc executable. Pandoc data types are
|
|
|
|
|
marshalled to lua directly, avoiding the overhead of writing
|
2017-08-22 07:14:26 +02:00
|
|
|
|
JSON to stdout and reading it from stdin.
|
|
|
|
|
|
|
|
|
|
Here is an example of a lua filter that converts strong emphasis
|
|
|
|
|
to small caps:
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-08-22 07:14:26 +02:00
|
|
|
|
return {
|
|
|
|
|
{
|
|
|
|
|
Strong = function (elem)
|
|
|
|
|
return pandoc.SmallCaps(elem.c)
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2017-08-21 16:53:00 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
or equivalently,
|
2017-08-21 16:53:00 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-08-22 07:14:26 +02:00
|
|
|
|
function Strong(elem)
|
|
|
|
|
return pandoc.SmallCaps(elem.c)
|
|
|
|
|
end
|
|
|
|
|
```
|
2017-08-21 16:53:00 +02:00
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
This says: walk the AST, and when you find a Strong element,
|
2017-08-22 07:14:26 +02:00
|
|
|
|
replace it with a SmallCaps element with the same content.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
To run it, save it in a file, say `smallcaps.lua`, and invoke
|
|
|
|
|
pandoc with `--lua-filter=smallcaps.lua`.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
Here's a quick performance comparison, using a version of the
|
|
|
|
|
pandoc manual, MANUAL.txt, and versions of the same filter
|
|
|
|
|
written in compiled Haskell (`smallcaps`) and interpreted Python
|
|
|
|
|
(`smallcaps.py`):
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
Command Time
|
|
|
|
|
-------------------------------------------------- -------
|
|
|
|
|
`pandoc MANUAL.txt` 1.01s
|
|
|
|
|
`pandoc MANUAL.txt --filter ./smallcaps` 1.36s
|
|
|
|
|
`pandoc MANUAL.txt --filter ./smallcaps.py` 1.40s
|
|
|
|
|
`pandoc MANUAL.txt --lua-filter ./smallcaps.lua` 1.03s
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
As you can see, the lua filter avoids the substantial overhead
|
|
|
|
|
associated with marshalling to and from JSON over a pipe.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
# Lua filter structure
|
|
|
|
|
|
|
|
|
|
Lua filters are tables with element names as keys and values
|
|
|
|
|
consisting of functions acting on those elements.
|
|
|
|
|
|
|
|
|
|
Filters are expected to be put into separate files and are
|
|
|
|
|
passed via the `--lua-filter` command-line argument. For
|
|
|
|
|
example, if a filter is defined in a file `current-date.lua`,
|
|
|
|
|
then it would be applied like this:
|
|
|
|
|
|
|
|
|
|
pandoc --lua-filter=current-date.lua -f markdown MANUAL.txt
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
The `--lua-filter` option may be supplied multiple times. Pandoc
|
2017-12-26 19:33:10 +01:00
|
|
|
|
applies all filters (including JSON filters specified via
|
2017-12-29 07:02:59 +01:00
|
|
|
|
`--filter` and lua filters specified via `--lua-filter`) in the
|
|
|
|
|
order they appear on the command line.
|
2017-08-22 07:14:26 +02:00
|
|
|
|
|
|
|
|
|
Pandoc expects each lua file to return a list of filters. The
|
|
|
|
|
filters in that list are called sequentially, each on the result
|
|
|
|
|
of the previous filter. If there is no value returned by the
|
|
|
|
|
filter script, then pandoc will try to generate a single filter
|
|
|
|
|
by collecting all top-level functions whose names correspond to
|
|
|
|
|
those of pandoc elements (e.g., `Str`, `Para`, `Meta`, or
|
2017-09-30 16:45:31 +02:00
|
|
|
|
`Pandoc`). (That is why the two examples above are equivalent.)
|
2017-08-22 07:14:26 +02:00
|
|
|
|
|
|
|
|
|
For each filter, the document is traversed and each element
|
|
|
|
|
subjected to the filter. Elements for which the filter contains
|
2017-09-30 16:45:31 +02:00
|
|
|
|
an entry (i.e. a function of the same name) are passed to lua
|
|
|
|
|
element filtering function. In other words, filter entries will
|
2017-08-22 07:14:26 +02:00
|
|
|
|
be called for each corresponding element in the document,
|
|
|
|
|
getting the respective element as input.
|
|
|
|
|
|
2017-09-17 10:34:24 +02:00
|
|
|
|
The return of a filter function must one of the following:
|
|
|
|
|
|
|
|
|
|
- nil: this means that the object should remain unchanged.
|
|
|
|
|
- a pandoc object: this must be of the same type as the input
|
|
|
|
|
and will replace the original object.
|
|
|
|
|
- a list of pandoc objects: these will replace the original
|
2018-07-02 17:51:51 +02:00
|
|
|
|
object; the list is merged with the neighbors of the original
|
2017-09-17 10:34:24 +02:00
|
|
|
|
objects (spliced into the list the original object belongs
|
|
|
|
|
to); returning an empty list deletes the object.
|
|
|
|
|
|
|
|
|
|
The function's output must result in an element of the same type
|
|
|
|
|
as the input. This means a filter function acting on an inline
|
|
|
|
|
element must return either nil, an inline, or a list of inlines,
|
|
|
|
|
and a function filtering a block element must return one of nil,
|
|
|
|
|
a block, or a list of block elements. Pandoc will throw an error
|
|
|
|
|
if this condition is violated.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-30 15:09:54 +02:00
|
|
|
|
If there is no function matching the element's node type, then
|
|
|
|
|
the filtering system will look for a more general fallback
|
|
|
|
|
function. Two fallback functions are supported, `Inline` and
|
|
|
|
|
`Block`. Each matches elements of the respective type.
|
|
|
|
|
|
2017-04-30 15:55:45 +02:00
|
|
|
|
Elements without matching functions are left untouched.
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
See [module documentation](#module-pandoc) for a list of pandoc
|
|
|
|
|
elements.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2018-02-24 23:32:03 +01:00
|
|
|
|
|
|
|
|
|
## Global variables
|
|
|
|
|
|
|
|
|
|
Pandoc passes additional data to Lua filters by setting global
|
|
|
|
|
variables.
|
|
|
|
|
|
|
|
|
|
`FORMAT`
|
|
|
|
|
: The global `FORMAT` is set to the format of the pandoc
|
|
|
|
|
writer being used (`html5`, `latex`, etc.), so the behavior
|
|
|
|
|
of a filter can be made conditional on the eventual output
|
|
|
|
|
format.
|
|
|
|
|
|
|
|
|
|
`PANDOC_READER_OPTIONS`
|
|
|
|
|
: Table of the options which were provided to the parser.
|
|
|
|
|
|
|
|
|
|
`PANDOC_VERSION`
|
2019-05-19 15:26:00 +02:00
|
|
|
|
: Contains the pandoc version as a [Version object] which
|
|
|
|
|
behaves like a numerically indexed table, most significant
|
|
|
|
|
number first. E.g., for pandoc 2.7.3, the value of the
|
|
|
|
|
variable is equivalent to a table `{2, 7, 3}`. Use
|
|
|
|
|
`tostring(PANDOC_VERSION)` to produce a version string. This
|
|
|
|
|
variable is also set in custom writers.
|
2018-02-24 23:32:03 +01:00
|
|
|
|
|
|
|
|
|
`PANDOC_API_VERSION`
|
|
|
|
|
: Contains the version of the pandoc-types API against which
|
|
|
|
|
pandoc was compiled. It is given as a numerically indexed
|
|
|
|
|
table, most significant number first. E.g., if pandoc was
|
|
|
|
|
compiled against pandoc-types 1.17.3, then the value of the
|
2019-05-19 15:26:00 +02:00
|
|
|
|
variable will behave like the table `{1, 17, 3}`. Use
|
|
|
|
|
`tostring(PANDOC_API_VERSION)` to produce a version string.
|
|
|
|
|
This variable is also set in custom writers.
|
2018-02-24 23:32:03 +01:00
|
|
|
|
|
|
|
|
|
`PANDOC_SCRIPT_FILE`
|
|
|
|
|
: The name used to involve the filter. This value can be used
|
|
|
|
|
to find files relative to the script file. This variable is
|
|
|
|
|
also set in custom writers.
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2018-10-26 07:12:14 +02:00
|
|
|
|
`PANDOC_STATE`
|
|
|
|
|
: The state shared by all readers and writers. It is used by
|
|
|
|
|
pandoc to collect and pass information. The value of this
|
|
|
|
|
variable is of type [CommonState](#type-ref-CommonState) and
|
|
|
|
|
is read-only.
|
2017-09-27 05:20:09 +02:00
|
|
|
|
|
2019-05-19 15:26:00 +02:00
|
|
|
|
[Version object]: #type-ref-Version
|
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
# Pandoc Module
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
The `pandoc` lua module is loaded into the filter's lua
|
|
|
|
|
environment and provides a set of functions and constants to
|
|
|
|
|
make creation and manipulation of elements easier. The global
|
|
|
|
|
variable `pandoc` is bound to the module and should generally
|
|
|
|
|
not be overwritten for this reason.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
Two major functionalities are provided by the module: element
|
|
|
|
|
creator functions and access to some of pandoc's main
|
|
|
|
|
functionalities.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Element creation
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
Element creator functions like `Str`, `Para`, and `Pandoc` are
|
|
|
|
|
designed to allow easy creation of new elements that are simple
|
|
|
|
|
to use and can be read back from the lua environment.
|
|
|
|
|
Internally, pandoc uses these functions to create the lua
|
|
|
|
|
objects which are passed to element filter functions. This means
|
|
|
|
|
that elements created via this module will behave exactly as
|
|
|
|
|
those elements accessible through the filter function parameter.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Exposed pandoc functionality
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-10-03 23:20:48 +02:00
|
|
|
|
Some pandoc functions have been made available in lua:
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
- [`walk_block`](#walk_block) and
|
|
|
|
|
[`walk_inline`](#walk_inline) allow filters to be applied
|
|
|
|
|
inside specific block or inline elements;
|
|
|
|
|
- [`read`](#read) allows filters to parse strings into pandoc
|
|
|
|
|
documents;
|
|
|
|
|
- [`pipe`](#pipe) runs an external command with input from and
|
|
|
|
|
output to strings;
|
|
|
|
|
- the [`pandoc.mediabag`](#module-pandoc.mediabag) module
|
|
|
|
|
allows access to the "mediabag," which stores binary content
|
|
|
|
|
such as images that may be included in the final document;
|
|
|
|
|
- the [`pandoc.utils`](#module-pandoc.utils) module contains
|
|
|
|
|
various utility functions.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-12-06 20:45:38 +01:00
|
|
|
|
# Lua interpreter initialization
|
|
|
|
|
|
2019-02-09 22:56:49 +01:00
|
|
|
|
Initialization of pandoc's Lua interpreter can be controlled by
|
|
|
|
|
placing a file `init.lua` in pandoc's data directory. A common
|
|
|
|
|
use-case would be to load additional modules, or even to alter
|
|
|
|
|
default modules.
|
2017-12-06 20:45:38 +01:00
|
|
|
|
|
2019-02-09 22:56:49 +01:00
|
|
|
|
The following snippet is an example of code that might be useful
|
|
|
|
|
when added to `init.lua`. The snippet adds all unicode-aware
|
|
|
|
|
functions defined in the [`text` module] to the default `string`
|
|
|
|
|
module, prefixed with the string `uc_`.
|
2017-12-06 20:45:38 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-12-06 20:45:38 +01:00
|
|
|
|
for name, fn in pairs(require 'text') do
|
|
|
|
|
string['uc_' .. name] = fn
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This makes it possible to apply these functions on strings using
|
|
|
|
|
colon syntax (`mystring:uc_upper()`).
|
|
|
|
|
|
2019-02-09 22:56:49 +01:00
|
|
|
|
[`text` module]: #module-text
|
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
# Examples
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2018-09-08 01:29:21 +02:00
|
|
|
|
The following filters are presented as examples.
|
|
|
|
|
A repository of useful lua filters (which may also serve
|
|
|
|
|
as good examples) is available at
|
|
|
|
|
<https://github.com/pandoc/lua-filters>.
|
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Macro substitution.
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
The following filter converts the string `{{helloworld}}` into
|
|
|
|
|
emphasized text "Hello, World".
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-04-30 15:55:45 +02:00
|
|
|
|
return {
|
|
|
|
|
{
|
|
|
|
|
Str = function (elem)
|
|
|
|
|
if elem.text == "{{helloworld}}" then
|
|
|
|
|
return pandoc.Emph {pandoc.Str "Hello, World"}
|
|
|
|
|
else
|
|
|
|
|
return elem
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Default metadata file
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
This filter causes metadata defined in an external file
|
2017-09-30 16:45:31 +02:00
|
|
|
|
(`metadata-file.yaml`) to be used as default values in a
|
|
|
|
|
document's metadata:
|
2017-04-30 15:55:45 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-04-30 15:55:45 +02:00
|
|
|
|
-- read metadata file into string
|
|
|
|
|
local metafile = io.open('metadata-file.yaml', 'r')
|
|
|
|
|
local content = metafile:read("*a")
|
|
|
|
|
metafile:close()
|
|
|
|
|
-- get metadata
|
|
|
|
|
local default_meta = pandoc.read(content, "markdown").meta
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
{
|
|
|
|
|
Meta = function(meta)
|
|
|
|
|
-- use default metadata field if it hasn't been defined yet.
|
|
|
|
|
for k, v in pairs(default_meta) do
|
|
|
|
|
if meta[k] == nil then
|
|
|
|
|
meta[k] = v
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return meta
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
```
|
2017-06-28 15:31:42 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Setting the date in the metadata
|
|
|
|
|
|
|
|
|
|
This filter sets the date in the document's metadata to the
|
|
|
|
|
current date:
|
2017-08-14 18:57:01 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-08-14 18:57:01 +02:00
|
|
|
|
function Meta(m)
|
|
|
|
|
m.date = os.date("%B %e, %Y")
|
|
|
|
|
return m
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Extracting information about links
|
2017-06-28 15:31:42 +02:00
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
This filter prints a table of all the URLs linked to in the
|
|
|
|
|
document, together with the number of links to that URL.
|
2017-06-28 15:31:42 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-06-28 15:31:42 +02:00
|
|
|
|
links = {}
|
|
|
|
|
|
|
|
|
|
function Link (el)
|
|
|
|
|
if links[el.target] then
|
|
|
|
|
links[el.target] = links[el.target] + 1
|
|
|
|
|
else
|
|
|
|
|
links[el.target] = 1
|
|
|
|
|
end
|
|
|
|
|
return el
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Doc (blocks, meta)
|
|
|
|
|
function strCell(str)
|
|
|
|
|
return {pandoc.Plain{pandoc.Str(str)}}
|
|
|
|
|
end
|
|
|
|
|
local caption = {pandoc.Str "Link", pandoc.Space(), pandoc.Str "count"}
|
|
|
|
|
local aligns = {pandoc.AlignDefault, pandoc.AlignLeft}
|
|
|
|
|
local widths = {0.8, 0.2}
|
|
|
|
|
local headers = {strCell "Target", strCell "Count"}
|
|
|
|
|
local rows = {}
|
|
|
|
|
for link, count in pairs(links) do
|
|
|
|
|
rows[#rows + 1] = {strCell(link), strCell(count)}
|
|
|
|
|
end
|
|
|
|
|
return pandoc.Doc(
|
|
|
|
|
{pandoc.Table(caption, aligns, widths, headers, rows)},
|
|
|
|
|
meta
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
```
|
2017-08-21 19:00:51 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
## Replacing placeholders with their metadata value
|
|
|
|
|
|
|
|
|
|
Lua filter functions are run in the order
|
|
|
|
|
|
|
|
|
|
> *Inlines → Blocks → Meta → Pandoc*.
|
2017-08-21 19:00:51 +02:00
|
|
|
|
|
2017-08-22 07:14:26 +02:00
|
|
|
|
Passing information from a higher level (e.g., metadata) to a
|
|
|
|
|
lower level (e.g., inlines) is still possible by using two
|
|
|
|
|
filters living in the same file:
|
2017-08-21 19:00:51 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-08-21 19:00:51 +02:00
|
|
|
|
local vars = {}
|
|
|
|
|
|
|
|
|
|
function get_vars (meta)
|
|
|
|
|
for k, v in pairs(meta) do
|
|
|
|
|
if v.t == 'MetaInlines' then
|
2018-03-20 05:43:43 +01:00
|
|
|
|
vars["$" .. k .. "$"] = {table.unpack(v)}
|
2017-08-21 19:00:51 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function replace (el)
|
|
|
|
|
if vars[el.text] then
|
|
|
|
|
return pandoc.Span(vars[el.text])
|
|
|
|
|
else
|
|
|
|
|
return el
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return {{Meta = get_vars}, {Str = replace}}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If the contents of file `occupations.md` is
|
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
``` {.markdown}
|
2017-08-21 19:00:51 +02:00
|
|
|
|
---
|
2017-08-22 07:14:26 +02:00
|
|
|
|
name: Samuel Q. Smith
|
|
|
|
|
occupation: Professor of Phrenology
|
2017-08-21 19:00:51 +02:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Name
|
|
|
|
|
|
|
|
|
|
: \$name\$
|
|
|
|
|
|
|
|
|
|
Occupation
|
|
|
|
|
|
|
|
|
|
: \$occupation\$
|
|
|
|
|
```
|
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
then running `pandoc --lua-filter=meta-vars.lua occupations.md`
|
|
|
|
|
will output:
|
2017-08-21 19:00:51 +02:00
|
|
|
|
|
2017-09-30 16:45:31 +02:00
|
|
|
|
``` {.html}
|
2017-08-21 19:00:51 +02:00
|
|
|
|
<dl>
|
|
|
|
|
<dt>Name</dt>
|
2017-08-22 07:14:26 +02:00
|
|
|
|
<dd><p><span>Samuel Q. Smith</span></p>
|
2017-08-21 19:00:51 +02:00
|
|
|
|
</dd>
|
|
|
|
|
<dt>Occupation</dt>
|
2017-08-22 07:14:26 +02:00
|
|
|
|
<dd><p><span>Professor of Phrenology</span></p>
|
2017-08-21 19:00:51 +02:00
|
|
|
|
</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
```
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2017-11-12 01:18:39 +01:00
|
|
|
|
## Modifying pandoc's `MANUAL.txt` for man pages
|
2017-11-11 17:01:38 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
This is the filter we use when converting `MANUAL.txt` to man
|
|
|
|
|
pages. It converts level-1 headers to uppercase (using
|
|
|
|
|
`walk_block` to transform inline elements inside headers),
|
|
|
|
|
removes footnotes, and replaces links with regular text.
|
2017-11-11 17:01:38 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-11-18 22:33:37 +01:00
|
|
|
|
-- we use preloaded text to get a UTF-8 aware 'upper' function
|
|
|
|
|
local text = require('text')
|
|
|
|
|
|
2017-11-11 17:01:38 +01:00
|
|
|
|
function Header(el)
|
2017-11-12 01:18:39 +01:00
|
|
|
|
if el.level == 1 then
|
|
|
|
|
return pandoc.walk_block(el, {
|
2017-11-11 17:01:38 +01:00
|
|
|
|
Str = function(el)
|
2017-11-18 22:33:37 +01:00
|
|
|
|
return pandoc.Str(text.upper(el.text))
|
2017-11-11 17:01:38 +01:00
|
|
|
|
end })
|
2017-11-12 01:18:39 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Link(el)
|
|
|
|
|
return el.content
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Note(el)
|
|
|
|
|
return {}
|
2017-11-11 17:01:38 +01:00
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2017-11-13 00:36:11 +01:00
|
|
|
|
## Creating a handout from a paper
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
This filter extracts all the numbered examples, section headers,
|
|
|
|
|
block quotes, and figures from a document, in addition to any
|
|
|
|
|
divs with class `handout`. (Note that only blocks at the "outer
|
|
|
|
|
level" are included; this ignores blocks inside nested
|
|
|
|
|
constructs, like list items.)
|
2017-11-13 00:36:11 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-11-13 06:48:47 +01:00
|
|
|
|
-- creates a handout from an article, using its headings,
|
|
|
|
|
-- blockquotes, numbered examples, figures, and any
|
|
|
|
|
-- Divs with class "handout"
|
|
|
|
|
|
2017-11-13 00:36:11 +01:00
|
|
|
|
function Pandoc(doc)
|
|
|
|
|
local hblocks = {}
|
|
|
|
|
for i,el in pairs(doc.blocks) do
|
|
|
|
|
if (el.t == "Div" and el.classes[1] == "handout") or
|
|
|
|
|
(el.t == "BlockQuote") or
|
|
|
|
|
(el.t == "OrderedList" and el.style == "Example") or
|
2017-11-13 00:51:10 +01:00
|
|
|
|
(el.t == "Para" and #el.c == 1 and el.c[1].t == "Image") or
|
2017-11-13 00:36:11 +01:00
|
|
|
|
(el.t == "Header") then
|
|
|
|
|
table.insert(hblocks, el)
|
|
|
|
|
end
|
|
|
|
|
end
|
2017-11-13 00:38:10 +01:00
|
|
|
|
return pandoc.Pandoc(hblocks, doc.meta)
|
2017-11-13 00:36:11 +01:00
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2017-11-13 06:48:47 +01:00
|
|
|
|
## Counting words in a document
|
|
|
|
|
|
|
|
|
|
This filter counts the words in the body of a document (omitting
|
2017-12-29 07:02:59 +01:00
|
|
|
|
metadata like titles and abstracts), including words in code. It
|
|
|
|
|
should be more accurate than `wc -w` run directly on a Markdown
|
|
|
|
|
document, since the latter will count markup characters, like
|
|
|
|
|
the `#` in front of an ATX header, or tags in HTML documents, as
|
|
|
|
|
words. To run it, `pandoc --lua-filter wordcount.lua myfile.md`.
|
|
|
|
|
|
|
|
|
|
``` {.lua}
|
2017-11-13 06:48:47 +01:00
|
|
|
|
-- counts words in a document
|
|
|
|
|
|
|
|
|
|
words = 0
|
|
|
|
|
|
|
|
|
|
wordcount = {
|
|
|
|
|
Str = function(el)
|
|
|
|
|
-- we don't count a word if it's entirely punctuation:
|
2017-11-13 06:55:10 +01:00
|
|
|
|
if el.text:match("%P") then
|
2017-11-13 06:48:47 +01:00
|
|
|
|
words = words + 1
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
Code = function(el)
|
|
|
|
|
_,n = el.text:gsub("%S+","")
|
|
|
|
|
words = words + n
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
CodeBlock = function(el)
|
|
|
|
|
_,n = el.text:gsub("%S+","")
|
|
|
|
|
words = words + n
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Pandoc(el)
|
|
|
|
|
-- skip metadata, just count body:
|
|
|
|
|
pandoc.walk_block(pandoc.Div(el.blocks), wordcount)
|
|
|
|
|
print(words .. " words in body")
|
|
|
|
|
os.exit(0)
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2017-10-03 23:20:48 +02:00
|
|
|
|
## Converting ABC code to music notation
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
This filter replaces code blocks with class `abc` with images
|
|
|
|
|
created by running their contents through `abcm2ps` and
|
|
|
|
|
ImageMagick's `convert`. (For more on ABC notation, see
|
2019-05-02 02:09:36 +02:00
|
|
|
|
<https://abcnotation.com>.)
|
2017-10-03 23:20:48 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
Images are added to the mediabag. For output to binary formats,
|
|
|
|
|
pandoc will use images in the mediabag. For textual formats, use
|
|
|
|
|
`--extract-media` to specify a directory where the files in the
|
|
|
|
|
mediabag will be written, or (for HTML only) use
|
|
|
|
|
`--self-contained`.
|
2017-10-03 23:20:48 +02:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-10-03 23:20:48 +02:00
|
|
|
|
-- Pandoc filter to process code blocks with class "abc" containing
|
|
|
|
|
-- ABC notation into images.
|
|
|
|
|
--
|
|
|
|
|
-- * Assumes that abcm2ps and ImageMagick's convert are in the path.
|
|
|
|
|
-- * For textual output formats, use --extract-media=abc-images
|
|
|
|
|
-- * For HTML formats, you may alternatively use --self-contained
|
|
|
|
|
|
|
|
|
|
local filetypes = { html = {"png", "image/png"}
|
|
|
|
|
, latex = {"pdf", "application/pdf"}
|
|
|
|
|
}
|
|
|
|
|
local filetype = filetypes[FORMAT][1] or "png"
|
|
|
|
|
local mimetype = filetypes[FORMAT][2] or "image/png"
|
|
|
|
|
|
|
|
|
|
local function abc2eps(abc, filetype)
|
|
|
|
|
local eps = pandoc.pipe("abcm2ps", {"-q", "-O", "-", "-"}, abc)
|
|
|
|
|
local final = pandoc.pipe("convert", {"-", filetype .. ":-"}, eps)
|
|
|
|
|
return final
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function CodeBlock(block)
|
|
|
|
|
if block.classes[1] == "abc" then
|
|
|
|
|
local img = abc2eps(block.text, filetype)
|
|
|
|
|
local fname = pandoc.sha1(img) .. "." .. filetype
|
|
|
|
|
pandoc.mediabag.insert(fname, mimetype, img)
|
|
|
|
|
return pandoc.Para{ pandoc.Image({pandoc.Str("abc tune")}, fname) }
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2017-11-21 21:20:28 +01:00
|
|
|
|
## Building images with tikz
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
This filter converts raw LaTeX tikz environments into images. It
|
|
|
|
|
works with both PDF and HTML output. The tikz code is compiled
|
2019-04-16 06:39:03 +02:00
|
|
|
|
to an image using `pdflatex`, and the image is converted from pdf
|
|
|
|
|
to svg format using [`pdf2svg`](https://github.com/dawbarton/pdf2svg),
|
2017-12-29 07:02:59 +01:00
|
|
|
|
so both of these must be in the system path. Converted images
|
|
|
|
|
are cached in the working directory and given filenames based on
|
|
|
|
|
a hash of the source, so that they need not be regenerated each
|
|
|
|
|
time the document is built. (A more sophisticated version of
|
|
|
|
|
this might put these in a special cache directory.)
|
|
|
|
|
|
|
|
|
|
``` {.lua}
|
2017-11-21 21:20:28 +01:00
|
|
|
|
local function tikz2image(src, filetype, outfile)
|
|
|
|
|
local tmp = os.tmpname()
|
|
|
|
|
local tmpdir = string.match(tmp, "^(.*[\\/])") or "."
|
|
|
|
|
local f = io.open(tmp .. ".tex", 'w')
|
2019-04-16 06:39:03 +02:00
|
|
|
|
f:write("\\documentclass{standalone}\n\\usepackage{xcolor}\n\\usepackage{tikz}\n\\begin{document}\n\\nopagecolor\n")
|
2017-11-21 21:20:28 +01:00
|
|
|
|
f:write(src)
|
|
|
|
|
f:write("\n\\end{document}\n")
|
|
|
|
|
f:close()
|
|
|
|
|
os.execute("pdflatex -output-directory " .. tmpdir .. " " .. tmp)
|
|
|
|
|
if filetype == 'pdf' then
|
|
|
|
|
os.rename(tmp .. ".pdf", outfile)
|
|
|
|
|
else
|
2019-04-16 06:39:03 +02:00
|
|
|
|
os.execute("pdf2svg " .. tmp .. ".pdf " .. outfile)
|
2017-11-21 21:20:28 +01:00
|
|
|
|
end
|
|
|
|
|
os.remove(tmp .. ".tex")
|
|
|
|
|
os.remove(tmp .. ".pdf")
|
|
|
|
|
os.remove(tmp .. ".log")
|
|
|
|
|
os.remove(tmp .. ".aux")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
extension_for = {
|
2019-04-16 06:39:03 +02:00
|
|
|
|
html = 'svg',
|
|
|
|
|
html4 = 'svg',
|
|
|
|
|
html5 = 'svg',
|
2017-11-21 21:20:28 +01:00
|
|
|
|
latex = 'pdf',
|
|
|
|
|
beamer = 'pdf' }
|
|
|
|
|
|
|
|
|
|
local function file_exists(name)
|
|
|
|
|
local f = io.open(name, 'r')
|
|
|
|
|
if f ~= nil then
|
|
|
|
|
io.close(f)
|
|
|
|
|
return true
|
|
|
|
|
else
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2019-04-16 06:39:03 +02:00
|
|
|
|
local function starts_with(start, str)
|
|
|
|
|
return str:sub(1, #start) == start
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
2017-11-21 21:20:28 +01:00
|
|
|
|
function RawBlock(el)
|
2019-04-16 06:39:03 +02:00
|
|
|
|
if starts_with("\\begin{tikzpicture}", el.text) then
|
|
|
|
|
local filetype = extension_for[FORMAT] or "svg"
|
|
|
|
|
local fname = pandoc.sha1(el.text) .. "." .. filetype
|
|
|
|
|
if not file_exists(fname) then
|
|
|
|
|
tikz2image(el.text, filetype, fname)
|
|
|
|
|
end
|
|
|
|
|
return pandoc.Para({pandoc.Image({}, fname)})
|
|
|
|
|
else
|
|
|
|
|
return el
|
2017-11-21 21:20:28 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Example of use:
|
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
pandoc --lua-filter tikz.lua -s -o cycle.html <<EOF
|
|
|
|
|
Here is a diagram of the cycle:
|
2017-11-21 21:20:28 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
\begin{tikzpicture}
|
2017-11-21 21:20:28 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
\def \n {5}
|
|
|
|
|
\def \radius {3cm}
|
|
|
|
|
\def \margin {8} % margin in angles, depends on the radius
|
2017-11-21 21:20:28 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
\foreach \s in {1,...,\n}
|
|
|
|
|
{
|
|
|
|
|
\node[draw, circle] at ({360/\n * (\s - 1)}:\radius) {$\s$};
|
|
|
|
|
\draw[->, >=latex] ({360/\n * (\s - 1)+\margin}:\radius)
|
|
|
|
|
arc ({360/\n * (\s - 1)+\margin}:{360/\n * (\s)-\margin}:\radius);
|
|
|
|
|
}
|
|
|
|
|
\end{tikzpicture}
|
|
|
|
|
EOF
|
2017-11-21 21:20:28 +01:00
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
|
|
|
|
|
# Lua type reference
|
|
|
|
|
|
|
|
|
|
This section describes the types of objects available to Lua
|
|
|
|
|
filters. See the [pandoc module](#module-pandoc}) for functions
|
|
|
|
|
to create these objects.
|
|
|
|
|
|
|
|
|
|
## Pandoc {#type-ref-pandoc}
|
|
|
|
|
|
|
|
|
|
Pandoc document
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
`blocks`
|
|
|
|
|
: document content ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`meta`
|
|
|
|
|
: document meta information ([Meta] object)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Meta {#type-ref-meta}
|
|
|
|
|
|
|
|
|
|
Meta information on a document; string-indexed collection of
|
|
|
|
|
[MetaValue]s.
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
## MetaValue {#type-ref-MetaValue}
|
|
|
|
|
|
|
|
|
|
Document meta information items.
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
### MetaBlocks {#type-ref-MetaBlocks}
|
|
|
|
|
|
|
|
|
|
A list of blocks usable as meta value ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
Fields:
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `MetaBlocks` (string)
|
|
|
|
|
|
|
|
|
|
### MetaBool {#type-ref-MetaBool}
|
|
|
|
|
|
|
|
|
|
Plain Lua boolean value (boolean)
|
|
|
|
|
|
|
|
|
|
### MetaInlines {#type-ref-MetaInlines}
|
|
|
|
|
|
|
|
|
|
List of inlines used in metadata ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
Fields:
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `MetaInlines` (string)
|
|
|
|
|
|
|
|
|
|
### MetaList {#type-ref-iMetaList}
|
|
|
|
|
|
|
|
|
|
A list of other [MetaValue]s. ([List])
|
|
|
|
|
|
|
|
|
|
Fields:
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `MetaList` (string)
|
|
|
|
|
|
|
|
|
|
### MetaMap {#type-ref-MetaMap}
|
|
|
|
|
|
|
|
|
|
A string-indexed map of meta-values. (table)
|
|
|
|
|
|
|
|
|
|
Fields:
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `MetaMap` (string)
|
|
|
|
|
|
|
|
|
|
*Note*: The fields will be shadowed if the map contains a field
|
|
|
|
|
with the same name as those listed.
|
|
|
|
|
|
|
|
|
|
### MetaString {#type-ref-MetaString}
|
|
|
|
|
|
|
|
|
|
Plain Lua string value (string)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Block {#type-ref-Block}
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
### BlockQuote {#type-ref-BlockQuote}
|
|
|
|
|
|
|
|
|
|
A block quote element
|
|
|
|
|
|
|
|
|
|
content:
|
|
|
|
|
: block content ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `BlockQuote` (string)
|
|
|
|
|
|
|
|
|
|
### BulletList {#type-ref-BulletList}
|
|
|
|
|
|
|
|
|
|
A bullet list
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: list of items ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `BulletList` (string)
|
|
|
|
|
|
|
|
|
|
### CodeBlock {#type-ref-CodeBlock}
|
|
|
|
|
|
|
|
|
|
Block of code.
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: code string (string)
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: element attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `CodeBlock` (string)
|
|
|
|
|
|
|
|
|
|
### DefinitionList {#type-ref-DefinitionList}
|
|
|
|
|
|
|
|
|
|
Definition list, containing terms and their explanation.
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: list of items
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `DefinitionList` (string)
|
|
|
|
|
|
|
|
|
|
### Div {#type-ref-Div}
|
|
|
|
|
|
|
|
|
|
Generic block container with attributes
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: block content ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: element attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Div` (string)
|
|
|
|
|
|
|
|
|
|
### Header {#type-ref-Header}
|
|
|
|
|
|
|
|
|
|
Creates a header element.
|
|
|
|
|
|
|
|
|
|
`level`
|
|
|
|
|
: header level (integer)
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: element attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Header` (string)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### HorizontalRule {#type-ref-HorizontalRule}
|
|
|
|
|
|
|
|
|
|
A horizontal rule.
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `HorizontalRule` (string)
|
|
|
|
|
|
|
|
|
|
### LineBlock {#type-ref-LineBlock}
|
|
|
|
|
|
|
|
|
|
A line block, i.e. a list of lines, each separated from the next
|
|
|
|
|
by a newline.
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `LineBlock` (string)
|
|
|
|
|
|
|
|
|
|
### Null {#type-ref-Null}
|
|
|
|
|
|
|
|
|
|
A null element; this element never produces any output in the
|
|
|
|
|
target format.
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Null` (string)
|
|
|
|
|
|
|
|
|
|
### OrderedList {#type-ref-OrderedList}
|
|
|
|
|
|
|
|
|
|
An ordered list.
|
|
|
|
|
|
2019-02-01 21:03:05 +01:00
|
|
|
|
`content`
|
2018-10-19 08:12:57 +02:00
|
|
|
|
: list items ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`listAttributes`
|
|
|
|
|
: list parameters ([ListAttributes])
|
|
|
|
|
|
|
|
|
|
`start`
|
|
|
|
|
: alias for `listAttributes.start` (integer)
|
|
|
|
|
|
|
|
|
|
`style`
|
|
|
|
|
: alias for `listAttributes.style` (string)
|
|
|
|
|
|
|
|
|
|
`delimiter`
|
|
|
|
|
: alias for `listAttributes.delimiter` (string)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `OrderedList` (string)
|
|
|
|
|
|
|
|
|
|
### Para {#type-ref-Para}
|
|
|
|
|
|
|
|
|
|
A paragraph
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Para` (string)
|
|
|
|
|
|
|
|
|
|
### Plain {#type-ref-Plain}
|
|
|
|
|
|
|
|
|
|
Plain text, not a paragraph
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Plain` (string)
|
|
|
|
|
|
|
|
|
|
### RawBlock {#type-ref-RawBlock}
|
|
|
|
|
|
|
|
|
|
Raw content of a specified format.
|
|
|
|
|
|
|
|
|
|
`format`
|
|
|
|
|
: format of content (string)
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: raw content (string)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `RawBlock` (string)
|
|
|
|
|
|
|
|
|
|
### Table {#type-ref-Table}
|
|
|
|
|
|
|
|
|
|
A table.
|
|
|
|
|
|
|
|
|
|
`caption`
|
|
|
|
|
: table caption ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`aligns`
|
|
|
|
|
: column alignments ([List] of [Alignment]s)
|
|
|
|
|
|
|
|
|
|
`widths`
|
|
|
|
|
: column widths (number)
|
|
|
|
|
|
|
|
|
|
`headers`
|
|
|
|
|
: header row ([List] of [table cells])
|
|
|
|
|
|
|
|
|
|
`rows`
|
|
|
|
|
: table rows ([List] of [List]s of [table cells])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Table` (string)
|
|
|
|
|
|
|
|
|
|
A [table cell]{#table-cell} is a list of blocks.
|
|
|
|
|
|
|
|
|
|
*[Alignment]{#Alignment}* is a string value indicating the
|
|
|
|
|
horizontal alignment of a table column. `AlignLeft`,
|
|
|
|
|
`AlignRight`, and `AlignCenter` leads cell content tob be
|
|
|
|
|
left-aligned, right-aligned, and centered, respectively. The
|
|
|
|
|
default alignment is `AlignDefault` (often equivalent to
|
|
|
|
|
centered).
|
|
|
|
|
|
|
|
|
|
[Alignment]: #type-ref-Alignment
|
|
|
|
|
[table cells]: #type-ref-table-cell
|
|
|
|
|
|
|
|
|
|
## Inline {#type-ref-Inline}
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
### Cite {#type-ref-Cite}
|
|
|
|
|
Citation
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`citations`
|
|
|
|
|
: citation entries ([List] of [citations])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Cite` (string)
|
|
|
|
|
|
|
|
|
|
### Code {#type-ref-Code}
|
|
|
|
|
Inline code
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: code string (string)
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Code` (string)
|
|
|
|
|
|
|
|
|
|
### Emph {#type-ref-Emph}
|
|
|
|
|
Emphasized text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Emph` (string)
|
|
|
|
|
|
|
|
|
|
### Image {#type-ref-Image}
|
|
|
|
|
Image: alt text (list of inlines), target
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`caption`
|
|
|
|
|
: text used to describe the image ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`src`
|
|
|
|
|
: path to the image file (string)
|
|
|
|
|
|
|
|
|
|
`title`
|
|
|
|
|
: brief image description
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Image` (string)
|
|
|
|
|
|
|
|
|
|
### LineBreak {#type-ref-LineBreak}
|
|
|
|
|
Hard line break
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `LineBreak` (string)
|
|
|
|
|
|
|
|
|
|
### Link {#type-ref-Link}
|
|
|
|
|
Hyperlink: alt text (list of inlines), target
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: text for this link ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`target`
|
|
|
|
|
: the link target (string)
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Link` (string)
|
|
|
|
|
|
|
|
|
|
### Math {#type-ref-Math}
|
|
|
|
|
TeX math (literal)
|
|
|
|
|
|
|
|
|
|
`mathype`
|
|
|
|
|
: specifier determining whether the math content should be
|
|
|
|
|
shown inline (`InlineMath`) or on a separate line
|
|
|
|
|
(`DisplayMath`) (string)
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: math content (string)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Math` (string)
|
|
|
|
|
|
|
|
|
|
### Note {#type-ref-Note}
|
|
|
|
|
Footnote or endnote
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: ([List] of [Block]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Note` (string)
|
|
|
|
|
|
|
|
|
|
### Quoted {#type-ref-Quoted}
|
|
|
|
|
Quoted text
|
|
|
|
|
|
|
|
|
|
`quotetype`
|
|
|
|
|
: type of quotes to be used; one of `SingleQuote` or
|
|
|
|
|
`DoubleQuote` (string)
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: quoted text ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Quoted` (string)
|
|
|
|
|
|
|
|
|
|
### RawInline {#type-ref-RawInline}
|
|
|
|
|
Raw inline
|
|
|
|
|
|
|
|
|
|
`format`
|
|
|
|
|
: the format of the content (string)
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: raw content (string)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `RawInline` (string)
|
|
|
|
|
|
|
|
|
|
### SmallCaps {#type-ref-SmallCaps}
|
|
|
|
|
Small caps text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `SmallCaps` (string)
|
|
|
|
|
|
|
|
|
|
### SoftBreak {#type-ref-SoftBreak}
|
|
|
|
|
Soft line break
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `SoftBreak` (string)
|
|
|
|
|
|
|
|
|
|
### Space {#type-ref-Space}
|
|
|
|
|
Inter-word space
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Space` (string)
|
|
|
|
|
|
|
|
|
|
### Span {#type-ref-Span}
|
|
|
|
|
Generic inline container with attributes
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: wrapped content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`identifier`
|
|
|
|
|
: alias for `attr.identifier` (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: alias for `attr.classes` ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: alias for `attr.attributes` ([Attributes])
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Span` (string)
|
|
|
|
|
|
|
|
|
|
### Str {#type-ref-Str}
|
|
|
|
|
Text
|
|
|
|
|
|
|
|
|
|
`text`
|
|
|
|
|
: content (string)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Str` (string)
|
|
|
|
|
|
|
|
|
|
### Strikeout {#type-ref-Strikeout}
|
|
|
|
|
Strikeout text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Strikeout` (string)
|
|
|
|
|
|
|
|
|
|
### Strong {#type-ref-Strong}
|
|
|
|
|
Strongly emphasized text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Strong` (string)
|
|
|
|
|
|
|
|
|
|
### Subscript {#type-ref-Subscript}
|
|
|
|
|
Subscripted text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Subscript` (string)
|
|
|
|
|
|
|
|
|
|
### Superscript {#type-ref-Superscript}
|
|
|
|
|
Superscripted text
|
|
|
|
|
|
|
|
|
|
`content`
|
|
|
|
|
: inline content ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: the literal `Superscript` (string)
|
|
|
|
|
|
|
|
|
|
## Element components
|
|
|
|
|
|
|
|
|
|
### Attr {#type-ref-Attr}
|
|
|
|
|
|
|
|
|
|
A set of element attributes
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
`identifier`
|
|
|
|
|
: element identifier (string)
|
|
|
|
|
|
|
|
|
|
`classes`
|
|
|
|
|
: element classes ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`attributes`
|
|
|
|
|
: collection of key/value pairs ([Attributes])
|
|
|
|
|
|
|
|
|
|
### Attributes {#type-ref-Attributes}
|
|
|
|
|
|
|
|
|
|
List of key/value pairs. Values can be accessed by using keys as
|
|
|
|
|
indices to the list table.
|
|
|
|
|
|
|
|
|
|
### Citation {#type-ref-Citation}
|
|
|
|
|
|
|
|
|
|
Single citation entry
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
`id`
|
|
|
|
|
: citation identifier, e.g., a bibtex key (string)
|
|
|
|
|
|
|
|
|
|
`mode`
|
|
|
|
|
: citation mode, one of `AuthorInText`, `SuppressAuthor`, or
|
|
|
|
|
`NormalCitation` (string)
|
|
|
|
|
|
|
|
|
|
`prefix`
|
|
|
|
|
: citation prefix ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`suffix`
|
|
|
|
|
: citation suffix ([List] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`note_num`
|
|
|
|
|
: note number (integer)
|
|
|
|
|
|
|
|
|
|
`hash`
|
|
|
|
|
: hash (integer)
|
|
|
|
|
|
|
|
|
|
### ListAttributes {#type-ref-ListAttributes}
|
|
|
|
|
List attributes
|
|
|
|
|
|
2018-11-19 21:36:02 +01:00
|
|
|
|
Object equality is determined via
|
|
|
|
|
[`pandoc.utils.equals`](#utils-equals).
|
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
`start`
|
|
|
|
|
: number of the first list item (integer)
|
|
|
|
|
|
|
|
|
|
`style`
|
|
|
|
|
: style used for list numbers; possible values are `DefaultStyle`,
|
|
|
|
|
`Example`, `Decimal`, `LowerRoman`, `UpperRoman`,
|
|
|
|
|
`LowerAlpha`, and `UpperAlpha` (string)
|
|
|
|
|
|
|
|
|
|
`delimiter`
|
|
|
|
|
: delimiter of list numbers; one of `DefaultDelim`, `Period`,
|
|
|
|
|
`OneParen`, and `TwoParens` (string)
|
|
|
|
|
|
|
|
|
|
## Hierarchical Element {#type-ref-Element}
|
|
|
|
|
|
|
|
|
|
Hierarchical elements can be either *Sec* (sections) or *Blk*
|
|
|
|
|
(blocks). *Blk* elements are treated like [Block]s.
|
|
|
|
|
|
|
|
|
|
### Sec {#type-ref-Sec}
|
|
|
|
|
|
|
|
|
|
Section elements used to provide hierarchical information on
|
|
|
|
|
document contents.
|
|
|
|
|
|
|
|
|
|
**Objects of this type are read-only.**
|
|
|
|
|
|
|
|
|
|
`level`
|
|
|
|
|
: header level (integer)
|
|
|
|
|
|
|
|
|
|
`numbering`
|
|
|
|
|
: section numbering ([list] of integers)
|
|
|
|
|
|
|
|
|
|
`attr`
|
|
|
|
|
: header attributes ([Attr])
|
|
|
|
|
|
|
|
|
|
`label`
|
|
|
|
|
: header content ([list] of [Inline]s)
|
|
|
|
|
|
|
|
|
|
`contents`
|
|
|
|
|
: list of contents in this section ([list] of [hierarchical element]s)
|
|
|
|
|
|
|
|
|
|
`tag`, `t`
|
|
|
|
|
: constant `Sec` (string)
|
|
|
|
|
|
|
|
|
|
[hierarchical element]: #Element
|
|
|
|
|
|
|
|
|
|
## ReaderOptions {#type-ref-ReaderOptions}
|
|
|
|
|
|
|
|
|
|
Pandoc reader options
|
|
|
|
|
|
|
|
|
|
`abbreviations`
|
|
|
|
|
: set of known abbreviations (set of strings)
|
|
|
|
|
|
|
|
|
|
`columns`
|
|
|
|
|
: number of columns in terminal (integer)
|
|
|
|
|
|
|
|
|
|
`default_image_extension`
|
|
|
|
|
: default extension for images (string)
|
|
|
|
|
|
|
|
|
|
`extensions`
|
|
|
|
|
: string representation of the syntax extensions bit field
|
|
|
|
|
(string)
|
|
|
|
|
|
|
|
|
|
`indented_code_classes`
|
|
|
|
|
: default classes for indented code blocks (list of strings)
|
|
|
|
|
|
|
|
|
|
`standalone`
|
|
|
|
|
: whether the input was a standalone document with header
|
|
|
|
|
(boolean)
|
|
|
|
|
|
|
|
|
|
`strip_comments`
|
|
|
|
|
: HTML comments are stripped instead of parsed as raw HTML
|
|
|
|
|
(boolean)
|
|
|
|
|
|
|
|
|
|
`tab_stop`
|
|
|
|
|
: width (i.e. equivalent number of spaces) of tab stops
|
|
|
|
|
(integer)
|
|
|
|
|
|
|
|
|
|
`track_changes`
|
|
|
|
|
: track changes setting for docx; one of `AcceptChanges`,
|
|
|
|
|
`RejectChanges`, and `AllChanges` (string)
|
|
|
|
|
|
2018-10-26 07:12:14 +02:00
|
|
|
|
## CommonState {#type-ref-CommonState}
|
|
|
|
|
|
|
|
|
|
The state used by pandoc to collect information and make it
|
|
|
|
|
available to readers and writers.
|
|
|
|
|
|
|
|
|
|
`input_files`
|
|
|
|
|
: List of input files from command line ([List] of strings)
|
|
|
|
|
|
|
|
|
|
`output_file`
|
|
|
|
|
: Output file from command line (string or nil)
|
|
|
|
|
|
|
|
|
|
`log`
|
|
|
|
|
: A list of log messages in reverse order ([List] of [LogMessage]s)
|
|
|
|
|
|
|
|
|
|
`request_headers`
|
|
|
|
|
: Headers to add for HTTP requests; table with header names as
|
|
|
|
|
keys and header contents as value (table)
|
|
|
|
|
|
|
|
|
|
`resource_path`
|
|
|
|
|
: Path to search for resources like included images ([List] of
|
|
|
|
|
strings)
|
|
|
|
|
|
|
|
|
|
`source_url`
|
|
|
|
|
: Absolute URL or directory of first source file (string or
|
|
|
|
|
nil)
|
|
|
|
|
|
|
|
|
|
`user_data_dir`
|
|
|
|
|
: Directory to search for data files (string or nil)
|
|
|
|
|
|
|
|
|
|
`trace`
|
|
|
|
|
: Whether tracing messages are issued (boolean)
|
|
|
|
|
|
|
|
|
|
`verbosity`
|
|
|
|
|
: Verbosity level; one of `INFO`, `WARNING`, `ERROR` (string)
|
|
|
|
|
|
|
|
|
|
## LogMessage {#type-ref-LogMessage}
|
|
|
|
|
|
|
|
|
|
A pandoc log message. Object have no fields, but can be converted
|
|
|
|
|
to a string via `tostring`.
|
|
|
|
|
|
2019-05-19 15:26:00 +02:00
|
|
|
|
## Version {#type-ref-Version}
|
|
|
|
|
|
|
|
|
|
A version object. This represents a software version like
|
|
|
|
|
"2.7.3". The object behaves like a numerically indexed table,
|
|
|
|
|
i.e., if `version` represents the version `2.7.3`, then
|
|
|
|
|
|
|
|
|
|
version[1] == 2
|
|
|
|
|
version[2] == 7
|
|
|
|
|
version[3] == 3
|
|
|
|
|
#version == 3 -- length
|
|
|
|
|
|
|
|
|
|
Comparisons are performed element-wise, i.e.
|
|
|
|
|
|
|
|
|
|
Version '1.12' > Version '1.9'
|
|
|
|
|
|
|
|
|
|
### `must_be_at_least`
|
|
|
|
|
|
|
|
|
|
`must_be_at_least(actual, expected [, error_message])`
|
|
|
|
|
|
|
|
|
|
Raise an error message if the actual version is older than the
|
2019-05-29 22:58:35 +02:00
|
|
|
|
expected version; does nothing if actual is equal to or newer
|
|
|
|
|
than the expected version.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`actual`
|
|
|
|
|
: actual version specifier ([Version](#type-ref-Version))
|
|
|
|
|
|
|
|
|
|
`expected`
|
|
|
|
|
: minimum expected version ([Version](#type-ref-Version))
|
|
|
|
|
|
|
|
|
|
`error_message`
|
|
|
|
|
: optional error message template. The string is used as format
|
|
|
|
|
string, with the expected and actual versions as arguments.
|
|
|
|
|
Defaults to `"expected version %s or newer, got %s"`.
|
2019-05-19 15:26:00 +02:00
|
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
|
|
2019-05-29 22:58:35 +02:00
|
|
|
|
PANDOC_VERSION:must_be_at_least '2.7.3'
|
|
|
|
|
PANDOC_API_VERSION:must_be_at_least(
|
|
|
|
|
'1.17.4',
|
|
|
|
|
'pandoc-types is too old: expected version %s, got %s'
|
|
|
|
|
)
|
|
|
|
|
|
2019-05-19 15:26:00 +02:00
|
|
|
|
|
2018-10-19 08:12:57 +02:00
|
|
|
|
[Block]: #type-ref-Block
|
|
|
|
|
[List]: #module-pandoc.list
|
|
|
|
|
[MetaValue]: #type-ref-MetaValue
|
|
|
|
|
[Inline]: #type-ref-Inline
|
|
|
|
|
[Attr]: #type-ref-Attr
|
|
|
|
|
[Attributes]: #type-ref-Attributes
|
|
|
|
|
[citations]: #type-ref-Citation
|
2018-10-26 07:12:14 +02:00
|
|
|
|
[LogMessage]: #type-ref-LogMessage
|
2018-10-19 08:12:57 +02:00
|
|
|
|
|
2017-11-18 22:40:47 +01:00
|
|
|
|
# Module text
|
|
|
|
|
|
|
|
|
|
UTF-8 aware text manipulation functions, implemented in Haskell.
|
2019-02-09 09:52:51 +01:00
|
|
|
|
The module is made available as part of the `pandoc` module via
|
|
|
|
|
`pandoc.text`. The text module can also be loaded explicitly:
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2017-12-29 07:02:59 +01:00
|
|
|
|
``` {.lua}
|
2017-11-18 22:40:47 +01:00
|
|
|
|
-- uppercase all regular text in a document:
|
|
|
|
|
text = require 'text'
|
|
|
|
|
function Str (s)
|
|
|
|
|
s.text = text.upper(s.text)
|
|
|
|
|
return s
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### lower {#text-lower}
|
|
|
|
|
|
|
|
|
|
`lower (s)`
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a copy of a UTF-8 string, converted to lowercase.
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### upper {#text-upper}
|
|
|
|
|
|
|
|
|
|
`upper (s)`
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a copy of a UTF-8 string, converted to uppercase.
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### reverse {#text-reverse}
|
|
|
|
|
|
|
|
|
|
`reverse (s)`
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a copy of a UTF-8 string, with characters reversed.
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### len {#text-len}
|
|
|
|
|
|
|
|
|
|
`len (s)`
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns the length of a UTF-8 string.
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### sub {#text-sub}
|
|
|
|
|
|
|
|
|
|
`sub (s)`
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a substring of a UTF-8 string, using Lua's string
|
|
|
|
|
indexing rules.
|
2017-11-18 22:40:47 +01:00
|
|
|
|
|
2017-08-31 13:23:24 +02:00
|
|
|
|
# Module pandoc
|
|
|
|
|
|
|
|
|
|
Lua functions for pandoc scripts.
|
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
## Pandoc Document
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Pandoc {#Pandoc}
|
|
|
|
|
|
|
|
|
|
`Pandoc (blocks[, meta])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
A complete pandoc document
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`blocks`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Blocks]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`meta`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Meta] value (see below)
|
|
|
|
|
|
|
|
|
|
## Metadata
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Meta {#Meta}
|
2017-12-01 17:58:12 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Meta (table)`
|
2017-12-01 17:58:12 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Create a new [Meta] object.
|
2017-12-01 17:58:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:58:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`table`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: table with string keys and [MetaValue] values
|
2017-12-01 17:58:12 +01:00
|
|
|
|
|
2017-08-31 13:23:24 +02:00
|
|
|
|
## MetaValue
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### MetaBlocks {#MetaBlocks}
|
|
|
|
|
|
|
|
|
|
`MetaBlocks (blocks)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Block-level metadata content.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`blocks`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Blocks]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### MetaInlines {#MetaInlines}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`MetaInlines (inlines)`
|
|
|
|
|
|
|
|
|
|
Inline-level metadata content.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`inlines`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
|
|
|
|
|
|
|
|
|
### MetaList {#MetaList}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`MetaList (meta_values)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
List of metadata items.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`meta_values`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [MetaValues][MetaValue]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### MetaMap {#MetaMap}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`MetaMap (key_value_map)`
|
|
|
|
|
|
|
|
|
|
Field/value map of metadata items.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`key_value_map`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: a table with string keys and [MetaValue] values
|
|
|
|
|
|
|
|
|
|
### MetaString {#MetaString}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`MetaString (str)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
String metadata content.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`str`:
|
|
|
|
|
: string value
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### MetaBool {#MetaBool}
|
|
|
|
|
|
|
|
|
|
`MetaBool (bool)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Boolean metadata content.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`bool`:
|
|
|
|
|
: boolean value
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
## Blocks {#Blocks}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### BlockQuote {#BlockQuote}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`BlockQuote (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a BlockQuote element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Blocks]
|
|
|
|
|
|
|
|
|
|
Returns: BlockQuote element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### BulletList {#BulletList}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`BulletList (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a BulletList element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of items (where each item is a list of [Blocks])
|
|
|
|
|
|
|
|
|
|
Returns: BulletList element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### CodeBlock {#CodeBlock}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`CodeBlock (text[, attr])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a CodeBlock element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string (the code)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr} (code attributes)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: CodeBlock element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### DefinitionList {#DefinitionList}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`DefinitionList (content)`
|
|
|
|
|
|
|
|
|
|
Creates a DefinitionList element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of items (where each item is a two element list,
|
|
|
|
|
where the first element is a list of [Inlines], the
|
|
|
|
|
term, and the second is a list of lists of [Blocks],
|
|
|
|
|
the definitions)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: DefinitionList element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Div {#Div}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Div (content[, attr])`
|
|
|
|
|
|
|
|
|
|
Creates a Div element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Blocks]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr} (Div attributes)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Div element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Header {#Header}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Header (level, content[, attr])`
|
|
|
|
|
|
|
|
|
|
Creates a Header element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`level`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: Header level (integer)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines] (header title)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr} (header attributes)
|
|
|
|
|
|
|
|
|
|
Returns: Header element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### HorizontalRule {#HorizontalRule}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`HorizontalRule ()`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a HorizontalRule element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: HorizontalRule element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### LineBlock {#LineBlock}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`LineBlock (content)`
|
|
|
|
|
|
|
|
|
|
Creates a LineBlock element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of lines (where each line is a list of [Inlines])
|
|
|
|
|
|
|
|
|
|
Returns: LineBlock element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Null {#Null}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Null ()`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Null block element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Null element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### OrderedList {#OrderedList}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`OrderedList (items[, listAttributes])`
|
|
|
|
|
|
|
|
|
|
Creates an OrderedList element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`items`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of items (where each item is a list of [Blocks])
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`listAttributes`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [ListAttributes]{#ListAttributes}
|
|
|
|
|
|
|
|
|
|
Returns: OrderedList element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Para {#Para}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Para (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Para element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
|
|
|
|
|
|
|
|
|
Returns: Para element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Plain {#Plain}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Plain (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Plain element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Plain element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### RawBlock {#RawBlock}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`RawBlock (format, text)`
|
|
|
|
|
|
|
|
|
|
Creates a RawBlock of the specified format.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`format`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string (format of content, e.g. 'latex')
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
|
|
|
|
: string content
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: RawBlock element
|
|
|
|
|
|
|
|
|
|
### Table {#Table}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Table (caption, aligns, widths, headers, rows)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Table element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`caption`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: table caption (list of [Inlines])
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`aligns`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: alignments (a list of
|
|
|
|
|
`pandoc.AlignDefault`, `pandoc.AlignLeft`, `pandoc.AlignRight`,
|
|
|
|
|
`pandoc.AlignCenter`, one for each column)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`widths`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: column widths (a list of floats, one for each column,
|
|
|
|
|
denoting the fraction of the textwidth needed for the
|
|
|
|
|
column, 0.5 = half width; OR an empty list for a
|
|
|
|
|
simple table where cells need not wrap)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`headers`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: header row (a list of cells, each cell a list of [Blocks])
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`rows`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: table rows (a list of rows, each row a list of cells,
|
|
|
|
|
each cell a list of [Blocks])
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Table element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
## Inlines {#Inlines}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Cite {#Cite}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Cite (content, citations)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Cite element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`citations`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Citation]s
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: citations element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Code {#Code}
|
|
|
|
|
|
|
|
|
|
`Code (text[, attr])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Code inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string (the code)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr} (code attributes)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Code element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Emph {#Emph}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Emph (content)`
|
|
|
|
|
|
|
|
|
|
Creates an Emph inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Emph element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Image {#Image}
|
|
|
|
|
|
|
|
|
|
`Image (alt, src[, title[, attr]])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Image inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`alt`:
|
|
|
|
|
: list of [Inlines]: alt text (or, for implicit figures,
|
|
|
|
|
caption)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`src`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: path to the image file
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`title`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: title attribute
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr}: additional image attributes
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Image element
|
|
|
|
|
|
|
|
|
|
### LineBreak {#LineBreak}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`LineBreak ()`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Create a LineBreak inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: linebreak element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Link {#Link}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Link (content, target[, title[, attr]])`
|
|
|
|
|
|
|
|
|
|
Creates a Link inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]: the linked text
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`target`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: the link target
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`title`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: the title attribute
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr}: additional link attributes
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: image element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Math {#Math}
|
|
|
|
|
|
|
|
|
|
`Math (mathtype, text)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Math inline element, either inline or displayed.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`mathtype`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: either `pandoc.InlineMath` or `pandoc.DisplayMath`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: raw tex math
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: Math element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### DisplayMath {#DisplayMath}
|
|
|
|
|
|
|
|
|
|
`DisplayMath (text)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a DisplayMath element (DEPRECATED, use `Math`).
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: raw tex math
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: Math element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### InlineMath {#InlineMath}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`InlineMath (text)`
|
|
|
|
|
|
|
|
|
|
Creates an InlineMath inline element (DEPRECATED, use
|
|
|
|
|
[Math]{#Math}).
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: raw tex math
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: Math element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Note {#Note}
|
|
|
|
|
|
|
|
|
|
`Note (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Note inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Blocks] (content of footnote)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Quoted {#Quoted}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Quoted (quotetype, content)`
|
|
|
|
|
|
|
|
|
|
Creates a Quoted inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`quotetype`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: either `pandoc.DoubleQuote` or `pandoc.SingleQuote`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
|
|
|
|
|
|
|
|
|
Returns: Quoted element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### SingleQuoted {#SingleQuoted}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`SingleQuoted (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a single-quoted inline element (DEPRECATED, use [Quoted]{#Quoted}).
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Quoted element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### DoubleQuoted {#DoubleQuoted}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`DoubleQuoted (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a double-quoted inline element (DEPRECATED, use [Quoted]{#Quoted}).
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Quoted element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### RawInline {#RawInline}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`RawInline (format, text)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a RawInline inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`format`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string (format of the contents)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string (content)
|
|
|
|
|
|
|
|
|
|
Returns: RawInline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Smallcaps {#SmallCaps}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`SmallCaps (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates text rendered in small caps
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
|
|
|
|
|
|
|
|
|
Returns: SmallCaps element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### SoftBreak {#SoftBreak}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`SoftBreak ()`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a SoftBreak inline element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: SoftBreak element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Space {#Space}
|
|
|
|
|
|
|
|
|
|
`Space ()`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Create a Space inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Space element
|
|
|
|
|
|
|
|
|
|
### Span {#Span}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Span (content[, attr])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Span inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attr`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: [Attr]{#Attr}: span attributes
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Span element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Str {#Str}
|
|
|
|
|
|
|
|
|
|
`Str (text)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Str inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`text`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string
|
|
|
|
|
|
|
|
|
|
Returns: String element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Strikeout {#Strikeout}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Strikeout (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Strikeout inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
|
|
|
|
|
|
|
|
|
Returns: Strikeout element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Strong {#Strong}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Strong (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Creates a Strong inline element.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Strong element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Subscript {#Subscript}
|
|
|
|
|
|
|
|
|
|
`Subscript (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Subscript inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Subscript element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Superscript {#Superscript}
|
|
|
|
|
|
|
|
|
|
`Superscript (content)`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a Superscript inline element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`content`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines]
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Superscript element
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2018-01-07 22:41:59 +01:00
|
|
|
|
## Element components
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Attr {#Attr}
|
|
|
|
|
|
|
|
|
|
`Attr ([identifier[, classes[, attributes]]])`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Create a new set of attributes (Attr).
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`identifier`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string: element identifier
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`classes`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of strings: classes
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`attributes`:
|
|
|
|
|
: table containing string keys and values
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
Returns: Attr
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### Citation {#Citation}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`Citation (id, mode[, prefix[, suffix[, note_num[, hash]]]])`
|
|
|
|
|
|
|
|
|
|
Creates a single Citation.
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`id`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: string citation identifier (like a bibtex key)
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`mode`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: `pandoc.AuthorInText`, `pandoc.SuppressAuthor`, or
|
|
|
|
|
`pandoc.NormalCitation`
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`prefix`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines] for citation prefix
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`suffix`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: list of [Inlines] for citation suffix
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`note_num`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: int: note number
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`hash`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: int: hash number
|
|
|
|
|
|
|
|
|
|
### ListAttributes {#ListAttributes}
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`ListAttributes ([start[, style[, delimiter]]])`
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Creates a set of list attributes
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`start`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: int: number of the first list item (default: 1)
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`style`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: `pandoc.DefaultStyle` (default), `pandoc.Decimal`,
|
|
|
|
|
`pandoc.LowerRoman`, `pandoc.UpperRoman`, `pandoc.LowerAlpha`,
|
|
|
|
|
or `pandoc.UpperAlpha`
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`delimiter`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: `pandoc.DefaultDelim` (default), `pandoc.Period`,
|
|
|
|
|
`pandoc.OneParen`, `pandoc.TwoParens`
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: list attributes table
|
2018-10-11 22:28:24 +02:00
|
|
|
|
|
2017-12-29 09:58:47 +01:00
|
|
|
|
## Helper functions
|
2017-08-31 13:23:24 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### pipe {#pipe}
|
|
|
|
|
|
|
|
|
|
`pipe (command, args, input)`
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Runs command with arguments, passing it some input, and
|
|
|
|
|
returns the output.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- Output of command.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Raises:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- A table containing the keys `command`, `error_code`, and
|
|
|
|
|
`output` is thrown if the command exits with a non-zero
|
|
|
|
|
error code.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local output = pandoc.pipe("sed", {"-e","s/a/b/"}, "abc")
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### walk_block {#walk_block}
|
|
|
|
|
|
|
|
|
|
`walk_block (element, filter)`
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Apply a filter inside a block element, walking its contents.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`element`:
|
|
|
|
|
: the block element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`filter`:
|
|
|
|
|
: a lua filter (table of functions) to be applied within
|
|
|
|
|
the block element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: the transformed block element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### walk_inline {#walk_inline}
|
|
|
|
|
|
|
|
|
|
`walk_inline (element, filter)`
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Apply a filter inside an inline element, walking its
|
|
|
|
|
contents.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`element`:
|
|
|
|
|
: the inline element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`filter`:
|
|
|
|
|
: a lua filter (table of functions) to be applied within
|
|
|
|
|
the inline element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: the transformed inline element
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### read {#read}
|
|
|
|
|
|
|
|
|
|
`read (markup[, format])`
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parse the given string into a Pandoc document.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`markup`:
|
|
|
|
|
: the markup to be parsed
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`format`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: format specification, defaults to `"markdown"`.
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: pandoc document
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local org_markup = "/emphasis/" -- Input to be read
|
|
|
|
|
local document = pandoc.read(org_markup, "org")
|
|
|
|
|
-- Get the first block of the document
|
|
|
|
|
local block = document.blocks[1]
|
|
|
|
|
-- The inline element in that block is an `Emph`
|
|
|
|
|
assert(block.content[1].t == "Emph")
|
2017-12-29 09:04:21 +01:00
|
|
|
|
|
2019-02-07 09:50:06 +01:00
|
|
|
|
|
2017-12-21 22:30:59 +01:00
|
|
|
|
# Module pandoc.utils
|
|
|
|
|
|
|
|
|
|
This module exposes internal pandoc functions and utility
|
|
|
|
|
functions.
|
|
|
|
|
|
2019-02-07 09:50:06 +01:00
|
|
|
|
The module is loaded as part of the `pandoc` module and available
|
|
|
|
|
as `pandoc.utils`. In versions up-to and including pandoc 2.6,
|
|
|
|
|
this module had to be loaded explicitly. Example:
|
|
|
|
|
|
|
|
|
|
local utils = require 'pandoc.utils'
|
|
|
|
|
|
|
|
|
|
Use this for backwards compatibility.
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### blocks\_to\_inlines {#utils-blocks_to_inlines}
|
|
|
|
|
|
|
|
|
|
`blocks_to_inlines (blocks[, sep])`
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Squash a list of blocks into a list of inlines.
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`blocks`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: List of [Blocks] to be flattened.
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`sep`:
|
2019-01-31 19:13:36 +01:00
|
|
|
|
: List of [Inlines] inserted as separator between two
|
2019-01-30 21:37:14 +01:00
|
|
|
|
consecutive blocks; defaults to `{ pandoc.Space(),
|
|
|
|
|
pandoc.Str'¶', pandoc.Space()}`.
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-02-08 20:11:57 +01:00
|
|
|
|
- List of [Inlines]
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local blocks = {
|
|
|
|
|
pandoc.Para{ pandoc.Str 'Paragraph1' },
|
|
|
|
|
pandoc.Para{ pandoc.Emph 'Paragraph2' }
|
|
|
|
|
}
|
|
|
|
|
local inlines = pandoc.utils.blocks_to_inlines(blocks)
|
|
|
|
|
-- inlines = {
|
|
|
|
|
-- pandoc.Str 'Paragraph1',
|
|
|
|
|
-- pandoc.Space(), pandoc.Str'¶', pandoc.Space(),
|
|
|
|
|
-- pandoc.Emph{ pandoc.Str 'Paragraph2' }
|
|
|
|
|
-- }
|
2018-07-30 19:55:25 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### equals {#utils-equals}
|
|
|
|
|
|
|
|
|
|
`equals (element1, element2)`
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Test equality of AST elements. Elements in Lua are considered
|
|
|
|
|
equal if and only if the objects obtained by unmarshaling are
|
|
|
|
|
equal.
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`element1`, `element2`:
|
|
|
|
|
: Objects to be compared. Acceptable input types are
|
|
|
|
|
[Pandoc](#type-ref-pandoc), [Meta](#type-ref-meta),
|
|
|
|
|
[MetaValue](#type-ref-MetaValue),
|
|
|
|
|
[Block](#type-ref-Block), [Inline](#type-ref-Inline),
|
|
|
|
|
[Attr](#type-ref-Attr),
|
|
|
|
|
[ListAttributes](#type-ref-ListAttributes), and
|
|
|
|
|
[Citation](#type-ref-Citation).
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- Whether the two objects represent the same element
|
|
|
|
|
(boolean)
|
2018-11-19 21:36:02 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### hierarchicalize {#utils-hierarchicalize}
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
`hierarchicalize (blocks)`
|
|
|
|
|
|
|
|
|
|
Convert list of [Blocks] into an hierarchical list. An
|
2019-01-30 21:37:14 +01:00
|
|
|
|
hierarchical elements is either a normal block (but no
|
|
|
|
|
Header), or a `Sec` element. The latter has the following
|
|
|
|
|
fields:
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- level: level in the document hierarchy;
|
|
|
|
|
- numbering: list of integers of length `level`,
|
|
|
|
|
specifying the absolute position of the section in the
|
|
|
|
|
document;
|
|
|
|
|
- attr: section attributes (see [Attr](#Attr));
|
|
|
|
|
- contents: nested list of hierarchical elements.
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
- List of hierarchical elements.
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local blocks = {
|
|
|
|
|
pandoc.Header(2, pandoc.Str 'first'),
|
|
|
|
|
pandoc.Header(2, pandoc.Str 'second'),
|
|
|
|
|
}
|
|
|
|
|
local elements = pandoc.utils.hierarchicalize(blocks)
|
|
|
|
|
print(table.concat(elements[1].numbering, '.')) -- 0.1
|
|
|
|
|
print(table.concat(elements[2].numbering, '.')) -- 0.2
|
2017-12-23 22:39:05 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### run\_json\_filter {#utils-run_json_filter}
|
|
|
|
|
|
|
|
|
|
`run_json_filter (doc, filter[, args])`
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Filter the given doc by passing it through the a JSON filter.
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`doc`:
|
|
|
|
|
: the Pandoc document to filter
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`filter`:
|
|
|
|
|
: filter to run
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`args`:
|
|
|
|
|
: list of arguments passed to the filter. Defaults to
|
|
|
|
|
`{FORMAT}`.
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- ([Pandoc](#Pandoc)) Filtered document
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
-- Assumes `some_blocks` contains blocks for which a
|
|
|
|
|
-- separate literature section is required.
|
|
|
|
|
local sub_doc = pandoc.Pandoc(some_blocks, metadata)
|
|
|
|
|
sub_doc_with_bib = pandoc.utils.run_json_filter(
|
|
|
|
|
sub_doc,
|
|
|
|
|
'pandoc-citeproc'
|
|
|
|
|
)
|
|
|
|
|
some_blocks = sub_doc.blocks -- some blocks with bib
|
2018-01-10 22:26:12 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### normalize_date {#utils-normalize_date}
|
|
|
|
|
|
|
|
|
|
`normalize_date (date_string)`
|
2017-12-23 13:35:27 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parse a date and convert (if possible) to "YYYY-MM-DD"
|
|
|
|
|
format. We limit years to the range 1601-9999 (ISO 8601
|
|
|
|
|
accepts greater than or equal to 1583, but MS Word only
|
|
|
|
|
accepts dates starting 1601).
|
2017-12-23 13:35:27 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-23 13:35:27 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- A date string, or nil when the conversion failed.
|
2017-12-23 13:35:27 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### sha1 {#utils-sha1}
|
|
|
|
|
|
|
|
|
|
`sha1 (contents)`
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns the SHA1 has of the contents.
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- SHA1 hash of the contents.
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local fp = pandoc.utils.sha1("foobar")
|
2017-12-21 22:30:59 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### stringify {#utils-stringify}
|
|
|
|
|
|
|
|
|
|
`stringify (element)`
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Converts the given element (Pandoc, Meta, Block, or Inline)
|
|
|
|
|
into a string with all formatting removed.
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- A plain string representation of the given element.
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local inline = pandoc.Emph{pandoc.Str 'Moin'}
|
|
|
|
|
-- outputs "Moin"
|
|
|
|
|
print(pandoc.utils.stringify(inline))
|
2017-12-22 20:29:00 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### to\_roman\_numeral {#utils-to_roman_numeral}
|
|
|
|
|
|
|
|
|
|
`to_roman_numeral (integer)`
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Converts an integer \< 4000 to uppercase roman numeral.
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- A roman numeral string.
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local to_roman_numeral = pandoc.utils.to_roman_numeral
|
|
|
|
|
local pandoc_birth_year = to_roman_numeral(2006)
|
|
|
|
|
-- pandoc_birth_year == 'MMVI'
|
2017-12-23 11:53:26 +01:00
|
|
|
|
|
2017-12-21 22:30:59 +01:00
|
|
|
|
# Module pandoc.mediabag
|
|
|
|
|
|
|
|
|
|
The `pandoc.mediabag` module allows accessing pandoc's media
|
2017-09-30 09:56:08 +02:00
|
|
|
|
storage. The "media bag" is used when pandoc is called with the
|
|
|
|
|
`--extract-media` or `--standalone`/`-s` option.
|
|
|
|
|
|
2019-02-09 09:52:51 +01:00
|
|
|
|
The module is loaded as part of module `pandoc` and can either be
|
|
|
|
|
accessed via the `pandoc.mediabag` field, or explicitly required,
|
|
|
|
|
e.g.:
|
|
|
|
|
|
|
|
|
|
local mb = require 'pandoc.mediabag'
|
|
|
|
|
|
2019-02-16 13:35:16 +01:00
|
|
|
|
### delete {#mediabag-delete}
|
|
|
|
|
|
|
|
|
|
`delete (filepath)`
|
|
|
|
|
|
|
|
|
|
Removes a single entry from the media bag.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`filepath`:
|
|
|
|
|
: filename of the item to be deleted. The media bag will be
|
|
|
|
|
left unchanged if no entry with the given filename exists.
|
|
|
|
|
|
2019-02-16 13:20:33 +01:00
|
|
|
|
### empty {#mediabag-empty}
|
|
|
|
|
|
|
|
|
|
`empty ()`
|
|
|
|
|
|
|
|
|
|
Clear-out the media bag, deleting all items.
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### insert {#mediabag-insert}
|
|
|
|
|
|
|
|
|
|
`insert (filepath, mime_type, contents)`
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Adds a new entry to pandoc's media bag.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`filepath`:
|
|
|
|
|
: filename and path relative to the output folder.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`mime_type`:
|
|
|
|
|
: the file's MIME type
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`contents`:
|
|
|
|
|
: the binary contents of the file.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local fp = "media/hello.txt"
|
|
|
|
|
local mt = "text/plain"
|
|
|
|
|
local contents = "Hello, World!"
|
|
|
|
|
pandoc.mediabag(fp, mt, contents)
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-02-15 17:13:04 +01:00
|
|
|
|
### iter {#mediabag-iter}
|
|
|
|
|
|
|
|
|
|
`items ()`
|
|
|
|
|
|
|
|
|
|
Returns an iterator triple to be used with Lua's generic `for`
|
|
|
|
|
statement. The iterator returns the filepath, MIME type, and
|
|
|
|
|
content of a media bag item on each invocation. Items are
|
|
|
|
|
processed one-by-one to avoid excessive memory use.
|
|
|
|
|
|
|
|
|
|
This function should be used only when full access to all items,
|
|
|
|
|
including their contents, is required. For all other cases,
|
|
|
|
|
[`list`](#mediabag-list) should be preferred.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- The iterator function; must be called with the iterator state
|
|
|
|
|
and the current iterator value.
|
|
|
|
|
- Iterator state – an opaque value to be passed to the iterator
|
|
|
|
|
function.
|
|
|
|
|
- Initial iterator value.
|
|
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
|
|
|
|
|
|
for fp, mt, contents in pandoc.mediabag.items() do
|
|
|
|
|
-- print(fp, mt, contents)
|
|
|
|
|
end
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### list {#mediabag-list}
|
|
|
|
|
|
|
|
|
|
`list ()`
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Get a summary of the current media bag contents.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: A list of elements summarizing each entry in the
|
|
|
|
|
media bag. The summary item contains the keys `path`,
|
|
|
|
|
`type`, and `length`, giving the filepath, MIME type, and
|
|
|
|
|
length of contents in bytes, respectively.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
-- calculate the size of the media bag.
|
|
|
|
|
local mb_items = pandoc.mediabag.list()
|
|
|
|
|
local sum = 0
|
|
|
|
|
for i = 1, #mb_items:
|
|
|
|
|
sum = sum + mb_items[i].length
|
|
|
|
|
end
|
|
|
|
|
print(sum)
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### lookup {#mediabag-lookup}
|
|
|
|
|
|
|
|
|
|
`lookup (filepath)`
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-02-16 12:11:58 +01:00
|
|
|
|
Lookup a media item in the media bag, and return its MIME type
|
2019-01-30 21:37:14 +01:00
|
|
|
|
and contents.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`filepath`:
|
|
|
|
|
: name of the file to look up.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-02-16 12:11:58 +01:00
|
|
|
|
- the entry's MIME type, or nil if the file was not found.
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- contents of the file, or nil if the file was not found.
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local filename = "media/diagram.png"
|
|
|
|
|
local mt, contents = pandoc.mediabag.lookup(filename)
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### fetch {#mediabag-fetch}
|
|
|
|
|
|
|
|
|
|
`fetch (source, base_url)`
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Fetches the given source from a URL or local file. Returns
|
2019-02-16 12:11:58 +01:00
|
|
|
|
two values: the contents of the file and the MIME type (or
|
2019-01-30 21:37:14 +01:00
|
|
|
|
an empty string).
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns:
|
2017-10-01 08:00:14 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
- the entries MIME type, or nil if the file was not found.
|
|
|
|
|
- contents of the file, or nil if the file was not found.
|
2017-10-01 08:00:14 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Usage:
|
2017-09-30 09:56:08 +02:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
local diagram_url = "https://pandoc.org/diagram.jpg"
|
|
|
|
|
local contents = pandoc.mediabag.fetch(diagram_url, ".")
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-02-07 09:50:06 +01:00
|
|
|
|
|
2017-12-01 17:14:28 +01:00
|
|
|
|
# Module pandoc.List
|
|
|
|
|
|
2019-02-07 09:50:06 +01:00
|
|
|
|
Pandoc's List type and helper methods.
|
|
|
|
|
|
|
|
|
|
This module is loaded and available as `pandoc.List`. Older
|
|
|
|
|
versions up-to and including pandoc 2.6 require the module to be
|
|
|
|
|
loaded explicitly. Example:
|
|
|
|
|
|
|
|
|
|
local List = require 'pandoc.List'
|
|
|
|
|
|
|
|
|
|
The above remains the recommended method to use this module; it
|
|
|
|
|
provides the List type under an idiomatic name and is fully
|
|
|
|
|
backwards compatible.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
|
|
|
|
## Metamethods
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### concat {#pandoc.List:__concat}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:__concat (list)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Concatenates two lists.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`list`:
|
|
|
|
|
: second list concatenated to the first
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: a new list containing all elements from list1 and
|
|
|
|
|
list2
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
|
|
|
|
## Methods
|
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### clone {#pandoc.List:clone}
|
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`pandoc.List:clone ()` {#pandoc.List:clone}
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a (shallow) copy of the list.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### includes {#pandoc.List:includes}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:includes (needle, init)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Checks if the list has an item equal to the given needle.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`needle`:
|
|
|
|
|
: item to search for
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`init`:
|
|
|
|
|
: index at which the search is started
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: true if a list item is equal to the needle, false
|
|
|
|
|
otherwise
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### find {#pandoc.List:find}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:find (needle, init)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns the value and index of the first occurrence of the
|
|
|
|
|
given item.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`needle`:
|
|
|
|
|
: item to search for
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`init`:
|
|
|
|
|
: index at which the search is started
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: first item equal to the needle, or nil if no such
|
|
|
|
|
item exists.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### find_if {#pandoc.List:find_if}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:find_if (pred, init)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns the value and index of the first element for which
|
|
|
|
|
the predicate holds true.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`pred`:
|
|
|
|
|
: the predicate function
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`init`:
|
|
|
|
|
: index at which the search is started
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: first item for which \`test\` succeeds, or nil if
|
|
|
|
|
no such item exists.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### extend {#pandoc.List:extend}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:extend (list)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Adds the given list to the end of this list.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`list`:
|
|
|
|
|
: list to appended
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### map {#pandoc.List:map}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:map (fn)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a copy of the current list by applying the given
|
|
|
|
|
function to all elements.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`fn`:
|
|
|
|
|
: function which is applied to all list items.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-31 19:13:36 +01:00
|
|
|
|
### filter {#pandoc.List:filter}
|
|
|
|
|
|
|
|
|
|
`pandoc.List:filter (pred)`
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns a new list containing all items satisfying a given
|
|
|
|
|
condition.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Parameters:
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
`pred`:
|
|
|
|
|
: condition items must satisfy.
|
2017-12-01 17:14:28 +01:00
|
|
|
|
|
2019-01-30 21:37:14 +01:00
|
|
|
|
Returns: a new list containing all items for which \`test\`
|
|
|
|
|
was true.
|
2019-05-04 07:06:30 +02:00
|
|
|
|
|
|
|
|
|
# Module pandoc.system
|
|
|
|
|
|
|
|
|
|
Access to system information and functionality.
|
|
|
|
|
|
|
|
|
|
## Static Fields {#system-fields}
|
|
|
|
|
|
|
|
|
|
### arch {#system-arch}
|
|
|
|
|
|
|
|
|
|
The machine architecture on which the program is running.
|
|
|
|
|
|
|
|
|
|
### os {#system-os}
|
|
|
|
|
|
|
|
|
|
The operating system on which the program is running.
|
|
|
|
|
|
|
|
|
|
## Functions {#system-functions}
|
|
|
|
|
|
|
|
|
|
### environment {#system-environment}
|
|
|
|
|
|
|
|
|
|
`environment ()`
|
|
|
|
|
|
|
|
|
|
Retrieve the entire environment as a string-indexed table.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- A table mapping environment variables names to their string value
|
|
|
|
|
(table).
|
|
|
|
|
|
|
|
|
|
### get\_working\_directory {#system-get_working_directory}
|
|
|
|
|
|
|
|
|
|
`get_working_directory ()`
|
|
|
|
|
|
|
|
|
|
Obtain the current working directory as an absolute path.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- The current working directory (string).
|
|
|
|
|
|
|
|
|
|
### with\_environment {#system-with_environment}
|
|
|
|
|
|
|
|
|
|
`with_environment (environment, callback)`
|
|
|
|
|
|
|
|
|
|
Run an action within a custom environment. Only the environment
|
|
|
|
|
variables given by `environment` will be set, when `callback` is
|
|
|
|
|
called. The original environment is restored after this function
|
|
|
|
|
finishes, even if an error occurs while running the callback
|
|
|
|
|
action.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`environment`
|
|
|
|
|
: Environment variables and their values to be set before
|
|
|
|
|
running `callback`. (table with string keys and string
|
|
|
|
|
values)
|
|
|
|
|
|
|
|
|
|
`callback`
|
|
|
|
|
: Action to execute in the custom environment (function)
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- The result(s) of the call to `callback`
|
|
|
|
|
|
|
|
|
|
### with\_temporary\_directory {#system-with_temporary_directory}
|
|
|
|
|
|
|
|
|
|
`with_temporary_directory ([parent_dir,] templ, callback)`
|
|
|
|
|
|
|
|
|
|
Create and use a temporary directory inside the given directory.
|
|
|
|
|
The directory is deleted after the callback returns.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`parent_dir`
|
|
|
|
|
: Parent directory to create the directory in (string). If this
|
|
|
|
|
parameter is omitted, the system's canonical temporary
|
|
|
|
|
directory is used.
|
|
|
|
|
|
|
|
|
|
`templ`
|
|
|
|
|
: Directory name template (string).
|
|
|
|
|
|
|
|
|
|
`callback`
|
|
|
|
|
: Function which takes the name of the temporary directory as its
|
|
|
|
|
first argument (function).
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- The result of the call to `callback`.
|
|
|
|
|
|
|
|
|
|
### with\_working\_directory {#system-with_working_directory}
|
|
|
|
|
|
|
|
|
|
`with_working_directory (directory, callback)`
|
|
|
|
|
|
|
|
|
|
Run an action within a different directory. This function will
|
|
|
|
|
change the working directory to `directory`, execute `callback`,
|
|
|
|
|
then switch back to the original working directory, even if an
|
|
|
|
|
error occurs while running the callback action.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`directory`
|
|
|
|
|
: Directory in which the given `callback` should be executed
|
|
|
|
|
(string)
|
|
|
|
|
|
|
|
|
|
`callback`
|
|
|
|
|
: Action to execute in the given directory (function)
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- The result(s) of the call to `callback`
|
2019-05-19 15:26:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Module pandoc.types
|
|
|
|
|
|
|
|
|
|
Constructors for types which are not part of the pandoc AST.
|
2019-05-29 22:58:35 +02:00
|
|
|
|
|
|
|
|
|
### Version {#pandoc.types.Version}
|
|
|
|
|
|
|
|
|
|
`Version (version_specifier)`
|
|
|
|
|
|
|
|
|
|
Creates a Version object.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
`version`:
|
|
|
|
|
: Version specifier: this can be a version string like
|
|
|
|
|
`'2.7.3'`, a list of integers like `{2, 7, 3}`, a single
|
|
|
|
|
integer, or a [Version](#type-ref-Version).
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
- A new [Version](#type-ref-Version) object.
|