Vamos dar uma olhada em algum fragmento aleatório de texto que estou escrevendo. Eu tenho $k\in{1\dots,K}$ escrito como um $k\in\{1\dots,K\}$
aqui, que fica separado e não me agrada muito:
O que você aconselharia usar, para manter partes do código juntas, para tratá-las como uma espécie de "células"/"tijolos" que são colocadas no texto como um todo e não divididas na próxima linha?
Responder1
Usar
${k\in\{1\dots,K\}}$
${...}$
não pode haver uma quebra de linha
Responder2
O TeX só quebra uma fórmula automaticamente em 2 lugares: depois de um operador binário ou relacional. Eles são controlados através dos parâmetros \binoppenalty
e \relpenalty
. Se você definir ambos como 10.000, nunca haverá interrupção. Se você fizer isso localmente em uma fórmula, ela será aplicada somente lá. Então uma definição como
\newcommand\nobreakformula{\relpenalty10000\relax \binoppenalty 10000\relax}
pode ser seu amigo (talvez com um nome de comando mais curto :-))
Se você quiser evitar apenas uma única quebra em uma fórmula, mas não todas, então você pode usar \nolinebreak
no ponto onde o TeX quebrou. No entanto, você pode acabar com uma pausa ainda menos desejável, então isso realmente depende da situação (portanto, use esse tipo de ajuste fino apenas se o seu documento estiver quase pronto). Por exemplo, se usarmos no showcase abaixo, $a+b =\nolinebreak c+d+e$
o TeX irá quebrar, após a +
o que eu acho que é pior do que quebrar após o sinal de igual.
O uso de um grupo de contraventamento ou de contraventamento \mbox
é menos aconselhável, pois fará com que a fórmula seja sempre definida em sua largura nominal, independentemente de quanto alongamento ou encolhimento ocorre dentro da linha. Você pode ver isso muito bem no exemplo a seguir:
\documentclass{article}
\usepackage{calc}
\begin{document}
\newlength\normwidth
\newcommand\myline{A test $a+b=c$ with $1+1$ formulas inside}
\settowidth\normwidth{\myline}
Spreading a line b 0, 5,15,25 and 50 points:
\indent \mbox{\myline}
\makebox[\normwidth+5pt][s]{\myline}
\makebox[\normwidth+15pt][s]{\myline}
\makebox[\normwidth+25pt][s]{\myline}
\makebox[\normwidth+50pt][s]{\myline}
\bigskip
Contrast this with using a brace group or \verb=mbox= on the first formula:
\renewcommand\myline{A test ${a+b=c}$ with $1+1$ formulas inside}
\indent \mbox{\myline}
\makebox[\normwidth+5pt][s]{\myline}
\makebox[\normwidth+15pt][s]{\myline}
\makebox[\normwidth+25pt][s]{\myline}
\makebox[\normwidth+50pt][s]{\myline}
\bigskip
\newcommand\nobreakformula{\relpenalty10000\relax \binoppenalty 10000\relax}
Testing \verb=\nobreakformula=:
Some sample text to make this break inside the first formula
A test $ a+b=c + d + e$ with $1+1$ formulas inside
And now with suppression:
Some sample text to make this break inside the first formula
A test $\nobreakformula a+b=c + d + e$ with $1+1$ formulas inside
\end{document}
o que resulta nesta saída: