避免在首字母缩略词前换行

避免在首字母缩略词前换行

我使用 acronym 包来处理首字母缩略词。例如,我将定义一个新的首字母缩略词为,\newacro{CDN}{content delivery network}然后通过书写来使用它\ac{CDN}。第一次出现这个缩略词会打印:“内容交付网络 (CDN)”

有时缩写前会有换行符,例如在“network”之后和“(CDN)”之前。有什么方法可以避免此处换行吗?我不介意在其他位置换行,例如在“content”和“delivery”之间。

我知道有很多相关问题,但没有一个能解决我的问题。

答案1

其定义\@acf打印Full (Short)缩写为

\newcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont{\AC@acs{#1}}%
\footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
\else
\acffont{%
\AC@placelabel{#1}\AC@acl{#1}%
\nolinebreak[3] %
\acfsfont{(\acsfont{\AC@acs{#1}})}%
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi}

已经\nolinebreak[3]不鼓励使用空格,但并不禁止使用空格(见\nobreak 和 \nolinebreak 之间有什么区别?)。禁止破坏,\nolinebreak[4]或者干脆~在定义中用 代替。

\documentclass{article}
\usepackage{acronym}

\makeatletter
\renewcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont{\AC@acs{#1}}%
\footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
\else
\acffont{%
\AC@placelabel{#1}\AC@acl{#1}%
\nolinebreak[3] %
\acfsfont{(\acsfont{\AC@acs{#1}})}%
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi}
\makeatother

\newacro{PDF}{Portable Document Format}

\begin{document}
Foooooooooooooooooooooooooooooooooooooo \ac{PDF}
\end{document}

或关注克莱门斯的方法并且做得不那么有侵略性

\usepackage{etoolbox}
\makeatletter
\patchcmd\@acf
  {\AC@acl{#1}\nolinebreak[3] \acfsfont{(\acsfont{\AC@acs{#1}})}} % search
  {\AC@acl{#1}\nolinebreak[4] \acfsfont{(\acsfont{\AC@acs{#1}})}} % replace
  {} % success
  {} % failure
\makeatother

相关内容