我使用 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