Добавление цвета фона к стилю абзаца в inDesign

В настоящее время я создаю макет книги со встроенным кодом и кодовыми блоками.
Для этих частей кода я хотел бы добавить фоновый цвет. Он должен обрабатывать код, аналогичный тому, как он отображается на StackExchange.

Кодовые блоки

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

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Решение было бы, если бы я мог добавить принудительный разрыв строки в конце каждой строки через стиль GREP, но я не видел способа добавить символ таким образом.

Встроенный код

Я использую стили символов для встроенного кода. Правила подчеркивания кажутся наиболее подходящим способом здесь. Проблема в том, что я собираю поля здесь. Если я добавлю пробел в начале и в конце встроенного кода, я получу хороший результат, но это означает, что мне нужно добавить символы в текст, чего я хотел бы избежать, и это не сработает в начале и конец разрыва строки, потому что inDesign удаляет символ, если он не нужен.

введите описание изображения здесь

Я ищу способ добавить пробел до и в конце встроенного кода.

Итак, это было бы так. Я ищу решения этой проблемы в течение длительного времени, поэтому любые идеи будут оценены.

Ну и извините за дерьмовое качество изображения. Отсутствующая поддержка дисплея Retina в inDesign сделала это возможным.

Ячейки таблицы? По крайней мере, для кодовых блоков. Однако не будет работать для встроенного текста.
Объедините ячейки таблицы и встроенный текст. У вас две разные проблемы, поэтому вам нужны два разных решения. Сделайте так, чтобы стили совпадали, но исполнение различно для блоков и для встроенных.
Спасибо, я не думал об использовании таблиц. Это сработает, но мне нужно будет определить стиль абзаца, стиль таблицы и стиль ячейки, чтобы сделать это так, как я хочу. Кроме того, я должен создать таблицу для каждого кодового блока. Я бы сказал, что это решение, но это похоже на взлом. Более удобный способ (только стили абзаца и стили символов) был бы намного приятнее. @Lauren: Насколько я знаю, встроенные таблицы невозможны, и со стилями символов я все еще борюсь с полями.
Вы можете использовать текстовые поля внутри текстовых полей. Сохраняет вам по крайней мере некоторые стили таблиц

Ответы (3)

Сегодняшнее обновление Adobe CC (2015) принесло решение этой проблемы. Теперь вы можете включить paragraph shadingдобавление фона к стилям абзаца.

введите описание изображения здесь

Я использовал таблицу для своего собственного отчета, и это сработало для меня очень хорошо. Для каждого блока кода, который мне был нужен, я просто копировал/вставлял предыдущую таблицу. Для подсветки синтаксиса я сначала определил стиль символа, но было утомительно применять эти стили для каждого фрагмента кода. Поэтому просто скопировал код из IDE, сохранив цвет и шрифт, в InDesgin. Вот как это выглядит:

Блок кода InDesign

Единственная проблема заключается в том, что вы не можете скопировать блок кода, и вам нужно копировать и вставлять строку за строкой, поскольку каждая строка таблицы представляет собой одну строку кода.

Вы можете использовать правило абзаца, чтобы выделить всю меру, или подчеркивание текста, чтобы выделить только текст. Хитрость заключается в том, чтобы получить правильное смещение, а затем установить значение ширины, которое соответствует или превышает ваше начальное значение.