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:
¿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 \binoppenalty
y \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 \nolinebreak
en 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 \mbox
es 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: