Enhanced Markdown Footnotes, Citations, and Mermaid Rendering
Summary
Improved rendering of
footnoteReference, footnoteDefinition, and custom citation nodes in Astro markdown layouts. Introduced Mermaid.js support for code blocks with language mermaid, styled for dark mode, and added a header to the ArticleCitationsBlock.Why Care
These changes significantly enhance document readability and navigability, particularly for academic or research-style writing. Users now benefit from inline footnotes, backlinking for definitions, dark-mode Mermaid graphs, and consistent citation presentation.
Implementation
Changes Made
- Added return links (
↩) fromfootnoteDefinitionback to correspondingfootnoteReference - Ensured inline rendering of footnote definitions when they contain only a single paragraph
- Updated
AstroMarkdown.astroto:- Detect and render code blocks with
lang: "mermaid"using a new component - Route Mermaid blocks to
components/codeblocks/MermaidChart.astro
- Created
MermaidChart.astro:- Lazy-loads Mermaid.js from CDN
- Automatically renders charts on page load
- Defaults to
darktheme based on static config
- Updated
components/citations/ArticleCitationsBlock.astroto include a heading: Footnotes and Citations
Technical Details
- File:
components/codeblocks/MermaidChart.astro
astro
<div class="mermaid">
{code}
</div>
<script is:inline>
import('https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs')
.then(m => {
m.default.initialize({ startOnLoad: true, theme: 'dark' });
m.default.run();
window.mermaid = m.default;
window.__MERMAID_LOADED__ = true;
});
</script>