避免缩写中的换行

避免缩写中的换行

i.e.我使用了 tufte-book示例中的宏e.g.。它们看起来很棒,但有时中间会出现换行符,如下例所示:

\documentclass[nobib]{tufte-book}

\usepackage{xspace}

% Macros for typesetting the documentation
\newcommand{\hairsp}{\hspace{1pt}}% hair space
\newcommand{\ie}{\textit{i.\hairsp{}e.}\xspace}
\newcommand{\eg}{\textit{e.\hairsp{}g.}\xspace}

\begin{document}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoquedd \ie  penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet 

\end{document}

避免这种情况的最佳方法是什么?

答案1

这应该是字距,而不是跳过;在字距处不能发生换行,除非它后面跟着一个可丢弃的项目(比如跳过)。

\documentclass[nobib]{tufte-book}

% Macros for typesetting the documentation
\newcommand{\hairsp}{\leavevmode\kern1pt }% hair space
\newcommand{\ie}{\textit{i.\hairsp e.\@}}
\newcommand{\eg}{\textit{e.\hairsp g.\@}}

\begin{document}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor. Aenean massa. Cum sociis
natoquedd \ie\ penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis, ultricies nec,
pellentesque eu, pretium quis, sem. Nulla consequat massa
quis enim. Donec pede justo, fringilla vel, aliquet

\end{document}

我不建议使用\xspace,但如果您真的需要它,您应该能够重新插入它。

还要注意\@句号后面的,以便将其标记为不是句子结束句号。如果你使用

\ie\ penatibus

但如果你选择

\ie{} penatibus

\xspace

答案2

可能有更好的方法来做到这一点,但如果你在定义\nolinebreak之前放置它,那么在每次使用宏时都可以防止中断。\hspace\hairsp

\newcommand{\hairsp}{\nolinebreak\hspace{1pt}}% hair space

相关内容