要点概览:
目的:利用winedt实现一键编译LaTeX文档
环境:windows + texlive + winedt
方法:利用winedt的命令按钮自定义功能
之前介绍过 Winedt 自定义执行命令的功能,事实上这个功能是可以拓展应用的,比如实现一键编译。我们都知道 latex 文档的编译可能需要多遍,多遍编译中间还需要用到不同的运行程序比如 bibtex、biber、makeindex 等。然而这些命令并不一定需要分开单步执行,每次输一遍3-4个命令是不是很烦?
事实上 texlive 中附带的 latexmk 宏包提供了多遍编译整合的功能,利用 latexmk 可以只要输入一遍命令,在此基础上如果我们在 winedt 操作界面上增加一个功能按钮,那么只要点击一下按钮就可以实现一键编译,这样是不是就很方便呢?
下面我们来看看怎么实现:
我们要增加一个工具栏按钮,那么需要修改工具栏配置:
菜单 options 下 options interface 项,打开 menus and toolbar 配置下的 toolbar.ini 文件
看 winedt 的说明文档知道要增加一个按钮,只要这个命令是在菜单中定义过的,那么只要增加一行配置就可以实现。
在 toolbar.ini 文件中我们可以看到很多按钮的配置,增加一个ITEM就是增加一个按钮:
BUTTON="XeLaTeX"
BUTTON="|"
BUTTON="Latexmk"
BUTTON="BibTeX"
注意其中 Latexmk 就是新增的按钮。
按钮的命令需要由一个对应的菜单栏命令项,配置文件为:
菜单 options 下 options interface 项,打开 menus and toolbar 配置下的 mainmenu.ini 文件
类似的我们找到一个 xelatex 命令,复制修改为 lataxmk 命令,比如:
ITEM="XeLaTeX"
CAPTION="XeLaTeX"
IMAGE="TeXXeLaTeX"
SAVE_INPUT=1
MACRO="Exe('%b\Exec\TeX\XeLaTeX.edt');"
REQ_FILTER=:"%!M=TeX"|"%!M=TeX:STY"|"%!M=TeX:AUX"
ITEM="Latexmk"
CAPTION="Latexmk"
IMAGE="TeXLaTeXify"
SAVE_INPUT=1
MACRO="Exe('%b\Exec\TeX\Latexmk.edt');"
REQ_FILTER=:"%!M=TeX"|"%!M=TeX:STY"|"%!M=TeX:AUX"
注意到命令的执行依赖于 MACRO,为了配置 Latexmk 命令还需新建 Latexmk.edt 文件。我们从将找到 XeLaTeX.edt 文件,将其复制为Latexmk.edt。
并做修改如下:
PushTagsandRegisters;
Assign('ExitCode-OK','0'); // OK Exit Code
LetReg(9,'Latexmk'); // Execution Modes Compiler
LetReg(8,'log'); // Log File (or empty)
LetReg(7,'pdf'); // Output Format
LetReg(6,'%O'); // Startup Folder
从上一步的文件 Latexmk.edt 中可以看到,文件中前面绝大部分内容都是在配置参数,最后需要调用 %bExecExeCompiler.edt 来配置执行(其中 %b 是 winedt 的根目录,比如 C:Program FilesWinEdt ),从该文件看到 LetReg(9) 是提供运行命令信息,而该运行命令信息需要在 execmodes.edt 文件中配置:
菜单 options 下的 options interface 中的 advanced configuration 中的 execution modes 下的 current
即选中了 execmodes.edt 文件,对其做修改:
AddApplication(!'XeLaTeX', // Name<>
!'xelatex.exe', // Executable<>
!'', // Switches<>
!'"%N%T"', // Parameters<>
!'', // Environmental Variable <-- Executable<>
0, // Paper Size Switch Enabled<>
0, // Landscape Switch Enabled<>
$$0111111111111,// Enable Flags (13)<>
$$1111); // Enable Pause..WinEdt Console Flags (4)
AddApplication(!'Latexmk', // Name<>
!'latexmk.exe', // Executable<>
!'-xelatex', // Switches<>
!'"%N%T"', // Parameters<>
!'', // Environmental Variable <-- Executable<>
0, // Paper Size Switch Enabled<>
0, // Landscape Switch Enabled<>
$$0111111111111,// Enable Flags (13)<>
$$1111); // Enable Pause..WinEdt Console Flags (4)
这样就相当于在菜单 options 下 excution modes 下选择 console applications 选项卡下 accessories 中增加了一个 Latexmk 编译命令,选中它,勾选一些参数使其与 xelatex 一致,即可完成对 Latexmk 命令的配置。
勾选的选项包括:
wait for execution to finish
show report
pause/DO not hide thewindow
winedt console
## step 4: 重编译winedt使上述配置生效
完成上述3个步骤,还需要进行重编译以使其生效:
点击 options 菜单下 maintenance 下的 rebuild all 按钮
通过上述步骤完成利用winedt按钮配置latexmk命令实现一键编译latex文档的功能,Enjoy!
ps: 注意上述操作是在winedt9.1下进行的,其它版本的未尝试,但应该类似。
参考:
————————————————
版权声明:本文为CSDN博主「hu_shidong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xenonhu/article/details/80010659