~cytrogen/.emacs.d

295bfa928ad8628eb60e985ea9b5340723ef1872 — Cytrogen a month ago a4473bf
feat(writing): 添加 Hugo 导出配置和自定义链接类型

- ox-hugo 导出配置(基础目录 ~/Projects/blog)
- ox-gemini Gemini 协议导出
- LaTeX 公式保留给 MathJax 处理
- 自定义 Org 链接: [[em:文字]] 着重号、[[ruby:注音|文字]] 注音
- YASnippet 全局模式 + 自定义 snippets 目录
- Newsletter 目录生成工具
1 files changed, 39 insertions(+), 5 deletions(-)

M config/pkg-writing.el
M config/pkg-writing.el => config/pkg-writing.el +39 -5
@@ 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