¿Cómo se pega el código resaltado de sintaxis en Keynote '13?

16

Doy muchas presentaciones pesadas de código con Keynote. El resaltado de sintaxis los hace legibles.

En el pasado, utilicé herramientas de resaltado de sintaxis basadas en la web, y luego pegué el código más fácil de leer en mi presentación.

Cuando actualicé a iWork '13, que incluye Keynote 6.1, pegar contenido elimina el estilo y el color de la fuente.

Por ejemplo, si tomo este código colorido de GitHub y lo pego en Keynote, eliminará todo el formato como se muestra aquí:

ingrese la descripción de la imagen aquí

¿Hay alguna manera de obtener código resaltado de sintaxis en estas presentaciones?

mimming
fuente
Jenny, ¿podrías decirnos qué resaltador estás usando para ver y copiar el código?
Tony Williams
Se agregó una fuente de ejemplo (GitHub) y una captura de pantalla del resultado.
mimming
¿Qué navegador estás usando?
Alan Shutko
@ Alan Estaba usando Chrome 34 cuando observé este comportamiento
mimming

Respuestas:

13

La respuesta 'corta'

... es que diferentes aplicaciones copian texto formateado en el portapapeles de diferentes maneras, y diferentes aplicaciones admiten pegar desde diferentes formatos. Por lo general, obtendrá algún tipo de formato de 'texto sin formato', así como quizás texto con formato HTML o RTF en el portapapeles, y depende de la aplicación de pegado elegir cuál le gusta más.

Keynote 6.1 definitivamente admite algunos tipos de pegado de texto formateado, ya que puedo hacer que esto funcione con Safari. Pero no parece funcionar con Firefox o Chrome (en el momento de la escritura). A partir de un poco de prueba, parece que todas las aplicaciones de Apple funcionan bien juntas (no es sorprendente), y algunas otras también copiarán / pegarán en / desde las aplicaciones de Apple (incluidos los productos de Microsoft Office). Desafortunadamente, cuando copias desde Chrome, solo obtienes texto sin formato y texto con formato HTML copiado en el portapapeles, por lo que parece que las aplicaciones iWork de Apple no admiten pegar texto con formato HTML.

Entonces, si copiar / pegar no incluye formato, puede:

  • Pruebe con un navegador diferente para copiar, como Safari; o
  • Encuentre una aplicación intermedia para pegar (que 'habla' tanto el formato HTML como puede volver a copiar en un formato que Keynote / etc entienda), como el propio TextEdit.app de Apple

Sorprendentemente, el propio TextEdit.app de Apple pegará felizmente el texto formateado de Chrome, y se puede volver a copiar en el portapapeles y pegar con formato en Keynote / Pages / etc.

Dependiendo de su punto de vista, esto puede parecer una limitación (o falla) en Chrome / Firefox o en Pages / Keynote / etc., pero al final simplemente no hablan los mismos idiomas de formato (en la actualidad).

Animaría a cualquiera que experimente esto a enviar comentarios a los desarrolladores de ambos 'lados' con la esperanza de solucionarlo, ya sea con Chrome / Firefox que soporte la copia RTF / RTFD (o lo que sea más estándar / apropiado más allá de HTML), o por Las aplicaciones iWork de Apple que admiten el pegado de contenido HTML.


Más de lo que quieres saber sobre copiar al portapapeles

Cuando copia algo de texto en el portapapeles, dependiendo de la aplicación, puede copiarse en algunos formatos. Puede verlos con la aplicación Clipboard Viewer de Apple (requiere construir en Xcode)

Por ejemplo, al copiar desde Google Chrome, el portapapeles se llena con cuatro copias separadas de la información que copié: dos texto sin formato ( public.utf8-plain-text, NSStringPboardType) y dos con formato HTML ( public.html, Apple HTML pasteboard type).

Copiando de otras aplicaciones proporciona varias combinaciones de tipos de formato, siendo algunas otras de las más comunes '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, y así sucesivamente ...

Como puede ver, hay una variedad de formatos de texto sin formato (con varias codificaciones como UTF8 / UTF16), tipos RTF, tipos PDF y Adobe, tipos de imágenes. También hay un montón de tipos de metadatos que describen la aplicación que copió los datos (p com.apple.iWork.TSPNativeMetadata. Ej. ), O las características del texto copiado (p com.apple.iWork.TSPDescription. Ej. ), Y lo que parecen ser texto separado y datos de estilo ( ustly TEXTcomo CorePasteboardFlavorTypes, y sus com.adobe.indesign-import-equivalentes).

No conozco ninguna forma de ver qué tipos de formatos son compatibles con qué aplicaciones para pegar, pero usando el Visor del Portapapeles puede ver rápidamente qué tipos de formatos se generan al copiar.

drfrogsplat
fuente
Esto fue. En mi caso fue la intersección de Keynote 6.1 y Chrome. Pruebas adicionales revelan que el contenido copiado de Safari 7 funciona, pero Chrome 34 y Firefox 27 no :(
mimming
Le sugiero que envíe un informe de errores a Chrome y Firefox (o vote por los errores / solicitudes de funciones existentes). Obtendrá algunos seguidores más si vincula a los errores relevantes aquí, estoy seguro también.
drfrogsplat
He intentado con una docena de otras fuentes para la copia de tantos proveedores, y parece que solo funciona la copia del software de Apple. El contenido copiado de software que no es de Apple también parece funcionar cuando se pegan entre sí. En otras palabras, parece un error de Apple, pero no me voy a tomar el tiempo para investigar más (o errores de archivo).
mimming
Investigó un poco más, no es tan simple como "solo Apple to Apple", ya que MS Word y TextEdit de Apple funcionan con casi todo ... pero también sospechan que esto podría llamarse un error de Apple ya que no son compatibles con el pegado de Texto HTML en aplicaciones de iWork.
drfrogsplat
Gracias por esto. Intentaba copiar código de Xcode en Pages. Es un poco frustrante tener que usar TextEdit como intermediario, ¡pero al menos ahora puedo hacerlo! ¡Me salvó un montón de instancias de golpe de cabeza contra la pared! ;-)
mbm29414
7

Este es probablemente el marcador en línea que está utilizando.

Uso http://markup.su y funciona bien con Keynote 6.1: detecta automáticamente varios idiomas y tiene varios "temas".

Si no es el resaltador, puede ser su plantilla o navegador. Pude tomar su código y pegarlo desde markup.su en Safari en Keynote perfectamente.

ingrese la descripción de la imagen aquí

Tony Williams
fuente
markup.su resalta cosas geniales, pero pegar en un campo de texto o la propiedad de texto de una forma en Keynote 6.1 continúa eliminando el color y el estilo. : \
mimming
1
Eso es extraño, ya que me resultó bien hace una o dos horas. Solo una copia de Safari y luego pegar en Keynote funcionó para Python y Perl.
Tony Williams
¡Funciona también en Keynote 6.5.3! (Y)
Randika Vishman
1
Funciona en Keynote 6.6.1, pero debe copiarlo desde Safari.
luzny
Sí, tiene que ser copiado de Safari. Chrome no funcionará.
Jason Gao
3

Si no le gusta la idea de pegar su código en línea, considere instalar el paquete Pygments python y generar su sintaxis resaltada en la línea de comando:

pygmentize sms_me_last_line.sh

Copiar desde Terminal y pegar en Keynote funcionó para mí. Pero me llevó un tiempo encontrar el control de formato para eliminar el color del texto de fondo. (Haga clic en Formato en la barra de herramientas para mostrar las opciones de formato, haga clic en Texto, haga clic en Estilo, luego haga clic en el engranaje para mostrar opciones avanzadas de formato. En esa ventana emergente encontrará "Color de relleno de caracteres").

ithos67
fuente
1

Es un error en Keynote '13:

Pegar texto enriquecido de Xcode a Keynote funciona cuando pega en un cuadro de texto existente.

No lo hace cuando pega en un nuevo cuadro de texto.

mz2
fuente
¿Hay alguna solución para esto, excepto escribir el texto primero?
Rob
Lo más conveniente que he encontrado es crear un cuadro de texto, seleccionarlo y pegarlo.
mz2