胡老师教你:Winedt 一键编译 LaTeX 文档

发布于 2021-06-14 15:41:44 浏览次数 518

要点概览:
目的:利用winedt实现一键编译LaTeX文档
环境:windows + texlive + winedt
方法:利用winedt的命令按钮自定义功能

之前介绍过 Winedt 自定义执行命令的功能,事实上这个功能是可以拓展应用的,比如实现一键编译。我们都知道 latex 文档的编译可能需要多遍,多遍编译中间还需要用到不同的运行程序比如 bibtex、biber、makeindex 等。然而这些命令并不一定需要分开单步执行,每次输一遍3-4个命令是不是很烦?

事实上 texlive 中附带的 latexmk 宏包提供了多遍编译整合的功能,利用 latexmk 可以只要输入一遍命令,在此基础上如果我们在 winedt 操作界面上增加一个功能按钮,那么只要点击一下按钮就可以实现一键编译,这样是不是就很方便呢?

下面我们来看看怎么实现:

step 1: 增加工具栏按钮

我们要增加一个工具栏按钮,那么需要修改工具栏配置:

菜单 options 下 options interface 项,打开 menus and toolbar 配置下的 toolbar.ini 文件

看 winedt 的说明文档知道要增加一个按钮,只要这个命令是在菜单中定义过的,那么只要增加一行配置就可以实现。
在 toolbar.ini 文件中我们可以看到很多按钮的配置,增加一个ITEM就是增加一个按钮:

  BUTTON="XeLaTeX"
  BUTTON="|"
  BUTTON="Latexmk"
  BUTTON="BibTeX"   

注意其中 Latexmk 就是新增的按钮。

step 2: 增加菜单栏命令项

按钮的命令需要由一个对应的菜单栏命令项,配置文件为:

菜单 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    

step 3: 配置执行命令

从上一步的文件 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 按钮

image.png

小结

通过上述步骤完成利用winedt按钮配置latexmk命令实现一键编译latex文档的功能,Enjoy!

image.png

ps: 注意上述操作是在winedt9.1下进行的,其它版本的未尝试,但应该类似。

参考:

  • Winedt自定义执行命令
  • winedt manual

————————————————
版权声明:本文为CSDN博主「hu_shidong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xenonhu/article/details/80010659

0 条评论

发布
问题