是否可以在 Emacs 下编译 minted?

是否可以在 Emacs 下编译 minted?

我正在尝试使用 minted 包...这里有一个例子minimal.tex

\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
4
}
\end{minted}
\end{document}

我需要pdflatex -shell-escape minimal在终端中运行来编译它...当我尝试通过 将其作为通常的 tex 文件在 Emacs 中编译时C-c C-c,我收到错误:Package minted Error: You must invoke LaTeX with the -shell-escape flag。有人能告诉我-shell-escape flag在 Emacs 下可以在哪里添加它吗?

另一个小问题是关于minted.sty,目前我将它放在与 tex 文件相同的文件夹中,我猜这不是最好的方法......您经常将.sty文件放在哪里?

答案1

在每个文件的基础上,您可以将其添加为局部变量,通常在文档的末尾:

%%% Local Variables:
%%% LaTeX-command: "latex -shell-escape"
%%% End:

完成此操作后,C-x C-s保存并C-c C-n重新解析文档。一旦重新解析文档,您C-c C-c将自动使用该-shell-escape选项进行编译。

此后每次打开文件时,Emacs 都会抱怨-shell-escape这是一个潜在的危险变量。您可以选择应用或不应用它。

答案2

我认为这不是你真正想要的,但你可以在 emacs 中使用以下命令进行编译,M-!然后pdflatex -shell-escape source.tex

答案3

这会将 -shell-escape 标志添加到编译命令:

(require 'tex-mode)
(setcar (cdr (cddaar tex-compile-commands)) " -shell-escape ")

答案4

AUCTeX,处理-shell-escape标签的最佳选择是将变量设置TeX-command-extra-options"-shell-escape"

您可以从 tex 文件开头的文件变量中设置它

% -*- TeX-command-extra-options: "-shell-escape" -*-

或者最后使用M-x add-file-local-variable

     % local variables:
     % TeX-command-extra-options: "-shell-escape"
     % End:

您必须重新加载文件才能使其处于活动状态或进行评估 M-: (hack-local-variables)

相反,你可以在 init 文件中编写一个用户函数来动态切换 shell-escape 编译:

     (defun toggle-shell-escape()
       "Toggle TeX-command-extra-options variable between ' ' and '-shell-escape'"
       (interactive)
       (message "TeX-command-extra-option is now %s"
                (setq TeX-command-extra-options
              (if (string-empty-p TeX-command-extra-options)
                  "-shell-escape"
                ""))))

并将其绑定到您选择的密钥。

     (bind-key (kbd "C-c x") #'toggle-shell-escape LaTeX-mode-map)

C-c x将切换-shell-escape编译标签。

相关内容