![我怎样才能使一对单词在换行符中粘在一起?](https://linux22.com/image/263495/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E4%BD%BF%E4%B8%80%E5%AF%B9%E5%8D%95%E8%AF%8D%E5%9C%A8%E6%8D%A2%E8%A1%8C%E7%AC%A6%E4%B8%AD%E7%B2%98%E5%9C%A8%E4%B8%80%E8%B5%B7%EF%BC%9F.png)
如何让一对单词在换行符处粘在一起?例如,“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}}
这也会阻止连字符。