使用词汇表包对缩写进行连字

使用词汇表包对缩写进行连字

不幸的是,我意识到,使用词汇表包的缩写功能会导致行尾较长的缩写出现不必要的连字符。

下面的代码是演示此行为的一个示例:

\documentclass{scrreprt}
\usepackage[acronyms,shortcuts]{glossaries}

\newacronym{RuPhos}{RuPhos}{abbreviation with more than three letters}

\begin{document}

\noindent
this is a random text to ensure hyphenation of the abbreviation  word fills the linei
 \acs{RuPhos}  
this is a random text to ensure hyphenation of the abbreviation 
this is a random text to ensure hyphenation of the abbreviation 
this is a random text to ensure hyphenation of the abbreviation

\end{document}

使用 pdflatex 或 latex、dvips、ps2pdf 编译此代码会导致“RuP-hos”。

我知道可以将短格式放在 mbox 中以防止连字符

\newacronym{RuPhos}{\mbox{RuPhos}}{abbreviation with more than three letters}

或者使用以下命令手动指定连字符

\hyphenation{RuPhos}

但我想知道是否有更方便甚至自动化的方法来实现这一点。

答案1

由于缩写的格式是这样的,\acronymfont您可以这样做:

\renewcommand*{\acronymfont}[1]{\mbox{#1}}

如果您使用的是更改格式的样式(例如,小型大写字母),则也请包含字体更改命令。例如:

\documentclass{scrreprt}
\usepackage[acronyms,shortcuts]{glossaries}

\setacronymstyle{long-sc-short}
\renewcommand*{\acronymfont}[1]{\mbox{\textsc{#1}}}

\newacronym{RuPhos}{RuPhos}{abbreviation with more than three letters}

\begin{document}

\noindent
this is a random text to ensure hyphenation of the abbreviation  word fills the
linei
 \acs{RuPhos}  
this is a random text to ensure hyphenation of the abbreviation 
this is a random text to ensure hyphenation of the abbreviation 
this is a random text to ensure hyphenation of the abbreviation

\end{document}

答案2

如果您对提供的解决方案感到满意,并且只想自动化它们,那么您可以添加

\let\oldnewacronym\newacronym
\renewcommand\newacronym[3]{\oldnewacronym{#1}{\mbox{#2}}{#3}}

或者

\let\oldnewacronym\newacronym
\renewcommand\newacronym[3]{\hyphenation{#2}\oldnewacronym{#1}{#2}{#3}}

在您加载glossaries包之后但在定义首字母缩略词之前。

相关内容