diff --git a/src/zona/builder.py b/src/zona/builder.py
index ded2363..2c3222f 100644
--- a/src/zona/builder.py
+++ b/src/zona/builder.py
@@ -96,7 +96,11 @@ class ZonaBuilder:
self.item_map = {
item.source.resolve(): item for item in self.items
}
- # print(item_map)
+ # write code highlighting stylesheet
+ pygments_style = zmd.get_style_defs(self.config)
+ (self.layout.content / "static" / "pygments.css").write_text(
+ pygments_style
+ )
for item in self.item_map.values():
dst = item.destination
# print(item)
diff --git a/src/zona/data/templates/base.html b/src/zona/data/templates/base.html
index 87a8392..86769f5 100644
--- a/src/zona/data/templates/base.html
+++ b/src/zona/data/templates/base.html
@@ -10,6 +10,12 @@
type="text/css"
media="all"
/>
+
diff --git a/src/zona/markdown.py b/src/zona/markdown.py
index 774a90c..a9e87ba 100644
--- a/src/zona/markdown.py
+++ b/src/zona/markdown.py
@@ -97,11 +97,7 @@ class ZonaRenderer(HTMLRenderer):
except Exception:
lexer = TextLexer(stripall=False) # type: ignore
- formatter = HtmlFormatter(
- style=config.theme,
- nowrap=not config.wrap,
- noclasses=True,
- )
+ formatter = get_formatter(self.config)
highlighted = highlight(code, lexer, formatter) # type: ignore
return (
@@ -110,6 +106,14 @@ class ZonaRenderer(HTMLRenderer):
)
+def get_formatter(config: ZonaConfig):
+ c = config.markdown.syntax_highlighting
+ formatter = HtmlFormatter(
+ style=c.theme, nowrap=not c.wrap, nobackground=True
+ )
+ return formatter
+
+
def md_to_html(
content: str,
config: ZonaConfig | None,
@@ -134,3 +138,10 @@ def md_to_html(
item_map=item_map,
)
return renderer.render(ast)
+
+
+def get_style_defs(config: ZonaConfig) -> str:
+ formatter = get_formatter(config)
+ defs = formatter.get_style_defs("pre.code-block code")
+ assert isinstance(defs, str)
+ return defs