LaTeX: zapobiega łamaniu linii w całym tekście

148

Jak mogę uniemożliwić LaTeX wstawianie podziałów wierszy w moich regionach \texttt{...}lub \url{...}regionach tekstowych? W środku nie ma spacji, którymi mógłbym się zastąpić ~, to po prostu łamanie symboli.

Aktualizacja : Nie chcę powodować przepełnień linii, wolałbym tylko, aby LaTeX wstawiał podziały wierszy przed tymi regionami, a nie wewnątrz nich.

rampion
źródło

Odpowiedzi:

157

\mboxto najprostsza odpowiedź. Odnośnie aktualizacji:

TeX woli zbyt długie wiersze, aby dodawać zbyt dużo odstępów między słowami w wierszu; Myślę, że chodzi o to, że zauważysz linie, które rozciągają się na margines (i czarne pola, które wstawia po takich wierszach) i będziesz miał szansę zrewidować zawartość, podczas gdy jeśli było za dużo miejsca, możesz nie zauważyć to.

Użyj \sloppylub, \begin{sloppypar}...\end{sloppypar}aby przynajmniej trochę dostosować to zachowanie. Inną możliwością jest \raggedright(lub \begin{raggedright}...\end{raggedright}).

Jouni K. Seppänen
źródło
64

Otocz go \mbox{}

Michiel Buddingh
źródło
4
Czy to zachęci LaTeX do wstawienia końca wiersza przed regionem, jeśli przepełniłby linię?
rampion
1
Nie. \nohyphens{}Polecenie, które znajduje się w hypenatpakiecie, po prostu może.
Michiel Buddingh
1
Dzieki za sugestie. Właśnie wypróbowałem \ nohyphens {\ url {...}}, ale nadal umożliwia on łamanie wierszy.
rampion
31

Ponadto, jeśli masz dwa kolejne słowa w zwykłym tekście i chcesz uniknąć podziału wiersza między nimi, możesz użyć znaku ~.

Na przykład:

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

Może to zapewnić, że nie będzie linii zaczynającej się numerem cyfry (bez części rysunkowej) lub wielką literą A.

Uri
źródło
12
Wystarczy zauważyć, że ~jest to nierozdzielający znak spacji , to znaczy wstawia również spację (czasami można chcieć zapobiec łamaniu bez wstawiania spacji).
sdaau
24

Użyj \ nolinebreak

\ nolinebreak [liczba]

Polecenie \ nolinebreak zapobiega przerwaniu przez LaTeX bieżącego wiersza w miejscu wykonania polecenia. Za pomocą opcjonalnego argumentu liczba można przekonwertować polecenie \ nolinebreak z żądania na żądanie. Liczba musi być liczbą od 0 do 4. Im wyższa liczba, tym bardziej natarczywe jest żądanie.

Źródło: http://www.personal.ceu.hu/tex/breaking.htm#nolinebreak

Tomasz
źródło
14

Zdefiniuj polecenie 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
źródło