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>