![使用 Shell-Escape 设置 LaTeX -> DVIPS -> PS2PDF(在 TeXStudio 中)](https://linux22.com/image/284492/%E4%BD%BF%E7%94%A8%20Shell-Escape%20%E8%AE%BE%E7%BD%AE%20LaTeX%20-%3E%20DVIPS%20-%3E%20PS2PDF%EF%BC%88%E5%9C%A8%20TeXStudio%20%E4%B8%AD%EF%BC%89.png)
我正在尝试设置一个“用户命令”,以便TeXStudio
进行编译shell-escape
和LaTeX -> DviPs -> Ps2Pdf
循环。
shell-escape
这就是我为了工作和产出所做的一切PDF
。[编辑:本节已编辑:见下文解释]
方法 1。在TeXStudio
首选项 -> Build
->中User Commands
:
latexmk --shell-escape
latexmk -synctex=1 -interaction=nonstopmode --shell-escape %.tex
看截图:顶部用户命令,上面两行是从左到右输入的。
方法 2。在我的文档顶部插入以下行:
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
此行会TeXStudio
要求授权进行编译shell-escape
。到目前为止,此设置对我来说可以调用shell-escape
和PDF
“动态”产生输出。
经过比喻,我尝试了以下方法:
方法 1b。用户命令:
latex --shell-escape: dvips : ps2pdf : view-pdf
latex -synctex=1 -interaction=nonstopmode --shell-escape %.tex: dvips -o %.ps %.dvi: ps2pdf %.ps
方法 2b。文档顶部:
% !TeX TXS-program:compile = txs:///latex/[--shell-escape]
但那不管用。我走对路了吗?
提供上下文:我的目的是能够编译此处显示的代码:使用 TikZ 重新创建扭索纹。代码依赖于tkz-fct
包,显然需要使用shell-escape
但不支持pdflatex
,这表明该latex -> dvips -> ps2pdf
路线是值得尝试的自然路线。而且它是手册中推荐的路线tkz-fct
。
如何在TexStudio中设置用户命令?是一个 tex-stackexchange 问题,带有指向文档的链接TeXStudio
,它解决了相关问题,但没有直接解决这个特定问题。
文档TeXStudio
在这里:
http://svn.code.sf.net/p/texstudio/code/trunk/utilities/usermanual_en.html#SECTION02a
编辑:关于我的第一个编辑的解释。我最初写道,我已成功完成以下设置:
pdflatex --shell-escape
pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex
但是,我一直在对顶部有此内容的文档运行此命令:
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
事实证明,此行否决了我的用户命令。Harish Kumar 的回答中明确说明了这一点(感谢 Harish!)。如果没有此否决行,我的用户命令将无法成功调用shell-escape
。但是,替换pdflatex
为确实latexmk
调用了,而没有否决行。因此,我修改了我的错误声明。话虽如此,除了它似乎有效之外,shell-escape
我对其他了解不多。latexmk
结语:阅读 Harish Kumar 的回答,了解如何正确输入命令。我后来发现的另一件事是,扳手形按钮允许您在现有命令中进行选择并组合多个命令,这样将在命令之间添加适当的分隔符。最后,如果您阅读这里的各种评论,您会发现我很难让它工作的原因之一是因为我试图编译的 LaTeX 文件需要gnuplot
但我的系统上没有gnuplot
安装,给我的印象是我的命令不起作用(在 Harish 的更正后,它们正常工作)。
答案1
如果你使用
% !TeX TXS-program:compile = txs:///latex/[--shell-escape]
在文档顶部,那么您不需要任何额外的用户命令。只需编译它。然后 texstudio 将使用 编译它latex
(--shell-escape
当然它会征求您的许可)(即使默认构建具有pdflatex
作为编译器)并dvi
生成文件。然后您可以DVI2PS
依次运行 和PS2PDF
。
现在的问题是 - 您是否愿意使用三点击或一点击。如果是后者,则定义一个新的用户命令,如下所示:
- 在第一个框中输入命令的名称(我的是
user2: LaTex.DVIPS.PS2PDF
)((user2:
您的可能不同)。 输入命令:
latex --synctex=1 -interaction=nonstopmode --shell-escape %.tex | dvips -o %.ps %.dvi| ps2pdf %.ps
在第二个框中,如下图所示:
请注意命令分隔符是|
,而不是:
。
现在如果您使用user2: LaTex.DVIPS.PS2PDF
编译,则不需要第一行:% !TeX TXS-p...
。
我明白了: