这个问题主要是为了收集大家的意见,希望能够找到一个好的解决方案。说了这么多,我们还是进入讨论主题和问题吧。
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}
请注意,您必须通过将每个放在 内来转义方括号{}
。