You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Org模式导出LaTeX时如何在hyperref前插入usepackage语句

解决Org文件导出LaTeX时将指定包置于hyperref之前的局部方法

方法一:利用局部org-latex-packages-alist变量

在你的Org文件开头添加以下代码块,仅对当前文件生效,可将目标包(如lmodern)插入到hyperref之前加载:

#+BEGIN_SRC emacs-lisp :tangle no :exports code
(setq-local org-latex-packages-alist
            (append '(("" "lmodern" t))
                    org-latex-packages-alist))
#+END_SRC

#### 说明:
- `setq-local` 确保变量修改仅作用于当前Org文件缓冲区,不会全局影响其他文件
- `org-latex-packages-alist` 是Org控制LaTeX导言区包加载顺序的核心变量,默认`hyperref`位于列表末尾
- 可将`("" "lmodern" t)`替换为你的目标包配置:第一个元素为包选项(空字符串表示无选项),第二个是包名,第三个`t`表示若包已加载则跳过重复加载

### 方法二:自定义局部LaTeX类(进阶)
如果需要更复杂的导言区定制,可在文件内临时定义基于原有类的自定义LaTeX类,指定包加载顺序:

```emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle no :exports code
(setq-local org-latex-classes
            '(("article"
               "\\documentclass{article}"
               ("\\section{%s}" . "\\section*{%s}")
               ("\\subsection{%s}" . "\\subsection*{%s}")
               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
               ("\\paragraph{%s}" . "\\paragraph*{%s}")
               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
              ("my-local-article"
               "\\documentclass{article}
\\usepackage{lmodern}"
               ("\\section{%s}" . "\\section*{%s}")
               ("\\subsection{%s}" . "\\subsection*{%s}")
               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
               ("\\paragraph{%s}" . "\\paragraph*{%s}")
               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))
#+END_SRC

随后在文件开头指定使用该局部类:
#+LATEX_CLASS: my-local-article

#### 说明:
- 此方法直接在自定义类的导言区插入目标包,Org会自动在加载`hyperref`前处理这些内容
- 适合需要同时调整多个包或导言区内容的场景

内容的提问来源于stack exchange,提问作者deniel
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:00:06