我用acro
首字母缩略词包。在下面的例子中,我定义了首字母缩略词“iid”,它以句号结尾。如果我在句子末尾使用它,我会得到两个句号。
我怎样才能自动避免这种情况?
平均能量损失
\documentclass{article}
\usepackage{acro}
\DeclareAcronym{iid}{short=i.i.d.,long=independent and identically distributed}
\begin{document}
The random variables A and B are \ac{iid}.
Likewise, the random variables C and D are \ac{iid}.
\end{document}
输出
The random variables A and B are independent and identically distributed (i.i.d.).
Likewise, the random variables C and D are i.i.d..
第一句话没有问题。问题在于第二句话末尾的两个句号。
答案1
这正是\acdot
为了管理
\documentclass{article}
\usepackage{acro}
\DeclareAcronym{iid}{short=i.i.d\acdot,long=independent and identically distributed}
\begin{document}
The random variables A and B are \ac{iid}.
Likewise, the random variables C and D are \ac{iid}.
\end{document}
但是,在第一次出现时可能会出现一些意外行为,\ac{iid}
因为命令后面跟着一个点,但\acdot
完整形式的出现在括号内,而不是直接出现在句号之前。这是故意的,并且acro
\acspace
文档给出了一个抑制字符的示例之内基于尾随标记的首字母缩写可能是可取的。
但在这种情况下,用括号代替句号就不太合适了。没有用户界面仅在特定上下文中停用尾随字符,但我们可以修改模板long-short
(或正在使用的任何非默认模板)以避免这种情况,并在打印第一个样式时\acro_trailing_action_deactivate:n
停用对字符的检查,dot
以便在这些情况下\acdot
可靠地扩展。.
\ExplSyntaxOn
\RenewAcroTemplate{long-short}{%
\acroiffirstTF{%
\acro_trailing_action_deactivate:n {dot}
\acrowrite{long}%
\acspace(%
\acroifT{foreign}{\acrowrite{foreign}, }%
\acrowrite{short}%
\acroifT{alt}{ \acrotranslate{or} \acrowrite{alt}}%
\acrogroupcite
)%
}%
{\acrowrite{short}}%
}
\ExplSyntaxOff
的效果\acro_trailing_action_deactivate:n
是局部的,因此\acs{iid}.
会继续吸收额外的塞音,而第一次使用\ac{iid}
和任何进一步的使用\acf{iid}
都不会抑制括号内短形式中的塞音。
答案2
尝试按照 acro 手册第 19 节将最后一个句点替换为\acdot
,。这似乎还支持其他一些标点符号。对于您的示例,它应如下所示:
\documentclass{article}
\usepackage{acro}
\DeclareAcronym{iid}{short=i.i.d\acdot,long=independent and identically distributed}
\begin{document}
The random variables A and B are \ac{iid}.
Likewise, the random variables C and D are \ac{iid}.
\end{document}