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
npm:
npm install rebber-plugins
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);
-
remarkConfig
needs to be configured forremark-abbr
rebberConfig.overrides.abbr = require('rebber-plugins/dist/type/abbr')
rebberConfig.abbr = (displayText, definition) => ''
-
remarkConfig
needs to be configured forremark-align
rebberConfig.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) => ''
-
remarkConfig
needs to be configured forremark-custom-blocks
rebberConfig.overrides.errorCustomBlock = require('rebber-plugins/dist/type/customBlocks')
rebberConfig.errorCustomBlock = (innerText, environmentName) => ''
-
remarkConfig
needs to be configured forremark-emoticons
rebberConfig.overrides.emoticon = require('rebber-plugins/dist/type/emoticon')
rebberConfig.emoticons = remarkConfig.emoticons
-
remarkConfig
needs to be configured forremark-grid-tables
rebberConfig.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')
}
})
-
remarkConfig
needs 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: '.+/(.+)$'
}
},
}
})
.use(rebber, {
preprocessors: {
iframe: require('rebber-plugins/dist/preprocessors/iframe')
}
})
.processSync('some markdown')
console.log(contents);
-
remarkConfig
needs to be configured forremark-kbd
rebberConfig.overrides.kbd = require('rebber-plugins/dist/type/kbd')
-
remarkConfig
needs to be configured forremark-ping
rebberConfig.overrides.ping = require('rebber-plugins/dist/type/ping')
-
remarkConfig
needs to be configured forremark-sub-super
rebberConfig.overrides.sub = require('rebber-plugins/dist/type/sub')
rebberConfig.overrides.sup = require('rebber-plugins/dist/type/sup')