![文本和句号中的首字母缩略词位置](https://linux22.com/image/449354/%E6%96%87%E6%9C%AC%E5%92%8C%E5%8F%A5%E5%8F%B7%E4%B8%AD%E7%9A%84%E9%A6%96%E5%AD%97%E6%AF%8D%E7%BC%A9%E7%95%A5%E8%AF%8D%E4%BD%8D%E7%BD%AE.png)
我想定义一个可以在文本中重复使用的首字母缩略词。例如,
\def\JB {\selectfont\texttt{J.~}-\texttt{Bond}}}
问题是,
在句子的开头或中间,我必须使用 \JB~ 在“J. Bond”后面创建一个空格,或者,
我可以定义
\def\JB {\selectfont\texttt{J.~}-\texttt{Bond~}}}
以便可以避免“\JB~”,但是,这将在句子末尾产生问题,其中“\JB”后面如果跟着句号,则会产生“J. Bond”。
有没有办法对此进行编程,使得 \JB 在句子的开头/中间使用时在 \JB 后面插入一个空格,而如果它后面跟着句号则不插入空格?
答案1
您可以使用xspace
包,然后可以定义
\def\JB {\selectfont\texttt{J.~}-\texttt{Bond}\xspace}
如果你编译 LaTeX 文件
\documentclass{article}
\usepackage{xspace}
\def\JB {\selectfont\texttt{J.~}-\texttt{Bond}\xspace}
\begin{document}
\JB will always be \JB.
\end{document}
第一个 J. Bond 后会有空格,但第二个 J. Bond 后不会有空格。
当然,更像 LaTeX 的做法是这样定义你的命令:
\newcommand*{\JB}{\selectfont\texttt{J.~}-\texttt{Bond}\xspace}