请问在MAC上用sublime(安装LatexTools插件)编辑tex文件时,如何配置makeglossaries

发布于 2026-05-11 20:52:52

请问用sublime编辑tex文件时,如何配置makeglossariessublime调用进行词汇表编译?我查了下百度,说是在 sublime Text → tools → build system → new build system 进行配置,但是操作后还是不行。

百度AI给出的方法如下:
在 Sublime Text 中配置构建系统‌
创建自定义 .sublime-build 文件,例如命名为 LaTeXWithGlossaries.sublime-build,内容如下:

{
    "cmd": ["latexmk", "-pdf", "-dvi-",
            "-jobname=${file_base_name}",
            "-synctex=1",
            "-interaction=nonstopmode",
            "${file}"],
    "file_regex": "^(...*?):([0-9]+):?([0-9]+):? (.*)$",
    "working_dir": "${file_path}",
    "selector": "text.tex.latex",
    "variants": [
        {
            "name": "Make Glossaries",
            "cmd": ["makeglossaries", "${file_base_name}"],
            "working_dir": "${file_path}"
        }
    ]
}

此配置使用 latexmk 自动处理编译流程(包括调用 makeglossaries),但若需手动触发,可通过 Tools → Build With… → Make Glossaries 执行。

查看更多

关注者
0
被浏览
79
4 个回答
Sagittarius Rover
这家伙很懒,什么也没写!

几个建议:

  • 首先不要盲目地听信AI直接修改配置文件
  • 要理解任何配置(sublime/vscode/texstudio)的本质都是编辑器在按照某套既定的规则帮助你在命令行输入命令
  • 基于上一点,应该先构造一个最简单的测试样例
\documentclass{article}
\usepackage{glossaries}
\makeglossaries

\newglossaryentry{latex}{
    name={LaTeX},
    description={A document preparation system}
}

\begin{document}

This document is written using \gls{latex}.

\printglossaries

\end{document}
  • 确保某一组命令在命令行测试编译通过
  • 最后再研究sublime的配置要如何设置这套「既定的规则」

要正确编译上面的文档,有两种方案:

1.多次编译:

pdflatex main
makeglossaries main
pdflatex main

2.或者使用latexmk,但也不能太直接一步到位,参考这个链接

在codex老师的帮助下,我发现我在windows下需要微调一下.latexmkrc

add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');

sub run_makeglossaries {
    my ($base_name, $path) = fileparse( $_[0] ); #handle -outdir param by splitting path and file, ...
    pushd $path; # ... cd-ing into folder first, then running makeglossaries ...

    if ( $silent ) {
        # system "makeglossaries -q '$base_name'"; #unix
        system "makeglossaries", "-q", "$base_name"; #windows
    }
    else {
        # system "makeglossaries '$base_name'"; #unix
        system "makeglossaries", "$base_name"; #windows
    };

    popd; # ... and cd-ing back again
}

再用

latexmk -pdf main

image.png

现在要做的,就是如何把上述配置移植到 sublime 风格的配置文件上,让他实际上做和上面命令行完全相同的事。

梦见李玉湖
梦见李玉湖 23小时前
这家伙很懒,什么也没写!

谢谢大佬指点,还是用多次编译最保险,虽然麻烦点,但能正确运行。其余的方案都不行,运行提示编译失败,可能是还有隐蔽设置没注意到。

梦见李玉湖
梦见李玉湖 23小时前
这家伙很懒,什么也没写!

另外还发现个问题,用sublime打开.tex文件,用skim查看相应的pdf。然后在终端下用xelatex直接编译.tex文件时,编译出来的pdf文件在skim里是无法使用shfit+cmd+左键进行反向定位到sublime相应的位置。

梦见李玉湖
梦见李玉湖 1小时前
这家伙很懒,什么也没写!

经过Sagittarius Rover大佬的指点,采用直接修改配置文件的方法,实现tex词汇表自动编译,详细步骤如下:
1、打开sublime的LaTeXTools插件的配置文件,有两种方法,

(1)通过MAC的Finder(访达):打开MAC的Finder(访达)窗口,按快捷键shift+command+G,在弹出栏(前往文件夹)中填入:/Users/mac/Library/Application Support/Sublime Text/Packages/User ,然后回车,进入文件夹后打开配置文件LaTeXTools.sublime-settings
此方法如不适用则采用下面第二种方法。

(2)通过Sublime Text菜单栏打开:Sublime Text ➡️ PackageSettings ➡️ LaTeXTools ➡️ Setting ,点击后会打开配置文件LaTeXTools.sublime-settings

2、在配件文件中找到// Platform settings: adapt as needed for your machine,正确设置“osx”中的"texpath",确保包含makeglossaries 和 makeindex 的安装路径。

并将makeglossaries 和 makeindex 的安装路径加入环境变量($PATH)。MAC设置环境变量$PATH的方法请另行参阅其他资料。

我的"texpath":"/usr/local/texlive/2026/bin/x86_64-darwinlegacy:/usr/local/texlive/2026/texmf-dist/scripts/glossaries:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:$PATH", 注意要保留$PATH"最后的英文逗号。

其中:
makeindex安装路径为为/usr/local/texlive/2026/bin/x86_64-darwinlegacy
makeglossaries安装路径为/usr/local/texlive/2026/texmf-dist/scripts/glossaries

3、在配件文件中找到// Platform settings: adapt as needed for your machine,正确设置“osx”中的"sublime_executable": "/Users/mac/Downloads/Sublime Text.app/Contents/MacOS",上面是sublime可执行文件的安装路径,可能因设备及系统不同而有差异,我的安装路径仅供参考。

4、在配件文件中找到// Build engine settings,设置"builder": "script",设置"builder_settings"中的"osx" : {},在大括号中填入如下内容:
"script_commands": [

            "xelatex -synctex=1 -interaction=nonstopmode",
            "makeglossaries",
            "xelatex -synctex=1 -interaction=nonstopmode",
            "xelatex -synctex=1 -interaction=nonstopmode"
        ]
        

5、在配件文件中找到// Viewer settings,设置"viewer": "skim",设置"viewer_settings":{}中的"osx" : {},在大括号中填入如下内容:
"sycn_tex_after_build":true

6、command+s保存设置,或在关闭配置文件LaTeXTools.sublime-settings按提示保存设置。

7、在SKIM的选项➡️同步设置中,勾选“检查文件变化”、“自动重新加载”两个选项,PDF-TeX同步支持中预设为Sublime Text,命令subl,参数"%file":"%line"

8、退出Sublime Text,重新进入后打开你的.tex文档,按下shift+command+B,在弹出栏中选择compile to pdf - Script Builder,此时Sublime Text会按照之前定义的脚本自动执行编译,xelate先编译一次,然后makeglossaries编译一次,最后xelate再编译两次,完成预定的编译。

直接按command+B,执行编译也可以,各位可自行测试与按下shift+command+B,选择脚本编译是否有区别。

9、正向定位:每次编译完成后,先按commad+L,再按V,可以直接从sublime Text(源码光标处)正向定位到SKIM的pdf相应位置。如果不是在每次编译完成后第一次正向定位,那么则需要先按commad+L,再按J,再先按commad+L,再按v,来从sublime Text(源码光标处)正向定位到skim的pdf相应位置。

如果.tex文件没有任何改动,执行编译后先按commad+L,再按V,会切换到skim,但不会正向定位到sublime Text源码光标处所对应的skim pdf位置,此时仍需执行上面的“先按commad+L,再按J,再先按commad+L,再按v,来从sublime Text(源码光标处)正向定位到skim的pdf相应位置。”

10、反向定位:在skim的pdf中,shift+command+左键单击想要定位的地方,即可反向定位到sublime Text相应源码处。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览