使用 vimtex / latexmk 编译设置时不显示命名法

使用 vimtex / latexmk 编译设置时不显示命名法

我想在我的笔记中包含一个符号列表,并尝试使用 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,我们还想将gloand替换glsnloand nlsas

@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-escapeactive 不是一个好主意)。您可以直接执行

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.luamakeindex可能需要调整调用以考虑到build_dir

相关内容