doc/lua-filters.md: replace metadata example with image centering (#6004)
Metadata defaults can be given via the command line `--metadata-file`. Adding raw format snippets is a common use case for Lua filters, so it seems sensible to provide an example. Thanks to @efx for proposing this filter. Closes: pandoc/lua-filters#70
This commit is contained in:
parent
8d64cb6954
commit
2cf89ade85
1 changed files with 23 additions and 22 deletions
|
@ -264,32 +264,33 @@ return {
|
|||
}
|
||||
```
|
||||
|
||||
## Default metadata file
|
||||
## Center images in LaTeX and HTML output
|
||||
|
||||
This filter causes metadata defined in an external file
|
||||
(`metadata-file.yaml`) to be used as default values in a
|
||||
document's metadata:
|
||||
For LaTeX, wrap an image in LaTeX snippets which cause the image
|
||||
to be centered horizontally. In HTML, the image element's style
|
||||
attribute is used to achieve centering.
|
||||
|
||||
``` lua
|
||||
-- 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
|
||||
-- Filter images with this function if the target format is LaTeX.
|
||||
if FORMAT:match 'latex' then
|
||||
function Image (elem)
|
||||
-- Surround all images with image-centering raw LaTeX.
|
||||
return {
|
||||
pandoc.RawInline('latex', '\\hfill\\break{\\centering'),
|
||||
elem,
|
||||
pandoc.RawInline('latex', '\\par}')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
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,
|
||||
}
|
||||
-- Filter images with this function if the target format is HTML
|
||||
if FORMAT:match 'html' then
|
||||
function Image (elem)
|
||||
-- Use CSS style to center image
|
||||
elem.attributes.style = 'margin:auto; display: block;'
|
||||
return elem
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Setting the date in the metadata
|
||||
|
|
Loading…
Reference in a new issue