
Не знаю почему, но одна строка в моем тексте вышла за поля.
Как избежать этой проблемы?
Я использую classicthesis
TeXworks.
Редактировать: с помощью команды
\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
по двум совпадающим факторам:
слово
present
не может переноситься автоматически, потому что оно меняет слоги, когда является глаголом или существительным (какrecord
);Минимальное количество переносов для английского языка установлено равным трем, то есть 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
.