![acro-package:总是使用长格式来定义缩写吗?](https://linux22.com/image/369194/acro-package%EF%BC%9A%E6%80%BB%E6%98%AF%E4%BD%BF%E7%94%A8%E9%95%BF%E6%A0%BC%E5%BC%8F%E6%9D%A5%E5%AE%9A%E4%B9%89%E7%BC%A9%E5%86%99%E5%90%97%EF%BC%9F.png)
有没有一个方便的开关可以让acro
所选的首字母缩略词始终使用长格式?我希望能够切换它。否则,我必须搜索并用(例如) 、 等替换 acro 命令\acl
(\aclp
而且我会忘记所有\acs
' 在哪里)。
后记:我目前的方法是将缩写形式定义为与完整形式相同,然后将首字母缩略词列在下面,\acuse
这样第一次出现就不会被特殊处理。致命的缺点是首字母缩略词仍然会出现在文档末尾的首字母缩略词列表中。
答案1
可以将所有首字母缩略词设置为长格式,\acro_use:n
方法是设置检查首字母缩略词的使用状态,然后相应地选择长/短/首字母形式,而不是始终使用\acro_long:n
\cs_set_eq:NN \acro_use:n \acro_long:n
这不会影响对简称或替代形式的调用,它们仍将显示为内部使用的简称/替代形式\acro_short:n
,但如果需要,\acro_alt:n
也可以将它们设置为调用形式。\acro_long:n
\ExplSyntaxOn
\cs_set_eq:NN \acro_use:n \acro_long:n
\cs_set_eq:NN \acro_short:n \acro_long:n
\cs_set_eq:NN \acro_alt:n \acro_long:n
\ExplSyntaxOff
应该从本质上关闭所有\ac
-type 宏并使它们仅扩展为长格式。
如果只想禁用一组首字母缩略词,比如那些被识别的首字母缩略词,class = maybelongonly
那么可以修改\acro_use:n
以插入首字母缩略词类的检查,并相应地正常打印(例如acro
)或仅打印长格式。要检查类\acro_get_property:nn
是否被使用,这是在 v2.7 中引入的
\documentclass{article}
\usepackage{acro}
\DeclareAcronym{ecm}{
short = ECM ,
long = Electro Chemical Machining,
class = maybelongonly,
}
\DeclareAcronym{adc}{
short = ADC ,
long = Analog-to-Digital-Converter
}
\ExplSyntaxOn
\tl_new:N \l__acro_longonly_tl
\tl_set:Nn \l__acro_longonly_tl { maybelongonly }
\cs_set_eq:NN \acro_useold:n \acro_use:n
\cs_set:Npn \acro_use:n #1 {
\acro_get_property:nn { #1 } { class }
\tl_if_eq:NNTF \l__acro_class_tl \l__acro_longonly_tl {
\acro_long:n { #1 }
}{
\acro_useold:n { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\ac{ecm}
\ac{ecm}
\acp{adc}
\Ac{ecm}
\acp{ecm}
\Iac{adc}
\end{document}
这将确保\acp{<key>}
打印始终打印长版本,并使用适当类别中首字母缩略词的适当复数形式。为了捕获对短版本或替代版本的任何明确调用(\acs
等\aca
) ,应将\acro_short:n
和\acro_alt:n
修改为\acro_use:n
。
\printacronyms
可以通过提供密钥从列表中删除这些缩写词exclude-classes=maybelongonly
。
答案2
从 v3.4 开始(与选项和属性类似first-style
)acro
,选项 subsequent-style
它设置所有首字母缩略词的第一个字母之后的所有出现的样式,设置为\acsetup{}
,初始设置为short
。它还具有财产具有相同的名称,为单个缩写设置相同的名称(当然优先于选项):
\documentclass{article}
\usepackage{acro}[2020/12/25]% v3.4 or newer
\DeclareAcronym{aa}{
short = a ,
long = the letter a
}
\DeclareAcronym{bb}{
short = b ,
long = the letter b ,
subsequent-style = long
}
\begin{document}
First: \texttt{aa}: \ac{aa}, \texttt{bb}: \ac{bb} \par
Next: \texttt{aa}: \ac{aa}, \texttt{bb}: \ac{bb}
\end{document}
答案3
解决方案是将AFTERNOTE
上面的命令与命令exclude-classes
选项一起使用printacronyms
。我必须将字段包含class = dummy
在首字母缩略词定义中(类的任何名称都可以,不必是dummy
)。
虽然不够优雅,但确实有效。欢迎提出更好的解决方案。