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

注册于 6年前

回答
4
文章
0
关注者
0

经过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相应源码处。

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

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

把证明对其一点,估计更好看代码如下:
documentclass[a4paper,12pt]{ctexart}
usepackage{geometry}
geometry{left=3.17cm,right=3.17cm,top=2.54cm,bottom=2.54cm}
usepackage{amsmath}
usepackage{calc}
usepackage{zhnumber}%自定义环境“problem”,中文数字表示需要。
%一下为自定义环境problem
%----- definition of problem environment -----%
newcounter{thesucounter}
newenvironment{problem}[1][]{

                    \stepcounter{thesucounter}
                    \par\noindent
                    \makebox[25mm][l]{\textbf{\zhnum{thesucounter}、【#1分】}}
                    }{
                    \par\vspace{8mm}%生成一段高度为12pt plus 4pt minus 4pt 德垂直空白。
                    }
                    

begin{document}
section{第一题}
setcounter{thesucounter}{0}
begin{problem}[5]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[10]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[5]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[20]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}
begin{problem}[5]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[10]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[5]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}

begin{problem}[20]
证明 Rolle 定理:如果函数 $f(x)$ 在闭区间 $[a, b]$ 上连续,在开区间 $(a, b)$ 上可导,并且 $f(a) = f(b)$,那么存在至少一个$c\in (a, b)$,使得 $f'(c) = 0$。
end{problem}
end{document}

证明.png

发布
问题