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 (
↩
) fromfootnoteDefinition
back to correspondingfootnoteReference
- Ensured inline rendering of footnote definitions when they contain only a single paragraph
- Updated
AstroMarkdown.astro
to:- 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
dark
theme based on static config
- Updated
components/citations/ArticleCitationsBlock.astro
to 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>