LaTeX: Verhindern Sie Zeilenumbrüche in einer Textspanne

148

Wie kann ich verhindern, dass LaTeX Zeilenumbrüche in meine \texttt{...}oder \url{...}Textbereiche einfügt ? Es gibt keine Leerzeichen im Inneren, durch die ich ersetzen kann ~, es bricht nur auf Symbolen.

Update : Ich möchte keine Zeilenüberläufe verursachen. Ich möchte nur, dass LaTeX Zeilenumbrüche vor diesen Regionen einfügt und nicht in ihnen.

Rampion
quelle

Antworten:

157

\mboxist die einfachste Antwort. Zum Update:

TeX bevorzugt überlange Zeilen, um zu viel Platz zwischen Wörtern in einer Zeile hinzuzufügen. Ich denke, die Idee ist, dass Sie die Zeilen bemerken, die in den Rand hineinragen (und die schwarzen Kästchen, die nach solchen Zeilen eingefügt werden), und die Möglichkeit haben, den Inhalt zu überarbeiten, während Sie es möglicherweise nicht bemerken, wenn zu viel Platz vorhanden ist es.

Verwenden Sie \sloppyoder \begin{sloppypar}...\end{sloppypar}, um dieses Verhalten zumindest ein wenig anzupassen. Eine andere Möglichkeit ist \raggedright(oder \begin{raggedright}...\end{raggedright}).

Jouni K. Seppänen
quelle
64

Umgib es mit einem \mbox{}

Michiel Buddingh
quelle
4
Wird dies LaTeX dazu ermutigen, einen Zeilenumbruch vor der Region einzufügen, wenn die Zeile überlaufen würde?
Rampion
1
Nein. Der \nohyphens{}Befehl, der im hypenatPaket enthalten ist, könnte genau das sein.
Michiel Buddingh
1
Danke für den Vorschlag. Ich habe gerade \ nohyphens {\ url {...}} ausprobiert und es sind immer noch Zeilenumbrüche zulässig.
Rampion
31

Wenn Sie zwei aufeinanderfolgende Wörter im regulären Text haben und einen Zeilenumbruch zwischen ihnen vermeiden möchten, können Sie das Zeichen ~ verwenden.

Beispielsweise:

As we can see in Fig.~\ref{BlaBla}, there is nothing interesting to see. A~better place..

Dies kann sicherstellen, dass Sie keine Zeile haben, die mit einer Ziffernnummer (ohne den Abb. Teil) oder mit einem Großbuchstaben A beginnt.

Uri
quelle
12
Nur um zu beachten, dass dies ~ein nicht unterbrechendes Leerzeichen ist , das heißt, es wird auch ein Leerzeichen eingefügt (manchmal möchte man das Unterbrechen verhindern, ohne ein Leerzeichen einzufügen).
Sdaau
24

Verwenden Sie \ nolinebreak

\ nolinebreak [Nummer]

Der Befehl \ nolinebreak verhindert, dass LaTeX die aktuelle Zeile am Punkt des Befehls unterbricht. Mit dem optionalen Argument number können Sie den Befehl \ nolinebreak von einer Anforderung in eine Anforderung konvertieren. Die Nummer muss eine Zahl von 0 bis 4 sein. Je höher die Nummer, desto eindringlicher ist die Anforderung.

Quelle: http://www.personal.ceu.hu/tex/breaking.htm#nolinebreak

Tomasz
quelle
14

Definieren Sie den Befehl myurl:


\def\myurl{\hfil\penalty 100 \hfilneg \hbox}

I don't want to cause line overflows, 
I'd just rather LaTeX insert linebreaks before 
\myurl{\tt http://stackoverflow.com/questions/1012799/} 
regions rather than inside them.
Alexey Malistov
quelle