O que devo fazer para criar "células" de código que não estejam sendo separadas?

O que devo fazer para criar "células" de código que não estejam sendo separadas?

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:

insira a descrição da imagem aqui

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 \binoppenaltye \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 \nolinebreakno 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:

insira a descrição da imagem aqui

informação relacionada