我目前正在使用 IEEEtran 类撰写一篇文章。我想使用该包acro
来管理我的首字母缩略词并\printacronyms
在文章开头显示首字母缩略词列表。它通常在单列文档中工作正常,但在双列中,如果首字母缩略词太长,则会超出首字母缩略词定义。此外,左列的首字母缩略词应以粗体显示,但 IEEEtran 不再如此。
这是一个最小工作示例
\documentclass[10pt,journal]{IEEEtran}
\usepackage{lipsum}
\usepackage[template=tabularray]{acro}
\DeclareAcronym{a}{
short=aaa,
long=aaaaa,
}
\DeclareAcronym{b}{
short=bbbbbbbb,
long=bbbbbbb bbbbbbb bbbbbbb,
}
\begin{document}
\section*{Nomenclature}
\printacronyms
\section{Introduction}
\lipsum[1]
\ac{a} \ac{b}
\lipsum[1]
\end{document}
生成结果:
感谢您的帮助!
答案1
所以这里有两件事发生:1.IEEEtran
重新定义了标准 LaTeXdescription
环境,acro
默认使用,2. 您尝试应用tabularray
列表模板失败。
修复默认设置
acro
列表我们可以重新定义description
环境或修改acro
列表模板使用不同的环境。IEEEtran
使标准 LaTeXdescription
环境可用,因为LaTeXdescription
后者可能是最好的。我们可以重新定义acro
列表描述模板使用\RenewAcroTemplate[list]{description}{% \acroheading \acropreamble \begin{LaTeXdescription} \acronymsmapF{% \item[\acrowrite{short}\acroifT{alt}{/\acrowrite{alt}}] \acrowrite{list}% \acroifanyT{foreign,extra}{ (}% \acroifT{foreign}{\acrowrite{foreign}\acroifT{extra}{, }}% \acroifT{extra}{\acrowrite{extra}}% \acroifanyT{foreign,extra}{)}% \acropagefill \acropages {\acrotranslate{page}\nobreakspace} {\acrotranslate{pages}\nobreakspace}% } {\item\AcroRerun} \end{LaTeXdescription} }
或者为了避免对模板进行硬编码,我们可以在使用时对其进行本地修补
\printacronyms
\begingroup \let\description\LaTeXdescription \let\enddescription\endLaTeXdescription \printacronyms \endgroup
要使用
tabularray
列表模板,我们需要做一些事情。acro
不再使用包选项来设置这样的事情,\acsetup
而是倾向于使用,尽管我不确定这template=tabularray
是否是一个有效的包选项来acro
。您应该会收到包裹警告
Package acro Warning: Unknown option `template' (acro) I don't know the option `template'. Please make sure (acro) there is no typo. Check the manual for help.
检查第 5 节设置选项
acro
manual 我们看到\acsetup{<options>}
是首选。\acsetup{template=tabularray}
产生错误,因此转到第 11 节打印列表我们看到它是\acsetup{list/template=tabularray}
。这会产生另一个错误! Package acro Error: The template `tabularray' needs the package `tabularray' (acro) loaded on line 21
这很简单,加载
tabularray
打包新的列表模板已激活并编译成功。
以下代码适用于任一解决方案,只需注释掉\acsetup{list/template=tabularray}
即可获得默认描述版本。
\documentclass[10pt,journal]{IEEEtran}
\usepackage{lipsum}
\usepackage{tabularray}
\usepackage{acro}
\acsetup{list/template=tabularray}
\RenewAcroTemplate[list]{description}{%
\acroheading
\acropreamble
\begin{LaTeXdescription}
\acronymsmapF{%
\item[\acrowrite{short}\acroifT{alt}{/\acrowrite{alt}}]
\acrowrite{list}%
\acroifanyT{foreign,extra}{ (}%
\acroifT{foreign}{\acrowrite{foreign}\acroifT{extra}{, }}%
\acroifT{extra}{\acrowrite{extra}}%
\acroifanyT{foreign,extra}{)}%
\acropagefill
\acropages
{\acrotranslate{page}\nobreakspace}
{\acrotranslate{pages}\nobreakspace}%
}
{\item\AcroRerun}
\end{LaTeXdescription}
}
\DeclareAcronym{a}{
short=aaa,
long=aaaaa,
}
\DeclareAcronym{b}{
short=bbbbbbbb,
long=bbbbbbb bbbbbbb bbbbbbb,
}
\begin{document}
\section*{Nomenclature}
\printacronyms
\section{Introduction}
\lipsum[1]
\ac{a} \ac{b}
\lipsum[1]
\end{document}