美文网首页工具癖开源工具技巧
使用Notepad++配置Latex编译环境

使用Notepad++配置Latex编译环境

作者: 五排五座 | 来源:发表于2016-12-21 17:09 被阅读1875次

完成配置,一次成功,正反向搜索正常,我的天哪,太好用了!

最近又拾起latex在空余时间写点文档,码字还是一如既往的使用Notepad++,遂想着何不趁此机会配置一下Notepad++下latex的编译环境。在实践此事之前,我一直妄自推断,觉得配置过程肯定会很繁琐,又不知会因哪里出现的报错而卡壳。当通过Google找到John Bruer的博文LaTex Editing Using Notepad++时,我告诫自己要耐心耐心再耐心,尽可能搞懂步骤中的每一点,即使出现报错也不会慌乱。

准备工作

  1. CTEX,我使用的是200多兆的Basic版,版本号2.9.2.164,试用过2.9.3的测试版后觉得还不稳定;
  2. Notepad++,由于插件NppExec不支持64位Notepad++,请安装32位版本;
  3. NppExec,在32位Notepad++的插件管理器中,可以轻松找到NppExec并安装;
  4. SumatraPDF,支持正反向搜索的轻量级PDF阅读器;
  5. CMCDDE,用于向SumatraPDF发送DDE命令。

pdflatex_build.bat

检查一下NppExec插件是否安装成功,可以查看插件菜单中是否已经有子菜单NppExec
batch文件是本文的重点,插件NppExec就是通过调用该batch文件来实现对Notepad++中的.tex文件进行编译的,编译成功后调用SumatraPDF显示生成的PDF文件。我在这里直接贴上了John Bruer博文中的版本,下面集合了本文出现的batch命令的说明,很简单。

@echo off
if "%~x1"==".tex" goto pdflatex
   echo "%~f1" is not a recognized type, extension is "%~x1"
   pause
   exit /b
 
:pdflatex
   cd /d "%~dp1"
   IF NOT EXIST "%~dp1\build" mkdir build
 
   start "inverseSearch" /min "%PROGRAMFILES(x86)%\SumatraPDF\SumatraPDF.exe" -inverse-search "\"%PROGRAMFILES(x86)%\Notepad++\notepad++.exe\" -n%%l \"%%f\"" -reuse-instance
 
   pdflatex.exe -draftmode -interaction=batchmode -aux-directory="%~pd1\build" -output-directory="%~pd1\build" "%~pdn1"
   echo. && echo.
   bibtex.exe "%~dp1\build\%~n1.aux"
   echo. && echo.
   pdflatex.exe -draftmode -interaction=batchmode -aux-directory="%~pd1\build" -output-directory="%~pd1\build" "%~pdn1"
   echo. && echo.
   pdflatex.exe -interaction=batchmode -synctex=-1 -aux-directory="%~pd1\build" -output-directory="%~pd1\build" -quiet "%~pdn1"
   echo. && echo.
   
   type "%~dp1\build\%~n1.log" | findstr Warning:
   
   start "openPDF" "%PROGRAMFILES(x86)%\SumatraPDF\SumatraPDF.exe"  "%~dp1\build\%~n1.pdf" -reuse-instance
 
   echo SUMATRA>"%~dp1\build\cmcdde.tmp"
   echo control>>"%~dp1\build\cmcdde.tmp"
   echo [ForwardSearch("%~dp1\build\%~n1.pdf", "%~f1", %2, 0, 0, 0)]>>"%~dp1\build\cmcdde.tmp"
 
   "%PROGRAMFILES(x86)%\cmcdde.exe" @"%~dp1\build\cmcdde.tmp"
 
   del "%~dp1\build\cmcdde.tmp"
   exit /b

变量

batch文件的语法可以专门研究一下,这里为节省大家的时间,我只解释上文中出现的几个要点。
首先是"%x1"、"%f1"、"%dp1"、"%pdn1"、"%~n1"这些变量代表什么。假如新建一个test.bat文件并输入下面几行简单命令。

@echo off
echo "%~x1"
echo "%~f1"
echo "%~dp1"
echo "%~pdn1"
echo "%~n1"

在同一目录下新建一个文档text.txt,然后在命令行窗口中输入test.bat text.txt

D:\batchtest>test.bat test.txt

输出如下

".txt"
"D:\batchtest\text.txt"
"D:\batchtest\"
"D:\batchtest\text"
"text"

ECHO

@echo off
echo. && echo.

@echo off 包括本行在内,所有命令不输出。
echo. 空一行。

EXIT

exit [/b] [exitcode]

/b When used in a batch script, this option will exit only the script (or subroutine) but not CMD.EXE
exitcode Sets the %ERRORLEVEL% to a numeric number. If quitting CMD.EXE, set the process exit code no.

CD

cd [/d] [drive:][path]

/d change the current DRIVE in addition to changing folder.

START

start "title" [/d path] [options] "command" [parameters]

title Text for the CMD window title bar (required).
path Starting directory.
command The command, batch file or executable program to run.
parameters The parameters passed to the command.

Options Descriptiions
/min Start window Minimized.
/max Start window Maximized.
/w or /wait Start application and wait for it to terminate.(for an internal cmd command or a batch file this runs CMD /K)
... ...

TYPE

type [filename] 

This batch command prints the content of a file or files to the output.

FINDSTR

findstr string(s) [pathname(s)] [/R] [/C:"string"] [/G:StringsFile] [/F:file] [/D:DirList] [/A:color] [/OFF[LINE]] [options]

string Text to search for.
pathname(s) The file(s) to search.

路径

batch文件中出现的“%PROGRAMFILES(x86)%”是环境变量,默认指向"C:\PROGRAMFILES(x86)"。由于我习惯把软件安装在D盘,所以上文中所有的路径都要改成我的本地对应。改完后是这样:

start "inverseSearch" /min "D:\Program Files\SumatraPDF\SumatraPDF.exe" -inverse-search "\"D:\Program Files (x86)\Notepad++\notepad++.exe\" -n%%l \"%%f\"" -reuse-instance

你也发现了,我安装的是64位的SumatraPDF,32位的Notepad++,原因上面也讲过了。
至此,我的batch文件就准备好了。

NppExec设置

在Notepad++中点击菜单"插件">NppExec>Execute ...,在弹出的窗口中输入如下命令:

  NPP_SAVE
  C:\\pdflatex_build.bat "$(FULL_CURRENT_PATH)" $(CURRENT_LINE)

第一行代码的作用是将当前的文档进行保存。第二行代码即调用之前准备好的pdflatex_build.bat文件,将当前文档的完整路径传递给它进行编译,此外将光标所在行也一并传递。
点击Save...进行保存,保存为文件名pdflatex_build。至此,已经可以试验一下,能否顺利编译.tex文件。使用Notepad++打开一份之前已经写好的.tex文件,使用快捷键F6或选择菜单“插件”>NppExec>Execute...。在弹出的窗口中,于下拉窗口中选择pdflatex_build,点击OK。
上述操作过程可以设置快捷键,方便每次编译的调用。选择菜单“插件”>NppExec>Advanced options...。在弹出的窗口中,在Item name输入框中输入一个名称,比如Run pdflatex。在Associated script下拉菜单中选择pdflatex_build。点击Add/Modify按钮,将刚刚设置的Menu item添加至上方的列表中。确定将Place to the macros submenu前的选框被选中后,点击OK退出。现在就可以在菜单“宏”下看到刚刚添加的Run pdflatex菜单了,下次编译可以直接点击该菜单,或者再给它定义一个快捷键。点击菜单“设置”>管理快捷键...,在弹出的窗口中,点击Plugin commands标签页,找到Run pdflatex并给它定义一个快捷键,延续Jhon bruer的用法,设置为“Alt + ~”。点击关闭退出设置窗口。
至此,可以愉快的使用Notepad++编辑.tex文件,可以方便的通过快捷键一键编译,编译完成会自动打开pdf文件。同时,可以快速的反向搜索,即在pdf文件中双击某一行文本,可以找到.tex文件中对应位置并高亮显示。

正向搜索

正向搜索在使用时是这样的,在.tex文件中把光标放置在需要的行,使用快捷键,跳转到pdf文件并将目标段落高亮显示。有了上面的经验,正向搜索设置起来就很容易了。
新建一个batch文件pdflatex_forward.bat,输入如下内容:

@echo off
if "%~x1"==".tex" goto doit
   echo "%~f1" is not a .tex file, extension is "%~x1"
   pause
   exit /b
 
:doit

   echo SUMATRA>"%~dp1\build\cmcdde.tmp"
   echo control>>"%~dp1\build\cmcdde.tmp"
   echo [ForwardSearch("%~dp1\build\%~n1.pdf", "%~f1", %2, 0, 0, 0)]>>"%~dp1\build\cmcdde.tmp"
 
   "%PROGRAMFILES(x86)%\cmcdde.exe" @"%~dp1\build\cmcdde.tmp"
 
   del "%~dp1\build\cmcdde.tmp"

将第13行中的路径改成本地放置cmcdde.exe的位置。
ForwardSearch命令一共有6个参数,它们的含义分别是:

  • Full path to the PDF file
  • Full path to the LaTeX source file
  • Line number of the source file
  • Column number of the source file (currently unused, so pass 0)
  • New window? Pass 1 to open the PDF file in a new window
  • Focus? Pass 1 to give SumatraPDF focus

按照上面配置NppExec插件和快捷键的方法,对pdflatex_forward.bat文件操作一遍。快捷键可以设成“Alt + A”。

结语

本文介绍的方法均建立在我个人的使用习惯基础上,不管编不编程,Notepad++都是我的装机必备,能在其中愉快地编辑编译latex,对我而言是值得花时间配置一下的。记下本文也是为了未来装机有个笔记可参考,如果能够帮到有同样需求的同学,当然就更好了。

相关文章

  • 使用Notepad++配置Latex编译环境

    完成配置,一次成功,正反向搜索正常,我的天哪,太好用了! 最近又拾起latex在空余时间写点文档,码字还是一如既往...

  • Notepad++编译运行java代码

    首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境 在Notepad++上面的选...

  • ubuntu latex

    latex配置进度 latex_atom 仅仅只能编译英文,中文的解决方案没找到 配置ATOM_latex报错 c...

  • LaTex

    使用Sublime Text+LaTeXTools+Skim配置latex环境。 [TOC] 安装MacTeX M...

  • 用LaTeX和PPT写学术论文

    用LaTeX写PPT写学术论文 [TOC] 配置LaTeX LaTeX使用技巧 PPT绘图技巧 配置LaTeX 系...

  • notepad++配置java、python、c/c++运行环境

    平时需要写一些小程序练习,但又不想安装各种软件。最近研究了notepad++配置几种语言的编译环境,整理如下。 安...

  • 小试牛刀--Python爬虫BeautifulSoup使用

    python爬数据小试牛刀--beautifulSoup使用 1.环境配置 编译环境:python 2.7 编译器...

  • Notepad++ 配置c/c++编译环境

    Notepad++是一套为自由软件的纯文本编辑器,它可以用来编译多种语言。本文主要讲述如何在Notepad++上配...

  • LaTeX教程(2):第一篇文章

    在上一篇文章中LaTeX教程(1):安装配置运行环境 - 简书,我们已经介绍了怎么配置LaTeX环境,在这里我们将...

  • LaTeX杂货铺

    本页内容为本人在使用LaTex写文档过程中遇到的问题及解决 1.用xelatex编译引擎编译latex源码文件时,...

网友评论

    本文标题:使用Notepad++配置Latex编译环境

    本文链接:https://www.haomeiwen.com/subject/xeiqvttx.html