使用 Acro 处理缩写和首字母缩略词时出错:acro.sty 中的控制序列未定义

使用 Acro 处理缩写和首字母缩略词时出错:acro.sty 中的控制序列未定义

我一直在尝试acro在报告中使用缩写术语。它大部分情况下都有效,但每次编译都需要干预才能完成,并且对我的第一页做了一些事情,留下了 =1 和分页符。任何帮助都将不胜感激。

\documentclass[A4, 12pt]{article}

% for abbreviations and acronyms
\usepackage[first-style=long]{acro}

\DeclareAcronym{ma}{
  short = MA ,
  long  = Multiple Access ,
}

\DeclareAcronym{noma}{
  short = NOMA ,
  long  = Non-Orthongonal Multiple Access ,
}

% title info
\title{Beamforming for Millimeter-wave \acs{noma}}
\author{Cian Dowd}
\date{21/01/2019}

\begin{document}
\pagenumbering{roman}
\maketitle

% ABSTRACT
\begin{abstract}
    In this paper\ldots
\end{abstract}

% TABLE OF CONTENTS
\tableofcontents

% LIST OF ACRONYMS
\printacronyms

% INTRODUCTION
\pagenumbering{arabic}
\setcounter{page}{1}
\setcounter{section}{0}
\section{Introduction}
\ac{noma}\ldots


% LITERATURE REVIEW
\setcounter{section}{1}
\section{Background/ Literature Review}

% Background on Current MA
\subsection{Existing \acf{ma}}

\end{document}

这将产生以下文档;其下方显示有错误。

流浪‘1’ page break Tex 的主体

我收到这些消息,最后出现错误:

(/usr/local/texlive/2016basic/texmf-dist/tex/latex/acro/acro.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3kernel/l3pdfmode.def))
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
)
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e
.sty)
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/l3packages/xtemplate/xtempla
te.sty)
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/oberdiek/zref-abspage.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/oberdiek/zref-base.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/etexcmds.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/ifluatex.sty)))
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty)
 (/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/ifpdf.sty))
(/usr/local/texlive/2016basic/texmf-dist/tex/latex/oberdiek/auxhook.sty))
(/usr/local/texlive/2016basic/texmf-dist/tex/generic/oberdiek/atbegshi.sty))
Runaway argument?
{\bool_if:NT \l__acro_sort_bool {\cs_new_protected:Npn \acro_sort_prop:NN \ETC.
! Forbidden control sequence found while scanning use of \g@addto@macro.
<inserted text> 
                \par 
l.2965                         = \c_minus_one

这对应于 acro.sty 的第 2965 行,但我不确定为什么,也不知道如何修复此问题。以下是 acro.sty 的相关代码片段:

        \seq_sort:Nn \l__acro_tmpa_seq
          {
            \int_compare:nTF
              {
                \acro_strcmp:nn
                  { \str_fold_case:n {##1} }
                  { \str_fold_case:n {##2} }
                    = \c_minus_one
              }
              { \sort_return_same: }
              { \sort_return_swapped: }
          }

答案1

该常量\c_minus_one已于 2018 年年底的弃用轮次中从 LaTeX3 中删除。acro.sty但仍在使用它,这会导致新版本的 LaTeX3 内核出现问题。请参阅https://bitbucket.org/cgnieder/acro/issues/116/acro-errors-due-to-update-c_minus_one

您可以手动编辑acro.sty并将 更改为\c_minus_one-1但请记住,通常强烈反对对已分发文件进行此类编辑。在这种情况下,编辑可能是合理的,因为如果没有它,文件将无法使用,并且 的更新版本acro.sty将使修复变得不必要,并会覆盖您的修复版本。

您还可以恢复该命令(类似于https://github.com/latex3/latex3/commit/c96faed90a5a63ba84695190560bdacac1dfdacc#diff-645783629830bdaaeede08f6ea12cb15) 之前acro已加载。

\usepackage{expl3}
\ExplSyntaxOn
\tex_let:D \c_minus_one \scan_stop:
\int_const:Nn \c_minus_one {-1}
\ExplSyntaxOff

% for abbreviations and acronyms
\usepackage[first-style=long]{acro}

编辑 埃格尔请提出我原始建议的精简版本。

我猜 LaTeX3 团队也不想看到这种情况,因此,在acro维护人员修复该问题之前,您只能面临几个糟糕的选择。

相关内容