当词汇表可以选择使用长格式时,如何防止缩写词使用连字符?

当词汇表可以选择使用长格式时,如何防止缩写词使用连字符?

我遵循了@NicolaTalbot 给出的建议(顺便感谢你创建了出色的词汇表包!)使用词汇表包对缩写进行连字避免缩写使用连字符。

但是我有一个例子,其中缩写仍然中断,因为如果您使用命令\glsglossaries选择它是否应该采用长格式或短格式,则\acronymfont不会使用。

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[]{glossaries}

\renewcommand*{\acronymfont}[1]{\mbox{#1}}
\newacronym[sort=BayHStA]{BayHStA}{BayHStA}{Bayerisches Hauptstaatsarchiv}

\begin{document}
    \gls{BayHStA} and this is to show us that \gls{BayHStA} can break, even though it has been put into a mbox.
\end{document}

在此处输入图片描述

然而,可以应用基于@Georg 想法的修改解决方案并导致预期的行为:

\newcommand{\nonbreakableacronym}[4][]{\hyphenation{#3}\newacronym[#1]{#2}{#3}{#4}}
\nonbreakableacronym[sort=BayHStA]{BayHStA}{BayHStA}{Bayerisches Hauptstaatsarchiv}

但我喜欢 Nicolas 版本的简洁性,仅使用另一个字体命令就可以实现类似的效果glossaries吗?


添加

当您想要应用该方法时,还有一个额外的问题。那就是,它\hyphenation不喜欢以句号结尾的单词。原因如下:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[]{glossaries}

\renewcommand*{\acronymfont}[1]{\mbox{#1}}
\newcommand{\nonbreakableacronym}[4][]{\hyphenation{#3}\newacronym[#1]{#2}{#3}{#4}}
%\nonbreakableacronym[sort=BayHStA]{BayHStA}{BayHStA}{Bayerisches Hauptstaatsarchiv}
\newacronym[sort=BayHStA]{BayHStA}{bayHStA}{Bayerisches Hauptstaatsarchiv}
\nonbreakableacronym[sort=Abt.]{Abt.}{Abt.}{Abteilung}

\begin{document}
    \gls{BayHStA} and this is to show us that \gls{BayHStA} can break, even though it has been put into a mbox. \Gls{BayHStA} works as well.
    
    But I cannot use \gls{Abt.} without getting an error, because of the full stop.
\end{document}

产生错误:

! Not a letter.
<argument> Abt.
               
l.9 ...leacronym[sort=Abt.]{Abt.}{Abt.}{Abteilung}
                                                  
Letters in \hyphenation words must have \lccode>0.
Proceed; I'll ignore the character I just read.

答案1

如果你尝试

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

您将收到\asillyundefinedmacro关于未定义的错误消息。

你需要选择一种风格。

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[]{glossaries}

\setacronymstyle{long-short}

\renewcommand*{\acronymfont}[1]{\mbox{#1}}
\newacronym[sort=BayHStA]{BayHStA}{BayHStA}{Bayerisches Hauptstaatsarchiv}

\begin{document}

\gls{BayHStA} and this is to show us that \gls{BayHStA} can break, even though 
it has been put into a mbox.

\end{document}

编译后,您会收到“过满\hbox”警告,并且首字母缩略词的缩写形式不会中断。

相关内容