我怎样才能使一对单词在换行符中粘在一起?

我怎样才能使一对单词在换行符中粘在一起?

如何让一对单词在换行符处粘在一起?例如,“MS Access”。我不想在中间换行。但是,我想设置一次,而不是每次出现该单词对时都设置。

编辑:看看 Sveinung 的回答,了解两个可能的问题 - 行过满和连字符。当然,我不想要那样。

答案1

正确的答案可能是将两个单词放在一个 中\mbox{keep together}。这样可以避免连字符,但不会造成行数过满。

您可以定义一个宏来帮助您在编写时节省一些时间:

\newcommand{\MSaccess}{\textsc{ms~access}}

缺点是宏会占用空格。因此,在文本中,您必须\MSaccess{}避免宏后面的空格消失。您可以尝试加载包空间,并将命令定义为:

\newcommand{\MSaccessx}{\textsc{ms~access}\xspace}

不幸的是,有些情况下它xspace不起作用,使用 -command 定义命令可能会TeX更好def

\def\MSA/{\mbox{\textsc{ms~access}}}

然后,你就可以输入\MSA/(注意斜线),并且LaTeX不会占用后面的空格。不幸的是,这样的命令对于美式英语以外的键盘来说可能不太方便。

如果你在宏中使用小型大写字母,请确保你使用的字体具有真正的小型大写字母,当然,小型大写字母必须有字母间距(参见 Bringhurst,印刷风格的要素)。实际上,也MS应该按照 Bringhurst 的规定设置字母间距。

我同意 Anon 的回答:从排版上看,MS和之间的换行Access比凌乱的段落或过满的行(右边距突出的一行)看起来更好。甚至更糟

will be that `Ac-
cess` is hyphenated.

我建议您撰写文章,完成后,作为校对时的最后润色,检查换行符以查看是否有在MS和之间有换行符Access(或 Access 带有连字符)的地方,然后将单词放在\mbox{MS Access}.

此 MWE 展示了一些差异:

\documentclass[onepage]{article}
\usepackage{lmodern,xspace}
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}


\newcommand{\MSaccess}{\textsc{MS}~Access} % NB! \textsc has no effect
\newcommand{\MSaccessx}{\textsc{MS}~Access\xspace}
\def\MSA/{\mbox{\textsc{ms~access}}}

\begin{document}
\thispagestyle{empty}

Here is a text which only purpose is to demonstrate that
\MSaccess without \emph{xspace} eats spaces.


Here is the text which only purpose is to demonstrate the wonders 
\emph{xspace} does for \MSaccessx and that \emph{xspace} does not eat spaces. But look here 
«\MSaccessx», and how we get a space before the nice, French citation mark (NB! 
\emph{xspace} may be configured to avoid this).

And here is the eminent `def`-macro that does not eat any spaces, as I state,
\MSA/ is OK, and does not fail because of strange punctuation, «\MSA/».

\end{document}

在此处输入图片描述

答案2

您不需要定义任何宏。

只需学会输入 MS~Access。波浪号是 TeX 防止中断的语法。(如果我没记错的话,它的工作原理是,它会对那个位置的中断产生非常高的惩罚。)

其他答案中的宏业务只是转移注意力的噱头。波浪号可以完成工作,无论是否在宏扩展中。

答案3

我不知道是否有这样的内置机制\hyphenation,但你可以简单地为这样的词组定义自己的命令,例如

\newcommand{\MSaccess}{MS~Access}

然后您就可以在文本中使用它了。

用法:

Some random text \MSaccess{}, some more text...

应该输出

一些随机文本 MS Access,一些更多文本

MS和之间不允许换行Access

正如用户 Sveinung 在评论中指出的那样,上述命令仍将允许对相关单词进行连字,即将MS<linebreak>Access被禁止,但LaTeX可能会将其连字为MS Ac-<linebreak>cess。在某些情况下,这可能是可以的,尤其是当应该放在一起的单词相当长时。如果还不允许连字,可以将上述命令更改为

\newcommand{\MSaccess}{\mbox{MS Access}}

这也会阻止连字符。

相关内容