Winedt 一键编译 LaTeX 文档


要点概览

  1. 目的

    • 利用winedt实现一键编译LaTeX文档
  2. 环境

    • windows + texlive + winedt
  3. 方法:

    • 利用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="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    

step 3: 配置执行命令

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

step 4: 重编译winedt使上述配置生效

完成上述3个步骤,还需要进行重编译以使其生效:

点击options菜单下maintenance下的rebuildall按钮

小结

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

ps:

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

参考:

  1. Winedt自定义执行命令
  2. winedt manual

你可能感兴趣的:(科技排版,latex,winedt,texlive)