rebber-plugins

rebber-plugins is a collection of LaTeX stringifiers for custom mdast nodes. These plugins are intended to be used with rebber.
It currently supports:
- remark-abbr
- remark-align
- remark-custom-blocks
- remark-emoticons
- remark-footnotes
- remark-grid-tables
- remark-iframes
- remark-kbd
- remark-ping
- remark-sub-super
Installation
npm:
npm install rebber-plugins
Usage
const unified = require('unified')
const remarkParser = require('remark-parse')
const rebber = require('rebber')
const {contents} = unified()
.use(remarkParser, remarkConfig)
.use(rebber, rebberConfig)
.processSync('### foo')
console.log(contents);
Supported remark plugins
remark-abbr
remarkConfigneeds to be configured forremark-abbrrebberConfig.overrides.abbr = require('rebber-plugins/dist/type/abbr')rebberConfig.abbr = (displayText, definition) => ''
remark-align
remarkConfigneeds to be configured forremark-alignrebberConfig.overrides.centerAligned = require('rebber-plugins/dist/type/align')rebberConfig.overrides.leftAligned = require('rebber-plugins/dist/type/align')rebberConfig.overrides.rightAligned = require('rebber-plugins/dist/type/align')rebberConfig.leftAligned = (innerText) => ''rebberConfig.centerAligned = (innerText) => ''rebberConfig.rightAligned = (innerText) => ''rebberConfig.defaultType = (innerText, type) => ''
remark-custom-blocks
remarkConfigneeds to be configured forremark-custom-blocksrebberConfig.overrides.errorCustomBlock = require('rebber-plugins/dist/type/customBlocks')rebberConfig.errorCustomBlock = (innerText, environmentName) => ''
remark-emoticons
remarkConfigneeds to be configured forremark-emoticonsrebberConfig.overrides.emoticon = require('rebber-plugins/dist/type/emoticon')rebberConfig.emoticons = remarkConfig.emoticons
remark-grid-tables
remarkConfigneeds to be configured forremark-grid-tablesrebberConfig.overrides.gridTable = require('rebber-plugins/dist/type/gridTable')
Proper handling of fenced code blocks in grid tables being hard to achieve in LaTeX, you can use the following preprocessor to automatically move the code blocks to an appendix section and replace the original location with a reference to the appendix section:
.use(rebber, {
preprocessors: {
iframe: require('rebber-plugins/dist/preprocessors/iframe')
}
})
remark-iframes
remarkConfigneeds to be configured forremark-iframes
iframe nodes require some preprocessing before getting compiled to LaTeX:
const unified = require('unified')
const remarkParser = require('remark-parse')
const rebber = require('rebber')
const {contents} = unified()
.use(remarkParser, {
// see config options in the remark-iframes package
iframes: {
'www.dailymotion.com': {
tag: 'iframe',
width: 480,
height: 270,
disabled: false,
replace: [
['video/', 'embed/video/'],
],
thumbnail: {
format: 'http://www.dailymotion.com/thumbnail/video/{id}',
id: '.+/(.+)
remark-kbd
remarkConfig needs to be configured for remark-kbd
rebberConfig.overrides.kbd = require('rebber-plugins/dist/type/kbd')
remark-ping
remarkConfig needs to be configured for remark-ping
rebberConfig.overrides.ping = require('rebber-plugins/dist/type/ping')
remark-sub-super
remarkConfig needs to be configured for remark-sub-super
rebberConfig.overrides.sub = require('rebber-plugins/dist/type/sub')
rebberConfig.overrides.sup = require('rebber-plugins/dist/type/sup')
License
}
},
}
})
.use(rebber, {
preprocessors: {
iframe: require('rebber-plugins/dist/preprocessors/iframe')
}
})
.processSync('some markdown')
console.log(contents);
remark-kbd
- __INLINE_CODE_27__ needs to be configured for __INLINE_CODE_28__
- __INLINE_CODE_29__
remark-ping
- __INLINE_CODE_30__ needs to be configured for __INLINE_CODE_31__
- __INLINE_CODE_32__
remark-sub-super
- __INLINE_CODE_33__ needs to be configured for __INLINE_CODE_34__
- __INLINE_CODE_35__
- __INLINE_CODE_36__