18

In Latex, it is possible to insert a space that does not end a line by a ~ character. So writing Fig.~\ref{fig:f1} will write as

Fig. 1

and it makes sure that text wrapping never breaks a line between Fig. and the number 1.

However, in Rmarkdown writing Fig.~\@ref(fig:f1), Fig.\~\@ref(fig:f1), or Fig.\\~\@ref(fig:f1 translates to Fig.\textasciitilde{}\ref{fig:f1} giving

Fig.~1

in the output. How do you insert the equivalent of ~ in rmarkdown? I am actually using bookdown.

highBandWidth
  • 16,751
  • 20
  • 84
  • 131

3 Answers3

15

Insert a non breaking space manually using regular HTML:

...Fig. \@ref{fig:f1}...
Werner
  • 14,324
  • 7
  • 55
  • 77
  • 1
    Great! It even translates correctly to Latex and PDF (i.e., non HTML formats). – highBandWidth Jun 07 '16 at 17:11
  • Thanks so much! This even works if used in a r inline code chunk, e.g. within `\`r paste0(x, " ", y)\``. Very handy! (I tried this in the `docx` output) – bamphe Jul 15 '20 at 15:32
6

Use \ i.e. backslash then a space.

Fig.\ \@ref{fig:f1}

You could also use $~$, but this works only for PDF.

Fig.$~$\@ref{fig:f1}
Anthony Ebert
  • 675
  • 14
  • 25
0

~ is just a shortcut for \nobreakspace{}. You can directly use the underlying macro to avoid rmarkdown interfering with the tilde:

test\nobreakspace{}test