目的
环境
方法:
之前介绍过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="TeXXeLaTeX"
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中可以看到,文件中前面绝大部分内容都是在配置参数,最后需要调用
%b\Exec\ExeCompiler.edt
来配置执行(其中%b
是winedt的根目录,比如C:\Program Files\WinEdt
),从该文件看到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
完成上述3个步骤,还需要进行重编译以使其生效:
点击options菜单下maintenance下的rebuildall按钮
通过上述步骤完成利用winedt按钮配置latexmk命令实现一键编译latex文档的功能,Enjoy!
注意上述操作是在winedt9.1下进行的,其它版本的未尝试,但应该类似。