babel:添加语言简写以在词汇表中使用

babel:添加语言简写以在词汇表中使用

我按照描述将德语简写添加到我的英语 babel 中这里但它们不适用于词汇表,可能也不适用于讨论过的其他宏这里。我把所有缩略词作为一个单独的文件加载到序言中。

例子:

\documentclass[a4paper,12pt]{report}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel} 

\makeatletter
\initiate@active@char{"}
\addto\extrasenglish{\languageshorthands{english}\bbl@activate{"}}
\addto\noextrasenglish{\bbl@deactivate{"}}
\declare@shorthand{english}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
\makeatother

\usepackage[acronym,shortcuts]{glossaries} 
\makeglossaries  
\newacronym{CP-OFDM}{CP"~OFDM}{Cyclic Prefix OFDM}

\begin{document}   
CP"~OFDM \\
\acs{CP-OFDM}
\end{document}

我该如何解决首字母缩略词的问题?一种解决方案是将它们移到正文中,在 之后\begin{document}

答案1

网站上还有其他问题涉及类似问题

但这又引发了一个不同的问题。

正如第二个链接问题所解释的那样,只有在之后才启用简写\begin{document},并且babel有充分的理由这样做。

但是,后面的一长串缩略词\begin{document}会污染文档,因此您认为最好将它们放在序言中,这是对的。

解决方案可能是

\shorthandon{"}
<list of acronyms>
\shorthandoff{"}

并且列表也可以放在文件中,myacronyms.tex以便上述内容变成

\shorthandon{"}
\input{myacronyms}
\shorthandoff{"}

但是,对于这种设置还有更好的解决方案:

\AtBeginDocument{\input{myacronyms}}

将加载文件简写已启用,但指令仍在序言中。

如果您使用这种\shorthandon方式,请启用您需要的所有简写前缀。在这里您可以找到简写列表针对各种语言。

相关内容