Текст выходит за пределы полей

Текст выходит за пределы полей

Не знаю почему, но одна строка в моем тексте вышла за поля.

изображение

Как избежать этой проблемы?

Я использую classicthesisTeXworks.

Редактировать: с помощью команды

\overfullrule=5pt

Я вижу черный квадрат там, где появилась эта проблема.

ЗдесьМВЭиmyclassicthesis-preamble

\documentclass{scrreprt}

\usepackage[english]{babel}

\usepackage{myclassicthesis-preamble}
\usepackage{classicthesis}
\usepackage{microtype}

\renewcommand{\descriptionlabel}[1]{\hspace*{\labelsep}\small\textsc{#1}}

\overfullrule=5pt

\begin{document}

\begin{description}
\item[Service Delivery Framework] The infrastructure to create, publish, manage and consume FI services across their life cycle, addressing all technical and business aspects.
\item[Interface to the Network and Devices] The open interfaces to networks and devices, harmonizing the connectivity needs of services built on top of the platform.
\end{description}

Lastly, on the \emph{political dimension}, legal and legislative barriers presently hinder the efficient cross-border establishment of new innovative solutions due to complex or incompatible ICT policies in Europe.

\end{document}

Две возможные проблемы: эта строка

\renewcommand{\descriptionlabel}[1]{\hspace*{\labelsep}\small\textsc{#1}}

и изменение в myclassicthesis-preamble(строки 63-70)

\PassOptionsToPackage{
            eulerchapternumbers,
            beramono,
            eulermath,          
            pdfspacing,         
            floatperchapter          
            }
{classicthesis}

в частности, вариант pdfspacing.

решение1

TeX не расставляет переносы presentlyпо двум совпадающим факторам:

  1. слово presentне может переноситься автоматически, потому что оно меняет слоги, когда является глаголом или существительным (как record);

  2. Минимальное количество переносов для английского языка установлено равным трем, то есть TeX не разрешается оставлять на новой строке менее трех символов переносимого слова.

Если мы установим \righthyphenmin=2, то \showhyphens{presently}получим present-lyто, что и ожидалось. Загрузка ushyphenmaxчерезhyphsubstне будет переносить presently, по той же причине, что и \righthyphenmin=3. Сказанное \hyphenation{pres-ent-ly}в преамбуле позволило бы переносить как pres-ently(но не present-ly, потому что две буквы слишком мало.).

В чрезвычайной ситуации можно разрешить расстановку переносов, введя такой текст present\-ly, который перекроет минимум по умолчанию.

Формат, установленныйклассическаятезисдовольно строгий, и ваш текст показывает проблемы, которые могут возникнуть с длинными метками описания. Не так уж много нужно сделать, кроме как изменить текст, если это возможно. Я бы избегал этого, \sloppyнасколько это возможно, так как это позволяет создавать плохо разнесенные абзацы.

Лучшей стратегией будет использование \emergencystretch: со следующими изменениями

\begingroup\emergencystretch=.3em
\begin{description}

\item[Service Delivery Framework] The infrastructure to create, publish, manage and consume
FI services across their life cycle, addressing all technical and business aspects.

\item[Interface to the Network and Devices] The open interfaces to networks and devices,
harmonizing the connectivity needs of services built on top of the platform.

\end{description}

\endgroup

Lastly, on the \emph{political dimension}, legal and legislative barriers present\-ly hinder
the efficient cross-border establishment of new innovative solutions due to complex or
incompatible ICT policies in Europe.

текст будет набран без переполнения полей и слишком плохих интервалов.

Также следует отметить, чтомикротип являетсязагружается автоматическиклассическаятезис(строка 219 в classicthesis.styтексте \RequirePackage{microtype).

решение2

Редактировать: Похоже, у вас есть несколько особенно неудачных мест в документе, где \sloppyпоможет только a. Тем не менее, вот некоторая информация, которая может помочь немного лучше понять переносы и уменьшить количество таких мест. Обратите внимание, что следующееприменимо только к американским моделям переноса, который по умолчанию загружается (La)TeX и загружается babelпараметрами english, americanи usenglish, которые являютсявсе так же.

Как уже упоминалось, TeX не умеет расставлять переносы.в настоящее время. Это можно увидеть, составив документ, содержащий \showhyphens{presently}; впоследствии, точки переносав настоящее времябудут помещены в файл .log -- оказывается, их нет. Как заметил @percusse, добавление \hyphenation{pre-sent-ly}в вашу преамбулу решит проблему для этого слова, но вы отметили, что их больше. Итак, вот что еще вы можете сделать:

Загрузите последние шаблоны переносов

Вставлять

\RequirePackage[english=usenglishmax]{hyphsubst}

дажедозагрузить \documentclass{...}обновленные шаблоны переносов для \usepackage[english]{babel}(американские шаблоны).

Вручную включите известные исключения переносов

TheЖурнал исключений переносов(Ноябрь 2010) — это «периодическое обновление списка слов, которые TeX не может правильно переносить» (там же, стр. 1001). На стр. 1005 подтверждается, что TeX не умеет переноситьв настоящее время, и выводит список желаемых переносов pres-ent-ly.

Вот соответствующий параграф о том, как использовать этот список исключений при расстановке переносов:

Преобразование этого списка в исключения переносов, пригодные для машинного использования

Вернер Лемберг создал скрипт, который преобразует эту статью в настоящий \hyphenationблок, который может быть включен в документ либо напрямую, либо путем ввода файла. Его работа потребовала некоторых изменений в макросах, используемых для форматирования списка, но внешний вид списка не изменится. Многие флективные формы будут включены автоматически, некоторые очевидны в печатной версии, но многие включены молча. Скрипт, hyphenex.sh, является простым скриптом оболочки и размещен на CTAN, вtex-archive/info/digests/tugboat/hyphenex/ Вывод скрипта публикуется в той же области, что и ushyphex.tex.

(там же, стр. 1001)

Кроме того, я поддерживаю предложение Питера использовать пакет microtype, который улучшает расстановку переносов в целом и придает вашему документу более равномерный коэффициент серости.

решение3

БезМВЭТрудно сказать наверняка.

Обычно это происходит из-за того, что TeX не смог выполнить все правила для интервалов в Overfull \hboxсообщениях. Один из способов исправить это — добавить , \sloppyкоторый смягчает правила для интервалов между словами. Смотрите ответы наПочему текст выходит за пределы указанной ширины строки?для более подробного объяснения.

Или вы можете добавить \usepackage{microtype}в преамбулу. Смотритедокументация по микротипу Больше подробностей.

решение4

Может быть, LaTeX не умеет переносить "в настоящее время"? В таком случае вы можете просто указать ему, как это делать, записав это как pres\-ent\-ly.

Связанный контент