缩写列表中的大写字母代码与其他自定义命令冲突

缩写列表中的大写字母代码与其他自定义命令冲突

我正在写一份包含许多首字母缩略词的大型报告,其中一些缩略词相互包含。我询问了让他们以特定方式执行此操作的方法,并得到了非常好的答案。包含其他缩写词的缩写词

现在我发现我希望我的首字母缩略词在列表中以大写字母开头,并且我找到了一种方法来做到这一点,将首字母缩略词列表中的首字母大写,但当我尝试一起使用它们时,我收到两个错误 Argument of \@acx has an extra },并且Paragraph ended before \@acx was completed

这是一个最小的例子

\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}


\makeatletter
\patchcmd{\AC@@acro}{] #3}{] \MakeUppercase #3}{}{}
\patchcmd{\AC@@acro}{] #3}{] \MakeUppercase #3}{}{}
\makeatother

\makeatletter
\newcommand{\acx}{\protect\@acx}%
\newcommand{\@acx}[1]{%
  \ifAC@dua
    \acf{#1}%
  \else
    \expandafter\ifx\csname ac@#1\endcsname\AC@used
      \acs{#1}%
    \else
      \acl{#1}%
    \fi
  \fi
}
\makeatother

\begin{document}

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

\section{Text}

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

\end{document}

编辑:

我希望结果看起来像这样:

结果

为什么会发生这种情况?我该如何解决?

答案1

像这样?

过早扩张

\documentclass[a4paper, 10pt]{report}
\usepackage[printonlyused]{acronym}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\AC@@acro}{] #3}{] \expandafter\MakeUppercase#3}{}{}
\makeatother

\makeatletter
\newcommand{\acx}{\protect\@acx}%
\newcommand{\@acx}[1]{%
  \ifAC@dua
    \acf{#1}%
  \else
    \expandafter\ifx\csname ac@#1\endcsname\AC@used
      \acs{#1}%
    \else
      \acl{#1}%
    \fi
  \fi
}
\makeatother

\begin{document}

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

\section{Text}

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

\end{document}

相关内容