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
相关产品推荐
相关产品推荐

