我正在尝试使用 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
编译标签。