我想在我的笔记中包含一个符号列表,并尝试使用 nomencl 包来执行此操作。不幸的是,我无法让它出现。我没有看到任何错误消息,也没有输出。我的编译设置是基于 vimtex 和 latexmk 的,我想知道如何将它合并到其中。我的问题的简略版本如下。Main.tex 提供主文档,latex.lua 是我在 neovim 中的 vimtex 设置,而 latexmkrc 是我的 latexmk 设置。我确信可以进行许多改进,但浏览几个教程和相关问题尚未找到解决方案。有什么想法吗?
主文本
\documentclass{memoir}
\usepackage{nomencl}
\makenomenclature
\begin{document}
\renewcommand{\nomname}{List of Symbols}
\renewcommand\nomgroup[1]{%
\item[\bfseries
\ifstrequal{#1}{M}{Mathematical symbols}{%
\ifstrequal{#1}{O}{Other symbols}{}}}%
]}
\nomenclature[M]{\(\RR\)}{Real numbers}
\printnomenclature
\end{document}
latex.lua
vim.g.vimtex_compiler_latexmk = {
background = 1,
build_dir = 'build',
callback = 1,
executable = 'latexmk',
options = {
'-xelatex',
'-synctex=1',
'-interaction=nonstopmode',
'-shell-escape',
},
}
.latexmkrc
@cus_dep_list = (@cus_dep_list, "glo gls 0 makenomenclature");
sub makenomenclature {
system("makeindex $_[0].glo -s nomencl.ist -o $_[0].gls"); }
@generated_exts = (@generated_exts, 'glo');
$pdflatex = 'xelatex -synctex=1 --interaction=nonstopmode -shell-escape -file-line-error %O
答案1
您main.tex
有一个错误,该行 末尾
\ifstrequal{#1}{O}{Other symbols}{}}}%
有一个多余的内容,应该是。 也没有定义,所以我添加了,但可能您想要加载一个包。}
\ifstrequal{#1}{O}{Other symbols}{}}%
\RR
\newcommand\RR{RR}
您的电话.latexmkrc
似乎有问题$pdflatex
,我们还想将glo
and替换gls
为nlo
and nls
as
@cus_dep_list = (@cus_dep_list, "nlo nls 0 makenomenclature");
sub makenomenclature {
system("makeindex $_[0].nlo -s nomencl.ist -o $_[0].nls"); }
@generated_exts = (@generated_exts, 'nlo');
$pdflatex = 'xelatex --synctex=1 --interaction=nonstopmode --shell-escape --file-line-error %O %S'
然后在命令行上使用 进行编译latexmk -pdf main.tex
(需要-pdf
,否则latexmk
似乎默认为latex
)。
不过,我不认为这$pdflatex
行代码是调用的首选方式xelatex
,因为它会覆盖并硬编码latexmk
标志pdflatex
(修复--shell-escape
active 不是一个好主意)。您可以直接执行
latexmk -xelatex [flag options to xelatex] file
我还没有用 neovim/vimtex 测试过,但看起来你的latex.lua
就是这么做的,在这种情况下
主文本
\documentclass{memoir}
\usepackage{nomencl}
\makenomenclature
\newcommand\RR{RR}
\begin{document}
\renewcommand{\nomname}{List of Symbols}
\renewcommand\nomgroup[1]{%
\item[\bfseries
\ifstrequal{#1}{M}{Mathematical symbols}{%
\ifstrequal{#1}{O}{Other symbols}{}}%
]}
\nomenclature[M]{\(\RR\)}{Real numbers}
\printnomenclature
\end{document}
.latexmkrc
@cus_dep_list = (@cus_dep_list, "nlo nls 0 makenomenclature");
sub makenomenclature {
system("makeindex $_[0].nlo -s nomencl.ist -o $_[0].nls"); }
@generated_exts = (@generated_exts, 'nlo');
如果您在 vimtex 中触发编译,则应该可以工作。如果这不起作用,请先尝试不使用build_dir = 'build',
in latex.lua
,makeindex
可能需要调整调用以考虑到build_dir
。