acro 包中的首字母缩略词列表在 IEEEtran 双栏文档中无法正确显示

acro 包中的首字母缩略词列表在 IEEEtran 双栏文档中无法正确显示

我目前正在使用 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列表模板失败。

  1. 修复默认设置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
    

    显示 acro 描述列表模板的编译

  2. 要使用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 节设置选项 acromanual 我们看到 \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打包新的列表模板已激活并编译成功。

    展示 acro 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}

相关内容