# How can I make a pair of words stick together in line breaks?

How can I make a pair of words stick together in line breaks? For example, "MS Access". I don't want a line break in the middle. But, I'd like to set this up once, not at every occurrence of that word pair.

edit: Check out Sveinung's answer for two possible problems - overfull line, and hyphenation. For sure, I don't want that.

-
You could define a command, say \newcommand{\msaccess}{MS~Access}, which you could than use in your text. If you decide not to secure that space you just change it inside the definition. –  Ronny Feb 23 '13 at 21:37
@Ronny: What do you mean by "If you decide not to secure that space you just change it inside the definition."? –  Emanuel Berg Feb 23 '13 at 21:42
@Ronny means, that if you decide that you don't want to prevent the linebreak in this word pair, you can just change it in the commands definition. –  Benedikt Bauer Feb 23 '13 at 21:44
Thanks Benedikt, that's what I meant. The main discipline (while writing) is to use the command \msaccess in every occurrence ;) –  Ronny Feb 23 '13 at 21:45
Well, it's kind of meant more general. I use this approach for mathematical notations, that i might change during the process of writing. Then i only have to change the notation at one place, not via search and replace. That's why i use own commands a lot. –  Ronny Feb 23 '13 at 21:48

The correct answer may be that you put the two word in an \mbox{keep together}. Then you also avoid hyphenation (but not overfull lines).

The flip side of defining such words as macro, is that macros eat spaces. Therefore, you have to write the command \MSaccess{} in you text. Instead you may use the package xspace, and define the command:

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


Unfortunately, there is situations where xspace does not work, and may be it is better to define the command using def:

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


Now you can write \MSA/ (notice the slash), and LaTeXwill not eat the space. If you use small caps, be sure that the font you use has real small caps, and of course, small caps has to be letterspaced (see Bringhurst, The Elements of Typographic Style).

I agree with Anon in his answer. Typographically it is better to have a line break between MS and Access than have a sloppy paragraph or an overfull line (a line sticking out in the right margin), or even worse

that Ac-
cess is hyphenated.


I suggest that you write your article, and when your are finished, as the last thing you do when proof reading, is to check if you have some places where you have a line break between MS and Access and then put the words in an \mbox{MS Access}.

This MWE demonstrates some of the differencies:

\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 demostrate that
\MSaccess without \emph{xspace} eats spaces.

Here is the text which only purpose is to demostrate the wonders
\emph{xspace} do for \MSaccessx with \emph{xspace} eats spaces. But look here
«\MSaccessx», and how we get a space before the nice, French sitation 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}


-
Yes, those two cases that you mention - overfull line, and hyphenated - are even worse. With your two solutions, are they still possible? Also, what do you mean with macros eat spaces? I have the Abbrev minor mode in Emacs, and it appears it just inserts the more complicated command every time I type msa followed by space. Isn't that equivalent to just typing it literally? –  Emanuel Berg Feb 24 '13 at 11:07
I have updated my answer with a MWE and an explanation. \mboxavoids hyphenation, but not overfull lines. Using the editor's auto-completion facility (as you describe) is something else than defining LaTeX-macros. –  Sveinung Feb 24 '13 at 16:11

I don't know if there's a built-in mechanism like \hyphenation for this, but you could simply define own commands for such word groups, for example

\newcommand{\MSaccess}{MS~Access}


which you then can use in the text.

Usage:

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


should output

Some random text MS Access, some more text

where there is no line break allowed between MS and Access.

As user Sveinung pointed out in the comments, the above command will still allow hyphenation of the involved words, i.e. MS<linebreak>Access would be forbidden, but LaTeX could possibly hyphenate it toMS Ac-<linebreak>cess. This may be OK in some cases, especially when the words that should be kept together are rather long. If also hyphenation shall not be allowed, one can change the command from above to

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


which will then also prevent hyphenation.

-
Yes, but that will be a bit disruptive. I'm writing a paper on MS Access (don't laugh!) and I write that all the time. To pause, and actually write the command, will not be optimal. I guess I could do a search-and-replace last thing, but still, I'll hold my breath for a solution the way I had in mind. –  Emanuel Berg Feb 23 '13 at 21:44
What do you mean with "to pause"? You just have to enter an additional ´´. And yes, I already thought about some ironic comment on writing about MS Access in LaTeX ;-) –  Benedikt Bauer Feb 23 '13 at 21:47
I mean a mental pause, to write the command instead of just the way you would like any other words. But it is still a good suggestion, just not 100% the way I like it. –  Emanuel Berg Feb 23 '13 at 21:48
There is no need to define a special command. Simply write MS~Access. As Knuth explains in "Breaking Paragraphs into Lines", sometimes computers just need our help ;-) –  Sašo Živanović Feb 23 '13 at 22:12
Btw, maybe your editor can help you? You could define an abbreviation, say msa, to expand into MS~Access. –  Sašo Živanović Feb 23 '13 at 22:13

You do not need to define any macro.

Simply learn to type MS~Access. The tilde is TeX's syntax for preventing a break. (IIRC, how it works is that it creates a very high penalty for a break at that spot.)

The macro business in the other answers is a red herring. The tilde does the work, whether in a macro expansion or not.

-
I think this should be a comment rather than an answer. Moreover, for recurring instances of the same thing, it's advisable to define a macro. Why? Because tomorrow you might think it fancy to emphasize the fact that this is a product name by writing it \textsc{MS~Access}. And if your original usage is spread across different files, keeping things consistent would be problematic. As reference, see Consistent typography. –  Werner Feb 24 '13 at 4:08
The word "the" recurs frequently. Do you have a macro for it? Anyway, macros for recurring instances has nothing to do with the topic of this question, which is how to get TeX not to break MS away from Access across a new line. –  Anon Mar 3 '13 at 3:16