LaTeX: Предотвратить разрыв строки в интервале текста


148

Как я могу запретить LaTeX вставлять разрывы строк в мои \texttt{...}или \url{...}текстовые регионы? Там нет пробелов внутри, которые я могу заменить ~, это просто разбитие на символы.

Обновление : я не хочу вызывать переполнение строк, я бы предпочел LaTeX вставлять разрывы строк перед этими регионами, а не внутри них.

Ответы:


157

\mboxэто самый простой ответ. По поводу обновления:

TeX предпочитает слишком длинные строки, чтобы добавить слишком много места между словами в строке; Я думаю, что идея заключается в том, что вы заметите линии, которые простираются в поле (и черные поля, которые он вставляет после таких строк), и у вас будет возможность пересмотреть содержимое, тогда как, если бы было слишком много места, вы могли бы не заметить Это.

Используйте \sloppyили, \begin{sloppypar}...\end{sloppypar}чтобы настроить это поведение, хотя бы немного. Другая возможность \raggedright(или \begin{raggedright}...\end{raggedright}).


64

Окружить его \mbox{}


4
Будет ли это стимулировать LaTeX вставлять разрыв строки перед регионом, если он переполнит строку?
Рапион

1
Нет. \nohyphens{}Команда, найденная в hypenatпакете, просто может.
Михил Буддингх

1
Спасибо за предложение. Я только что попробовал \ nohyphens {\ url {...}}, и он все еще допускает переносы строк.
Рапион

31

Кроме того, если у вас есть два последующих слова в обычном тексте и вы хотите избежать разрыва строки между ними, вы можете использовать символ ~.

Например:

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

Это может гарантировать, что у вас нет строки, начинающейся с номера фигуры (без части Fig.) Или с заглавной буквы A.


12
Просто отметим, что ~это символ неразрывного пробела , то есть он также вставляет пробел (иногда можно предотвратить разрыв без вставки пробела).
sdaau

24

Используйте \ nolinebreak

\ Nolinebreak [номер]

Команда \ nolinebreak запрещает LaTeX прерывать текущую строку в точке команды. С необязательным аргументом number вы можете преобразовать команду \ nolinebreak из запроса в запрос. Число должно быть числом от 0 до 4. Чем больше число, тем настойчивее запрос.

Источник: http://www.personal.ceu.hu/tex/breaking.htm#nolinebreak


14

Определите команду 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.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.