¿Qué debo hacer para crear "celdas" de código que no se separen?

¿Qué debo hacer para crear "celdas" de código que no se separen?

Echemos un vistazo a un fragmento aleatorio de texto que estoy escribiendo. Tengo $k\in{1\dots,K}$ escrito aquí $k\in\{1\dots,K\}$, que se separa y realmente no me agrada:

ingrese la descripción de la imagen aquí

¿Qué recomendaría utilizar para mantener partes del código juntas, para tratarlas como una especie de "celdas"/"ladrillos" que se colocan en el texto como un todo y no se dividen en la siguiente línea?

Respuesta1

Usar

 ${k\in\{1\dots,K\}}$

${...}$no puede tener un salto de línea

Respuesta2

TeX solo divide una fórmula automáticamente en 2 lugares: después de un operador binario o relacional. Se controlan a través de los parámetros \binoppenaltyy \relpenalty. Si configura ambos en 10000, nunca habrá interrupción. Si lo hace localmente en una fórmula, se aplicará solo allí. Entonces una definición como

\newcommand\nobreakformula{\relpenalty10000\relax \binoppenalty 10000\relax}

podría ser tu amigo (quizás con un nombre de comando más corto :-))

Si desea evitar solo una interrupción en una fórmula, pero no todas, puede usarla \nolinebreaken el punto donde TeX se rompió. Sin embargo, puede terminar con una pausa aún menos deseable, por lo que realmente depende de la situación (así que utilice este tipo de ajuste sólo si su documento está a punto de estar listo). Por ejemplo, si en el ejemplo siguiente utilizamos $a+b =\nolinebreak c+d+e$TeX se romperá, después a +de lo cual creo que es peor que romperse después del signo igual.

El uso de un grupo de refuerzo o el uso de \mboxes menos aconsejable ya que dará como resultado que la fórmula siempre se establezca en su ancho nominal independientemente de cuánto estiramiento o contracción se produzca dentro de la línea. Puedes ver esto muy bien en el siguiente ejemplo:

\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}

lo que da como resultado esta salida:

ingrese la descripción de la imagen aquí

información relacionada