在撰写学士论文时,我多次使用了 TEX.se 上提供的答案,但却找不到以下问题的答案:
如何使用带有词汇表包的 LaTeXTools 构建系统在我的文档中的某处获取首字母缩略词列表?
我的 MWE:
\documentclass{article}
\usepackage[acronym,nomain,toc,shortcuts,xindy]{glossaries}
\makeglossaries
\newacronym{Mr}{M$_r$}{Remanence}
\newacronym{Hc}{H$_c$}{Coercivity}
\setacronymstyle{long-short}
\begin{document}
\tableofcontents
\newpage
Here's a \ac{Mr} glossary entry.
\printglossaries
\end{document}
使用我在 Sublime Text 3 上的 MWE 和最新版本的 LaTeXTools 产生了以下输出: 使用终端(OS X 和 TeXLive 2016)和以下命令(thesis.tex 是我的文件)
xelatex thesis
makeglossaries thesis
xelatex thesis
xelatex thesis
好的,现在为什么我不直接使用终端:我有更多的需要额外命令的包等等。——这可能很明显
为什么我不使用特定于 TEX 的编辑器:到目前为止,LaTeXTools 插件已经做得很好了,而 Sublime Text 是我迄今为止见过的最方便的文本编辑器之一,所以我想继续使用它。
我已经找到一个与此相关的问题,但尚未得到完全解答(我无法链接到它,因为我已经使用了凭借我的小名声所拥有的 2 个链接...)
提前感谢任何帮助!
答案1
有几种不同的方法可以解决这个问题。
traditional
LaTeXTools 使用的构建器将启动,latexmk
因此您可以按照与为了latexmk
即,.latexmkrc
在包含主 tex 文档的目录中添加一个文件,其内容如下:
add_cus_dep('glo', 'gls', 0, 'makeglossaries');
add_cus_dep('acn', 'acr', 0, 'makeglossaries');
sub makeglossaries {
if ($silent) {
system("makeglossaries -q \"$_[0]\"");
} else{
system("makeglossaries \"$_[0]\"");
}
}
push @generated_exts, 'glo', 'gls', 'glg';
push @generated_exts, 'acn', 'acr', 'alg';
$clean_ext .= ' %R.ist %R.xdy';
我基于latexmk
示例文件和这个答案回答类似的问题。
或者,按照建议在这个问题中(我认为这是你指的那个),就是使用script
建造者。为此,在您的LaTeXTools.sublime-settings
文件中(或者,更好的是,在settings
您的Sublime 项目文件,您需要将builder
设置更改为script
,然后将builder_settings
块更改为如下内容:
"builder_settings": {
"osx": {
"script_commands": [
"pdflatex -interaction=nonstopmode -synctex=1",
"makeglossaries",
"pdflatex -interaction=nonstopmode -synctex=1",
"pdflatex -interaction=nonstopmode -synctex=1"
]
}
}
就我个人而言,我会选择前者,因为第二个选项将在每次构建时运行整个脚本,如果您处理非常长的文档,这可能会花费不必要的时间。