如果在首字母缩略词环境中使用,则对首字母缩略词进行不同的处理

如果在首字母缩略词环境中使用,则对首字母缩略词进行不同的处理

我有许多相互依赖的首字母缩略词,我希望找到一种方法来确定某个首字母缩略词的使用是否在首字母缩略词环境中,如果是,则以不同于如果不是的方式进行处理。

也就是说,我想要这样的东西:

\documentclass[a4paper, 10pt]{report}

\usepackage{amsmath,amsfonts,amsthm}        % Math packages
\usepackage[pdftex]{graphicx}   % Enable pdflatex


\usepackage[printonlyused]{acronym}
\usepackage{etoolbox}

\makeatletter
\newcommand{\acy}{\protect\@acy}%
\newcommand{\@acy}[1]{%
  \ifAC@acro
    \acl*{#1}%
  \else
    \acf{#1}
  \fi
}
\makeatother

\begin{document}

\begin{acronym}
\acro{q}[$Q$]{\acy{rms}reactive power}
\acro{rms}{root mean square}
\end{acronym}

\section{Text}

The \ac{q} is..... \ac{rms}...


\end{document}

结果是:

想要的结果

这可能吗?

答案1

感谢 Tarass 发布了答案并提供了解决方案。自从它重新定义以来,我对其进行了一些修改\ac,我希望它是可选的。

这是解决方案。

\documentclass[a4paper, 10pt]{report}
\usepackage[utf8]{inputenc} 
\usepackage[english]{babel}                 % English language/hyphenation
\usepackage{amsmath,amsfonts,amsthm}        % Math packages
\usepackage[pdftex]{graphicx}               % Enable pdflatex


\usepackage[printonlyused]{acronym}
\usepackage{etoolbox}

\newif\ifACR
\ACRfalse

\makeatletter
\newcommand{\acy}{\protect\@acy}%
\newcommand{\@acy}[1]{%
  \ifACR
    \acl*{#1}%
  \else
    \acf{#1}
  \fi
}
\makeatother


%%% Begin document
\begin{document}

\begin{acronym}
\ACRtrue
\acro{q}[$Q$]{\acy{rms} reactive power}
\acro{rms}{root mean square}
\ACRfalse
\end{acronym}

\section{Text}

The \ac{q} is..... \ac{rms}...

\end{document}

再次感谢@Tarass!

相关内容