缩写、互换描述和缩写

缩写、互换描述和缩写

我正在使用缩写包。通常,如果我输入这样的缩写:

 This is a system with \ac{LTI} propertiesSystem. It can be ...

pdf 显示的内容如下:

这是一个具有线性、时不变 (LTI) 属性的系统。它可以是...

但我想要这样的东西:

这是一个具有 LTI(线性、时不变)特性的系统。它可以...

我如何设置首字母缩写词包,以便将括号放在描述周围而不是首字母缩写词周围?

编辑:

我现在尝试使用这个自定义命令:

\newcommand{\A}[1]{\acs{#1} (\aclu{#1})}

它首先显示首字母缩写,然后在括号中显示完整版本。但如果我稍后使用相同的首字母缩写,则会一次又一次地显示完整描述。我更希望它只在第一次显示...

答案1

为了全面交换首字母缩略词和描述,可以重新定义\@acf\acfa表示单数形式,\@acfp\acfpa表示复数形式。 它们的定义如下

\newcommand*{\acfa}[1]{%
   \texorpdfstring{\protect\@acf{#1}}{\AC@acl{#1} (#1)}}
\newcommand*{\@acf}[1]{%
    \ifAC@footnote
       \acsfont{\AC@acs{#1}}%
       \footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
    \else
       \acffont{%
          \AC@placelabel{#1}\AC@acl{#1}%
          \nolinebreak[3] %
          \acfsfont{(\acsfont{\AC@acs{#1}})}%
        }%
     \fi
     \ifAC@starred\else\AC@logged{#1}\fi}

\newcommand*{\acfpa}[1]{%
   \texorpdfstring{\protect\@acfp{#1}}{\AC@aclp{#1} (\AC@acsp{#1})}}
\newcommand*{\@acfp}[1]{%
   \ifAC@footnote
      \acsfont{\AC@acsp{#1}}%
      \footnote{\AC@placelabel{#1}\AC@aclp{#1}{}}%
   \else
      \acffont{%
         \AC@placelabel{#1}\AC@aclp{#1}%
         \nolinebreak[3] %
         \acfsfont{(\acsfont{\AC@acsp{#1}})}%
         }%
   \fi
   \ifAC@starred\else\AC@logged{#1}\fi}

改变相当简单——交换短 ( \AC@acs{#1}) 和长 ( \AC@acl{#1}) 形式,并用括号括住长形式,而不是短形式:

\documentclass{article}
\usepackage{acronym}

\newacro{CSS}{Cascading Style Sheets}
\newacro{CD}{Compact Disc}

\makeatletter
% singular:
\renewcommand*{\acfa}[1]{%
  \texorpdfstring{\protect\@acf{#1}}{#1 (\AC@acl{#1})}%
}
\renewcommand*{\@acf}[1]{%
  \ifAC@footnote
    \acsfont{\AC@acs{#1}}%
    \footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
  \else
    \acffont{%
      \AC@placelabel{#1}%
      \acfsfont{\acsfont{\AC@acs{#1}}}%
      \nolinebreak[3] %
      (\AC@acl{#1})%
    }%
  \fi
  \ifAC@starred\else\AC@logged{#1}\fi
}

% plural:
\renewcommand*{\acfpa}[1]{%
  \texorpdfstring{\protect\@acfp{#1}}{\AC@acsp{#1} (\AC@aclp{#1})}
}
\renewcommand*{\@acfp}[1]{%
  \ifAC@footnote
    \acsfont{\AC@acsp{#1}}%
    \footnote{\AC@placelabel{#1}\AC@aclp{#1}{}}%
  \else
    \acffont{%
      \AC@placelabel{#1}%
      \acfsfont{\acsfont{\AC@acsp{#1}}}%
      \nolinebreak[3] %
      (\AC@aclp{#1})%
    }%
  \fi
  \ifAC@starred\else\AC@logged{#1}\fi
}
\makeatother

\begin{document}

\ac{CSS}

\acp{CD}

\end{document}

答案2

缩写包 v1.47 更新(2020/04/17)

\makeatletter
%% singular:
\renewcommand*{\acfa}[2][\AC@linebreakpenalty]{%
   \texorpdfstring{\protect\@acf[#1]{#2}}{#2 (\AC@acl{#2})}}
\renewcommand*{\@acf}[2][\AC@linebreakpenalty]{%
    \ifAC@footnote
       \acsfont{\AC@acs{#2}}%
       \footnote{\AC@placelabel{#2}\AC@acl{#2}{}}%
    \else
       \acffont{%
          \AC@placelabel{#2}%             
          \acfsfont{\acsfont{\AC@acs{#2}}}%
          \nolinebreak[#1] %
          (\AC@acl{#2})%
        }%
     \fi
     \ifAC@starred\else\AC@logged{#2}\fi}
\makeatother

\acr也可以作为使用两者(正常\ac和反向)的自己的命令:

\makeatletter
\newcommand*{\acr}{\AC@starredfalse\protect\@acr}%
\newcommand{\@acr}[2][\AC@linebreakpenalty]{%
  \ifAC@dua
     \ifAC@starred\acl*{#2}\else\acl{#2}\fi%
  \else
     \expandafter\ifx\csname AC@\AC@prefix#2\endcsname\AC@used%
     \ifAC@starred\acs*{#2}\else\acs{#2}\fi%
   \else
     \acs{#2} (\aclu{#2})%
   \fi
  \fi}
\makeatother

相关内容