首字母缩略词嵌套括号

首字母缩略词嵌套括号

这个问题主要是为了收集大家的意见,希望能够找到一个好的解决方案。说了这么多,我们还是进入讨论主题和问题吧。

acronym我在工作中经常使用这个包,主要是用来写有很多缩写的文章。有时我也用它glossaries来做同样的事。我知道还有其他的。

嗯,当使用这些时,有时可能会发生首字母缩略词在括号内扩展的情况,例如,

\ac{BS} (也称为 \ac{eNB})

变得

基站 (BS)(也称为增强型节点 B (eNB))

可以看出,在第二次扩展中,它得到了嵌套的括号。为了避免这种情况,我有时在括号内使用\acs{}而不是\ac{}while。然而,可能发生的情况是,缩写词首先在括号内使用,而使用这种方法,它在第一次使用时不会被扩展。

我在读链接1链接2,虽然有人说这是可以接受的,但其他人建议重新措辞,或使用括号。有了括号,我的简单示例将变成

基站 (BS)(也称为增强型节点 B [eNB])

解决此问题的方法是,在使用首字母缩略词时始终使用括号而不是圆括号。但我不知道这是否适用于所有目的。

你有什么意见?

此外,是否可以说acronym或其他包在括号内使用括号?

\documentclass{article}

\usepackage{acronym}

\begin{document}

\begin{acronym}
  \acro{BS}{Base Station}
  \acro{eNB}{Enhanced Node B}
\end{acronym}

the \ac{BS} (also known as \ac{eNB})

\end{document}

答案1

acronym由于我不使用这个包,所以我无法提供帮助,但如果您不介意使用的glossaries话,您可以执行以下操作:

\documentclass{article}

\usepackage[shortcuts]{glossaries}

\newacronym{bs}{BS}{Base Station}
\newacronym{enb}{eNB}{Enhanced Node B}

\newcommand*{\pac}[2][]{\ifglsused{#2}{\acs[#1]{#2}}{%
 \glsunset{#2}%
 \acl[#1]{#2} [\acs[#1]{#2}]}}

\begin{document}

\ac{bs} (also known as \pac{enb}).

Later: \ac{bs} (also \pac{enb})

\end{document}

在这里,当您想要使用括号中的首字母缩略词时,只需使用\pac而不是即可。\ac

结果:

生成的文本图像

另一种方法(大多数人可能认为是过度的)是这样做:

\documentclass{article}

\usepackage[shortcuts]{glossaries}

\newcount\parencount
\DeclareRobustCommand{\openparen}{\global\advance\parencount by 1\relax
\ifodd\parencount(\else[\fi}
\DeclareRobustCommand{\closeparen}{\ifodd\parencount)\else]\fi
 \global\advance\parencount by -1\relax
}

\catcode`\(=\active
\catcode`\)=\active

\let(\openparen
\let)\closeparen

\renewcommand{\acrfullformat}[2]{#1\space\noexpand\openparen#2\noexpand\closeparen}

\newacronym{bs}{BS}{Base Station}
\newacronym{enb}{eNB}{Enhanced Node B}

\begin{document}

Some parenthesis: (outer level (inner level (getting silly))).

\ac{bs} (also known as \ac{enb}).

\end{document}

结果:

生成的文本图像

编辑:tikz警告:如果您使用括号构成命令语法的一部分的包,最好不要使用第二种方法。

编辑:(下面是一个来回切换的示例,可以通过改变和的类别代码)或改变它们的定义来实现:

\documentclass{article}

\let\orgopenparen(
\let\orgcloseparen)

\newcount\parencount
\DeclareRobustCommand{\openparen}{\global\advance\parencount by 1\relax 
\ifodd\parencount(\else[\fi}
\DeclareRobustCommand{\closeparen}{\ifodd\parencount)\else]\fi
 \global\advance\parencount by -1\relax
}

\catcode`\(=\active
\catcode`\)=\active

\let(\openparen
\let)\closeparen

\begin{document}

Some parenthesis: (outer level (inner level (getting silly))).

% restore original behaviour (changing definition)
\let(\orgopenparen
\let)\orgcloseparen

Some parenthesis: (outer level (inner level (getting silly))).

% switch back

\let(\openparen
\let)\closeparen

Some parenthesis: (outer level (inner level (getting silly))).

% restore original behaviour (changing category code)
\catcode`\(=12\relax
\catcode`\)=12\relax

Some parenthesis: (outer level (inner level (getting silly))).

\end{document}

结果:

生成的文本图像

答案2

至于原帖作者的问题:

此外,是否可以对首字母缩略词或其他包说在括号内使用括号?

是的。对于acronym包,只需使用:

\acrodef{eNB}[{[}eNB{]}]{Enhanced Node B}

请注意,您必须通过将每个放在 内来转义方括号{}

相关内容