Текстовая композиция
внешний вид текста на вашей странице зависит от сложного взаимодействия процессов под названием композиция . Используя интервал между словами, межбуквенного интервала, масштабирования глифов и расстановки переносов, InCopy скомпонует текст таким образом, чтобы лучше всего поддерживает заданные параметры.
InCopy предлагает два метода композиции: Adobe Paragraph Composer (по умолчанию) и Adobe Single-line Composer (оба доступны из меню панели управления). Вы можете выбрать какой композитор использовать из меню панели «Абзац», диалоговое окно или меню панели управления.
InCopy поддерживает четыре разработанных метода для верстки, включая Adobe Japanese Single-line Composer, Adobe Japanese Paragraph Composer, Adobe Paragraph Composer и Однострочный композитор Adobe. Каждый Композитор оценивает возможные перерывы для японского и римского текста и выбирает те, которые лучше всего поддерживают параметры переноса и выравнивания, указанные для данного параграф.
В журнале InDesign Magazine есть статья об устранении проблем с композицией в Mind the Gaps.
InCopy предлагает два метода композиции: Adobe Paragraph Composer (по умолчанию) и Adobe Single-line Composer. Оба метода композиции оценивают возможные разрывы и выбирают те из них, которые лучше всего поддерживают варианты переноса и выравнивания, которые вы указывается для данного абзаца.
Adobe Paragraph Composer
Рассматривает сеть точек останова для всего абзаца и, таким образом, может оптимизировать более ранние строки в абзац, чтобы исключить особо непривлекательные разрывы позже. Композиция абзаца приводит к более равномерному интервалу с меньше дефисов.
Композитор абзаца приближается к композиции определяя возможные точки останова, оценивая их и назначая взвешенный штраф к ним, основанный на таких принципах, как равномерность между буквами, межсловными интервалами и переносами.
Примечание:
Вы можно использовать диалоговое окно Hyphenation для определения отношения между лучшим интервалом и меньшим количеством дефисов. (См. Дефис текст.)
Adobe Single-line Composer
Предлагает традиционный подход для составления текста по одной строке за раз. Эта опция полезна, если вы хотите ограничить изменения композиции на поздних стадиях редактирования.
Выполните любое из следующих действий:
В меню панели «Абзац» выберите Adobe Paragraph Composer (по умолчанию) или Adobe Single-line Composer.
В меню панели «Абзац» или в меню панели управления выберите Обоснование, а затем выберите вариант в Composer меню.
Примечание:
Дополнительный состав подключаемых модулей движка от других компаний могут быть доступны вместе с интерфейсами, позволяющими настраивать параметры двигателя.
Выбрать Правка > Настройки > Композиция (Windows) или InCopy > Настройки > Композиция (Mac OS).
Чтобы использовать выделение на экране для выявления композиционных проблем, выберите Сохранить нарушения и нарушения H&J (расстановка переносов и обоснование).
Чтобы выровнять текст, который обтекает объект, выберите «Выровнять по ширине». Текст рядом с объектом.
Под Режимы совместимости модзикуми, определите, хотите ли вы выбрать Использовать Новое вертикальное масштабирование или использование модзикуми на основе CID.
Нажмите «ОК».
настройки, которые вы выбираете для расстановки переносов и выравнивания, влияют на горизонтальный интервал между строками и эстетическая привлекательность шрифта на ваши страницы. Параметры переноса определяют, можно ли переносить слова через дефис. и, если могут, какие перерывы допустимы.
Обоснование зависит от выбранного вами параметра выравнивания, межсловного интервала и межбуквенный интервал, который вы укажете, и использовали ли вы глиф масштабирование. Вы также можете выравнивать отдельные слова в узких колонках полностью обоснованный текст.
Эда Уоррен предоставляет статью о избежать проблем с композицией в Mind the Gaps.
Вы можете расставлять переносы слов вручную или автоматически, или вы можете использовать комбинацию двух методов. Самый безопасный способ расставить переносы вручную означает вставить
С помощью инструмента «Текст» нажмите где вы хотите вставить дефис.
Выполните одно из следующих действий:
Примечание:
Ввод произвольного дефиса в слово не гарантировать, что слово будет через дефис. Будь то слово или нет разрывы зависят от других параметров расстановки переносов и композиции. Однако, ввод произвольного дефиса в слове гарантирует, что слово может быть разорвано только там, где появляется дискреционный дефис.
Расстановка переносов основана на списках слов, которые могут храниться либо в отдельном файле пользовательского словаря на вашем компьютере, или в самом документе. Чтобы обеспечить согласованность переносов, вы может захотеть указать, к какому списку слов обращаться, особенно если вы переносите ваш документ поставщику услуг или если вы работаете в рабочая группа.
Чтобы включить или выключить автоматическое расставление переносов для абзаца, на панели «Абзац» или панели «Управление» установите или снимите флажок вариант переноса. (Вы также можете включить эту опцию в абзац стиль.)
При установке параметров автоматической расстановки переносов можно определить взаимосвязь между лучшим интервалом и меньшим количеством дефисов. Вы можете также предотвратить заглавные слова и последнее слово в абзаце от дефиса.
Щелкните абзац или выберите диапазон абзацев, на которые вы хотите повлиять.
Выберите «Перенос» в меню панели «Абзац».
Выберите параметр «Перенос».
Внесите необходимые изменения в следующие настройки и затем нажмите OK:
Слова, содержащие не менее _ букв
Укажите минимальное количество символов для слов, разделенных дефисом.
После первых _ букв / Перед последними _ буквами
Укажите минимальное количество символов в начале или конец слова, который может быть разбит дефисом. Например, по при указании 3 для этих значений ароматические будут разделены дефисом как ароматический вместо ароматический или ароматический .
Hyphen Limit _ Hyphens
Укажите максимальное количество дефисов, которые могут последовательные строки. Ноль означает неограниченное количество дефисов.
Зона переноса
Укажите допустимое количество пробелов в конце строки необоснованного текста до начала переноса.
Этот вариант применяется только когда вы используете Single-line Composer с невыровненными текст.Лучший интервал/меньше дефисов
Чтобы изменить баланс между этими параметрами, отрегулируйте ползунок. в нижней части диалогового окна.
Перенос слов с заглавной буквы
Чтобы слова, написанные с заглавной буквы, не переносились, снимите флажок этот вариант.
Hyphenate Last Word
Чтобы предотвратить перенос последних слов в абзацах, отмените выбор этой опции.
Перенос через столбец
Кому предотвращение переноса слов через дефис в столбце, фрейме или странице, отмените выбор этой опции.
По используя неразрывные дефисы, вы можете предотвратить разрыв определенных слов вообще — например, имена собственные или слова, которые при нарушении становятся непривлекательными фрагменты. Используя неразрывные пробелы, вы также можете сохранить несколько слов.
Выберите текст, который вы хотите сохранить та же линия.
Выберите «Без разрыва» в меню панели «Символ» или в Меню панели управления.
Примечание:
Еще один способ предотвратить поломку слова заключается в том, чтобы поставить дискреционный дефис в начале слова. Нажмите Ctrl+Shift+- (Windows) или Command+Shift+- (Mac OS). чтобы вставить дискреционный дефис.
С помощью инструмента «Текст» нажмите где вы хотите вставить дефис.
Выберите «Тип» > «Вставить специальный символ» >
Дефисы и тире > Неразрывный дефис.
Использование типа инструмент, нажмите где вы хотите вставить пробел.
Выберите «Текст» > «Вставить пробел» > «Неразрывный». Пробел (или любой другой символ пробела).
Неразрывный пробел различается по ширине в зависимости от точки размер, настройку выравнивания и параметры пространства слов, в то время как символ неразрывного пробела (фиксированной ширины) сохраняет тот же ширина вне зависимости от контекста.
Использование панели «Обоснование» чтобы точно контролировать расстояние между словами, буквами и глифами масштабирование. Настройка интервала особенно полезна для шрифта с выравниванием по ширине, хотя вы также можете настроить интервал для необоснованного шрифта.
Примечание:
Межсловный интервал, межсимвольный интервал и масштабирование глифов для настроек выравнивания, игнорируются для текста CJK. Чтобы установить интервал между текстовыми символами CJK, используйте диалоговое окно Модзикуми.
Вставьте курсор в абзац, который вы хотите изменить, или выберите текстовый объект или рамку, чтобы изменить все его абзацы.
Выберите «Обоснование» в меню панели «Абзац».
Введите значения для межсловного интервала, межбуквенного интервала и глифа Расстояние. Минимальное и максимальное значения определяют диапазон допустимых значений. интервал только для выравниваемых абзацев. Желаемое значение определяет желаемый интервал как для оправданных, так и для необоснованных абзацев:
Расстояние между словами
Пробел между словами, возникающий при нажатии клавиши пробела. Значения межсловного интервала могут варьироваться от 0% до 1000%; на 100%, без дополнительных пробел добавляется между словами.
Letter Spacing
Расстояние между буквами, включая значения кернинга или отслеживания. Значения межбуквенного интервала могут варьироваться от -100% до 500%: при 0% пробел отсутствует. добавляется между буквами; при 100% добавляется вся ширина пробела между буквами.
Glyph Scaling
Ширина символов ( глиф — любой символ шрифта). Значения масштабирования глифа могут варьироваться от 50% до 200%.
Примечание:
Параметры интервала всегда применяются ко всему абзацу. Чтобы отрегулировать интервал в нескольких символах, а не во всем абзаце, используйте параметр «Отслеживание».
Установите параметр «Выравнивание по одному слову», чтобы указать, как вы хотите оправдать абзацы из одного слова.
В узких столбцах иногда может появляться одно слово самостоятельно на линии. Если для абзаца установлено полное выравнивание, одно слово в строке может показаться слишком растянутым. Вместо оставляя такие слова полностью оправданными, вы можете центрировать их или выровнять их к левому или правому полю.
Нажмите точку вставки в абзаце или выберите нужные абзацы влиять.
Выберите «Обоснование» в меню панели «Абзац».
Введите значения для минимального, желаемого и максимального масштабирования глифа. Затем нажмите ОК.
До (вверху) и после (внизу) масштабирования глифа по ширине текст
Примечание:
Масштабирование глифов может помочь в достижении даже оправдания; однако значения более 3% от значение по умолчанию 100% может привести к искажению формы букв. Если вы не стремясь к особому эффекту, лучше сохранить масштабирование глифа тонкие значения, такие как 97–100–103.
Использование пробела добавляет переменную расстояние до последней строки полностью выровненного абзаца — между последнее слово и символ конца рассказа декоративным шрифтом. При использовании с невыровненным текстом незаполненный пробел выглядит как обычный словесное пространство. В тексте с выравниванием по ширине он расширяется, чтобы поглотить все доступные лишний пробел в последней строке. Использование пустого пространства может привести к драматическому эффекту. разница в том, как весь абзац форматируется Adobe Параграф Композитор.
До и после добавления пробела
С помощью инструмента «Текст» нажмите прямо перед персонажем конца истории.
Выберите «Текст» > «Вставить пробел» > Смывное пространство.
Примечание:
Эффект пробела незаметен, пока вы не примените параметр «По ширине всех строк» к абзацу.
Потому что составление строки текста включает в себя факторы в дополнение к межсловному интервалу и межбуквенный интервал (например, настройки расстановки переносов), InDesign не всегда может соблюдайте настройки межсловного интервала и межбуквенного интервала. Однако, композиционные проблемы в строках текста могут быть выделены желтым цветом; самый темный из трех оттенков указывает на самые серьезные проблемы.
Выберите «Правка» > «Настройки» > Композиция (Windows) или InCopy > Настройки > Композиция (Mac OS).
Выберите H&J Violations и нажмите ОК.
Официальные уведомления | Политика конфиденциальности в Интернете
psycopg2.sql — Состав строки SQL — документация Psycopg 2.9.5
Новое в версии 2.7.
Модуль содержит объекты и функции, полезные для динамической генерации SQL,
удобным и безопасным способом. Идентификаторы SQL (например, имена таблиц и
поля) не могут быть переданы в execute()
метод, подобный запросу
аргументы:
# Это не сработает имя_таблицы = 'моя_таблица' cur.execute("вставить в %s значения (%s, %s)", [table_name, 10, 20])
SQL-запрос должен быть составлен до объединения аргументов, т.к. экземпляр:
# Это работает, но не оптимально имя_таблицы = 'моя_таблица' курс.выполнить( "вставить в значения %s (%%s, %%s)" % имя_таблицы, [10, 20])
Этот вид работает, но это ожидание несчастного случая: имя таблицы
может быть недопустимым литералом SQL и нуждаться в кавычках; еще более серьезным является
проблема безопасности в случае, если имя таблицы получено из ненадежного источника. имя должно быть экранировано с помощью quote_ident()
:
# Это работает, но не оптимально имя_таблицы = 'моя_таблица' курс.выполнить( "вставить в значения %s (%%s, %%s)" % ext.quote_ident(table_name, cur), [10, 20])
Теперь это безопасно, но несколько случайно. В случае, если по какой-то причине это
необходимо включить значение в строку запроса (как и в значении)
правило слияния все еще отличается ( адаптировать()
должно быть
использовал…). Это также все еще относительно опасно: если quote_ident()
это
где-то забыл, программа обычно будет работать, но в итоге вылетит
при наличии имени таблицы или поля, содержащего символы для экранирования,
или представит потенциально слабую сторону, которую можно использовать.
Объекты, предоставляемые модулем psycopg2.sql
, позволяют генерировать SQL
операторы на лету, четко разделяя переменные части оператора
из параметров запроса:
из psycopg2 импортировать sql курс. выполнить( sql.SQL("вставить в {} значения (%s,%s)") .format(sql.Идентификатор('my_table')), [10, 20])
Использование модуля
Обычно шаблон запроса следует выражать в виде экземпляра SQL
.
с заполнителями в стиле {}
и используйте format()
для слияния переменной
части в них, все из которых должны быть Composable
подклассов. Вы все еще можете
иметь заполнителей в стиле %s
в запросе и передавать значения в execute()
: такие заполнители значений не будут затронуты формат()
:
запрос = sql.SQL("выберите {поле} из {таблицы}, где {pkey} = %s").format( поле = sql.Идентификатор («мое_имя»), таблица = sql.Идентификатор ('some_table'), pkey=sql.Идентификатор('id'))
Результирующий объект предназначен для прямой передачи в методы курсора, такие как execute()
, executemany()
, copy_expert()
, но может
также можно использовать для составления запроса в виде строки Python, используя метод as_string()
:
cur. execute(запрос, (42,))
Если часть вашего запроса представляет собой переменную последовательность аргументов, например
список имен полей, разделенных запятыми, вы можете использовать метод SQL.join()
для
передать их в запрос:
запрос = sql.SQL("выберите {поля} из {таблицы}").format( поля = sql.SQL(',').join([ sql.Идентификатор('поле1'), sql.Идентификатор('поле2'), sql.Идентификатор('поле3'), ]), таблица = sql.Идентификатор ('some_table'))
объекты sql
Объекты sql
находятся в следующей иерархии наследования:
Composable
: базовый класс, предоставляющий общий интерфейс
|__
SQL
: буквальный фрагмент SQL-запроса
| __
Идентификатор
: идентификатор PostgreSQL или DOT-разделенная последовательность | Заполнитель
: заполнитель %s в стиле
, значение которого будет добавлено позже, например. by execute()
|__
Составной
: последовательность из Составляемых
экземпляров.
- класс psycopg2.sql.Composable ( в оболочке )
Абстрактный базовый класс для объектов, которые можно использовать для составления строки SQL.
Компонуемые объекты
могут быть переданы непосредственно вexecute()
,executemany()
,copy_expert()
вместо запроса нить.Составные объекты
могут быть объединены с помощью оператора+
: результат будетComposed
экземпляр, содержащий объединенные объекты. Оператор*
также поддерживается с целочисленным аргументом: результатом являетсяСоставленный экземпляр
, содержащий левый аргумент, повторяющийся столько раз, сколько просил.- as_string( контекст )
Возвращает строковое значение объекта.
- Параметры
контекст (
соединение
иликурсор
) — контекст, в который будет оцениваться строка.
Метод автоматически вызывается
execute()
,executemany()
,copy_expert()
еслиComposable
передается вместо строки запроса.
- класс psycopg2.sql.SQL ( строка )
A
Composable
, представляющий фрагмент оператора SQL.SQL
предоставляет методыjoin()
иformat()
, полезные для создания шаблона где объединить переменные части запроса (например, поле или таблицу имена).Строка не подвергается экранированию, поэтому она не подходит для представлять идентификаторы или значения переменных: вы должны использовать его только для передачи постоянные строки, представляющие шаблоны или фрагменты операторов SQL; использовать другие объекты, такие как
Identifier
илиLiteral
для представления переменной части.Пример:
>>> query = sql.SQL("выберите {0} из {1}").format( ... sql.SQL(', ').join([sql.Identifier('foo'), sql.Identifier('bar')]), ... sql.Идентификатор('таблица')) >>> print(query.as_string(conn)) выберите "foo", "bar" из "table"
- строка
Строка, обернутая
объектом SQL
.
- формат ( *args , **kwargs )
Объединить
компонуемых
объектов в шаблон.- Параметры
args ( Composable ) — параметры для замены на нумерованные (
{0}
,{1}
) или автоматически нумерованные ({}
) заполнителиkwargs ( Composable ) — параметры заменить на named (
{имя}
) заполнители
- Возвращает
объединение строки
SQL
с замененными заполнителями- Тип возврата
Составной
Метод аналогичен методу Python
str. format()
: строка шаблон поддерживает автоматическую нумерацию ({}
), пронумерованный ({0}
,{1}
…) и именованные заполнители ({имя}
) с позиционным аргументы, заменяющие пронумерованные заполнители, и ключевые слова, заменяющие названные. Однако модификаторы-заполнители ({0!r}
,{0:<10}
) не поддерживаются. ТолькоComposable
объектов могут быть переданы в шаблон.Пример:
>>> print(sql.SQL("выберите * из {}, где {} = %s") ... .format(sql.Identifier('люди'), sql.Identifier('id')) ... .as_string(соедин.)) выберите * из "людей", где "id" = %s >>> print(sql.SQL("выберите * из {tbl}, где {pkey} = %s") ... .format(tbl=sql.Identifier('люди'), pkey=sql.Identifier('id')) ... .as_string(соедин.)) выберите * из "людей", где "id" = %s
- присоединиться ( последовательность )
Соединение с последовательностью
Composable
.- Параметры
seq (итерируемый из
Composable
) — элементы для соединения.
Используйте строку объекта SQL
составных объектов
также являются повторяемыми, поэтому их можно использовать как аргумент в пользу этого метода.Пример:
>>> отрывок = sql.SQL(', ').join( ... sql.Identifier(n) для n в ['foo', 'bar', 'baz']) >>> print(snip.as_string(conn)) "фу", "бар", "баз"
- класс psycopg2.sql.Идентификатор ( *строки )
A
Composable
, представляющий идентификатор SQL или последовательность, разделенную точками.Идентификаторы обычно представляют имена объектов базы данных, таких как таблицы или поля. Идентификаторы PostgreSQL подчиняются другим правилам, чем строка SQL. литералы для экранирования (например, они используют двойные кавычки вместо одинарных).
Пример:
>>> t1 = sql.Идентификатор("foo") >>> t2 = sql.Identifier("ba'r") >>> t3 = sql.Идентификатор('ba"z') >>> print(sql.SQL(', ').join([t1, t2, t3]).as_string(conn)) "фу", "ба'р", "ба" "з"
В объект можно передать несколько строк для представления полного имени, т. е. последовательность идентификаторов, разделенных точками.
Пример:
>>> запрос = sql.SQL("выберите {} из {}").format( ... sql.Идентификатор("таблица", "поле"), ... sql.Идентификатор ("схема", "таблица")) >>> print(query.as_string(conn)) выберите "таблица"."поле" из "схемы"."таблица"
Изменено в версии 2.8: добавлена поддержка нескольких строк.
- строки
Кортеж со строками, обернутыми идентификатором
Новое в версии 2.8: предыдущие версии имели только атрибут строки
Идентификатор
содержит одну строку.
- класс psycopg2.sql.Literal ( в оболочке )
A
Composable
, представляющий значение SQL для включения в запрос.Обычно вы захотите включить заполнители в запрос и передать значения как
execute()
аргументов. Однако, если вам действительно нужно включите буквальное значение в запрос, вы можете использовать этот объект.Строка, возвращаемая
as_string()
, соответствует нормальной адаптации правила для объектов Python.Пример:
>>> s1 = sql.Literal("foo") >>> s2 = sql.Literal("ba'r") >>> s3 = sql.Literal(42) >>> print(sql.SQL(', ').join([s1, s2, s3]).as_string(conn)) 'фу', 'ба''р', 42
- завернутый
Объект, обернутый литералом
- класс psycopg2.sql.Placeholder (имя = нет )
A
Composable
, представляющий заполнитель для параметров запроса.Если имя указано, создайте именованный заполнитель (например,
%(name)s
), в противном случае создайте позиционный заполнитель (например,%s
).Объект полезен для создания SQL-запросов с переменным числом аргументы.
Примеры:
>>> имена = ['foo', 'bar', 'baz'] >>> q1 = sql.SQL("вставить в таблицу ({}) значения ({})").format( ... sql.SQL(', ').join(map(sql.Identifier, имена)), ... sql.SQL(', ').join(sql.Placeholder() * len(names))) >>> печать (q1.as_string (соедин.)) вставить в таблицу ("foo", "bar", "baz") значения (%s, %s, %s) >>> q2 = sql.SQL("вставить в таблицу ({}) значения ({})").format( ... sql.SQL(', ').join(map(sql.Identifier, имена)), ... sql.SQL(', ').join(map(sql.Placeholder, имена))) >>> печать (q2.as_string (соедин.)) вставить в таблицу ("foo", "bar", "baz") значения (%(foo)s, %(bar)s, %(baz)s)
- имя
Имя
Заполнителя
.
- класс psycopg2.