如何重新定义“\ ”(即“ “)?

如何重新定义“\ ”(即“ “)?

在 (La)TeX 中,有没有办法重新定义命令(即“<backslash> <space>”)?

我有很多文本,其中在“。”字符之后用作不可中断的空格,例如Dr.\ Mr.\ ,并且我想使输出中的该空格比正常空格短一点。

请注意,我确实不是想要更改文本,而是重新定义序言中的宏。这可能吗?

答案1

我强烈建议不要这样做,但这是可以做到的。该命令\是原始的,意思是“正常空间”,因此会出现在各个地方,特别是的定义\nobreakspace。因此,对的“安全”重新定义\必须至少处理以下问题:

\documentclass{article}
\let\hardspace\ %
\DeclareRobustCommand*\nobreakspace{\leavevmode\nobreak\hardspace}
%\let\ ~
\begin{document}

Some text to show that this is now a non-breaking space in a demo:
Mr.\ Black.

\let\ ~

Some text to show that this is now a non-breaking space in a demo:
Mr.\ Black.

\end{document}

我在上面的序言中注释掉了,\let\ ~以便演示显示更改的效果,但在实际情况下,你会将它应用于所有内容。正如其他人指出的那样,你真的应该使用正确的标记来区分“强制”正常空格和不间断空格。

答案2

例如,从的定义开始~

\makeatletter
\def\hallospace{\penalty\@M \kern0.3em} % say, 0.3em
\let\oldspace=\ %
\let\ =\hallospace
\makeatother

(并且记得~将来用作牢不可破的空间)。

相关内容