wooorm/remark plugin for corss-references inspired by pandoc-crossref
npm i remark @paperist/remark-crossref
const unified = require('unified');
const parser = require('remark-parse');
const crossref = require('@paperist/remark-crossref');
const markdown = `
# Heading {#sec:first}
See sec.[@sec:first].
`;
const processor = unified()
.use(parser)
.use(crossref);
const ast = processor.parse(markdown);
processor.run(ast).then((ast) => {
console.dir(ast, { depth: null });
});
CrossReferenceLabel
extends Literal
.
interface CrossReferenceLabel extends Literal {
type: 'crossReferenceLabel';
label: string;
options: { [key: string]: any };
}
For example, the following markdown:
# Heading {#sec:first}
Yields:
{
"type": "heading",
"depth": 1,
"children": [
{
"type": "text",
"value": "Heading "
},
{
"type": "crossReferenceLabel",
"value": "{#sec:first}",
"label": "sec:first",
"options": {}
}
]
}
CrossReference
extends Literal
.
interface CrossReference extends Literal {
type: 'crossReference';
identifiers: string[];
}
For example, the following markdown:
See sec.[@sec:first;@sec:second]
Yields:
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "See sec."
},
{
"type": "crossReference",
"value": "[@sec:first;@sec:second]",
"identifiers": ["sec:first", "sec:second"]
}
]
}
PRs accepted.