Was muss ich tun, um Code-„Zellen“ zu erstellen, die nicht getrennt werden?

Was muss ich tun, um Code-„Zellen“ zu erstellen, die nicht getrennt werden?

Schauen wir uns einen beliebigen Textausschnitt an, den ich gerade schreibe. Ich habe $k\in{1\dots,K}$ $k\in\{1\dots,K\}$hier als a geschrieben, was abgetrennt wird und mir nicht wirklich gefällt:

Bildbeschreibung hier eingeben

Was würden Sie empfehlen, um Teile des Codes zusammenzuhalten, sie also als eine Art „Zellen“/„Bausteine“ zu behandeln, die als Ganzes in den Text eingefügt und nicht in die nächste Zeile aufgeteilt werden?

Antwort1

Verwenden

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

${...}$darf keinen Zeilenumbruch haben

Antwort2

TeX unterbricht eine Formel nur an zwei Stellen automatisch: nach einem binären oder einem relationalen Operator. Diese werden über die Parameter \binoppenaltyund gesteuert \relpenalty. Wenn Sie beide auf 10000 setzen, wird es nie zu einer Unterbrechung kommen. Wenn Sie dies lokal in einer Formel tun, wird es nur dort angewendet. Eine Definition wie

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

könnte dein Freund sein (vielleicht mit einem kürzeren Befehlsnamen :-))

Wenn Sie nur einen einzigen Umbruch in einer Formel verhindern möchten, aber nicht alle, können Sie \nolinebreakan der Stelle verwenden, an der TeX umgebrochen hat. Sie könnten jedoch am Ende einen noch weniger wünschenswerten Umbruch erhalten, es hängt also wirklich von der Situation ab (verwenden Sie diese Art der Feinabstimmung also nur, wenn Ihr Dokument als Nächstes fertig sein muss). Wenn wir beispielsweise in der unten gezeigten Demonstration verwenden, $a+b =\nolinebreak c+d+e$wird TeX danach umgebrochen, a +was meiner Meinung nach schlimmer ist als ein Umbruch nach dem Gleichheitszeichen.

Die Verwendung einer Klammergruppe oder von \mboxist weniger ratsam, da dies dazu führt, dass die Formel immer auf ihre Nennbreite gesetzt wird, unabhängig davon, wie stark innerhalb der Zeile gestreckt oder gestaucht wird. Dies kann man im folgenden Beispiel gut sehen:

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

was zu dieser Ausgabe führt:

Bildbeschreibung hier eingeben

verwandte Informationen