Как вставить код с выделенным синтаксисом в Keynote '13?

16

Я даю много кодовых презентаций с Keynote. Подсветка синтаксиса делает их читабельными.

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

При обновлении до iWork '13, который включает в себя Keynote 6.1, при вставке содержимого стирается стиль и цвет шрифта.

Например, если я возьму этот красочный код из GitHub и вставлю его в Keynote, он удалит все форматирование, как показано здесь:

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

Есть ли способ получить выделенный синтаксисом код в этих презентациях?

mimming
источник
Дженни, не могли бы вы рассказать нам, какой маркер вы используете для просмотра и копирования кода?
Тони Уильямс
Добавлен пример исходного кода (GitHub) и скриншот результата.
Mimming
Какой браузер вы используете?
Алан Шутко
@ Алан Я использовал Chrome 34, когда наблюдал это поведение
mimming

Ответы:

13

«Короткий» ответ

... в том, что разные приложения по-разному копируют форматированный текст в буфер обмена, а разные приложения поддерживают вставку из разных форматов. Обычно в буфере обмена вы получаете некий формат «простого текста», а также, возможно, текст в формате HTML или RTF, и приложение для вставки выбирает, какой файл ему больше нравится.

Keynote 6.1 определенно поддерживает некоторые виды вставки форматированного текста, так как я могу заставить это работать с Safari. Но, похоже, он не работает с Firefox или Chrome (на момент написания). После небольшого тестирования кажется, что все приложения Apple хорошо сочетаются друг с другом (что неудивительно), и некоторые другие тоже будут копировать / вставлять в / из приложений Apple (включая продукты Microsoft Office). К сожалению, когда вы копируете из Chrome, вы получаете только простой текст и текст в формате HTML, скопированный в буфер обмена, поэтому может показаться, что приложения Apple iWork не поддерживают вставку текста в формате HTML.

Поэтому, если копирование / вставка не включает форматирование, вы можете:

  • Попробуйте использовать другой браузер для копирования, например Safari; или
  • Найдите промежуточное приложение для вставки (которое «говорит» о форматировании HTML и может повторно скопировать в формат, понятный Keynote / etc), например, собственное Apple TextEdit.app

Удивительно, но собственный TextEdit.app от Apple с радостью вставит отформатированный текст из Chrome, и его можно будет снова скопировать в буфер обмена и вставить с форматированием в Keynote / Pages / etc.

В зависимости от вашей точки зрения, это может показаться ограничением (или ошибкой) в Chrome / Firefox или в Pages / Keynote / etc, но в итоге они просто не говорят на одних и тех же языках форматирования (в настоящее время).

Я бы посоветовал всем, кто испытывает это, отправлять отзывы разработчикам с обеих сторон в надежде исправить это - либо с Chrome / Firefox, поддерживающими копирование в формате RTF / RTFD (или с любым другим стандартом / уместным, кроме HTML), либо Приложения Apple iWork, поддерживающие вставку HTML-контента.


Больше, чем вы хотите знать о копировании в буфер обмена

Когда вы копируете некоторый текст в буфер обмена, в зависимости от приложения, он может копироваться в нескольких форматах. Вы можете увидеть их с помощью приложения Apple Clipboard Viewer (требуется сборка в Xcode).

Например, при копировании из Google Chrome буфер обмена заполняется четырьмя отдельными копиями копируемой мной информации - двумя текстовыми ( public.utf8-plain-text, NSStringPboardType) и двумя в формате HTML ( public.html, Apple HTML pasteboard type).

Копирование из других приложений дает различные комбинации типов форматов, с некоторыми другими распространенными из них являются 'TEXT' (CorePastboardFlavorType), com.apple.traditional-mac-plain-text, Apple PDF pasteboard type, Apple PICT pasteboard type, public.rtf, NeXT Rich Text Format v1.0 pasteboard type, NeXT RTFD pasteboard type, com.apple.flat-rtfd, com.apple.iWork.TSPNativeData, com.adobe.pdf, com.adobe.indesign-import-ustl, и так далее ...

Как вы можете видеть, существует множество форматов простого текста (с различными кодировками, такими как UTF8 / UTF16), типы RTF, типы PDF и Adobe, типы изображений. Существует также набор типов метаданных, которые описывают приложение, которое копировало данные (например com.apple.iWork.TSPNativeMetadata), или функции копируемого текста (например com.apple.iWork.TSPDescription), и то, что выглядит как отдельные данные текста и стиля ( ustlи TEXTкак CorePasteboardFlavorTypes, и их com.adobe.indesign-import-эквиваленты).

Я не знаю какого-либо способа узнать, какие типы форматов поддерживаются какими приложениями для вставки, но с помощью средства просмотра буфера обмена вы можете быстро увидеть, какие типы форматов генерируются при копировании.

drfrogsplat
источник
Это было оно. В моем случае это было пересечение Keynote 6.1 и Chrome. Дальнейшее тестирование показывает, что контент, скопированный из Safari 7, работает, но Chrome 34 и Firefox 27 не работают :(
mimming
Я бы посоветовал вам отправить отчет об ошибке как в Chrome, так и в Firefox (или проголосовать за существующие ошибки / запросы функций). Вы получите еще несколько сторонников, если будете ссылаться на соответствующие ошибки здесь, я тоже уверен.
drfrogsplat
Я попробовал с дюжиной других источников копию от стольких поставщиков, и похоже, что работает только копирование с программного обеспечения Apple. Контент, скопированный с программного обеспечения сторонних производителей, также работает при вставке друг в друга. Другими словами, это похоже на ошибку Apple, но я не собираюсь тратить время на дальнейшее расследование (или ошибки файла).
Mimming
Исследовано немного больше, это не так просто, как «только Apple для Apple», поскольку MS Word и Apple TextEdit работают практически со всем ... но также подозревают, что это можно назвать ошибкой Apple, поскольку они не поддерживают вставку из HTML-текст в приложениях iWork.
drfrogsplat
Спасибо за это. Я пытался скопировать код из Xcode в Pages. Немного расстраивает необходимость использовать TextEdit в качестве посредника, но по крайней мере теперь я могу это сделать! Спасли меня куча случаев "удар головой об стенку"! ;-)
mbm29414
7

Это, вероятно, онлайн-маркер, который вы используете.

Я использую http://markup.su, и он отлично работает с Keynote 6.1 - он автоматически определяет несколько языков и имеет несколько «тем».

Если это не маркер, то это может быть ваш шаблон или браузер. Я смог взять ваш код и вставить его из markup.su в Safari в Keynote.

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

Тони Уильямс
источник
markup.su замечательно выделяет вещи, но вставка в текстовое поле или текстовое свойство фигуры в Keynote 6.1 продолжает лишать цвета и стиля. : \
Mimming
1
Это странно, так как у меня это получилось час или два назад. Просто копия из Safari, а затем вставка в Keynote работали для Python и Perl.
Тони Уильямс
Это работает на Keynote 6.5.3 тоже! (Y)
Рэндика Вишман
1
Он работает на Keynote 6.6.1, но вы должны скопировать его из Safari.
Лузны
Да, это должно быть скопировано из Safari. Хром не сработает.
Джейсон Гао
3

Если вам не нравится идея вставки кода в сеть, рассмотрите возможность установки пакета Python Python и создания выделенного синтаксиса в командной строке:

pygmentize sms_me_last_line.sh

Копирование из терминала и вставка в Keynote работали для меня. Но мне потребовалось некоторое время, чтобы найти элемент управления форматированием для удаления цвета фона текста. (Нажмите «Формат» на панели инструментов, чтобы отобразить параметры форматирования, нажмите «Текст», нажмите «Стиль», затем щелкните шестерню, чтобы отобразить дополнительные параметры форматирования. В этом всплывающем окне вы найдете «Цвет заливки символов».)

ithos67
источник
3

Я использую Vim. Я нашел этот плагин очень полезным: https://github.com/zerowidth/vim-copy-as-rtf

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

qhwa
источник
1

Это ошибка в Keynote '13:

Вставка форматированного текста из Xcode в Keynote работает при вставке в существующее текстовое поле.

Это не когда вы вставляете в новое текстовое поле.

mZ2
источник
Есть ли обходной путь для этого, кроме ввода текста в нем сначала?
Роб
Самое удобное, что я нашел, - это просто создать текстовое поле, выделить его и вставить в него.
mz2