From 7634303b1398f66cd3c1a51e671dc193cd486a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Sat, 28 Mar 2026 22:24:10 -0600 Subject: [PATCH] feat: epigraphs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 해결 #11 --- doerg/src/net/deertopia/doerg/render.clj | 28 +++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/doerg/src/net/deertopia/doerg/render.clj b/doerg/src/net/deertopia/doerg/render.clj index e7570b4..788ef34 100644 --- a/doerg/src/net/deertopia/doerg/render.clj +++ b/doerg/src/net/deertopia/doerg/render.clj @@ -12,7 +12,8 @@ [net.deertopia.doerg.tex :as tex] [net.deertopia.doerg.tex.temml :as tex-temml] [clojure.zip :as z] - [babashka.fs :as fs])) + [babashka.fs :as fs] + [clojure.edn :as edn])) ;;; Top-level API @@ -102,6 +103,13 @@ (sp/view #(update % :children seq)) sp/STAY)) +(defn doerg-attrs [e] + (->> e :affiliated :attr_doerg (str/join " ") + (format "{%s}") edn/read-string)) + +(defn wrap-if [x c f] + (if c (f x) x)) + (defn- contains-footnote-refs? [node] (some #(element/of-type? % "footnote-reference") (:children node))) @@ -335,8 +343,22 @@ (defmethod org-element "src-block" [{:keys [value]}] [:pre [:code value]]) -(defmethod org-element "quote-block" [{:keys [children]}] - [:blockquote children]) +(defn- split-quote-block-children [children] + (match (split-with #(not= % [:hr]) children) + [x ([[:hr] & ys] :seq)] [x (strip-paragraphs ys)] + x x)) + +(defmethod org-element "quote-block" [{:keys [children] :as e}] + (let [{:keys [epigraph?]} (doerg-attrs e) + [content footer] (split-quote-block-children children)] + (-> [:blockquote + content + (when footer + [:footer footer])] + (wrap-if epigraph? (fn [c] [:div.epigraph c]))))) + +(defmethod org-element "horizontal-rule" [_] + [:hr]) (defmethod org-element "comment" [_] nil)