From 295bfa928ad8628eb60e985ea9b5340723ef1872 Mon Sep 17 00:00:00 2001 From: Cytrogen Date: Wed, 11 Mar 2026 19:19:19 -0400 Subject: [PATCH] =?UTF-8?q?feat(writing):=20=E6=B7=BB=E5=8A=A0=20Hugo=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=85=8D=E7=BD=AE=E5=92=8C=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E9=93=BE=E6=8E=A5=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ox-hugo 导出配置(基础目录 ~/Projects/blog) - ox-gemini Gemini 协议导出 - LaTeX 公式保留给 MathJax 处理 - 自定义 Org 链接: [[em:文字]] 着重号、[[ruby:注音|文字]] 注音 - YASnippet 全局模式 + 自定义 snippets 目录 - Newsletter 目录生成工具 --- config/pkg-writing.el | 44 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/config/pkg-writing.el b/config/pkg-writing.el index effa0487b6985458998256e16c56ddf338e7303e..640c4c29655b3d7eb77a53847bef8a59b1666928 100644 --- a/config/pkg-writing.el +++ b/config/pkg-writing.el @@ -1,6 +1,6 @@ ;;; pkg-writing.el --- Writing and blogging tools -*- lexical-binding: t -*- -;; Copyright (C) 2024 Cytrogen +;; Copyright (C) 2026 Cytrogen ;; This file contains: ;; - ox-hugo configuration for blog publishing @@ -23,7 +23,17 @@ (with-eval-after-load 'ox (require 'ox-hugo) - (setq org-hugo-base-dir "~/Projects/blog")) + (setq org-hugo-base-dir "~/Projects/blog") + ;; 导出时保留 LaTeX 公式给 MathJax 处理 + (setq org-export-with-latex t)) + +;; ox-gemini for Gemini protocol (gemtext) export +(unless (package-installed-p 'ox-gemini) + (package-refresh-contents) + (package-install 'ox-gemini)) + +(with-eval-after-load 'ox + (require 'ox-gemini)) ;; Universal Elisp Tags Filter ;; Support for Hexo-style block tags @@ -35,14 +45,38 @@ (format "{%% %s %%}\n%s{%% end%s %%}" type content type)))) (add-to-list 'org-export-filter-special-block-functions 'my/org-export-hexo-universal-block)) +;; 内联着重号支持: [[em:着重内容]] +;; 在 org 中显示为带下划线的文字,导出为 {% em %}...{% endem %} +(with-eval-after-load 'org + (org-link-set-parameters + "em" + :follow (lambda (path) (message "着重: %s" path)) + :export (lambda (path _desc backend _info) + (cond + ((org-export-derived-backend-p backend 'md 'hugo) + (format "{%% em %%}%s{%% endem %%}" path)) + ((org-export-derived-backend-p backend 'gemini) + path))) + :face '(:underline t :foreground "dark orange")) + + (org-link-set-parameters + "ruby" + :follow (lambda (_path) (message "Ruby annotation")) + :export (lambda (path desc backend _info) + (cond + ((org-export-derived-backend-p backend 'md 'hugo) + (format "{%% ruby %s %%}%s{%% endruby %%}" path desc)) + ((org-export-derived-backend-p backend 'gemini) + (format "%s(%s)" desc path)))) + :face '(:overline t :foreground "dark green"))) + ;; YASnippet Configuration ;; Text expansion system (unless (package-installed-p 'yasnippet) (package-install 'yasnippet)) -(with-eval-after-load 'yasnippet - (yas-global-mode 1) - (yas-reload-all)) +(require 'yasnippet) +(yas-global-mode 1) ;; Newsletter Tools ;; Custom functions for newsletter generation