Tabularray 表中的首字母缩略词未展开

Tabularray 表中的首字母缩略词未展开

在我的 tabularray 表中,缩写词(使用缩写包)没有像预期的那样展开。只有缩写词的缩写形式才会打印,即使缩写词在文档中第一次出现也是如此。解决方法是使用长版本 \acl{阿克罗} 然后是 (\acs{阿克罗}) 从我的角度来看,我在 MWE 第 3 行中使用的不是一个解决方案。

\documentclass[12pt]{article}
\usepackage{tabularray}
\usepackage[printonlyused]{acronym}
\usepackage{hyperref} 

\begin{document}
    I lost my \ac{USB} stick.

    \begin{tblr}[long]{ 
        colspec = {c Q[0.6\textwidth] c},
        vlines, hlines}
        No. & Interface & Year\\
        1 & \ac{HDMI} is a proprietary audio/video interface for transmitting \ldots & 2002\\
        2 & \ac{DVI} is a video display interface developed by the \ac{DDWG}. & 1999\\
        3 & \acl{SATA} (\ac{SATA}) is a computer bus interface \ldots & 2000

    \end{tblr}
    I found my \ac{USB} stick!

    \section{Abbreviations}

    \begin{acronym}[TDMA]
        \acro{USB}{Universal Serial Bus}
        \acro{DVI}{Digital Visual Interface}
        \acro{DDWG}{Digital Display Working Group}
        \acro{SATA}{Serial AT Attachment}
        \acro{HDMI}{High Definition Multimedia Interface}
    \end{acronym}
\end{document}

在此处输入图片描述

答案1

我们遇到这个明显的错误是因为tabularray必须渲染每个单元格两次:第一次只是测量单元格的大小,第二次是实际排版表格时。感谢一个要求acro包作者那里,tabularray现在有一个布尔变量,我们可以检查它来发现是否tabularray正在测量单元格的大小或实际打印最终产品。

以下是我们如何利用该tabularray钩子来处理该acronym包。此解决方案至少需要 tabularray 版本 2023A 2023-03-01。

  1. 我们创建了在环境中使用的新命令tblr(从技术上讲,我们可以在任何地方使用它们),用于测试 的布尔值\lTblrMeasuringBool。如果为真,则tabularray表示正在测量单元格大小,并且我们不希望它将首字母缩略词标记为已使用,因此我们让它改用带星号的首字母缩略词命令。如果为假,则我们按原样继续进行。
  2. 我们将对环境acronym中的包宏的调用更改tblr为我们刚刚创建的宏的名称。
\documentclass[12pt]{article}
\usepackage{tabularray}
\usepackage[printonlyused]{acronym}
\usepackage{hyperref} 

\newcommand\tblrac[1]{%
    \IfBooleanT{\lTblrMeasuringBool}{\ac*{#1}}%
    \IfBooleanF{\lTblrMeasuringBool}{\ac{#1}}}
\newcommand\tblracp[1]{%
    \IfBooleanT{\lTblrMeasuringBool}{\acp*{#1}}%
    \IfBooleanF{\lTblrMeasuringBool}{\acp{#1}}}

\begin{document}
    I lost my \ac{USB} stick.

    \begin{tblr}[expand=\expanded,long]{ 
        colspec = {c Q[0.6\textwidth] c},
        vlines, hlines}
        No. & Interface & Year\\
        1 & \tblrac{HDMI} is a proprietary audio/video interface for transmitting \ldots & 2002\\
        2 & \tblrac{DVI} is a video display interface developed by the \tblracp{DDWG}. & 1999\\
        3 & \tblrac{SATA} is a computer bus interface \ldots & 2000

    \end{tblr}
    I found my \ac{USB} stick!

    \section{Abbreviations}

    \begin{acronym}[TDMA]
        \acro{USB}{Universal Serial Bus}
        \acro{DVI}{Digital Visual Interface}
        \acro{DDWG}{Digital Display Working Group}
        \acro{SATA}{Serial AT Attachment}
        \acro{HDMI}{High Definition Multimedia Interface}
    \end{acronym}
\end{document}

上述代码排版输出的截图

您可能注意到我已将您的“DDGW”首字母缩略词改为复数。虽然这在上下文中没有意义,但它演示了如何将这个问题的答案扩展到其他acronym包命令,其中有 21 个: 列出 21 条命令的首字母缩略词包文档的屏幕截图

相关内容